alkoumi / filament-image-radio-button
Filament Form Radio Button But With Images
Fund package maintenance!
alkoumi
Installs: 2 838
Dependents: 0
Suggesters: 0
Security: 0
Stars: 6
Watchers: 1
Forks: 3
Open Issues: 1
pkg:composer/alkoumi/filament-image-radio-button
Requires
- php: ^8.2|^8.3|^8.4
- filament/filament: ^3.0|^4.0|^5.0
- livewire/livewire: ^3.0|^4.0
- spatie/laravel-package-tools: ^1.15.0
Requires (Dev)
- nunomaduro/collision: *
- orchestra/testbench: ^9.0|^10.0|^11.0
- pestphp/pest: ^2.0|^3.0|^4.0
README
A Filament form component that replaces traditional radio buttons with image selection. Supports RTL and Dark Mode.
Requirements
| Version | PHP | Filament | Livewire | Laravel |
|---|---|---|---|---|
| 2.x | 8.2+ | 3.x, 4.x, 5.x | 3.x, 4.x | 10.x, 11.x, 12.x |
| 1.x | 8.1+ | 3.x, 4.x | 3.x | 10.x, 11.x |
Installation
composer require alkoumi/filament-image-radio-button
Theme Setup (Filament 4+)
-
Create a custom theme: Filament Docs
-
Add the package views to your theme CSS:
@source '../../../../vendor/alkoumi/filament-image-radio-button/resources/views/**/*.blade.php';
- Register the theme in your Panel Provider:
->viteTheme('resources/css/filament/admin/theme.css')
- Build assets:
npm run build
Usage
Basic Usage
use Alkoumi\FilamentImageRadioButton\Forms\Components\ImageRadioGroup; ImageRadioGroup::make('report_id') ->disk('reports') ->options(fn () => Report::pluck('file', 'id')->toArray())
Full API
use Alkoumi\FilamentImageRadioButton\Forms\Components\ImageRadioGroup; ImageRadioGroup::make('report_id') ->label(__('Report Design')) ->required() ->disk('reports') // Storage disk name ->options(fn () => [...]) // Array of [ id => image_path ] ->gridColumns(4) // Number of columns (default: 3) ->live() // Enable live updates
Dynamic Options
ImageRadioGroup::make('report_id') ->disk('reports') ->options(fn (Get $get) => Report::whereType($get('type_id'))->pluck('file', 'id')->toArray()) ->afterStateUpdated(fn (Get $get, Set $set, ?string $state) => $set('selected_report', Report::find($state)) ) ->live()
Configuration
Storage Disk Setup
Define a disk in config/filesystems.php:
'reports' => [ 'driver' => 'local', 'root' => storage_path('app/public/reports'), 'url' => env('APP_URL') . '/storage/reports', 'visibility' => 'public', ],
Options Format
Options must be an array where:
- Key: The value to store (e.g., model ID)
- Value: The image path relative to the disk
// Example: ['1' => 'storage/template1.jpg', '2' => 'storage/template2.png'] Report::pluck('image_path', 'id')->toArray()
Screenshots
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.

