import { LitElement } from 'lit';
import '../Icon/Icon';
declare global {
interface HTMLElementTagNameMap {
'ctt-textarea-input': CttTextareaInput;
}
}
declare const CttTextareaInput_base: (new (...args: any[]) => import("../../utils/form-associated-mixin").FormAssociatedBase) & typeof LitElement;
/**
* CTT TextareaInput Component
*
* A comprehensive textarea input component with built-in validation, error handling,
* auto-resize capabilities, size variants, and accessibility features. Works seamlessly across different frameworks.
*
* @fires input - Fired when the input value changes
* @fires change - Fired when the input loses focus and value has changed
* @fires focus - Fired when the input gains focus
* @fires blur - Fired when the input loses focus
*
* @example
* ```html
*
*
*
*
*
*
*
*
* ```
*
* @example
* ```javascript
* // React usage
* setDescription(e.detail.value)}
* />
* ```
*/
export declare class CttTextareaInput extends CttTextareaInput_base {
static styles: import("lit").CSSResult;
/**
* The label text to display above the textarea
*/
label: string;
/**
* The name attribute for the textarea input
*/
name: string;
/**
* The current value of the textarea
*/
get value(): string;
set value(value: string);
private _value;
/**
* Placeholder text to display when textarea is empty
*/
placeholder: string;
/**
* Whether the textarea is disabled
*/
disabled: boolean;
/**
* Whether the textarea is required for form validation
*/
required: boolean;
/**
* Whether the textarea is readonly
*/
readonly: boolean;
/**
* Number of visible text lines for the control
*/
rows: number;
/**
* Number of visible character widths for the control
*/
cols: number;
/**
* Maximum number of characters allowed
*/
maxlength: number;
/**
* Minimum number of characters required
*/
minlength: number;
/**
* Whether the textarea should automatically resize based on content
*/
autoResize: boolean;
/**
* Whether to show character count
*/
showCount: boolean;
/**
* Error message to display below the textarea
*/
/**
* Hint text to display below the textarea
*/
hint: string;
/**
* The id attribute for the textarea element
*/
id: string;
/**
* Additional CSS classes to apply
*/
className: string;
/**
* Accessible label for screen readers when a visual label is not provided
*/
ariaLabel: string | null;
/**
* IDs of elements that describe this textarea
*/
ariaLabelledby: string | null;
/**
* How the textarea can be resized by the user
*/
resize: 'none' | 'both' | 'horizontal' | 'vertical';
/**
* Size variant of the textarea input
*/
size: 'small' | 'medium' | 'large';
/**
* Reference to the textarea element
*/
private _textarea?;
constructor();
connectedCallback(): void;
firstUpdated(_changedProperties?: Map): void;
updated(changedProperties: Map): void;
disconnectedCallback(): void;
protected _isValid(): boolean;
protected _getValidationMessage(): string;
protected _getNativeInput(): HTMLTextAreaElement | undefined;
/**
* Extend validity to include tooShort / tooLong states specific to textarea.
*/
get validity(): ValidityState;
/**
* Setup auto-resize functionality
*/
private _setupAutoResize;
/**
* Teardown auto-resize functionality
*/
private _teardownAutoResize;
/**
* Adjust textarea height based on content
*/
private _adjustHeight;
/**
* Handle textarea input events
*/
private _handleInput;
/**
* Handle textarea change events
*/
private _handleChange;
/**
* Handle textarea focus events
*/
private _handleFocus;
/**
* Handle textarea blur events
*/
private _handleBlur;
/**
* Focus the textarea element
*/
focus(): void;
/**
* Blur the textarea element
*/
blur(): void;
/**
* Select all text in the textarea
*/
select(): void;
/**
* Set selection range in the textarea
*/
setSelectionRange(start: number, end: number, direction?: 'forward' | 'backward' | 'none'): void;
render(): import("lit-html").TemplateResult<1>;
private get _errorIcon();
}
export {};