import React, { useState } from 'react'; import { NavLink } from 'react-router-dom'; import { useDemoStore } from '../../mock/store'; import { useMetadata } from '../../services/hooks/useMetadata'; import { SYSTEM_MODULES } from '../../core/modules/registry'; import { SYSTEM_ROLES } from '../../core/permissions/types'; import { LayoutDashboard, Workflow, Users, ShoppingBag, Boxes, BadgeDollarSign, UserCheck, MessageSquareText, Headset, CheckSquare, Globe, Megaphone, BarChart3, Cpu, Sparkles, Grid, Settings, ChevronLeft, ChevronRight, ShieldAlert, } from 'lucide-react'; const ICON_MAP: Record = { LayoutDashboard: , Workflow: , Users: , ShoppingBag: , Boxes: , BadgeDollarSign: , UserCheck: , MessageSquareText: , Headset: , CheckSquare: , Globe: , Megaphone: , BarChart3: , Cpu: , Sparkles: , Grid: , Settings: , }; export const Sidebar: React.FC = () => { const [collapsed, setCollapsed] = useState(false); const { currentRoleId, getActiveCapabilities } = useDemoStore(); const { entities } = useMetadata(); const customEntities = entities.filter((e) => !e.isSystem); const capabilities = getActiveCapabilities(); const role = SYSTEM_ROLES[currentRoleId]; // Filter modules by role permissions and active capabilities const visibleModules = SYSTEM_MODULES.filter((m) => { // Role check if (!role.allowedModules.includes('*') && !role.allowedModules.includes(m.id)) { return false; } // Capability check if (m.requiredCapability && !capabilities[m.requiredCapability]) { return false; } return true; }); return ( ); };