remember sidebar expand

This commit is contained in:
miloschwartz
2025-12-05 16:34:44 -05:00
parent 149f4c1332
commit d90f3bb6be

View File

@@ -71,20 +71,42 @@ function CollapsibleNavItem({
build, build,
isUnlocked isUnlocked
}: CollapsibleNavItemProps) { }: 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(() => { React.useEffect(() => {
if (isChildActive) { if (isChildActive) {
setIsOpen(true); setIsOpen(true);
} }
}, [isChildActive]); }, [isChildActive]);
// Save state to localStorage when it changes
const handleOpenChange = (open: boolean) => {
setIsOpen(open);
if (typeof window !== "undefined") {
localStorage.setItem(storageKey, String(open));
}
};
return ( return (
<Collapsible <Collapsible
key={item.title} key={item.title}
open={isOpen} open={isOpen}
onOpenChange={setIsOpen} onOpenChange={handleOpenChange}
className="group/collapsible" className="group/collapsible"
> >
<CollapsibleTrigger asChild> <CollapsibleTrigger asChild>