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.
Abdiel
Adah
Aisha
Alanna
@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.
Durganmouth
South Elisha
Delilahview
South Haydenmouth
West Ellen
Roobport
North Ronaldo
Yoshikoton
Port Titoton
New Bernieceburgh
South Andreanne
Natalieburgh
Medhurstberg
Bartolettiland
North Daphneybury
South Lorenzofurt
South Emelie
Lake Madelynnshire
Buckridgeside
Velmaview
East Jillianfurt
Lake Katelinport
South Carolina
East Myrltown
South Felipa
Sipesfurt
Zemlakmouth
Gerholdhaven
Abernathyhaven
North Addison
Grantmouth
Carmellaville
Port Elenor
Coltmouth
Port Tomasa
West Ashleehaven
Lebsackside
East Landen
West Maximillia
Weimannmouth
Ernserport
Coraliechester
Port Mary
Nathanielton
Bauchstad
Lake Phyllisshire
DuBuquetown
Port Kenny
North Meghan
Port Armanishire
South Cynthiastad
West Paolofurt
Lake Ronmouth
Lakinstad
Conroytown
West Jessy
Wardburgh
New Jessikachester
Celinebury
Lake Joyshire
Lake Marcton
New Peteville
South Leonelport
East Maebury
Weimannton
North Wilhelmine
Luettgenfort
South Ledaville
New Thea
New Elza
Dallinchester
Hettiebury
West Name
Braxtonchester
Theresaville
Estaside
Kaitlynbury
Aureliaview
Taureanfurt
Rickborough
West Saul
North Keonshire
Alfredaview
East Stanton
Dwightfurt
Rathside
Josieburgh
West Audra
North Garettborough
Beierfort
Sengerstad
Rennerport
Gianniview
South Cade
Annetteport
New Audreanne
Lake Isac
South Caramouth
West Alexandrea
West Pedroburgh
@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 | Skyla | Durganmouth |
| 2 | Geovanni | South Elisha |
| 3 | Alanna | Delilahview |
| 4 | Ola | South Haydenmouth |
@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 | Abdiel |
ruthie11
|
Lebsackside | ||
|
Hello, Abdiel!
|
|||||
| 72 | Adah |
lolita46
|
Hettiebury | ||
|
Hello, Adah!
|
|||||
| 83 | Aisha |
cynthia.shields
|
Alfredaview | ||
|
Hello, Aisha!
|
@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