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); }}
+ />
+ ))}
+
) : (
{investmentScenarios && investmentScenarios.length > 0 && (