diff --git a/scripts/ralph/prd.json b/scripts/ralph/prd.json index 95fb882..48c6b54 100644 --- a/scripts/ralph/prd.json +++ b/scripts/ralph/prd.json @@ -100,8 +100,8 @@ "npm run typecheck passes", "Verify in browser: Mobile menu theme selector cycles through 3 states on tap" ], - "passes": false, - "notes": "Modifică componenta din src/shared/components/mobile/MobileDrawerMenu.vue" + "passes": true, + "notes": "Completed in iteration 5" }, { "id": "US-605", diff --git a/scripts/ralph/progress.txt b/scripts/ralph/progress.txt index cfcddd6..296e7e7 100644 --- a/scripts/ralph/progress.txt +++ b/scripts/ralph/progress.txt @@ -261,3 +261,14 @@ PRD: tasks/prd-ui-fixes-phase6.md [2026-01-13 16:08:49] Working on story: US-603 [2026-01-13 16:08:49] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_3_US-603.log) [2026-01-13 16:11:33] SUCCESS: Story US-603 passed! +[2026-01-13 16:11:33] Changes committed +[2026-01-13 16:11:33] Progress: 3/10 stories completed +[2026-01-13 16:11:35] === Iteration 4/30 === +[2026-01-13 16:11:35] Working on story: US-604 +[2026-01-13 16:11:35] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_4_US-604.log) +[2026-01-13 16:17:04] Story US-604 not yet complete, continuing... +[2026-01-13 16:17:04] Progress: 3/10 stories completed +[2026-01-13 16:17:06] === Iteration 5/30 === +[2026-01-13 16:17:06] Working on story: US-604 +[2026-01-13 16:17:06] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_5_US-604.log) +[2026-01-13 16:18:21] SUCCESS: Story US-604 passed! diff --git a/src/shared/components/mobile/MobileDrawerMenu.vue b/src/shared/components/mobile/MobileDrawerMenu.vue index b0f8284..7a05a0f 100644 --- a/src/shared/components/mobile/MobileDrawerMenu.vue +++ b/src/shared/components/mobile/MobileDrawerMenu.vue @@ -195,28 +195,17 @@ - -
-
- - Temă -
-
- -
-
+ +
@@ -519,11 +508,14 @@ const applyTheme = (theme) => { } /** - * Select a specific theme + * Cycle through themes: auto → light → dark → auto */ -const selectTheme = (theme) => { - currentTheme.value = theme - applyTheme(theme) +const cycleTheme = () => { + const themes = ['auto', 'light', 'dark'] + const currentIndex = themes.indexOf(currentTheme.value) + const nextTheme = themes[(currentIndex + 1) % themes.length] + currentTheme.value = nextTheme + applyTheme(nextTheme) } // Initialize theme from localStorage on mount @@ -954,75 +946,22 @@ onMounted(() => { } /* ================================================ - Theme Selector + Theme Toggle (compact cyclic button) - US-604 ================================================ */ -.theme-selector { - padding: var(--space-sm) var(--space-lg); +.theme-toggle-link { + position: relative; } -.theme-selector-label { - display: flex; - align-items: center; - gap: var(--space-sm); - font-size: var(--text-sm); - font-weight: var(--font-medium); - color: var(--text-color-secondary); - margin-bottom: var(--space-sm); -} - -.theme-selector-label i { - font-size: var(--text-base); -} - -.theme-options { - display: flex; - gap: var(--space-xs); - background: var(--surface-ground); - padding: var(--space-xs); - border-radius: var(--radius-md); -} - -.theme-option { - flex: 1; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - gap: var(--space-xs); - padding: var(--space-sm); - min-height: 48px; - background: transparent; - border: none; - border-radius: var(--radius-sm); - cursor: pointer; - transition: all var(--transition-fast); - color: var(--text-color-secondary); -} - -.theme-option:hover { - background: var(--surface-hover); - color: var(--text-color); -} - -.theme-option:active { - transform: scale(0.98); -} - -.theme-option.active { - background: var(--surface-card); +.theme-toggle-link .drawer-icon { color: var(--color-primary); - box-shadow: var(--shadow-sm); } -.theme-option i { - font-size: var(--text-lg); -} - -.theme-option-label { +.theme-cycle-hint { font-size: var(--text-xs); - font-weight: var(--font-medium); - white-space: nowrap; + color: var(--text-color-secondary); + margin-left: auto; + opacity: 0.6; } /* ================================================ @@ -1235,28 +1174,13 @@ onMounted(() => { background: var(--red-900); } -/* Dark mode: Theme Selector */ -[data-theme="dark"] .theme-selector-label { - color: var(--text-color-secondary); -} - -[data-theme="dark"] .theme-options { - background: var(--surface-ground); -} - -[data-theme="dark"] .theme-option { - color: var(--text-color-secondary); -} - -[data-theme="dark"] .theme-option:hover { - background: var(--surface-hover); - color: var(--text-color); -} - -[data-theme="dark"] .theme-option.active { - background: var(--surface-card); +/* Dark mode: Theme Toggle */ +[data-theme="dark"] .theme-toggle-link .drawer-icon { color: var(--blue-400); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); +} + +[data-theme="dark"] .theme-cycle-hint { + color: var(--text-color-secondary); } /* Auto dark mode (when no manual theme is set) */ @@ -1430,28 +1354,13 @@ onMounted(() => { background: var(--red-900); } - /* Auto dark mode: Theme Selector */ - :root:not([data-theme]) .theme-selector-label { - color: var(--text-color-secondary); - } - - :root:not([data-theme]) .theme-options { - background: var(--surface-ground); - } - - :root:not([data-theme]) .theme-option { - color: var(--text-color-secondary); - } - - :root:not([data-theme]) .theme-option:hover { - background: var(--surface-hover); - color: var(--text-color); - } - - :root:not([data-theme]) .theme-option.active { - background: var(--surface-card); + /* Auto dark mode: Theme Toggle */ + :root:not([data-theme]) .theme-toggle-link .drawer-icon { color: var(--blue-400); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); + } + + :root:not([data-theme]) .theme-cycle-hint { + color: var(--text-color-secondary); } }