import { type InputHTMLAttributes } from 'react'; import { type VariantProps } from 'class-variance-authority'; import { type NumberInputMode } from './use-locale-number'; /** Agent-readiness curated handle for NumberInput. */ export interface NumberInputHandle { getValue: () => number | null; setValue: (value: number | null) => void; clear: () => void; focus: () => void; } declare const numberInputVariants: (props?: ({ size?: "sm" | "md" | "lg" | null | undefined; tone?: "default" | "error" | null | undefined; inline?: "full" | "sm" | "md" | "lg" | null | undefined; } & import("class-variance-authority/types").ClassProp) | undefined) => string; export type { NumberInputMode }; export interface NumberInputProps extends Omit, 'type' | 'onChange' | 'value' | 'defaultValue' | 'size'>, VariantProps { /** Current numeric value (controlled). */ value?: number | null; /** Initial value (uncontrolled). */ defaultValue?: number; /** Fires with the parsed number (not a string). `null` when the field is empty. */ onChange?: (value: number | null) => void; /** Minimum allowed value. Maps to `aria-valuemin`. */ min?: number; /** Maximum allowed value. Maps to `aria-valuemax`. */ max?: number; /** Increment step. Defaults to `1`. */ step?: number; /** Display/parse mode. Defaults to `'integer'`. */ mode?: NumberInputMode; /** ISO 4217 currency code, required when `mode='currency'`. */ currency?: string; /** BCP 47 locale. Defaults to the app language (`i18n.language`), then * `navigator.language`, then `'en-US'`. */ locale?: string; /** Size variant. */ size?: 'sm' | 'md' | 'lg'; /** 'stepper' (default) keeps the chevron buttons; 'plain' renders the bare * field — keyboard arrows still step, and the wheel scrolls the page as it * always has. */ variant?: 'stepper' | 'plain'; /** Unit shown inside the field at the inline end (e.g. "cm"), muted; joins * the input's accessible description, never its value. A unit end-aligns * the value so the two read as one measurement. */ unit?: string; /** Intrinsic inline size: 'full' (default) fills the container; 'sm' ≈ 8 * characters, 'md' ≈ 12, 'lg' ≈ 16 — plus room for the unit and paddings. * Any size but 'full' also end-aligns the value, so it sits against the * unit rather than across the box from it. */ inline?: 'sm' | 'md' | 'lg' | 'full'; /** Additional class names on the wrapper. */ className?: string; } export declare const NumberInput: import("react").ForwardRefExoticComponent>; //# sourceMappingURL=number-input.d.ts.map