{{#if framework == "nextjs"}} "use client"; {{/if}} import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { LayoutDashboard, LogOut, User } from "lucide-react"; {{#if framework == "nextjs"}} import Link from "next/link"; {{else}} import { Link } from "react-router"; {{/if}} import { useLogoutMutation } from "../queries/auth.mutations"; import { useMeQuery } from "../queries/auth.queries"; import { Skeleton } from "@/components/ui/skeleton"; export default function UserProfileMenu() { const { data: user, isLoading } = useMeQuery(); const { mutate: logout, isPending } = useLogoutMutation(); if (isLoading) { return ; } if (!user) { return ( ); } const initials = user.name ? user.name.split(" ").map((n) => n[0]).join("").toUpperCase().slice(0, 2) : "U"; return ( {initials} {/* User info header */}
{initials}
{user.name} {user.email}
{{else}}{{/if}} } className="gap-2" > Dashboard logout()} className="gap-2" > {isPending ? "Signing out…" : "Sign out"}
); }