Skip to content
TrademarkTrademark
Docs
Form Controls

NumberInput

Updated: October 11, 2026
View on GitHub

NumberInput is Input for numbers. It adds stepper controls and clamps what can be typed, so the value reaching onChange is already a number within range — no parsing, no NaN.

Following the value

The field follows its value prop after mount, so a number changed somewhere else (an undo, a reset, a drag on a timeline) shows up in it. There is no need to remount it with a key. It does not rewrite what the user is typing: a partial entry such as - or 1. stays as typed until it reads as a number.

Toolbar size

size="xxs" draws a 32px field, the height of a size="s" Button. Two steppers stacked in it would get 15px each, so at this size they sit side by side, down then up.

API reference

Type
Default
value
The current number. Controlled, like every other input here.
number—
defaultValue
numberstring
—
onChange
Receives the number itself, not a change event.
(value: number) => void—
min
Lower bound. The decrement control stops here.
number—
max
Upper bound. The increment control stops here.
number—
step
How much each press moves the value.
number1
padStart
Pad to this many digits with leading zeros — 7 shown as 007.
number—
…and every InputProps propinherited—

Everything on Input — label, description, error, size, prefix, suffix — works here too.

Edit this page on GitHub