diff --git a/apps/ui/src/components/views/settings-view/components/settings-navigation.tsx b/apps/ui/src/components/views/settings-view/components/settings-navigation.tsx index fd3b4f07..7a4001c9 100644 --- a/apps/ui/src/components/views/settings-view/components/settings-navigation.tsx +++ b/apps/ui/src/components/views/settings-view/components/settings-navigation.tsx @@ -1,9 +1,13 @@ +import { useState, useEffect } from 'react'; +import { ChevronDown, ChevronRight } from 'lucide-react'; import { cn } from '@/lib/utils'; import type { Project } from '@/lib/electron'; import type { NavigationItem } from '../config/navigation'; import { GLOBAL_NAV_ITEMS, PROJECT_NAV_ITEMS } from '../config/navigation'; import type { SettingsViewId } from '../hooks/use-settings-view'; +const PROVIDERS_DROPDOWN_KEY = 'settings-providers-dropdown-open'; + interface SettingsNavigationProps { navItems: NavigationItem[]; activeSection: SettingsViewId; @@ -66,29 +70,52 @@ function NavItemWithSubItems({ activeSection: SettingsViewId; onNavigate: (sectionId: SettingsViewId) => void; }) { + const [isOpen, setIsOpen] = useState(() => { + if (typeof window !== 'undefined') { + const stored = localStorage.getItem(PROVIDERS_DROPDOWN_KEY); + return stored === null ? true : stored === 'true'; + } + return true; + }); + + useEffect(() => { + localStorage.setItem(PROVIDERS_DROPDOWN_KEY, String(isOpen)); + }, [isOpen]); + const hasActiveSubItem = item.subItems?.some((subItem) => subItem.id === activeSection) ?? false; const isParentActive = item.id === activeSection; const Icon = item.icon; + const ChevronIcon = isOpen ? ChevronDown : ChevronRight; return (