diff --git a/ui/src/index.css b/ui/src/index.css index 2a9f48c5..1e0a0d23 100644 --- a/ui/src/index.css +++ b/ui/src/index.css @@ -319,3 +319,26 @@ display: block !important; min-width: 0 !important; } + +/* Thin scrollbar utility for horizontal tab overflow */ +.scrollbar-thin { + scrollbar-width: thin; + scrollbar-color: var(--border) transparent; +} + +.scrollbar-thin::-webkit-scrollbar { + height: 4px; +} + +.scrollbar-thin::-webkit-scrollbar-track { + background: transparent; +} + +.scrollbar-thin::-webkit-scrollbar-thumb { + background: var(--border); + border-radius: 2px; +} + +.scrollbar-thin::-webkit-scrollbar-thumb:hover { + background: var(--muted-foreground); +} diff --git a/ui/src/pages/settings/components/tab-navigation.tsx b/ui/src/pages/settings/components/tab-navigation.tsx index 00aecab9..536140c0 100644 --- a/ui/src/pages/settings/components/tab-navigation.tsx +++ b/ui/src/pages/settings/components/tab-navigation.tsx @@ -12,34 +12,25 @@ interface TabNavigationProps { onTabChange: (tab: SettingsTab) => void; } +const tabs = [ + { value: 'websearch' as const, label: 'Web', icon: Globe }, + { value: 'globalenv' as const, label: 'Env', icon: Settings2 }, + { value: 'thinking' as const, label: 'Think', icon: Brain }, + { value: 'proxy' as const, label: 'Proxy', icon: Server }, + { value: 'auth' as const, label: 'Auth', icon: KeyRound }, + { value: 'backups' as const, label: 'Backup', icon: Archive }, +] as const; + export function TabNavigation({ activeTab, onTabChange }: TabNavigationProps) { return ( onTabChange(v as SettingsTab)}> - - - - WebSearch - - - - Global Env - - - - Thinking - - - - Proxy - - - - Auth - - - - Backups - + + {tabs.map(({ value, label, icon: Icon }) => ( + + + {label} + + ))} );