import { useState, useEffect, useRef } from 'react'; const THEMES = [ { value: 'salon', label: 'Salon' }, { value: 'salon-noir', label: 'Salon Noir' }, { value: 'gothic', label: 'Gothic' }, ]; interface Props { defaultTheme?: string; } export default function ThemeSwitcher({ defaultTheme = 'salon' }: Props) { const [theme, setTheme] = useState(() => { if (typeof window !== 'undefined') { return localStorage.getItem('user-theme') || defaultTheme; } return defaultTheme; }); const [toast, setToast] = useState(null); const isFirst = useRef(true); useEffect(() => { const html = document.documentElement; THEMES.forEach(t => html.classList.remove(t.value)); html.classList.add(theme); localStorage.setItem('user-theme', theme); if (isFirst.current) { isFirst.current = false; return; } const label = THEMES.find(t => t.value === theme)?.label ?? theme; setToast(`Theme: ${label}`); const id = setTimeout(() => setToast(null), 1200); return () => clearTimeout(id); }, [theme]); return (
{toast &&
{toast}
}
); }