codeat3/blade-grommet-icons
Easily add Grommet icons to Laravel Blade views with codeat3/blade-grommet-icons. This lightweight package provides a simple Blade component for rendering any Grommet icon, with support for custom sizing, colors, and extra attributes for flexible UI integration.
Architecture fit. codeat3/blade-grommet-icons is an asset-distribution package with a Laravel auto-discovery shim: it ships the Grommet SVG set and registers it with blade-ui-kit/blade-icons through a package service provider. There is no persistence layer, queue surface, scheduled task, or config file to publish. It renders inline SVG through Blade components (<x-grommet-*>), so it composes with every Blade rendering path already in use — standard views, Livewire, Inertia Blade shells, Mailables, and Nova — without imposing an architectural opinion. For a TPM, this is the cheapest dependency category available: additive, isolated, and removable by deleting one Composer line plus the associated tags.
Integration feasibility. composer require codeat3/blade-grommet-icons and auto-discovery is the entire install. No migrations, no env vars, no permissions, no build step, no npm. The real work is design-system work rather than engineering work: mapping current inline SVGs or icon-font references to component names, and ratifying conventions for size (class="w-4 h-4" vs. size prop), colour inheritance (currentColor), and accessibility (aria-hidden for decorative icons vs. aria-label/<title> for meaningful ones). A single developer can run a credible pilot in an afternoon; the longer pole is design sign-off.
Technical risk. Low overall, but concentrated in three places a TPM should track explicitly:
blade-ui-kit/blade-icons, illuminate/support, and PHP. Historically this is the single most common way an icon-set wrapper blocks a framework upgrade across an entire application. 1.11.0 is a compatibility-only release adding Laravel 13 support — the maintenance signal is good, but we should verify the declared ranges ourselves rather than infer readiness from the changelog.swapnilsarwe) operating a large family of sibling codeat3/blade-* icon packages. Maintained and responsive on framework bumps, but not foundation-backed. Mitigation is cheap: pin the version, keep it at a leaf of the dependency graph, and treat forking/vendoring the SVG directory as a half-day task if it ever becomes load-bearing.Key questions for the maintainer/team before commitment.
blade-ui-kit/blade-icons, illuminate/support, and PHP, and do they satisfy both our current and next framework version?php artisan blade-icons:cache / blade-icons:clear under a read-only production filesystem?Stack fit. Requires a Laravel application on PHP 8.x rendering Blade. Teams on Livewire, Filament, or Inertia-with-Blade-roots get the full benefit unchanged; API-only services and headless SPA front ends gain nothing and should not adopt it. This is deliberately framework-version-coupled — 1.11.0 is that coupling — so it belongs in the same review lane as the framework itself.
Migration path. Treat it as a strangler replacement for whatever icon mechanism exists today: blade-heroicons, Font Awesome with its font/CSS payload, hand-inlined SVG partials, or a design-team Figma export. Sequence: inventory current icon usage → build a name-mapping table (old reference → Grommet slug) → introduce new components side-by-side → migrate templates incrementally → delete the predecessor package and its CSS/font weight. Because blade-icons component syntax is shared across sets, a team already on any blade-ui-kit icon package experiences this as a rename, not a re-architecture.
Compatibility. 1.11.0 adds Laravel 13 support with no breaking changes or deprecations, so the upgrade from 1.10.0 is a routine version bump. The critical caveat: Laravel 13 support in this leaf package does not imply the rest of the codeat3/blade-* family, or our own direct dependencies, are ready. Verify the whole tree resolves on a scratch branch before scheduling an upgrade window.
Sequencing.
composer why-not laravel/framework 13.* with the package installed to prove it does not become the blocker.^1.11 in composer.json, commit the lockfile, and do not float the constraint.Maintenance. Low ongoing effort, but not zero vigilance. This is a passively consumed dependency: it will not page anyone, but it does require a version pin, a lockfile commit, and a routine review when the framework or upstream Grommet set moves. The most common failure mode is not a broken package — it is decay into a mixed icon inventory, where three icon systems coexist and nobody is sure which is canonical. Commit to publishing an icon catalogue (names, rendered previews, sizing and accessibility conventions) and naming an owner.
Support. Community package with a single maintainer and no SLA, security policy, or LTS commitment. Acceptable for cosmetic output; not acceptable if icons become the sole affordance in a critical flow. Budget for vendoring the SVG source as the escape hatch rather than assuming an external community will catch regressions. Confirm upstream Grommet licence and attribution obligations before shipping.
Scaling. Negligible runtime impact. Inline SVG increases page weight slightly versus an icon font, but avoids a separate font request and CSS payload. Use php artisan blade-icons:cache at build time with write access, and ensure the production filesystem is read-only at runtime. There is no dynamic client-side behaviour, so scaling characteristics are those of the surrounding Laravel app.
Failure modes. (1) A transitive constraint on blade-icons or illuminate/support blocks a Laravel upgrade — mitigate by auditing early and keeping the package at a leaf. (2) An upstream icon is renamed or removed in a minor release — mitigate with a CI check that renders every icon component used in templates. (3) Cache generation fails on a read-only filesystem — mitigate by running the cache step in the deploy pipeline. (4) Team forgets to retire the predecessor icon system — mitigate by deleting it as part of the migration acceptance criteria. Blast radius remains cosmetic in all cases.
Ramp-up. Trivial for any Laravel developer: the component syntax is blade-icons-standard, and the README covers installation and attributes. The real ramp-up is design and accessibility alignment, not engineering. A short internal note covering naming, sizing, colour, and decorative-vs-meaningful icon rules is sufficient. Expect one afternoon for a developer pilot and one design review for conventions; full template migration depends on inventory size, not on package complexity.
How can I help you explore Laravel packages today?