"use client" import { create } from "zustand" import { persist } from "zustand/middleware" import { debouncedPersistJSONStorage } from "@/lib/stores/debounced-json-storage" import type { AgendaView } from "./agenda-url.ts" interface AgendaSettingsState { /** Agendas décochés dans la barre latérale. */ hiddenCalendarIds: string[] lastView: AgendaView toggleCalendarVisible: (id: string) => void setLastView: (view: AgendaView) => void } export const useAgendaSettingsStore = create()( persist( (set, get) => ({ hiddenCalendarIds: [], lastView: "week", toggleCalendarVisible: (id) => { const hidden = get().hiddenCalendarIds set({ hiddenCalendarIds: hidden.includes(id) ? hidden.filter((h) => h !== id) : [...hidden, id], }) }, setLastView: (lastView) => set({ lastView }), }), { name: "agenda-settings-store", storage: debouncedPersistJSONStorage, partialize: (s) => ({ hiddenCalendarIds: s.hiddenCalendarIds, lastView: s.lastView, }), }, ), ) interface AgendaUIState { sidebarCollapsed: boolean setSidebarCollapsed: (v: boolean) => void } export const useAgendaUIStore = create((set) => ({ sidebarCollapsed: false, setSidebarCollapsed: (sidebarCollapsed) => set({ sidebarCollapsed }), }))