PHPackages                             fuzzyfox/lucide-for-laravel - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Templating &amp; Views](/categories/templating)
4. /
5. fuzzyfox/lucide-for-laravel

ActiveLibrary[Templating &amp; Views](/categories/templating)

fuzzyfox/lucide-for-laravel
===========================

An always-current Lucide blade-icons set and PHP enum for Laravel and Filament, generated from the official Lucide release.

v1.3.0(1w ago)0221MITPHPPHP ^8.2CI failing

Since Jun 11Pushed 1w agoCompare

[ Source](https://github.com/fuzzyfox/lucide-for-laravel)[ Packagist](https://packagist.org/packages/fuzzyfox/lucide-for-laravel)[ Docs](https://github.com/fuzzyfox/lucide-for-laravel)[ RSS](/packages/fuzzyfox-lucide-for-laravel/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (4)Dependencies (5)Versions (6)Used By (0)

Lucide for Laravel
==================

[](#lucide-for-laravel)

[![Latest Version on Packagist](https://camo.githubusercontent.com/e00506ed85eb9f20237654c9364a339ae13de50cd21f19cb22f1b735f712a77b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f66757a7a79666f782f6c75636964652d666f722d6c61726176656c2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/fuzzyfox/lucide-for-laravel)[![Tests](https://camo.githubusercontent.com/86c18c07c3bca8252f642a6b94c9e3d00b7e8219ef4a4620b1f8f2cc614a2e3f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f66757a7a79666f782f6c75636964652d666f722d6c61726176656c2f74657374732e796d6c3f6272616e63683d6d61696e267374796c653d666c61742d737175617265266c6162656c3d7465737473)](https://github.com/fuzzyfox/lucide-for-laravel/actions/workflows/tests.yml)[![Total Downloads](https://camo.githubusercontent.com/0084a9d903e22b5a1f9cd7d202763d73a7f912b8c21a217715fda98a6f0a2ee5/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f66757a7a79666f782f6c75636964652d666f722d6c61726176656c2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/fuzzyfox/lucide-for-laravel)[![PHP Version](https://camo.githubusercontent.com/b0b0cb24318695e9ce4ae7e4ca4f3ef1ca8a523115e58475692fc6c4cc7d866a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f66757a7a79666f782f6c75636964652d666f722d6c61726176656c3f7374796c653d666c61742d737175617265)](https://packagist.org/packages/fuzzyfox/lucide-for-laravel)[![License](https://camo.githubusercontent.com/d6f6d599be2830339e5913590f40a3a027afd0a59e8f1fcde9e41a45eb6ac3d1/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f66757a7a79666f782f6c75636964652d666f722d6c61726176656c2e7376673f7374796c653d666c61742d737175617265)](LICENSE)

An always-current [Lucide](https://lucide.dev) icon set and PHP enum for Laravel and [Filament](https://filamentphp.com) — generated straight from the official Lucide release, so new and renamed glyphs reach you on **your** schedule instead of a third-party mirror's.

- 🎨 Every Lucide glyph as a [blade-icons](https://github.com/blade-ui-kit/blade-icons) set under the `lucide-` prefix — `@svg('lucide-camera')` / ``.
- 🧩 A generated `Lucide` enum — one autocompletable, rename-safe case per glyph, droppable into `->icon(Lucide::Camera)`.
- 🪄 An optional, auto-discovered Filament overlay that re-skins Filament's built-in chrome icons to Lucide — inert when Filament isn't installed.
- ⚡ Zero runtime cost — SVGs are served from disk and the enum is autoloaded; nothing is fetched or generated in your app.

Why this exists
---------------

[](#why-this-exists)

Most Laravel apps reach Lucide through community packages (`blade-ui-kit/blade-lucide-icons`, `mallardduck/blade-lucide-icons`) that, in practice, lag upstream — new and renamed glyphs land in Lucide proper long before they reach those packages. This package owns generation from the upstream source of truth ([`lucide-static`](https://www.npmjs.com/package/lucide-static)), so freshness is a decision, not a wait: a pinned Lucide release in, regenerated artifacts out. A daily age-gated `bump → sync → test → PR` cron keeps the set ahead of the abandoned alternatives.

Requirements
------------

[](#requirements)

- PHP `^8.2` (8.2 – 8.5)
- Laravel 11.28+, 12, or 13
- Filament `^5.0` — optional, only needed for the chrome overlay

Installation
------------

[](#installation)

```
composer require fuzzyfox/lucide-for-laravel
```

Both service providers are auto-discovered — there's nothing to register. The Filament overlay self-guards on `class_exists`, so it stays completely inert in a non-Filament app.

Usage
-----

[](#usage)

### In Blade

[](#in-blade)

Every glyph is available under the `lucide-` prefix:

```
@svg('lucide-camera')

```

Icons inherit colour via `currentColor` and are sized with CSS — pass your own classes and they're applied without any duplicate or conflicting attributes on the rendered SVG:

```
@svg('lucide-camera', 'w-6 h-6 text-primary-500')

```

### The `Lucide` enum

[](#the-lucide-enum)

A plain `string`-backed enum with one case per glyph. Each case's value **is** its icon-set name, so the enum and the icon set can never disagree:

```
use FuzzyFox\Lucide\Lucide;

Lucide::Camera->value;          // 'lucide-camera'
Lucide::AlarmClockPlus->value;  // 'lucide-alarm-clock-plus'
```

Case names are derived deterministically from the glyph name, with digit-runs spelled as whole-number English words so they stay valid, predictable, and collision-free across syncs:

```
Lucide::ClockTwelve->value;  // 'lucide-clock-12'
Lucide::DiceSix->value;      // 'lucide-dice-6'
```

### With Filament

[](#with-filament)

Pass enum cases anywhere Filament accepts an icon — Filament resolves them via `->value`:

```
use FuzzyFox\Lucide\Lucide;

TextColumn::make('name')->icon(Lucide::Camera);

Action::make('delete')->icon(Lucide::Trash);
```

When Filament is installed, the auto-discovered overlay also re-skins Filament's built-in chrome — the global search field, sidebar toggles, theme switcher, notification bell, pagination, table sort handles, and more — to their Lucide equivalents, app-wide, with no per-panel registration. No configuration required.

How it stays current
--------------------

[](#how-it-stays-current)

Single source of truth, generated outward, so the parts can't drift:

 ```
flowchart LR
    src["📦 lucide-staticpinned via pnpm"]:::source
    sync(["⚙️ composer sync"]):::build
    svg["🎨 resources/svg/*.svg"]:::artifact
    license["📄 resources/svg/LICENSE"]:::artifact
    enum["🔤 src/Lucide.php"]:::artifact
    blade["Blade@svg('lucide-*')"]:::runtime
    php["PHPLucide::Camera"]:::runtime

    src -->|read| sync
    sync -->|generate| svg
    sync -->|generate| license
    sync -->|generate| enum
    svg --> blade
    enum --> php

    classDef source fill:#1e293b,stroke:#64748b,color:#e2e8f0
    classDef build fill:#7c3aed,stroke:#a78bfa,color:#ffffff
    classDef artifact fill:#0f766e,stroke:#2dd4bf,color:#ffffff
    classDef runtime fill:#1e3a8a,stroke:#60a5fa,color:#ffffff
```

      Loading - **The enum and the SVG set are regenerated from the same snapshot in one command**(`composer sync`), so they cannot disagree. A correspondence test asserts every enum case maps to exactly one icon file and vice versa.
- **Nothing is fetched at runtime.** Generated artifacts are committed and shipped in the Composer dist archive; consumers run nothing and fetch nothing.
- **Freshness is a human decision.** A daily GitHub Action age-gates `pnpm update` within `^1.x` (refusing releases younger than ~3 days), regenerates, runs the full test suite, and only on green opens or updates a single rolling PR whose diff shows exactly which glyphs changed.

The design rationale is captured in [`CONTEXT.md`](CONTEXT.md) (glossary) and the ADRs under [`docs/adr/`](docs/adr).

Testing
-------

[](#testing)

```
composer test
```

The suite covers the generator modules in isolation (case naming, guard-rails, SVG normalisation, enum emission), an end-to-end sync, the correspondence between the committed enum and icon set, and both service providers under Testbench.

Contributing
------------

[](#contributing)

Issues and pull requests are welcome on [GitHub](https://github.com/fuzzyfox/lucide-for-laravel). Note that the icon set and enum are **generated artifacts** — to change them, run `composer sync` against an updated `lucide-static` pin rather than editing `resources/svg/` or `src/Lucide.php` by hand.

Credits
-------

[](#credits)

- [Lucide](https://lucide.dev) — the icon set this package vendors and tracks.
- [blade-icons](https://github.com/blade-ui-kit/blade-icons) — the rendering layer.
- [William Duyck](https://github.com/fuzzyfox)

License
-------

[](#license)

This package's own code is licensed under the **MIT License**. The vendored Lucide SVGs retain their upstream **ISC** (and Feather **MIT**) notices, shipped verbatim in [`resources/svg/LICENSE`](resources/svg/LICENSE). The overall distribution is therefore `MIT AND ISC`. See [LICENSE](LICENSE) for details.

###  Health Score

46

—

FairBetter than 92% of packages

Maintenance98

Actively maintained with recent releases

Popularity16

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 90% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~8 days

Total

5

Last Release

11d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2d49d84d9bd2c13d96b82780962eaf49f0ddf936bd475a1e1f99f4feda78793a?d=identicon)[fuzzyfox](/maintainers/fuzzyfox)

---

Top Contributors

[![fuzzyfox](https://avatars.githubusercontent.com/u/99770?v=4)](https://github.com/fuzzyfox "fuzzyfox (27 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (3 commits)")

---

Tags

blade-iconsfilamenticonslaravellaravel-packagelucidelucide-iconsphplaraveliconsbladefilamentblade-iconslucide

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/fuzzyfox-lucide-for-laravel/health.svg)

```
[![Health](https://phpackages.com/badges/fuzzyfox-lucide-for-laravel/health.svg)](https://phpackages.com/packages/fuzzyfox-lucide-for-laravel)
```

###  Alternatives

[mallardduck/blade-lucide-icons

A package to easily make use of Lucide icons in your Laravel Blade views.

101926.8k36](/packages/mallardduck-blade-lucide-icons)[technikermathe/blade-lucide-icons

A package to easily make use of Lucide icons in your Laravel Blade views.

18421.4k11](/packages/technikermathe-blade-lucide-icons)[codeat3/blade-google-material-design-icons

A package to easily make use of "Google Fonts Material Icons" in your Laravel Blade views.

23572.2k4](/packages/codeat3-blade-google-material-design-icons)[ublabs/blade-simple-icons

A package to easily make use of Simple Icons in your Laravel Blade views.

1963.4k](/packages/ublabs-blade-simple-icons)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
