'use client'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; import { cn } from '@/lib/utils'; import { getUserRole } from '@/lib/api'; import { useState, useEffect } from 'react'; import { useSidebar } from '@/lib/SidebarContext'; import ThemeToggle from './ThemeToggle'; interface NavItem { label: string; href: string; icon: string; roles?: string[]; children?: { label: string; href: string }[]; } const navItems: NavItem[] = [ { label: 'Dashboard', href: '/admin/dashboard', icon: '📊', }, { label: 'Benefactors', href: '/admin/benefactors', icon: '👥', roles: ['super-admin', 'admin'], }, { label: 'Agents', href: '/admin/agents', icon: '🤝', roles: ['super-admin', 'admin'], }, { label: 'Kind Boxes', href: '/admin/kind-boxes', icon: '📦', roles: ['super-admin', 'admin'], children: [ { label: 'All Boxes', href: '/admin/kind-boxes' }, { label: 'Create', href: '/admin/kind-boxes/create' }, ], }, { label: 'Kind Box Requests', href: '/admin/kind-box-requests', icon: '📋', roles: ['super-admin', 'admin'], children: [ { label: 'All Requests', href: '/admin/kind-box-requests' }, { label: 'Create', href: '/admin/kind-box-requests/create' }, ], }, { label: 'Refer Times', href: '/admin/refer-times', icon: '⏰', roles: ['super-admin', 'admin'], }, { label: 'My Kind Boxes', href: '/benefactor/kind-boxes', icon: '📦', roles: ['benefactor'], }, { label: 'My Requests', href: '/benefactor/kind-box-requests', icon: '📋', roles: ['benefactor'], }, { label: 'My Addresses', href: '/benefactor/addresses', icon: '📍', roles: ['benefactor'], }, { label: 'Refer Times', href: '/benefactor/refer-times', icon: '⏰', roles: ['benefactor'], }, { label: 'Agent Dashboard', href: '/agent/dashboard', icon: '🎯', roles: ['agent'], }, { label: 'Return Awaiting', href: '/agent/kind-boxes', icon: '📥', roles: ['agent'], }, { label: 'Delivery Awaiting', href: '/agent/kind-box-requests', icon: '📤', roles: ['agent'], }, { label: 'Products', href: '/products', icon: '🛍️', }, { label: 'Cart', href: '/cart', icon: '🛒', }, { label: 'Orders', href: '/orders', icon: '📦', }, { label: 'Campaigns', href: '/campaigns', icon: '🎯', }, { label: 'Wallet', href: '/wallet', icon: '💳', }, { label: 'Patients', href: '/patients', icon: '🏥', roles: ['super-admin', 'admin'], }, { label: 'Drivers', href: '/drivers', icon: '🚗', roles: ['super-admin', 'admin'], }, { label: 'Staff', href: '/staff', icon: '👔', roles: ['super-admin', 'admin'], }, { label: 'Sales Reports', href: '/sales-reports', icon: '📈', roles: ['super-admin', 'admin'], }, { label: 'Gamification', href: '/gamification', icon: '🏆', roles: ['super-admin', 'admin'], }, ]; export default function Sidebar() { const pathname = usePathname(); const [role, setRole] = useState(null); const { collapsed, toggle } = useSidebar(); useEffect(() => { setRole(getUserRole()); }, []); // Don't render sidebar on login or landing page if (pathname === '/login' || pathname === '/') { return null; } const filteredItems = navItems.filter((item) => { if (!item.roles || item.roles.length === 0) return true; return role && item.roles.includes(role); }); const isActive = (href: string) => { return pathname.startsWith(href); }; return ( ); }