{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "alert",
  "title": "TIS Alert",
  "author": "TIS Experience Engineering",
  "description": "Alert React por composição, preservando tons, variantes e anatomia pública do DS TIS.",
  "dependencies": [
    "clsx@2.1.1",
    "tailwind-merge@3.6.0",
    "ds-tis@github:tis-experience/ds-tis#dd4c906943847cb7664a72a0c7637a378b39adcc"
  ],
  "files": [
    {
      "path": "registry/tis/alert.tsx",
      "content": "import * as React from \"react\"\n\nimport { cn } from \"./tis-utils\"\n\ntype AlertTone = \"success\" | \"warning\" | \"error\" | \"info\"\ntype AlertVariant = \"solid\" | \"subtle\"\n\ntype AlertProps = React.ComponentProps<\"div\"> & {\n  tone?: AlertTone\n  variant?: AlertVariant\n}\n\nfunction Alert({\n  className,\n  tone = \"info\",\n  variant = \"subtle\",\n  role = \"alert\",\n  ...props\n}: AlertProps) {\n  return (\n    <div\n      data-slot=\"alert\"\n      data-tone={tone}\n      data-variant={variant}\n      role={role}\n      className={cn(\n        \"ds-alert\",\n        `ds-alert--${tone}`,\n        `ds-alert--${variant}`,\n        className,\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction withDsIconClass(children: React.ReactNode) {\n  if (!React.isValidElement<{ className?: string }>(children)) return children\n  return React.cloneElement(children, {\n    className: cn(\"ds-icon\", children.props.className),\n  })\n}\n\nfunction AlertIcon({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      aria-hidden=\"true\"\n      data-slot=\"alert-icon\"\n      className={cn(\"ds-alert__icon\", className)}\n      {...props}\n    >\n      {withDsIconClass(children)}\n    </span>\n  )\n}\n\nfunction AlertContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-content\"\n      className={cn(\"ds-alert__content\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"alert-title\"\n      className={cn(\"ds-alert__title\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"alert-description\"\n      className={cn(\"ds-alert__description\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertActions({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-actions\"\n      className={cn(\"ds-alert__actions\", className)}\n      {...props}\n    />\n  )\n}\n\ntype AlertCloseProps = React.ComponentProps<\"button\"> & {\n  \"aria-label\": string\n}\n\nfunction AlertClose({\n  className,\n  children,\n  type = \"button\",\n  ...props\n}: AlertCloseProps) {\n  return (\n    <button\n      data-slot=\"alert-close\"\n      type={type}\n      className={cn(\"ds-alert__close\", className)}\n      {...props}\n    >\n      {withDsIconClass(children)}\n    </button>\n  )\n}\n\nexport {\n  Alert,\n  AlertActions,\n  AlertClose,\n  AlertContent,\n  AlertDescription,\n  AlertIcon,\n  AlertTitle,\n  type AlertProps,\n  type AlertTone,\n  type AlertVariant,\n}\n",
      "type": "registry:ui",
      "target": "@ui/alert.tsx"
    },
    {
      "path": "registry/tis/tis-utils.ts",
      "content": "import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n",
      "type": "registry:lib",
      "target": "@ui/tis-utils.ts"
    }
  ],
  "css": {
    "@import \"ds-tis/css\"": {}
  },
  "meta": {
    "provider": "React composition",
    "status": "beta",
    "wave": "presentation"
  },
  "docs": "Componha AlertIcon, AlertContent, AlertTitle, AlertDescription, AlertActions e AlertClose. Mantenha @import \"ds-tis/css\" como o primeiro import do CSS global.",
  "type": "registry:ui"
}