{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "Popover",
  "dependencies": [
    "@base-ui/react",
    "cn",
    "rescript-base-ui"
  ],
  "files": [
    {
      "path": "registry/base/ui/Popover.res",
      "content": "@@directive(\"'use client'\")\n\n@@jsxConfig({version: 4, mode: \"automatic\", module_: \"BaseUi.BaseUiJsxDOM\"})\n\nopen BaseUi.Types\n\n@module(\"cn\")\nexternal cn: (string, option<string>) => string = \"cn\"\n\n@react.componentWithProps(BaseUi.Popover.Root.props)\nlet make = (props: BaseUi.Popover.Root.props<'payload>) =>\n  <BaseUi.Popover.Root {...props} dataSlot={props.dataSlot->Option.getOr(\"popover\")} />\n\nmodule Trigger = {\n  @react.componentWithProps(BaseUi.Popover.Trigger.props)\n  let make = (props: BaseUi.Popover.Trigger.props<'payload>) =>\n    <BaseUi.Popover.Trigger {...props} dataSlot={props.dataSlot->Option.getOr(\"popover-trigger\")} />\n}\n\nmodule Content = {\n  type props = {\n    align?: Align.t,\n    alignOffset?: float,\n    side?: Side.t,\n    sideOffset?: float,\n    ...BaseUi.Popover.Popup.props,\n  }\n\n  let toBaseUiProps: props => BaseUi.Popover.Popup.props = %raw(`({align, alignOffset, side, sideOffset, ...props}) => props`)\n\n  @react.componentWithProps(props)\n  let make = (props: props) =>\n    <BaseUi.Popover.Portal>\n      <BaseUi.Popover.Positioner\n        align={props.align->Option.getOr(Align.Center)}\n        alignOffset={Const(props.alignOffset->Option.getOr(0.))}\n        side={props.side->Option.getOr(Side.Bottom)}\n        sideOffset={Const(props.sideOffset->Option.getOr(4.))}\n        className=\"isolate z-50\"\n      >\n        <BaseUi.Popover.Popup\n          {...toBaseUiProps(props)}\n          dataSlot={props.dataSlot->Option.getOr(\"popover-content\")}\n          className={cn(\n            \"data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2 bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open: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 ring-foreground/10 flex flex-col gap-2.5 rounded-lg p-2.5 text-sm shadow-md ring-1 duration-100 z-50 w-72 origin-(--transform-origin) outline-hidden\",\n            props.className,\n          )}\n        />\n      </BaseUi.Popover.Positioner>\n    </BaseUi.Popover.Portal>\n}\n\nmodule Header = {\n  @react.componentWithProps(DomProps.t)\n  let make = (props: DomProps.t) =>\n    <div\n      {...props}\n      dataSlot={props.dataSlot->Option.getOr(\"popover-header\")}\n      className={cn(\"flex flex-col gap-0.5 text-sm\", props.className)}\n    />\n}\n\nmodule Title = {\n  @react.componentWithProps(BaseUIComponentProps.t)\n  let make = (props: BaseUIComponentProps.t) =>\n    <BaseUi.Popover.Title\n      {...props}\n      dataSlot={props.dataSlot->Option.getOr(\"popover-title\")}\n      className={cn(\"font-medium\", props.className)}\n    />\n}\n\nmodule Description = {\n  @react.componentWithProps(BaseUIComponentProps.t)\n  let make = (props: BaseUIComponentProps.t) =>\n    <BaseUi.Popover.Description\n      {...props}\n      dataSlot={props.dataSlot->Option.getOr(\"popover-description\")}\n      className={cn(\"text-muted-foreground\", props.className)}\n    />\n}\n",
      "type": "registry:file",
      "target": "@ui/Popover.res"
    }
  ],
  "type": "registry:ui"
}