/* Copyright (C) 2023-2026 QuantumNous This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . For commercial licensing, please contact support@quantumnous.com */ 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')}
) }