Build faster with Premium Chakra UI Components 💎

Learn more
Skip to Content
DocsPlaygroundGuidesBlog
Sponsor

Number Input

Used to enter a number, and increment or decrement the value using stepper buttons.

SourceStorybookRecipeArk

Setup

If you don't already have the snippet, run the following command to add the number-input snippet

npx @chakra-ui/cli snippet add number-input

The snippet includes a closed component composition for the NumberInput component.

Usage

import {
  NumberInputField,
  NumberInputLabel,
  NumberInputRoot,
} from "@/components/ui/number-input"
<NumberInputRoot>
  <NumberInputLabel />
  <NumberInputField />
</NumberInputRoot>

Examples

Sizes

Use the size prop to change the size of the number input.

Formatting

Use the formatOptions prop to format the number input value. The value of this maps to Intl.NumberFormatOptions and is applied based on the current locale.

Min and Max

Use the min and max props to set the minimum and maximum values of the number input.

If value entered is less than min or greater than max, the value will be clamped to the nearest boundary on blur, or enter key press.

Step

Use the step prop to change the increment or decrement interval of the number input.

Controlled

Use the value and onValueChange props to control the value of the number input.

Mobile Stepper

Use the StepperInput component to create a stepper input for mobile devices.

You can also apply spinOnPress: false to disable the spin functionality.

3

Mouse Wheel

Use the allowMouseWheel prop to enable or disable the mouse wheel to change

Disabled

Use the disabled prop to disable the number input.

Invalid

Use the Field component and pass the invalid prop to indicate that the number input is invalid.

The entry is invalid

Helper Text

Use the Field component and pass the helperText prop to add helper text to the number input.

Enter a number between 1 and 10

Hook Form

Here is an example of how to use the NumberInput component with react-hook-form.

Props

Root

PropDefaultType
allowOverflow true
boolean

Whether to allow the value overflow the min/max range

clampValueOnBlur true
boolean

Whether to clamp the value when the input loses focus (blur)

focusInputOnChange true
boolean

Whether to focus input when the value changes

inputMode '\'decimal\''
InputMode

Hints at the type of data that might be entered by the user. It also determines the type of keyboard shown to the user on mobile devices

locale '\'en-US\''
string

The current locale. Based on the BCP 47 definition.

max 'Number.MAX_SAFE_INTEGER'
number

The maximum value of the number input

min 'Number.MIN_SAFE_INTEGER'
number

The minimum value of the number input

pattern '\'[0-9]*(.[0-9]+)?\''
string

The pattern used to check the <input> element's value against

spinOnPress true
boolean

Whether to spin the value when the increment/decrement button is pressed

step '1'
number

The amount to increment or decrement the value by

colorPalette 'gray'
'gray' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'blue' | 'cyan' | 'purple' | 'pink' | 'accent'

The color palette of the component

size 'md'
'xs' | 'sm' | 'md' | 'lg'

The size of the component

variant 'outline'
'outline' | 'filled' | 'flushed'

The variant of the component

allowMouseWheel
boolean

Whether to allow mouse wheel to change the value

asChild
boolean

Use the provided child element as the default rendered element, combining their props and behavior.

For more details, read our Composition guide.
defaultValue
string

The initial value of the number input when it is first rendered. Use when you do not need to control the state of the number input.

disabled
boolean

Whether the number input is disabled.

form
string

The associate form of the input element.

formatOptions
NumberFormatOptions

The options to pass to the `Intl.NumberFormat` constructor

id
string

The unique identifier of the machine.

ids
Partial<{ root: string label: string input: string incrementTrigger: string decrementTrigger: string scrubber: string }>

The ids of the elements in the number input. Useful for composition.

invalid
boolean

Whether the number input value is invalid.

name
string

The name attribute of the number input. Useful for form submission.

onFocusChange
(details: FocusChangeDetails) => void

Function invoked when the number input is focused

onValueChange
(details: ValueChangeDetails) => void

Function invoked when the value changes

onValueInvalid
(details: ValueInvalidDetails) => void

Function invoked when the value overflows or underflows the min/max range

readOnly
boolean

Whether the number input is readonly

required
boolean

Whether the number input is required

translations
IntlTranslations

Specifies the localized strings that identifies the accessibility elements and their states

value
string

The value of the input

Previous

Menu

Next

Pagination