mrshanebarron / toggle
On/off switch controls for Laravel. Supports Livewire and Blade.
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/mrshanebarron/toggle
Requires
- php: ^8.1
- illuminate/support: ^10.0|^11.0|^12.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0
- pestphp/pest: ^2.0
This package is auto-updated.
Last update: 2025-12-14 02:28:05 UTC
README
On/off switch controls. Built for Laravel with support for Livewire, Blade, and Alpine.js.
Installation
composer require mrshanebarron/toggle
The service provider will be auto-discovered. If you need to register it manually:
// config/app.php 'providers' => [ // ... MrShaneBarron\Toggle\ToggleServiceProvider::class, ];
Usage
Livewire Component
<livewire:ld-toggle />
Blade Component
<x-ld-toggle />
With Props
<x-ld-toggle :value="false" size='md' :disabled="false" onLabel='On' offLabel='Off' />
Props
| Prop | Type | Default | Description |
|---|---|---|---|
value |
boolean | false |
Toggle state |
size |
string | 'md' |
Toggle size |
disabled |
boolean | false |
Disable toggle |
onLabel |
string | 'On' |
Label when on |
offLabel |
string | 'Off' |
Label when off |
Configuration
Publish the config file:
php artisan vendor:publish --tag=ld-toggle-config
This will create a config/ld-toggle.php file where you can customize default values.
Customization
Publishing Views
Customize the component appearance by publishing the views:
php artisan vendor:publish --tag=ld-toggle-views
Views will be published to resources/views/vendor/ld-toggle/.
Styling
The component uses Tailwind CSS classes by default. You can customize styles by:
- Publishing views and modifying the Blade templates
- Using the
classattribute to add custom classes - Overriding default styles in your CSS
<x-ld-toggle class="custom-class" />
Events
The component dispatches Livewire events you can listen to:
| Event | Payload | Description |
|---|---|---|
toggle:updated |
Component data | Fired when state changes |
toggle:initialized |
Initial data | Fired on component mount |
// In your Livewire component protected $listeners = ['toggle:updated' => 'handleUpdate']; public function handleUpdate($data) { // Handle the update }
Alpine.js Integration
The component works seamlessly with Alpine.js:
<div x-data="{ ' }} selected: null {{ ' }"> <x-ld-toggle x-model="selected" /> <p x-text="selected"></p> </div>
Requirements
- PHP 8.1+
- Laravel 10.x, 11.x, or 12.x
- Livewire 3.x
- Tailwind CSS 3.x (optional, for default styling)
Testing
composer test
Changelog
Please see CHANGELOG for recent changes.
Contributing
Contributions are welcome! Please see CONTRIBUTING for details.
Security
If you discover a security vulnerability, please email shane@sbarron.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.