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.
Abigail
Adelbert
Alize
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.
Abshiretown
Lake Reytown
South Katarinabury
Lueilwitzfort
South Juana
New Allen
Danielberg
Kerlukeborough
New Liana
Cedrickborough
East Adriannaport
Christiansenfurt
Caterinaside
O'Keefefurt
North Winnifredside
Jacinthemouth
New Milo
Josephville
Bayleeton
New Gailmouth
Howellmouth
Port Petraport
Flatleyshire
Kozeyhaven
Lake Rebeka
Wunschburgh
Lake Lilliana
Lake Augustinetown
North Judytown
Lake Maggieburgh
Corkerymouth
Lake Alfonzo
Aryannafurt
West Angelineview
Port Tedchester
Jakubowskiton
South Shannaberg
New Zora
Rowenaport
Collinsmouth
Beierland
Dietrichmouth
Lake Royalshire
South Bradfordhaven
South Araceli
Ethelport
New Alysa
North Verdieshire
West Desmondmouth
Olenmouth
Stantonside
Schummview
Amarimouth
Port Kurtis
Cierrastad
Lake Vernland
Port Watson
Dustinmouth
East Adeliaberg
West Liamouth
Hodkiewiczmouth
Ezraburgh
South Agnes
West Murphystad
Veumstad
Daynemouth
Langhaven
South Zelma
East Haliestad
South Jarrett
Simonisville
Ankundingfort
Lake Wellington
Juliemouth
Port Aniya
East Maci
Lake Brett
East Kelsi
South Rosettashire
Ursulaberg
New Luciano
Ratkeshire
South Alisaport
Port Erickamouth
West Amani
Craigton
New Nettieshire
Benjaminberg
Alethashire
D'angelostad
Madelynburgh
Betsymouth
Port Juanita
Vadafurt
New Josue
McGlynnbury
South Andre
Flatleyville
Asaberg
New Mohammedfort
@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 | Hannah | Abshiretown |
| 2 | Ayana | Lake Reytown |
| 3 | Osborne | South Katarinabury |
| 4 | Dell | Lueilwitzfort |
@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 | ||||
|---|---|---|---|---|---|
| 34 | Abigail |
ratke.hattie
|
West Angelineview | ||
|
Hello, Abigail!
|
|||||
| 83 | Adelbert |
ubuckridge
|
South Alisaport | ||
|
Hello, Adelbert!
|
|||||
| 27 | Alize |
rlubowitz
|
Lake Lilliana | ||
|
Hello, Alize!
|
@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