{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "tooltip",
  "title": "tooltip",
  "dependencies": [
    "@radix-ui/react-tooltip",
    "class-variance-authority@^0.7"
  ],
  "registryDependencies": [
    "@dwellir/dwellir-theme",
    "@dwellir/utils",
    "@dwellir/portal-container"
  ],
  "files": [
    {
      "path": "components/ui/tooltip.tsx",
      "content": "'use client';\n\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { type ComponentProps, createContext, useContext } from 'react';\nimport { usePortalContainer } from '@/lib/portal-container';\nimport { cn } from '@/lib/utils';\n\nconst tooltipContentVariants = cva(\n  'ui-popup-motion z-popover w-fit origin-(--radix-tooltip-content-transform-origin) text-xs animate-in fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n  {\n    variants: {\n      variant: {\n        default: 'bg-foreground text-background',\n        /* The brand green, as on the API platform's tooltips. */\n        primary: 'bg-primary text-primary-foreground',\n      },\n      size: {\n        default: 'max-w-xs rounded-lg px-3 py-1.5 font-bold text-balance',\n        /* A one-word hint, such as Copy. */\n        sm: 'rounded-lg px-2.5 py-1.25 leading-tight',\n      },\n    },\n    defaultVariants: { variant: 'default', size: 'default' },\n  },\n);\n\nconst tooltipArrowVariants = cva('', {\n  variants: {\n    variant: {\n      default: 'fill-foreground',\n      primary: 'fill-primary',\n    },\n  },\n  defaultVariants: { variant: 'default' },\n});\n\n/* True under a TooltipProvider, so a Tooltip knows it can share the provider's warm state. */\nconst InProvider = createContext(false);\n\n/*\n * Mount one at the app's root. After a tooltip shows, the next one in the app\n * opens at once for skipDelayDuration, as a row of icon buttons should.\n */\nfunction TooltipProvider({\n  delayDuration = 150,\n  skipDelayDuration = 300,\n  children,\n  ...props\n}: ComponentProps<typeof TooltipPrimitive.Provider>) {\n  return (\n    <TooltipPrimitive.Provider\n      data-slot=\"tooltip-provider\"\n      delayDuration={delayDuration}\n      skipDelayDuration={skipDelayDuration}\n      {...props}\n    >\n      <InProvider.Provider value>{children}</InProvider.Provider>\n    </TooltipPrimitive.Provider>\n  );\n}\n\n/*\n * A short hint on hover and focus. Never put the only copy of important text in it.\n * Without a TooltipProvider above it, it brings its own and waits the full delay.\n */\nfunction Tooltip(props: ComponentProps<typeof TooltipPrimitive.Root>) {\n  const root = <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />;\n  return useContext(InProvider) ? root : <TooltipProvider>{root}</TooltipProvider>;\n}\n\nfunction TooltipTrigger(props: ComponentProps<typeof TooltipPrimitive.Trigger>) {\n  return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n  className,\n  variant,\n  size,\n  sideOffset = 6,\n  collisionPadding = 12,\n  container,\n  children,\n  ...props\n}: ComponentProps<typeof TooltipPrimitive.Content> &\n  VariantProps<typeof tooltipContentVariants> &\n  /* The element to render into; else the PortalContainer landmark, else the page body. */\n  Pick<ComponentProps<typeof TooltipPrimitive.Portal>, 'container'>) {\n  return (\n    <TooltipPrimitive.Portal container={usePortalContainer(container)}>\n      <TooltipPrimitive.Content\n        data-slot=\"tooltip-content\"\n        data-variant={variant ?? 'default'}\n        data-size={size ?? 'default'}\n        sideOffset={sideOffset}\n        collisionPadding={collisionPadding}\n        className={cn(tooltipContentVariants({ variant, size }), className)}\n        {...props}\n      >\n        {children}\n        <TooltipPrimitive.Arrow\n          className={tooltipArrowVariants({ variant })}\n          width={12}\n          height={6}\n        />\n      </TooltipPrimitive.Content>\n    </TooltipPrimitive.Portal>\n  );\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, tooltipContentVariants };\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}