/**
 * Native HTML input types supported by `UiInput`. `'file'` enables a custom
 * file-picker UI that replaces the native `Choose File` button with a
 * `UiButton` sitting inside the input.
 */
export type UiInputType = 'text' | 'email' | 'password' | 'search' | 'tel' | 'url' | 'number' | 'file';
/**
 * A text input field for single-line user input. Use for forms, search bars,
 * and any text entry that fits on one line.
 *
 * When `type="file"`, the native `Choose File` button is hidden and replaced
 * by a `UiButton` (with an upload icon) rendered inside the input. The
 * selected file name (or count) is shown as the input value, and selected
 * files are emitted via `update:files`.
 * @category Form Inputs
 * @useCases text entry, search field, email input, password field, form field, file upload
 * @keywords input, text, field, form, search, email, password, textbox, file, upload
 * @related UiTextarea, UiSelect, UiCheckbox, UiFileUploadBox
 */
export interface UiInputProps {
    /**
     * Prop to name the element.
     */
    name: string;
    /**
     * Native input type. Use `'file'` to enable the built-in file-upload UI.
     * @default 'text'
     */
    type?: UiInputType;
    /**
     * Prop to define the Input as disabled, therefore blocking all user interaction with it.
     * @default false
     */
    disabled?: boolean;
    /**
     * Prop to define the Input placeholder text. For `type="file"` this is the
     * text shown when no file has been selected (defaults to `"No file chosen"`).
     */
    placeholder?: string;
    /**
     * Define the element as required on a Form.
     * @default false
     */
    required?: boolean;
    /**
     * (file inputs only) Comma-separated list of accepted file types, e.g.
     * `"image/*,.pdf"`. Forwarded to the underlying `<input type="file">`.
     */
    accept?: string;
    /**
     * (file inputs only) Allow multiple file selection.
     * @default false
     */
    multiple?: boolean;
    /**
     * (file inputs only) Label shown on the upload button.
     * @default 'Upload'
     */
    uploadButtonLabel?: string;
}
