codeat3/blade-majestic-icons
Blade Majestic Icons brings the Majestic icon set to Laravel as simple Blade components. Render crisp SVG icons anywhere in your views with a clean, consistent tag syntax, keeping markup readable and styles easy to customize.
<x-majesticons-home-line />, <x-majesticons-home-solid />) rather than an icon font, an SVG sprite, or an npm/Vite asset. That choice drives caching behaviour, theming, accessibility handling, and whether icons ship in the JS bundle. Adopt it deliberately as that option, not incidentally.blade-* icon packages, which is exactly how a codebase ends up with one icon dependency per squad. A PM decision worth making explicitly: standardise on one or two families, not one per team.illuminate/* constraint via PR #13, with no API, naming, or markup changes. Support lands reactively, after each Laravel major ships, so the bump belongs on the upgrade checklist ordered before the framework bump, not treated as a surprise.Adopt when:
^2.3 or composer update will not resolve.currentColor, so Tailwind text-*, dark:, and group-hover: variants work without extra plumbing, and only rendered icons reach the HTML.<x-icon name="home" variant="solid" />) with default size, aria-hidden, and — for data-driven icon names — an enum or allow-list. Component names are free strings derived from SVG filenames, so a typo is a runtime "unable to locate component" exception, not a build error. That guardrail is a product-quality decision the package does not make for you, and it is a prerequisite wherever names come from a CMS, API, or nav table.Look elsewhere when:
aria-hidden, role, or labels — all of that stays in your wrapper and templates.For executives: This is a small, free, MIT-licensed building block that lets our Laravel engineers drop consistent, professionally drawn icons into the interface with no design time and no front-end build work. Release 2.3.0 exists solely to keep it compatible with the newest Laravel version, so it will not block our upgrade path — it just needs a line on that checklist. It carries no meaningful product risk as long as we treat it as a convenience dependency rather than critical infrastructure: the assets are MIT-licensed, we can own copies of the SVG files, and replacing it with an in-house equivalent is about a day of work. Its only real cost is that it is community-maintained by effectively one person, so we deliberately keep it off the critical path, keep it out of email and PDF output, and standardise on one or two icon families rather than accumulating one dependency per team.
For engineering: Version 2.3.0 is a maintenance release — a widened illuminate/* constraint for Laravel 13, no API changes, no renamed components, no config changes. Anything written against 2.2.x keeps working; the bump should be sequenced before the Laravel 13 upgrade so a resolution failure surfaces early rather than mid-upgrade. Integration is composer require, auto-discovery, and use — no provider registration, no publish step, no runtime process, no migrations. Three things to hold: first, component names come from SVG filenames, not the vendor's marketing site, and -line and -solid are separate components — ls vendor/codeat3/blade-majesticons/resources/svg is the source of truth; second, land a single app-level wrapper component (size, colour, aria-hidden defaults) before broad adoption, or class="size-5 shrink-0" will drift across hundreds of call sites; third, if any icon name is data-driven, ship the enum/allow-list first, because a bad name is a runtime exception, not a build failure. Keep it off the critical path and out of Gmail templates and DomPDF/mPDF output. If we ever need to diverge, vendor the SVGs and register a local anonymous component path — never edit vendor/. Register the dependency with an owner, a pin policy per Laravel major, and the documented fallback.
How can I help you explore Laravel packages today?