import type { Snippet } from 'svelte'; type BaseProps = { /** @default 'md' */ size?: 'sm' | 'md' | 'lg'; disabled?: boolean; /** Non-editable but selectable; value still submitted with a form. */ readonly?: boolean; /** Visual display mode — non-focusable, no hover/focus animations, no clear button. */ inert?: boolean; /** Visual error state — also sets `aria-invalid="true"`. */ error?: boolean; /** Strip border + background + focus underline. */ borderless?: boolean; placeholder?: string; title?: string; name?: string; id?: string | null; autofocus?: boolean; /** Minimum allowed value (clamped on input). */ min?: number | null; /** Maximum allowed value (clamped on input). */ max?: number | null; /** Number of decimal places shown. @default 2 */ decimals?: number; /** Suffix appended to the formatted value at rest (e.g. ` %`, ` kg`). */ suffix?: string; 'aria-describedby'?: string; 'aria-label'?: string; 'aria-required'?: boolean; /** Primary icon — SVG source string or snippet. */ icon?: string | Snippet; /** Side of the input where the primary icon sits. @default 'leading' */ iconPosition?: 'leading' | 'trailing'; /** Optional secondary icon — always on the opposite side from `icon`. */ secondaryIcon?: string | Snippet; }; type ClearableProps = BaseProps & { /** Value can be cleared to `null`. Trigger shows an × button when set. */ clearable: true; value: number | null | undefined; on?: { input?: (value: number | null) => void; change?: (value: number | null) => void; mounted?: (data: { input: HTMLInputElement; }) => void; blur?: (value: number | null) => void; focus?: () => void; }; }; type RequiredProps = BaseProps & { /** Value is required; no clear button. */ clearable: false; value: number; on?: { input?: (value: number) => void; change?: (value: number) => void; mounted?: (data: { input: HTMLInputElement; }) => void; blur?: (value: number) => void; focus?: () => void; }; }; type Props = ClearableProps | RequiredProps; /** * Formatted number input with locale-aware thousand separators, decimal scale, min/max clamping, * optional suffix (` %`, ` kg`), and smooth cursor tracking while typing (via cleave-zen). * Discriminated by `clearable`: `clearable: true` allows `null` (with × button); `clearable: false` * requires a non-null value. CSS API mirrors `Input` for visual-language compatibility. * * ### CSS Custom Properties * | Property | Description | Default | * |---|---|---| * | `--sc-kit--numeral-input--height` | Container height | per size | * | `--sc-kit--numeral-input--padding-inline` | Horizontal padding | per size | * | `--sc-kit--numeral-input--gap` | Gap between value and icons / clear | `var(--sc-kit--space--2)` | * | `--sc-kit--numeral-input--width` | Container width | `100%` | * | `--sc-kit--numeral-input--background` | Container background | `var(--sc-kit--color--bg--field)` | * | `--sc-kit--numeral-input--background--disabled` | Disabled / inert background | `var(--sc-kit--color--bg--field-alt)` | * | `--sc-kit--numeral-input--border-color` | Border color | `var(--sc-kit--color--border--field)` | * | `--sc-kit--numeral-input--border-color--hover` | Border color on hover | `var(--sc-kit--color--border--strong)` | * | `--sc-kit--numeral-input--border-color--error` | Border color in error state | `var(--sc-kit--color--danger)` | * | `--sc-kit--numeral-input--border-radius` | Border radius | per size — `sm` 4px, `md`/`lg` 6px | * | `--sc-kit--numeral-input--underline-color` | Inset bottom-underline indicator | `transparent` | * | `--sc-kit--numeral-input--font-size` | Text font size | per size | * | `--sc-kit--numeral-input--color` | Text color | `var(--sc-kit--color--text--primary)` | * | `--sc-kit--numeral-input--placeholder--color` | Placeholder text color | `var(--sc-kit--color--text--placeholder)` | * | `--sc-kit--numeral-input--icon--color` | Leading / trailing icon color (does NOT affect inner affordances) | `var(--sc-kit--color--text--muted)` | * | `--sc-kit--numeral-input--icon--size` | Leading / trailing icon size (does NOT affect inner affordances) | per size | */ declare const Cmp: import("svelte").Component void; select: () => void; }, "">; type Cmp = ReturnType; export default Cmp;