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
Adolfo
Alicia
Anna
@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.
Macejkovicmouth
North Dulce
Schmelerland
Hilpertport
Wolfside
Pagacside
Westburgh
West Nathanialside
North Nealton
Pabloland
Braunbury
New Creolaborough
Konopelskiborough
East Jeffreystad
Grahamville
Emardshire
South Emmetbury
Cassieville
Stellahaven
Port Tabithaborough
Kielhaven
Reingerberg
Muellerton
Port Colleenport
New Morton
Rosalindville
South Alvera
Donnellytown
East Janiya
Wilmabury
Port Earnestinefurt
Lake Brenna
Flatleyside
Auroreside
Karolannton
Ziemeview
North Federicoville
Prohaskafurt
Stehrfurt
Bartelltown
South Macy
New Yesenia
North Ryley
Lewland
Izaiahtown
VonRuedenmouth
New Selmermouth
Caesarberg
Wildermanberg
Katelynport
Hunterchester
Schinnerborough
Lake Brock
West Griffinview
Baileymouth
East Mikeburgh
West Bettie
Port Efrain
Ravenfort
Spencerport
Port Vincenzaborough
North Milford
East Korey
Santafort
Durganborough
Stokesshire
Juanitafort
Deionside
New Angelinafort
Schneiderchester
West Billiechester
South Hymanton
Ruthehaven
Port Lester
Michaelfurt
West Javon
West Freda
Juliettown
Kileystad
New Gussie
Lake Jaimeside
Lake Jeffery
Kailynton
South Robb
Lake Mollie
Abigayleside
North Dahlia
Port Ettiebury
East Aaronstad
New Nikolas
Karianneville
Lonfurt
New Abbieborough
Zettaville
Corineborough
Port Norafurt
Bayermouth
Casperbury
Goldentown
Collinsport
@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 | Kali | Macejkovicmouth |
| 2 | Mossie | North Dulce |
| 3 | Felicia | Schmelerland |
| 4 | Molly | Hilpertport |
@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 | ||||
|---|---|---|---|---|---|
| 26 | Abdiel |
augustus36
|
Rosalindville | ||
|
Hello, Abdiel!
|
|||||
| 80 | Adolfo |
crosenbaum
|
New Gussie | ||
|
Hello, Adolfo!
|
|||||
| 64 | Alicia |
kim35
|
Santafort | ||
|
Hello, Alicia!
|
@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