55 lines
1.2 KiB
JavaScript
55 lines
1.2 KiB
JavaScript
// @flow
|
|
import * as PAGES from 'constants/pages';
|
|
import React from 'react';
|
|
import { Link, useHistory } from 'react-router-dom';
|
|
import { MenuLink, MenuItem } from '@reach/menu-button';
|
|
import MuiMenuItem from '@mui/material/MenuItem';
|
|
import MuiLink from '@mui/material/Link';
|
|
import Icon from 'component/common/icon';
|
|
|
|
type Props = {
|
|
icon: string,
|
|
name: string,
|
|
page: string,
|
|
requiresAuth?: boolean,
|
|
useMui?: boolean,
|
|
};
|
|
|
|
export default function HeaderMenuLink(props: Props) {
|
|
const { icon, name, page, requiresAuth, useMui } = props;
|
|
|
|
const { push } = useHistory();
|
|
|
|
if (useMui) {
|
|
return (
|
|
<MuiMenuItem
|
|
className="menu__link"
|
|
component={MuiLink}
|
|
href={`/$/${page}`}
|
|
onClick={(e) => {
|
|
e.preventDefault();
|
|
push(`/$/${page}`);
|
|
}}
|
|
>
|
|
<Icon aria-hidden icon={icon} />
|
|
{name}
|
|
</MuiMenuItem>
|
|
);
|
|
}
|
|
|
|
if (requiresAuth) {
|
|
return (
|
|
<MenuItem className="menu__link" onSelect={() => push(`/$/${PAGES.AUTH}`)}>
|
|
<Icon aria-hidden icon={icon} />
|
|
{name}
|
|
</MenuItem>
|
|
);
|
|
}
|
|
|
|
return (
|
|
<MenuLink className="menu__link" as={Link} to={`/$/${page}`}>
|
|
<Icon aria-hidden icon={icon} />
|
|
{name}
|
|
</MenuLink>
|
|
);
|
|
}
|