import classNames from '@lib/class-names/ClassNames'; import { Icon, ListItemButton, ListItemIcon, ListItemText, } from '@mui/material'; import { createGroup } from 'type-route'; import { DeclaredRoutePaths, routes, UseRoute, useRoute, } from '@components/router/RouterDefinition'; import { IconType } from '../theme/IconType'; import scss from './navigation.module.scss'; type LinkListItemProps = { icon: IconType, route: () => ReturnType, group?: ReturnType, label: string, drawerOpen: boolean, }; function LinkListItem( { icon, route, group, label, drawerOpen, }: Readonly>, ) { const activeRoute: UseRoute = useRoute(); const routeIsActive: boolean = group?.has(activeRoute) ?? route.name === activeRoute.name; return ( {label} } to={activeRoute} className={classNames({ [scss.active]: routeIsActive })} > {icon} { drawerOpen && ( ) } ); } export default (LinkListItem);