{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "tooltip",
  "title": "Tooltip",
  "description": "A shadcn-style tooltip component built with Ark UI primitives.",
  "dependencies": ["@ark-ui/react"],
  "files": [
    {
      "path": "src/components/ui/tooltip.tsx",
      "content": "\"use client\";\n\nimport { Portal } from \"@ark-ui/react/portal\";\nimport {\n  Tooltip as TooltipPrimitive,\n  useTooltip,\n  useTooltipContext,\n} from \"@ark-ui/react/tooltip\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport type TooltipProps = TooltipPrimitive.RootProps;\n\nexport const Tooltip = ({\n  positioning = { placement: \"top\" },\n  ...props\n}: TooltipProps) => (\n  <TooltipPrimitive.Root\n    data-slot=\"tooltip\"\n    {...props}\n    positioning={positioning}\n  />\n);\n\nexport type TooltipPopupProps = TooltipPrimitive.ContentProps & {\n  arrowClassName?: string;\n  arrowTipClassName?: string;\n  disablePortal?: boolean;\n  positionerClassName?: string;\n  showArrow?: boolean;\n};\n\nexport const TooltipPopup = ({\n  arrowClassName,\n  arrowTipClassName,\n  children,\n  className,\n  disablePortal,\n  positionerClassName,\n  showArrow = true,\n  ...contentProps\n}: TooltipPopupProps) => {\n  const inner = (\n    <TooltipPrimitive.Positioner\n      className={cn(!disablePortal && \"z-50\", positionerClassName)}\n      data-slot=\"tooltip-positioner\"\n    >\n      <TooltipPrimitive.Content\n        className={cn(\n          \"relative z-[calc(50+var(--layer-index,0))] w-fit max-w-[min(22rem,var(--available-width,22rem))] rounded-md border border-border/80 bg-popover px-2.5 py-1.5 text-popover-foreground text-xs shadow-md outline-none ring-1 ring-border/20\",\n          \"origin-(--transform-origin) transition-opacity duration-150 data-[state=closed]:opacity-0 data-[state=open]:opacity-100\",\n          className,\n        )}\n        data-slot=\"tooltip-content\"\n        {...contentProps}\n      >\n        {showArrow ? (\n          <TooltipPrimitive.Arrow\n            className={cn(\n              \"[--arrow-background:var(--popover)] [--arrow-size:9px] [--arrow-shadow-color:var(--border)]\",\n              arrowClassName,\n            )}\n            data-slot=\"tooltip-arrow\"\n          >\n            <TooltipPrimitive.ArrowTip\n              className={cn(\n                \"border-border border-t border-l\",\n                arrowTipClassName,\n              )}\n              data-slot=\"tooltip-arrow-tip\"\n            />\n          </TooltipPrimitive.Arrow>\n        ) : null}\n        {children}\n      </TooltipPrimitive.Content>\n    </TooltipPrimitive.Positioner>\n  );\n\n  return disablePortal ? inner : <Portal>{inner}</Portal>;\n};\n\nexport type TooltipTriggerProps = TooltipPrimitive.TriggerProps;\n\nexport const TooltipTrigger = ({\n  className,\n  ...props\n}: TooltipTriggerProps) => (\n  <TooltipPrimitive.Trigger\n    className={cn(className)}\n    data-slot=\"tooltip-trigger\"\n    {...props}\n  />\n);\n\nexport type TooltipPositionerProps = TooltipPrimitive.PositionerProps;\n\nexport const TooltipPositioner = ({\n  className,\n  ...props\n}: TooltipPositionerProps) => (\n  <TooltipPrimitive.Positioner\n    className={cn(className)}\n    data-slot=\"tooltip-positioner-raw\"\n    {...props}\n  />\n);\n\nexport type TooltipContentProps = TooltipPrimitive.ContentProps;\n\nexport const TooltipContent = ({\n  className,\n  ...props\n}: TooltipContentProps) => (\n  <TooltipPrimitive.Content\n    className={cn(className)}\n    data-slot=\"tooltip-content-raw\"\n    {...props}\n  />\n);\n\nexport type TooltipArrowProps = TooltipPrimitive.ArrowProps;\n\nexport const TooltipArrow = ({ className, ...props }: TooltipArrowProps) => (\n  <TooltipPrimitive.Arrow\n    className={cn(className)}\n    data-slot=\"tooltip-arrow-raw\"\n    {...props}\n  />\n);\n\nexport type TooltipArrowTipProps = TooltipPrimitive.ArrowTipProps;\n\nexport const TooltipArrowTip = ({\n  className,\n  ...props\n}: TooltipArrowTipProps) => (\n  <TooltipPrimitive.ArrowTip\n    className={cn(className)}\n    data-slot=\"tooltip-arrow-tip-raw\"\n    {...props}\n  />\n);\n\nexport const TooltipContext = TooltipPrimitive.Context;\nexport const TooltipProvider = TooltipPrimitive.RootProvider;\n\nexport type TooltipRootProviderProps = TooltipPrimitive.RootProviderProps;\n\nexport const TooltipRootProvider = (props: TooltipRootProviderProps) => (\n  <TooltipPrimitive.RootProvider data-slot=\"tooltip-root-provider\" {...props} />\n);\n\nexport { useTooltip, useTooltipContext };\n",
      "type": "registry:ui",
      "target": "src/components/ui/tooltip.tsx"
    }
  ],
  "type": "registry:ui"
}
