Textarea
Multi-line LCD text entry field
Size
Material
<textarea class="text-area" placeholder="Multi-line entry..."></textarea> .text-area {
width: 240px; height: 80px; padding: 10px 12px;
background: var(--bg-inset); border: 1px solid var(--border-mid);
border-radius: var(--radius-md); color: var(--text-primary);
font-family: var(--font-mono); font-size: 12px; letter-spacing: 0.5px;
box-shadow: var(--shadow-inset); outline: none; resize: vertical;
transition: border-color 0.15s;
}
.text-area::placeholder { color: var(--text-muted); }
.text-area:focus { border-color: var(--amber); } API
| Class | Type | Description |
|---|---|---|
.text-area | Base | Primary component class |
.default | Size | Extra large variant |
Design Notes
Physical Analog
Reference devices: LCD text entry fields on pro audio equipment (Tascam, Zoom), camera file naming dialogs, synthesizer patch naming. Mechanism: Same mechanical principle as the Text Input (H1), but taller to accept multi-line content. Uses the same recessed phosphor screen styling.
Geometry
| Property | Value |
|---|---|
| Width | 240px |
| Height | 80px |
| Padding | 10px 12px |
| Border radius | --radius-md (8px) |
| Font size | 12px |
| Font family | --font-mono |
| Resize | vertical |
CSS Recipe
Default state
.text-area {
width: 240px; height: 80px; padding: 10px 12px;
background: var(--bg-inset); border: 1px solid var(--border-mid);
border-radius: var(--radius-md); color: var(--text-primary);
font-family: var(--font-mono); font-size: 12px; letter-spacing: 0.5px;
box-shadow: var(--shadow-inset); outline: none; resize: vertical;
transition: border-color 0.15s;
}
Placeholder
.text-area::placeholder { color: var(--text-muted); }
Focus
.text-area:focus { border-color: var(--amber); }
HTML Structure
<textarea class="text-area" placeholder="Multi-line entry..."></textarea>
Size Variants
No size variants defined. Height is adjustable via resize: vertical.
Material Variants
No material variants. Uses phosphor screen (recessed display cavity) styling.
Theme Behavior
- Background uses
--bg-inset(deep recessed cavity) - Inset shadow adapts: strong in dark mode, subtle in light mode
- Focus border always amber
- Text and placeholder colors swap via theme tokens
Constraints
- MUST use recessed styling (inset shadow +
--bg-insetbackground) - MUST use monospace font (
--font-mono) - Focus state MUST illuminate amber border
- MUST allow vertical resize only (
resize: vertical) - MUST NOT use outline
- MUST have top padding (10px) for comfortable text entry
Accessibility
- Use native
<textarea>element - Include associated
<label>element - Support standard textarea keyboard behavior (Enter for newline, Tab to move focus)
- Focus ring is provided by amber border (no separate outline needed)
♿
Accessibility
- Element
- Use appropriate <input> or <select> element
- Keyboard
- Follow WAI-ARIA patterns for this control type
- Focus
-
Visible focus indicator required. Use native browser focus ring or custom
:focus-visiblestyles.