import React, { useState } from "react";
import {
Box,
Collapse,
Group,
ThemeIcon,
UnstyledButton,
rem,
} from "@mantine/core";
import { TbChevronRight } from "react-icons/tb";
import ChildMenu from "./SidebarChildMenu";
import classNames from "./styles/sidebarMenuItem.module.css";
import SidebarMenu from "../types/SidebarMenu";
interface Props {
menu: SidebarMenu;
}
/**
* `MenuItem` is a React functional component that displays an individual menu item.
* It can optionally include a collapsible sub-menu for items with children.
*
* @param props - The component props.
* @param props.menu - The menu item data to display.
* @returns A React element representing an individual menu item.
*/
export default function MenuItem({ menu }: Props) {
const hasChildren = Array.isArray(menu.children);
const [opened, setOpened] = useState(false);
const toggleOpenMenu = () => {
setOpened((prev) => !prev);
};
// Mapping children menu items if available
const subItems = (hasChildren ? menu.children! : []).map((child, index) => (
));
return (
<>
{/* Main Menu Item */}
{/* Icon and Label */}
{menu.label}
{/* Chevron Icon for collapsible items */}
{hasChildren && (
)}
{/* Collapsible Sub-Menu */}
{hasChildren && {subItems}}
>
);
}