Installation
composer require destech-hasar-cozumleri-a-s/larabite
npm install flowbite
Add the package's Tailwind directives to resources/css/app.css:
@tailwind base;
@tailwind components;
@tailwind utilities;
@import 'larabite/flowbite';
Publish Assets
php artisan larabite:install
npm run dev # or build for production
First Component Usage In a Blade template, use a pre-built component like a button:
<x-button type="primary">Click Me</x-button>
Verify the component renders with Tailwind styling.
Livewire Integration
For Livewire components, ensure your Livewire component extends Larabite\Livewire\Component:
use Larabite\Livewire\Component;
class MyComponent extends Component { ... }
Component Discovery Browse components via:
<x-component-name>)/docs/components/buttons)Theming & Customization Override default styles by extending Flowbite’s CSS classes:
/* resources/css/larabite.css */
.btn-primary {
@apply bg-blue-700 hover:bg-blue-800;
}
Recompile assets after changes.
Dynamic Props Pass props to components for dynamic behavior:
<x-dropdown :items="$menuItems" active="dashboard" />
Use public $propName in component classes for Livewire.
Dark Mode Toggle via Alpine.js:
<x-theme-toggle />
Or manually in Blade:
<div x-data="{ darkMode: false }" x-bind:class="{ 'dark': darkMode }">
<!-- Content -->
</div>
Form Handling Use built-in form components with Livewire validation:
<x-input type="email" wire:model="email" />
// Livewire component
public $email;
protected $rules = ['email' => 'required|email'];
Modals & Dialogs Initialize modals via Alpine.js:
<x-modal id="my-modal" :show="true">
<x-slot name="title">Title</x-slot>
<p>Modal content</p>
</x-modal>
Control visibility with x-data or Livewire.
wire:ignore for Alpine components inside Livewire:
<div wire:ignore>
<x-alpine-component />
</div>
update() for real-time UI changes without full page reloads.$this->blade('<x-button>Test</x-button>')->assertSee('button');
Asset Conflicts
resources/js/app.js and resources/css/app.css for duplicate imports. Use @import sparingly.Livewire Component Naming
LarabiteButton instead of Button).Dark Mode State Persistence
localStorage:
<x-theme-toggle x-data="{
darkMode: JSON.parse(localStorage.getItem('dark-mode')) || false,
toggle() { darkMode = !darkMode; localStorage.setItem('dark-mode', darkMode) }
}" />
Alpine.js Event Listeners
@click) may not trigger in Livewire components.wire:click for Livewire interactions or wire:ignore for Alpine-only components.Component Props Validation
public $size = 'md'; // Default value
Tailwind Classes
tailwindcss-intellisense in VSCode for autocomplete.public/build/css/app.css) for missing classes.Livewire Component Lifecycle
mount() and hydrate() for debugging:
public function mount() {
Log::info('Component mounted');
}
Alpine.js State
x-data state in browser dev tools (Elements > Computed).x-init for initialization logic:
<div x-data="{ count: 0 }" x-init="console.log('Initialized')">
Asset Compilation
php artisan view:clear
npm run dev
Custom Components
resources/views/vendor/larabite/ and overriding in resources/views/components/.Flowbite Plugins
flowbite-datepicker) by:
resources/js/app.js:
import flowbite from 'flowbite';
flowbite();
Livewire Hooks
public function boot() {
Livewire::component('larabite-button', \Larabite\Components\Button::class);
}
Dark Mode System
tailwind.config.js:
darkMode: 'class',
theme: {
extend: {
colors: {
dark: {
primary: '#1e293b',
}
}
}
}
Accessibility
<x-button aria-label="Submit form">Submit</x-button>
How can I help you explore Laravel packages today?