// Generated by scripts/generate-showcase.mjs. Do not edit directly. page TextareaDetail { layout = "showcase" state playground_size = ctx.url.searchParams.get("pg_size") ?? "default" state playground_color = ctx.url.searchParams.get("pg_color") ?? "primary" state playground_id = ctx.url.searchParams.get("pg_id") ?? "textarea-1" state playground_name = ctx.url.searchParams.get("pg_name") ?? "textareaField" state playground_label = ctx.url.searchParams.get("pg_label") ?? "Description" state playground_hiddenLabel = ctx.url.searchParams.get("pg_hiddenLabel") ?? "false" state playground_placeholder = ctx.url.searchParams.get("pg_placeholder") ?? "Enter textarea" state playground_value = ctx.url.searchParams.get("pg_value") ?? "" state playground_variant = ctx.url.searchParams.get("pg_variant") ?? "normal" state playground_icon = ctx.url.searchParams.get("pg_icon") ?? "" state playground_iconPosition = ctx.url.searchParams.get("pg_iconPosition") ?? "start" state playground_helperText = ctx.url.searchParams.get("pg_helperText") ?? "Helpful context for this field." state playground_cornerHint = ctx.url.searchParams.get("pg_cornerHint") ?? "" state playground_error = ctx.url.searchParams.get("pg_error") ?? "" state playground_inline = ctx.url.searchParams.get("pg_inline") ?? "false" state playground_rows = ctx.url.searchParams.get("pg_rows") ?? "4" state playground_resize = ctx.url.searchParams.get("pg_resize") ?? "vertical" state playground_readonly = ctx.url.searchParams.get("pg_readonly") ?? "false" state playground_disabled = ctx.url.searchParams.get("pg_disabled") ?? "false" state playground_required = ctx.url.searchParams.get("pg_required") ?? "false" state playground_minlength = ctx.url.searchParams.get("pg_minlength") ?? "" state playground_maxlength = ctx.url.searchParams.get("pg_maxlength") ?? "" state playground_class = ctx.url.searchParams.get("pg_class") ?? "" seo { title = "Textarea" description = "Theme-aware, responsive textarea component." } view {
Forms component

Textarea

Theme-aware, responsive textarea component.

23 props0 slots5 eventsTheme readyResponsive
Interactive playground

Configure Textarea

Change any prop and inspect the server-rendered component immediately.

Live preview
Component code
<Textarea
  id="textarea-1"
  name="textareaField"
  label="Description"
  placeholder="Enter textarea"
  helperText="Helpful context for this field."
  rows="4"
/>
Component props23 controls
Live examples

Designed for real product surfaces

Compare configurations and resize the browser to check responsive behavior.

Basic usage

Default field

Use a labelled field with a value, placeholder, and supporting helper text.

01
Live preview
Component usage.wrn
<Textarea
  id="textarea-1"
  name="textareaField"
  label="Description"
  placeholder="Enter textarea"
  helperText="Helpful context for this field."
  rows="4"
/>
Appearance

Outlined with start icon

Combine an outlined treatment with a leading icon.

02
Live preview
Component usage.wrn
<Textarea
  id="textarea-2"
  name="textareaField"
  label="Description"
  placeholder="Enter textarea"
  variant="outlined"
  icon="icon-[lucide--sparkles]"
  rows="4"
/>
Appearance

Floating label

Move the label into the control while preserving an accessible field name.

03
Live preview
Component usage.wrn
<Textarea
  id="textarea-3"
  name="textareaField"
  label="Description"
  placeholder="Enter textarea"
  variant="floating"
  icon="icon-[lucide--circle-user-round]"
  iconPosition="end"
  rows="4"
/>
Appearance

Pill and compact size

Use pill styling and compact sizing in dense interfaces.

04
Live preview
Component usage.wrn
<Textarea
  size="sm"
  id="textarea-4"
  name="textareaField"
  label="Description"
  placeholder="Enter textarea"
  variant="pill"
  rows="4"
/>
States

Read only

Display a submitted value without allowing it to be changed.

05
Live preview
Component usage.wrn
<Textarea
  id="textarea-5"
  name="textareaField"
  label="Description"
  placeholder="Enter textarea"
  value="This content is read only."
  rows="4"
  readonly="true"
/>
States

Disabled

Prevent interaction and communicate that the field is unavailable.

06
Live preview
Component usage.wrn
<Textarea
  id="textarea-6"
  name="textareaField"
  label="Description"
  placeholder="Enter textarea"
  rows="4"
  disabled="true"
/>
Layout

Inline helper text

Place the label, control, and supporting text on one responsive line.

07
Live preview
Component usage.wrn
<Textarea
  id="textarea-7"
  name="textareaField"
  label="Description"
  placeholder="Enter textarea"
  helperText="We'll never share your details."
  inline="true"
  rows="4"
/>
Layout

Field with corner hint

Place optional context opposite the label and keep the control on the next line.

08
Live preview
Component usage.wrn
<Textarea
  id="textarea-8"
  name="textareaField"
  label="Description"
  placeholder="Enter textarea"
  cornerHint="Optional"
  rows="4"
/>
Validation

Validated field

Surface validation through @wrnexus/validation-compatible error targets and accessible state.

09
Live preview
Component usage.wrn
<Textarea
  id="textarea-9"
  name="validatedField"
  label="Description"
  placeholder="Enter textarea"
  rows="4"
  required="true"
/>
Component events

Events

Public events declared by this component. Custom events bubble from the component root and expose state through event.detail.

@inputFires immediately as the component value changes.
@changeFires when the component value or selection changes.
@focusFires when the component receives focus.
@blurFires when focus leaves the component.
@invalidFires when the component emits the invalid event.
Event listener.js
const component = document.querySelector('[data-wrn-events]')

component.addEventListener('input', (event) => {
  console.log(event.detail)
})
Component API

Props and configuration

All content and behavior shown above is supplied through these props and slots.

PropTypeDefaultRequired
sizestring"default"No
colorstring"primary"No
idstring""No
namestring""No
labelstring"Textarea"No
hiddenLabelbooleanfalseNo
placeholderstring""No
valuestring""No
variantstring"normal"No
iconstring""No
iconPositionstring"start"No
helperTextstring""No
cornerHintstring""No
errorstring""No
inlinebooleanfalseNo
rowsnumber5No
resizestring"vertical"No
readonlybooleanfalseNo
disabledbooleanfalseNo
requiredbooleanfalseNo
minlengthstring""No
maxlengthstring""No
classstring""No
} }