From 64a8aecf2566526357d6c6d0cd83421d8ab29147 Mon Sep 17 00:00:00 2001 From: Riyyi Date: Fri, 4 Apr 2025 00:29:23 +0200 Subject: [PATCH] Persistent color theme --- nuxt.config.ts | 1 - public/favicon.ico | Bin 4286 -> 12549 bytes src/app.vue | 3 + src/app/spa-loading-template.html | 124 +++++++++++++++++++---------- src/components.d.ts | 2 + src/components/ColorMode.vue | 56 +++++++++++++ src/components/ToggleColorMode.vue | 23 ------ src/layouts/default.vue | 2 +- src/stores/stateStore.ts | 38 ++++++--- 9 files changed, 173 insertions(+), 76 deletions(-) create mode 100644 src/components/ColorMode.vue delete mode 100644 src/components/ToggleColorMode.vue diff --git a/nuxt.config.ts b/nuxt.config.ts index 0b1ed40..4b921e5 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -47,7 +47,6 @@ export default defineNuxtConfig({ }, piniaPluginPersistedstate: { debug: process.env.NODE_ENV === "development", // log error to console - storage: "cookies", cookieOptions: { sameSite: "lax", // prevent CSRF secure: process.env.NODE_ENV !== "development" // only send over HTTPS diff --git a/public/favicon.ico b/public/favicon.ico index 18993ad91cfd43e03b074dd0b5cc3f37ab38e49c..b7d7937fb2d7b09be3d3a399d529a60493c65bde 100644 GIT binary patch literal 12549 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 { return titleChunk ? `${titleChunk} - website-vue` : 'website-vue'; diff --git a/src/app/spa-loading-template.html b/src/app/spa-loading-template.html index a269337..6b36d48 100644 --- a/src/app/spa-loading-template.html +++ b/src/app/spa-loading-template.html @@ -1,41 +1,85 @@ -
- + + + + + + +
+ + + diff --git a/src/components.d.ts b/src/components.d.ts index 3b2c90f..8f9cf39 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -10,6 +10,7 @@ declare module 'vue' { export interface GlobalComponents { IBi0Circle: typeof import('~icons/bi/0-circle')['default'] IBiActivity: typeof import('~icons/bi/activity')['default'] + IFaAdjust: typeof import('~icons/fa/adjust')['default'] IFaAngellist: typeof import('~icons/fa/angellist')['default'] IFaCheck: typeof import('~icons/fa/check')['default'] IFaClone: typeof import('~icons/fa/clone')['default'] @@ -22,6 +23,7 @@ declare module 'vue' { IFaLink: typeof import('~icons/fa/link')['default'] IFaLinkedinSquare: typeof import('~icons/fa/linkedin-square')['default'] IFaMoonO: typeof import('~icons/fa/moon-o')['default'] + IFaSolidMoon: typeof import('~icons/fa-solid/moon')['default'] IFaSolidSun: typeof import('~icons/fa-solid/sun')['default'] IMdiAccountBox: typeof import('~icons/mdi/account-box')['default'] RouterLink: typeof import('vue-router')['RouterLink'] diff --git a/src/components/ColorMode.vue b/src/components/ColorMode.vue new file mode 100644 index 0000000..66c2fd1 --- /dev/null +++ b/src/components/ColorMode.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/src/components/ToggleColorMode.vue b/src/components/ToggleColorMode.vue deleted file mode 100644 index 1626f5e..0000000 --- a/src/components/ToggleColorMode.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - - - diff --git a/src/layouts/default.vue b/src/layouts/default.vue index 261de41..ae98472 100644 --- a/src/layouts/default.vue +++ b/src/layouts/default.vue @@ -10,7 +10,7 @@ - +