- How do I install nickperkins/blade-icon-picker in a Laravel app?
- Run composer require nickperkins/blade-icon-picker, and optionally composer require blade-ui-kit/blade-heroicons for a recommended default icon pack. Publish the assets with php artisan vendor:publish --tag=icon-picker-assets. Add the published CSS in your head section and the JavaScript before the closing body tag after Alpine.js. There is no service-provider configuration, migration, or external service to set up.
- Which Laravel, PHP, and Livewire versions does it support?
- The package requires PHP 8.2+, Laravel 10, 11, or 12, Livewire 3, and blade-icons 1.0+. Livewire 2 is not supported. Non-Livewire forms and Inertia or Vue stacks are a poor fit because the Alpine.js coupling becomes dead weight.
- Does the icon picker work with Heroicons, Font Awesome, and custom blade-icons packs?
- Yes, it works with any blade-icons pack because the server walks every registered set and serializes the catalog. Heroicons and Font Awesome are both supported, and custom sets are auto-discovered. There is no documented allow-listing, so every registered pack is embedded on pages that host a picker.
- Why does my saved icon not show when I reopen a Livewire form?
- wire:model only handles write-back; it does not seed the picker's initial value. You must also pass :value="$icon" on the component. This dual binding is required because the picker is a Blade component, not a Livewire component. Without it, a saved icon can silently fail to re-display.
- Is this a Livewire component or a Blade component?
- It is a Blade component that ships an Alpine.js island. On page load the server renders every registered icon to inline SVG and serializes the catalog as JSON; the browser then owns search, filtering, lazy chunking, and keyboard navigation. The only server round-trip is $wire.set() when an icon is selected.
- How do search and keyboard navigation work in the icon picker?
- Search uses client-side substring token matching, so typing "ar le" can find "Arrow Left". Arrow keys, Enter, and Escape are supported for navigation and selection. The icon grid renders 30 icons at a time as you scroll. No per-keystroke Livewire request is made.
- How much page weight and render time does the icon picker add?
- The full icon catalog is serialized as inline SVG JSON into every page that hosts a picker. Heroicons v2 is roughly 1,200 icons across four styles, so expect a few hundred KB up to about 750 KB before compression, plus server-side SVG rendering on each request. IconManager is a per-request singleton, so multiple pickers reuse it, but a cold page still pays. No catalog caching or build-time JSON generation is documented.
- Can I limit icon packs, change the chunk size, or customize styling and dark mode?
- There is no documented configuration for icon-set allow-listing, so a project with Font Awesome, Heroicons, and custom packs embeds all of them, and chunk size is a hardcoded constant of 30. Styling uses standalone CSS with no Tailwind dependency, and colors can be overridden with CSS custom properties. Dark mode documentation is inconsistent: one section says prefers-color-scheme auto-detection is not supported while another says it is, and theming examples use .icon-picker-root while dark-mode docs use .ip-root, so verify before shipping.
- Is the icon picker accessible and screen-reader friendly?
- Keyboard arrows, Enter, and Escape are claimed, but ARIA roles, focus trapping, active-descendant announcements, and screen-reader behavior are not documented or evidenced. Treat accessibility as unverified until you test it with your own assistive-technology checks. The package's README does not publish an accessibility conformance statement.
- Is nickperkins/blade-icon-picker production-ready and actively maintained?
- It currently has zero stars, zero dependents, a single maintainer, and one recent release, with no observable third-party usage to surface bugs before you do. MIT licensing and a small surface area make vendoring or forking a credible fallback. Plan for ownership and dependency review rather than community support.