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.
Aaron
Adelle
Aliza
Alvis
@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.
Rasheedside
New Jasonfort
Faheyberg
Port Ceciliabury
New Irving
Hillaryview
Lake Louie
Port Birdieview
West Dessieberg
North Courtney
McLaughlinside
Sawaynborough
North Franco
Camylleview
West Saige
South Garryfort
Friesenborough
Hallieville
Melanybury
New Branthaven
East Torrancebury
Ayanaside
West Boyd
Mistybury
Littleton
Weissnatland
Janellemouth
Port Louveniamouth
Doylebury
Waelchiland
Rodriguezland
Lake Anais
South Jennie
Chadrickberg
Agustinview
South Marcel
South Garrickfort
Eichmanntown
Xanderborough
Carrollview
Robbiestad
New Maximemouth
Port Jalon
West Brainshire
South Carriefurt
East Ola
New Sonny
Collierside
Kevinberg
Chloeport
New Daleton
Vestatown
South Marianberg
West Rosaliaview
Weissnatland
Romanmouth
New Robertafort
Patfurt
Lake Mariana
Lake Graysonburgh
Barneybury
New Francesca
New Alfredoburgh
South Rosalindafurt
North Blake
Terrellton
Port Myrtisland
West Doviestad
North Raoulfurt
Dallinhaven
Lake Elvie
Travonland
Abbottside
Clairefort
New Olga
Lednerton
West Madonna
Lake Sincerebury
South Nikki
Lake Thomas
North Blancaland
Dietrichchester
Port Barbarahaven
Hirtheport
Lake Aylinstad
New Johannaport
Hellerton
Alexandriaside
West Vicentefort
Barrowsstad
New Arjun
North Kailey
Lake Savannabury
East Darlene
West Ebbamouth
Leannborough
North Icie
West Josiahhaven
West Emilialand
Port Kylie
@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 | Brannon | Rasheedside |
| 2 | Dovie | New Jasonfort |
| 3 | Shyann | Faheyberg |
| 4 | Aaron | Port Ceciliabury |
@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 | ||||
|---|---|---|---|---|---|
| 4 | Aaron |
jacobson.zita
|
Port Ceciliabury | ||
|
Hello, Aaron!
|
|||||
| 62 | Adelle |
waino.bahringer
|
New Francesca | ||
|
Hello, Adelle!
|
|||||
| 17 | Aliza |
cory81
|
Friesenborough | ||
|
Hello, Aliza!
|
@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