{"version":3,"file":"ResponsiveDialog-iDOOzs_c.cjs","names":["MobileBottomSheet","Dialog","DialogPortal","PortalContainerProvider","DialogContent","cn","DialogHeader","DialogTitle","DialogDescription"],"sources":["../../../platform/ui-components/src/components/ResponsiveDialog.tsx"],"sourcesContent":["import type React from \"react\";\nimport { useState } from \"react\";\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogPortal,\n  DialogTitle,\n  PortalContainerProvider,\n  cn,\n} from \"@fluid-app/ui-primitives\";\nimport { MobileBottomSheet } from \"./MobileBottomSheet\";\n\ntype ResponsiveDialogPresentation = \"dialog\" | \"bottom-sheet\";\ntype ResponsiveDialogSize = \"compact\" | \"medium\" | \"wide\";\n\ntype ResponsiveDialogProps = {\n  open: boolean;\n  onOpenChange: (open: boolean) => void;\n  title: React.ReactNode;\n  description?: React.ReactNode;\n  children: React.ReactNode;\n  role?: \"dialog\" | \"alertdialog\";\n  presentation?: ResponsiveDialogPresentation;\n  size?: ResponsiveDialogSize;\n  // Overflow of the content box (dialog or bottom-sheet). Defaults to \"hidden\".\n  // Desktop portals render outside this box. Set \"visible\" for floating\n  // content rendered inside the box, including bottom-sheet portals.\n  contentOverflow?: \"hidden\" | \"visible\";\n};\n\nconst sizeClasses: Record<ResponsiveDialogSize, string> = {\n  compact: \"sm:max-w-sm\",\n  medium: \"sm:max-w-lg\",\n  wide: \"sm:max-w-xl\",\n};\n\nexport type {\n  ResponsiveDialogPresentation,\n  ResponsiveDialogProps,\n  ResponsiveDialogSize,\n};\n\nexport function ResponsiveDialog({\n  open,\n  onOpenChange,\n  title,\n  description,\n  children,\n  role = \"dialog\",\n  presentation = \"dialog\",\n  size = \"medium\",\n  contentOverflow = \"hidden\",\n}: ResponsiveDialogProps): React.JSX.Element {\n  const [portalContainer, setPortalContainer] = useState<HTMLDivElement | null>(\n    null,\n  );\n  if (presentation === \"bottom-sheet\") {\n    return (\n      <MobileBottomSheet\n        open={open}\n        onOpenChange={onOpenChange}\n        title={title}\n        description={description}\n        role={role}\n        contentOverflow={contentOverflow}\n      >\n        <div className=\"space-y-6 px-2\">{children}</div>\n      </MobileBottomSheet>\n    );\n  }\n\n  return (\n    <Dialog open={open} onOpenChange={onOpenChange}>\n      <DialogPortal>\n        {/* Keep the dialog and its portaled dropdowns above Sheet content (1050).\n            A shared stacking context preserves their existing relative layers. */}\n        <div\n          ref={setPortalContainer}\n          className=\"pointer-events-none fixed inset-0 z-[1100]\"\n        >\n          {portalContainer && (\n            <PortalContainerProvider container={portalContainer}>\n              <DialogContent\n                role={role}\n                {...(description ? {} : { \"aria-describedby\": undefined })}\n                className={cn(\n                  \"max-h-[90vh] gap-0 p-0\",\n                  contentOverflow === \"visible\"\n                    ? \"overflow-visible\"\n                    : \"overflow-hidden\",\n                  sizeClasses[size],\n                )}\n              >\n                <DialogHeader className=\"shrink-0 px-6 pt-6 pb-4\">\n                  <DialogTitle>{title}</DialogTitle>\n                  {description ? (\n                    <DialogDescription>{description}</DialogDescription>\n                  ) : null}\n                </DialogHeader>\n                <div className=\"min-h-0 space-y-6 overflow-y-auto px-6 pb-6\">\n                  {children}\n                </div>\n              </DialogContent>\n            </PortalContainerProvider>\n          )}\n        </div>\n      </DialogPortal>\n    </Dialog>\n  );\n}\n"],"mappings":";;;;;;AAgCA,MAAM,cAAoD;CACxD,SAAS;CACT,QAAQ;CACR,MAAM;CACP;AAQD,SAAgB,iBAAiB,EAC/B,MACA,cACA,OACA,aACA,UACA,OAAO,UACP,eAAe,UACf,OAAO,UACP,kBAAkB,YACyB;CAC3C,MAAM,CAAC,iBAAiB,uBAAA,GAAA,MAAA,UACtB,KACD;AACD,KAAI,iBAAiB,eACnB,QACE,iBAAA,GAAA,kBAAA,KAACA,0BAAAA,mBAAD;EACQ;EACQ;EACP;EACM;EACP;EACW;YAEjB,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;GAAkB;GAAe,CAAA;EAC9B,CAAA;AAIxB,QACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;EAAc;EAAoB;YAChC,iBAAA,GAAA,kBAAA,KAACC,YAAAA,cAAD,EAAA,UAGE,iBAAA,GAAA,kBAAA,KAAC,OAAD;GACE,KAAK;GACL,WAAU;aAET,mBACC,iBAAA,GAAA,kBAAA,KAACC,YAAAA,yBAAD;IAAyB,WAAW;cAClC,iBAAA,GAAA,kBAAA,MAACC,YAAAA,eAAD;KACQ;KACN,GAAK,cAAc,EAAE,GAAG,EAAE,oBAAoB,KAAA,GAAW;KACzD,WAAWC,YAAAA,GACT,0BACA,oBAAoB,YAChB,qBACA,mBACJ,YAAY,MACb;eATH,CAWE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,cAAD;MAAc,WAAU;gBAAxB,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,aAAD,EAAA,UAAc,OAAoB,CAAA,EACjC,cACC,iBAAA,GAAA,kBAAA,KAACC,YAAAA,mBAAD,EAAA,UAAoB,aAAgC,CAAA,GAClD,KACS;SACf,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,WAAU;MACZ;MACG,CAAA,CACQ;;IACQ,CAAA;GAExB,CAAA,EACO,CAAA;EACR,CAAA"}