42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
import { create } from "zustand";
|
|
import { persist } from "zustand/middleware";
|
|
|
|
interface PanelState {
|
|
// Panel sizes as percentages
|
|
toolsPanel: number;
|
|
previewPanel: number;
|
|
propertiesPanel: number;
|
|
mainContent: number;
|
|
timeline: number;
|
|
|
|
// Actions
|
|
setToolsPanel: (size: number) => void;
|
|
setPreviewPanel: (size: number) => void;
|
|
setPropertiesPanel: (size: number) => void;
|
|
setMainContent: (size: number) => void;
|
|
setTimeline: (size: number) => void;
|
|
}
|
|
|
|
export const usePanelStore = create<PanelState>()(
|
|
persist(
|
|
(set) => ({
|
|
// Default sizes - optimized for responsiveness
|
|
toolsPanel: 25,
|
|
previewPanel: 75,
|
|
propertiesPanel: 20,
|
|
mainContent: 70,
|
|
timeline: 30,
|
|
|
|
// Actions
|
|
setToolsPanel: (size) => set({ toolsPanel: size }),
|
|
setPreviewPanel: (size) => set({ previewPanel: size }),
|
|
setPropertiesPanel: (size) => set({ propertiesPanel: size }),
|
|
setMainContent: (size) => set({ mainContent: size }),
|
|
setTimeline: (size) => set({ timeline: size }),
|
|
}),
|
|
{
|
|
name: "panel-sizes",
|
|
}
|
|
)
|
|
);
|