import { type TextInput as RNTextInput } from "react-native"; import { type FieldWidthProps, type StyleProp, type TextStyle } from "../../style/index.js"; import { type TextEntryProps } from "../input/input.shared.js"; import { type TextareaSkin } from "./textarea.styles.js"; export interface TextareaProps extends TextEntryProps, FieldWidthProps { /** Controlled text value. Omit and use `defaultValue` for uncontrolled use. */ value?: string; /** Fired with the next text value on each edit. */ onChangeText?: (next: string) => void; /** Placeholder shown while the field is empty. */ placeholder?: string; /** * The field's persistent label. Its placement is platform-adaptive: iOS and web * render it ABOVE the field; Android renders the Material 3 in-container FLOATING * label — a MULTILINE float pinned to the first text line at rest, floating to the * top once the field is focused or filled. The label names the field for a11y. */ label?: string; /** * Marks the field as required: appends a destructive "*" to the label (hidden * from the accessible name) and sets aria-required on the field. Takes effect * only alongside `label`. */ required?: boolean; /** * Visible rows the field sizes to. Sets the min height (rows * ~22px + 16px * padding); the field still grows with content past this floor. */ rows?: number; /** * Show a live character-count line inside the field's own anatomy: an * end-aligned muted caption under the control reading "N / max" (just "N" * when no `maxLength` is set), where N is the current text length. * * When on, `maxLength` becomes a SOFT cap rather than a hard one: it is NOT * forwarded to the native TextInput (a hard cap silently drops the extra * keystroke, so the overage could never be seen), the user can type past it, * and once N exceeds `maxLength` the count turns destructive AND the field * enters its error state automatically (red border/underline). Leave * `showCount` off to keep `maxLength` as a hard input cap. */ showCount?: boolean; /** Error/validation state: a destructive cue. `invalid` is an alias. */ error?: boolean; invalid?: boolean; small?: boolean; large?: boolean; /** Blocks editing and focus, and dims the field. */ disabled?: boolean; /** * Borderless: drop the field's own border and radius so it sits flush inside a * framed container (e.g. a Card with a formatting toolbar above it). */ flush?: boolean; /** Outer flex composition within a parent only, never a restyle hook; width comes from the width axis (block/narrow/wide). */ style?: StyleProp; } /** Build a Textarea component from a platform skin. */ export declare function createTextarea(skin: TextareaSkin): import("react").ForwardRefExoticComponent>; //# sourceMappingURL=textarea.shared.d.ts.map