Textarea

A multi-line text input field for longer form content.

Basic Usage

A simple textarea with placeholder text.

With Default Value

A textarea with pre-filled content.

Sizes

Textarea comes in three sizes: small, default, and large.

Small

Default

Large

Disabled State

A textarea that cannot be edited.

With Label

Using the Label component with Textarea.

Form Example

Textarea in a form context with labels and descriptions.

Your message will be reviewed by our team.

With Character Limits

Using minlength and maxlength attributes.

Readonly

A textarea that displays content but cannot be edited.

Custom Class

Adding custom styling via the class prop.

Open Markdown
FreeTextarea

Multi-line text input.

Install with the Proa CLI
proa ui add textarea

Installs the reviewed component source, dependencies, shared support files, and required legal notices.

CLI and registry setup
recipe.rs
// SPDX-FileCopyrightText: 2026 Proa Labs, Inc.
// SPDX-License-Identifier: (MIT OR Apache-2.0) AND MIT

//! Textarea recipe - type-safe styling system for Textarea component
//!
//! Provides size variants and base styling for the Textarea component.

use crate::tw_join;
use proa_core::shared::attr_value::AttrValue;
use proa_core::{DataLoader, WebContext, WriteBuf, WriteError};

/// Base styles for the textarea - similar to Input but with textarea-specific adjustments
mod base {
    use super::*;

    pub const TEXTAREA_BASE: &str = tw_join!(
        // Layout
        "flex w-full",
        "min-h-16",
        "field-sizing-content",
        // Typography
        "text-base md:text-sm",

Search

Type at least 2 characters

Customize

Make it yours

Palette

Radius

Overview
Components
Settings

Build your own

Themed Proa UI surface

Preview
Components52
RecipesTyped
customer-portal