@props(['mobile' => false]) @php use App\Models\Package; use App\Models\Vendor; $user = auth()->user(); $path = fn (string $route) => parse_url(route($route), PHP_URL_PATH) ?: '/'; // In the desktop sidebar, labels collapse to icons (pure CSS, see the sidebar-collapsed // variant in app.css); the mobile drawer never collapses. $hideWhenCollapsed = $mobile ? '' : 'sidebar-collapsed:hidden'; $groups = [ [ 'key' => 'customers', 'label' => 'Customers', 'icon' => 'users', 'route' => 'customers.index', 'visible' => $user->can('customer.view'), 'items' => [ ['label' => 'All Customers', 'route' => 'customers.index', 'visible' => true, 'exact' => false], ['label' => 'Add Customer', 'route' => 'customers.create', 'visible' => $user->can('customer.create'), 'exact' => true], ], ], [ 'key' => 'vendors', 'label' => 'Vendors', 'icon' => 'building-office-2', 'route' => 'vendors.index', 'visible' => $user->can('vendor.view'), 'items' => [ ['label' => 'All Vendors', 'route' => 'vendors.index', 'visible' => true, 'exact' => false], ['label' => 'Add Vendor', 'route' => 'vendors.create', 'visible' => $user->can('create', Vendor::class), 'exact' => true], ], ], [ 'key' => 'catalog', 'label' => 'Services & Packages', 'icon' => 'cube', 'route' => 'packages.index', 'visible' => $user->can('service.view') || $user->can('package.view'), 'items' => [ ['label' => 'Service Master', 'route' => 'services.index', 'visible' => $user->can('service.view'), 'exact' => false], ['label' => 'Packages', 'route' => 'packages.index', 'visible' => $user->can('package.view'), 'exact' => false], ['label' => 'Add Package', 'route' => 'packages.create', 'visible' => $user->can('create', Package::class), 'exact' => true], ], ], [ 'key' => 'sellers', 'label' => 'Sellers', 'icon' => 'identification', 'route' => 'sellers.index', 'visible' => $user->can('seller.view'), 'items' => [ ['label' => 'All Sellers', 'route' => 'sellers.index', 'visible' => true, 'exact' => false], ['label' => 'Add Seller', 'route' => 'sellers.create', 'visible' => $user->can('seller.create') && ! $user->isRecordRestricted(), 'exact' => true], ], ], [ 'key' => 'work-orders', 'label' => 'Work Orders', 'icon' => 'clipboard-document-list', 'route' => 'work-orders.index', 'visible' => $user->can('work-order.view'), 'items' => [ ['label' => 'All Work Orders', 'route' => 'work-orders.index', 'visible' => true, 'exact' => false], ['label' => 'Add Work Order', 'route' => 'work-orders.create', 'visible' => $user->can('work-order.create'), 'exact' => true], ['label' => 'Upcoming Deadlines', 'route' => 'work-orders.upcoming', 'visible' => true, 'exact' => true], ['label' => 'Overdue Work Orders', 'route' => 'work-orders.overdue', 'visible' => true, 'exact' => true], ['label' => 'Completed Work Orders', 'route' => 'work-orders.completed', 'visible' => true, 'exact' => true], ], ], ]; $admin = [ ['label' => 'Resellers / Sub-Resellers', 'route' => 'admin.organizations.index', 'icon' => 'building-office', 'visible' => $user->can('organization.view')], ['label' => 'Users', 'route' => 'admin.users.index', 'icon' => 'user-group', 'visible' => $user->can('user.view')], ['label' => 'Roles & Permissions', 'route' => 'admin.roles.index', 'icon' => 'key', 'visible' => $user->can('role.manage')], ['label' => 'Audit Logs', 'route' => 'admin.audit-logs.index', 'icon' => 'shield-check', 'visible' => $user->can('audit.view')], ['label' => 'Settings', 'route' => 'admin.settings', 'icon' => 'cog-6-tooth', 'visible' => $user->can('settings.manage')], ]; $admin = array_filter($admin, fn ($item) => $item['visible']); @endphp