feat: add bw themes
ci-front / build (push) Successful in 2m26s

This commit is contained in:
2026-04-03 21:49:39 +03:00
parent cc23cc2a1e
commit 88fb7a1888
9 changed files with 642 additions and 235 deletions
@@ -0,0 +1,54 @@
import type { Theme } from "@/modules/auth/types/auth.types";
import { create } from "zustand";
import { persist } from "zustand/middleware";
interface ThemeState {
theme: Theme;
toggleTheme: () => void;
setTheme: (theme: Theme) => void;
}
export const useThemeStore = create<ThemeState>()(
persist(
(set) => ({
theme: "dark",
toggleTheme: () => {
set((state) => {
const newTheme = state.theme === "dark" ? "light" : "dark";
// Применяем класс к documentElement
if (newTheme === "dark") {
document.documentElement.classList.add("dark");
} else {
document.documentElement.classList.remove("dark");
}
return { theme: newTheme };
});
},
setTheme: (theme: Theme) => {
if (theme === "dark") {
document.documentElement.classList.add("dark");
} else {
document.documentElement.classList.remove("dark");
}
set({ theme });
},
}),
{
name: "theme-storage",
},
),
);
// Инициализация темы при загрузке
if (typeof window !== "undefined") {
const storedTheme = localStorage.getItem("theme-storage");
if (storedTheme) {
const { state } = JSON.parse(storedTheme);
if (state.theme === "dark") {
document.documentElement.classList.add("dark");
}
} else {
// По умолчанию dark
document.documentElement.classList.add("dark");
}
}