{{-- The navigation inside one area of an app — the sections of settings, of an admin — which is a single destination in the app's own navigation. `items`, a list of `['title' => …, 'url' => …]` with an optional `icon`, `active` and `badge` (an item is current when `active` is true, or when its `url` is the request's). From `sm` they are M3's secondary tabs as links, the current one underlined; below `sm`, where a row of them never fits, a button naming the current section opens a menu of all of them. The same list is rendered for both, and CSS shows one. A row too long for its column wraps onto a grid rather than scrolling: below `xl` five or six sections go 3 + 3 and seven or more go four to a row — tabs that scroll hid the last sections on a tablet. `label` names the navigation ("Sections"). Links use `wire:navigate` unless `no-wire-navigate`. --}} @props([ 'items' => [], 'label' => null, 'noWireNavigate' => false, ]) @php $label ??= __('Sections'); $isCurrent = fn (array $item): bool => ($item['active'] ?? false) || (filled($item['url'] ?? null) && url()->current() === url($item['url'])); $current = collect($items)->first($isCurrent) ?? ($items[0] ?? null); $layout = match (true) { count($items) < 5 => 'sm:flex', count($items) < 7 => 'sm:grid sm:grid-cols-3 xl:flex', default => 'sm:grid sm:grid-cols-4 xl:flex', }; @endphp
class(['min-w-0']) }} data-section-nav> @if ($current)
@foreach ($items as $item) @endforeach
@endif