{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "extends": "none",
  "name": "tooltip",
  "title": "tooltip",
  "description": "tooltip",
  "dependencies": [
    "react-aria-components",
    "tailwind-merge",
    "tailwind-variants"
  ],
  "files": [
    {
      "path": "src/components/ui/tooltip.tsx",
      "content": "'use client'\n\nimport { Button } from 'react-aria-components/Button'\nimport { composeRenderProps } from 'react-aria-components/composeRenderProps'\nimport type { TooltipProps as TooltipPrimitiveProps } from 'react-aria-components/Tooltip'\nimport {\n  OverlayArrow,\n  Tooltip as TooltipPrimitive,\n  TooltipTrigger as TooltipTriggerPrimitive,\n} from 'react-aria-components/Tooltip'\nimport { twJoin } from 'tailwind-merge'\nimport type { VariantProps } from 'tailwind-variants'\nimport { tv } from 'tailwind-variants'\n\nconst tooltipStyles = tv({\n  base: [\n    'group max-w-sm origin-(--trigger-anchor-point) rounded-lg border border-(--tooltip-border) px-2.5 py-1.5 text-sm/6 will-change-transform [--tooltip-border:var(--color-muted-fg)]/30 dark:shadow-none *:[strong]:font-medium',\n  ],\n  variants: {\n    inverse: {\n      true: ['border-transparent bg-fg text-bg', '**:[.text-muted-fg]:text-bg/60'],\n      false: 'bg-overlay text-overlay-fg',\n    },\n    isEntering: {\n      true: [\n        'fade-in animate-in',\n        'placement-left:slide-in-from-right-1 placement-right:slide-in-from-left-1 placement-top:slide-in-from-bottom-1 placement-bottom:slide-in-from-top-1',\n      ],\n    },\n    isExiting: {\n      true: [\n        'fade-in direction-reverse animate-in',\n        'placement-left:slide-out-to-right-1 placement-right:slide-out-to-left-1 placement-top:slide-out-to-bottom-1 placement-bottom:slide-out-to-top-1',\n      ],\n    },\n  },\n  defaultVariants: {\n    inverse: false,\n  },\n})\n\ntype TooltipProps = React.ComponentProps<typeof TooltipTriggerPrimitive>\nconst Tooltip = (props: TooltipProps) => <TooltipTriggerPrimitive {...props} />\n\ninterface TooltipContentProps\n  extends Omit<TooltipPrimitiveProps, 'children'>, VariantProps<typeof tooltipStyles> {\n  arrow?: boolean\n  children?: React.ReactNode\n}\n\nconst TooltipContent = ({\n  offset = 10,\n  arrow = true,\n  inverse,\n  children,\n  ...props\n}: TooltipContentProps) => {\n  return (\n    <TooltipPrimitive\n      {...props}\n      offset={offset}\n      className={composeRenderProps(props.className, (className, renderProps) =>\n        tooltipStyles({\n          ...renderProps,\n          inverse,\n          className,\n        })\n      )}\n    >\n      {arrow && (\n        <OverlayArrow className=\"group\">\n          <svg\n            width={12}\n            height={12}\n            viewBox=\"0 0 12 12\"\n            // inverse\n            className={twJoin(\n              'block group-placement-bottom:rotate-180 group-placement-left:-rotate-90 group-placement-right:rotate-90 forced-colors:fill-[Canvas] forced-colors:stroke-[ButtonBorder]',\n              inverse ? 'fill-fg stroke-transparent' : 'fill-overlay stroke-(--tooltip-border)'\n            )}\n          >\n            <path d=\"M0 0 L6 6 L12 0\" />\n          </svg>\n        </OverlayArrow>\n      )}\n      {children}\n    </TooltipPrimitive>\n  )\n}\n\nconst TooltipTrigger = Button\n\nexport type { TooltipContentProps, TooltipProps }\nexport { Tooltip, TooltipContent, TooltipTrigger }\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}