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

Filament Icons Laravel Package

filafly/filament-icons

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture Fit

  • Modularity: Aligns well with Laravel/Filament’s component-based architecture, enabling icon consistency without hardcoding dependencies.
  • Abstraction Layer: Provides a clean interface for icon management, decoupling UI from icon libraries (e.g., Heroicons, Phosphor).
  • Extensibility: Supports custom icon sets via Blade Icons, reducing vendor lock-in and enabling future-proofing.
  • Filament-Specific: Optimized for Filament’s ecosystem (e.g., widgets, resources, panels), minimizing friction in existing projects.

Integration Feasibility

  • Low-Coupling: Core package requires minimal changes to existing Filament apps; icon sets are opt-in.
  • Blade Integration: Leverages Filament’s Blade components, ensuring seamless adoption in views.
  • Configuration-Driven: Icon overrides and aliases are managed via config/filament-icons.php, reducing runtime complexity.
  • Dependency Management: Icon sets (e.g., filament-phosphor-icons) are separate packages, allowing granular adoption.

Technical Risk

  • Breaking Changes: Risk of API shifts if Filament core updates (e.g., Blade component structure). Mitigate via:
    • Version pinning (^1.0).
    • Community adoption tracking (e.g., Filament’s release notes).
  • Icon Set Compatibility: Non-official sets (e.g., community filament-solar-icons) may lag in updates. Validate via:
    • Dependency health checks (e.g., composer why-not filafly/filament-icons).
    • Testing with target icon libraries pre-integration.
  • Performance: Overhead from dynamic icon resolution is negligible for most use cases, but test in high-traffic Filament panels.

Key Questions

  1. Icon Library Preference:
    • Which icon set (Phosphor, Font Awesome, etc.) aligns with the design system? Prioritize official implementations for stability.
  2. Customization Needs:
    • Are global overrides (e.g., config/filament-icons.php) sufficient, or are component-level overrides required?
  3. CI/CD Impact:
    • How will icon set updates be managed? Example: composer require filafly/filament-phosphor-icons --dev for dev-only testing.
  4. Fallback Strategy:
    • Define a default icon set and fallback behavior for missing icons (e.g., config(['filament-icons.default' => 'phosphor'])).
  5. Localization:
    • Does the project support RTL or multi-language icons? Some sets (e.g., Phosphor) include RTL variants.

Integration Approach

Stack Fit

  • Primary Use Case: Laravel + Filament (v2.x+). Confirmed compatibility via Filament’s official docs.
  • Secondary Use Case: Standalone Laravel apps using Blade Icons (limited; core value is Filament-specific).
  • Tooling:
    • Composer: Standard package installation (composer require filafly/filament-icons).
    • Blade: Replace filament-icon components with x-filament-icons.icon (e.g., <x-filament-icons.icon name="heroicon-o-cog" /><x-filament-icons.icon name="phosphor-cog" />).
    • Tailwind: Icon sets include Tailwind classes (e.g., h-5 w-5 text-gray-600).

Migration Path

  1. Assessment Phase:
    • Audit existing icon usage (e.g., heroicon-* in Blade files).
    • Identify high-priority components (e.g., navigation, buttons).
  2. Pilot Integration:
    • Install core package + one icon set (e.g., Phosphor):
      composer require filafly/filament-icons filafly/filament-phosphor-icons
      
    • Update config/filament-icons.php:
      'default' => 'phosphor',
      'sets' => [
          'phosphor' => Filafly\FilamentIcons\IconSet\PhosphorIconSet::class,
      ],
      
    • Replace icons in a single panel/resource (e.g., Resources/Pages/Dashboard.php).
  3. Full Rollout:
    • Use php artisan filament-icons:publish to generate config stubs.
    • Replace remaining icons via search/replace (e.g., heroicon-o-*phosphor-*).
    • Test all UI states (hover, active, disabled).

Compatibility

  • Filament Version: Tested with Filament v3.x. For v2.x, check Filament’s upgrade guide.
  • Icon Set Conflicts: Avoid mixing icon sets (e.g., Phosphor + Font Awesome) unless explicitly supported.
  • Blade Directives: Ensure no custom directives conflict with filament-icons (e.g., @icon).
  • Asset Pipeline: Icon sets include CSS/JS; verify no duplicates with existing assets (e.g., Tailwind purge).

Sequencing

  1. Core Package: Install filafly/filament-icons first.
  2. Icon Set: Add one official set (e.g., Phosphor) for validation.
  3. Configuration: Define defaults and overrides in config/filament-icons.php.
  4. Component Updates: Replace icons in:
    • Panels (app/Filament/Resources/Pages/*).
    • Widgets (app/Filament/Widgets/*).
    • Custom components (resources/views/components/*).
  5. Testing: Validate:
    • Icon rendering in all states (light/dark mode).
    • Performance (e.g., npx filament-optimize).
    • Edge cases (e.g., missing icons).

Operational Impact

Maintenance

  • Update Strategy:
    • Monitor filafly/filament-icons for major releases (check Releases).
    • Update icon sets independently (e.g., composer update filafly/filament-phosphor-icons).
    • Pin versions in composer.json to avoid surprises:
      "require": {
          "filafly/filament-icons": "^1.0",
          "filafly/filament-phosphor-icons": "^1.0"
      }
      
  • Deprecation: Official icon sets may deprecate Heroicons; plan for migration to alternatives (e.g., Phosphor).

Support

  • Troubleshooting:
    • Debug missing icons with:
      php artisan filament-icons:list
      
    • Check logs for FilamentIcons errors (e.g., invalid icon names).
  • Community Resources:
  • Vendor Support: MIT license; no SLA. Rely on community or self-hosted fixes.

Scaling

  • Performance:
    • Icon resolution is lazy-loaded; minimal impact on TTFB.
    • For large apps, pre-compile icon sets (e.g., generate SVG sprites for critical paths).
  • Concurrency: No shared state; safe for multi-tenant Filament apps.
  • Storage: Icon sets add ~1–5MB to vendor directory (negligible).

Failure Modes

Scenario Impact Mitigation
Icon set package fails to install Broken icons in UI Fallback to default set in config/filament-icons.php.
Custom icon set misconfigured Missing icons or errors Validate via php artisan filament-icons:list.
Filament core update breaks compatibility Icon components fail Test against Filament’s beta channel pre-release.
Network issues loading icon assets Delayed icon rendering Use local asset paths (e.g., public/vendor/phosphor).

Ramp-Up

  • Developer Onboarding:
    • Document icon naming conventions (e.g., phosphor-cog vs. heroicon-o-cog).
    • Provide a cheat sheet for common icons (e.g., phosphor-users, phosphor-settings).
  • Training:
    • 1-hour workshop covering:
      • Installation and configuration.
      • Icon replacement in Blade files.
      • Custom icon set creation.
  • Documentation:
  • Tooling:
    • Add a Make:FilamentIcon Artisan command for quick icon generation:
      php artisan make:filament-icon --name=phosphor-cog --set=phosphor
      
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.
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle