// ** React Imports import { ElementType, ReactNode } from 'react' // ** Next Import import Link from 'next/link' // ** MUI Imports import Box from '@mui/material/Box' import List from '@mui/material/List' import Button from '@mui/material/Button' import Drawer from '@mui/material/Drawer' import { styled } from '@mui/material/styles' import Typography from '@mui/material/Typography' import ListItemIcon from '@mui/material/ListItemIcon' import ListItemText from '@mui/material/ListItemText' import ListItem, { ListItemProps } from '@mui/material/ListItem' // ** Icon Imports import Icon from 'src/@core/components/icon' // ** Third Party Imports import PerfectScrollbar from 'react-perfect-scrollbar' // ** Custom Components Imports import CustomBadge from 'src/@core/components/mui/badge' // ** Types import { CustomBadgeProps } from 'src/@core/components/mui/badge/types' import { MailFolderType, MailLabelType, MailSidebarType } from 'src/types/apps/emailTypes' // ** Styled Components const ListItemStyled = styled(ListItem)(({ theme }) => ({ borderLeftWidth: '3px', borderLeftStyle: 'solid', padding: theme.spacing(0, 5), marginBottom: theme.spacing(2) })) const ListBadge = styled(CustomBadge)(() => ({ '& .MuiBadge-badge': { height: '18px', minWidth: '18px', transform: 'none', position: 'relative', transformOrigin: 'none' } })) const SidebarLeft = (props: MailSidebarType) => { // ** Props const { store, hidden, lgAbove, dispatch, leftSidebarOpen, leftSidebarWidth, toggleComposeOpen, setMailDetailsOpen, handleSelectAllMail, handleLeftSidebarToggle } = props const RenderBadge = ( folder: 'inbox' | 'draft' | 'spam', color: 'default' | 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info' ) => { if (store && store.mailMeta && store.mailMeta[folder] > 0) { return } else { return null } } const handleActiveItem = (type: 'folder' | 'label', value: MailFolderType | MailLabelType) => { if (store && store.filter[type] !== value) { return false } else { return true } } const handleListItemClick = () => { setMailDetailsOpen(false) setTimeout(() => dispatch(handleSelectAllMail(false)), 50) handleLeftSidebarToggle() } const activeInboxCondition = store && handleActiveItem('folder', 'inbox') && store.filter.folder === 'inbox' && store.filter.label === '' const ScrollWrapper = ({ children }: { children: ReactNode }) => { if (hidden) { return {children} } else { return {children} } } return ( (activeInboxCondition ? theme.palette.primary.main : 'transparent') }} > {RenderBadge('inbox', 'primary')} {RenderBadge('draft', 'warning')} {RenderBadge('spam', 'error')} Labels ) } export default SidebarLeft