{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "card",
  "title": "TIS Card",
  "author": "TIS Experience Engineering",
  "description": "Card React por composição completa, incluindo media, header, content e footer públicos 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/card.tsx",
      "content": "import * as React from \"react\"\n\nimport { cn } from \"./tis-utils\"\n\ntype CardVariant = \"default\" | \"outlined\" | \"elevated\" | \"interactive\"\n\ntype CardOwnProps = {\n  className?: string\n  selected?: boolean\n  variant?: CardVariant\n}\n\ntype CardProps<Element extends React.ElementType> = CardOwnProps & {\n  as?: Element\n} & Omit<React.ComponentPropsWithoutRef<Element>, keyof CardOwnProps | \"as\">\n\nfunction Card<Element extends React.ElementType = \"div\">({\n  as,\n  className,\n  selected = false,\n  variant = \"default\",\n  ...props\n}: CardProps<Element>) {\n  const Component = as ?? \"div\"\n\n  return (\n    <Component\n      data-slot=\"card\"\n      data-variant={variant}\n      data-selected={selected || undefined}\n      className={cn(\n        \"ds-card\",\n        `ds-card--${variant}`,\n        selected && \"ds-card--selected\",\n        className,\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardMedia({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-media\"\n      className={cn(\"ds-card__media\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardContainer({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-container\"\n      className={cn(\"ds-card__container\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-header\"\n      className={cn(\"ds-card__header\", className)}\n      {...props}\n    />\n  )\n}\n\ntype CardTitleProps = React.ComponentProps<\"h3\"> & {\n  as?: \"h2\" | \"h3\" | \"h4\" | \"p\" | \"div\"\n}\n\nfunction CardTitle({\n  as: Component = \"h3\",\n  className,\n  ...props\n}: CardTitleProps) {\n  return (\n    <Component\n      data-slot=\"card-title\"\n      className={cn(\"ds-card__title\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"card-description\"\n      className={cn(\"ds-card__description\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-content\"\n      className={cn(\"ds-card__body\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-footer\"\n      className={cn(\"ds-card__footer\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Card,\n  CardContainer,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardMedia,\n  CardTitle,\n  type CardProps,\n  type CardVariant,\n}\n",
      "type": "registry:ui",
      "target": "@ui/card.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": "Use CardHeader, CardTitle, CardDescription, CardContent e CardFooter; CardMedia e CardContainer preservam media full-bleed. Para variant interactive, renderize com as=\"button\" ou as=\"a\" e forneça a semântica de seleção apropriada ao padrão quando selected estiver ativo. Mantenha @import \"ds-tis/css\" como o primeiro import do CSS global.",
  "type": "registry:ui"
}