wallacemartinss/filament-icon-picker
Modern icon picker for Filament v5 using Blade Icons. Includes a modal grid UI with live search, icon set/provider filtering, infinite scroll, and previews. Works as a form field, table column, and infolist entry; configurable and supports popular icon packs.
composer require wallacemartinss/filament-icon-picker
php artisan filament-icon-picker:install-icons
@source '../../../../vendor/wallacemartinss/filament-icon-picker/resources/views/**/*';
npm run build
Add an icon picker to a form field:
use Wallacemartinss\FilamentIconPicker\Forms\Components\IconPickerField;
IconPickerField::make('icon')
->label('Select an Icon')
->searchable();
// Basic usage
IconPickerField::make('icon')
->required()
->searchable();
// Restrict to specific icon sets
IconPickerField::make('icon')
->allowedSets(['heroicons', 'phosphor-icons']);
// Custom modal size
IconPickerField::make('icon')
->modalSize('4xl');
// Static icon display
IconPickerColumn::make('status')
->icon('heroicon-o-star')
->success()
->large();
// Dynamic icon with record-based logic
IconPickerColumn::make('icon')
->color(fn ($record) => $record->is_active ? 'success' : 'danger')
->animation(fn ($record) => $record->is_processing ? 'spin' : null);
// Read-only icon display
IconPickerEntry::make('icon')
->size('xl')
->color('primary');
// Dynamic icon with conditional logic
IconPickerEntry::make('user_type')
->icon(fn ($record) => $record->is_admin ? 'heroicon-s-shield-check' : 'heroicon-o-user')
->color(fn ($record) => $record->is_admin ? 'danger' : 'primary');
Icon Enums for Type Safety:
use Wallacemartinss\FilamentIconPicker\Enums\Heroicons;
// In navigation
protected static string|BackedEnum|null $navigationIcon = Heroicons::OutlinedStar;
// In actions
Action::make('edit')->icon(Heroicons::OutlinedPencil);
Dynamic Icon Selection:
// Using helper method
Icon::phosphor('whatsapp-logo', 'duotone');
// Using generated enum
PhosphorIcons::WhatsappLogoDuotone->value;
Performance Optimization:
php artisan icons:cache
Customizing Appearance:
// Table column with all customizations
IconPickerColumn::make('icon')
->large()
->success()
->spin('0.5s')
->showLabel();
Missing Icon Sets:
php artisan filament-icon-picker:install-icons'heroicons' not 'blade-heroicons')Caching Issues:
php artisan optimize:clear
php artisan icons:cache
Tailwind Configuration:
@source directive to your Tailwind config can cause styling issuesEnum Generation:
php artisan filament-icon-picker:generate-enums --all
Icon Not Showing?
Performance Issues
php artisan icons:cache
Styling Problems
Custom Icon Sets:
IconSet interface for custom integrationModal Customization:
php artisan vendor:publish --tag="filament-icon-picker-config"
Advanced Search:
Animation System:
Combine with Filament Actions:
Action::make('approve')
->icon(Heroicons::OutlinedCheckCircle)
->color('success');
Create Icon Presets:
// In a trait or helper class
public static function getStatusIcon(string $status): string
{
return match($status) {
'active' => Heroicons::OutlinedCheckCircle->value,
'pending' => Heroicons::OutlinedClock->value,
default => Heroicons::OutlinedXCircle->value,
};
}
Use with Filament Widgets:
Widget::make()
->icon(Heroicons::OutlinedChartBar)
->title('Analytics Dashboard');
Dynamic Icon Generation:
// Generate icons based on record attributes
IconPickerColumn::make('icon')
->icon(fn ($record) => "heroicon-o-{$record->type}")
->color(fn ($record) => $record->priority_color);
How can I help you explore Laravel packages today?