import React, { useCallback } from "react" import Collapsible from "react-collapsible" import { NavLink } from "react-router-dom" import Badge from "../../fundamentals/badge" type SidebarMenuSubitemProps = { pageLink: string text: string } type SidebarMenuItemProps = { pageLink: string text: string icon: JSX.Element triggerHandler: () => any subItems?: SidebarMenuSubitemProps[] isNew?: boolean } const SidebarMenuItem: React.FC & { SubItem: (props: SidebarMenuSubitemProps) => JSX.Element } = ({ pageLink, icon, text, triggerHandler, subItems = [], isNew, }: SidebarMenuItemProps) => { const styles = "group py-1.5 my-0.5 rounded-rounded flex text-grey-50 hover:bg-grey-10 items-center px-2" const activeStyles = "bg-grey-10 is-active" const classNameFn = useCallback( ({ isActive }) => (isActive ? `${styles} ${activeStyles}` : styles), [] ) return ( {icon} {text} {isNew && ( New )} } > {subItems?.length > 0 && subItems.map(({ pageLink, text }) => ( ))} ) } const SubItem = ({ pageLink, text }: SidebarMenuSubitemProps) => { const styles = "py-0.5 px-1 my-0.5 rounded-base flex hover:bg-grey-10" const activeStyles = "bg-grey-10 font-semibold" const classNameFn = useCallback( ({ isActive }) => (isActive ? `${styles} ${activeStyles}` : styles), [] ) return ( {text} ) } SidebarMenuItem.SubItem = SubItem export default SidebarMenuItem