{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "alert",
  "title": "Alert",
  "description": "A alert component.",
  "dependencies": [
    "class-variance-authority"
  ],
  "files": [
    {
      "path": "registry/default/alert/alert.tsx",
      "content": "\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst alertVariants = cva(\n  \"relative w-full rounded-lg border border-border/70 px-4 py-3 pl-6 text-sm grid has-[>svg]:grid-cols-[auto_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:row-span-2 [&>svg]:text-current shadow-sm has-[*[data-slot=alert-action]]:grid-cols-[0_1fr] has-[>svg]:has-[*[data-slot=alert-action]]:grid-cols-[auto_1fr] sm:has-[*[data-slot=alert-action]]:grid-cols-[0_1fr_auto] sm:has-[>svg]:has-[*[data-slot=alert-action]]:grid-cols-[auto_1fr_auto] [&>svg]:size-5 group before:absolute before:left-2 before:top-2 before:bottom-2 before:w-1 before:rounded-full bg-card dark:bg-muted\",\n  {\n    variants: {\n      variant: {\n        default: \"[&>svg]:text-card-foreground  before:bg-border\",\n        warning:\n          \"  [&>svg]:text-warning-foreground before:bg-warning-foreground\",\n        danger: \" [&>svg]:text-danger-foreground  before:bg-danger-foreground\",\n        info: \"  [&>svg]:text-info-foreground  before:bg-info-foreground\",\n        success:\n          \"  [&>svg]:text-success-foreground before:bg-success-foreground\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  },\n);\n\nexport interface AlertProps\n  extends useRender.ComponentProps<\"div\">, VariantProps<typeof alertVariants> {}\n\nfunction Alert({ className, variant, render, ...props }: AlertProps) {\n  const defaultProps = {\n    \"data-slot\": \"alert\",\n    role: \"alert\" as const,\n    className: cn(alertVariants({ variant }), className),\n  };\n\n  const element = useRender({\n    defaultTagName: \"div\",\n    render,\n    props: mergeProps<\"div\">(defaultProps, props),\n  });\n\n  return element;\n}\n\nexport type AlertTitleProps = useRender.ComponentProps<\"h4\">;\n\nfunction AlertTitle({ className, render, ...props }: AlertTitleProps) {\n  const defaultProps = {\n    \"data-slot\": \"alert-title\",\n    className: cn(\n      \"col-start-2 min-h-4 font-medium tracking-tight row-span-2 self-center group-has-[*[data-slot=alert-description]]:row-span-1 text-card-foreground\",\n      className,\n    ),\n  };\n\n  const element = useRender({\n    defaultTagName: \"h4\",\n    render,\n    props: mergeProps<\"h4\">(defaultProps, props),\n  });\n\n  return element;\n}\n\nexport type AlertDescriptionProps = useRender.ComponentProps<\"div\">;\n\nfunction AlertDescription({\n  className,\n  render,\n  ...props\n}: AlertDescriptionProps) {\n  const defaultProps = {\n    \"data-slot\": \"alert-description\",\n    className: cn(\n      \"col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed row-span-2 self-center group-has-[*[data-slot=alert-title]]:row-span-1 text-muted-foreground\",\n      className,\n    ),\n  };\n\n  const element = useRender({\n    defaultTagName: \"div\",\n    render,\n    props: mergeProps<\"div\">(defaultProps, props),\n  });\n\n  return element;\n}\n\nexport type AlertActionProps = useRender.ComponentProps<\"div\">;\n\nfunction AlertAction({ className, render, ...props }: AlertActionProps) {\n  const defaultProps = {\n    \"data-slot\": \"alert-action\",\n    className: cn(\n      \"col-start-2 flex gap-2 mt-2 sm:col-start-3 sm:row-start-1 sm:row-span-2 sm:self-center sm:ml-4 sm:mt-0 \",\n      className,\n    ),\n  };\n\n  const element = useRender({\n    defaultTagName: \"div\",\n    render,\n    props: mergeProps<\"div\">(defaultProps, props),\n  });\n\n  return element;\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction };\n",
      "type": "registry:ui",
      "target": "components/ui/cubby-ui/alert.tsx"
    }
  ],
  "type": "registry:ui"
}