{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "alert",
  "title": "Alert",
  "description": "A composable static message with semantic tones, optional icon, and optional action.",
  "dependencies": [
    "class-variance-authority"
  ],
  "files": [
    {
      "path": "registry/rivetui/components/alert/alert.tsx",
      "content": "import { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst alertVariants = cva(\n  \"flex w-full items-start gap-3 border p-4 text-sm [&>[data-slot=alert-icon]]:mt-0.5\",\n  {\n    variants: {\n      variant: {\n        neutral: \"border-border bg-background [&>[data-slot=alert-icon]]:text-foreground\",\n        success:\n          \"border-emerald-700/35 bg-emerald-500/5 [&>[data-slot=alert-icon]]:text-emerald-700 dark:[&>[data-slot=alert-icon]]:text-emerald-400\",\n        warning:\n          \"border-amber-700/35 bg-amber-500/5 [&>[data-slot=alert-icon]]:text-amber-700 dark:[&>[data-slot=alert-icon]]:text-amber-400\",\n        destructive:\n          \"border-destructive/45 bg-destructive/5 [&>[data-slot=alert-icon]]:text-destructive\",\n      },\n    },\n    defaultVariants: {\n      variant: \"neutral\",\n    },\n  },\n);\n\ntype AlertProps = React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>;\n\nfunction Alert({ className, variant = \"neutral\", role = \"alert\", ...props }: AlertProps) {\n  return (\n    <div\n      data-slot=\"alert\"\n      role={role}\n      className={cn(alertVariants({ variant, className }))}\n      {...props}\n    />\n  );\n}\n\nfunction AlertIcon({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"alert-icon\"\n      className={cn(\"grid size-5 shrink-0 place-items-center [&_svg]:size-4\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction AlertContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return <div data-slot=\"alert-content\" className={cn(\"min-w-0 flex-1\", className)} {...props} />;\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"h5\">) {\n  return (\n    <h5\n      data-slot=\"alert-title\"\n      className={cn(\"font-semibold leading-5 tracking-tight\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction AlertDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-description\"\n      className={cn(\"mt-1 leading-relaxed text-muted-foreground [&_p]:leading-relaxed\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n  return <div data-slot=\"alert-action\" className={cn(\"shrink-0\", className)} {...props} />;\n}\n\nexport type { AlertProps };\nexport { Alert, AlertAction, AlertContent, AlertDescription, AlertIcon, AlertTitle, alertVariants };\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}