import { JSX } from 'solid-js'; export interface InputProps extends Omit, 'onInput' | 'onChange' | 'size'> { /** Field label rendered above the control and linked via `for`/`id`. */ label?: string; /** Helper text rendered below the control. */ hint?: string; /** Error text; rendered below the control and flips the field invalid. */ error?: string; /** Control density. Defaults to `md`. */ size?: 'sm' | 'md'; /** Force the invalid (destructive-border) state without an `error` string. */ invalid?: boolean; /** Leading affix (icon, unit). Rendered inside the field row, before the input. */ leading?: JSX.Element; /** Trailing affix (icon, inline button). Rendered inside the field row, after the input. */ trailing?: JSX.Element; /** Fires per keystroke with the current value. */ onValueInput?: (value: string) => void; /** Fires on commit (blur) with the current value. */ onValueChange?: (value: string) => void; } export declare const FIELD_BASE = "w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-50 disabled:pointer-events-none"; /** * `Input`: the token-themed single-line text field shell. A label/hint/error * stack around a field row that holds an optional `leading` affix, the * ``, and an optional `trailing` affix. The shared border/background/ring * styling lives here (the single field source the form widgets build on). * * Parts: `field` (the bordered control), `input`, `label`, `hint`. * a11y: a generated id links `