import { authClient } from '@/lib/auth-client'; import { m } from '@/paraglide/messages'; import { DotsThreeVerticalIcon, KeyIcon, SignInIcon, SignOutIcon, UserCircleIcon, } from '@phosphor-icons/react'; import { useQueryClient } from '@tanstack/react-query'; import { createLink, Link, useNavigate } from '@tanstack/react-router'; import { toast } from 'sonner'; import { useAuth } from '../auth/auth-provider'; import AvatarUser from '../avatar/AvatarUser'; import RoleBadge from '../avatar/RoleBadge'; import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from '../ui/dropdown-menu'; import { SidebarMenu, SidebarMenuButton, SidebarMenuItem, useSidebar, } from '../ui/sidebar'; const SidebarMenuButtonLink = createLink(SidebarMenuButton); const NavUser = () => { const navigate = useNavigate(); const { isMobile } = useSidebar(); const queryClient = useQueryClient(); const { data: session } = useAuth(); const signout = async () => { await authClient.signOut({ fetchOptions: { onSuccess: () => { navigate({ to: '/' }); queryClient.invalidateQueries({ queryKey: ['auth', 'session'] }); toast.success(m.login_page_messages_login_success(), { richColors: true, }); }, onError: (ctx) => { toast.error( ( m[`backend_${ctx.error.code}` as keyof typeof m] as () => string )(), { richColors: true, }, ); }, }, }); }; if (!session?.user) return ( {m.ui_login_btn()} ); return (
{session.user.name} {session.user.email}
{/* Dropdown menu content */}
{session.user.name}
{session.user.email}
{m.nav_account()} {m.nav_change_password()} {m.nav_settings()} {m.ui_logout_btn()}
); }; export default NavUser;