'use client'; import Link from 'next/link'; import { Icons } from '@/components/icons/icons'; import { Button } from '@/components/ui/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; import { Skeleton } from '@/components/ui/skeleton'; import { signOut, useSession } from '@/lib/auth-client'; import { cn } from '@/lib/utils'; import type { UserAvatarClassNames } from './user-avatar'; import { UserAvatar } from './user-avatar'; export interface UserButtonClassNames { base?: string; skeleton?: string; trigger?: { base?: string; avatar?: UserAvatarClassNames; skeleton?: string; }; content?: { base?: string; avatar?: UserAvatarClassNames; menuItem?: string; separator?: string; }; } export interface UserButtonProps { className?: string; classNames?: UserButtonClassNames; } export function UserButton({ className, classNames }: UserButtonProps) { const { data: sessionData, isPending } = useSession(); const user = sessionData?.user ?? null; return ( e.preventDefault()} align='end' > {user ? (
{user.name || user.email}
{user.name && (
{user.email}
)}
) : (
Account
)} {!user ? ( <> Sign In ) : ( <> signOut()} > Log Out )}
); }