import { useState } from "react"; import { useLocation } from "wouter"; import { useTranslation } from "react-i18next"; import { useAuth } from "@/hooks/use-auth"; import { Avatar, AvatarFallback } from "@/components/ui/avatar"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Skeleton } from "@/components/ui/skeleton"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Bookmark, LogIn, LogOut, Trash2 } from "lucide-react"; import { cn } from "@/lib/utils"; function initials(name?: string | null): string { if (!name) return "?"; const parts = name.trim().split(/\s+/).filter(Boolean); if (parts.length === 0) return "?"; return parts .slice(0, 2) .map((p) => p[0]?.toUpperCase() ?? "") .join(""); } export function UserMenu() { const [location, navigate] = useLocation(); const { t } = useTranslation(); const { user, isLoading, isAuthenticated, isAdmin, tier, hasFeature, login, logout } = useAuth(); const [open, setOpen] = useState(false); const showWatchlist = hasFeature("watchlist"); const showTrash = hasFeature("trash"); const displayName = user?.name || user?.preferredUsername || "User"; if (isLoading) { return (