alkoumi / filament-image-radio-button
Filament Form Radio Button But With Images
Package info
github.com/alkoumi/filament-image-radio-button
pkg:composer/alkoumi/filament-image-radio-button
Fund package maintenance!
2.0.0
2026-01-22 14:42 UTC
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.

