Skip to Content
ComponentsNumberField

NumberField

A numeric input built on Base UI’s NumberField primitive. Supports increment/decrement buttons, min/max/step constraints, and scrub-area drag interaction.

Import

import { NumberField } from "chunks-ui";

Basic Usage

<NumberField.Root defaultValue={10}> <NumberField.Group> <NumberField.Decrement /> <NumberField.Input /> <NumberField.Increment /> </NumberField.Group> </NumberField.Root>

Min, Max, and Step

Use min, max, and step to constrain the value:

<NumberField.Root defaultValue={5} min={1} max={20}> <NumberField.Group> <NumberField.Decrement /> <NumberField.Input /> <NumberField.Increment /> </NumberField.Group> </NumberField.Root>
Quantity (1–20)
Step by 5

Scrub Area

Wrap a label with NumberField.ScrubArea to allow click-and-drag adjustment. The cursor hides during the scrub gesture via NumberField.ScrubAreaCursor:

<NumberField.Root defaultValue={100}> <NumberField.ScrubArea> <span>Drag to adjust</span> <NumberField.ScrubAreaCursor /> </NumberField.ScrubArea> <NumberField.Group> <NumberField.Decrement /> <NumberField.Input /> <NumberField.Increment /> </NumberField.Group> </NumberField.Root>
Drag to adjust

Disabled

<NumberField.Root defaultValue={42} disabled> <NumberField.Group> <NumberField.Decrement /> <NumberField.Input /> <NumberField.Increment /> </NumberField.Group> </NumberField.Root>

Compound Parts

PartDescription
NumberField.RootState container. Manages value, min, max, step, and disabled state.
NumberField.GroupWraps Decrement, Input, and Increment into a single bordered control.
NumberField.InputThe text input. Displays and accepts the numeric value.
NumberField.DecrementButton that decrements the value by step.
NumberField.IncrementButton that increments the value by step.
NumberField.ScrubAreaA region the user can click-drag to change the value.
NumberField.ScrubAreaCursorA virtual cursor shown during the scrub gesture (hidden by default).

NumberField.Root Props

PropTypeDefaultDescription
valuenumberControlled value
defaultValuenumberInitial value (uncontrolled)
onValueChange(value: number) => voidCalled when value changes
minnumberMinimum allowed value
maxnumberMaximum allowed value
stepnumber1Step increment
disabledbooleanfalseDisable all interaction
classNamestringAdditional CSS classes
Last updated on