}>}> */ public static function groups(User $user): array { $isAdmin = $user->role === 'admin'; $groups = [ [ 'key' => 'workspace', 'label' => 'Workspace', 'items' => [ ['route' => 'dashboard', 'label' => 'Overview', 'activePatterns' => ['dashboard'], 'admin' => false], ['route' => 'projects.index', 'label' => 'Projects', 'activePatterns' => ['projects.*'], 'admin' => true], ], ], [ 'key' => 'workshop', 'label' => 'Workshop', 'items' => [ ['route' => 'printers.index', 'label' => 'Print farm', 'activePatterns' => ['printers.*'], 'admin' => false], ['route' => 'dryer', 'label' => 'Dryer', 'activePatterns' => ['dryer', 'dryer.*'], 'admin' => false], ], ], [ 'key' => 'commerce', 'label' => 'Commerce', 'items' => [ ['route' => 'etsy.index', 'label' => 'Etsy', 'activePatterns' => ['etsy.*'], 'admin' => true], ['route' => 'shipping', 'label' => 'Shipping', 'activePatterns' => ['shipping', 'shipping.*'], 'admin' => true], ], ], [ 'key' => 'administration', 'label' => 'Administration', 'items' => [ ['route' => 'settings.index', 'label' => 'Settings', 'activePatterns' => ['settings.*'], 'admin' => true], ['route' => 'users.index', 'label' => 'Users', 'activePatterns' => ['users.*'], 'admin' => true], ], ], ]; return array_values(array_map( fn (array $group): array => [ 'key' => $group['key'], 'label' => $group['label'], 'items' => array_values(array_filter( array_map(fn (array $item): array => [ 'route' => $item['route'], 'label' => $item['label'], 'activePatterns' => $item['activePatterns'], ], $group['items']), fn (array $item, int $index) => ! $group['items'][$index]['admin'] || $isAdmin, ARRAY_FILTER_USE_BOTH, )), ], $groups, )); } }