import type { XyControlStatus, XyControlVariant, XySemanticClassNames, XySemanticStyles, XySize } from "../core"; import type { XyIconName } from "../icon"; export type XyInputNumberValue = null | number | string; export type XyInputNumberMode = "input" | "spinner"; export type XyInputNumberStep = number | string; export type XyInputNumberStepEmitter = "handler" | "keydown" | "wheel"; export interface XyInputNumberFormatterInfo { input: string; userTyping: boolean; } export type XyInputNumberFormatter = (value: XyInputNumberValue, info: XyInputNumberFormatterInfo) => string; export type XyInputNumberParser = (value: string) => XyInputNumberValue; export interface XyInputNumberControlIcons { downIcon?: XyIconName; upIcon?: XyIconName; } export type XyInputNumberControls = boolean | XyInputNumberControlIcons; export interface XyInputNumberStepInfo { emitter: XyInputNumberStepEmitter; offset: XyInputNumberStep; type: "down" | "up"; } export type XyInputNumberSemanticDom = "controls" | "downHandler" | "input" | "prefix" | "root" | "suffix" | "upHandler"; export interface XyInputNumberProps { autocomplete?: string; autofocus?: boolean; changeOnBlur?: boolean; changeOnWheel?: boolean; classNames?: XyInputNumberClassNames; controls?: XyInputNumberControls; decimalSeparator?: string; disabled?: boolean; formatter?: XyInputNumberFormatter; id?: string; keyboard?: boolean; max?: number | string; min?: number | string; mode?: XyInputNumberMode; modelValue?: XyInputNumberValue; name?: string; parser?: XyInputNumberParser; placeholder?: string; precision?: number; readonly?: boolean; size?: XySize; status?: XyControlStatus; step?: XyInputNumberStep; stringMode?: boolean; styles?: XyInputNumberStyles; variant?: XyControlVariant; } export interface XyInputNumberExpose { blur: () => void; focus: (options?: FocusOptions) => void; input: HTMLInputElement | undefined; select: () => void; } export type XyInputNumberClassNames = XySemanticClassNames; export type XyInputNumberStyles = XySemanticStyles;