Components/e5b98d42-7a25-4a2f-931c-9a259b4a8fa9

Alert

cardfrom shadcn/ui Essentials
Sign in to Add to Project
Alert

AI Usage Rules

Use Alert for important messages that need attention. Default variant for informational, destructive for errors. Include an icon before the title for better visual hierarchy.

Code Template

import * as React from "react"
import { cva, type VariantProps } from "class-variance-authority"
import { cn } from "@/lib/utils"

const alertVariants = cva(
  "relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
  {
    variants: {
      variant: {
        default: "bg-card text-card-foreground",
        destructive: "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90",
      },
    },
    defaultVariants: { variant: "default" },
  }
)

function Alert({ className, variant, ...props }: React.ComponentProps<"div"> & VariantProps<typeof alertVariants>) {
  return <div data-slot="alert" role="alert" className={cn(alertVariants({ variant }), className)} {...props} />
}

function AlertTitle({ className, ...props }: React.ComponentProps<"div">) {
  return <div data-slot="alert-title" className={cn("col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight", className)} {...props} />
}

function AlertDescription({ className, ...props }: React.ComponentProps<"div">) {
  return <div data-slot="alert-description" className={cn("col-start-2 grid justify-items-start gap-1 text-sm text-muted-foreground [&_p]:leading-relaxed", className)} {...props} />
}

export { Alert, AlertTitle, AlertDescription }

Props Schema

PropertyTypeDefaultDescription
titlestring
variantstring
descriptionstring
View raw JSON schema
{
  "type": "object",
  "properties": {
    "title": {
      "type": "string"
    },
    "variant": {
      "enum": [
        "default",
        "destructive"
      ],
      "type": "string"
    },
    "description": {
      "type": "string"
    }
  }
}