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 @@
-
-
-
- -
-
-
- {{ item.label }}
-
-
-
-
+
+
+
+
+
+
+ -
+
+
+ {{ item.label }}
+
+
+
+
-
-
+
+
+
+
+
+
+
+ -
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ {{ item.label }}
+
+
+
+
+
@@ -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);
}