livewire/flux
Hand-crafted UI components for Livewire apps, built with Tailwind CSS. Includes buttons, dropdowns, icons, separators, and tooltips, plus a larger Pro set. Requires Laravel 10+, Livewire 3.5.19+, and Tailwind 4+.
Installation:
composer require livewire/flux
For Pro components:
php artisan flux:activate
Include Assets:
Add these directives to your main layout file (resources/views/layouts/app.blade.php):
<head>
@fluxAppearance
<!-- Optional: Inter font -->
<link href="https://fonts.bunny.net/css?family=inter:400,500,600&display=swap" rel="stylesheet" />
</head>
<body>
@fluxScripts
</body>
Tailwind Configuration:
Update resources/css/app.css:
@import 'tailwindcss';
@import '../../vendor/livewire/flux/dist/flux.css';
@theme {
--font-sans: Inter, sans-serif;
}
<x-flux.button wire:click="submitForm">
Submit
</x-flux.button>
<x-flux.button>, <x-flux.dropdown>, etc., directly in Blade views.php artisan flux:activate (e.g., <x-flux.modal>).Leverage Tailwind classes and Flux props for consistency:
<x-flux.button variant="outline" color="blue">
Click Me
</x-flux.button>
Common Props:
variant: primary, outline, text, ghostcolor: blue, gray, red, green, etc.size: sm, md, lgUse wire:model with Flux inputs:
<x-flux.input wire:model="email" label="Email" />
Advanced Form Patterns:
wire:model errors.wire:loading for async feedback:
<x-flux.button wire:click="submit" wire:loading.remove>
Submit
</x-flux.button>
Pro-only components like <x-flux.modal> require activation:
<x-flux.modal wire:model="showModal">
<x-slot name="title">Confirm Action</x-slot>
<p>Are you sure?</p>
<x-slot name="footer">
<x-flux.button wire:click="confirm">Yes</x-flux.button>
</x-slot>
</x-flux.modal>
Flux supports dark mode via Tailwind’s dark: variants. Ensure your layout includes:
<div class="dark:bg-gray-900 dark:text-white">
<!-- Content -->
</div>
Publish Components:
php artisan flux:publish
Select components to override (e.g., button, dropdown).
Extend Styles:
Override Flux CSS in resources/css/app.css:
@layer components.button {
@apply bg-custom-blue;
}
Missing @fluxAppearance or @fluxScripts:
<head>/<body> of your layout.Tailwind Conflicts:
tailwind.config.js matches:
module.exports = {
darkMode: 'class',
theme: {
extend: {},
},
};
Pro Components Without Activation:
<x-flux.modal> without php artisan flux:activate throws errors.vendor/livewire/flux/src/FluxServiceProvider.php for registered components.Blaze Compatibility:
<livewire:script />
@fluxScripts
Console Errors:
Uncaught ReferenceError (missing @fluxScripts).storage/logs/laravel.log.Component Isolation:
x-data to isolate Alpine.js logic:
<x-flux.dropdown x-data="{ open: false }">
<!-- Content -->
</x-flux.dropdown>
Custom Icons:
<x-flux.icon name="custom-icon" />
Register custom icons in resources/js/app.js:
import { library } from '@fortawesome/fontawesome-svg-core';
import { faCustomIcon } from '@fortawesome/free-solid-svg-icons';
library.add(faCustomIcon);
Dark Mode Overrides:
app.css:
.dark .flux-button-primary {
@apply bg-blue-700;
}
Pro Component Access:
<x-flux.modal>) appear in the IDE autocomplete.@fluxScripts(components="button,modal")
ResizeObserver loops (fixed in v2.13.1). Use Chrome DevTools > Memory tab to profile.aria-label strings with __() for Laravel’s translation system:
<x-flux.tooltip>
{{ __('Close') }}
</x-flux.tooltip>
resources/lang/en/tooltip.php:
return [
'Close' => 'Close tooltip',
];
dir="rtl". For issues (e.g., pagination arrows), override in CSS:
.rtl .flux-pagination {
direction: rtl;
}
How can I help you explore Laravel packages today?