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.
Adolphus
Anahi
Anderson
Barrett
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.
South Karley
North Carolanneview
Fredafort
Port Deontae
South Janniefurt
Estrellaville
Port Rosalynland
West Ryderchester
Lake Fayeshire
Colemanville
North Adalbertofort
North Lessie
Lindport
Nienowhaven
Ileneton
East Milanside
South Quentinborough
New Whitneymouth
Adityaberg
New Lisandro
Chandlermouth
Brodyport
New Connorborough
West Nestor
Lake Lawsonton
Swiftchester
Wiegandburgh
Elliemouth
Port Sarahfurt
New Tatestad
Gloverfort
Shawnamouth
North Adityaborough
West Josephinehaven
Valliechester
Handton
Stantonfurt
Port Sincere
East Ebbastad
Emardmouth
Kleinside
East Ebony
Farrellton
South Emelie
East Luzside
Grantshire
Schambergerport
Kuhlmanmouth
West Gordonmouth
Weimannport
Flobury
Port Krystel
South Andres
Tremblayfurt
Boehmfurt
Pamelahaven
West Theaview
Blockland
Nilshaven
Lake Mathewmouth
West Andre
Marjoryberg
New Hal
Bayerview
New Christinefurt
Stammport
Gwenville
North Dorothyport
West Brennonhaven
Harbertown
New Axel
Adelamouth
Petrastad
Walshtown
Stromanchester
South Royalport
Farrelltown
Fayberg
Hayesland
North Marceloview
West Ryley
Damionview
East Monserrat
New Raqueltown
Funkchester
Scotfort
North Julia
Mosciskiview
South Izabellastad
South Adella
Lake Assuntaland
North Adrien
South Alexandra
North Margueriteside
Port Ibrahim
South Wayne
East Cathy
Brookmouth
Fritschmouth
Port Dell
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 | Scarlett | South Karley |
| 2 | Juwan | North Carolanneview |
| 3 | Emil | Fredafort |
| 4 | Nicholas | Port Deontae |
@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 | ||||
|---|---|---|---|---|---|
| 65 | Adolphus |
conroy.jovany
|
New Christinefurt | ||
|
Hello, Adolphus!
|
|||||
| 70 | Anahi |
gutkowski.theodore
|
Harbertown | ||
|
Hello, Anahi!
|
|||||
| 72 | Anderson |
britney49
|
Adelamouth | ||
|
Hello, Anderson!
|
@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