{{-- The breadcrumb trail — docs/wireframes-v12/view-project.html's `.breadcrumb-nav`: links separated by a "/" span, the last item plain text. Usage, from inside a view that extends layouts.app: @section('breadcrumbs') @endsection A null url renders the label as plain text (the current page). --- CR-2 (spec §12). v12 puts the trail in the header, beside the page title, not at the top of the content — so this now renders into the `breadcrumbs` section that layouts/partials/topbar.blade.php yields. Sections declared by a view are captured before its layout renders, which is why a component in the content file can end up in the header. A page that declares no such section (the dashboard, matching index.html) gets a Home-only trail from the topbar instead; this component is not involved in that case. Separator: v12 writes a literal "/" in a `.sep` span rather than the chevron icon the v10 pack used. Kept as text, and aria-hidden, so a screen reader reads "Projects, Add Project" and not "Projects slash Add Project". --}} @props(['items' => []]) {{-- Only the LAST crumb may claim to be the current page. A trail can legally carry more than one url-less item — CR-7's two listings both render "Home / Administration / ", where Administration is a sidebar section with no screen of its own, exactly as the wireframe writes it — and two elements answering to aria-current="page" is one more current page than a document can have. "Last" is asked positionally, with $loop->last, and not by comparing the label against array_key_last(): the labels ARE the array keys, so a trail that legitimately repeats one ("Projects / … / Projects") would have marked both. Position is the question being asked, so position is what is compared. --}}