Bankbot / frontend /src /lib /stores /themeStore.ts
mohsin-devs's picture
feat: Document Analyzer, Persistent AI Memory, Multi-language (EN/HI/MR), Dark/Light Theme
ee111cd
Raw
History Blame Contribute Delete
885 Bytes
/**
* 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<ThemeState>()(
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" }
)
);