import { EventEmitter } from '../../stencil-public-runtime'; import type { InputChangeDetail, InputSize, InputType, InputVariant } from './mud-input.types'; /** * Input — single-line text-entry control. * * Pattern B (atom-interactive, form-associated): renders its own `` * inside shadow DOM. Form participation works via `formAssociated` + * `ElementInternals`. The component is the canonical text-input primitive; * specialised inputs (date, search, phone, etc.) compose around it. * * @element mud-input * * @slot label - Rich label content, replaces the `label` prop when present. * @slot helper - Rich helper / hint content, replaces the `helper-text` prop. Hidden when invalid + error-text is shown. * @slot icon-start - Leading `mud-icon` rendered inside the input control. * @slot icon-end - Trailing `mud-icon` rendered inside the input control. */ export declare class MudInput { /** * Color treatment. `destructive` is forced when `invalid` is set. * @default 'default' */ variant: InputVariant; /** * Loading state. When true the control becomes uninteractive and a * trailing spinner replaces the `icon-end` slot. The host carries * `aria-busy="true"` for assistive technologies. * @default false */ loading: boolean; /** * Visual size rung. * @default 'md' */ size: InputSize; /** * Native input `type`. * @default 'text' */ type: InputType; /** * Disables interactivity. The internal control receives `aria-disabled` and * the native `disabled` attribute. * @default false */ disabled: boolean; /** * Marks the field as mandatory. Adds a red asterisk to the label and sets * `aria-required` on the internal control. * @default false */ required: boolean; /** * Renders the field read-only. The control remains focusable and copyable. * @default false */ readonly: boolean; /** * Shows a trailing clear (×) button while the control holds a value. Clearing * empties the field, emits `mudInput` + `mudChange`, and returns focus to the * input. Suppressed when disabled, read-only, or loading. * @default false */ clearable: boolean; /** * Forces destructive visuals regardless of `variant`. Sets `aria-invalid`. * Use together with `errorText` to surface the message. * @default false */ invalid: boolean; /** * Current value of the control. Reflects to the host attribute. * @default '' */ value: string; /** Form-control `name`. Used during form submission. */ name?: string; /** Placeholder shown when the control is empty. */ placeholder?: string; /** Accessible label for the clear (×) button. Only used when `clearable` is set. */ clearLabel: string; /** Plain-text label. Use the `label` slot for richer content. */ label?: string; /** Plain-text helper / hint shown below the control. */ helperText?: string; /** * Plain-text error message shown below the control when `invalid` is set. * When present it replaces `helperText` and pairs with the error icon. */ errorText?: string; /** Native `autocomplete` attribute forwarded to the internal control. */ autocomplete?: string; /** Native `maxlength` constraint. */ maxLength?: number; /** Native `minlength` constraint. */ minLength?: number; /** Native `inputmode` hint forwarded to the internal control. */ inputmode?: string; /** Native `pattern` regex forwarded to the internal control. */ pattern?: string; /** * Accessible name. Mirrors to the internal control's `aria-label` when no * visible label is present. Setting `aria-label` directly on the host also * works — captured on connect into `resolvedAriaLabel` and stripped to * avoid Stencil's attribute-observer / render-loop antipattern. */ ariaLabel?: string; private hasLabelSlot; private hasHelperSlot; private hasIconStart; private hasIconEnd; private isFocused; private fieldsetDisabled; private resolvedAriaLabel?; host: HTMLMudInputElement; internals: ElementInternals; /** Fires on every keystroke. `detail.value` is the current control value. */ mudInput: EventEmitter; /** Fires when the value is committed (typically on `blur` or `Enter`). `detail.value` is the committed value. */ mudChange: EventEmitter; /** Fires when the internal control gains focus. The native `FocusEvent` is forwarded as-is. */ mudFocus: EventEmitter; /** Fires when the internal control loses focus. The native `FocusEvent` is forwarded as-is. */ mudBlur: EventEmitter; private readonly instanceId; private readonly labelId; private readonly helperId; private readonly errorId; private nativeInput?; private initialValue; componentWillLoad(): void; private captureAriaLabel; syncAriaLabelProp(next?: string): void; onRequiredChange(): void; private syncValidity; validateVariant(next: InputVariant): void; validateSize(next: InputSize): void; handleValueChange(next: string): void; /** Mirrors `disabled` from an ancestor `
` without clobbering the consumer-set prop. */ formDisabledCallback(disabled: boolean): void; formResetCallback(): void; formStateRestoreCallback(state: string | File | FormData | null): void; private onLabelSlotChange; private onHelperSlotChange; private onIconStartSlotChange; private onIconEndSlotChange; private slotHasContent; private handleInput; private handleChange; private handleFocus; private handleBlur; private handleClear; private isInert; private resolvedVariant; private hasVisibleLabel; private showClear; private hasErrorMessage; private hasHelperMessage; private describedBy; render(): any; }