Community Wolf
Community
APIAboutContact
Book a demo

Community Wolf

Real-time safety intelligence for citizens and the teams who protect them.

Community Tools

  • Public map
  • Namola
  • WhatsApp

Business Tools

  • Access Control
  • Intelligence
  • Safety API
  • Group Agents
  • Patrol Management
  • Roster Management
  • Safety Survey
  • Pricing
  • Pricing calculator

Resources

  • Docs
  • Changelog
  • Design system

Company

  • Community
  • Business
  • API
  • About
  • Contact

Get pilot updates

New features, city launches, and integration partnerships - delivered monthly.

Subscribe to updates

(c) 2026 Community Wolf. All rights reserved.

Privacy PolicyTerms of Service
Wolf design system
Foundations
  • Brand
  • Voice and tone
  • Colour
  • Typography
  • Spacing and layout
  • Radius, elevation and borders
  • Motion
  • Iconography
  • Imagery and photography
  • Data visualisation
  • Accessibility
Patterns
  • App shell
  • Hero sections
  • Empty states
  • Error states
  • Skeletons and loading
  • Forms
  • Tables and data density
  • Confirmation and destructive actions
  • Authentication surfaces
Components
  • Button
  • Input
  • Card
  • Badge
  • Dialog
  • Label
  • Textarea
  • Select
  • Checkbox
  • Radio group
  • Switch
  • Form field
  • Tabs
  • Popover
  • Tooltip
  • Accordion
  • Alert dialog
  • Confirm dialog
  • Toast (Sonner)
  • Skeleton
  • Empty state

components

Textarea

Use a textarea when the user genuinely needs more than one line. Resize is vertical-only — horizontal resize is almost never useful in a web form.

Read the full spec

Default

Two lines visible at base font size, `resize-y` for comfort.

tsx
import { Textarea } from "@wolf/design-system";

<Textarea placeholder="Add context for the dispatcher…" />

Content-fit (auto-grow)

Add `field-sizing-content` plus a min/max height and the field grows with the content. Falls back gracefully to the min height on older browsers.

tsx
<Textarea
  className="field-sizing-content min-h-[80px] max-h-[240px]"
  placeholder="Type a multi-line note…"
/>

States

Disabled, read-only and invalid each render the standard state. Error uses `aria-invalid` on the element — never a hard-coded red border.

tsx
<Textarea placeholder="Disabled" disabled />
<Textarea defaultValue="Frozen copy." readOnly />
<Textarea aria-invalid defaultValue="Missing context." />

With help text

Pair the textarea with a small help line when the expected content isn't obvious from the label alone.

Keep it under 500 characters. Plain English works best.

tsx
<Label htmlFor="notes">Notes for dispatcher</Label>
<Textarea id="notes" rows={4} />
<p className="text-xs text-muted-foreground">
  Keep it under 500 characters. Plain English works best.
</p>
Previous — ComponentsLabel
Next — ComponentsSelect