simplesquid/nova-advanced-number-field
An advanced number field for Laravel Nova that adds flexible formatting, min/max limits, step controls, and locale-aware display to numeric inputs, making it easy to build polished, precise forms for prices, quantities, and other numbers.
$ / % / unit prefixes and suffixes) and constrains entry with min / max / step. The measurable win is fewer mistyped prices, quantities, discounts, and rates in the admin panel, and fewer downstream correction tickets and reconciliation questions. Frame it as an internal-tooling investment with a quality metric attached, not a roadmap item.Number field already covers min / max / step and basic display. The incremental value here is presentation: decimal precision, prefix/suffix unit clarity, and consistent rendering between form, detail, and index views. If the ticket is truly about validation, close it against native Nova. If it's "operators misread or mistrust the numbers on screen," this is the tool.app/Nova/Fields. The right posture is "adopt with a documented fork contingency," not "reject as unproven."composer.json. Treat 3.2 → 3.3 as breaking for anyone on Laravel 10 / PHP 8.1; a floating ^3.0 lets a routine composer update silently cross the platform support floor. That's a self-inflicted incident, and it's a one-line policy to prevent.Number::currency() or a Money value object). Add it as a decision item: agree where rounding happens, and make the database column, model cast, and field precision agree — decimals(2) over a decimal(10,4) column hides data until accounting reconciliation finds it.Consider it when:
1.234,56 € to appear because the app locale is de.Look elsewhere when:
Number already does min / max / step. Adding a dependency for no presentation gain is unjustified.Adoption checklist before rollout: verify namespace and API surface by reading vendor/simplesquid/nova-advanced-number-field/src (not just the README); run composer why-not if resolution fails unexpectedly (Nova is a private repo — auth failures masquerade as dependency conflicts); swap one field first; validate index, detail, and form in staging; then centralise definitions via a MoneyNumber subclass so most call sites point at your class, not the vendor's namespace.
To executives — one paragraph: We can reduce a recurring class of back-office data errors — mistyped prices, quantities, and percentages — with a small, MIT-licensed add-on to our admin panel rather than custom development. It costs effectively nothing to integrate if we sequence it behind the Laravel 12 / Nova 5 upgrade we've already funded, and it carries no lock-in: worst case, the maintainer walks away and we absorb a single file into our codebase in an afternoon. The ask is not budget; it's permission to pin the dependency and a few hours of QA per Nova major release.
To engineering — the honest version: This is a Nova-only field with a one-class PHP surface and a compiled Vue component. It buys us decimal precision, prefix/suffix unit clarity, and consistent rendering across form and detail views — all things native Number doesn't do. Constraints to accept up front: (1) pin the version, because 3.3 drops PHP 8.1 and Laravel 10; (2) min/max/step are UX, not security — duplicate them as ->rules(...); (3) keep the DB column, model cast, and field decimals in agreement; (4) it formats nothing outside Nova, so pair it with a shared canonical formatter; (5) subclass it in-app so a future fork is a swap, not a refactor. Vendor risk is 11 stars and one maintainer — mitigated by MIT licensing and a deliberately small blast radius.
The decision in one line: Adopt, pinned to ^3.3, gated on the Nova 5 upgrade, starting with a single price field in staging — because the alternative is either a worse operator experience on native Nova or a day of custom field work we'd own forever anyway.
How can I help you explore Laravel packages today?