wesselperik/nova-status-field
A Laravel Nova field for displaying statuses as colorful labels or badges in index and detail views. Define custom status labels and colors, then drop the field into any Nova resource for a clean, readable status display.
Delivering admin-panel status UX without frontend investment. Status badges are a near-universal ask in back-office tooling — order state, ticket status, approval stage, fulfillment step, account health. This field converts a raw model value into a labeled, color-coded badge in Nova index and detail views through a fluent config array, with no custom Vue component to design, review, or maintain. In planning terms, that turns a "small frontend project" into a resource-configuration ticket measured in hours.
Build vs. buy, resolved toward "buy" — narrowly and deliberately. Hand-rolling an equivalent Nova badge field means owning the Vue component, the label/color map, index/detail rendering parity, and re-validation on every Nova major. This package bundles that for the cost of a composer require. The buy case is defensible for teams already paying for Nova, but it is a convenience purchase, not a platform commitment: small surface, single maintainer, thin adoption.
Roadmap alignment with admin polish and white-label/themable internal tooling. v3.1.0 adds popup background() and textColor() with Tailwind-token and raw-color support, configurable as a single value or per-icon mapping. That is a theming surface — it supports brand-consistency and white-label initiatives for internal tools without opening a design-system program. Position it as the cheap tier of an admin-UI consistency roadmap, not the whole of it.
Low-risk sprint filler and demo de-risking. Adoption cost is under an hour, and the package is presentation-only: no migrations, no service provider of consequence, no queues, no added queries. That makes it a good slack-absorption ticket — high visible polish, no schema debate, trivially revertible by pinning back a version.
Spec-ready use cases worth naming: operations dashboards, support/CS queues, order and inventory pipelines, approval workflows, subscription or account health — anywhere an operator scans a table and needs status legible at a glance.
What it must not drive: it is not a workflow engine, not an audit trail, not a notification system, and not a customer-facing UI decision. If a stakeholder starts describing "statuses" as a product domain rather than a column rendering, that is a materially larger conversation and should be routed elsewhere.
Adopt when all of the following hold:
Look elsewhere when:
Vendor-risk conditions to accept before adoption. ~30 stars, 0 dependents, a single maintainer, and unreliable metadata on file: the last release is future-dated to 2026-07-06, and third-party assessments describe Filament popup behavior for what is a Nova package. Practically, you are the first serious adopter. Pin the version exactly, budget a one-day spike against your exact Nova / PHP / Tailwind combination, and treat a fork as an acceptable fallback before you put this on a roadmap milestone.
Verify during the spike: supported Nova major (4 vs. 5 field APIs differ) and PHP floor; behavior when a status value or color key is unmapped (silent default vs. exception); and whether existing badges render unchanged when background() / textColor() are never called. Silent failure is the real support cost, not the install.
Executives. A small, focused MIT-licensed package that removes a recurring "build it from scratch" line item from the internal-tooling backlog. It renders raw status data as readable, brand-consistent badges across our admin panels, and the latest release adds color theming at effectively zero engineering cost — useful for polish and white-label initiatives. The honest trade-off: single maintainer, tiny user base, no ecosystem to catch breakage. We cap that exposure by pinning the version, keeping it off customer-facing surfaces, and treating a fork as an acceptable fallback. Ask: approve a one-day validation spike. The decision after that is low-regret either way.
Engineering. A Laravel Nova status field: fluent labels() / icons() / colors(), index and detail-view support, and as of 3.1.0 popup background() / textColor() accepting Tailwind tokens or raw colors, as a single value or per-icon map. No service provider to register, no migration, no config to publish. Three integration notes: (1) 3.1.0 tightened return types in StatusField.php — audit any subclasses, decorators, or test doubles before upgrading; (2) Tailwind tokens only render if the classes survive purge, so safelist dynamic tokens or prefer raw colors; (3) mapping-key mismatches fail quietly, so derive the map from the enum cases rather than by hand and extract a shared factory (e.g. OrderStatusColumn::make()) so every resource consumes one palette. Pin the version; rollback is a version pin.
How can I help you explore Laravel packages today?