NumberInput

Numeric input with stepper buttons, min/max clamping, prefix/suffix, and precision control.

Live Demo

0–100%

Sizes

Props

PropTypeDefaultDescription
valuenumber | undefinedNumeric value
onChange(value: number | undefined) => voidCallback with new numeric value
minnumberMinimum allowed value
maxnumberMaximum allowed value
stepnumber1Step size (default: 1)
precisionnumberNumber of decimal places
prefixstringPrefix symbol (e.g. $)
suffixstringSuffix symbol (e.g. %)
size"sm" | "md" | "lg""md"Size variant: sm | md | lg
labelstringLabel text
errorstringError message
helperTextstringHelper text below input

Usage

import { NumberInput } from '@ghiberti85/ui'

const [quantity, setQuantity] = useState(1)

// Basic
<NumberInput label="Quantity" value={quantity} onChange={setQuantity} min={0} max={99} />

// Currency
<NumberInput
  label="Price"
  value={price}
  onChange={setPrice}
  prefix="$"
  min={0}
  step={0.01}
  precision={2}
/>

// Percentage with helper text
<NumberInput
  label="Discount"
  value={discount}
  onChange={setDiscount}
  suffix="%"
  min={0}
  max={100}
  step={5}
  helperText="Enter a value between 0 and 100"
/>

View in Storybook

Open in Storybook
Ghiberti UI — Design System