Number Input
The Number Input component provides users with a field for integer values, and buttons to increment or decrement the value.
useNumberInput API
Import
import { unstable_useNumberInput as useNumberInput } from '@mui/base/unstable_useNumberInput';
// or
import { unstable_useNumberInput as useNumberInput } from '@mui/base';Learn about the difference by reading this guide on minimizing bundle size.
| Name | Type | Default | Description | 
|---|---|---|---|
| componentName | string | 'useNumberInput' | The name of the component using useNumberInput. For debugging purposes. | 
| defaultValue | number | null | - | The default value. Use when the component is not controlled. | 
| disabled | boolean | - | If  | 
| error | boolean | - | If  | 
| inputId | string | - | The  | 
| inputRef | React.Ref<HTMLInputElement> | - | The ref of the input element. | 
| max | number | - | The maximum value. | 
| min | number | - | The minimum value. | 
| onBlur | (event?: React.FocusEvent<HTMLInputElement>) => void | - | |
| onChange | (event: React.FocusEvent<HTMLInputElement> | React.PointerEvent | React.KeyboardEvent, value: number | null) => void | - | Callback fired after the value is clamped and changes - when the  | 
| onClick | React.MouseEventHandler | - | |
| onFocus | React.FocusEventHandler | - | |
| onInputChange | React.ChangeEventHandler<HTMLInputElement> | - | Callback fired when the  | 
| readOnly | boolean | false | If  | 
| required | boolean | - | If  | 
| shiftMultiplier | number | - | Multiplier applied to  | 
| step | number | - | The amount that the value changes on each increment or decrement. | 
| value | number | null | null | The current value. Use when the component is controlled. | 
| Name | Type | Default | Description | 
|---|---|---|---|
| disabled | boolean | false | If  | 
| error | boolean | false | If  | 
| focused | boolean | false | If  | 
| formControlContext | FormControlState | undefined | - | Return value from the  | 
| getDecrementButtonProps | <ExternalProps extends Record<string, unknown> = {}>(externalProps?: ExternalProps) => UseNumberInputDecrementButtonSlotProps<ExternalProps> | - | Resolver for the decrement button slot's props. | 
| getIncrementButtonProps | <ExternalProps extends Record<string, unknown> = {}>(externalProps?: ExternalProps) => UseNumberInputIncrementButtonSlotProps<ExternalProps> | - | Resolver for the increment button slot's props. | 
| getInputProps | <ExternalProps extends Record<string, unknown> = {}>(externalProps?: ExternalProps) => UseNumberInputInputSlotProps<ExternalProps> | - | Resolver for the input slot's props. | 
| getRootProps | <ExternalProps extends Record<string, unknown> = {}>(externalProps?: ExternalProps) => UseNumberInputRootSlotProps<ExternalProps> | - | Resolver for the root slot's props. | 
| inputValue | string | - | The dirty  | 
| isDecrementDisabled | boolean | false | If  | 
| isIncrementDisabled | boolean | false | If  | 
| required | boolean | false | If  | 
| value | number | null | - | The clamped  |