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.
Aaliyah
Adah
Adelle
Alanna
@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.
South Luciano
Micaelaland
West Clementine
Pfannerstillport
New Kiera
Elisefurt
Stantonstad
Bethside
Winnifredtown
West Katrinestad
Marvinfurt
Kenville
Port Josue
Rutherfordburgh
Lake Angelville
East Lizzieport
Fernemouth
East Koryhaven
South Joanchester
Port Johathanland
New Muhammadburgh
Lake Marion
New Bennett
New Caitlyn
Langchester
Port Claudeton
Othaton
West Fiona
West Roselyn
Myriamtown
Bessieton
Morarfurt
Lake Sydnieborough
South Catalinaborough
North Ardella
North Davinbury
Wilkinsonstad
East Maggiefort
Schowalterside
Omerfort
Domenicabury
Krystinaton
Kobymouth
Kubview
East Landen
Mavisburgh
Braunmouth
Port Chayaberg
Reichertbury
East Warren
West Daphnee
Karinamouth
Marktown
Chanelletown
Port Destany
Mabelleton
Port Meggiehaven
Handburgh
New Price
Millshaven
Aureliamouth
Budfurt
East Viola
Katelinchester
Stromanborough
Rauland
Ceciliamouth
Jerdefurt
Pacochamouth
Runtestad
South Josianeland
Magdalenashire
New Bulah
New Kattie
Karineborough
Julianaburgh
North Gerry
East Alyciaview
Raynorside
Elysefort
West Wilfredoville
Jarvisshire
Baileyfurt
O'Reillyview
East Filomena
Lake Ernestine
Wizaburgh
Lake Jeanetteshire
Port Reyesview
Port Saige
Lamarport
East Simone
East Katharina
East Chelsea
Rogerton
West Freda
Port Amyburgh
Graycetown
Raynorchester
Conradbury
@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 | Cletus | South Luciano |
| 2 | Dashawn | Micaelaland |
| 3 | Kip | West Clementine |
| 4 | Myah | Pfannerstillport |
@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 | ||||
|---|---|---|---|---|---|
| 63 | Aaliyah |
carolanne.braun
|
East Viola | ||
|
Hello, Aaliyah!
|
|||||
| 83 | Adah |
yrunte
|
Baileyfurt | ||
|
Hello, Adah!
|
|||||
| 53 | Adelle |
nikolas.champlin
|
Marktown | ||
|
Hello, Adelle!
|
@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