import { create } from 'zustand'; type Theme = 'dark' | 'light'; interface ThemeState { theme: Theme; toggleTheme: () => void; initTheme: () => void; } export const useThemeStore = create((set) => ({ theme: 'dark', toggleTheme: () => set((state) => { const newTheme = state.theme === 'dark' ? 'light' : 'dark'; localStorage.setItem('theme-preference', newTheme); if (newTheme === 'dark') { document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } return { theme: newTheme }; }), initTheme: () => set(() => { const saved = localStorage.getItem('theme-preference'); const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches; const initialTheme = saved ? (saved as Theme) : (prefersDark ? 'dark' : 'light'); if (initialTheme === 'dark') { document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } return { theme: initialTheme }; }) }));