artisanpack-ui/icons
Register and use your own SVG icon sets in Laravel with minimal overhead. Integrates with blade-ui-kit/blade-icons and Livewire UI, supports config or event-based registration, and makes it easy to add premium sets like Font Awesome Pro.
ap.icons.register-icon-sets → ap.icons.registerIconSets to align with cross-package hooks convention. Old name is registered as a deprecation alias — subscribers continue firing but emit an info-level log. Alias removal deferred to next major.artisanpack-ui/hooks to ^1.3.ap.icons.registerIconSets hook name with deprecation notes for the legacy alias.IconSetRegistration::addSet() now stores prefix alongside path in the resulting details array. Previously the stored details were ['path' => ...] only, which caused BladeUI\Icons\Factory::add() to throw CannotRegisterIconSet::prefixNotDefined whenever an event-driven icon set was registered. This broke every Blade render of an <x-...> component in any consumer app that also had owenvoke/blade-fontawesome installed alongside an extension (e.g. artisanpack-ui/visual-editor v1.1.0) that uses the ap.icons.register-icon-sets filter hook. (#20, #21)tests/Feature/EventDrivenRegistrationTest.php that hands the stored details directly to a real BladeUI\Icons\Factory instance and asserts Factory::add() does not throw.EventDrivenRegistrationTest and IconRegistrationIntegrationTest to assert the new prefix key alongside path.illuminate/support constraint is widened to ^12.0 || ^13.0. Existing Laravel 12 users are unaffected; Laravel 13 requires PHP 8.3+ (enforced by Laravel itself).orchestra/testbench dev dependency widened to ^10.0 || ^11.0 to test against Laravel 13.tormjens/eventy to artisanpack-ui/hooks for event/filter managementEventy::addFilter() to addFilter() global helpertormjens/eventy packageartisanpack-ui/hooks ^1.0Migration Guide:
// Before (v2.0)
use TorMorten\Eventy\Facades\Eventy;
Eventy::addFilter('ap.icons.register-icon-sets', function (IconSetRegistration $registry) {
$registry->addSet(__DIR__ . '/../../resources/icons', 'mypackage');
return $registry;
});
// After (v2.1)
use ArtisanPackUI\Icons\Registries\IconSetRegistration;
addFilter('ap.icons.register-icon-sets', function (IconSetRegistration $registry) {
$registry->addSet(__DIR__ . '/../../resources/icons', 'mypackage');
return $registry;
});
resources/boost/guidelines/core.blade.phpphp artisan boost:install.claude/settings.local.json) for improved AI-assisted developmentphp:8.2-cli image instead of composer:2addFilter() syntaxdocs/guide/extension-api.md)docs/guide/architecture.md)docs/guide/service-provider.md)HooksServiceProvider instead of EventServiceProvidertormjens/eventy: ^0.9.4 with artisanpack-ui/hooks: ^1.0composer.json to require artisanpack-ui/hooks: ^1.0 instead of tormjens/eventycomposer updateEventy::addFilter() to use addFilter() global helperuse TorMorten\Eventy\Facades\Eventy; importsThis release represents a fundamental architectural transformation from a hardcoded icon provider to an extensibility layer for custom icon sets using blade-ui-kit/blade-icons.
ArtisanPackUI\Icons\Icons class (17,282 lines)
getIcons() methodiconsList() methodArtisanPackUI\Icons\Facades\Icons facadegetIcons() global helper functioniconsLists() global helper functionicons() global helper functionhelpers.php file completely[@apIcons](https://github.com/apIcons) Blade directive/artisanpack-ui-icons/css)dist/ directory with CSS and webfontspackage.json and Node.js build processesconfig/artisanpack/icons.phpap.icons.register-icon-sets filterIconSetRegistration class for structured icon set definitionsblade-ui-kit/blade-icons v1.8+<x-icon-prefix-name />php artisan vendor:publish --tag=artisanpack-package-config
blade-ui-kit/blade-icons ^1.8tormjens/eventy ^0.9.4 (for event-driven extensibility)ext-fileinfo dependency⚠️ IMPORTANT: This release requires manual migration. See Migration Guide for detailed instructions.
^2.0php artisan vendor:publish --tag=artisanpack-package-configOld v1.x:
[@apIcons](https://github.com/apIcons)
<i class="ap-icon ap-icon-home"></i>
New v2.0:
<x-icon-fas-home class="w-6 h-6" />
How can I help you explore Laravel packages today?