/** * User menu -- header dropdown for authenticated users, login button for guests. * Uses Radix DropdownMenu (via shadcn/ui). * @see specs/prd-web.md Section M3 (Auth Flow) */ 'use client' import Link from 'next/link' import Image from 'next/image' import { User, SignOut, GearSix, ShieldCheck } from '@phosphor-icons/react' import { useAuth } from '@/hooks/use-auth' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu' import { cn } from '@/lib/utils' export function UserMenu() { const { user, isAuthenticated, isLoading, logout } = useAuth() if (isLoading) { return
} if (!isAuthenticated || !user) { return ( Log in ) } const handleLogout = async () => { await logout() } return (
{user.displayName && (

{user.displayName}

)}

@{user.handle}

{user.role === 'admin' && ( )} void handleLogout()} className="flex items-center gap-2 text-destructive focus:text-destructive" >
) }