import { ReactNode } from "react"
// @mui material components
import Collapse from "@mui/material/Collapse"
import ListItem from "@mui/material/ListItem"
import ListItemIcon from "@mui/material/ListItemIcon"
import ListItemText from "@mui/material/ListItemText"
import Icon from "@mui/material/Icon"
// ThreeD Garden components
import MDBox from "~/components/mui/MDBox"
// Custom styles for the SidenavCollapse
import {
collapseItem,
collapseIconBox,
collapseIcon,
collapseText,
collapseArrow,
} from "~/components/elements/Sidenav/styles/sidenavCollapse"
// ThreeD Garden context
import { useMaterialUIController } from "~/context"
// Declaring props types for SidenavCollapse
interface Props {
icon: ReactNode
name: string
children?: ReactNode
active?: Boolean
noCollapse?: Boolean
open?: Boolean
[key: string]: any
}
function SidenavCollapse({
icon,
name,
children,
active,
noCollapse,
open,
...rest
}: Props): JSX.Element {
const [controller] = useMaterialUIController()
const { miniSidenav, transparentSidenav, whiteSidenav, darkMode } = controller
return (
<>
collapseItem(theme, {
active,
transparentSidenav,
whiteSidenav,
darkMode,
})
}>
collapseIconBox(theme, {
transparentSidenav,
whiteSidenav,
darkMode,
})
}>
{typeof icon === "string" ? (
collapseIcon(theme, { active })}>
{icon}
) : (
icon
)}
collapseText(theme, {
miniSidenav,
transparentSidenav,
whiteSidenav,
active,
})
}
/>
collapseArrow(theme, {
noCollapse,
transparentSidenav,
whiteSidenav,
miniSidenav,
open,
active,
darkMode,
})
}>
expand_less
{children && (
{children}
)}
>
)
}
// Declaring default props for SidenavCollapse
SidenavCollapse.defaultProps = {
active: false,
noCollapse: false,
children: false,
open: false,
}
export default SidenavCollapse