NumberInput

The NumberInput component allows users to input numbers.

Basic usage

You can use the defaultValue prop to set the initial value, and access this from value on the component state.

Ranges and step size

You can set the min, max, and step of the number input. Note that precision also needs to be set for fractional steps.

Formats

The format prop can be set to "currency" or "percent".

Component API

NameDescriptionDefault
id
string
The ID referenced by the global component state.
defaultValue
number
The input value on initial render.
defaultDisabled
boolean
The input's disabled state on initial render.
validate
((value: number) => number | undefined) | Array<(value: number) => number | undefined>
A single function or an array of functions that validate the input value.
required
boolean
Adds red asterisk on the right side of label and sets required on input element
false
onChange
(value: number) => void
Callback when input changes when using as a controlled component. Prefer using the global component state.
variant
"unstyled" | "default"
Input appearance.
size
"xs" | "sm" | "md" | "lg" | "xl"
Input size.
disabled
boolean
Disables the input. Prefer to use defaultDisabled and component state.
radius
"xs" | "sm" | "md" | "lg" | "xl"
The input's border radius.
width
SizingToken | "{number}px"
Defines the width of the component.
auto
height
SizingToken | "{number}px"
Defines the height of the component.
auto
grow
boolean
If true, the element will grow to fill available space. This prop works only if the element is a direct child of a Stack.
value
number
The value of the input when using as a controlled component. Prefer using defaultValue and the global component state.
step
number
Number by which value will be incremented/decremented with controls and up/down arrows. Specify `precision` if using a non-integer step.
error
React.ReactNode
Error text displayed below the input.
label
React.ReactNode
Label displayed above the input.
description
React.ReactNode
Description displayed below the input.
icon
React.ReactNode
Adds an icon to the left of the input.
max
number
Maximum possible value. Inputs are clamped to this maximum.
min
number
Minimum possible value. Inputs are clamped to this minimum.
format
"decimal" | "currency" | "percent"
The formatting style to use.
decimal
currency
"AUD" | "CAD" | "CLP" | "CNY" | "COP" | "GBP" | "HKD" | "INR" | "JPY" | "KRW" | "MYR" | "MXN" | "NZD" | "NOK" | "PHP" | "SGD" | "TWD" | "USD" | "ZAR" | "ARS" | "BRL" | "CHF" | "DKK" | "EUR" | "ILS" | "PLN"
A three letter currency code to use, such as GBP, if `format` is set to `currency`.
USD
precision
number
Number of digits after the decimal point.
removeTrailingZeros
boolean
If `precision` is set, removes the trailing zeros.
false
hideControls
boolean
Removes increment/decrement controls.

State API

NameDescription
value
number
The number currently in the number input
setValue
(value: number) => void
Sets the value of the number input
disabled
boolean
Whether the number input is disabled
setDisabled
(disabled?: boolean) => void
Sets the disabled value of the number input. If the `disabled` value is not provided, the number input will be disabled