Navigation
breadcrumb
Shows the path to the current resource as a hierarchy of links.
<x-ui.breadcrumb>
<x-ui.breadcrumb.list>
<x-ui.breadcrumb.item>
<x-ui.breadcrumb.link href="#">Home</x-ui.breadcrumb.link>
</x-ui.breadcrumb.item>
<x-ui.breadcrumb.separator />
<x-ui.breadcrumb.item>
<x-ui.breadcrumb.link
href="#">Components</x-ui.breadcrumb.link>
</x-ui.breadcrumb.item>
<x-ui.breadcrumb.separator />
<x-ui.breadcrumb.item>
<x-ui.breadcrumb.page>Breadcrumb</x-ui.breadcrumb.page>
</x-ui.breadcrumb.item>
</x-ui.breadcrumb.list>
</x-ui.breadcrumb>
Installation
php artisan ui:add breadcrumb
1. Install dependencies
- composer:
gehrisandro/tailwind-merge-laravel
2.
Copy each file into
resources/views/components/ui/
resources/views/components/ui/breadcrumb/index.blade.php
resources/views/components/ui/breadcrumb/list.blade.php
@props([])
@php
$classes = \TailwindMerge\Laravel\Facades\TailwindMerge::merge(
'flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5',
$attributes->get('class'),
);
@endphp
<ol {{ $attributes->except('class')->merge(['class' => $classes]) }}>
{{ $slot }}
</ol>
resources/views/components/ui/breadcrumb/item.blade.php
@props([])
@php
$classes = \TailwindMerge\Laravel\Facades\TailwindMerge::merge(
'inline-flex items-center gap-1.5',
$attributes->get('class'),
);
@endphp
<li {{ $attributes->except('class')->merge(['class' => $classes]) }}>
{{ $slot }}
</li>
resources/views/components/ui/breadcrumb/link.blade.php
@props([
'href' => '#',
])
@php
$classes = \TailwindMerge\Laravel\Facades\TailwindMerge::merge(
'transition-colors hover:text-foreground',
$attributes->get('class'),
);
@endphp
<a href="{{ $href }}"
{{ $attributes->except('class')->merge(['class' => $classes]) }}>
{{ $slot }}
</a>
resources/views/components/ui/breadcrumb/page.blade.php
@props([])
@php
$classes = \TailwindMerge\Laravel\Facades\TailwindMerge::merge(
'font-normal text-foreground',
$attributes->get('class'),
);
@endphp
<span role="link" aria-disabled="true" aria-current="page"
{{ $attributes->except('class')->merge(['class' => $classes]) }}>
{{ $slot }}
</span>
resources/views/components/ui/breadcrumb/separator.blade.php
@props([])
@php
$classes = \TailwindMerge\Laravel\Facades\TailwindMerge::merge(
'[&>svg]:size-3.5',
$attributes->get('class'),
);
@endphp
<li role="presentation" aria-hidden="true"
{{ $attributes->except('class')->merge(['class' => $classes]) }}>
@if ($slot->isNotEmpty())
{{ $slot }}
@else
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round" aria-hidden="true">
<path d="m9 18 6-6-6-6" />
</svg>
@endif
</li>
resources/views/components/ui/breadcrumb/ellipsis.blade.php
@props([])
@php
$classes = \TailwindMerge\Laravel\Facades\TailwindMerge::merge(
'flex size-9 items-center justify-center',
$attributes->get('class'),
);
@endphp
<span role="presentation" aria-hidden="true"
{{ $attributes->except('class')->merge(['class' => $classes]) }}>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round" class="size-4">
<circle cx="12" cy="12" r="1" />
<circle cx="19" cy="12" r="1" />
<circle cx="5" cy="12" r="1" />
</svg>
<span class="sr-only">More</span>
</span>
Usage
<x-ui.breadcrumb>
<x-ui.breadcrumb.list>
<x-ui.breadcrumb.item>
<x-ui.breadcrumb.link href="/">Home</x-ui.breadcrumb.link>
</x-ui.breadcrumb.item>
<x-ui.breadcrumb.separator />
<x-ui.breadcrumb.item>
<x-ui.breadcrumb.page>Current page</x-ui.breadcrumb.page>
</x-ui.breadcrumb.item>
</x-ui.breadcrumb.list>
</x-ui.breadcrumb>
Pure markup, no JS. Compose <x-ui.breadcrumb><x-ui.breadcrumb.list> with .item, .link, .page, .separator, .ellipsis. The .separator renders a chevron by default or its slot if provided.