Textarea
A multi-line text input with auto-sizing via field-sizing: content.
Usage
<textarea class="zui-textarea" placeholder="Write something..."></textarea> import { Textarea } from '@mrmartineau/zui/react'
<Textarea placeholder="Write something..." /> ---
import { Textarea } from '@mrmartineau/zui/astro'
---
<Textarea placeholder="Write something..." /> import { Textarea } from '@mrmartineau/zui/solid'
<Textarea placeholder="Write something..." /> <script lang="ts">
import { Textarea } from '@mrmartineau/zui/svelte'
let value = $state('')
</script>
<Textarea placeholder="Write something..." bind:value /> <template>
<Textarea placeholder="Write something..." />
</template>
<script setup>
import { Textarea } from '@mrmartineau/zui/vue'
</script> With Label
<label class="zui-label" for="message">Message</label>
<textarea class="zui-textarea" id="message" placeholder="Your message..."></textarea> import { Label, Textarea } from '@mrmartineau/zui/react'
<Label htmlFor="message">Message</Label>
<Textarea id="message" placeholder="Your message..." /> ---
import { Label, Textarea } from '@mrmartineau/zui/astro'
---
<Label for="message">Message</Label>
<Textarea id="message" placeholder="Your message..." /> import { Label, Textarea } from '@mrmartineau/zui/solid'
<Label htmlFor="message">Message</Label>
<Textarea id="message" placeholder="Your message..." /> <script lang="ts">
import { Label, Textarea } from '@mrmartineau/zui/svelte'
</script>
<Label for="message">Message</Label>
<Textarea id="message" placeholder="Your message..." /> <template>
<Label for="message">Message</Label>
<Textarea id="message" placeholder="Your message..." />
</template>
<script setup>
import { Label, Textarea } from '@mrmartineau/zui/vue'
</script> Invalid State
<textarea class="zui-textarea" aria-invalid="true">This field has an error</textarea> import { Textarea } from '@mrmartineau/zui/react'
<Textarea aria-invalid="true" defaultValue="This field has an error" /> ---
import { Textarea } from '@mrmartineau/zui/astro'
---
<Textarea aria-invalid="true">This field has an error</Textarea> import { Textarea } from '@mrmartineau/zui/solid'
<Textarea aria-invalid="true" defaultValue="This field has an error" /> <script lang="ts">
import { Textarea } from '@mrmartineau/zui/svelte'
</script>
<Textarea aria-invalid="true" value="This field has an error" /> <template>
<Textarea aria-invalid="true" value="This field has an error" />
</template>
<script setup>
import { Textarea } from '@mrmartineau/zui/vue'
</script> Disabled
<textarea class="zui-textarea" disabled>Cannot edit this</textarea> import { Textarea } from '@mrmartineau/zui/react'
<Textarea disabled defaultValue="Cannot edit this" /> ---
import { Textarea } from '@mrmartineau/zui/astro'
---
<Textarea disabled>Cannot edit this</Textarea> import { Textarea } from '@mrmartineau/zui/solid'
<Textarea disabled defaultValue="Cannot edit this" /> <script lang="ts">
import { Textarea } from '@mrmartineau/zui/svelte'
</script>
<Textarea disabled value="Cannot edit this" /> <template>
<Textarea disabled value="Cannot edit this" />
</template>
<script setup>
import { Textarea } from '@mrmartineau/zui/vue'
</script> CSS custom properties
| Property | Default | Description |
|---|---|---|
--zui-textarea-radius | var(--radius-lg) | Border radius |
--zui-textarea-border | var(--color-border) | Border colour |
--zui-textarea-bg | var(--color-background) | Background colour |
--zui-textarea-fg | var(--color-text) | Text colour |
--zui-textarea-padding | var(--space-xs) | Padding inside the textarea |