Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Nova Hero Icon Laravel Package

rmsj/nova-hero-icon

Integrates the Heroicons SVG icon set into Laravel Nova, letting you add crisp, ready-made icons to your admin panel resources and custom tools without bundling or managing the assets yourself.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for admin-panel icon UX. The package is a convenience layer, not a capability moat, so the real comparison is ownership burden versus build time — and build time here is measured in hours (roughly half a day to scaffold a Nova tool against current Heroicons). "Buy" costs almost nothing in license or install (MIT, one composer require), but it transfers maintenance to us on day one. This decision belongs in a build-vs-buy log with that framing, not a price comparison.
  • Dependency-risk posture for non-core UI. Signals are unambiguous: 7 stars, 0 dependents, last release May 2020, no maintainer surface, no support channel. This is a clean test case for a standing policy of "vendor or fork anything we adopt; never depend on upstream for cosmetic admin affordances." The PM-useful outcome of rejecting it on maintenance risk alone is legitimate — it keeps a dead dependency out of the codebase before it becomes permanent tax.
  • Sequencing against the Nova upgrade roadmap. The package is a rider on the Nova version decision, not a driver of it. Nova 4+ moved to Vue 3 and changed the tool/asset contract, so adoption is only coherent while we remain on Nova 2/3. That means icon work must be scheduled behind upgrade planning, never ahead of it, and any adoption should be logged as an item on the Nova-upgrade checklist.
  • Design-system standardization. Useful for a decision to declare Heroicons the canonical icon vocabulary inside Nova and expose it consistently across resources, cards, metrics, and custom tools. Important caveat for that decision: the bundled SVGs are frozen at a 2020 revision, so standardizing on this package means standardizing on an old icon set whose names have since drifted (e.g. user-circle, annotation, dots-circle-horizontal). Standardize on the icon set, not on this package's snapshot of it.
  • CMS / back-office use-case fit. Relevant only where non-technical editors need to tag categories, menu items, statuses, or content blocks with an icon without developer involvement. Confirm that need exists before scoping anything; if editors never touch icons, the decision closes immediately at zero cost.
  • Do-nothing / defer as the default. For a non-core UI affordance, declining costs nothing today and preserves optionality. If the need is genuinely one screen, a half-day in-house component delivers the same result with a named owner and no fork obligation.
  • Risk containment scope, if adopted anyway. The package's whole job is persisting an icon-name string; rendering is ours. Keeping the display layer independent (our own <x-heroicon> Blade component reading from a committed name list) means a Nova upgrade breaks only the picker, not the screens — a one-file replacement rather than a hunt.

When to Consider This Package

Consider it when:

  • You are on a legacy Nova 2.x/3.x install (Laravel 6/7, PHP 7.x, Vue 2). This is effectively the only compatible configuration; a five-minute check of composer.json constraints is the go/no-go, and anything requiring Nova 4/5 should stop the evaluation there.
  • You already use Heroicons as your icon vocabulary and want editors choosing from that set rather than pasting SVG paths.
  • The requirement is internal-only and non-critical — an affordance where an unmaintained component failing is an annoyance, not a workflow outage.
  • You can vendor or fork the source into your own VCS, pin the commit, and name an engineer who owns it. Without that commitment the package is disqualified outright; installing it makes us the maintainers.
  • The requirement is narrow: pick an icon name, store the string, render it back. Search, categories, custom SVG upload, icon-set portability, and modern Heroicons revisions are out of scope.
  • You are treating it as a reference implementation — reading its Vue component and rebuilding it inside your own nova:tool scaffold against a current Heroicons release. Given the tiny surface area, this is usually cheaper across a two-year horizon than carrying a fork.

Look elsewhere when:

  • You are on Nova 4 or 5. A 2020-era tool will not render reliably against Vue 3, and there is no evidence of anyone running it on a modern stack. A blank or erroring panel is the expected result until a spike proves otherwise.
  • You need security patching, vendor support, or maintenance guarantees. There is no issue history, no community answers, and no response path.
  • Icon selection is load-bearing for an editor workflow. Build the minimal custom Nova field — comparable scope, maintainable result, real owner.
  • You cannot accept fork ownership, or you run multiple Nova-versioned applications where you would inherit duplicate forks across majors.
  • A maintained alternative exists — a current Heroicons Blade/Vue component with an active owner satisfies the same need without abandonment exposure.
  • Failure would be silent and expensive. Invalid icon names render an empty SVG with no exception, no warning, and no log entry; if bad data reaching the database is unacceptable, hand-rolled validation and a visible fallback beat debugging this after the fact.

How to Pitch It (Stakeholders)

For executives: This is a tiny MIT-licensed add-on that lets editors pick Heroicons inside the Laravel Nova admin panel. Its strategic value is low and its maintenance risk is concrete: no release since May 2020, seven stars, zero dependent packages, and no maintainer response path. Recommendation: not a roadmap item. Treat it as an optional convenience for legacy admin screens only, and only if we vendor or fork the code so we are not exposed to abandonment — the moment it is installed, we become the maintainers, and that recurring cost (roughly a half-day at every Nova and Laravel major upgrade) exceeds the half-day it takes to build the equivalent ourselves. It moves no customer-facing metric, so it should never be sequenced ahead of the Nova upgrade work it depends on.

For engineering: Small surface area, awkward ownership. Its whole responsibility is storing an icon name and rendering a picker; the display layer should be ours from day one so a Nova upgrade breaks one file instead of many. Verify the real contract first (composer.json constraints, whether the class extends Field or Tool, which fluent methods actually exist) — the docs and the code disagree, and the assets may need a 2020-era Node toolchain to rebuild. Icon names come from a frozen 2020 Heroicons revision, so commit the bundled name list and use it as both the picker source and a Rule::in() validator; silent empty renders are the default failure mode otherwise. Scope it to one or two resources, pin the version, and add the fork to the Nova-upgrade checklist. If we're on Nova 4+, the honest path is to reimplement the Vue side against current Heroicons — about half a day, no fork obligation, no stale build.

For the requesting team: We can deliver the same editor experience — pick a Heroicon, save it, render it on the detail screen — without taking on an unmaintained dependency. Expect roughly half a day of engineering either way; the difference is that one option leaves us with a component we own and can extend, and the other leaves us with a pinned fork and a standing upgrade tax.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route