Files
2026-07-13 12:08:39 +08:00

34 lines
778 B
TypeScript

import create from 'zustand';
import {
get as getFromStorage,
set as setToStorage,
} from '@/react/hooks/useLocalStorage';
const storageKey = 'toolbar_toggle';
const mobileWidth = 992;
function getInitialIsOpen() {
if (window.ddExtension) return false;
if (window.innerWidth < mobileWidth) return false;
return getFromStorage<boolean>(storageKey, true);
}
interface SidebarStore {
isOpen: boolean;
toggle: () => void;
setOpen: (value: boolean) => void;
}
export const sidebarStore = create<SidebarStore>()((set, get) => ({
isOpen: getInitialIsOpen(),
toggle: () => {
const newIsOpen = !get().isOpen;
setToStorage(storageKey, newIsOpen);
set({ isOpen: newIsOpen });
},
setOpen: (value: boolean) => {
set({ isOpen: value });
},
}));