NumberField

An input field for entering numeric values with increment/decrement controls

Installation#

npmpnpmyarnbun
npx sugarcoat add number-field

Examples#

Default#

Default

Controlled#

Use value and onValueChange for controlled state.

Controlled

Sizes#

Available in multiple sizes.

Sizes

Min and Max#

Min/Max

Step#

Step

With Label#

With Label

With Scrub Area#

Drag horizontally on the label to adjust the value.

Scrub Area

Price Input#

Price Input

Quantity Selector#

Quantity Selector

Disabled#

Disabled

Read Only#

Read Only

Anatomy#

<NumberField defaultValue={0}>
  <NumberField.ScrubArea>
    <label>Label</label>
  </NumberField.ScrubArea>
  <NumberField.Group>
    <NumberField.Decrement />
    <NumberField.Input />
    <NumberField.Increment />
  </NumberField.Group>
</NumberField>

Usage#

Import
import { NumberField } from "@sugarcoat/ui-nxt";
Usage
<NumberField 
value={value} 
onValueChange={setValue}
min={0}
max={100}
>
<NumberField.Group>
  <NumberField.Decrement />
  <NumberField.Input />
  <NumberField.Increment />
</NumberField.Group>
</NumberField>

Props#

NumberField (Root)#

PropTypeDefaultDescription
valuenumber-Controlled value
defaultValuenumber-Default value (uncontrolled)
onValueChange(value: number) => void-Callback when value changes
minnumber-Minimum allowed value
maxnumber-Maximum allowed value
stepnumber1Step increment for buttons and keyboard
largeStepnumber10Step used with Page Up/Down keys
size"sm" | "md" | "lg""md"Size variant
color"default" | "primary""default"Color variant
disabledbooleanfalseWhether the field is disabled
readOnlybooleanfalseWhether the field is read-only
requiredbooleanfalseWhether the field is required
formatIntl.NumberFormatOptions-Number formatting options
cssSystemStyleObject-Additional CSS styles using Panda CSS syntax

Accessibility#

  • Built on Base UI NumberField for robust accessibility
  • Full keyboard support:
    • Arrow Up/Down to increment/decrement by step
    • Page Up/Down to increment/decrement by large step
    • Home/End to go to min/max values
  • Buttons have proper aria-label attributes
  • Input has role="spinbutton" with proper ARIA attributes
  • Disabled and read-only states properly communicated
Customize Theme
Build your own sugarcoat/ui theme
PresetLime / Violet / Slate
Brand ColorLime
Accent ColorViolet
Gray ScaleSlate
Border RadiusLg