Components
Item
A flexible component for displaying content with media, title, and actions.
php artisan blatui:add item
Notifications
You have 3 unread messages.
<div class="flex w-full max-w-md flex-col gap-6">
<x-ui.item variant="outline">
<x-ui.item-media variant="icon">
<x-lucide-bell-ring />
</x-ui.item-media>
<x-ui.item-content>
<x-ui.item-title>Notifications</x-ui.item-title>
<x-ui.item-description>You have 3 unread messages.</x-ui.item-description>
</x-ui.item-content>
<x-ui.item-actions>
<x-ui.button variant="outline" size="sm">View</x-ui.button>
</x-ui.item-actions>
</x-ui.item>
</div>
Group
@php
$people = [
['name' => 'Sofia Carter', 'email' => '[email protected]', 'initials' => 'SC'],
['name' => 'Jackson Doe', 'email' => '[email protected]', 'initials' => 'JD'],
['name' => 'Amelia Bell', 'email' => '[email protected]', 'initials' => 'AB'],
];
@endphp
<x-ui.item-group class="w-full max-w-md rounded-lg border">
@foreach ($people as $i => $p)
<x-ui.item>
<x-ui.item-media>
<x-ui.avatar><x-ui.avatar-fallback>{{ $p['initials'] }}</x-ui.avatar-fallback></x-ui.avatar>
</x-ui.item-media>
<x-ui.item-content>
<x-ui.item-title>{{ $p['name'] }}</x-ui.item-title>
<x-ui.item-description>{{ $p['email'] }}</x-ui.item-description>
</x-ui.item-content>
<x-ui.item-actions>
<x-ui.button variant="ghost" size="icon-sm" aria-label="Options for {{ $p['name'] }}"><x-lucide-more-horizontal aria-hidden="true" /></x-ui.button>
</x-ui.item-actions>
</x-ui.item>
@if ($i < count($people) - 1)
<x-ui.item-separator />
@endif
@endforeach
</x-ui.item-group>
Link
{{-- Clickable item rows (rendered as links) with a trailing chevron. --}}
<x-ui.item-group class="w-full max-w-md rounded-lg border">
<x-ui.item href="#" class="hover:bg-accent transition-colors">
<x-ui.item-media variant="icon"><x-lucide-user /></x-ui.item-media>
<x-ui.item-content><x-ui.item-title>Account</x-ui.item-title></x-ui.item-content>
<x-ui.item-actions><x-lucide-chevron-right class="text-muted-foreground size-4" /></x-ui.item-actions>
</x-ui.item>
<x-ui.item-separator />
<x-ui.item href="#" class="hover:bg-accent transition-colors">
<x-ui.item-media variant="icon"><x-lucide-credit-card /></x-ui.item-media>
<x-ui.item-content><x-ui.item-title>Billing</x-ui.item-title></x-ui.item-content>
<x-ui.item-actions><x-lucide-chevron-right class="text-muted-foreground size-4" /></x-ui.item-actions>
</x-ui.item>
<x-ui.item-separator />
<x-ui.item href="#" class="hover:bg-accent transition-colors">
<x-ui.item-media variant="icon"><x-lucide-shield /></x-ui.item-media>
<x-ui.item-content><x-ui.item-title>Security</x-ui.item-title></x-ui.item-content>
<x-ui.item-actions><x-lucide-chevron-right class="text-muted-foreground size-4" /></x-ui.item-actions>
</x-ui.item>
</x-ui.item-group>
Variants
Default
A transparent item with no border.
Outline
An item with a visible border.
Muted
An item on a muted surface.
<div class="flex w-full max-w-md flex-col gap-3">
<x-ui.item variant="default">
<x-ui.item-media variant="icon"><x-lucide-bell-ring /></x-ui.item-media>
<x-ui.item-content>
<x-ui.item-title>Default</x-ui.item-title>
<x-ui.item-description>A transparent item with no border.</x-ui.item-description>
</x-ui.item-content>
</x-ui.item>
<x-ui.item variant="outline">
<x-ui.item-media variant="icon"><x-lucide-folder /></x-ui.item-media>
<x-ui.item-content>
<x-ui.item-title>Outline</x-ui.item-title>
<x-ui.item-description>An item with a visible border.</x-ui.item-description>
</x-ui.item-content>
</x-ui.item>
<x-ui.item variant="muted">
<x-ui.item-media variant="icon"><x-lucide-settings /></x-ui.item-media>
<x-ui.item-content>
<x-ui.item-title>Muted</x-ui.item-title>
<x-ui.item-description>An item on a muted surface.</x-ui.item-description>
</x-ui.item-content>
</x-ui.item>
</div>
With Switch
Push notifications
Receive push notifications on this device.
Email updates
Get product news and announcements.
Dark mode
Use the dark theme across the app.
{{-- A settings list — each row has a switch in its actions slot. --}}
<x-ui.item-group class="w-full max-w-md rounded-lg border">
<x-ui.item>
<x-ui.item-media variant="icon"><x-lucide-bell-ring /></x-ui.item-media>
<x-ui.item-content>
<x-ui.item-title>Push notifications</x-ui.item-title>
<x-ui.item-description>Receive push notifications on this device.</x-ui.item-description>
</x-ui.item-content>
<x-ui.item-actions>
<x-ui.switch :checked="true" aria-label="Push notifications" />
</x-ui.item-actions>
</x-ui.item>
<x-ui.item-separator />
<x-ui.item>
<x-ui.item-media variant="icon"><x-lucide-mail /></x-ui.item-media>
<x-ui.item-content>
<x-ui.item-title>Email updates</x-ui.item-title>
<x-ui.item-description>Get product news and announcements.</x-ui.item-description>
</x-ui.item-content>
<x-ui.item-actions>
<x-ui.switch aria-label="Email updates" />
</x-ui.item-actions>
</x-ui.item>
<x-ui.item-separator />
<x-ui.item>
<x-ui.item-media variant="icon"><x-lucide-moon /></x-ui.item-media>
<x-ui.item-content>
<x-ui.item-title>Dark mode</x-ui.item-title>
<x-ui.item-description>Use the dark theme across the app.</x-ui.item-description>
</x-ui.item-content>
<x-ui.item-actions>
<x-ui.switch :checked="true" aria-label="Dark mode" />
</x-ui.item-actions>
</x-ui.item>
</x-ui.item-group>
API Reference
Props, slots and exposed methods for
<x-ui.item>.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
variant |
string
|
'default'
|
Visual style of the row container.
default
outline
muted
|
size |
string
|
'default'
|
Padding and inner gap density of the row.
default
sm
|
href |
string
|
— | When set, the row renders as an <a> link (with hover affordance) instead of a <div>. |
Slots
| Slot | Description |
|---|---|
default |
Row contents, composed from the item sub-components: <x-ui.item-media> (leading icon/avatar/image, variant default|icon|image), <x-ui.item-content> (wrapping <x-ui.item-title> and <x-ui.item-description>), and <x-ui.item-actions> (trailing controls). Wrap multiple items in <x-ui.item-group> and separate them with <x-ui.item-separator>. |