Accessibility
NumberField, NumberFieldLimitEdge, NumberFieldSize from @prepared911/ui/number-field.
spinbutton with aria-valuenow, aria-valuemin, aria-valuemax and aria-valuetext (the formatted value with its affixes). The rolling digits are aria-hidden; the input is the only accessible value.aria-describedby, aria-errormessage and aria-invalid. While the limit note shows it is added to aria-describedby, and while a typed value is past a limit and has warned the input also carries aria-invalid.decrementLabel and incrementLabel. At a limit they carry aria-disabled and stay focusable. Keyboard or assistive activation takes exactly one step.valueAnnouncement. Typed values above max announce at once; under min after a short delay.aria-describedby reads it whole.roll={false} changes nothing for assistive technology: the input is still the only accessible value.announceFieldErrors={false}.
NumberField defaults autocomplete="off" so browser history does not cover the spinbutton. When the number is information about the user (a birth year, a card expiry month), pass the purpose token as autoComplete (WCAG 1.3.5); it replaces the default.