Components
Stepper
Guides users through a multi-step flow — horizontal or vertical, with completed-step checks.
php artisan blatui:add stepper
{{-- Numbered steps with Previous / Next controls. Completed steps show a check. --}}
<x-ui.stepper :value="1" class="w-full max-w-xl">
<x-ui.stepper-nav>
<x-ui.stepper-item :step="1">
<x-ui.stepper-trigger>
<x-ui.stepper-indicator />
</x-ui.stepper-trigger>
<x-ui.stepper-separator />
</x-ui.stepper-item>
<x-ui.stepper-item :step="2">
<x-ui.stepper-trigger>
<x-ui.stepper-indicator />
</x-ui.stepper-trigger>
<x-ui.stepper-separator />
</x-ui.stepper-item>
<x-ui.stepper-item :step="3">
<x-ui.stepper-trigger>
<x-ui.stepper-indicator />
</x-ui.stepper-trigger>
</x-ui.stepper-item>
</x-ui.stepper-nav>
<div class="text-muted-foreground flex h-32 items-center justify-center rounded-md border text-sm">
<span x-text="`Step ${step} of 3`"></span>
</div>
<div class="flex justify-between">
<x-ui.button variant="outline" x-bind:disabled="step === 1" x-on:click="step = Math.max(1, step - 1)">Previous</x-ui.button>
<x-ui.button x-bind:disabled="step === 3" x-on:click="step = Math.min(3, step + 1)">Next</x-ui.button>
</div>
</x-ui.stepper>
Vertical
{{-- Vertical orientation: indicators stacked with a growing rail between them. --}}
<x-ui.stepper :value="2" orientation="vertical" class="w-full max-w-md">
<x-ui.stepper-nav>
<x-ui.stepper-item :step="1">
<x-ui.stepper-trigger class="items-start">
<span class="flex flex-col items-center self-stretch">
<x-ui.stepper-indicator />
<x-ui.stepper-separator />
</span>
<span class="flex flex-col gap-0.5 pt-1.5 pb-6">
<x-ui.stepper-title>Account</x-ui.stepper-title>
<x-ui.stepper-description>Create your account</x-ui.stepper-description>
</span>
</x-ui.stepper-trigger>
</x-ui.stepper-item>
<x-ui.stepper-item :step="2">
<x-ui.stepper-trigger class="items-start">
<span class="flex flex-col items-center self-stretch">
<x-ui.stepper-indicator />
<x-ui.stepper-separator />
</span>
<span class="flex flex-col gap-0.5 pt-1.5 pb-6">
<x-ui.stepper-title>Profile</x-ui.stepper-title>
<x-ui.stepper-description>Set up your profile</x-ui.stepper-description>
</span>
</x-ui.stepper-trigger>
</x-ui.stepper-item>
<x-ui.stepper-item :step="3">
<x-ui.stepper-trigger class="items-start">
<span class="flex flex-col items-center self-stretch">
<x-ui.stepper-indicator />
</span>
<span class="flex flex-col gap-0.5 pt-1.5">
<x-ui.stepper-title>Complete</x-ui.stepper-title>
<x-ui.stepper-description>Finish the setup</x-ui.stepper-description>
</span>
</x-ui.stepper-trigger>
</x-ui.stepper-item>
</x-ui.stepper-nav>
</x-ui.stepper>
With Description
{{-- Title plus a secondary description per step. --}}
<x-ui.stepper :value="2" class="w-full max-w-3xl">
<x-ui.stepper-nav>
<x-ui.stepper-item :step="1">
<x-ui.stepper-trigger>
<x-ui.stepper-indicator />
<span class="flex flex-col gap-0.5">
<x-ui.stepper-title>Account</x-ui.stepper-title>
<x-ui.stepper-description>Create an account</x-ui.stepper-description>
</span>
</x-ui.stepper-trigger>
<x-ui.stepper-separator />
</x-ui.stepper-item>
<x-ui.stepper-item :step="2">
<x-ui.stepper-trigger>
<x-ui.stepper-indicator />
<span class="flex flex-col gap-0.5">
<x-ui.stepper-title>Profile</x-ui.stepper-title>
<x-ui.stepper-description>Set up your profile</x-ui.stepper-description>
</span>
</x-ui.stepper-trigger>
<x-ui.stepper-separator />
</x-ui.stepper-item>
<x-ui.stepper-item :step="3">
<x-ui.stepper-trigger>
<x-ui.stepper-indicator />
<span class="flex flex-col gap-0.5">
<x-ui.stepper-title>Complete</x-ui.stepper-title>
<x-ui.stepper-description>Finish the setup</x-ui.stepper-description>
</span>
</x-ui.stepper-trigger>
</x-ui.stepper-item>
</x-ui.stepper-nav>
</x-ui.stepper>
With Labels
{{-- Each indicator paired with a short label. --}}
<x-ui.stepper :value="2" class="w-full max-w-2xl">
<x-ui.stepper-nav>
<x-ui.stepper-item :step="1">
<x-ui.stepper-trigger>
<x-ui.stepper-indicator />
<x-ui.stepper-title>Details</x-ui.stepper-title>
</x-ui.stepper-trigger>
<x-ui.stepper-separator />
</x-ui.stepper-item>
<x-ui.stepper-item :step="2">
<x-ui.stepper-trigger>
<x-ui.stepper-indicator />
<x-ui.stepper-title>Confirm</x-ui.stepper-title>
</x-ui.stepper-trigger>
<x-ui.stepper-separator />
</x-ui.stepper-item>
<x-ui.stepper-item :step="3">
<x-ui.stepper-trigger>
<x-ui.stepper-indicator />
<x-ui.stepper-title>Done</x-ui.stepper-title>
</x-ui.stepper-trigger>
</x-ui.stepper-item>
</x-ui.stepper-nav>
</x-ui.stepper>