bbs-lab/nova-items-field
A Laravel Nova field for managing repeatable item lists inside your resources. Add, edit, reorder, and remove rows through a clean native Nova UI, with structured JSON storage that keeps multi-item data simple to build, validate, and maintain.
composer require, and that decision recurs on every new Nova resource you ship.^8.4, Laravel ^11–13, Nova ^5. Adopting this package is downstream of an upgrade decision, not independent of it. It can serve as a low-risk forcing function / proof point for the PHP 8.4 + Nova 5 migration, or it can be blocked by it.blendbyte/nova-items-field or dillingham/nova-items-field, this is a supported successor with a documented migration table, which turns a "we maintain a stale fork" risk into a scheduled upgrade task.dependsOn (conditional fields), copy-to-clipboard, datalist suggestions, count-badge index views. Useful as a checklist when specifying adjacent admin fields.Adopt when:
Look elsewhere when:
{label, url, icon}) — that is a different field type.Trial-then-commit pattern: pilot on one or two low-traffic resources, verify the JSON shape against your export/reporting needs, then standardize.
To executives: This is a small, cheap, well-tested component for our internal admin tool that replaces custom code we would otherwise build and maintain ourselves. It removes roughly a sprint of frontend work per year across admin screens and eliminates a class of "invalid input" support tickets through per-row validation. Cost is one Composer dependency; the risk is contained because it is a single form field — if we abandon it, we change the field, not the architecture. The one caveat to note: it requires our platform to be on PHP 8.4 and Nova 5, so it should be sequenced after (or used to justify) that upgrade.
To engineering: It is a modern Laravel Nova 5 rewrite of the well-known nova-items-field, with the quality signals we actually ask for — 100% PHP and JS coverage, mutation testing at MSI ≥ 80%, PHPStan level 8, Pint, ESLint/Prettier, and a CI matrix across PHP 8.4/8.5 × Laravel 11/12/13 × Nova 5. API is idiomatic: Items::make('Tags')->chips()->suggestions([...])->rules('max:10')->itemRules('string', 'max:255'). It gives us array-level and per-item validation, min/max counts, drag-and-drop with keyboard accessibility, configurable index/detail presentations, dependsOn, and publishable i18n. Data lands in a JSON column, so treat it as a presentation field — if a list needs to be queried or reported on, model it as a related table instead.
Decision requested: Approve trialing it on one internal resource, contingent on the PHP 8.4 / Nova 5 baseline; confirm license terms and pin the version.
How can I help you explore Laravel packages today?