import { ReactNode, useState, useEffect } from 'react'; import { Link, useLocation } from '@remix-run/react'; import { getResponsiveClasses, defaultLayoutConfig, type LayoutConfig } from '~/lib/layout-utils'; interface SidebarProps { isCollapsed: boolean; onToggle: () => void; isMobile: boolean; isOpen: boolean; onClose: () => void; userAuthLevel: number; } interface NavigationItem { name: string; href: string; icon: ReactNode; authLevel?: number; // Minimum auth level required } const navigationItems: NavigationItem[] = [ { name: 'لوحة التحكم', href: '/dashboard', icon: ( ), }, { name: 'العملاء', href: '/customers', icon: ( ), }, { name: 'المركبات', href: '/vehicles', icon: ( ), }, { name: 'زيارات الصيانة', href: '/maintenance-visits', icon: ( ), }, { name: 'المصروفات', href: '/expenses', icon: ( ), authLevel: 2, // Admin and above }, { name: 'التقارير المالية', href: '/financial-reports', icon: ( ), authLevel: 2, // Admin and above }, { name: 'إدارة المستخدمين', href: '/users', icon: ( ), authLevel: 2, // Admin and above }, { name: 'إعدادات النظام', href: '/settings', icon: ( ), authLevel: 2, // Admin and above }, ]; export function Sidebar({ isCollapsed, onToggle, isMobile, isOpen, onClose, userAuthLevel }: SidebarProps) { const location = useLocation(); // Filter navigation items based on user auth level const filteredNavItems = navigationItems.filter(item => !item.authLevel || userAuthLevel <= item.authLevel ); // Close sidebar on route change for mobile useEffect(() => { if (isMobile && isOpen) { onClose(); } }, [location.pathname, isMobile, isOpen, onClose]); if (isMobile) { return ( <> {/* Mobile overlay */} {isOpen && (
)} {/* Mobile Sidebar */}