/** * @usevyre/react — NumberInput * * AI CONTEXT: * ┌──────────────────────────────────────────────────────────────────┐ * │ Component: NumberInput │ * │ Import: import { NumberInput } from "@usevyre/react" │ * │ │ * │ Controlled numeric input with −/+ stepper buttons. onChange emits │ * │ a NUMBER (or null when empty) — not an event. Drops straight into │ * │ (Form handles the non-event value automatically). │ * │ │ * │ value = number | null (controlled) │ * │ onChange = (value: number | null) => void │ * │ min max step = number (step default 1) │ * │ precision = number (decimal places to round to) │ * │ size = "sm" | "md"(default) | "lg" │ * │ disabled readOnly = boolean │ * │ │ * │ Clamps to min/max on blur. Keyboard: ArrowUp/Down ±step, │ * │ Shift+Arrow ±step×10. Empty input → null. │ * └──────────────────────────────────────────────────────────────────┘ * * @example * const [qty, setQty] = useState(1); * * * @example * * * */ import React from "react"; import type { Size, BaseProps } from "../../types"; export interface NumberInputProps extends Omit, "size" | "value" | "onChange" | "defaultValue" | "type">, BaseProps { /** Controlled value. null = empty. */ value?: number | null; /** Uncontrolled initial value */ defaultValue?: number | null; /** Called with the parsed number, or null when the field is empty */ onChange?: (value: number | null) => void; min?: number; max?: number; /** Increment/decrement amount (default 1) */ step?: number; /** Decimal places to round to */ precision?: number; size?: Exclude; disabled?: boolean; readOnly?: boolean; } export declare const NumberInput: React.ForwardRefExoticComponent>;