import * as Popover from "@radix-ui/react-popover"; import { useNavigate } from "@tanstack/react-router"; import { useMutation } from "@tanstack/react-query"; import { ChevronDown, LogOut, Settings as SettingsIcon } from "lucide-react"; import { toast } from "sonner"; import { api } from "@/lib/api"; import { authStore, useAuth } from "@/lib/auth"; import { cn } from "@/lib/utils"; /** * UserMenu — avatar initiales + popover avec logout. * Radix Popover pour l'a11y (focus management, échap, click-outside). */ export function UserMenu() { const { user } = useAuth(); const navigate = useNavigate(); const logoutMutation = useMutation({ mutationFn: async () => api.post("/api/v1/account/logout"), onSettled: () => { // Quoi qu'il arrive (succès ou échec réseau), on clear la session locale. authStore.clear(); toast.success("À très vite."); void navigate({ to: "/login" }); }, }); const initials = user?.fullName ?.split(" ") .filter(Boolean) .slice(0, 2) .map((part) => part[0]?.toUpperCase() ?? "") .join("") ?? "?"; const firstName = user?.fullName?.split(" ")[0] ?? "Utilisateur"; return ( {firstName}

{user?.fullName}

{user?.email}

); }