artisanpack-ui/icons

An extensibility layer for Blade Icons that enables flexible registration of custom SVG icon sets via config or events.
6,108
Install
composer require artisanpack-ui/icons
Latest Version:2.2.0
PHP:^8.2
License:MIT
Last Updated:Jul 21, 2026
Links: GitHub  ·  Packagist

ArtisanPack UI Icons

An extensibility layer for custom icon sets that integrates seamlessly with blade-ui-kit/blade-icons and livewire-ui-components. This package provides a simple, flexible way to register and use custom SVG icon sets in your Laravel applications without the overhead of hardcoded icon libraries.

Features

  • Zero Hardcoded Icons: No memory-heavy icon arrays - bring your own icons
  • Seamless Integration: Built on blade-ui-kit/blade-icons foundation
  • Dual Registration System: Configure via config files or register programmatically via events
  • Third-Party Extensible: Other packages can register icon sets via event hooks
  • Font Awesome Pro Ready: Easy integration with Font Awesome Pro and other premium icon sets
  • Performance Optimized: Minimal memory footprint and fast loading

Installation

Install the package via Composer:

composer require artisanpack-ui/icons

Publish the configuration file:

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

Quick Start

1. Configure Your Icon Sets

Edit config/artisanpack/icons.php to register your icon sets:

return [
    'sets' => [
        'fa' => [
+            'path' => resource_path('icons/fontawesome-pro'),
+            'prefix' => 'fa',
+        ],
+        'brand' => [
+            'path' => resource_path('icons/custom-brand'),
+            'prefix' => 'brand',
+        ],
    ],
];

2. Organize Your Icons

Place your SVG files in the configured directories:

resources/
├── icons/
│   ├── fontawesome-pro/
│   │   ├── home.svg
│   │   └── user.svg
│   └── custom-brand/
│       ├── logo.svg
│       └── badge.svg

3. Use Icons in Blade Templates

{{-- Using Font Awesome Pro icons with 'fa' prefix --}}
<x-icon-fa-home class="w-6 h-6" />
<x-icon-fa-user class="w-5 h-5 text-blue-500" />

{{-- Using custom brand icons with 'brand' prefix --}}
<x-icon-brand-logo class="w-8 h-8" />
<x-icon-brand-badge class="w-4 h-4" />

Registration Methods

Config-Based Registration

The simplest approach - define icon sets in your config/artisanpack/icons.php:

return [
    'sets' => [
        'hero' => [
            'path'   => resource_path('icons/heroicons'), 
            'prefix' => 'hero'
        ],
+       'tabler' => [
            'path'   => resource_path('icons/tabler'),
            'prefix' => 'tabler'
        ],
    ],
];

Event-Driven Registration

Perfect for packages that want to register their own icon sets:

use ArtisanPackUI\Icons\Registries\IconSetRegistration;

// In a service provider or event listener
addFilter('ap.icons.registerIconSets', function (IconSetRegistration $registry) {
    $registry->addSet(__DIR__ . '/../../resources/icons', 'mypackage');
    return $registry;
});

Note: In v2.2.0 the hook was renamed from ap.icons.register-icon-sets to ap.icons.registerIconSets to align with the cross-package hooks naming convention. The old name is registered as a temporary deprecation alias — existing subscribers continue firing but emit an info-level deprecation log. The alias will be removed in the next major release.

Documentation

For comprehensive documentation, visit the docs directory:

Getting Started

Advanced Usage

Requirements

  • PHP 8.2 or higher (PHP 8.3+ required for Laravel 13)
  • Laravel 12.x or 13.x
  • blade-ui-kit/blade-icons ^1.8

Contributing

As an open source project, this package is open to contributions from anyone. Please read through the contributing guidelines to learn more about how you can contribute to this project.

Related Packages

doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

634,760,849 9,707
laravel/framework

The Laravel Framework.

584,532,650 34,931
laravel/tinker

Powerful REPL for the Laravel framework.

493,838,477 7,443
laravel/serializable-closure

Laravel Serializable Closure provides an easy and secure way to serialize closur...

408,553,772 609
nunomaduro/collision

Cli error handling for console/command-line PHP applications.

387,976,821 4,658