Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Icons Laravel Package

artisanpack-ui/icons

An extensibility layer for registering custom SVG icon sets in Laravel, built on blade-ui-kit/blade-icons and integrates with Livewire UI Components. Configure sets via config or events, with no hardcoded icons, minimal memory use, and Font Awesome Pro support.

View on GitHub
Deep Wiki
Context7
2.2.0

Changed

  • Renamed hook 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.
  • Bumped artisanpack-ui/hooks to ^1.3.

Documentation

  • Updated Extension API, Architecture, and Service Provider guides to reference the new ap.icons.registerIconSets hook name with deprecation notes for the legacy alias.
  • Added v2.1 → v2.2 migration section covering the hook rename.
2.1.2

🐛 Bug Fixes

  • FIXED: 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

  • ADDED: Regression test in tests/Feature/EventDrivenRegistrationTest.php that hands the stored details directly to a real BladeUI\Icons\Factory instance and asserts Factory::add() does not throw.
  • UPDATED: "Preserves icon set metadata" tests in EventDrivenRegistrationTest and IconRegistrationIntegrationTest to assert the new prefix key alongside path.
2.1.1

✨ New Features

  • ADDED: Laravel 13 support. The 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).
  • ADDED: orchestra/testbench dev dependency widened to ^10.0 || ^11.0 to test against Laravel 13.
2.1.0

🚨 Breaking Changes

Hooks Package Migration

  • CHANGED: Migrated from tormjens/eventy to artisanpack-ui/hooks for event/filter management
  • CHANGED: Filter syntax updated from Eventy::addFilter() to addFilter() global helper
  • REMOVED: Dependency on tormjens/eventy package
  • ADDED: Dependency on artisanpack-ui/hooks ^1.0

Migration 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;
});

✨ New Features

Laravel Boost Integration

  • NEW: Added AI guidelines for Laravel Boost at resources/boost/guidelines/core.blade.php
  • NEW: Automatic guideline loading when users run php artisan boost:install
  • Provides AI-powered code generation support for icon registration and usage

Developer Experience

  • NEW: Added Claude Code settings (.claude/settings.local.json) for improved AI-assisted development
  • NEW: Pre-configured permissions for common development tasks (mkdir, git checkout, composer, tests)

🔧 Improvements

CI/CD Pipeline

  • FIXED: GitLab CI build stage now uses php:8.2-cli image instead of composer:2
  • FIXED: Resolved PHP version compatibility issues (locked dependencies support PHP 8.2-8.4)
  • IMPROVED: More reliable dependency installation in CI environment

Documentation

  • UPDATED: All documentation examples migrated to new addFilter() syntax
  • UPDATED: README.md with correct hooks usage
  • UPDATED: Extension API documentation (docs/guide/extension-api.md)
  • UPDATED: Architecture documentation (docs/guide/architecture.md)
  • UPDATED: Service Provider documentation (docs/guide/service-provider.md)

🐛 Bug Fixes

  • Fixed all test suite compatibility with new hooks package (39 tests passing)
  • Removed unused Eventy imports from test files
  • Updated TestCase to use HooksServiceProvider instead of EventServiceProvider

📦 Dependencies

  • Replaced tormjens/eventy: ^0.9.4 with artisanpack-ui/hooks: ^1.0
  • All other dependencies remain unchanged

🔄 Upgrade Path

  1. Update your composer.json to require artisanpack-ui/hooks: ^1.0 instead of tormjens/eventy
  2. Run composer update
  3. Update any custom code using Eventy::addFilter() to use addFilter() global helper
  4. Remove any use TorMorten\Eventy\Facades\Eventy; imports
  5. Test your icon registrations work correctly
2.0.0

🚨 MAJOR BREAKING CHANGES

This 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.

Removed Classes and Methods

  • REMOVED: ArtisanPackUI\Icons\Icons class (17,282 lines)
    • getIcons() method
    • iconsList() method
  • REMOVED: ArtisanPackUI\Icons\Facades\Icons facade
  • REMOVED: All facades directory and classes

Removed Helper Functions

  • REMOVED: getIcons() global helper function
  • REMOVED: iconsLists() global helper function
  • REMOVED: icons() global helper function
  • REMOVED: helpers.php file completely

Removed Blade Directives

  • REMOVED: [@apIcons](https://github.com/apIcons) Blade directive
  • REMOVED: All hardcoded icon rendering functionality

Removed Asset Serving

  • REMOVED: Asset serving routes (previously at /artisanpack-ui-icons/css)
  • REMOVED: dist/ directory with CSS and webfonts
  • REMOVED: Font Awesome bundled assets
  • REMOVED: package.json and Node.js build processes

Removed Icon Filtering

  • REMOVED: Icon filtering by category, type, or other attributes
  • REMOVED: All hardcoded icon data arrays

✨ New Features

Custom Icon Set Registration

  • NEW: Configuration-based icon set registration via config/artisanpack/icons.php
  • NEW: Event-driven icon set registration using ap.icons.register-icon-sets filter
  • NEW: IconSetRegistration class for structured icon set definitions
  • NEW: Hybrid registration system (config + events)

Modern Architecture

  • NEW: Integration with blade-ui-kit/blade-icons v1.8+
  • NEW: Blade component approach: <x-icon-prefix-name />
  • NEW: Support for multiple icon sets (Font Awesome Pro, Heroicons, custom)
  • NEW: Memory efficient - 95%+ reduction in memory usage

🔧 Configuration Changes

New Configuration File

php artisan vendor:publish --tag=artisanpack-package-config

Required Dependencies

  • ADDED: blade-ui-kit/blade-icons ^1.8
  • KEPT: tormjens/eventy ^0.9.4 (for event-driven extensibility)
  • REMOVED: ext-fileinfo dependency

📚 Migration Guide

⚠️ IMPORTANT: This release requires manual migration. See Migration Guide for detailed instructions.

Quick Migration Steps

  1. Update composer dependencies to ^2.0
  2. Publish new configuration: php artisan vendor:publish --tag=artisanpack-package-config
  3. Remove old code (see migration guide for details)
  4. Obtain and configure your icon sets (Font Awesome Pro recommended)
  5. Update templates to use new Blade components

Before/After Examples

Old 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" />

🚨 Deprecation Notice

v1.x End of Life

  • v1.x Support: Continues until December 31, 2025
  • Security Updates: Critical security fixes only
  • Feature Development: All new features will be v2.0+ only

Migration Timeline

  • October 2025: v2.0.0 release
  • November 2025 - March 2026: Migration period with dual support
  • April 2026: v1.x marked as deprecated (warnings in composer)
  • January 2027: v1.x end of life

Support Resources

Getting Help

  • Documentation: Full migration guide with troubleshooting
  • Community: Discussion and questions via GitLab issues
  • Professional Support: Available for enterprise migrations

🎯 Benefits of v2.0

Performance Improvements

  • Memory Usage: 95%+ reduction (no more hardcoded icon arrays)
  • Loading Speed: Only load icons you actually use
  • Caching: Better browser caching with SVG components

Flexibility

  • Any Icon Set: Use Font Awesome Pro, Heroicons, custom icons
  • Multiple Sets: Mix different icon libraries in one project
  • Easy Updates: Update icon sets independently of package

Developer Experience

  • Better IDE Support: Blade components with autocompletion
  • Modern Approach: Aligned with Laravel/Blade best practices
  • Direct Control: Manage your own SVG files

1.0.4
  • Fixed errors found while renaming the vendor.
1.0.3
  • Corrected the version number in the composer.json file.
1.0.2
  • Updated vendor name to ArtisanPack UI.
1.0.1
  • Updated the version number for the tormjens/eventy package.
1.0.0
  • Initial release
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource