'use client' import { createContext, useContext, useState, useEffect, ReactNode } from 'react' type Theme = 'dark' | 'light' interface ThemeContextType { theme: Theme toggleTheme: () => void isDark: boolean } const ThemeContext = createContext(null) const STORAGE_KEY = 'bp_theme' export function ThemeProvider({ children }: { children: ReactNode }) { const [theme, setTheme] = useState('dark') const [mounted, setMounted] = useState(false) // Nach dem ersten Render: Theme aus localStorage laden useEffect(() => { const stored = localStorage.getItem(STORAGE_KEY) as Theme | null if (stored && (stored === 'dark' || stored === 'light')) { setTheme(stored) } setMounted(true) }, []) // Theme wechseln und speichern const toggleTheme = () => { const newTheme = theme === 'dark' ? 'light' : 'dark' setTheme(newTheme) localStorage.setItem(STORAGE_KEY, newTheme) } // Waehrend SSR: Default anzeigen if (!mounted) { return ( {}, isDark: true, }} > {children} ) } return ( {children} ) } export function useTheme() { const context = useContext(ThemeContext) if (!context) { throw new Error('useTheme must be used within a ThemeProvider') } return context }