import { useAuthStore } from '@/stores/auth' import { useToastStore } from '@/stores/toast' export interface ThemeOption { id: string label: string primary: string bg: string text: string } export const THEMES: ThemeOption[] = [ { id: 'warm-craft', label: 'Warm Craft', primary: '#c97c3a', bg: '#fdf6ee', text: '#3a2e22' }, { id: 'playful-pop', label: 'Playful Pop', primary: '#d63aab', bg: '#fff0fb', text: '#2d0a28' }, { id: 'sage-cream', label: 'Sage & Cream', primary: '#4e7c3a', bg: '#f6f8f3', text: '#1e2b1a' }, { id: 'dusty-mauve', label: 'Dusty Mauve', primary: '#8e4a84', bg: '#f6f0f4', text: '#2a1828' }, { id: 'ocean-dusk', label: 'Ocean Dusk', primary: '#1a6ea8', bg: '#eef3f8', text: '#0e2030' }, { id: 'honey-slate', label: 'Honey & Slate', primary: '#c49a20', bg: '#f2f2ee', text: '#1c1c18' }, ] export function useTheme() { const auth = useAuthStore() const toast = useToastStore() function applyTheme(themeId: string) { document.documentElement.dataset.theme = themeId if (auth.user) auth.user.theme = themeId const theme = THEMES.find(t => t.id === themeId) if (theme) { const meta = document.querySelector('meta[name="theme-color"]') if (meta) meta.setAttribute('content', theme.bg) } } async function saveTheme(themeId: string) { applyTheme(themeId) try { const res = await fetch('/api/user/theme', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ theme: themeId }), }) if (!res.ok) throw new Error('Failed to save theme') } catch { toast.show('Could not save theme — try again', 'error') } } return { THEMES, applyTheme, saveTheme } }