Icon Picker by Fawaz Iwalewa
CommunityA searchable icon picker field for Filament.
Author:
Fawaz Iwalewa
Package health
Automated checks of this plugin's Composer package
15 checks
- Skipped: GitHub Actions pinned to SHA
- Skipped: GitLab CI includes pinned to SHA
- Passed: Open security advisories
- Passed: Dependabot PR responsiveness — No open Dependabot PRs.
- Skipped: Renovate MR responsiveness
- Skipped: Dependabot or Renovate configured
- Skipped: Dependency update cooldown configured
- Passed: Provides a security policy
- Passed: Abandoned or archived — No consulted source marks the package abandoned (packagist, github).
- Warning: Commit and release recency — Low activity: last commit 181 days ago; last release 181 days ago.
-
Passed:
composer.lock not committed by library
—
composer.lockis absent from the released dist archive. - Passed: Dist archive is lean
-
Passed:
Current Laravel version supported
—
Package dependencies resolve together with current Laravel
13.0. -
Passed:
Current PHP version supported
—
Constraint
^8.2supports current PHP8.5. - Skipped: Current Symfony version supported
filament/
namespace. Review the source and install at your own risk. Found
malware or an unresolved security issue the author won't
address?
Report it
.
Documentation
- Features
- Requirements
- Installation
- Configuration
- Usage
- Prefix icon behavior (important)
- Rendering icons
- How it works
- Artisan commands
- Testing
- Changelog
- Contributing
- Security
- License
Sponsored by Tasklemon.
A beautiful, searchable icon picker field for FilamentPHP v5, built with Livewire and Alpine.js. Select from multiple icon sets including Heroicons, Lucide, and more.
#Features
- 🎨 Beautiful UI - Clean, modern interface that matches Filament's design
- 🔍 Searchable - Quickly find icons with real-time search
- 📦 Multiple Icon Sets - Support for Heroicons, Lucide, Font Awesome, Bootstrap Icons, and more
- ⚡ Fast - Built with Alpine.js for instant interactions
- 🎯 Native Filament Integration - Uses Filament's icon rendering system
- 🌙 Dark Mode - Full dark mode support
- ⚙️ Configurable - Customize sets, columns, search, and more
- 🧪 Production Ready - Clean, tested, maintainable code
#Requirements
- PHP 8.2+
- Laravel 12+
- FilamentPHP v5.0+
- Blade Icons (blade-ui-kit/blade-icons)
#Installation
Install the package via Composer:
composer require fawaziwalewa/filament-icon-picker
Optional (recommended):
php artisan vendor:publish --tag="filament-icon-picker-config"
Optional (only if you want to override the UI):
php artisan vendor:publish --tag="filament-icon-picker-views"
#Configuration
The configuration file (config/filament-icon-picker.php) controls:
- which icon sets are available and enabled
- default selected sets (
sets) - default grid columns (
columns) - default search toggle (
searchable) - placeholder text (
placeholder) - caching and endpoint behavior
Heroicons, Lucide, Font Awesome, and Bootstrap Icons are bundled as Composer dependencies of this package.
#Usage
use FawazIwalewa\FilamentIconPicker\Forms\Components\IconPicker;
IconPicker::make('icon')
->label('Icon')
->required();
#Sets
Sets are referenced by their config keys (from filament-icon-picker.icon_sets):
IconPicker::make('icon')
->sets(['heroicons', 'lucide', 'bootstrap']);
#Grid + search
IconPicker::make('icon')
->gridColumns(8)
->searchable(true)
->placeholder('Pick an icon');
#Prefix icon behavior (important)
The selected icon is always shown as the field prefix icon using Filament's input wrapper styling.
- Do not call
->prefixIcon(...)on this field. IconPicker::prefixIcon()is intentionally not supported and will throw.
#Rendering icons
The selected value is stored as a string (e.g. heroicon-o-user, lucide-alarm-clock, bi-alarm, fas-user).
#In Filament
use Filament\Tables\Columns\TextColumn;
TextColumn::make('name')
->icon(fn ($record) => $record->icon);
#In Blade
@php
$html = rescue(fn () => svg($record->icon, 'h-6 w-6')->toHtml(), '');
@endphp
@if (filled($html))
{!! $html !!}
@endif
#Normalizing legacy Font Awesome values
If you have existing database values saved as fa-solid-* / fa-regular-* / fa-brands-*, normalize them to fas-* / far-* / fab-* when reading/writing:
use FawazIwalewa\FilamentIconPicker\Services\IconService;
use Illuminate\Database\Eloquent\Casts\Attribute;
protected function icon(): Attribute
{
return Attribute::make(
get: fn (?string $value): ?string => IconService::normalizeIconName($value),
set: fn (?string $value): ?string => IconService::normalizeIconName($value),
);
}
#How it works
- The dropdown UI is Alpine.js.
- Icons are fetched lazily from a paginated JSON endpoint.
- The endpoint is protected by
web+authmiddleware and throttled.
#Artisan commands
php artisan filament-icon-picker:list
Filter by set key:
php artisan filament-icon-picker:list --set=heroicons
Search:
php artisan filament-icon-picker:list --search=user
Export:
php artisan filament-icon-picker:list --json > icons.json
#Testing
php artisan test
#Changelog
See CHANGELOG.
#Contributing
See CONTRIBUTING.
#Security
See SECURITY.
#License
The MIT License (MIT). Please see License File for more information.
The author
I'm a software engineer and digital wizard who uses a systems-thinking approach to create serious, profitable web systems. I've been transforming concepts into scalable, secure, and maintainable applications since 2019. I've been working end-to-end, from user interfaces and infrastructure to data models and APIs
Featured Plugins
A selection of plugins curated by the Filament team
Sharp Theme
A theme that gives panels a precise, technical look with square corners, strong borders, and clear contrast.
Filament
Custom Fields
Eliminate custom field migrations forever. Let your users create and manage form fields directly in Filament admin panels with 20+ built-in field types, validation, and zero database changes.
Relaticle
Advanced Tables (formerly Filter Sets)
Supercharge your tables with powerful features like user-customizable views, quick filters, multi-column sorting, advanced table searching, convenient view management, and more. Compatible with Resource Panel Tables, Relation Managers, Table Widgets, and Table Builder!
Kenneth Sese