Stepper

A numeric stepper with debounced commit, for "rapid clicks" inputs like quantity or percentage.

70%

Usage

import { Stepper } from '@epilot/spark-ui/stepper'
const [value, setValue] = useState(70)

<Stepper
  value={value}
  onValueChange={setValue}
  min={0}
  max={100}
  step={5}
  formatValue={(v) => `${v}%`}
/>

onValueChange fires on every click for instant UI feedback. onValueCommit fires once after the user stops clicking (default: 400ms after the last click), so rapid clicks don't fan out into one network request per click.

Examples

Debounced commit

Wire onValueCommit to your persistence call.

3
Committed (debounced 400ms): 3

API Reference

PropTypeDefault
valuenumber
onValueChange(value: number) => void
onValueCommit(value: number) => void
minnumber0
maxnumber100
stepnumber1
formatValue(value: number) => stringString
commitDelayMsnumber400
disabledbooleanfalse
aria-labelstring
decreaseLabelstring"Decrease"
increaseLabelstring"Increase"

On this page