ynacorp/nova-swatches
A Laravel Nova field that lets you display and select colors as visual swatches, making color attributes easier to manage in Nova resources with a clean, compact admin UI.
in: validation rule derived from a central palette constant — otherwise the swatch picker is decorative and the design system is a suggestion the field merely displays.ynacorp/ publishing from triolla-io/), and no active maintenance, the PM decision is about owning source code, not consuming a vendor product. The blast radius is genuinely small — the field writes to a plain nullable string column — so adoption is reversible. The cost that does not reverse is the standing maintenance obligation across every Nova major upgrade.App\Nova\Fields\Swatch adapter, review the bundled front-end and its dist/ artifacts, add server-side validation, and assign a named owner with a calendar reminder tied to Nova releases. If any of those cannot be pledged, do not adopt.laravel/nova constraint and whether dist/ was compiled against it; a Nova 4 → 5 migration is a Vue 3 front-end rebuild that lands on you, not the maintainer.in: rule, and regression coverage before broad exposure.Executive summary: ynacorp/nova-swatches is a small Laravel Nova field that lets admin users pick colors from a predefined palette instead of typing hex codes. It measurably improves internal admin usability and design consistency for a few dev-days of effort or less — but it is a tactical, reversible admin enhancement, not a strategic capability, and it should not compete with roadmap items for budget.
The packaging reality matters more than the feature. Twenty-two stars, zero dependents, a repo/namespace mismatch, and no evidence of active maintenance mean we should treat this as source code we adopt, not a product we depend on. The data model is a plain nullable string column, so the blast radius of adopting and later removing it is near zero. The real cost is a few hours of internal ownership per Nova major upgrade, indefinitely, plus a licensed Nova sandbox to test in — the honest framing is two days once versus an indefinite dependency that breaks on every Nova major.
For engineering: The integration seam is the sanctioned one — a custom Nova Field subclass plus a compiled Vue component — so there is no architectural fight to pick, and storage is a drop-in over an existing color/hex text column. The diligence items are narrow but real: confirm Packagist ownership given the namespace/repo mismatch; verify the laravel/nova constraint and whether dist/ was built against our Nova major; determine whether the front-end wraps a third-party JS color library (supply-chain and rebuild implications); confirm the field honors nullable, validation rules, and dependsOn reactive contexts; and normalize the stored format (case, #RGB vs #RRGGBB, empty-as-null) via a cast or saving event before anything downstream depends on it. Accessibility is unproven — keyboard navigation, focus management, and contrast are known failure modes for color pickers and need an explicit pass, since admin a11y regressions are quietly expensive and rarely reported.
Recommended position: Pilot on a single low-risk Nova resource behind a flag. Fork and pin into our namespace, wrap behind an internal adapter so a fork, reimplementation, or removal touches exactly one class, constrain the palette server-side (Rule::in() off a central palette constant plus a hex regex), and add a feature test that posts an off-palette value and asserts a 422 — that test is worth more than any amount of manual clicking because it is the only thing that survives a Nova upgrade. Then decide between keeping the fork and reimplementing internally. Assign a named owner with a calendar reminder tied to Nova release notes and document that expectation in the adapter's docblock so it isn't rediscovered in eighteen months — or do not adopt. If color management turns out to be core to the product, skip this and build a supported internal field.
How can I help you explore Laravel packages today?