{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "reui-alert",
  "title": "Alert (status tones)",
  "description": "An alert with default, destructive, info, success, warning and inverted tones, a title, a description and an action slot.",
  "dependencies": [
    "class-variance-authority"
  ],
  "files": [
    {
      "path": "registry/tealmac/reui-alert.tsx",
      "content": "/**\n * Alert - adapted for tealmac UI from ReUI \"alert\"\n * (https://github.com/keenthemes/reui), MIT License, Copyright (c) 2025\n * Keenthemes Inc. The full licence text is in THIRD_PARTY_NOTICES.md.\n * Changes: tealmac UI import paths, one style (the per-style radius variants\n * are a single radius), status tones written with Tailwind palette colours\n * (no extra theme tokens needed) chosen for AA contrast.\n */\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n  [\n    \"relative w-full text-sm border has-[>svg]:grid-cols-[calc(var(--spacing)*3)_1fr] grid-cols-[0_1fr] grid gap-y-0.5 items-center [&>svg:not([class*=size-])]:size-4\",\n    \"has-[>[data-slot=alert-title]+[data-slot=alert-description]]:[&_[data-slot=alert-action]]:sm:row-end-3\",\n    \"has-[>[data-slot=alert-title]+[data-slot=alert-description]]:items-start\",\n    \"has-[>[data-slot=alert-title]+[data-slot=alert-description]]:[&_svg]:translate-y-0.5\",\n    \"rounded-lg\",\n    \"px-3\",\n    \"py-2.5\",\n    \"has-[>svg]:gap-x-2.5\",\n  ],\n  {\n    variants: {\n      variant: {\n        default: \"bg-card text-card-foreground\",\n        destructive:\n          \"border-destructive/30 bg-destructive/4 [&>svg]:text-destructive\",\n        info: \"border-violet-600/30 bg-violet-500/5 [&>svg]:text-violet-700 dark:border-violet-400/30 dark:[&>svg]:text-violet-300\",\n        success:\n          \"border-emerald-600/30 bg-emerald-500/5 [&>svg]:text-emerald-700 dark:border-emerald-400/30 dark:[&>svg]:text-emerald-300\",\n        warning:\n          \"border-amber-600/30 bg-amber-500/5 [&>svg]:text-amber-700 dark:border-amber-400/30 dark:[&>svg]:text-amber-300\",\n        invert:\n          \"border-foreground bg-foreground text-background [&_[data-slot=alert-description]]:text-background/70\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction Alert({\n  className,\n  variant,\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n  return (\n    <div\n      data-slot=\"alert\"\n      role=\"alert\"\n      className={cn(alertVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-title\"\n      className={cn(\n        \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDescription({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-description\"\n      className={cn(\n        \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-action\"\n      className={cn(\n        \"flex gap-1.5 max-sm:col-start-2 max-sm:mt-2 max-sm:justify-start sm:col-start-3 sm:row-start-1 sm:justify-end sm:self-center\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\n",
      "type": "registry:ui",
      "target": "components/reui/alert.tsx"
    }
  ],
  "type": "registry:ui"
}