import { Value } from '@tempots/dom';
import { InputOptions } from './input-options';
import { Merge } from '@tempots/std';
/**
 * Configuration options for {@link TextInput}.
 *
 * Extends {@link InputOptions} with an optional `type` attribute to support
 * different HTML input types (e.g., 'text', 'email', 'url', 'tel', 'password').
 */
export type TextInputOptions = Merge<InputOptions<string>, {
    /**
     * HTML input type attribute.
     * @default 'text'
     */
    type?: Value<string>;
}>;
/**
 * A single-line text input component wrapping a native `<input>` element.
 *
 * Renders a styled text field inside an {@link InputContainer} with support for
 * reactive values, placeholder text, disabled state, and all standard
 * {@link InputOptions} properties.
 *
 * @param options - Configuration options following the {@link TextInputOptions} pattern
 * @returns A styled text input element wrapped in an InputContainer
 *
 * @example
 * ```ts
 * import { prop } from '@tempots/dom'
 * import { TextInput } from '@tempots/beatui'
 *
 * const name = prop('John')
 * TextInput({
 *   value: name,
 *   onChange: name.set,
 *   placeholder: 'Enter your name',
 *   size: 'md',
 * })
 * ```
 *
 * @example
 * ```ts
 * // With prefix/suffix using InputAdornment
 * TextInput({
 *   value: prop(''),
 *   onInput: (v) => console.log('Typing:', v),
 *   before: InputAdornment({ filled: true }, 'https://'),
 *   placeholder: 'example.com',
 *   type: 'url',
 * })
 * ```
 *
 * @example
 * ```ts
 * // With icon decoration
 * TextInput({
 *   value: prop(''),
 *   onInput: (v) => console.log('Typing:', v),
 *   before: InputIcon({ icon: 'line-md:search' }),
 *   placeholder: 'Search...',
 * })
 * ```
 */
export declare const TextInput: (options: TextInputOptions) => import("@tempots/dom").Renderable;
