outl1ne/nova-color-field
outl1ne/nova-color-field is a Laravel Nova color picker field. Add color selection to your resources with preset palettes, a custom picker, and hex value storage. Swatches render cleanly in forms and detail views, making color management simple and consistent.
composer require line, freeing that capacity for the feature the color actually serves — brand/accent settings, status and severity coding, category tints, theme tokens.App\Nova\Fields, or swap to a plain text field with hex validation — is hours of work, not a migration. That is precisely what justifies trialing it in a spike rather than running a full architecture review.Adopt when all of the following hold:
composer.json.Look elsewhere — or write a ~200-line custom field — when:
The decision most likely to go wrong is not "adopt or don't" — it's letting internal adoption quietly set a precedent for a customer-facing color feature later. State that boundary now.
To executives (one paragraph): We can add color selection to our admin panel this sprint instead of next quarter, at effectively zero cost — it's a free, permissively licensed add-on for the admin framework we already pay for. It's a small, single-purpose piece of UI, so the risk is contained: if it's ever abandoned or breaks on a Nova upgrade, replacing it is a few hours of engineering, not a re-platforming. Recommendation is to adopt it for internal admin screens only, and explicitly keep it off customer-facing surfaces until we've decided whether color needs to be governed by a brand palette.
To engineering (the ask): Add outl1ne/nova-color-field, pin the version (~ or exact) and commit the lock file, and wrap it behind our own field class or a thin settings abstraction so a future Nova major upgrade — or an abandoned package — is a one-file change. Confirm Nova version and asset-pipeline compatibility in staging before merge; the failure mode is a blank input, not an exception, so CI will stay green while the bug ships. Add server-side hex validation (regex:/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/ plus nullable) and a single normalization mutator so format is enforced in one place. Register it as low-criticality, single-maintainer, MIT; vendor it into our namespace if usage spreads beyond a handful of fields, and add both "open one color field and save it" to the Nova upgrade runbook and the asset publish/config/view:clear sequence to the deploy script. Rollback is a one-line revert to a text field — no migration to unwind — so keep that fallback definition documented in the resource's ADR.
The honest caveat to state up front: this is a convenience dependency, not a foundation. Twenty-six stars and no listed dependents means we are early adopters — we, not the ecosystem, will be the ones who notice when it breaks, and the breakage will look like a silently empty form field rather than an error. That is an acceptable posture for an internal color swatch and an unacceptable one for anything a customer sees. Say that out loud now so the eventual Nova upgrade conversation isn't a surprise.
How can I help you explore Laravel packages today?