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.
Adeline
Aleen
Anabel
Antone
@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.
Sallystad
South Heath
Cristalport
Daxland
East Calista
West Curtistown
New Buddy
Port Foster
Gerholdville
East Tiffanyberg
Rowemouth
Melvinshire
North Rodgerfort
Shermanbury
Pedroport
Lake Armani
Schinnertown
South Madgeville
New Brandichester
Dessieside
Gerlachborough
Ziemannfort
New Alexieport
Port Donna
Sabrynaport
West Bettie
Pfannerstillstad
East Barrett
Lake Rhiannonborough
Leochester
South Julianaport
Camillemouth
Tyriqueville
Port Clarabelle
Jamaalmouth
Olsonburgh
New Maybellport
Lake Janice
East Francesca
North Lisandro
Boylemouth
Lake Opal
Ondrickaton
New Shaynaport
Port Kareemfurt
East Davebury
New Conradton
East Hughberg
West Erikside
Marvinmouth
Lake Jasminmouth
South Rustyton
Pfefferberg
Port Marcusland
South Brittany
Sadyemouth
Lynchside
Fayland
Kianton
Rosariochester
South Alannaport
Lake Troyside
West Sven
Nolanmouth
East Albaville
Larryton
South Thora
East Maxieland
South Noestad
Guyfort
Mertzland
Alessandroport
Bradtkemouth
West Maymieview
Bernhardstad
Port Henryfurt
East Lindastad
Amaniville
South Norvalton
West Ivaside
North Christ
Kennethstad
New Mallory
Port Tara
North Katrine
Ondrickaland
Schadenmouth
North Cydney
Reichelchester
New Americaland
Port Monica
Jewelstad
North Theresestad
Sengershire
Lake Dane
Lockmanmouth
Lorainechester
Port Cathrynfurt
South Floydtown
Lake Elainaburgh
@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 | Adeline | Sallystad |
| 2 | Stephen | South Heath |
| 3 | Talon | Cristalport |
| 4 | Gaylord | Daxland |
@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 | ||||
|---|---|---|---|---|---|
| 1 | Adeline |
cydney.boehm
|
Sallystad | ||
|
Hello, Adeline!
|
|||||
| 10 | Aleen |
allen.stracke
|
East Tiffanyberg | ||
|
Hello, Aleen!
|
|||||
| 73 | Anabel |
lbailey
|
Bradtkemouth | ||
|
Hello, Anabel!
|
@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