Files
webstudio/docs/university/core-components/textarea.md
Oleg Isonen 99371187dc docs: Move product documentation into Builder (#5987)
## Summary

- move the complete GitBook documentation tree and assets into Builder
under `/docs`
- generate the exhaustive MCP page from the local CLI source in the same
change
- publish GitBook from a release-gated `docs` branch containing the
exact successfully released revision
- run MCP documentation tests, typechecking, and stale-output checks
with the existing generated-docs check
- remove links to the Community Discussions repository

## Technical choices

- Import the current documentation as a linear snapshot so the branch
satisfies Builder's required-linear-history protection.
- Keep the Markdown wrapper separate from the TypeScript generator at
`scripts/docs/mcp-page.md`.
- Generate through `packages/cli/local.js` so CLI guidance and its
documentation are reviewed together.
- Let `check:generated-docs` reject CLI changes that leave the committed
MCP page stale.
- After both GitHub release creation and package publication succeed,
fast-forward the read-only `docs` branch to the immutable release tag
commit. A divergent update fails instead of publishing a different
revision.
- Configure GitBook to publish `/docs` from the `docs` branch, not
directly from `main`.
- Exclude `/docs` from the repository-wide `oxfmt` scan so imported
GitBook Markdown retains its established formatting; generator tests and
stale-output checks still validate the MCP page.
- Exclude `transcripts/` and GitHub Discussions from the migration.

## Todo

- [x] Import documentation, navigation, includes, and assets under
`/docs`.
- [x] Generate the MCP page from the local CLI source.
- [x] Move MCP generation and validation into Builder.
- [x] Require MCP documentation updates alongside CLI changes.
- [x] Publish released revisions through a read-only `docs` branch.
- [x] Remove Community repository links from Builder and the migrated
docs.
- [x] Preserve and verify a final Community Git bundle locally.
- [ ] Merge this pull request.
- [ ] Let the next successful release create or advance the `docs`
branch.
- [ ] Repoint GitBook Git Sync to `webstudio-is/webstudio`, branch
`docs`, root directory `/docs`.
- [ ] Verify `docs.webstudio.is`, navigation, assets, anchors, and the
MCP page in production.
- [ ] Delete `webstudio-is/webstudio-community`.

## Verification

- `pnpm check:generated-docs`
- `pnpm lint`
- `pnpm oxfmt --check`
- `git diff --check origin/main...HEAD`
- generator regression test demonstrated failing when the GitBook
wrapper behavior was removed, then passing after restoration
- no fixture inputs or outputs are affected

## Known limitation

All documentation merged after the previous release waits for the next
successful release before GitBook publishes it. This deliberately keeps
the public MCP reference aligned with an installable CLI revision.

Ref #5986
2026-08-03 17:55:50 +02:00

3.7 KiB

description
description
Add multi-line text input fields to forms in Webstudio.

Textarea

See MDN: <textarea>

The Textarea component creates a multi-line text input field for collecting longer text content.

Overview

Textarea is used when you need users to enter multiple lines of text, such as messages, descriptions, comments, or any long-form content.

Properties

Property Type Description
name string Form field name
placeholder string Hint text shown when empty
value string Current content
required boolean Whether the field is required
disabled boolean Whether input is disabled
readonly boolean Whether input is read-only
rows number Visible number of lines
cols number Visible width in characters
maxlength number Maximum character limit
minlength number Minimum character limit
wrap string Text wrapping mode (soft/hard)
id string Unique identifier
class string CSS class names

Basic Usage

Form
├── Label (for: message)
├── Textarea (id: message, name: message, rows: 5)
└── Button (type: submit)

Sizing

Fixed Size

Set rows and cols attributes for fixed dimensions:

  • rows: Number of visible text lines
  • cols: Width in average character widths

CSS Sizing

For responsive sizing, use CSS:

  • width: Control width (e.g., 100%)
  • height: Control height
  • min-height/max-height: Set boundaries

Resizable Behavior

By default, textareas can be resized by users. Control this with CSS:

  • resize: none - Not resizable
  • resize: vertical - Only vertical resizing
  • resize: horizontal - Only horizontal resizing
  • resize: both - Both directions (default)

Character Limits

Maximum Length

Textarea (maxlength: 500)

Show Character Count

Use a Text component with an expression to show remaining characters:

Remaining: {500 - textareaValue.length}

Styling

Common Styles

  • Border: Match your design system's input styles
  • Padding: 12px for comfortable text entry
  • Font: Use the same font as your text inputs
  • Line Height: 1.5 for readability

State Styles

State Style Suggestion
Default Subtle border, light background
Focus Highlighted border or ring
Disabled Muted colors, cursor: not-allowed
Invalid Red border, error colors

Best Practices

  1. Use labels: Always associate with a label
  2. Set appropriate rows: Show enough lines for expected content
  3. Provide size hints: Let users know expected length
  4. Consider auto-resize: Use JavaScript for auto-growing textareas
  5. Match input styles: Keep consistent with other form fields
  6. Add character count: For limited fields, show remaining characters

When to Use

Use Textarea Use Input
Comments/messages Single-line fields
Descriptions Names, emails
Bio/about sections Phone numbers
Addresses (multi-line) Short inputs
Notes Passwords
  • Input - Single-line text input
  • Form - Form container
  • Label - Input labels