import React from 'react'; import clsx from 'clsx'; import { useRouter } from "next/router"; import NextLink, { LinkProps as NextLinkProps } from 'next/link'; import MuiLink, { LinkProps as MuiLinkProps } from '@material-ui/core/Link'; type NextComposedProps = React.AnchorHTMLAttributes & NextLinkProps; const NextComposed = React.forwardRef(function NextComposed(props: NextComposedProps, ref: React.Ref) { const { as, href, ...other } = props; return ( ); }); interface LinkPropsBase { activeClassName?: string; innerRef?: React.Ref; naked?: boolean; } type LinkProps = LinkPropsBase & NextComposedProps & Omit; function Link(props: LinkProps) { const { href, activeClassName = 'active', className: classNameProps, innerRef, naked, ...other } = props; const router = useRouter(); const pathname = typeof href === 'string' ? href : href.pathname; const className = clsx(classNameProps, { [activeClassName]: router.pathname === pathname && activeClassName, }); if (naked) { return ; } return ( ); } export default React.forwardRef((props, ref) => );