import { create } from "zustand"; import { createJSONStorage, persist } from "zustand/middleware"; type SidebarSettings = { disabled: boolean; isHoverOpen: boolean }; type SidebarStore = { isOpen: boolean; isHover: boolean; settings: SidebarSettings; toggleOpen: () => void; setIsOpen: (isOpen: boolean) => void; setIsHover: (isHover: boolean) => void; getOpenState: () => boolean; }; export const useSidebar = create( persist( (set, get) => ({ isOpen: true, isHover: false, settings: { disabled: false, isHoverOpen: false }, toggleOpen: () => { set({ isOpen: !get().isOpen }); }, setIsOpen: (isOpen: boolean) => { set({ isOpen }); }, setIsHover: (isHover: boolean) => { set({ isHover }); }, getOpenState: () => { const state = get(); return state.isOpen || (state.settings.isHoverOpen && state.isHover); }, }), { name: "sidebar", storage: createJSONStorage(() => localStorage), }, ), );