{{#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 (
{{else}}{{/if}}
}
variant="ghost"
size="icon"
aria-label="Sign in"
nativeButton={false}
>
);
}
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"}
);
}