diff --git a/frontend/src/components/DesktopLayout.vue b/frontend/src/components/DesktopLayout.vue index 153b097..071e965 100644 --- a/frontend/src/components/DesktopLayout.vue +++ b/frontend/src/components/DesktopLayout.vue @@ -62,8 +62,7 @@ const roleLabel = computed(() => { }) function cycleTheme() { - const next = themeStore.currentTheme === 'editorial' ? 'light' : 'editorial' - themeStore.setTheme(next) + themeStore.toggleMode() } @@ -108,11 +107,11 @@ function cycleTheme() {
-
- +
+ 模式 + +
+
+ +
@@ -395,7 +409,12 @@ async function handleImportPreview() { .setting-label { font-family: var(--font-body); font-size: 13px; color: var(--ink); } /* ── Theme Selector ── */ -.theme-options { display: flex; gap: 16px; } +.theme-options { display: flex; flex-direction: column; gap: 12px; } +.theme-mode-row { display: flex; align-items: center; gap: 12px; padding-bottom: 8px; border-bottom: 1px solid var(--warm-border); margin-bottom: 4px; } +.theme-mode-label { font-family: var(--font-heading); font-size: 13px; color: var(--warm-gray); } +.theme-mode-btn { font-family: var(--font-body); font-size: 14px; cursor: pointer; padding: 6px 16px; border: 1px solid var(--warm-border); border-radius: 6px; background: var(--c-primary-bg); color: var(--c-text); transition: all var(--transition); } +.theme-mode-btn:hover { border-color: var(--gold); } +.theme-sub-options { display: flex; gap: 12px; padding-left: 4px; } .theme-opt { display: flex; align-items: center; gap: 8px; cursor: pointer; padding: 8px 16px; border: 1px solid var(--warm-border); transition: all var(--transition); } .theme-opt:hover { border-color: var(--ink); } .theme-opt--active { border-color: var(--ink); background: var(--c-primary-bg); } diff --git a/frontend/src/views/desktop/WorkPlans.vue b/frontend/src/views/desktop/WorkPlans.vue index d3c929e..c9a72a9 100644 --- a/frontend/src/views/desktop/WorkPlans.vue +++ b/frontend/src/views/desktop/WorkPlans.vue @@ -31,7 +31,7 @@ const searchText = ref('') function onSearch() { loadPlans() } -const isLight = computed(() => themeStore.currentTheme === 'light') +const isLight = computed(() => themeStore.mode === 'light') const managerOptions = computed(() => { const seen = new Set()