Ark Logo
Undefined
Components
Number input

Number Input

A field that allows user input of numeric values.

You can explore the number-input component in the following curated examples.

Anatomy

To set up the number input correctly, you'll need to understand its anatomy and how we name its parts.

Each part includes a data-part attribute to help identify them in the DOM.

Examples

Learn how to use the NumberInput component in your project. Let's take a look at the most basic example:

Setting a minimum and maximum value

Pass the min prop or max prop to set an upper and lower limit for the input. By default, the input will restrict the value to stay within the specified range.

Adjusting the precision of the value

In some cases, you might need the value to be rounded to specific decimal points. Set the formatOptions and provide Intl.NumberFormatOptions such as maximumFractionDigits or minimumFractionDigits.

Scrubbing the input value

The NumberInput supports the scrubber interaction pattern. To use this pattern, render the NumberInput.Scrubber component. It uses the Pointer lock API and tracks the pointer movement. It also renders a virtual cursor which mimics the real cursor's pointer.

Using the mouse wheel to change value

The NumberInput exposes a way to increment/decrement the value using the mouse wheel event. To activate this, set the allowMouseWheel prop to true.

Clamp value when user blurs the input

In most cases, users can type custom values in the input field. If the typed value is greater than the max, the value is reset to max when the user blur out of the input.

To disable this behavior, pass clampValueOnBlur and set to false.

Usage within forms

To use the number input within forms, set the name prop.

Format and parse value

To apply custom formatting to the input's value, set the formatOptions and provide Intl.NumberFormatOptions such as style and currency.

Using the Field Component

The Field component helps manage form-related state and accessibility attributes of a number input. It includes handling ARIA labels, helper text, and error text to ensure proper accessibility.

Using the Root Provider

The RootProvider component provides a context for the number-input. It accepts the value of the useNumber-input hook. You can leverage it to access the component state and methods from outside the number-input.

If you're using the RootProvider component, you don't need to use the Root component.

API Reference

Accessibility

Complies with the Spinbutton WAI-ARIA design pattern.

Keyboard Support

KeyDescription
ArrowUp
Increments the value of the number input by a predefined step.
ArrowDown
Decrements the value of the number input by a predefined step.
PageUp
Increments the value of the number input by a larger predefined step.
PageDown
Decrements the value of the number input by a larger predefined step.
Home
Sets the value of the number input to its minimum allowed value.
End
Sets the value of the number input to its maximum allowed value.
Enter
Submits the value entered in the number input.