owenvoke/blade-entypo
Blade Entypo brings the Entypo icon set to Laravel Blade, offering simple directives for embedding crisp SVG icons in your views. Lightweight and easy to install, it keeps templates clean while giving you quick access to hundreds of scalable icons.
composer require and a one-line <x-entypo-name /> call. A PM can commit to consistent icon treatment on a surface without a designer, an SVG hand-off process, or a build-pipeline ticket.^13 as a standalone registration, not a thin wrapper over blade-ui-kit/blade-icons), swapping icon sets later is a template-touching migration — unless the team introduces a <x-icon> alias component on day one. The PM-relevant call: mandate the wrapper at adoption so "switch icon sets" stays a one-file change and never becomes a roadmap item.role, or title guarantees. Every icon is either decorative (aria-hidden="true") or meaningful (role="img" + aria-label). This is a compliance decision, and it should be enforced centrally in the alias component rather than left to review discipline across dozens of templates.LICENSES file) — with a legal read required before customer-facing exposure.<svg> in the DOM. A 200-row table with three icons per row is 600 SVGs on the wire. Acceptable for most apps, but it is a decision to measure rather than assume: if payload or DOM weight shows up in profiling, restrict icons to summary/detail views.Adopt when:
currentColor, so sizing and colour are just utility classes — no font files, @font-face, or asset-pipeline step.<i class="entypo-*">). This is the clearest win: fewer bytes on first paint, no FOIT, and deletable font artefacts.x-entypo-* directly.Look elsewhere when:
Verify before committing: does the 2.4.0 constraint add Laravel ^13 alongside earlier majors or replace them, and what is the new PHP floor? The release notes do not say, and a framework-constraint release is exactly the change class that forces a transitive downgrade. On Laravel 11/12, pin to ^2.3 and treat that line as frozen.
To executives: "Icons are needed on every surface we ship — navigation, status, empty states, tables. The build alternative is a design-system workstream with ongoing cost; this is a single dependency that turns each icon into one line of template code. Integration is roughly half a day to prove on one view and one to two days to roll out. It is purely additive at the presentation layer — no business logic, no data, no external service — so it can be removed without touching the product. The two things to resolve are not engineering problems: the glyph licence needs attribution placement, and the icon set itself is dated and will not grow. Both are decisions we should make deliberately now rather than discover at launch."
To engineering: "Auto-discovered service provider, bundled SVGs, anonymous Blade components. No config edits, no published assets, no runtime dependencies. Output is inline SVG inheriting currentColor, so Tailwind handles colour and size. Two asks: build the <x-icon> alias component on day one so a future swap to Heroicons or Lucide is a one-file change rather than a template-wide hunt, and put the decorative-vs-meaningful accessibility decision inside that component so it cannot be forgotten. Dynamic and config-driven icon names go through x-dynamic-component; semantic mappings belong in config or enums, not Blade @switch blocks. Add php artisan view:cache to the deploy script — anonymous components resolve at view-compile time, so a stale compiled view is the usual "the new icon didn't appear" suspect."
The one-line summary: low-cost, low-coupling, easily reversed — the risks are licensing and a frozen vocabulary, and both are ours to manage, not the package's to solve.
How can I help you explore Laravel packages today?