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.
Aileen
Alexandre
Alize
Althea
@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.
West Enola
Mayerborough
Pinkieton
Lake Herminaville
North Lane
Reynaport
Arianeshire
West Aureliamouth
East Lucileside
Bechtelarstad
Bodebury
Port Rhiannonchester
West Claudehaven
Huelschester
Maxieland
Herminastad
South Ottiliefort
Cartertown
East Nora
Huelberg
West Arvid
Lianamouth
Lake Anahiville
Estellside
Port Florida
Port Elda
Port Kellyville
Kiehnstad
Satterfieldview
West Nellaland
Port Emelyshire
East Mason
Brekkeborough
East Sebastianside
West Martinberg
West Caylaland
New Maurice
Jeffrytown
South Nikolas
West Camryn
South Harrisonberg
North Else
Port Alfordfort
South Mozelle
Beattyland
East Makenzie
Braunshire
Mosciskimouth
Daytonfurt
New Ledaport
Asaberg
Marquiseside
West Tressieland
Odellmouth
North Zionbury
Yundtborough
Torphyton
Jeffrybury
New Emilianoview
Clintmouth
Port Jayne
Daughertyburgh
Kuvalistown
Tamiafurt
South Derrickborough
Samirshire
New Bridgette
Wymanview
Lake Zachariah
New Javierside
Greenholtbury
Janamouth
Marksport
Rainaberg
Pfefferstad
Lake Elberttown
Lake Hayden
Lake Angelitafort
Schaeferside
Lake Vellaville
Littlefort
New Anjali
East Stone
New Murphyburgh
South Eusebiostad
Jedidiahtown
Krajcikton
Toniview
South Afton
West Kyla
East Orvalhaven
Ziemannville
New Dallasview
Kihnchester
Raynorchester
Vonmouth
Emeliemouth
Carlichester
Lake Josefa
Lake Zackarychester
@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 | Janick | West Enola |
| 2 | Rahul | Mayerborough |
| 3 | Ana | Pinkieton |
| 4 | Rod | Lake Herminaville |
@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 | ||||
|---|---|---|---|---|---|
| 92 | Aileen |
dean.mcdermott
|
Ziemannville | ||
|
Hello, Aileen!
|
|||||
| 72 | Alexandre |
jordi47
|
Janamouth | ||
|
Hello, Alexandre!
|
|||||
| 61 | Alize |
estell.koch
|
Port Jayne | ||
|
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