InputNumber
InputNumber captures bounded numeric values with step controls.
@duskmoon-dev/components/input-number Usage
When to use
- Use it inside forms, filters, settings, and any workflow that captures user input.
- Prefer controlled props when the value must stay synchronized with application state.
Implementation notes
Features
Documents default values, value props, and change callbacks for form integration.
Surfaces status, size, disabled, and option data patterns where the component supports them.
InputNumber is most often configured through `value`, `defaultValue`, `min`, `max`.
Renders value, status, size, and classes
Feature Demos
Feature demos are authored for the component page, then supplemented with behavior scenarios from the component test coverage.
Basic usage
Import the component stylesheet and InputNumber from its package subpath, then render it with the core props.
import "@duskmoon-dev/components/styles.css";
import { InputNumber } from "@duskmoon-dev/components/input-number";
export function Example() {
return (<InputNumber
defaultValue={24}
min={0}
max={100}
step={1}
status="success"
/>);
} Renders value, status, size, and classes
test-backedInputNumber scenario from the component test coverage: renders value, status, size, and classes.
import "@duskmoon-dev/components/styles.css";
import { InputNumber } from "@duskmoon-dev/components/input-number";
export function InputNumberRendersValueStatusSizeDemo() {
return (<InputNumber
defaultValue={24}
min={0}
max={100}
step={1}
status="success"
/>);
} Supports uncontrolled changes with parser and precision
test-backedInputNumber scenario from the component test coverage: supports uncontrolled changes with parser and precision.
import "@duskmoon-dev/components/styles.css";
import { InputNumber } from "@duskmoon-dev/components/input-number";
export function InputNumberSupportsUncontrolledChangesWithDemo() {
return (<InputNumber
defaultValue={24}
min={0}
max={100}
step={1}
status="success"
/>);
} Supports min/max and controls
test-backedInputNumber scenario from the component test coverage: supports min/max and controls.
import "@duskmoon-dev/components/styles.css";
import { InputNumber } from "@duskmoon-dev/components/input-number";
export function InputNumberSupportsMinMaxAndDemo() {
return (<InputNumber
defaultValue={24}
min={0}
max={100}
step={1}
status="success"
/>);
} Supports keyboard stepping and onStep
test-backedInputNumber scenario from the component test coverage: supports keyboard stepping and onstep.
import "@duskmoon-dev/components/styles.css";
import { InputNumber } from "@duskmoon-dev/components/input-number";
export function InputNumberSupportsKeyboardSteppingAndDemo() {
return (<InputNumber
defaultValue={24}
min={0}
max={100}
step={1}
status="success"
/>);
} Can hide controls and disable keyboard
test-backedInputNumber scenario from the component test coverage: can hide controls and disable keyboard.
import "@duskmoon-dev/components/styles.css";
import { InputNumber } from "@duskmoon-dev/components/input-number";
export function InputNumberCanHideControlsAndDemo() {
return (<InputNumber
defaultValue={24}
min={0}
max={100}
step={1}
status="success"
/>);
} Includes component stylesheet rules
test-backedInputNumber scenario from the component test coverage: includes component stylesheet rules.
import "@duskmoon-dev/components/styles.css";
import { InputNumber } from "@duskmoon-dev/components/input-number";
export function InputNumberIncludesComponentStylesheetRulesDemo() {
return (<InputNumber
defaultValue={24}
min={0}
max={100}
step={1}
status="success"
/>);
} Theme aware
Docs previews inherit the DuskMoon data-theme value. Use the header switch to compare light and dark rendering.
<div data-theme="sunshine">
<InputNumber
defaultValue={24}
min={0}
max={100}
step={1}
status="success"
/>
</div>
<div data-theme="moonlight">
<InputNumber
defaultValue={24}
min={0}
max={100}
step={1}
status="success"
/>
</div> API
The API reference below lists every parsed exported type or interface for InputNumber. Start with `value`, `defaultValue`, `min`, `max` for common usage.
packages/components/src/components/input-number/InputNumber.types.ts
Scenarios: packages/components/src/components/input-number/InputNumber.test.tsx | Prop | Type | Required | Description |
|---|---|---|---|
value | InputNumberValue | No | value configures InputNumber. |
defaultValue | InputNumberValue | No | defaultValue configures InputNumber. |
min | number | No | min configures InputNumber. |
max | number | No | max configures InputNumber. |
step | number | No | step configures InputNumber. |
precision | number | No | precision configures InputNumber. |
formatter | (value: InputNumberValue) => string | No | formatter configures InputNumber. |
parser | (displayValue: string) => InputNumberValue | No | parser configures InputNumber. |
controls | boolean | No | controls configures InputNumber. |
keyboard | boolean | No | keyboard configures InputNumber. |
status | InputNumberStatus | No | status configures InputNumber. |
size | InputNumberSize | No | size configures InputNumber. |
onChange | (value: InputNumberValue) => void | No | onChange configures InputNumber. |
onStep | ( | No | onStep configures InputNumber. |
value | InputNumberValue, | Yes | value configures InputNumber. |
info | { offset: number; type: "up" | "down" }, | Yes | info configures InputNumber. |
number | null "sm" | "md" | "lg" "error" | "success"