25 lines
765 B
TypeScript
25 lines
765 B
TypeScript
import { create } from "zustand";
|
|
import { persist, createJSONStorage } from 'zustand/middleware';
|
|
|
|
export interface SidenavState {
|
|
open: boolean;
|
|
pinned: boolean;
|
|
toggleSidenav: () => void;
|
|
togglePinned: () => void;
|
|
}
|
|
|
|
export const useSidenavStore = create<SidenavState>()(
|
|
persist(
|
|
(set) => ({
|
|
open: false,
|
|
pinned: false,
|
|
toggleSidenav: () => set((state) => ({ open: !state.open })),
|
|
togglePinned: () => set((state) => ({ pinned: !state.pinned })),
|
|
}),
|
|
{
|
|
name: 'sidenav-storage', // name of the item in the storage (must be unique)
|
|
storage: createJSONStorage(() => localStorage), // (optional) by default, 'localStorage' is used
|
|
}
|
|
)
|
|
)
|