'use client'; import { useEffect, useState } from 'react'; import { CaretSortIcon, PersonIcon } from '@radix-ui/react-icons'; import { CheckCircle, Plus } from 'lucide-react'; import { useTranslation } from 'react-i18next'; import { Avatar, AvatarFallback, AvatarImage } from '@kit/ui/avatar'; import { Button } from '@kit/ui/button'; import { Command, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, } from '@kit/ui/command'; import { If } from '@kit/ui/if'; import { Popover, PopoverContent, PopoverTrigger } from '@kit/ui/popover'; import { Trans } from '@kit/ui/trans'; import { cn } from '@kit/ui/utils'; import { CreateTeamAccountDialog } from '../../../team-accounts/src/components/create-team-account-dialog'; import { usePersonalAccountData } from '../hooks/use-personal-account-data'; interface AccountSelectorProps { accounts: Array<{ label: string | null; value: string | null; image?: string | null; }>; features: { enableTeamAccounts: boolean; enableTeamCreation: boolean; }; selectedAccount?: string; collapsed?: boolean; onAccountChange: (value: string | undefined) => void; } const PERSONAL_ACCOUNT_SLUG = 'personal'; export function AccountSelector({ accounts, selectedAccount, onAccountChange, features = { enableTeamAccounts: true, enableTeamCreation: true, }, collapsed = false, }: React.PropsWithChildren) { const [open, setOpen] = useState(false); const [isCreatingAccount, setIsCreatingAccount] = useState(false); const [value, setValue] = useState( selectedAccount ?? PERSONAL_ACCOUNT_SLUG, ); const { t } = useTranslation('teams'); const personalData = usePersonalAccountData(); useEffect(() => { setValue(selectedAccount ?? PERSONAL_ACCOUNT_SLUG); }, [selectedAccount]); const Icon = (props: { item: string }) => { return ( ); }; if (!features.enableTeamAccounts) { return null; } const selected = accounts.find((account) => account.value === value); const pictureUrl = personalData.data?.picture_url; const PersonalAccountAvatar = () => pictureUrl ? ( ) : ( ); return ( <> onAccountChange(undefined)} value={PERSONAL_ACCOUNT_SLUG} > 0}> }> {(accounts ?? []).map((account) => ( { setValue(currentValue === value ? '' : currentValue); setOpen(false); if (onAccountChange) { onAccountChange(currentValue); } }} > {account.label ? account.label[0] : ''} {account.label} ))} ); } function UserAvatar(props: { pictureUrl?: string }) { return ( ); }