import { useEffect, useRef, useState } from 'react' import { ChevronDown, LogOut } from 'lucide-react' import { useAuth } from '@/contexts/AuthContext' import { NotificationBell } from '@/components/NotificationBell' import { cn } from '@/lib/cn' function UserMenu() { const { user, logout } = useAuth() const [open, setOpen] = useState(false) const ref = useRef(null) useEffect(() => { if (!open) return const close = (e: MouseEvent) => { if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false) } document.addEventListener('mousedown', close) return () => document.removeEventListener('mousedown', close) }, [open]) const initials = (user?.fullName ?? user?.email ?? '?') .split(' ') .filter(Boolean) .map(s => s[0]) .slice(-2) .join('') .toUpperCase() return (
{open && (
{user?.fullName}
{user?.email}
{user && user.roles.length > 0 && (
{user.roles.map(r => ( {r} ))}
)}
)}
) } export function TopBar({ title }: { title?: string }) { return (
{title}
) }