diff --git a/backend/package.json b/backend/package.json index 9244111..d194baa 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "hoa-ledgeriq-backend", - "version": "2026.3.11", + "version": "2026.03.16", "description": "HOA LedgerIQ - Backend API", "private": true, "scripts": { diff --git a/frontend/package.json b/frontend/package.json index 0e1717e..9e26f27 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "hoa-ledgeriq-frontend", - "version": "2026.3.11", + "version": "2026.03.16", "private": true, "type": "module", "scripts": { diff --git a/frontend/src/components/layout/Sidebar.tsx b/frontend/src/components/layout/Sidebar.tsx index 6903d8d..fd79e3e 100644 --- a/frontend/src/components/layout/Sidebar.tsx +++ b/frontend/src/components/layout/Sidebar.tsx @@ -54,24 +54,34 @@ const navSections = [ { label: 'Payments', icon: IconCash, path: '/payments' }, ], }, - { - label: 'Planning', - items: [ - { label: 'Projects', icon: IconShieldCheck, path: '/projects' }, - { label: 'Capital Planning', icon: IconBuildingBank, path: '/capital-projects' }, - { label: 'Investment Planning', icon: IconSparkles, path: '/investment-planning', tourId: 'nav-investment-planning' }, - { label: 'Vendors', icon: IconUsers, path: '/vendors' }, - ], - }, { label: 'Board Planning', items: [ { label: 'Budget Planning', icon: IconReportAnalytics, path: '/board-planning/budgets' }, - { label: 'Assessment Scenarios', icon: IconCalculator, path: '/board-planning/assessments' }, - { label: 'Investment Scenarios', icon: IconScale, path: '/board-planning/investments' }, + { + label: 'Projects', icon: IconShieldCheck, path: '/projects', + children: [ + { label: 'Capital Planning', path: '/capital-projects' }, + ], + }, + { + label: 'Assessment Scenarios', icon: IconCalculator, path: '/board-planning/assessments', + }, + { + label: 'Investment Planning', icon: IconSparkles, path: '/investment-planning', tourId: 'nav-investment-planning', + children: [ + { label: 'Investment Scenarios', path: '/board-planning/investments' }, + ], + }, { label: 'Compare Scenarios', icon: IconGitCompare, path: '/board-planning/compare' }, ], }, + { + label: 'Board Reference', + items: [ + { label: 'Vendors', icon: IconUsers, path: '/vendors' }, + ], + }, { label: 'Reports', items: [ @@ -153,7 +163,8 @@ export function Sidebar({ onNavigate }: SidebarProps) { )} {section.items.map((item: any) => - item.children ? ( + item.children && !item.path ? ( + // Collapsible group without a parent route (e.g. Reports) ))} + ) : item.children && item.path ? ( + // Parent with its own route + nested children (e.g. Projects > Capital Planning) + } + defaultOpened={ + location.pathname === item.path || + item.children.some((c: any) => location.pathname.startsWith(c.path)) + } + data-tour={item.tourId || undefined} + active={location.pathname === item.path} + onClick={() => go(item.path!)} + > + {item.children.map((child: any) => ( + { e.stopPropagation(); go(child.path); }} + /> + ))} + ) : (