| import { create } from 'zustand'; | |
| import { persist } from 'zustand/middleware'; | |
| export type ThemeMode = 'dark' | 'light'; | |
| interface LayoutStore { | |
| isLeftSidebarOpen: boolean; | |
| isRightPanelOpen: boolean; | |
| rightPanelWidth: number; | |
| themeMode: ThemeMode; | |
| setLeftSidebarOpen: (open: boolean) => void; | |
| setRightPanelOpen: (open: boolean) => void; | |
| setRightPanelWidth: (width: number) => void; | |
| toggleLeftSidebar: () => void; | |
| toggleRightPanel: () => void; | |
| toggleTheme: () => void; | |
| } | |
| export const useLayoutStore = create<LayoutStore>()( | |
| persist( | |
| (set) => ({ | |
| isLeftSidebarOpen: true, | |
| isRightPanelOpen: false, | |
| rightPanelWidth: 450, | |
| themeMode: 'dark' as ThemeMode, | |
| setLeftSidebarOpen: (open) => set({ isLeftSidebarOpen: open }), | |
| setRightPanelOpen: (open) => set({ isRightPanelOpen: open }), | |
| setRightPanelWidth: (width) => set({ rightPanelWidth: width }), | |
| toggleLeftSidebar: () => set((state) => ({ isLeftSidebarOpen: !state.isLeftSidebarOpen })), | |
| toggleRightPanel: () => set((state) => ({ isRightPanelOpen: !state.isRightPanelOpen })), | |
| toggleTheme: () => | |
| set((state) => ({ | |
| themeMode: state.themeMode === 'dark' ? 'light' : 'dark', | |
| })), | |
| }), | |
| { | |
| name: 'hf-agent-layout', | |
| partialize: (state) => ({ themeMode: state.themeMode }), | |
| } | |
| ) | |
| ); | |