import Link from 'next/link'; import Menu from '@/components/menu/Menu'; import { Icon } from '@iconify/react'; import { cn, isPathActive } from '@/lib/helper'; import { useAuth } from '@/services/hooks/useAuth'; export interface SidebarMenuItem { type?: 'item' | 'title'; text: string; link: string; icon?: string; submenu?: SidebarMenuItem[]; permission?: string[]; } interface SidebarMenuItemProps { item: SidebarMenuItem; activeLink: string; } interface SidebarMenuProps { menu: SidebarMenuItem[]; activeLink: string; } const SidebarMenuItem = ({ item, activeLink }: SidebarMenuItemProps) => { const { permissionCheck } = useAuth(); const isItemActive = isPathActive(activeLink, item.link); const isUserPermitted = item.permission ? item.permission?.some((permissionName) => permissionCheck(permissionName)) : true; if (!isUserPermitted) { return null; } const menuItemWithoutSubmenu = (
  • {item.icon && } {item.text}
  • ); if (!item.submenu || item.submenu.length === 0) { return menuItemWithoutSubmenu; } const menuItemWithSubmenu = (
  • {item.icon && } {item.text}
  • ); return menuItemWithSubmenu; }; const SidebarMenu = ({ menu, activeLink }: SidebarMenuProps) => { return ( {menu.map((menuItem, menuIdx) => { return ( ); })} ); }; export default SidebarMenu;