import { ChevronDown, LogOut, UserIcon, UserPlus } from 'lucide-react'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu.tsx'; import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar.tsx'; import { Skeleton } from '@/components/ui/skeleton.tsx'; import { useLoggedInAccounts, type Account } from '@/hooks/useLoggedInAccounts'; interface AccountSwitcherProps { onAddAccountClick: () => void; } export function AccountSwitcher({ onAddAccountClick }: AccountSwitcherProps) { const { currentUser, otherUsers, isLoading, setLogin, removeLogin } = useLoggedInAccounts(); if (!currentUser) return null; const getDisplayName = (account: Account): string => { return account.metadata.name ?? 'Anonymous'; } // While the metadata query is in-flight and we don't yet have a name, // we don't want to flash a generated animal name / its first letter. const isCurrentUserPending = isLoading && !currentUser.metadata.name; return (
Switch Account
{otherUsers.map((user) => { const isPending = isLoading && !user.metadata.name; return ( setLogin(user.id)} className='flex items-center gap-2 cursor-pointer p-2 rounded-md' > {isPending ? ( ) : ( getDisplayName(user)?.charAt(0) || )}
{isPending ? ( ) : (

{getDisplayName(user)}

)}
{user.id === currentUser.id &&
}
); })} Add another account removeLogin(currentUser.id)} className='flex items-center gap-2 cursor-pointer p-2 rounded-md text-red-500' > Log out
); }