'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, schoolLanguage, setSchoolLanguage, availableLanguages } = useLanguage() const { isDark } = useTheme() const [isOpen, setIsOpen] = useState(false) const [mode, setMode] = useState<'native' | 'school'>('native') const dropdownRef = useRef(null) 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) }, []) useEffect(() => { function handleEscape(event: KeyboardEvent) { if (event.key === 'Escape') setIsOpen(false) } document.addEventListener('keydown', handleEscape) return () => document.removeEventListener('keydown', handleEscape) }, []) const nativeLang = availableLanguages[language] const schoolLang = availableLanguages[schoolLanguage] const activeLang = mode === 'native' ? language : schoolLanguage const handleSelect = (lang: Language) => { if (mode === 'native') { setLanguage(lang) } else { setSchoolLanguage(lang) } setIsOpen(false) } return (
{/* Trigger: shows both native + school language */} {/* Dropdown */} {isOpen && (
{/* Tab switcher: Muttersprache / Schulsprache */}
{/* Language list */}
    {(Object.keys(availableLanguages) as Language[]).map((lang) => { const langInfo = availableLanguages[lang] const isSelected = lang === activeLang return (
  • ) })}
)}
) }