codeat3/blade-clarity-icons
codeat3/blade-clarity-icons is a Laravel Blade package for using Clarity Icons in your views. It provides simple Blade components to render any Clarity icon as inline SVG, making icons easy to add, style, and customize in PHP applications.
<x-clarity-*> components track upstream Clarity naming, so feature teams stop inventing one-off SVGs and stop arguing over "where does this icon live and who maintains it" at every kickoff. This is the highest-leverage outcome — it converts a per-feature decision into a platform convention.aria-hidden vs. aria-label/<title> per icon. That is a product-quality decision worth making once, not per feature.Adopt when most of the following hold:
^1.11); teams on Laravel 10–12 stay on ^1.10.Look elsewhere when:
To executives: This is a small, low-risk library that gives our Laravel product a consistent, professionally drawn icon set without spending design or engineering time sourcing and maintaining graphics. The 1.11.0 release adds Laravel 13 support, so adopting it now does not create upgrade debt at our next platform refresh — it removes a category of "our icons broke / our components are stale" work from that migration. Cost is one Composer dependency: no license fee, no infrastructure footprint, no external service, and no page-load penalty because icons render inline. Two caveats stated plainly: it is maintained by a single contributor, and we mitigate that by routing all usage through one wrapper component so it is replaceable in an afternoon.
To engineering: It is a Blade component wrapper over VMware's Clarity icon set. composer require, auto-discovery registers the provider, and <x-clarity-*> components are immediately available — no config publish, no migrations, no env vars, no asset build, no runtime JS. Treat ^1.11 as the constraint on Laravel 13; ^1.10 still serves older majors. The 1.11.0 change is a single compatibility PR — reportedly no new icons, no API changes, no deprecations — so verify the composer.json constraint widened rather than shifted and confirm the PHP floor (likely 8.3+) against our runtime matrix before rollout. Then run view:clear / view:cache on a non-production branch to surface component-resolution errors early, and do a visual regression pass watching SVG attributes and fill="currentColor" — that is the usual breakage class.
The de-risking move, stated once and treated as a delivery requirement: every template goes through a single semantic wrapper (<x-icon name="delete" />) rather than referencing <x-clarity-trash> directly. That wrapper decouples our views from the vendor's icon vocabulary, absorbs component renames, enforces consistent sizing and accessibility defaults, and makes a swap a contained change rather than a sprint. It also gives us the fallback path: the underlying SVGs are public, so forking or vendoring is a low-cost escape hatch if the package is abandoned. The worst realistic failure is not a broken icon — it is a Laravel major bump where this dependency has no compatible release and blocks the whole migration. The wrapper is planned insurance against exactly that.
Recommended next step: pilot on one internal or admin surface, confirm the Clarity vocabulary covers our needs, establish team conventions for sizing and accessibility alongside the wrapper, then standardize. Do not attempt multi-icon-set consolidation during the initial adoption.
How can I help you explore Laravel packages today?