// 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 };