import { useState, useRef, useEffect } from 'react'; import type { AuthUser } from '../../hooks/useAuth'; import type { Page } from './Header'; import { PAGE_PATHS } from './Header'; import { SunIcon } from './icons/SunIcon'; import { MoonIcon } from './icons/MoonIcon'; export default function UserMenu({ user, theme, onToggleTheme, onLogout, onNavigate, }: { user: AuthUser; theme: 'light' | 'dark'; onToggleTheme: () => void; onLogout: () => void; onNavigate: (page: Page) => void; }) { const [open, setOpen] = useState(false); const menuRef = useRef(null); // Close on outside click useEffect(() => { if (!open) return; const handleClick = (e: MouseEvent) => { if (menuRef.current && !menuRef.current.contains(e.target as Node)) { setOpen(false); } }; document.addEventListener('mousedown', handleClick); return () => document.removeEventListener('mousedown', handleClick); }, [open]); const initial = user.email[0].toUpperCase(); return (
{open && (

{user.email}

{user.subscription === 'licensed' || user.isAdmin ? 'Full Access' : 'Inner London'}
{ if (e.metaKey || e.ctrlKey || e.shiftKey || e.button !== 0) return; e.preventDefault(); setOpen(false); onNavigate('account'); }} className="block w-full text-left px-3 py-2 text-sm text-warm-700 dark:text-warm-300 hover:bg-warm-50 dark:hover:bg-warm-700 rounded" > Account
)}
); }