/** * Theme store — dark/light mode with persistence. * Syncs to DOM and to backend preferences when user is logged in. */ import { create } from "zustand"; import { persist } from "zustand/middleware"; type Theme = "dark" | "light"; interface ThemeState { theme: Theme; setTheme: (t: Theme) => void; toggle: () => void; } export const useThemeStore = create()( persist( (set, get) => ({ theme: "dark", setTheme: (t) => { set({ theme: t }); if (typeof document !== "undefined") { document.documentElement.classList.toggle("dark", t === "dark"); document.documentElement.classList.toggle("light", t === "light"); } }, toggle: () => { const next: Theme = get().theme === "dark" ? "light" : "dark"; get().setTheme(next); }, }), { name: "bb_theme" } ) );