Components

Textarea

Displays a form textarea or a component that looks like a textarea.

Loading...

Installation

CLI

npx shadcn@latest add https://exawizards.com/exabase/design/registry/textarea.json

Manual

Copy and paste the following code into your project.

import * as React from "react"
import { cva, VariantProps } from "class-variance-authority"

import { cn } from "@/lib/utils"

const textareaVariants = cva(
  "flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-background text-base text-foreground transition-colors placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
  {
    variants: {
      size: {
        default: "px-2.5 py-1.75 md:text-sm",
        sm: "rounded-[min(var(--radius-md),12px)] px-2.5 py-1.5 pb-1 md:text-[0.8rem]",
      },
    },
    defaultVariants: {
      size: "default",
    },
  }
)

function Textarea({
  className,
  size = "default",
  ...props
}: React.ComponentProps<"textarea"> & VariantProps<typeof textareaVariants>) {
  return (
    <textarea
      data-slot="textarea"
      data-size={size}
      className={cn(textareaVariants({ size }), className)}
      {...props}
    />
  )
}

export { Textarea }

Usage

import { Textarea } from "@/components/ui/textarea"
<Textarea />

Examples

Size

Loading...

Disabled

Loading...

Invalid

Loading...

API

<Textarea> renders as a <textarea> element.

On this page