15 lines
470 B
TypeScript
15 lines
470 B
TypeScript
import { create } from "zustand";
|
|
|
|
type Theme = "dark" | "light";
|
|
interface ThemeStore { theme: Theme; toggle: () => void; }
|
|
|
|
export const useTheme = create<ThemeStore>((set) => ({
|
|
theme: (localStorage.getItem("theme") as Theme) || "dark",
|
|
toggle: () => set((s) => {
|
|
const next = s.theme === "dark" ? "light" : "dark";
|
|
localStorage.setItem("theme", next);
|
|
document.documentElement.setAttribute("data-theme", next);
|
|
return { theme: next };
|
|
}),
|
|
}));
|