import { A, useLocation } from '@solidjs/router'; import { For, Show } from 'solid-js'; import { LayoutGrid, Building2, Briefcase, Users, ShieldCheck, FileText, LayoutDashboard, ClipboardList, UserRoundSearch, UserCircle, Camera, Palette, BookOpen, Code2, BriefcaseBusiness, HandHelping, WalletCards, CreditCard, Tag, Percent, Receipt, ShoppingCart, FileCheck, Star, HeadphonesIcon, BarChart3, ChevronLeft, BadgeCheck, Activity, Film, Utensils, PenTool, Megaphone, } from 'lucide-solid'; type NavItem = { href: string; label: string; icon: any; aliasPrefix?: string; }; const GROUPS: NavItem[][] = [ [ { href: '/admin', label: 'Dashboard', icon: LayoutGrid }, ], [ { href: '/admin/department', label: 'Department Management', icon: Building2 }, { href: '/admin/designation', label: 'Designation Management', icon: Briefcase }, { href: '/admin/roles', label: 'Internal Role Management', icon: ShieldCheck }, { href: '/admin/employees', label: 'Employee Management', icon: Users }, ], [ { href: '/admin/runtime-roles', label: 'External Role Management', icon: ShieldCheck }, { href: '/admin/onboarding-management', label: 'External Onboarding Management', icon: FileText, aliasPrefix: '/admin/onboarding-schemas' }, { href: '/admin/internal-dashboard-management', label: 'Internal Dashboard Management', icon: LayoutDashboard }, { href: '/admin/external-dashboard-management', label: 'External Dashboard Management', icon: LayoutDashboard, aliasPrefix: '/admin/role-ui-configs' }, ], [ { href: '/admin/verification-status', label: 'Verification Management', icon: BadgeCheck }, { href: '/admin/approval', label: 'Approval Management', icon: ClipboardList }, ], [ { href: '/admin/users', label: 'Users Management', icon: UserRoundSearch }, { href: '/admin/company', label: 'Company Management', icon: Building2 }, { href: '/admin/candidate', label: 'Candidate Management', icon: UserCircle }, { href: '/admin/customer', label: 'Customer Management', icon: UserCircle }, ], [ { href: '/admin/photographer', label: 'Photographer Management', icon: Camera }, { href: '/admin/makeup-artist', label: 'Makeup Artist Management', icon: Palette }, { href: '/admin/tutors', label: 'Tutors Management', icon: BookOpen }, { href: '/admin/developers', label: 'Developers Management', icon: Code2 }, { href: '/admin/video-editors', label: 'Video Editor Management', icon: Film }, { href: '/admin/fitness-trainers', label: 'Fitness Trainer Management', icon: Activity }, { href: '/admin/catering-services', label: 'Catering Services Management', icon: Utensils }, { href: '/admin/graphic-designers', label: 'Graphics Designer Management', icon: PenTool }, { href: '/admin/social-media-managers', label: 'Social Media Manager Management', icon: Megaphone }, ], [ { href: '/admin/jobs', label: 'Jobs Management', icon: BriefcaseBusiness }, { href: '/admin/leads', label: 'Leads Management', icon: HandHelping }, ], [ { href: '/admin/pricing', label: 'Pricing Management', icon: WalletCards }, { href: '/admin/credit', label: 'Credit Management', icon: CreditCard }, { href: '/admin/coupon', label: 'Coupon Management', icon: Tag }, { href: '/admin/discount', label: 'Discount Management', icon: Percent }, { href: '/admin/tax', label: 'Tax Management', icon: Receipt }, { href: '/admin/order', label: 'Order Management', icon: ShoppingCart }, { href: '/admin/invoice', label: 'Invoice Management', icon: FileCheck }, ], [ { href: '/admin/review', label: 'Review Management', icon: Star }, { href: '/admin/support', label: 'Support Management', icon: HeadphonesIcon }, { href: '/admin/report', label: 'Report Management', icon: BarChart3 }, { href: '/admin/ledger', label: 'Ledger Management', icon: Receipt }, ], ]; export default function AdminSidebar(props: { collapsed: boolean; onToggle: () => void; onNavigate?: () => void; adminName: string; adminInitials: string; }) { const location = useLocation(); const isActive = (item: NavItem) => { if (location.pathname === '/admin') return item.href === '/admin'; if (item.href === '/admin') return false; if (item.aliasPrefix && location.pathname.startsWith(item.aliasPrefix)) return true; return location.pathname === item.href || location.pathname.startsWith(`${item.href}/`); }; return ( ); }