"use client"; import { create } from "zustand"; import { persist } from "zustand/middleware"; import { THEME_CONFIG } from "@/shared/constants/config"; const useThemeStore = create( persist( (set, get) => ({ theme: THEME_CONFIG.defaultTheme, setTheme: (theme) => { set({ theme }); applyTheme(theme); }, toggleTheme: () => { const currentTheme = get().theme; const newTheme = currentTheme === "dark" ? "light" : "dark"; set({ theme: newTheme }); applyTheme(newTheme); }, initTheme: () => { const theme = get().theme; applyTheme(theme); }, }), { name: THEME_CONFIG.storageKey, } ) ); // Apply theme to document function applyTheme(theme) { if (typeof window === "undefined") return; const root = document.documentElement; const systemTheme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"; const effectiveTheme = theme === "system" ? systemTheme : theme; if (effectiveTheme === "dark") { root.classList.add("dark"); } else { root.classList.remove("dark"); } } export default useThemeStore;