Svelte Textarea - Flowbite
Use the textarea component as a multi-line text field input and use it inside form elements available in multiple sizes, styles, and variants
The textarea component is a multi-line text field input that can be used to receive longer chunks of text from the user in the form of a comment box, description field, and more.
Setup #
- Svelte
<script>
import { Textarea } from "flowbite-svelte";
</script>
Textarea example #
Get started with the default example of a textarea component below.
- Svelte
<script>
import { Textarea, Label } from "flowbite-svelte";
</script>
<Label for="textarea-id" class="mb-2">Your message</Label>
<Textarea id="textarea-id" placeholder="Your message" rows{4} name="message" />
WYSIWYG Editor #
If you want to add other actions as buttons alongside your textarea component, such as with a WYSIWYG editor, then you can use the example below.
- Svelte
<script>
import { Textarea, Toolbar, ToolbarGroup, ToolbarButton, Button } from "flowbite-svelte";
import { PaperClipOutline, MapPinAltSolid, ImageOutline, CodeOutline, FaceGrinOutline, PaperPlaneOutline } from "flowbite-svelte-icons";
</script>
<form>
<label for="editor" class="sr-only">Publish post</label>
<Textarea id="editor" rows={8} class="mb-4" placeholder="Write a comment">
{#snippet header()}
<Toolbar embedded>
<ToolbarGroup>
<ToolbarButton name="Attach file"><PaperClipOutline class="h-6 w-6 rotate-45" /></ToolbarButton>
<ToolbarButton name="Embed map"><MapPinAltSolid class="h-6 w-6" /></ToolbarButton>
<ToolbarButton name="Upload image"><ImageOutline class="h-6 w-6" /></ToolbarButton>
</ToolbarGroup>
<ToolbarGroup>
<ToolbarButton name="Format code"><CodeOutline class="h-6 w-6" /></ToolbarButton>
<ToolbarButton name="Add emoji"><FaceGrinOutline class="h-6 w-6" /></ToolbarButton>
</ToolbarGroup>
{#snippet end()}
<ToolbarButton name="send"><PaperPlaneOutline class="h-6 w-6 rotate-45" /></ToolbarButton>
{/snippet}
</Toolbar>
{/snippet}
</Textarea>
<Button>Publish post</Button>
</form>
Comment box #
Most often the textarea component is used as the main text field input element in comment sections. Use this example to also apply a helper text and buttons below the textarea itself.
- Svelte
<script>
import { Textarea, Toolbar, ToolbarGroup, ToolbarButton, Button } from "flowbite-svelte";
import { PaperClipOutline, MapPinAltSolid, ImageOutline } from "flowbite-svelte-icons";
</script>
<form>
<Textarea class="mb-4" placeholder="Write a comment">
{#snippet footer()}
<div class="flex items-center justify-between">
<Button type="submit">Post comment</Button>
<Toolbar embedded>
<ToolbarButton name="Attach file"><PaperClipOutline class="h-6 w-6" /></ToolbarButton>
<ToolbarButton name="Set location"><MapPinAltSolid class="h-6 w-6" /></ToolbarButton>
<ToolbarButton name="Upload image"><ImageOutline class="h-6 w-6" /></ToolbarButton>
</Toolbar>
</div>
{/snippet}
</Textarea>
</form>
<p class="ms-auto text-xs text-gray-500 dark:text-gray-400">
Remember, contributions to this topic should follow our <a href="/" class="text-primary-600 dark:text-primary-500 hover:underline">Community Guidelines</a>
.
</p>
Chatroom input #
If you want to build a chatroom component you will usually want to use a textarea element to allow users to write multi-line chunks of text.
- Svelte
<script>
import { Textarea, Alert, ToolbarButton } from "flowbite-svelte";
import { ImageOutline, FaceGrinOutline, PaperPlaneOutline } from "flowbite-svelte-icons";
</script>
<form>
<label for="chat" class="sr-only">Your message</label>
<div class="flex items-center rounded-lg bg-gray-50 px-3 py-2 dark:bg-gray-700">
<ToolbarButton color="dark" class="text-gray-500 dark:text-gray-400">
<ImageOutline class="h-6 w-6" />
<span class="sr-only">Upload image</span>
</ToolbarButton>
<ToolbarButton color="dark" class="text-gray-500 dark:text-gray-400">
<FaceGrinOutline class="h-6 w-6" />
<span class="sr-only">Add emoji</span>
</ToolbarButton>
<Textarea id="chat" class="mx-4 bg-white dark:bg-gray-800" rows={1} placeholder="Your message..." />
<ToolbarButton type="submit" color="blue" class="text-primary-600 dark:text-primary-500 rounded-full">
<PaperPlaneOutline class="h-6 w-6 rotate-45" />
<span class="sr-only">Send message</span>
</ToolbarButton>
</div>
</form>
Component data #
The component has the following props, type, and default values. See types page for type information.