Spaces:
Running
Running
| import { ChartSpline, CirclePlus, FolderCode, LogOut } from "lucide-react"; | |
| import Link from "next/link"; | |
| import { | |
| DropdownMenu, | |
| DropdownMenuContent, | |
| DropdownMenuGroup, | |
| DropdownMenuItem, | |
| DropdownMenuLabel, | |
| DropdownMenuSeparator, | |
| DropdownMenuTrigger, | |
| } from "@/components/ui/dropdown-menu"; | |
| import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; | |
| import { Button } from "@/components/ui/button"; | |
| import { useUser } from "@/hooks/useUser"; | |
| export const UserMenu = ({ className }: { className?: string }) => { | |
| const { logout, user } = useUser(); | |
| return ( | |
| <DropdownMenu> | |
| <DropdownMenuTrigger asChild> | |
| <Button variant="ghost" className={`${className}`}> | |
| <Avatar className="size-8 mr-1"> | |
| <AvatarImage src={user?.avatarUrl} alt="@shadcn" /> | |
| <AvatarFallback className="text-sm"> | |
| {user?.fullname?.charAt(0).toUpperCase() ?? "E"} | |
| </AvatarFallback> | |
| </Avatar> | |
| {user?.fullname} | |
| </Button> | |
| </DropdownMenuTrigger> | |
| <DropdownMenuContent className="w-56" align="start"> | |
| <DropdownMenuLabel className="font-bold flex items-center gap-2 justify-center"> | |
| My Account | |
| </DropdownMenuLabel> | |
| <DropdownMenuSeparator /> | |
| <DropdownMenuGroup> | |
| <Link href="/projects/new"> | |
| <DropdownMenuItem> | |
| <CirclePlus className="size-4 text-neutral-100" /> | |
| New Project | |
| </DropdownMenuItem> | |
| </Link> | |
| <Link href="/projects"> | |
| <DropdownMenuItem> | |
| <FolderCode className="size-4 text-neutral-100" /> | |
| View Projects | |
| </DropdownMenuItem> | |
| </Link> | |
| <a href="https://huggingface.co/settings/billing" target="_blank"> | |
| <DropdownMenuItem> | |
| <ChartSpline className="size-4 text-neutral-100" /> | |
| Usage Quota | |
| </DropdownMenuItem> | |
| </a> | |
| </DropdownMenuGroup> | |
| <DropdownMenuSeparator /> | |
| <DropdownMenuItem | |
| onClick={() => { | |
| if (confirm("Are you sure you want to log out?")) { | |
| logout(); | |
| } | |
| }} | |
| > | |
| <Button size="xs" variant="destructive" className="w-full"> | |
| <LogOut className="size-4" /> | |
| Log out | |
| </Button> | |
| </DropdownMenuItem> | |
| </DropdownMenuContent> | |
| </DropdownMenu> | |
| ); | |
| }; | |