import { RadiantElement } from '@ecopages/radiant'; import type { EventEmitter } from '@ecopages/radiant/tools/event-emitter'; export type RuiNumberFieldCommitBehavior = 'snap' | 'validate'; export type RuiNumberFieldProps = { value?: number; /** Initial value when uncontrolled. */ defaultValue?: number; minValue?: number; maxValue?: number; step?: number; disabled?: boolean; readOnly?: boolean; /** Accessible name when there is no visible `RuiLabel` associated with the input. */ label?: string; name?: string; /** BCP 47 locale tag, or comma-separated fallback list (e.g. `en-US,en`). */ locale?: string; /** JSON-serialized `Intl.NumberFormatOptions`. */ formatOptions?: string; /** Blur behavior after editing. Defaults to `snap`. */ commitBehavior?: RuiNumberFieldCommitBehavior; incrementAriaLabel?: string; decrementAriaLabel?: string; /** Disables scroll-wheel value changes. */ wheelDisabled?: boolean; }; export type RuiNumberFieldChangeDetail = { value: number; }; type RuiNumberFieldBindings = { value: number; disabled: boolean; readOnly: boolean; label: string; name: string; decreaseDisabled: boolean; increaseDisabled: boolean; }; /** * `` — a locale-aware number input with optional stepper buttons. * * Implements the React Aria NumberField interaction model: formatted display via * `Intl.NumberFormat`, commit on blur/increment/decrement, and composable slots. * * Compose with `data-number-field-group`, `data-number-field-input`, and * `data-number-field-action` (see view helpers), or use the default markup from `RuiNumberField`. * * @see https://react-aria.adobe.com/NumberField * * @element rui-number-field * * @attr {number} value - Current value. Reflects to markup. Default: `undefined`. * @attr {number} default-value - Initial value when uncontrolled. Default: `undefined`. * @attr {number} min-value - Lower bound; steppers and arrow keys snap to it. Default: `-Infinity`. * @attr {number} max-value - Upper bound; steppers and arrow keys snap to it. Default: `Infinity`. * @attr {number} step - Increment/decrement and snap interval. Default: `1`. * @attr {boolean} disabled - Disables input and steppers. Default: `false`. * @attr {boolean} read-only - Blocks editing; the value still displays formatted. Default: `false`. * @attr {string} label - Accessible name when there is no visible `RuiLabel`. Default: `''`. * @attr {string} name - Form field name on the hidden value input. Default: `''`. * @attr {string} locale - BCP 47 locale tag, or comma-separated fallback list. Default: `''`. * @attr {string} format-options - JSON-serialized `Intl.NumberFormatOptions`. Default: `''`. * @attr {('snap'|'validate')} commit-behavior - Blur behavior after editing. Default: `snap`. * @attr {string} increment-aria-label - Accessible name for the increment stepper. Default: `Increment`. * @attr {string} decrement-aria-label - Accessible name for the decrement stepper. Default: `Decrement`. * @attr {boolean} wheel-disabled - Disables scroll-wheel value changes. Default: `false`. * * @fires rui-change - Emitted when a value is committed (blur, stepper, or keyboard); * `detail.value` holds the new number. * * @cssclass rui-number-field - Root field wrapper. */ export declare class RuiNumberField extends RadiantElement { value: number | undefined; defaultValue: number | undefined; minValue: number; maxValue: number; step: number; disabled: boolean; readOnly: boolean; label: string; name: string; locale: string; formatOptions: string; commitBehavior: RuiNumberFieldCommitBehavior; incrementAriaLabel: string; decrementAriaLabel: string; wheelDisabled: boolean; changeEvent: EventEmitter; decreaseDisabled: boolean; increaseDisabled: boolean; private editing; private draftValue; private initialized; private readonly uid; private get resolvedLocale(); private get resolvedFormatOptions(); private get inputId(); private getNumericValue; private getInput; private getHiddenInput; private syncLabel; private syncInput; private updateStepperState; private syncSlottedSteppers; private commitValue; private commitDraft; private initialize; protected onConnected(): void; onPropsUpdated(): void; decrement(event: Event): void; increment(event: Event): void; onInputFocus(event: Event): void; onInputBlur(): void; onInput(event: Event): void; onKeydown(event: KeyboardEvent): void; onWheel(event: WheelEvent): void; } export {};