"use client"; import { useMutation } from "@tanstack/react-query"; import { useRouter } from "next/navigation"; import { memo } from "react"; import { hasAdminPermission } from "@turbostarter/auth"; import { useTranslation } from "@turbostarter/i18n"; import { Avatar, AvatarFallback, AvatarImage, } from "@turbostarter/ui-web/avatar"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, DropdownMenuPortal, DropdownMenuGroup, } from "@turbostarter/ui-web/dropdown-menu"; import { Icons } from "@turbostarter/ui-web/icons"; import { SidebarMenuButton, useSidebar } from "@turbostarter/ui-web/sidebar"; import { Skeleton } from "@turbostarter/ui-web/skeleton"; import { pathsConfig } from "~/config/paths"; import { authClient } from "~/lib/auth/client"; import { auth } from "~/modules/auth/lib/api"; import { ThemeControlsProvider } from "~/modules/common/theme"; import { TurboLink } from "~/modules/common/turbo-link"; import type { User } from "@turbostarter/auth"; interface UserNavigationProps { readonly user: User; } export const UserNavigation = memo(({ user }) => { const { t } = useTranslation(["common", "auth"]); const router = useRouter(); const { isMobile, setOpenMobile } = useSidebar(); const { refetch } = authClient.useListOrganizations(); const signOut = useMutation({ ...auth.mutations.signOut, onSuccess: async () => { await refetch(); router.replace(pathsConfig.index); router.refresh(); }, }); return (
{user.name && ( {user.name} )} {user.email && ( {user.email} )}
{user.name && (

{user.name}

)} {user.email && (

{user.email}

)}
setOpenMobile(false)} > {t("dashboard")} setOpenMobile(false)} > {t("settings")} e.preventDefault()}>
{t("theme.title")}
{hasAdminPermission(user) && ( <> {t("common:admin")} )}
); }); export const UserNavigationSkeleton = () => { return ; }; UserNavigation.displayName = "UserNavigation";