'use client' import { useState, useRef, useEffect } from 'react' import { useLanguage } from '@/lib/LanguageContext' import { useTheme } from '@/lib/ThemeContext' import { Language } from '@/lib/i18n' interface LanguageDropdownProps { className?: string } export function LanguageDropdown({ className = '' }: LanguageDropdownProps) { const { language, setLanguage, availableLanguages } = useLanguage() const { isDark } = useTheme() const [isOpen, setIsOpen] = useState(false) const dropdownRef = useRef(null) // Schliessen bei Klick ausserhalb useEffect(() => { function handleClickOutside(event: MouseEvent) { if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) { setIsOpen(false) } } document.addEventListener('mousedown', handleClickOutside) return () => document.removeEventListener('mousedown', handleClickOutside) }, []) // Schliessen bei Escape useEffect(() => { function handleEscape(event: KeyboardEvent) { if (event.key === 'Escape') setIsOpen(false) } document.addEventListener('keydown', handleEscape) return () => document.removeEventListener('keydown', handleEscape) }, []) const currentLang = availableLanguages[language] return (
{/* Trigger Button */} {/* Dropdown Menu */} {isOpen && (
    {(Object.keys(availableLanguages) as Language[]).map((lang) => { const langInfo = availableLanguages[lang] const isSelected = lang === language return (
  • ) })}
)}
) }