From d90f3bb6beee426933888c94b3281305bc0f411c Mon Sep 17 00:00:00 2001 From: miloschwartz Date: Fri, 5 Dec 2025 16:34:44 -0500 Subject: [PATCH] remember sidebar expand --- src/components/SidebarNav.tsx | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/src/components/SidebarNav.tsx b/src/components/SidebarNav.tsx index edc6dcdb..17a2a5e8 100644 --- a/src/components/SidebarNav.tsx +++ b/src/components/SidebarNav.tsx @@ -71,20 +71,42 @@ function CollapsibleNavItem({ build, isUnlocked }: CollapsibleNavItemProps) { - const [isOpen, setIsOpen] = React.useState(isChildActive); + const storageKey = `pangolin-sidebar-expanded-${item.title}`; + + // Get initial state from localStorage or use isChildActive + const getInitialState = (): boolean => { + if (typeof window === "undefined") { + return isChildActive; + } + const saved = localStorage.getItem(storageKey); + if (saved !== null) { + return saved === "true"; + } + return isChildActive; + }; - // Update open state when child active state changes + const [isOpen, setIsOpen] = React.useState(getInitialState); + + // Update open state when child active state changes (but don't override user preference) React.useEffect(() => { if (isChildActive) { setIsOpen(true); } }, [isChildActive]); + // Save state to localStorage when it changes + const handleOpenChange = (open: boolean) => { + setIsOpen(open); + if (typeof window !== "undefined") { + localStorage.setItem(storageKey, String(open)); + } + }; + return (