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/avatar-user'; import RoleBadge from '../avatar/role-badge'; 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_logout_success(), { richColors: true, }); }, onError: (ctx) => { console.error(ctx.error.code); toast.error(m.backend_message({ code: ctx.error.code }), { 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;