Gorgeous Laravel Blade UI Components
made for Livewire 3 and styled around daisyUI + Tailwind
made for Livewire 3 and styled around daisyUI + Tailwind
Amazing components.
Delightful 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
Users - server side
No results found.
Aditya
Alayna
Alf
Ali
Search happens on server side
@php $users = $this->users; @endphp <x-choices label="Users - server side" wire:model="selected_users" :options="$users" icon="s-bolt" hint="Search happens on server side" searchable />
No results found.
Hesselland
Cristchester
East Murielstad
Felipeburgh
Xanderview
East Thomasberg
Nolaville
Port Juliana
Mohammedtown
East Selmerville
Emmerichbury
Weberport
South Leta
Lorineland
South Tobyborough
Deonside
Clayside
Croninville
North Roryview
New Hulda
Rodrigohaven
New Berneicefort
North Ethan
Francoburgh
Terryside
Lake Lelah
South Jeffery
Suzanneland
New Fredyview
New Bailee
North Gardnerport
Feltonton
Howellstad
Gaylordstad
Jakubowskiberg
Leschborough
Connbury
Lake Bartholomeborough
Brandiport
New Sophie
New Ethel
Lake Edville
Jademouth
Eulaliaville
Tyrahaven
Franciscaborough
Rodriguezmouth
Palmaburgh
New Kayaside
Malachishire
Lake Cruz
Kilbackside
Port Gayville
Nyasiachester
East Careyland
McCulloughview
South Jordy
East Josiah
Port Santos
Laurianeville
West Estrellaport
Considinehaven
Rozellaburgh
Sunnystad
East Sigurd
Lupefort
North Tomasa
Corkeryland
Fidelfort
New Pearl
South Kristopher
Port June
Litzyport
Rutherfordmouth
North Hilbert
East Gayle
Agustinaland
Normaview
Berthabury
Raufurt
South Elishamouth
Port Ericachester
South Franz
VonRuedenstad
Elmorestad
Hortensechester
Port Michelside
Nicofurt
Feliciastad
Lindmouth
East Mina
Meaganberg
South Kiarrachester
Port Aliza
South Paul
Herzogton
Murazikstad
South Molliehaven
South Dougton
West Aron
Search happens on frontend side
@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.
<x-form wire:submit="save"> <x-input label="Name" wire:model="name" icon="o-user" placeholder="Hello" /> <x-input label="Amount" wire:model="amount" prefix="USD" money /> <x-slot:actions> <x-button label="Cancel" /> <x-button label="Save" class="btn-primary" type="submit" spinner="save" /> </x-slot:actions></x-form>
Drawer & Modal
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 separator class="w-11/12 lg:w-1/3"> <div>Click outside, on `CANCEL` button or `CLOSE` icon to close.</div> <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" subtitle="Livewire example" separator> <div>Click outside, press `ESC` or click `CANCEL` button to close.</div> <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 | Dorcas | Hesselland |
| 2 | Fern | Cristchester |
| 3 | Brent | East Murielstad |
| 4 | Kelton | Felipeburgh |
@php use App\Models\User; $users = User::with('city')->take(4)->get(); $headers = [ ['key' => 'id', 'label' => '#', 'class' => 'w-1 bg-yellow-500/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 | ||||
|---|---|---|---|---|---|
| 66 | Aditya |
alivia.bergnaum
|
Lupefort | ||
|
Hello, Aditya!
|
|||||
| 33 | Alayna |
hilario.windler
|
Howellstad | ||
|
Hello, Alayna!
|
|||||
| 95 | Alf |
emma.weissnat
|
South Paul | ||
|
Hello, Alf!
|
@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 = [ ['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 ]; $cell_decoration = [ 'name' => [ 'bg-yellow-500/20 italic' => fn(User $user) => Str::of($user->name)->startsWith('A') ] ];@endphp <x-table wire:model="expanded" :headers="$headers" :rows="$users" :cell-decoration="$cell_decoration" :sort-by="$sortBy" link="/docs/components/table?user_id={id}&city={city.name}" {{-- Make rows clickables --}} expandable with-pagination> {{-- Expansion slot --}} @scope('expansion', $user) <div class="border border-dashed rounded-lg p-5 "> Hello, {{ $user->name }}! </div> @endscope {{-- Actions Slot --}} @scope('actions', $user) <x-button icon="o-trash" wire:click="delete({{ $user->id }})" spinner /> @endscope {{-- Cell scope --}} @scope('cell_username', $user) <x-badge :value="$user->username" class="badge-primary" /> @endscope</x-table>
And more ...
LET`S DO IT