nevadskiy/nova-icon-picker
A Laravel Nova field that adds an icon picker to your admin panel, letting you search and select icons from supported icon sets and store the chosen icon name on your models. Simple to install and configure for Nova resources.
packages/). Treat it as vendored code from day one.icon_key slug and treat this picker's output as presentation-only. That single decision keeps you free to delete the package without touching downstream consumers.Select plus a small preview field is a ten-line, zero-dependency option that survives every Nova upgrade. This package earns its place only when the set is large enough that a flat dropdown becomes unusable — that is its sole real advantage, and the PM should force that question before adoption.Adopt-or-spike when all of the following hold:
Look elsewhere when:
Select plus a preview field.Regardless of path, run a time-boxed spike in a non-critical admin screen first. The one non-negotiable acceptance criterion: confirm the emitted wire format (CSS class string like fa-solid fa-user vs. a slug like user) by saving once and reading the raw database value. Getting this wrong fails silently — blank glyphs, no validation error, no exception — and it is the single most common way this integration goes wrong.
string column, no service/queue/API surface. It fails in a form, not in the checkout flow. Validate against the current Nova version, read the Vue component to confirm the stored value format before writing the migration, mirror the allowed icon list server-side in a Form Request with Rule::in(...), route all rendering through an escaping helper (never {!! !!}), and cover what you can in CI — attribute round-trip through create/update and correct escaping — since UI assertions need a Nova license. If "the field doesn't appear," it's almost always nova:publish and asset caches, not code.canSee callback so a broken picker degrades to a hidden field rather than a broken admin. Do not promise a curated custom icon set without engineering confirming whether it requires a fork and JS rebuild.Select + preview for small sets, build a minimal internal replacement, or defer the feature — all three are acceptable outcomes, and knowing which one you're choosing is the actual deliverable.How can I help you explore Laravel packages today?