diff --git a/src/components/SidebarNav.tsx b/src/components/SidebarNav.tsx index 024be4c6..db4cb6c1 100644 --- a/src/components/SidebarNav.tsx +++ b/src/components/SidebarNav.tsx @@ -55,8 +55,25 @@ export function SidebarNav({ }; function getSelectedValue() { - const item = items.find((item) => hydrateHref(item.href) === pathname); - return hydrateHref(item?.href || ""); + let foundHref = ""; + for (const item of items) { + const hydratedHref = hydrateHref(item.href); + if (hydratedHref === pathname) { + foundHref = hydratedHref; + break; + } + if (item.children) { + for (const child of item.children) { + const hydratedChildHref = hydrateHref(child.href); + if (hydratedChildHref === pathname) { + foundHref = hydratedChildHref; + break; + } + } + } + if (foundHref) break; + } + return foundHref; } function hydrateHref(val: string): string { @@ -151,14 +168,44 @@ export function SidebarNav({ - {items.map((item) => ( - - {item.title} - - ))} + {items.flatMap((item) => { + const topLevelItem = ( + + {item.icon ? ( +
+ {item.icon} + {item.title} +
+ ) : ( + item.title + )} +
+ ); + const childItems = + item.children?.map((child) => ( + +
+ + {child.icon ? ( + <> + {child.icon} + {child.title} + + ) : ( + {child.title} + )} +
+
+ )) || []; + return [topLevelItem, ...childItems]; + })}