import { Avatar, Badge, Menu, UnstyledButton, useMantineTheme } from '@mantine/core'; import { useDisclosure } from '@mantine/hooks'; import { IconDashboard, IconInfoCircle, IconLogin, IconLogout, IconMoonStars, IconSun, IconUserSearch, } from '@tabler/icons-react'; import { User } from 'next-auth'; import { signOut, useSession } from 'next-auth/react'; import Link from 'next/link'; import { forwardRef } from 'react'; import { AboutModal } from '~/components/Dashboard/Modals/AboutModal/AboutModal'; import { useColorScheme } from '~/hooks/use-colorscheme'; export const AvatarMenu = () => { const newVersionAvailable = '0.13.0'; const [aboutModalOpened, aboutModal] = useDisclosure(false); const { data: sessionData } = useSession(); const { colorScheme, toggleColorScheme } = useColorScheme(); const Icon = colorScheme === 'dark' ? IconSun : IconMoonStars; return ( <> } onClick={toggleColorScheme}> Switch theme {sessionData?.user && ( <> }>View Profile }>Default Dashboard )} } rightSection={ newVersionAvailable && ( New ) } onClick={() => aboutModal.open()} > About {sessionData?.user ? ( } color="red" onClick={() => signOut()}> Logout ) : ( } component={Link} href="/auth/login"> Login )} ); }; type CurrentUserAvatarProps = { user: User | null; }; const CurrentUserAvatar = forwardRef( ({ user, ...others }, ref) => { const { primaryColor } = useMantineTheme(); if (!user) return ; return ( {user.name?.slice(0, 2).toUpperCase()} ); } );