33 lines
594 B
TypeScript
33 lines
594 B
TypeScript
/**
|
|
* Theme Store
|
|
* Manages theme mode preference with localStorage persistence
|
|
*/
|
|
|
|
import { create } from "zustand";
|
|
import { persist } from "zustand/middleware";
|
|
|
|
export type ThemeMode = "light" | "dark" | "auto";
|
|
|
|
interface ThemeState {
|
|
// State
|
|
themeMode: ThemeMode;
|
|
|
|
// Actions
|
|
setThemeMode: (mode: ThemeMode) => void;
|
|
}
|
|
|
|
export const useThemeStore = create<ThemeState>()(
|
|
persist(
|
|
(set) => ({
|
|
// Initial state
|
|
themeMode: "auto",
|
|
|
|
// Actions
|
|
setThemeMode: (mode) => set({ themeMode: mode }),
|
|
}),
|
|
{
|
|
name: "theme-storage",
|
|
}
|
|
)
|
|
);
|