Gorgeous UI components for Livewire
powered by daisyUI and Tailwind
Be amazed at how much you can achieve with minimal effort.
Demos
Lists
@php $users = App\Models\User::take(3)->get();
@endphp
@foreach($users as $user)
<x-list-item :item="$user" sub-value="username" link="/docs/installation">
<x-slot:actions>
<x-button icon="o-trash" wire:click="delete({{ $user->id }})" spinner />
</x-slot:actions>
</x-list-item>
@endforeach
Multi selection
No results found.
Adolphus
Alana
Alek
Alia
@php $users = $this->users;
@endphp
<x-choices
label="Users - server side"
wire:model="selected_users"
:options="$users"
icon="o-bolt"
hint="Search happens on server side"
searchable />
No results found.
Abshirechester
New Therese
D'Amoreshire
South Destiney
New Okey
North Kraigport
Grimesbury
South Sallymouth
Wunschton
New Christyburgh
New Allisonstad
Adolfoland
Port Nash
Berryhaven
Boylechester
Schinnerland
Ameliachester
Pfannerstillland
North Theotown
East Lylafurt
East Humbertoland
East Keshawn
South Peggieberg
Giovannystad
New Marjorie
Port Jonastown
Lorenaview
Kshlerinshire
South Enolaberg
South Rosemary
West Beth
North Toychester
South Melyssa
Camillaborough
Shieldstown
East Tomasa
Lake Ruthieburgh
Richiestad
Malikaview
Willmsburgh
Hobartport
Sheafort
Lake Madonnaside
East Sunnyhaven
Larkinport
Lake Fleta
Schowalterville
Jefferyside
Lake Romaine
Dickensbury
Brisafurt
Port Melyssashire
North Meghanton
Daronville
Aufderharbury
West Carlie
South Lolita
Myrlmouth
Farrellmouth
Lake Jarvisville
Hermistontown
South Conniemouth
Marisaview
Reystad
Elenorview
New Kirk
East Gaston
New Myrna
Mantefurt
Langfort
North Patience
Boganchester
South Domenico
New Lavonneton
Jadynberg
Nikkotown
Marquesfurt
North Tianaton
West Adolphustown
East Taryn
Bechtelarstad
Claymouth
South Roslyn
Lake Gladysmouth
Oberbrunnerchester
South Dustychester
New Bobbyside
Janieshire
Stewarthaven
East Camilla
Lake Larissaville
Satterfieldhaven
Wittingberg
Hildegardport
North Jacynthe
East Kendrick
Craigbury
New Helmer
New Elton
Zionshire
@php $cities = App\Models\City::all();
@endphp
<x-choices-offline
label="Cities - frontend side"
wire:model="selected_cities"
:options="$cities"
icon="s-bolt-slash"
hint="Search happens on frontend side"
searchable />
Forms
@php $cities = App\Models\City::take(3)->get();
$roles = [
['id' => 1 , 'name' => 'Administrator', 'hint' => 'Can do anything.' ],
['id' => 2 , 'name' => 'Editor', 'hint' => 'Can not delete.' ],
];
@endphp
<x-form wire:submit="save">
<x-input label="Name" wire:model="name" icon="o-user" placeholder="Full name" />
<x-input label="Amount" wire:model="amount" prefix="USD" money />
<x-select label="City" wire:model="city_id" icon="o-flag" :options="$cities" />
<x-range label="Level" wire:model="level" hint="Select a level" class="range-xs" />
<x-toggle label="E-mails" wire:model="email" hint="No spam, please." right />
<x-slot:actions>
<x-button label="Cancel" />
<x-button label="Save" class="btn-primary" type="submit" spinner="save" />
</x-slot:actions>
</x-form>
Dialogs
Hello!
Click outside, on `CANCEL` button or `CLOSE` icon to close.
@php $showDrawer = $this->showDrawer;
@endphp
<x-button label="Open Drawer" wire:click="$toggle('showDrawer')" class="btn-primary btn-block" /><x-drawer wire:model="showDrawer" title="Hello!" with-close-button class="w-11/12 lg:w-1/3">
Click outside, on `CANCEL` button or `CLOSE` icon to close.
<x-slot:actions>
<x-button label="Cancel" wire:click="$toggle('showDrawer')" />
<x-button label="Confirm" class="btn-primary" />
</x-slot:actions>
</x-drawer>
@php $myModal = $this->myModal;
@endphp
<x-button label="Open Modal" wire:click="$toggle('myModal')" class="btn-warning btn-block" /> <x-modal wire:model="myModal" title="Hello">
Click outside, press `ESC` or click `CANCEL` button to close.
<x-slot:actions>
<x-button label="Cancel" wire:click="$toggle('myModal')" />
<x-button label="Confirm" class="btn-primary" />
</x-slot:actions>
</x-modal>
Easy tables
| # | City | |
|---|---|---|
| 1 | Lupe | Abshirechester |
| 2 | Janae | New Therese |
| 3 | Yasmin | D'Amoreshire |
| 4 | Austin | South Destiney |
@php
use App\Models\User; $users = User::with('city')->take(4)->get();
$headers = [
['key' => 'id', 'label' => '#', 'class' => 'w-1 bg-warning/20'], # <-- CSS
['key' => 'name', 'label' => 'Nice Name', 'class' => 'hidden lg:table-cell'], # <-- responsive
['key' => 'city.name', 'label' => 'City'] # <-- nested object
];
@endphp
<x-table :rows="$users" :headers="$headers" striped />
Full tables
| # | Nice Name | ||||
|---|---|---|---|---|---|
| 37 | Adolphus |
stracke.efrain
|
Lake Ruthieburgh | ||
|
Hello, Adolphus!
|
|||||
| 24 | Alana |
dietrich.mireille
|
Giovannystad | ||
|
Hello, Alana!
|
|||||
| 15 | Alek |
floy.shields
|
Boylechester | ||
|
Hello, Alek!
|
@php
use App\Models\User; // public array $expanded = [];
// public array $sortBy = ['column' => 'name', 'direction' => 'asc'];
$sortBy = $this->sortBy; $expanded = $this->expanded; $users = User::with('city')
->orderBy(...array_values($this->sortBy))
->paginate(3);
// Headers settings
$headers = [
['key' => 'id', 'label' => '#', 'class' => 'w-1'], # <-- CSS
['key' => 'name', 'label' => 'Nice Name'],
['key' => 'username', 'label' => 'Username', 'class' => 'hidden lg:table-cell'], # <--- responsive
['key' => 'city.name', 'label' => 'City', 'sortable' => false, 'class' => 'hidden lg:table-cell'] # <-- nested object
];
@endphp
<x-table
wire:model="expanded" {{-- Controls rows expansion --}}
:headers="$headers"
:rows="$users"
:sort-by="$sortBy" {{-- Make it sortable --}}
link="/docs/components/table?user_id={id}&city={city.name}" {{-- Make rows clickable --}}
expandable {{-- Make it expand --}}
with-pagination {{-- Enable pagination --}}
>
{{-- Expansion slot --}}
@scope('expansion', $user)
<div class="border border-base-content/20 border-dashed rounded p-5 ">
Hello, {{ $user->name }}!
</div>
@endscope
{{-- Actions Slot --}}
@scope('actions', $user)
<x-button icon="o-trash" wire:click="delete({{ $user->id }})" spinner class="btn-circle btn-ghost" />
@endscope
{{-- Cell scope --}}
@scope('cell_username', $user)
<x-badge :value="$user->username" class="badge-primary badge-soft" />
@endscope
</x-table>
Enjoy a full set of UI components ...
LET`S DO IT