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.
Addie
Aidan
Aiyana
Albin
@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.
Marshallchester
Bergstromfurt
Port Julianne
Lake Marcos
West Adrianna
Daleburgh
Warrenburgh
West Isobel
Okeyside
Port Noah
Krystelton
North Aida
Bruentown
Port Ruthiefurt
Lake Octaviabury
Adoniston
Bradtketown
Sylvesterborough
New Chanceberg
Lindhaven
Port Axelchester
New Esperanzafort
North Lottieside
New Florianport
Bogisichburgh
Selinastad
West Edwin
Braxtonmouth
Wiltonmouth
North Jermey
East Gastonport
Dareland
Gulgowskiborough
Waelchichester
New Tellystad
North Stevieland
East Amiehaven
East Emelie
Armstrongton
South Elsehaven
Port Oswaldton
Thompsonfort
Runteville
East Izabellachester
Bartellview
New Annamaechester
Millsland
South Dejuan
Madisynbury
Trentonport
North Bette
Boydtown
Lake Brionnafurt
South Brauliohaven
Johnpaulton
Janettown
Quitzonton
Sipesbury
Port Kiarra
East Geoville
Elsahaven
Wittingshire
Towneville
Lake Aarontown
Harveyberg
Port Elyseborough
Tromptown
Pamelahaven
Rahulmouth
East Jaquanstad
South Anika
Reichertton
South Irvingville
Yolandaberg
West Morganport
Pfannerstillton
North Jenningsside
Lake Mabelle
Johnsonbury
West Tod
Port Bettye
Othoberg
West Juliaberg
West Bradfordfurt
Lake Raymond
South Meagan
Weimannport
West Glenda
Ilenetown
Orenmouth
Marksstad
Lake Eulalia
Grimesland
Grimesview
Demondmouth
West Eudora
Darionville
North Jamison
North Lennatown
Lindgrenview
@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 | Maia | Marshallchester |
| 2 | Jazmin | Bergstromfurt |
| 3 | Loma | Port Julianne |
| 4 | Lonie | Lake Marcos |
@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 | ||||
|---|---|---|---|---|---|
| 29 | Addie |
stella07
|
Wiltonmouth | ||
|
Hello, Addie!
|
|||||
| 100 | Aidan |
hill.roberto
|
Lindgrenview | ||
|
Hello, Aidan!
|
|||||
| 78 | Aiyana |
alessia.deckow
|
Lake Mabelle | ||
|
Hello, Aiyana!
|
@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