Remove unused fonts
Remove unused packages Remove server logs page Remove unused plugins
This commit is contained in:
@@ -1,73 +0,0 @@
|
|||||||
@layer base {
|
|
||||||
@font-face {
|
|
||||||
font-family: "Morabba";
|
|
||||||
src: url("/fonts/Morabba/Morabba-UltraLight.woff2");
|
|
||||||
font-weight: 200;
|
|
||||||
font-style: normal;
|
|
||||||
font-display: swap;
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: "Morabba";
|
|
||||||
src: url("/fonts/Morabba/Morabba-Light.woff2");
|
|
||||||
font-weight: 300;
|
|
||||||
font-style: normal;
|
|
||||||
font-display: swap;
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: "Morabba";
|
|
||||||
src: url("/fonts/Morabba/Morabba-Regular.woff2");
|
|
||||||
font-weight: 400;
|
|
||||||
font-style: normal;
|
|
||||||
font-display: swap;
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: "Morabba";
|
|
||||||
src: url("/fonts/Morabba/Morabba-Medium.woff2");
|
|
||||||
font-weight: 500;
|
|
||||||
font-style: normal;
|
|
||||||
font-display: swap;
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: "Morabba";
|
|
||||||
src: url("/fonts/Morabba/Morabba-SemiBold.woff2");
|
|
||||||
font-weight: 600;
|
|
||||||
font-style: normal;
|
|
||||||
font-display: swap;
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: "Morabba";
|
|
||||||
src: url("/fonts/Morabba/Morabba-Bold.woff2");
|
|
||||||
font-weight: 700;
|
|
||||||
font-style: normal;
|
|
||||||
font-display: swap;
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: "Morabba";
|
|
||||||
src: url("/fonts/Morabba/Morabba-ExtraBold.woff2");
|
|
||||||
font-weight: 800;
|
|
||||||
font-style: normal;
|
|
||||||
font-display: swap;
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: "Morabba";
|
|
||||||
src: url("/fonts/Morabba/Morabba-Black.woff2");
|
|
||||||
font-weight: 900;
|
|
||||||
font-style: normal;
|
|
||||||
font-display: swap;
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: "Morabba";
|
|
||||||
src: url("/fonts/Morabba/Morabba-Heavy.woff2");
|
|
||||||
font-weight: 1000;
|
|
||||||
font-style: normal;
|
|
||||||
font-display: swap;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
@layer base {
|
|
||||||
@font-face {
|
|
||||||
font-family: "YekanBakh";
|
|
||||||
src: url("/fonts/YekanBakh/YekanBakh-Thin.woff");
|
|
||||||
font-weight: 100;
|
|
||||||
font-style: normal;
|
|
||||||
font-display: swap;
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: "YekanBakh";
|
|
||||||
src: url("/fonts/YekanBakh/YekanBakh-Light.woff");
|
|
||||||
font-weight: 300;
|
|
||||||
font-style: normal;
|
|
||||||
font-display: swap;
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: "YekanBakh";
|
|
||||||
src: url("/fonts/YekanBakh/YekanBakh-Regular.woff");
|
|
||||||
font-weight: 400;
|
|
||||||
font-style: normal;
|
|
||||||
font-display: swap;
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: "YekanBakh";
|
|
||||||
src: url("/fonts/YekanBakh/YekanBakh-SemiBold.woff");
|
|
||||||
font-weight: 600;
|
|
||||||
font-style: normal;
|
|
||||||
font-display: swap;
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: "YekanBakh";
|
|
||||||
src: url("/fonts/YekanBakh/YekanBakh-Bold.woff");
|
|
||||||
font-weight: 700;
|
|
||||||
font-style: normal;
|
|
||||||
font-display: swap;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -6,8 +6,6 @@
|
|||||||
@import "./button.comp.css";
|
@import "./button.comp.css";
|
||||||
@import "./input.comp.css";
|
@import "./input.comp.css";
|
||||||
@import "./fonts/iran-yekan-x.css";
|
@import "./fonts/iran-yekan-x.css";
|
||||||
@import "./fonts/morabba.css";
|
|
||||||
@import "./fonts/yekan-bakh.css";
|
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
/* CONTAINER */
|
/* CONTAINER */
|
||||||
@@ -117,8 +115,6 @@
|
|||||||
--font-inter: "Inter", sans-serif;
|
--font-inter: "Inter", sans-serif;
|
||||||
--font-dmsans: "DM Sans", sans-serif;
|
--font-dmsans: "DM Sans", sans-serif;
|
||||||
--font-iran-yekan-x: "IRANYekanXVF", "sans-serif";
|
--font-iran-yekan-x: "IRANYekanXVF", "sans-serif";
|
||||||
--font-yekan-bakh: "YekanBakh", "sans-serif";
|
|
||||||
--font-morabba: "Morabba", "sans-serif";
|
|
||||||
|
|
||||||
/* BREAKPOINTS */
|
/* BREAKPOINTS */
|
||||||
--breakpoint-2xs: 400px;
|
--breakpoint-2xs: 400px;
|
||||||
|
|||||||
+11
-11
@@ -61,17 +61,17 @@ export default defineNuxtConfig({
|
|||||||
},
|
},
|
||||||
|
|
||||||
modules: [
|
modules: [
|
||||||
[
|
// [
|
||||||
"@nuxtjs/google-fonts",
|
// "@nuxtjs/google-fonts",
|
||||||
{
|
// {
|
||||||
families: {
|
// families: {
|
||||||
"DM Sans": "100..900",
|
// "DM Sans": "100..900",
|
||||||
Inter: "100..900",
|
// Inter: "100..900",
|
||||||
download: true,
|
// download: true,
|
||||||
inject: false,
|
// inject: false,
|
||||||
},
|
// },
|
||||||
},
|
// },
|
||||||
],
|
// ],
|
||||||
"@nuxt/icon",
|
"@nuxt/icon",
|
||||||
"reka-ui/nuxt",
|
"reka-ui/nuxt",
|
||||||
"@vueuse/nuxt",
|
"@vueuse/nuxt",
|
||||||
|
|||||||
Generated
-26
@@ -25,7 +25,6 @@
|
|||||||
"date-fns-jalali": "^4.1.0-0",
|
"date-fns-jalali": "^4.1.0-0",
|
||||||
"fast-average-color": "^9.4.0",
|
"fast-average-color": "^9.4.0",
|
||||||
"gsap": "^3.12.7",
|
"gsap": "^3.12.7",
|
||||||
"highlight.js": "^11.11.1",
|
|
||||||
"jalali-ts": "^8.0.0",
|
"jalali-ts": "^8.0.0",
|
||||||
"motion-v": "^1.1.1",
|
"motion-v": "^1.1.1",
|
||||||
"nuxt": "^3.15.4",
|
"nuxt": "^3.15.4",
|
||||||
@@ -36,7 +35,6 @@
|
|||||||
"vue": "latest",
|
"vue": "latest",
|
||||||
"vue-image-zoomer": "^2.4.4",
|
"vue-image-zoomer": "^2.4.4",
|
||||||
"vue-router": "latest",
|
"vue-router": "latest",
|
||||||
"vue-scrollto": "^2.20.0",
|
|
||||||
"vue-skeletor": "^1.0.6",
|
"vue-skeletor": "^1.0.6",
|
||||||
"vue3-marquee": "^4.2.2",
|
"vue3-marquee": "^4.2.2",
|
||||||
"vue3-persian-datetime-picker": "^1.2.2",
|
"vue3-persian-datetime-picker": "^1.2.2",
|
||||||
@@ -6555,12 +6553,6 @@
|
|||||||
],
|
],
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/bezier-easing": {
|
|
||||||
"version": "2.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/bezier-easing/-/bezier-easing-2.1.0.tgz",
|
|
||||||
"integrity": "sha512-gbIqZ/eslnUFC1tjEvtz0sgx+xTK20wDnYMIA27VA04R7w6xxXQPZDbibjA9DTWZRA2CXtwHykkVzlCaAJAZig==",
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/bindings": {
|
"node_modules/bindings": {
|
||||||
"version": "1.5.0",
|
"version": "1.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
|
||||||
@@ -9240,15 +9232,6 @@
|
|||||||
"integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==",
|
"integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/highlight.js": {
|
|
||||||
"version": "11.11.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz",
|
|
||||||
"integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==",
|
|
||||||
"license": "BSD-3-Clause",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/hookable": {
|
"node_modules/hookable": {
|
||||||
"version": "5.5.3",
|
"version": "5.5.3",
|
||||||
"resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz",
|
"resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz",
|
||||||
@@ -16810,15 +16793,6 @@
|
|||||||
"vue": "^3.2.0"
|
"vue": "^3.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/vue-scrollto": {
|
|
||||||
"version": "2.20.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/vue-scrollto/-/vue-scrollto-2.20.0.tgz",
|
|
||||||
"integrity": "sha512-7i+AGKJTThZnMEkhIPgrZjyAX+fXV7/rGdg+CV283uZZwCxwiMXaBLTmIc5RTA4uwGnT+E6eJle3mXQfM2OD3A==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"bezier-easing": "2.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/vue-skeletor": {
|
"node_modules/vue-skeletor": {
|
||||||
"version": "1.0.6",
|
"version": "1.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/vue-skeletor/-/vue-skeletor-1.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/vue-skeletor/-/vue-skeletor-1.0.6.tgz",
|
||||||
|
|||||||
@@ -33,7 +33,6 @@
|
|||||||
"date-fns-jalali": "^4.1.0-0",
|
"date-fns-jalali": "^4.1.0-0",
|
||||||
"fast-average-color": "^9.4.0",
|
"fast-average-color": "^9.4.0",
|
||||||
"gsap": "^3.12.7",
|
"gsap": "^3.12.7",
|
||||||
"highlight.js": "^11.11.1",
|
|
||||||
"jalali-ts": "^8.0.0",
|
"jalali-ts": "^8.0.0",
|
||||||
"motion-v": "^1.1.1",
|
"motion-v": "^1.1.1",
|
||||||
"nuxt": "^3.15.4",
|
"nuxt": "^3.15.4",
|
||||||
@@ -44,7 +43,6 @@
|
|||||||
"vue": "latest",
|
"vue": "latest",
|
||||||
"vue-image-zoomer": "^2.4.4",
|
"vue-image-zoomer": "^2.4.4",
|
||||||
"vue-router": "latest",
|
"vue-router": "latest",
|
||||||
"vue-scrollto": "^2.20.0",
|
|
||||||
"vue-skeletor": "^1.0.6",
|
"vue-skeletor": "^1.0.6",
|
||||||
"vue3-marquee": "^4.2.2",
|
"vue3-marquee": "^4.2.2",
|
||||||
"vue3-persian-datetime-picker": "^1.2.2",
|
"vue3-persian-datetime-picker": "^1.2.2",
|
||||||
|
|||||||
@@ -1,173 +0,0 @@
|
|||||||
<script lang="ts" setup>
|
|
||||||
|
|
||||||
// import
|
|
||||||
|
|
||||||
import hljs from "highlight.js";
|
|
||||||
import json from "highlight.js/lib/languages/json";
|
|
||||||
import xml from "highlight.js/lib/languages/xml";
|
|
||||||
import "highlight.js/styles/atom-one-dark.css";
|
|
||||||
import LogDate from "~/components/server-logs/LogDate.vue";
|
|
||||||
import { useQuery } from "@tanstack/vue-query";
|
|
||||||
|
|
||||||
// meta
|
|
||||||
|
|
||||||
definePageMeta({
|
|
||||||
middleware: "check-is-debug",
|
|
||||||
layout: "none"
|
|
||||||
});
|
|
||||||
|
|
||||||
// state
|
|
||||||
|
|
||||||
const { $axios: axios } = useNuxtApp();
|
|
||||||
|
|
||||||
const { data: serverLogs, isFetching, suspense } = useQuery({
|
|
||||||
queryKey: ["server-logs"],
|
|
||||||
queryFn: async () => {
|
|
||||||
const response = await axios.get<AxiosLogType[]>("http://localhost:3000/api/server-logger");
|
|
||||||
return response.data.reverse();
|
|
||||||
},
|
|
||||||
refetchInterval: 5000,
|
|
||||||
staleTime: 0
|
|
||||||
});
|
|
||||||
|
|
||||||
await suspense();
|
|
||||||
|
|
||||||
// computed
|
|
||||||
|
|
||||||
const logIcon = (status: number) => {
|
|
||||||
if (status >= 200 && status < 300) return "bi:check-circle-fill";
|
|
||||||
return "bi:x-circle-fill";
|
|
||||||
};
|
|
||||||
|
|
||||||
// lifecycle
|
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
hljs.registerLanguage("json", json);
|
|
||||||
hljs.registerLanguage("xml", xml);
|
|
||||||
|
|
||||||
hljs.highlightAll();
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<div class="bg-neutral-900 w-full min-h-svh py-32">
|
|
||||||
<div class="fixed top-10 right-1/2 translate-x-1/2 flex-center" v-if="isFetching">
|
|
||||||
<Icon
|
|
||||||
name="svg-spinners:180-ring-with-bg"
|
|
||||||
class="size-12 mb-1 **:fill-neutral-500"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="w-full container flex flex-col gap-8">
|
|
||||||
<div
|
|
||||||
v-for="(log,index) in serverLogs"
|
|
||||||
:key="index"
|
|
||||||
class="border-2 p-5 rounded-xl log-item-animation"
|
|
||||||
:class="{
|
|
||||||
'bg-success-950/30 border-success-800' : log.status >= 200 && log.status < 300,
|
|
||||||
'bg-danger-950/30 border-danger-800' : log.status >= 400 && log.status < 600,
|
|
||||||
}"
|
|
||||||
>
|
|
||||||
<div class="flex items-center gap-4 mt-4">
|
|
||||||
<Icon
|
|
||||||
:name="logIcon(log.status)"
|
|
||||||
class="size-8 mb-1"
|
|
||||||
:class="{
|
|
||||||
'**:fill-success-500' : log.status >= 200 && log.status < 300,
|
|
||||||
'**:fill-danger-500' : log.status >= 400 && log.status < 600,
|
|
||||||
}"
|
|
||||||
/>
|
|
||||||
<h3 class="text-white font-medium text-3xl">
|
|
||||||
{{ log.url }}
|
|
||||||
</h3>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-center gap-2 py-8">
|
|
||||||
<div
|
|
||||||
class="px-3 pb-1 pt-1.5 rounded-lg uppercase font-bold text-white"
|
|
||||||
:class="{
|
|
||||||
'bg-success-500' : log.status >= 200 && log.status < 300,
|
|
||||||
'bg-danger-500' : log.status >= 400 && log.status < 600,
|
|
||||||
}"
|
|
||||||
>
|
|
||||||
{{ log.method }}
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="px-3 pb-1 pt-1.5 rounded-lg font-bold text-white"
|
|
||||||
:class="{
|
|
||||||
'bg-success-500' : log.status >= 200 && log.status < 300,
|
|
||||||
'bg-danger-500' : log.status >= 400 && log.status < 600,
|
|
||||||
}"
|
|
||||||
>
|
|
||||||
{{ log.status }}
|
|
||||||
</div>
|
|
||||||
<LogDate :date="log.date" />
|
|
||||||
</div>
|
|
||||||
<details class="text-white">
|
|
||||||
<summary class="cursor-pointer select-none">Details :</summary>
|
|
||||||
<div class="flex flex-col gap-2 mt-2 ml-4">
|
|
||||||
<details
|
|
||||||
v-if="log.response && typeof log.response === 'string' && (log.response.startsWith('<!DOCTYPE html>') || log.response.startsWith('<html>'))"
|
|
||||||
class="text-white"
|
|
||||||
>
|
|
||||||
<summary class="cursor-pointer select-none">Preview :</summary>
|
|
||||||
<iframe class="w-full h-[500px] bg-white" :srcdoc="log.response"></iframe>
|
|
||||||
</details>
|
|
||||||
<details v-if="log.response" class="text-white">
|
|
||||||
<summary class="cursor-pointer select-none">Response :</summary>
|
|
||||||
<pre style="tab-size: 2">
|
|
||||||
<code class="whitespace-pre-wrap">
|
|
||||||
{{ String(log.response) }}
|
|
||||||
</code>
|
|
||||||
</pre>
|
|
||||||
</details>
|
|
||||||
<details class="text-white">
|
|
||||||
<summary class="cursor-pointer select-none">Req Headers :</summary>
|
|
||||||
<pre style="tab-size: 2">
|
|
||||||
<code class="whitespace-pre-line">
|
|
||||||
{{ log.requestHeaders }}
|
|
||||||
</code>
|
|
||||||
</pre>
|
|
||||||
</details>
|
|
||||||
<details class="text-white">
|
|
||||||
<summary class="cursor-pointer select-none">Res Headers :</summary>
|
|
||||||
<pre style="tab-size: 2">
|
|
||||||
<code class="whitespace-pre-line">
|
|
||||||
{{ log.responseHeaders }}
|
|
||||||
</code>
|
|
||||||
</pre>
|
|
||||||
</details>
|
|
||||||
<details v-if="log.payload" class="text-white">
|
|
||||||
<summary class="cursor-pointer select-none">Payload :</summary>
|
|
||||||
<pre style="tab-size: 2">
|
|
||||||
<code class="whitespace-pre-line">
|
|
||||||
{{ log.payload }}
|
|
||||||
</code>
|
|
||||||
</pre>
|
|
||||||
</details>
|
|
||||||
</div>
|
|
||||||
</details>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
|
|
||||||
.log-item-animation {
|
|
||||||
animation-name: log-fade-in;
|
|
||||||
animation-duration: 0.5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes log-fade-in {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
scale: 0.8;
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
scale: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
import VueScrollTo from "vue-scrollto";
|
|
||||||
|
|
||||||
export default defineNuxtPlugin(() => {
|
|
||||||
return {
|
|
||||||
provide: {
|
|
||||||
vScrollTo: VueScrollTo,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
});
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user