import { Avatar, Box, Link, Menu, MenuButton, MenuDivider, MenuGroup, MenuItem, MenuList, Text, useColorModeValue, } from "@chakra-ui/react"; import { AlertTriangle, Layout, LogOut, Settings, Shield } from "lucide-react"; import NextLink from "next/link"; import { signOut, useSession } from "next-auth/react"; import { useTranslation } from "next-i18next"; import React, { ElementType, useCallback } from "react"; interface MenuOption { name: string; href: string; icon: ElementType; isExternal: boolean; } export function UserMenu() { const { t } = useTranslation(); const borderColor = useColorModeValue("gray.300", "gray.600"); const handleSignOut = useCallback(() => { signOut({ callbackUrl: "/" }); }, []); const { data: session, status } = useSession(); if (!session || status !== "authenticated") { return null; } const options: MenuOption[] = [ { name: t("dashboard"), href: "/dashboard", icon: Layout, isExternal: false, }, { name: t("account_settings"), href: "/account", icon: Settings, isExternal: false, }, { name: t("report_a_bug"), href: "https://github.com/LAION-AI/Open-Assistant/issues/new/choose", icon: AlertTriangle, isExternal: true, }, ]; if (session.user.role === "admin") { options.unshift({ name: t("admin_dashboard"), href: "/admin", icon: Shield, isExternal: false, }); } return ( {session.user.name || "New User"} {session.user.name} {/* 3,200 */} {options.map((item) => ( ))} ); } export default UserMenu;