import type { Theme } from "@/modules/auth/types/auth.types"; import { create } from "zustand"; import { persist } from "zustand/middleware"; import { applyTheme, getSavedTheme, getCurrentTheme } from "@/modules/theme-changer/utils/apply.theme"; interface ThemeState { theme: Theme; toggleTheme: () => void; setTheme: (theme: Theme) => void; } export const useThemeStore = create()( persist( (set, get) => ({ theme: "dark" as Theme, toggleTheme: () => { const currentTheme = getCurrentTheme(); const newThemeType = currentTheme === "dark" || currentTheme === "nightowl" || currentTheme === "sunset" || currentTheme === "forest" || currentTheme === "ocean" || currentTheme === "coffee" ? "light" : "dark"; // Переключаемся между light и dark базовыми темами const newTheme = newThemeType === "dark" ? "dark" : "light"; applyTheme(newTheme); set({ theme: newTheme as Theme }); }, setTheme: (theme: Theme) => { applyTheme(theme); set({ theme }); }, }), { name: "theme-storage", }, ), );