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.
Ada
Adah
Adeline
Aimee
@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.
Sawaynview
Port Cydney
North Jensen
Greenholtburgh
New Pierce
Glovershire
North Lyric
South Zita
East Phyllis
Jenkinsland
North Lorenz
Port Graciela
North Araceliport
South Jerrellside
East Leatha
Schuylerside
South Davinview
East Eliantown
West Shirleyton
South Angeline
North Felipa
Lake Reidland
Lilianland
South Sammyborough
Heidenreichborough
Jadonmouth
Caylashire
Bednarview
Ratkefort
West Violachester
Torpland
Sydneyburgh
Hodkiewiczborough
Port Jadonmouth
Geovannifurt
DuBuqueland
Broderickshire
Lake Schuyler
Lake Elouise
West Ken
Dustinfort
Lake Krystina
Karliport
East Maximilliastad
North Cleo
Lake Mckenna
Port Patriciaberg
Neilborough
Mollyton
Schultzfort
Port Christop
Hayesview
Port Bennettbury
Deronborough
West Cicero
Streichfurt
East Devanbury
Port Antonina
North Manley
West Johnnyville
Lake Jaquanchester
New Deliashire
North Ansley
Hahnshire
Hoppetown
Lolitachester
Giovannahaven
West Lilian
Port Ashly
Ricefurt
Cristianhaven
Port Kaseymouth
West Marciatown
New Shanaton
North Jesusside
Theronside
Katelynborough
Budville
Henriview
Hagenesside
New Alfonsoburgh
Port Bella
Bryonside
Moorestad
Bartolettiport
North Vicenta
Lake Jeannechester
West Cayla
Rahulchester
West Lelandton
North Harley
Annaton
Harmonyborough
Adamsview
West Eveline
Arvidview
Port Jadaborough
Stantonmouth
West Jillianchester
Lake Octaviashire
@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 | Vernice | Sawaynview |
| 2 | Casey | Port Cydney |
| 3 | Merritt | North Jensen |
| 4 | Darrick | Greenholtburgh |
@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 | ||||
|---|---|---|---|---|---|
| 29 | Ada |
ugulgowski
|
Ratkefort | ||
|
Hello, Ada!
|
|||||
| 63 | Adah |
myrl.wiza
|
North Ansley | ||
|
Hello, Adah!
|
|||||
| 46 | Adeline |
qbeer
|
Lake Mckenna | ||
|
Hello, Adeline!
|
@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