import { ReactNode } from "react"
// @mui material components
import Collapse from "@mui/material/Collapse"
import ListItem from "@mui/material/ListItem"
import ListItemText from "@mui/material/ListItemText"
import Icon from "@mui/material/Icon"
import { Theme } from "@mui/material/styles"
// ThreeD Garden components
import MDBox from "~/components/mui/MDBox"
// Custom styles for the SidenavItem
import {
item,
itemContent,
itemArrow,
} from "~/components/elements/Sidenav/styles/sidenavItem"
// ThreeD Garden contexts
import { useMaterialUIController } from "~/context"
// Declaring props types for SidenavCollapse
interface Props {
color?:
| "primary"
| "secondary"
| "info"
| "success"
| "warning"
| "error"
| "dark"
name: string
active?: boolean | string
nested?: boolean
children?: ReactNode
open?: boolean
[key: string]: any
}
function SidenavItem({
color,
name,
active,
nested,
children,
open,
...rest
}: Props): JSX.Element {
const [controller] = useMaterialUIController()
const { miniSidenav, transparentSidenav, whiteSidenav, darkMode } = controller
return (
<>
item(theme, {
active,
color,
transparentSidenav,
whiteSidenav,
darkMode,
})
}>
itemContent(theme, {
active,
miniSidenav,
name,
open,
nested,
transparentSidenav,
whiteSidenav,
darkMode,
})
}>
{children && (
itemArrow(theme, {
open,
miniSidenav,
transparentSidenav,
whiteSidenav,
darkMode,
})
}>
expand_less
)}
{children && (
{children}
)}
>
)
}
// Declaring default props for SidenavItem
SidenavItem.defaultProps = {
color: "info",
active: false,
nested: false,
children: false,
open: false,
}
export default SidenavItem