diff --git a/scripts/ralph/prd.json b/scripts/ralph/prd.json index a9518ce..9ceb577 100644 --- a/scripts/ralph/prd.json +++ b/scripts/ralph/prd.json @@ -60,8 +60,8 @@ "Header cu logo, Footer cu profil utilizator și logout", "npm run build passes" ], - "passes": false, - "notes": "" + "passes": true, + "notes": "Completed in iteration 2" }, { "id": "US-304", diff --git a/scripts/ralph/progress.txt b/scripts/ralph/progress.txt index 81e05f7..4b52be7 100644 --- a/scripts/ralph/progress.txt +++ b/scripts/ralph/progress.txt @@ -21,3 +21,9 @@ User Stories: 11 (US-301 to US-311) [2026-01-12 13:39:00] Working on story: US-308 [2026-01-12 13:39:00] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_2_US-308.log) [2026-01-12 13:39:23] SUCCESS: Story US-307 passed! +[2026-01-12 13:39:23] Changes committed +[2026-01-12 13:39:23] Progress: 1/11 stories completed +[2026-01-12 13:39:25] === Iteration 2/100 === +[2026-01-12 13:39:25] Working on story: US-308 +[2026-01-12 13:39:25] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_2_US-308.log) +[2026-01-12 13:41:03] SUCCESS: Story US-308 passed! diff --git a/src/shared/components/mobile/MobileDrawerMenu.vue b/src/shared/components/mobile/MobileDrawerMenu.vue index 72dff33..404ce72 100644 --- a/src/shared/components/mobile/MobileDrawerMenu.vue +++ b/src/shared/components/mobile/MobileDrawerMenu.vue @@ -11,25 +11,89 @@ - -
- -
+ +
+ +
+
PRINCIPALE
+ +
- -
+ +
+ + +
+
RAPOARTE
+ +
+ + +
+ + +
+
ANALIZE
+ +
+ + +
+ + +
+
ADMINISTRARE
+ +
+
@@ -75,10 +139,15 @@ import { useRoute, useRouter } from 'vue-router' * * Features: * - Slide-in animation from left - * - Header with logo - * - Main navigation links (Dashboard, Bonuri, Facturi, Balanță, Trezorerie, Setări) + * - Header with ROA2WEB logo + * - Navigation organized into 4 category sections: + * - PRINCIPALE: Dashboard, Bonuri + * - RAPOARTE: Facturi, Balanță, Casa și Banca + * - ANALIZE: Scadențe, Facturi Detaliate + * - ADMINISTRARE: Setări + * - Visual separators between sections * - Active state highlighting based on current route - * - Profile section with user name and logout button + * - Profile section with user name and logout button (footer) * - Close on tap outside or on link click * - Full dark mode support * - Teleported to body to avoid z-index issues @@ -117,15 +186,31 @@ const router = useRouter() const drawerRef = ref(null) /** - * Navigation items for the drawer menu - * Based on acceptance criteria: Dashboard, Bonuri, Facturi, Balanță, Trezorerie, Setări + * Navigation items organized by category + * Based on US-308 acceptance criteria */ -const navigationItems = [ - { to: '/reports/dashboard', icon: 'pi pi-home', label: 'Dashboard', exactMatch: true }, - { to: '/data-entry', icon: 'pi pi-receipt', label: 'Bonuri', exactMatch: false }, + +// PRINCIPALE: Dashboard, Bonuri +const principaleItems = [ + { to: '/dashboard', icon: 'pi pi-home', label: 'Dashboard', exactMatch: true }, + { to: '/data-entry', icon: 'pi pi-receipt', label: 'Bonuri', exactMatch: false } +] + +// RAPOARTE: Facturi, Balanță, Casa și Banca +const rapoarteItems = [ { to: '/reports/invoices', icon: 'pi pi-file', label: 'Facturi', exactMatch: true }, { to: '/reports/trial-balance', icon: 'pi pi-calculator', label: 'Balanță', exactMatch: true }, - { to: '/reports/bank-cash', icon: 'pi pi-money-bill', label: 'Trezorerie', exactMatch: true }, + { to: '/reports/bank-cash', icon: 'pi pi-money-bill', label: 'Casa și Banca', exactMatch: true } +] + +// ANALIZE: Scadențe, Facturi Detaliate +const analizeItems = [ + { to: '/reports/maturity-analysis', icon: 'pi pi-clock', label: 'Scadențe', exactMatch: true }, + { to: '/reports/detailed-invoices', icon: 'pi pi-list', label: 'Facturi Detaliate', exactMatch: true } +] + +// ADMINISTRARE: Setări +const administrareItems = [ { to: '/settings', icon: 'pi pi-cog', label: 'Setări', exactMatch: false } ] @@ -234,14 +319,32 @@ const handleLogout = async () => { } /* ================================================ - Navigation Section + Navigation Sections Container (scrollable) + ================================================ */ + +.drawer-sections { + flex: 1; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + padding: var(--space-sm) 0; +} + +/* ================================================ + Individual Section ================================================ */ .drawer-section { - flex: 1; - padding: var(--space-sm) 0; - overflow-y: auto; - -webkit-overflow-scrolling: touch; + padding: var(--space-xs) 0; +} + +/* Section header label (PRINCIPALE, RAPOARTE, etc.) */ +.section-header { + padding: var(--space-sm) var(--space-lg); + font-size: var(--text-xs); + font-weight: var(--font-semibold); + color: var(--text-color-secondary); + text-transform: uppercase; + letter-spacing: 0.05em; } .drawer-nav { @@ -463,6 +566,10 @@ const handleLogout = async () => { background: var(--surface-border); } +[data-theme="dark"] .section-header { + color: var(--text-color-secondary); +} + [data-theme="dark"] .drawer-profile { border-top-color: var(--surface-border); } @@ -544,6 +651,10 @@ const handleLogout = async () => { background: var(--surface-border); } + :root:not([data-theme]) .section-header { + color: var(--text-color-secondary); + } + :root:not([data-theme]) .drawer-profile { border-top-color: var(--surface-border); }