'use client' import { useState, useRef, useEffect } from 'react' import { useLanguage } from '@/lib/LanguageContext' import { useTheme } from '@/lib/ThemeContext' interface UserMenuProps { userName: string userEmail: string userInitials: string isExpanded?: boolean className?: string } export function UserMenu({ userName, userEmail, userInitials, isExpanded = false, className = '' }: UserMenuProps) { const { t } = useLanguage() const { isDark } = useTheme() const [isOpen, setIsOpen] = useState(false) const menuRef = useRef(null) // Schliessen bei Klick ausserhalb useEffect(() => { function handleClickOutside(event: MouseEvent) { if (menuRef.current && !menuRef.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 menuItems = [ { id: 'settings', labelKey: 'nav_settings', icon: ( ), onClick: () => { console.log('Settings clicked') setIsOpen(false) } }, { id: 'logout', labelKey: 'logout', icon: ( ), onClick: () => { console.log('Logout clicked') setIsOpen(false) }, danger: true } ] return (
{/* User Button - Trigger */} {/* Popup Menu - erscheint oberhalb */} {isOpen && (
{/* User Info Header */}

{userName}

{userEmail}

{/* Menu Items */}
{menuItems.map((item) => ( ))}
)}
) }