/** * SvNumberInput - a numeric input with min/max/step, spinner buttons, optional * thousands grouping + precision, prefix/suffix. Parity: Smart `smart-number-input`. * Emits number | null. The SvGrid number cell editor, standalone too. * * This is the styled renderer over the headless `createNumberInput` core - the * same split as the grid (`createSvGrid` / ``): parse/format/clamp, * spinner + keyboard and ARIA all come from the core via prop-getters. The box, * size, invalid state and focus ring are owned by SvField's `frame` chrome; the * `prefix`/`suffix` are formatted INTO the value (they travel with the * right-aligned number), and the spinner + clear live in the trailing slot. */ import type { Snippet } from 'svelte'; import { type SvEditorProps } from './editor-contract'; type Props = SvEditorProps & { value?: number | null; onChange?: (value: number | null) => void; min?: number; max?: number; step?: number; precision?: number; /** Group thousands (1,234) on display. */ grouping?: boolean; /** Text formatted before the number (e.g. `$`); travels with the value. */ prefix?: string; /** Text formatted after the number (e.g. `%`); travels with the value. */ suffix?: string; placeholder?: string; spinButtons?: boolean; /** Show a clear (x) button when there is a value. */ clearable?: boolean; /** Select the whole value when the field is focused. */ selectOnFocus?: boolean; /** Step the value with the mouse wheel while the field is focused. */ wheelStep?: boolean; /** Leading adornment (icon) inside the field. */ leading?: Snippet; /** Stretch to the container width. */ block?: boolean; /** Control width in px (ignored when `block`). Default 150. */ width?: number; }; declare const SvNumberInput: import("svelte").Component; type SvNumberInput = ReturnType; export default SvNumberInput;