codeat3/blade-icons-packages-collection
A Laravel Blade package that bundles icon sets from popular icon packages into one collection, letting you render any included icon with a simple Blade component or directive without installing each set separately.
Architecture fit. This package is a curated index of blade-icons-compatible icon sets, not a renderer and not a bundled component library with its own pipeline. The rendering substrate is upstream (blade-ui-kit/blade-icons), which registers SVG sets as Blade components behind per-set prefixes. The architectural consequence for a TPM is that this package contributes almost nothing to the runtime path: in the catalog reading it is documentation and a manifest, and in the metapackage reading it is a thin set of require entries plus an optional config stub. It sits outside the product architecture either way. Its value is in the decision it informs — which icon set to adopt, on which licence, at what dependency cost — not in the code it ships. Frame it as a research artifact that accelerates a decision, not as infrastructure the product is built on.
Integration feasibility. Mechanically trivial, and therefore easy to mis-scope. In the metapackage case it is one composer require with Laravel auto-discovery; in the catalog case there is nothing to install at all. The effort is governance, not engineering: choosing which sets the design system consumes, enforcing prefix conventions so home/user/search do not collide across sets, auditing per-set licensing (MIT, CC-BY, OFL, and the Font Awesome free/pro split), and pinning the chosen upstream packs in your own manifest. Budget sprint time for selection and review — installation is an afternoon at most, and often a no-op.
Technical risk.
blade-icons constraints. Conflicts compound and can gate your framework-upgrade cadence behind a curator's release hygiene — a coupling you do not want for a cosmetic asset.vendor/ size, container image size, autoloader classmap, and view:cache time all grow with each registered set, and the cost is paid on every CI run.Key questions.
require entries, or a README index of links? This changes the integration effort by an order of magnitude.blade-icons and each icon set, or float across majors?blade-icons major and our PHP/Laravel floors (PHP 8.1+/Laravel 9+ at minimum, with older-app branches if needed)?Stack fit. Laravel 8–11 with Blade, Livewire, or Inertia frontends — specifically greenfield work or pre-design-system projects where the logo vocabulary is still undecided, plus marketing and docs surfaces that need "Built with", integrations grids, and compatibility badges. It is a poor fit for legacy apps with an established icon pipeline (the discovery value is already spent) and irrelevant outside Laravel/Blade (React, Vue, native mobile, or a static marketing site on another stack).
Migration path. Do not adopt wholesale. Use the collection as a catalogue: read the manifest, diff it against the design system's actual icon requirements, then composer require the two or three upstream sets you choose directly in your own composer.json with your own constraints. If individual blade-icons-* packages are already in use, there is no migration — the collection is an input to a decision, not a target state. If you do install the metapackage for evaluation, treat it as a spike branch artifact that must not merge.
Compatibility. Validate in a throwaway branch before committing: composer require --dry-run and composer why-not to surface resolution conflicts, then inspect the full transitive tree. Check three constraints specifically — PHP, illuminate/support, and the blade-icons major — and confirm the base package's version floor matches your Laravel version. Grep existing Blade templates for name collisions against any prefix the package would introduce, and verify that a prefix convention can be applied without churning existing templates. Note that vendor:publish output landing in resources/svg/ is a permanent commitment; decide where customisations live before publishing anything.
Sequencing.
vendor/ delta and php artisan view:cache wall time before and after; sanity-check container image growth.docs/icons.md so onboarding developers know why one set over another and so the list doubles as your response plan for takedown or brand-refresh requests.Maintenance. Curation is ongoing labour. Every upstream release is a potential stale entry, and a list-only artifact has no mechanism to force a refresh — there is no CI here to tell you an entry broke. Bus factor appears to be one, and with zero dependents there is no crowd-sourced bug discovery; you are the first to hit any breakage. Budget a fork-and-vendor contingency if curation lags your upgrade cadence, and keep the artifact out of critical build paths so an abandoned upstream can never block a release.
Support. There is no vendor SLA and no issue history to learn from. Assign an internal owner for the icon-set decision itself — that person owns the shortlist, the licence register, and the removal process. Escalation for actual rendering behaviour goes to blade-ui-kit/blade-icons, which is well maintained and is the stable substrate; upstream icon-pack repositories are the second tier. The collection sits outside the escalation path entirely, which is precisely why it should not be a production dependency.
Scaling. No per-request concern: icons are inlined at compile time, and there is no runtime JavaScript. The scaling cost is CI and deployment — autoloader classmap growth, container image size, and view-cache compilation all scale with the number of registered sets, and they compound as the design system grows. Cap registration at what the design system actually consumes; "install everything" is the anti-pattern this package's framing quietly encourages. Add a cheap guard: an artisan command or a test asserting every x-<prefix>- referenced in templates resolves to a registered set, so a set removal fails in CI rather than in production.
Failure modes.
php artisan icons:clear and icons:cache in the deploy step. Put this in the deploy runbook before the first release.resources/svg/ and get committed; a re-vendor:publish on upgrade clobbers local edits. Customisations belong in a separate registered set, never in the published output.Ramp-up. Hours for a Blade-fluent developer to read the catalog and render a chosen icon. The genuine ramp is governance: prefix conventions, an icon review and licensing checklist, and a documented shortlist that survives the person who wrote it. Given the adoption signals, keep investment proportional. Position this as a shortcut to icon-set discovery and a low-cost input to design-system roadmap decisions — near-zero runtime risk, meaningful cost avoidance against hand-rolled or commissioned assets, with the explicit caveat that the value largely ends the moment the icon set is chosen. The decision it enables outlives the package; make sure the decision, not the dependency, is what you carry forward.
How can I help you explore Laravel packages today?