{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "tooltip",
  "title": "TIS Tooltip",
  "author": "TIS Experience Engineering",
  "description": "Tooltip React com composição shadcn e comportamento Base UI, preservando o contrato visual e os tokens públicos do DS TIS.",
  "dependencies": [
    "@base-ui/react@1.6.0",
    "clsx@2.1.1",
    "tailwind-merge@3.6.0",
    "ds-tis@github:tis-experience/ds-tis#dd4c906943847cb7664a72a0c7637a378b39adcc"
  ],
  "files": [
    {
      "path": "registry/tis/tooltip.tsx",
      "content": "import * as React from \"react\"\nimport { Tooltip as TooltipPrimitive } from \"@base-ui/react/tooltip\"\n\nimport { cn } from \"./tis-utils\"\n\nconst TooltipIdContext = React.createContext<string | null>(null)\n\nfunction TooltipProvider({\n  closeDelay = 100,\n  delay = 100,\n  ...props\n}: TooltipPrimitive.Provider.Props) {\n  return (\n    <TooltipPrimitive.Provider\n      closeDelay={closeDelay}\n      data-slot=\"tooltip-provider\"\n      delay={delay}\n      {...props}\n    />\n  )\n}\n\nfunction Tooltip({ id, ...props }: TooltipPrimitive.Root.Props & { id?: string }) {\n  const generatedId = React.useId().replaceAll(\":\", \"\")\n  const tooltipId = id ?? `tis-tooltip-${generatedId}`\n\n  return (\n    <TooltipIdContext.Provider value={tooltipId}>\n      <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n    </TooltipIdContext.Provider>\n  )\n}\n\nfunction TooltipTrigger({ \"aria-describedby\": describedBy, ...props }: TooltipPrimitive.Trigger.Props) {\n  const tooltipId = React.useContext(TooltipIdContext)\n  const descriptions = [describedBy, tooltipId].filter(Boolean).join(\" \") || undefined\n\n  return (\n    <TooltipPrimitive.Trigger\n      aria-describedby={descriptions}\n      data-slot=\"tooltip-trigger\"\n      {...props}\n    />\n  )\n}\n\nfunction TooltipPortal(props: TooltipPrimitive.Portal.Props) {\n  return <TooltipPrimitive.Portal data-slot=\"tooltip-portal\" {...props} />\n}\n\nfunction TooltipContent({\n  align = \"center\",\n  alignOffset = 0,\n  children,\n  className,\n  showArrow = true,\n  side = \"top\",\n  sideOffset = 8,\n  ...props\n}: TooltipPrimitive.Popup.Props &\n  Pick<TooltipPrimitive.Positioner.Props, \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"> & {\n    showArrow?: boolean\n  }) {\n  const tooltipId = React.useContext(TooltipIdContext)\n\n  return (\n    <TooltipPortal>\n      <TooltipPrimitive.Positioner\n        align={align}\n        alignOffset={alignOffset}\n        className=\"ds-tis-tooltip__positioner\"\n        data-slot=\"tooltip-positioner\"\n        side={side}\n        sideOffset={sideOffset}\n      >\n        <TooltipPrimitive.Popup\n          className={cn(\"ds-tooltip__content ds-tis-tooltip__popup\", className)}\n          data-slot=\"tooltip-content\"\n          id={props.id ?? tooltipId ?? undefined}\n          role=\"tooltip\"\n          {...props}\n        >\n          {showArrow ? (\n            <TooltipPrimitive.Arrow\n              className=\"ds-tis-tooltip__arrow\"\n              data-slot=\"tooltip-arrow\"\n            />\n          ) : null}\n          {children}\n        </TooltipPrimitive.Popup>\n      </TooltipPrimitive.Positioner>\n    </TooltipPortal>\n  )\n}\n\nexport {\n  Tooltip,\n  TooltipContent,\n  TooltipPortal,\n  TooltipProvider,\n  TooltipTrigger,\n}\n",
      "type": "registry:ui",
      "target": "@ui/tooltip.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\"": {},
    ".ds-tis-tooltip__positioner": {
      "z-index": "var(--ds-z-tooltip)",
      "max-inline-size": "var(--available-width)"
    },
    ".ds-tooltip__content.ds-tis-tooltip__popup": {
      "position": "relative",
      "inset": "auto",
      "margin": "0",
      "transform": "none",
      "pointer-events": "auto"
    },
    ".ds-tooltip__content.ds-tis-tooltip__popup::before": {
      "display": "none"
    },
    ".ds-tis-tooltip__arrow": {
      "inline-size": "var(--ds-tooltip-arrow-base-default)",
      "block-size": "var(--ds-tooltip-arrow-depth-default)",
      "background": "var(--ds-tooltip-arrow-fill-default)",
      "clip-path": "polygon(0 100%, 50% 0, 100% 100%)"
    },
    ".ds-tis-tooltip__arrow[data-side=\"top\"]": {
      "clip-path": "polygon(0 0, 100% 0, 50% 100%)"
    },
    ".ds-tis-tooltip__arrow[data-side=\"left\"]": {
      "inline-size": "var(--ds-tooltip-arrow-depth-default)",
      "block-size": "var(--ds-tooltip-arrow-base-default)",
      "clip-path": "polygon(0 0, 100% 50%, 0 100%)"
    },
    ".ds-tis-tooltip__arrow[data-side=\"right\"]": {
      "inline-size": "var(--ds-tooltip-arrow-depth-default)",
      "block-size": "var(--ds-tooltip-arrow-base-default)",
      "clip-path": "polygon(0 50%, 100% 0, 100% 100%)"
    }
  },
  "meta": {
    "provider": "Base UI",
    "providerRole": "output-provider",
    "status": "beta",
    "wave": "overlay"
  },
  "docs": "Use Tooltip somente como label complementar, mantenha nome acessível no trigger e preserve @import \"ds-tis/css\" como o primeiro import global.",
  "type": "registry:ui"
}