Spaces:
Running
Running
File size: 1,355 Bytes
b1d24de e77f678 b1d24de e77f678 b1d24de e77f678 b1d24de e77f678 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
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 }),
}
)
);
|