Dwinzo_dev/app/src/store/builder/uselayoutStore.ts

37 lines
1007 B
TypeScript

import { create } from 'zustand';
type Layout = null | 'layout1' | 'layout2';
type LayoutState = {
currentLayout: Layout;
setLayout: (layout: Layout) => void;
resetLayout: () => void;
};
const LAYOUT_STORAGE_KEY = 'currentLayout';
const useLayoutStore = create<LayoutState>((set) => ({
currentLayout: (() => {
if (typeof window !== 'undefined') {
const storedLayout = localStorage.getItem(LAYOUT_STORAGE_KEY);
return storedLayout ? (JSON.parse(storedLayout) as Layout) : null;
}
return null;
})(),
setLayout: (layout) => {
if (typeof window !== 'undefined') {
localStorage.setItem(LAYOUT_STORAGE_KEY, JSON.stringify(layout));
}
set({ currentLayout: layout });
},
resetLayout: () => {
if (typeof window !== 'undefined') {
localStorage.removeItem(LAYOUT_STORAGE_KEY);
}
set({ currentLayout: null });
},
}));
export default useLayoutStore;