import { useMemo } from 'react' import { useNavigate } from '@tanstack/react-router' import { User, Wallet, LogOut, Settings } from 'lucide-react' import { useTranslation } from 'react-i18next' import { useAuthStore } from '@/stores/auth-store' import { getUserAvatarFallback, getUserAvatarStyle } from '@/lib/avatar' import { ROLE } from '@/lib/roles' import useDialogState from '@/hooks/use-dialog' import { useUserDisplay } from '@/hooks/use-user-display' import { Avatar, AvatarFallback } from '@/components/ui/avatar' import { Button } from '@/components/ui/button' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu' import { SignOutDialog } from '@/components/sign-out-dialog' const avatarFallbackClassName = 'font-semibold text-white' export function ProfileDropdown() { const { t } = useTranslation() const navigate = useNavigate() const [open, setOpen] = useDialogState() const user = useAuthStore((state) => state.auth.user) const { displayName, roleLabel } = useUserDisplay(user) const isSuperAdmin = user?.role === ROLE.SUPER_ADMIN const avatarName = user?.username || displayName const avatarFallback = getUserAvatarFallback(avatarName) const avatarFallbackStyle = useMemo( () => getUserAvatarStyle(avatarName), [avatarName] ) return ( <> } > {avatarFallback}
{avatarFallback}

{displayName}

{roleLabel} {user?.group && ( <> ยท {String(user.group)} )}
navigate({ to: '/profile' })}> {t('Profile')} navigate({ to: '/wallet' })}> {t('Wallet')} {isSuperAdmin && ( navigate({ to: '/system-settings/site/$section', params: { section: 'system-info' }, }) } > {t('System Settings')} )} setOpen(true)}> {t('Sign out')}
) }