Form input
Number input
Predictable numeric models, decimal-safe stepping, and consistent M3 controls.Semantics and name
One input carries the value; the decorations stay out of the way.
One field, one name
The label is linked with `for`/`id`. The stepper buttons stay out of the tab order and are named by `incrementLabel` and `decrementLabel` for pointer and screen-reader users.
Validity
`aria-invalid` and `aria-describedby` point at the support line. A draft that cannot become a value emits `invalid` with a reason — `empty`, `incomplete`, `invalid` or `out-of-range` — so the form can explain it.
Keyboard and focus
The field behaves like a native spinbutton.
Stepping
ArrowUp and ArrowDown move by one `step`, PageUp and PageDown by ten. Home and End jump to `min` and `max` when those bounds are set.
Scrub
With `controls="scrub"` a horizontal drag on the label changes the value. Hold Shift for ten steps at a time, Alt for a tenth of a step.