// import { Dot } from '@/components/@extended'; import { useMenuConfig } from '@/components/Layout/MenuProvider'; import { useLayoutMediaState } from '@/components/Layout/Provider'; import { Avatar, Chip, ListItemButton, ListItemIcon, ListItemText, Typography } from '@mui/material'; import { useTheme } from '@mui/material/styles'; import { forwardRef, useEffect } from 'react'; import { Link, useLocation } from 'react-router-dom'; type NavItemProps = { item: any; level: number; onItemClick?: () => void; }; type NavListItemProps = { component: string | React.ElementType; href?: string; target?: string; }; function NavItem({ item, level, onItemClick }: NavItemProps) { const theme = useTheme(); const { horizontal, downLg } = useLayoutMediaState(); const { drawerOpen, openItem, activeItem, openDrawer } = useMenuConfig(); let itemTarget = '_self'; if (item.target) { itemTarget = '_blank'; } const listItemProps: NavListItemProps = item?.external !== false ? { component: forwardRef((props, ref) => ) } : { component: 'a', href: item.url, target: itemTarget }; const Icon = item.icon; const itemIcon = item.icon ? : false; const isSelected = openItem.findIndex((id) => id === item.id) > -1; const { pathname } = useLocation(); // active menu item on page load useEffect(() => { if (pathname.endsWith(item.url)) { activeItem([item.id]); } // eslint-disable-next-line }, [pathname]); const textColor = theme.palette.mode === 'dark' ? 'grey.400' : 'text.primary'; const iconSelectedColor = theme.palette.mode === 'dark' && drawerOpen ? 'text.primary' : 'primary.main'; return ( <> {!horizontal ? ( openDrawer(false) })} > {itemIcon ? ( {itemIcon} ) : null} {drawerOpen || (!drawerOpen && level !== 1) ? ( {item.title} } /> ) : null} {(drawerOpen || (!drawerOpen && level !== 1)) && item.chip ? ( {item.chip.avatar} : null) as any} /> ) : null} ) : ( onItemClick?.()} sx={{ zIndex: 1201, ...(drawerOpen && { '&:hover': { bgcolor: 'transparent' }, '&.Mui-selected': { bgcolor: 'transparent', color: iconSelectedColor, '&:hover': { color: iconSelectedColor, bgcolor: 'transparent' } } }), ...(!drawerOpen && { '&:hover': { bgcolor: 'transparent' }, '&.Mui-selected': { '&:hover': { bgcolor: 'transparent' }, bgcolor: 'transparent' } }) }} > {itemIcon ? ( {itemIcon} ) : null} {/* {!itemIcon && ( )} */} {item.title} } /> {(drawerOpen || (!drawerOpen && level !== 1)) && item.chip ? ( {item.chip.avatar} : null) as any} /> ) : null} )} ); } export { NavItem };