"use client"; import { Bell, LogIn, LogOut, Settings, ChevronsUpDown, CircleUserRound, } from "lucide-react"; import { useMemo } from "react"; import { useSidebar, SidebarMenu, SidebarMenuButton, SidebarMenuItem, } from "@/components/ui/sidebar"; import { DropdownMenu, DropdownMenuItem, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuContent, DropdownMenuTrigger, DropdownMenuSeparator, } from "@/components/ui/dropdown-menu"; import { useTranslations } from "next-intl"; import useConfirmationStore from "@/store/confirmationStore"; import { signIn, signOut, useSession } from "next-auth/react"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; const UserAvatar = ({ src, alt }: { src: string; alt: string }) => ( CN ); export const NavUser = ({ user, }: { user: { name: string; email: string; avatar: string; }; }) => { const { isMobile } = useSidebar(); const { data: session } = useSession(); const t = useTranslations("Components.NavUser"); const { openConfirmation } = useConfirmationStore(); const currentUser = useMemo(() => { if (session?.user) { return { name: session.user.name ?? "Unknown", email: session.user.email ?? "Unknown", avatar: session.user.image ?? "/gitea.svg", }; } return user; }, [session, user]); return (
{currentUser.name} {currentUser.email}
{session?.user ? ( <>
{currentUser.name} {currentUser.email}
{t("profile")} {t("notifications")} {t("settings")} { openConfirmation({ title: "Leaving Already?", description: "Are you sure you want to say goodbye?", cancelLabel: "Stay", actionLabel: "Leave", onCancel: () => {}, onAction: () => { signOut(); }, }); }} > {t("logout")} ) : ( signIn()}> {t("login")} )}
); };