import React from 'react'; import { Link } from 'react-router-dom'; import { ChevronRight } from "lucide-react"; import { SidebarMenuItem, SidebarMenuButton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem } from "@/components/ui/sidebar"; import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@/components/ui/collapsible"; import { MenuItem } from './types'; interface SidebarMenuItemProps { item: MenuItem; isActive: (url: string) => boolean; canAccessItem: (itemKey: string) => boolean; isAdmin: boolean; openGroups: { [key: string]: boolean }; onSubmenuToggle: (itemKey: string, currentState: boolean) => void; onMenuItemClick: (hasSubItems?: boolean) => void; getIconProps: (itemKey?: string) => any; } export const AppSidebarMenuItem: React.FC = ({ item, isActive, canAccessItem, isAdmin, openGroups, onSubmenuToggle, onMenuItemClick, getIconProps }) => { const canAccess = canAccessItem(item.key); if (!canAccess && !isAdmin) { return null; // Don't show item if no access } return ( {item.subItems && item.subItems.length > 0 ? ( onSubmenuToggle(item.key, openGroups[item.key] || false)} >
{item.icon && } {item.title}
{item.subItems?.map((subItem) => { // Filter theme customization for non-admins if (subItem.url === "/admin/theme-customization" && !isAdmin) { return null; } return ( onMenuItemClick(false)} > {subItem.icon && } {subItem.title} ); })}
) : ( onMenuItemClick(false)} > {item.icon && } {item.title} )}
); };