Weave Code
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

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.

View on GitHub
Deep Wiki
Context7
2.2.0

Changed

  • Renamed hook ap.icons.register-icon-setsap.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.
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky
spatie/mailcoach-vapor
spatie/laravel-javascript-views