



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.
Adriana
Amaya
Anna
Antonio
@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.
New Asa
East Bryonland
Lorenzamouth
Koeppstad
McCulloughberg
Deontemouth
West Frida
Nicolasfurt
Alyshachester
Port Ronaldo
Izabellastad
Brownstad
Lorenhaven
Wolffborough
Murazikborough
Batzview
Lake Myronview
West Eudoraport
Henryshire
New Isabelleside
North Sibylborough
Streichshire
Greenton
South Maximilianstad
Clarkville
Townechester
East Chadrickmouth
Jacobsfurt
Lake Brice
Pollyport
North Abigail
Elseland
West Effie
Stantonstad
Port Fern
West Tabitha
Lake Vergie
Mullermouth
South Abbeymouth
Andersonshire
East Rosaleefurt
Priceside
Eleonoreview
New Vivien
Port Aubrey
Jacquelynhaven
Erastad
Kutchstad
Paucekstad
Weimannfort
New Braulioburgh
Izabellafurt
Hallestad
North Carol
Lake Frederikhaven
East Jakeside
Arvidport
Abernathyport
Wintheiserborough
Wittingview
Dickinsonstad
Stammland
New Lottiemouth
South Jayceville
South Taya
Schneiderbury
West Birdie
South Maxime
West Franz
Gaylordton
Stokesstad
Paolomouth
North Bradley
Daneberg
Gutkowskiview
Bartellchester
Tyriquestad
Lake Margarett
Felicityburgh
Ayanaburgh
Geraldtown
Amariland
Wintheiserbury
Turcotteland
Lake Lesley
East Laura
Crawfordview
Lake Danielaberg
East Grahamside
West Americochester
Aminaside
South Rory
South Winston
Port Kiera
East Waldo
Lake Lyric
Deborahborough
New Tryciaborough
Mooretown
Hyattside
@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 | Stefanie | New Asa |
2 | Oran | East Bryonland |
3 | Claude | Lorenzamouth |
4 | Lolita | Koeppstad |
@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 | ||||
---|---|---|---|---|---|
45 | Adriana |
savion.ziemann
|
Port Aubrey | ||
Hello, Adriana!
|
|||||
98 | Amaya |
lysanne99
|
New Tryciaborough | ||
Hello, Amaya!
|
|||||
84 | Anna |
satterfield.araceli
|
Turcotteland | ||
Hello, Anna!
|
@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