Components
Navigation
Help users move through your app — navbars, sidebars, segmented controls, breadcrumbs, tabs, and steppers.
Segmented
A button group selector for switching between mutually exclusive options. Use for view switchers, filter toggles, and compact option pickers.
Default
segmented-default.blade.php
<x-pajak::segmented> <x-pajak::segmented-option label="All" :active="true" value="all" /> <x-pajak::segmented-option label="Active" value="active" /> <x-pajak::segmented-option label="Archived" value="archived" /> </x-pajak::segmented>
Variants — pill, brand, bordered
segmented-variants.blade.php
@use('Pajak\Ui\Common\Enums\Segmented\SegmentedVariant')
{{-- Pill --}}
<x-pajak::segmented :variant="SegmentedVariant::Pill">
<x-pajak::segmented-option label="PLN" :active="true" value="pln" />
<x-pajak::segmented-option label="EUR" value="eur" />
<x-pajak::segmented-option label="USD" value="usd" />
</x-pajak::segmented>
{{-- Brand --}}
<x-pajak::segmented :variant="SegmentedVariant::Brand">
<x-pajak::segmented-option label="Refund" :active="true" value="refund" />
<x-pajak::segmented-option label="Owed" value="owed" />
<x-pajak::segmented-option label="Even" value="even" />
</x-pajak::segmented>
{{-- Bordered --}}
<x-pajak::segmented :variant="SegmentedVariant::Bordered">
<x-pajak::segmented-option label="Monthly" :active="true" value="monthly" />
<x-pajak::segmented-option label="Yearly" value="yearly" />
</x-pajak::segmented>
With icons & full width
segmented-options.blade.php
{{-- With icons --}}
<x-pajak::segmented>
<x-pajak::segmented-option label="Cards" :active="true" value="cards">
<x-slot:icon>
<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="1" y="4" width="22" height="16" rx="2" ry="2"/><line x1="1" y1="10" x2="23" y2="10"/></svg>
</x-slot:icon>
</x-pajak::segmented-option>
<x-pajak::segmented-option label="List" value="list">
<x-slot:icon>
<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="8" y1="6" x2="21" y2="6"/><line x1="8" y1="12" x2="21" y2="12"/><line x1="8" y1="18" x2="21" y2="18"/><line x1="3" y1="6" x2="3.01" y2="6"/><line x1="3" y1="12" x2="3.01" y2="12"/><line x1="3" y1="18" x2="3.01" y2="18"/></svg>
</x-slot:icon>
</x-pajak::segmented-option>
</x-pajak::segmented>
{{-- Full width --}}
<x-pajak::segmented :full="true">
<x-pajak::segmented-option label="Personal" :active="true" value="personal" />
<x-pajak::segmented-option label="Joint" value="joint" />
<x-pajak::segmented-option label="Business" :disabled="true" value="business" />
</x-pajak::segmented>
Tabs
Tab navigation with four layout variants — underline, pill, segmented, and vertical. JavaScript handles click-to-activate; panel visibility is managed by the consumer.
Underline (default)
tabs-default.blade.php
<x-pajak::tabs> <x-pajak::tab label="Overview" :active="true" /> <x-pajak::tab label="Documents" :count="12" /> <x-pajak::tab label="Activity" /> <x-pajak::tab label="Archive" :disabled="true" /> </x-pajak::tabs>
Pill & Segmented variants
Pill
Segmented
tabs-variants.blade.php
@use('Pajak\Ui\Common\Enums\Tabs\TabsVariant')
<div class="ex-col ex-col--gap-lg">
<div>
<p class="ex-label">Pill</p>
<x-pajak::tabs :variant="TabsVariant::Pill">
<x-pajak::tab label="All" :active="true" />
<x-pajak::tab label="In progress" />
<x-pajak::tab label="Submitted" />
</x-pajak::tabs>
</div>
<div>
<p class="ex-label">Segmented</p>
<x-pajak::tabs :variant="TabsVariant::Segmented">
<x-pajak::tab label="Cards" :active="true" />
<x-pajak::tab label="List" />
<x-pajak::tab label="Table" />
</x-pajak::tabs>
</div>
</div>
Stepper
Multi-step progress indicator with four variants: horizontal, pill, vertical, and bar. Purely presentational — state is driven by PHP props.
Horizontal (default)
-
Identity Verified
-
Income
-
3
Deductions Add reliefs
-
4
Review
stepper-horizontal.blade.php
@use('Pajak\Ui\Common\Enums\Stepper\StepperStepState')
<x-pajak::stepper>
<x-pajak::stepper-step :step="1" title="Identity" description="Verified" :state="StepperStepState::Done" />
<x-pajak::stepper-step :step="2" title="Income" :state="StepperStepState::Done" />
<x-pajak::stepper-step :step="3" title="Deductions" description="Add reliefs" :state="StepperStepState::Active" />
<x-pajak::stepper-step :step="4" title="Review" :last="true" />
</x-pajak::stepper>
Pill & Bar variants
Pill
Identity
2
Income
3
Review
Bar
stepper-variants.blade.php
@use('Pajak\Ui\Common\Enums\Stepper\StepperStepState')
@use('Pajak\Ui\Common\Enums\Stepper\StepperVariant')
<div class="ex-col ex-col--gap-lg">
<div>
<p class="ex-label">Pill</p>
<x-pajak::stepper :variant="StepperVariant::Pill">
<x-pajak::stepper-step :step="1" title="Identity" :state="StepperStepState::Done" :variant="StepperVariant::Pill" />
<x-pajak::stepper-step :step="2" title="Income" :state="StepperStepState::Active" :variant="StepperVariant::Pill" />
<x-pajak::stepper-step :step="3" title="Review" :variant="StepperVariant::Pill" :last="true" />
</x-pajak::stepper>
</div>
<div>
<p class="ex-label">Bar</p>
<x-pajak::stepper :variant="StepperVariant::Bar" :current="3" :total="5" label="Deductions" />
</div>
</div>