{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "Tooltip",
  "dependencies": [
    "@base-ui/react",
    "cn",
    "rescript-base-ui"
  ],
  "files": [
    {
      "path": "registry/base/ui/Tooltip.res",
      "content": "@@directive(\"'use client'\")\n\nopen BaseUi.Types\n\n@module(\"cn\")\nexternal cn: (string, option<string>) => string = \"cn\"\n\n@react.componentWithProps(BaseUi.Tooltip.Root.props)\nlet make = (props: BaseUi.Tooltip.Root.props<'payload>) =>\n  <BaseUi.Tooltip.Root {...props} dataSlot={props.dataSlot->Option.getOr(\"tooltip\")} />\n\nmodule Provider = {\n  @react.componentWithProps(BaseUi.Tooltip.Provider.props)\n  let make = (props: BaseUi.Tooltip.Provider.props) => {\n    let delay = props.delay->Option.getOr(0.)\n    <BaseUi.Tooltip.Provider {...props} delay />\n  }\n}\n\nmodule Trigger = {\n  @react.componentWithProps(BaseUi.Tooltip.Trigger.props)\n  let make = (props: BaseUi.Tooltip.Trigger.props) =>\n    <BaseUi.Tooltip.Trigger {...props} dataSlot={props.dataSlot->Option.getOr(\"tooltip-trigger\")} />\n}\n\nmodule Content = {\n  type props = {\n    ...BaseUi.Types.BaseUIComponentWithoutChildrenProps.t,\n    children: React.element,\n    align?: Align.t,\n    alignOffset?: float,\n    side?: Side.t,\n    sideOffset?: float,\n  }\n\n  let toBaseUiProps: props => BaseUi.Types.BaseUIComponentProps.t = %raw(`({align, alignOffset, side, sideOffset, ...props}) => props`)\n\n  @react.componentWithProps(props)\n  let make = (props: props) =>\n    <BaseUi.Tooltip.Portal>\n      <BaseUi.Tooltip.Positioner\n        align={props.align->Option.getOr(Align.Center)}\n        alignOffset={Const(props.alignOffset->Option.getOr(0.))}\n        side={props.side->Option.getOr(Side.Top)}\n        sideOffset={Const(props.sideOffset->Option.getOr(4.))}\n        className=\"isolate z-50\"\n      >\n        <BaseUi.Tooltip.Popup\n          {...toBaseUiProps(props)}\n          dataSlot={props.dataSlot->Option.getOr(\"tooltip-content\")}\n          className={cn(\n            \"data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-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 inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs has-data-[slot=kbd]:pr-1.5 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2 z-50 w-fit max-w-xs origin-(--transform-origin) bg-foreground text-background\",\n            props.className,\n          )}\n        >\n          {props.children}\n          <BaseUi.Tooltip.Arrow\n            className=\"size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 bg-foreground fill-foreground z-50 data-[side=bottom]:top-1 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5\"\n          />\n        </BaseUi.Tooltip.Popup>\n      </BaseUi.Tooltip.Positioner>\n    </BaseUi.Tooltip.Portal>\n}\n",
      "type": "registry:file",
      "target": "@ui/Tooltip.res"
    }
  ],
  "type": "registry:ui"
}