import { Avatar, Box, Link, Menu, MenuButton, MenuDivider, MenuGroup, MenuItem, MenuList, Text, useColorModeValue, } from "@chakra-ui/react"; import NextLink from "next/link"; import { signOut, useSession } from "next-auth/react"; import React, { ElementType, useCallback } from "react"; import { FiAlertTriangle, FiLayout, FiLogOut, FiSettings, FiShield } from "react-icons/fi"; interface MenuOption { name: string; href: string; desc: string; icon: ElementType; isExternal: boolean; } export function UserMenu() { 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: "Dashboard", href: "/dashboard", desc: "Dashboard", icon: FiLayout, isExternal: false, }, { name: "Account Settings", href: "/account", desc: "Account Settings", icon: FiSettings, isExternal: false, }, { name: "Report a Bug", href: "https://github.com/LAION-AI/Open-Assistant/issues/new/choose", desc: "Report a Bug", icon: FiAlertTriangle, isExternal: true, }, ]; if (session.user.role === "admin") { options.unshift({ name: "Admin Dashboard", href: "/admin", desc: "Admin Dashboard", icon: FiShield, isExternal: false, }); } return (
); } export default UserMenu;