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.
Aimee
Annabell
Arlo
Aurelie
@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.
Huelfurt
South Jackyburgh
North Lula
Port Haroldbury
Lebsackside
Considineland
Whiteton
Medhursttown
East Marcside
Keeblershire
Enochside
McGlynnhaven
East Nayelihaven
West Tobin
Gradytown
Kertzmannton
Leonoraton
West Mortimerport
Lowechester
Bergebury
Arnulfoside
McLaughlinchester
Schimmelburgh
Trantowburgh
Krajcikburgh
East Shayleehaven
Domenicafurt
East Millieborough
Loweborough
Pfefferstad
South Mabelhaven
New Nakiahaven
North Ethylshire
Port Nathanialtown
Schambergertown
Rupertville
New Marilyne
Ethelhaven
Haleyville
West Michaelaland
Gloverhaven
Braedenborough
New Haylie
Schultzhaven
Sauershire
Port Ilene
Halvorsonview
West Dulce
North Cordia
North Dovie
Beauburgh
Ullrichmouth
Kayleeport
East Abbie
Port Kaden
New Joanieport
Roobshire
West Kaleighshire
Parisianland
Brendanborough
Johnpaulville
Trompborough
Abnerton
Beattytown
South Baronville
Lake Maciburgh
North Kaseytown
North Alexandro
Hickleport
Lake Alisha
Shaniyashire
Lake Marcos
Lake Theodora
South Jordyn
West Franciscofort
Isabelleburgh
East Leo
Eleazarton
Klinghaven
Ritchiefort
Calihaven
Gilbertborough
Ariellehaven
New Perry
Kutchburgh
Lake Julianneville
Mantechester
East Javonshire
New Kieratown
Connfort
Port Einarmouth
Hudsonview
Williamsonmouth
Douglasmouth
New Randy
West Anyachester
Juwanside
Nicolasborough
Lukaston
Lake Vaughn
@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 | Lukas | Huelfurt |
| 2 | Hortense | South Jackyburgh |
| 3 | Trace | North Lula |
| 4 | Arlo | Port Haroldbury |
@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 | ||||
|---|---|---|---|---|---|
| 64 | Aimee |
linda44
|
Beattytown | ||
|
Hello, Aimee!
|
|||||
| 82 | Annabell |
bonnie31
|
Gilbertborough | ||
|
Hello, Annabell!
|
|||||
| 4 | Arlo |
lura11
|
Port Haroldbury | ||
|
Hello, Arlo!
|
@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