import type { App } from '../shared/types' // UI state (survives re-renders) export let selectedApp: string | null = localStorage.getItem('selectedApp') export let sidebarCollapsed: boolean = localStorage.getItem('sidebarCollapsed') === 'true' export let sidebarSection: 'apps' | 'tools' = (localStorage.getItem('sidebarSection') as 'apps' | 'tools') || 'apps' // Server state (from SSE) export let apps: App[] = [] // Tab state export let appTabs: Record = JSON.parse(localStorage.getItem('appTabs') || '{}') // State setters export function setSelectedApp(name: string | null) { selectedApp = name if (name) { localStorage.setItem('selectedApp', name) } else { localStorage.removeItem('selectedApp') } } export function setSidebarCollapsed(collapsed: boolean) { sidebarCollapsed = collapsed localStorage.setItem('sidebarCollapsed', String(collapsed)) } export function setSidebarSection(section: 'apps' | 'tools') { sidebarSection = section localStorage.setItem('sidebarSection', section) } export function setApps(newApps: App[]) { apps = newApps } export const getSelectedTab = (appName: string | null) => appName ? appTabs[appName] || 'overview' : 'overview' export function setSelectedTab(appName: string | null, tab: string) { if (!appName) return appTabs[appName] = tab localStorage.setItem('appTabs', JSON.stringify(appTabs)) }