From 45fda56fb8764087311a78e445119a64c38d1223 Mon Sep 17 00:00:00 2001 From: Kaxi <1042864399@qq.com> Date: Tue, 30 Jun 2026 00:06:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9A=97=E8=89=B2=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E6=98=9F=E7=A9=BA=E8=83=8C=E6=99=AF=E3=80=81=E4=B8=BB=E9=A2=98?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E9=A1=BA=E5=BA=8F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- components/layout/Footer.vue | 4 +- components/layout/StarField.client.vue | 151 +++++++++++++++++++++++++ components/layout/ThemeToggle.vue | 22 ++-- config/site.ts.example | 6 +- layouts/default.vue | 5 +- 5 files changed, 170 insertions(+), 18 deletions(-) create mode 100644 components/layout/StarField.client.vue diff --git a/components/layout/Footer.vue b/components/layout/Footer.vue index 1b7971a..4f63e8e 100644 --- a/components/layout/Footer.vue +++ b/components/layout/Footer.vue @@ -12,11 +12,11 @@ const psBeian = config.public.psBeian © {{ new Date().getFullYear() }} {{ siteConfig.siteName }} diff --git a/components/layout/StarField.client.vue b/components/layout/StarField.client.vue new file mode 100644 index 0000000..a7e4033 --- /dev/null +++ b/components/layout/StarField.client.vue @@ -0,0 +1,151 @@ + + + diff --git a/components/layout/ThemeToggle.vue b/components/layout/ThemeToggle.vue index 479c12e..9a7a717 100644 --- a/components/layout/ThemeToggle.vue +++ b/components/layout/ThemeToggle.vue @@ -2,29 +2,33 @@ import { Icon } from '@iconify/vue' const colorMode = useColorMode() - -const modes = ['light', 'dark', 'system'] as const -type Mode = typeof modes[number] +type Mode = 'system' | 'dark' | 'light' const iconMap: Record = { - light: 'mdi:weather-sunny', - dark: 'mdi:weather-night', system: 'mdi:monitor', + dark: 'mdi:weather-night', + light: 'mdi:weather-sunny', } const labelMap: Record = { - light: '浅色模式', - dark: '深色模式', system: '跟随系统', + dark: '深色模式', + light: '浅色模式', } +const cycleOrder = computed(() => { + const isDark = colorMode.value === 'dark' + return isDark ? ['system', 'light', 'dark'] : ['system', 'dark', 'light'] +}) + const currentMode = computed(() => colorMode.preference as Mode) const currentIcon = computed(() => iconMap[currentMode.value] || iconMap.system) const currentLabel = computed(() => labelMap[currentMode.value] || labelMap.system) function cycle() { - const idx = modes.indexOf(currentMode.value) - colorMode.preference = modes[(idx + 1) % modes.length] + const order = cycleOrder.value + const idx = order.indexOf(currentMode.value) + colorMode.preference = order[(idx + 1) % order.length] } diff --git a/config/site.ts.example b/config/site.ts.example index f4a80f0..97f2874 100644 --- a/config/site.ts.example +++ b/config/site.ts.example @@ -48,8 +48,4 @@ export const siteConfig = { repoId: '', category: 'Announcements', categoryId: '', - }, - - // ICP 备案号(留空则不显示) - icp: '', -} + },} diff --git a/layouts/default.vue b/layouts/default.vue index 10d14c9..965b9ce 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -24,9 +24,10 @@ useSeoMeta({