---
title: "Textarea"
description: "A multiline input with native form semantics."
---

Interactive preview: https://ui.coderocket.app/docs/components/textarea

## Usage

Get this component from a [saved library export](/docs/export) or the [connected CLI](/docs/agents). The imports below refer to local files installed in your app.

Import `styles/components.css`, then `styles/theme.css` once. Wrap your app in `ThemeScope` from `components/ui/utils` so typography, focus and overlays share the theme. The [installation guide](/docs/export) covers runtime dependencies and React/Next.js setup.

```tsx
import { Textarea } from './components/ui/textarea';

<Textarea aria-label="Project description" placeholder="Tell us about your project…"/>
```

## Design system

This component consumes your semantic colors, spacing, typography and shape tokens. Import the compiled styles and your theme once as described in [Export](/docs/export).

## Behavior and accessibility

- Provide meaningful labels for interactive controls.
- Connect action callbacks to your application logic.
- Verify keyboard navigation and contrast in your application.

Status: **experimental** during early access. Sample previews do not send emails, process payments or upload files to a service.

## Source and props

This is the exported source, using the same implementation as the editor.

```tsx
"use client";
import type { ComponentProps } from "react";
import { Field as Base } from "@base-ui/react/field";
import { cx } from "./utils";
export function Textarea({
  className,
  rows = 4,
  id,
  name,
  value,
  defaultValue,
  disabled,
  required,
  readOnly,
  autoFocus,
  form,
  ...props
}: ComponentProps<"textarea">) {
  const controlProps = {
    id,
    name,
    value,
    defaultValue,
    disabled,
    required,
    readOnly,
    autoFocus,
    form,
  };
  return (
    <Base.Control
      {...controlProps}
      render={<textarea {...props} rows={rows} />}
      className={cx("cr-textarea", className)}
    />
  );
}
```
