import Menu from '@mui/material/Menu'; import {useTranslation} from 'next-i18next'; import {signOut, useSession} from 'next-auth/react'; import useSettings from '../../hooks/useSettings'; import Languages from '../Languages/MenuItem'; import Action, {ActionType} from './Action'; import ExternalLink from './ExternalLink'; import {Chip, Typography} from '@mui/material'; interface Props { anchorEl: Element; setAnchorEl: (el: Element) => void; actions: ActionType[]; } const GenericMenu = (props: Props) => { const {anchorEl, setAnchorEl, actions = []} = props; const {t} = useTranslation(); const settings = useSettings(); const session = useSession(); const isAuthenticated = session.status === 'authenticated'; const supportItem = { label: ( } > ), }; const languageMenuItem = { label: , id: 'LanguageSelection', }; const aboutMenuItem = { label: ( {t('menu.about')} } > ), }; const sourceCodeItem = { label: ( {t('menu.code')} } > ), }; const logoutMenuItem = isAuthenticated && { label: t('menu.logout'), onClick: () => { setAnchorEl(null); signOut({ callbackUrl: settings?.['about_link'] || '/', }); }, id: 'LogoutTabs', }; const validActions = [ ...actions, supportItem, languageMenuItem, logoutMenuItem, {divider: true}, aboutMenuItem, sourceCodeItem, ].filter(Boolean); return ( setAnchorEl(null)} > {validActions?.map((action, index) => ( ))} ); }; export default GenericMenu;