'use client' /** * LanguageSwitch Component * * Toggle button for switching between German and English terminology. * Stores preference in localStorage. */ import { useState, useEffect } from 'react' import { Language, DEFAULT_LANGUAGE } from '@/lib/compliance-i18n' interface LanguageSwitchProps { onChange?: (lang: Language) => void className?: string } const STORAGE_KEY = 'breakpilot-compliance-lang' export default function LanguageSwitch({ onChange, className = '' }: LanguageSwitchProps) { const [language, setLanguage] = useState(DEFAULT_LANGUAGE) const [mounted, setMounted] = useState(false) // Load language from localStorage on mount useEffect(() => { setMounted(true) const stored = localStorage.getItem(STORAGE_KEY) as Language | null if (stored && (stored === 'de' || stored === 'en')) { setLanguage(stored) onChange?.(stored) } }, [onChange]) const toggleLanguage = () => { const newLang: Language = language === 'de' ? 'en' : 'de' setLanguage(newLang) localStorage.setItem(STORAGE_KEY, newLang) onChange?.(newLang) } // Avoid hydration mismatch if (!mounted) { return (
) } return ( ) } /** * Hook to get and set compliance language */ export function useComplianceLanguage(): [Language, (lang: Language) => void] { const [language, setLanguage] = useState(DEFAULT_LANGUAGE) useEffect(() => { const stored = localStorage.getItem(STORAGE_KEY) as Language | null if (stored && (stored === 'de' || stored === 'en')) { setLanguage(stored) } }, []) const setAndStore = (lang: Language) => { setLanguage(lang) localStorage.setItem(STORAGE_KEY, lang) } return [language, setAndStore] }