@qualified-salesforce/web 0.0.1-oidc-bootstrap

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (560) hide show
  1. package/41842993ec71d6628e4949e9a22b146b.svg +3 -0
  2. package/7271f3433ed82fc7f56adcd9e30275f4.svg +17 -0
  3. package/LICENSE.txt +82 -0
  4. package/components/helpers/entriesStringValidations.js +69 -0
  5. package/components/helpers/languages.js +32 -0
  6. package/components/shared/assertUnreachable.js +5 -0
  7. package/components/shared/controls/imageCropperHelpers.js +43 -0
  8. package/components/shared/meetingLoadingProgressSpec.js +116 -0
  9. package/constants.generated.js +9883 -0
  10. package/css/widget/multimodal_v2/host.split-css.css +162 -0
  11. package/css/widget/multimodal_v2/index.split-css.panda.css +5240 -0
  12. package/css/widget/widget.split-css.css +100 -0
  13. package/fonts/inter/Inter-Black.woff +0 -0
  14. package/fonts/inter/Inter-Black.woff2 +0 -0
  15. package/fonts/inter/Inter-BlackItalic.woff +0 -0
  16. package/fonts/inter/Inter-BlackItalic.woff2 +0 -0
  17. package/fonts/inter/Inter-Bold.woff +0 -0
  18. package/fonts/inter/Inter-Bold.woff2 +0 -0
  19. package/fonts/inter/Inter-BoldItalic.woff +0 -0
  20. package/fonts/inter/Inter-BoldItalic.woff2 +0 -0
  21. package/fonts/inter/Inter-ExtraBold.woff +0 -0
  22. package/fonts/inter/Inter-ExtraBold.woff2 +0 -0
  23. package/fonts/inter/Inter-ExtraBoldItalic.woff +0 -0
  24. package/fonts/inter/Inter-ExtraBoldItalic.woff2 +0 -0
  25. package/fonts/inter/Inter-ExtraLight.woff +0 -0
  26. package/fonts/inter/Inter-ExtraLight.woff2 +0 -0
  27. package/fonts/inter/Inter-ExtraLightItalic.woff +0 -0
  28. package/fonts/inter/Inter-ExtraLightItalic.woff2 +0 -0
  29. package/fonts/inter/Inter-Italic.woff +0 -0
  30. package/fonts/inter/Inter-Italic.woff2 +0 -0
  31. package/fonts/inter/Inter-Light.woff +0 -0
  32. package/fonts/inter/Inter-Light.woff2 +0 -0
  33. package/fonts/inter/Inter-LightItalic.woff +0 -0
  34. package/fonts/inter/Inter-LightItalic.woff2 +0 -0
  35. package/fonts/inter/Inter-Medium.woff +0 -0
  36. package/fonts/inter/Inter-Medium.woff2 +0 -0
  37. package/fonts/inter/Inter-MediumItalic.woff +0 -0
  38. package/fonts/inter/Inter-MediumItalic.woff2 +0 -0
  39. package/fonts/inter/Inter-Regular.woff +0 -0
  40. package/fonts/inter/Inter-Regular.woff2 +0 -0
  41. package/fonts/inter/Inter-SemiBold.woff +0 -0
  42. package/fonts/inter/Inter-SemiBold.woff2 +0 -0
  43. package/fonts/inter/Inter-SemiBoldItalic.woff +0 -0
  44. package/fonts/inter/Inter-SemiBoldItalic.woff2 +0 -0
  45. package/fonts/inter/Inter-Thin.woff +0 -0
  46. package/fonts/inter/Inter-Thin.woff2 +0 -0
  47. package/fonts/inter/Inter-ThinItalic.woff +0 -0
  48. package/fonts/inter/Inter-ThinItalic.woff2 +0 -0
  49. package/fonts/inter/Inter-italic.var.woff2 +0 -0
  50. package/fonts/inter/Inter-roman.var.woff2 +0 -0
  51. package/images/close.js +63 -0
  52. package/images/logo.js +22 -0
  53. package/js/4101.js +19721 -0
  54. package/js/daily-esm.js +9948 -0
  55. package/js/date-fns.js +427 -0
  56. package/js/multimodal_v2.js +1653 -0
  57. package/js/runtime.js +109 -0
  58. package/media/Inter-Black.796be8d8bf.woff2 +0 -0
  59. package/media/Inter-Black.b254104c56.woff +0 -0
  60. package/media/Inter-BlackItalic.70306b0eae.woff +0 -0
  61. package/media/Inter-BlackItalic.752f1e0aaa.woff2 +0 -0
  62. package/media/Inter-Bold.579e0f95ca.woff2 +0 -0
  63. package/media/Inter-Bold.b1234477a5.woff +0 -0
  64. package/media/Inter-BoldItalic.3d0d804323.woff +0 -0
  65. package/media/Inter-BoldItalic.828a494e04.woff2 +0 -0
  66. package/media/Inter-ExtraBold.208a9e6c99.woff +0 -0
  67. package/media/Inter-ExtraBold.d65f028165.woff2 +0 -0
  68. package/media/Inter-ExtraBoldItalic.30429962ec.woff +0 -0
  69. package/media/Inter-ExtraBoldItalic.8c7eac5ce3.woff2 +0 -0
  70. package/media/Inter-ExtraLight.15c082a57d.woff +0 -0
  71. package/media/Inter-ExtraLight.6824177d1e.woff2 +0 -0
  72. package/media/Inter-ExtraLightItalic.05138dddf3.woff2 +0 -0
  73. package/media/Inter-ExtraLightItalic.3beee54f59.woff +0 -0
  74. package/media/Inter-Italic.9beab78452.woff +0 -0
  75. package/media/Inter-Italic.d593a8df79.woff2 +0 -0
  76. package/media/Inter-Light.27083fa637.woff2 +0 -0
  77. package/media/Inter-Light.91dfddd842.woff +0 -0
  78. package/media/Inter-LightItalic.0a783b89b3.woff2 +0 -0
  79. package/media/Inter-LightItalic.f8ccf2813f.woff +0 -0
  80. package/media/Inter-Medium.dc792b508e.woff2 +0 -0
  81. package/media/Inter-Medium.ec7dd2d9d8.woff +0 -0
  82. package/media/Inter-MediumItalic.17301e5b40.woff +0 -0
  83. package/media/Inter-MediumItalic.84d3493a9f.woff2 +0 -0
  84. package/media/Inter-Regular.f1f0c35b32.woff2 +0 -0
  85. package/media/Inter-Regular.f356e84aa0.woff +0 -0
  86. package/media/Inter-SemiBold.55027e4724.woff +0 -0
  87. package/media/Inter-SemiBold.fcb100c760.woff2 +0 -0
  88. package/media/Inter-SemiBoldItalic.ab9105ed3b.woff +0 -0
  89. package/media/Inter-SemiBoldItalic.d90f295d0c.woff2 +0 -0
  90. package/media/Inter-Thin.16325d9b0f.woff +0 -0
  91. package/media/Inter-Thin.dafaa44d99.woff2 +0 -0
  92. package/media/Inter-ThinItalic.4fc662b3cf.woff2 +0 -0
  93. package/media/Inter-ThinItalic.d3d8994788.woff +0 -0
  94. package/media/Inter-italic.var.958a0b9742.woff2 +0 -0
  95. package/media/Inter-roman.var.b2129c009c.woff2 +0 -0
  96. package/package.json +20 -0
  97. package/packs/widget/api/docking/docking_host.js +97 -0
  98. package/packs/widget/api/docking/index.js +294 -0
  99. package/packs/widget/api/docking/shared.js +164 -0
  100. package/packs/widget/api/docking/viewport_lock.js +488 -0
  101. package/packs/widget/api/docking/viewport_resize.js +1203 -0
  102. package/packs/widget/esm/fonts/Inter-Black.796be8d8bf.woff2 +0 -0
  103. package/packs/widget/esm/fonts/Inter-Black.b254104c56.woff +0 -0
  104. package/packs/widget/esm/fonts/Inter-BlackItalic.70306b0eae.woff +0 -0
  105. package/packs/widget/esm/fonts/Inter-BlackItalic.752f1e0aaa.woff2 +0 -0
  106. package/packs/widget/esm/fonts/Inter-Bold.579e0f95ca.woff2 +0 -0
  107. package/packs/widget/esm/fonts/Inter-Bold.b1234477a5.woff +0 -0
  108. package/packs/widget/esm/fonts/Inter-BoldItalic.3d0d804323.woff +0 -0
  109. package/packs/widget/esm/fonts/Inter-BoldItalic.828a494e04.woff2 +0 -0
  110. package/packs/widget/esm/fonts/Inter-ExtraBold.208a9e6c99.woff +0 -0
  111. package/packs/widget/esm/fonts/Inter-ExtraBold.d65f028165.woff2 +0 -0
  112. package/packs/widget/esm/fonts/Inter-ExtraBoldItalic.30429962ec.woff +0 -0
  113. package/packs/widget/esm/fonts/Inter-ExtraBoldItalic.8c7eac5ce3.woff2 +0 -0
  114. package/packs/widget/esm/fonts/Inter-ExtraLight.15c082a57d.woff +0 -0
  115. package/packs/widget/esm/fonts/Inter-ExtraLight.6824177d1e.woff2 +0 -0
  116. package/packs/widget/esm/fonts/Inter-ExtraLightItalic.05138dddf3.woff2 +0 -0
  117. package/packs/widget/esm/fonts/Inter-ExtraLightItalic.3beee54f59.woff +0 -0
  118. package/packs/widget/esm/fonts/Inter-Italic.9beab78452.woff +0 -0
  119. package/packs/widget/esm/fonts/Inter-Italic.d593a8df79.woff2 +0 -0
  120. package/packs/widget/esm/fonts/Inter-Light.27083fa637.woff2 +0 -0
  121. package/packs/widget/esm/fonts/Inter-Light.91dfddd842.woff +0 -0
  122. package/packs/widget/esm/fonts/Inter-LightItalic.0a783b89b3.woff2 +0 -0
  123. package/packs/widget/esm/fonts/Inter-LightItalic.f8ccf2813f.woff +0 -0
  124. package/packs/widget/esm/fonts/Inter-Medium.dc792b508e.woff2 +0 -0
  125. package/packs/widget/esm/fonts/Inter-Medium.ec7dd2d9d8.woff +0 -0
  126. package/packs/widget/esm/fonts/Inter-MediumItalic.17301e5b40.woff +0 -0
  127. package/packs/widget/esm/fonts/Inter-MediumItalic.84d3493a9f.woff2 +0 -0
  128. package/packs/widget/esm/fonts/Inter-Regular.f1f0c35b32.woff2 +0 -0
  129. package/packs/widget/esm/fonts/Inter-Regular.f356e84aa0.woff +0 -0
  130. package/packs/widget/esm/fonts/Inter-SemiBold.55027e4724.woff +0 -0
  131. package/packs/widget/esm/fonts/Inter-SemiBold.fcb100c760.woff2 +0 -0
  132. package/packs/widget/esm/fonts/Inter-SemiBoldItalic.ab9105ed3b.woff +0 -0
  133. package/packs/widget/esm/fonts/Inter-SemiBoldItalic.d90f295d0c.woff2 +0 -0
  134. package/packs/widget/esm/fonts/Inter-Thin.16325d9b0f.woff +0 -0
  135. package/packs/widget/esm/fonts/Inter-Thin.dafaa44d99.woff2 +0 -0
  136. package/packs/widget/esm/fonts/Inter-ThinItalic.4fc662b3cf.woff2 +0 -0
  137. package/packs/widget/esm/fonts/Inter-ThinItalic.d3d8994788.woff +0 -0
  138. package/packs/widget/esm/fonts/Inter-italic.var.958a0b9742.woff2 +0 -0
  139. package/packs/widget/esm/fonts/Inter-roman.var.b2129c009c.woff2 +0 -0
  140. package/packs/widget/esm/index.js +183 -0
  141. package/packs/widget/esm/qualified.css +5502 -0
  142. package/routes/app/offers/scripts/OfferMainScript.js +154 -0
  143. package/routes/app/offers/scripts/constants.js +71 -0
  144. package/routes/app/offers/scripts/main/ButtonManager.js +65 -0
  145. package/routes/app/offers/scripts/main/FormManager.js +325 -0
  146. package/routes/app/offers/scripts/main/MainContext.js +19 -0
  147. package/routes/app/offers/scripts/main/OfferManager.js +91 -0
  148. package/routes/app/offers/scripts/main/TriggerManager.js +125 -0
  149. package/routes/app/offers/scripts/rendering/ContentManager.js +53 -0
  150. package/routes/app/offers/scripts/rendering/LocationManager.js +83 -0
  151. package/routes/app/offers/scripts/rendering/RenderedOffer.js +188 -0
  152. package/routes/app/offers/scripts/rendering/Renderer.js +69 -0
  153. package/routes/app/offers/scripts/rendering/RenderingInitializer.js +62 -0
  154. package/routes/app/offers/scripts/rendering/animations/AnimationManager.js +31 -0
  155. package/routes/app/offers/scripts/rendering/animations/AnimationManagerFooter.js +81 -0
  156. package/routes/app/offers/scripts/rendering/animations/AnimationManagerHeader.js +81 -0
  157. package/routes/app/offers/scripts/rendering/animations/AnimationManagerModal.js +117 -0
  158. package/routes/app/offers/scripts/rendering/animations/AnimationManagerSidebar.js +75 -0
  159. package/routes/app/offers/scripts/rendering/animations/AnimationResult.js +43 -0
  160. package/routes/app/offers/scripts/rendering/animations/Animator.js +78 -0
  161. package/routes/app/offers/scripts/rendering/animations/BaseAnimationManager.js +25 -0
  162. package/routes/app/offers/scripts/rendering/lib/BaseComponent.js +106 -0
  163. package/routes/app/offers/scripts/rendering/lib/FormComponent.js +134 -0
  164. package/routes/app/offers/scripts/rendering/lib/OfferComponent.js +144 -0
  165. package/routes/app/offers/scripts/rendering/lib/ScrollbarWidth.js +27 -0
  166. package/routes/app/offers/scripts/rendering/lib/decorators.js +20 -0
  167. package/routes/app/offers/scripts/rendering/locations/CSSVarsManager.js +66 -0
  168. package/routes/app/offers/scripts/rendering/locations/ElementResizeObserver.js +49 -0
  169. package/routes/app/offers/scripts/rendering/locations/footer.js +53 -0
  170. package/routes/app/offers/scripts/rendering/locations/header/AsyncBatchProcessor.js +70 -0
  171. package/routes/app/offers/scripts/rendering/locations/header/CSSTransitionObserver.js +182 -0
  172. package/routes/app/offers/scripts/rendering/locations/header/ElementStyleChangeObserver.js +138 -0
  173. package/routes/app/offers/scripts/rendering/locations/header/ExternalStyleManager.js +110 -0
  174. package/routes/app/offers/scripts/rendering/locations/header/Header.js +353 -0
  175. package/routes/app/offers/scripts/rendering/locations/header/InlineStyleManager.js +105 -0
  176. package/routes/app/offers/scripts/rendering/locations/header/MatchingElementsObserver.js +107 -0
  177. package/routes/app/offers/scripts/rendering/locations/header/NewElementsObserver.js +129 -0
  178. package/routes/app/offers/scripts/rendering/locations/header/RuleWrapper.js +46 -0
  179. package/routes/app/offers/scripts/rendering/locations/header/SelectorObservable.js +23 -0
  180. package/routes/app/offers/scripts/rendering/locations/header/SelectorObserver.js +61 -0
  181. package/routes/app/offers/scripts/rendering/locations/header/ShiftedElementsManager.js +45 -0
  182. package/routes/app/offers/scripts/rendering/locations/header/StyleElementManager.js +37 -0
  183. package/routes/app/offers/scripts/rendering/locations/header/StyleElementWrapper.js +62 -0
  184. package/routes/app/offers/scripts/rendering/locations/header/StyleSelectorObserver/ObservedSelectorValue.js +45 -0
  185. package/routes/app/offers/scripts/rendering/locations/header/StyleSelectorObserver/ObservedSelectors.js +62 -0
  186. package/routes/app/offers/scripts/rendering/locations/header/StyleSelectorObserver/StyleSelectorObserver.js +294 -0
  187. package/routes/app/offers/scripts/rendering/locations/header/StyleSelectorObserver/constants.js +21 -0
  188. package/routes/app/offers/scripts/rendering/locations/header/WindowResizeObserver.js +43 -0
  189. package/routes/app/offers/scripts/rendering/locations/header/utils.js +25 -0
  190. package/routes/app/offers/scripts/rendering/locations/popup.js +66 -0
  191. package/routes/app/offers/scripts/rendering/locations/sidebar.js +21 -0
  192. package/routes/app/offers/scripts/rendering/variations/ButtonBanner.js +105 -0
  193. package/routes/app/offers/scripts/rendering/variations/ButtonModal.js +114 -0
  194. package/routes/app/offers/scripts/rendering/variations/FormBanner.js +214 -0
  195. package/routes/app/offers/scripts/rendering/variations/FormModal.js +325 -0
  196. package/routes/app/offers/scripts/rendering/variations/LinkBanner.js +105 -0
  197. package/routes/app/offers/scripts/rendering/variations/components/Body.js +29 -0
  198. package/routes/app/offers/scripts/rendering/variations/components/Button.js +128 -0
  199. package/routes/app/offers/scripts/rendering/variations/components/DismissButton.js +39 -0
  200. package/routes/app/offers/scripts/rendering/variations/components/ForegroundImageBanner.js +110 -0
  201. package/routes/app/offers/scripts/rendering/variations/components/ForegroundImageModal.js +128 -0
  202. package/routes/app/offers/scripts/rendering/variations/components/Headline.js +94 -0
  203. package/routes/app/offers/scripts/rendering/variations/components/MultiFieldForm.js +302 -0
  204. package/routes/app/offers/scripts/rendering/variations/components/Tooltip.js +74 -0
  205. package/routes/app/offers/scripts/rendering/variations/icons.js +15 -0
  206. package/routes/app/offers/scripts/utils.js +115 -0
  207. package/routes/app/offers/utils/HTMLUtils.js +10 -0
  208. package/routes/app/offers/utils/createTypeGuard.js +32 -0
  209. package/routes/app/offers/utils/promise-utils.js +22 -0
  210. package/routes/app/websiteBuilder/stores/storeHelpers.js +18 -0
  211. package/sounds/message-initial.mp3 +0 -0
  212. package/sounds/message-received.mp3 +0 -0
  213. package/sounds/message-sent.mp3 +0 -0
  214. package/src/arrays.js +15 -0
  215. package/src/audio.js +106 -0
  216. package/src/bounded-set.js +16 -0
  217. package/src/bounding_box_observer.js +129 -0
  218. package/src/decorators.js +29 -0
  219. package/src/dom.js +128 -0
  220. package/src/dom_roots.js +26 -0
  221. package/src/embedded_forms/EmbeddedForm.js +638 -0
  222. package/src/embedded_forms/QualifiedEmbeddedForm.js +51 -0
  223. package/src/embedded_forms/QualifiedFormField.js +137 -0
  224. package/src/embedded_forms/utils.js +17 -0
  225. package/src/graphql-types.js +1686 -0
  226. package/src/iframes.js +86 -0
  227. package/src/localstorage.js +43 -0
  228. package/src/mirror/Shipper.js +133 -0
  229. package/src/mirror/constants.generated.js +13 -0
  230. package/src/mirror/constants.js +238 -0
  231. package/src/mirror/shipper/ChangeQueue.js +155 -0
  232. package/src/mirror/shipper/DOMSerializer.js +392 -0
  233. package/src/mirror/shipper/observers.js +441 -0
  234. package/src/mirror/shipper/utils.js +98 -0
  235. package/src/mixins/disposable.js +125 -0
  236. package/src/mixins/injectable.js +37 -0
  237. package/src/personalizations/personalization-manager.js +110 -0
  238. package/src/personalizations/strategies/node-freezing-strategy.js +174 -0
  239. package/src/personalizations/utils.js +187 -0
  240. package/src/promises.js +107 -0
  241. package/src/proxy.js +144 -0
  242. package/src/qualified_root.js +35 -0
  243. package/src/query_params.js +55 -0
  244. package/src/shadow-dom-helper.js +63 -0
  245. package/src/singleton_host.js +39 -0
  246. package/src/smart_website/trigger.js +49 -0
  247. package/src/smart_website/utils.js +149 -0
  248. package/src/string.js +53 -0
  249. package/src/timezone.js +57 -0
  250. package/src/timing.js +49 -0
  251. package/src/type-utils.js +76 -0
  252. package/src/url-utils.js +102 -0
  253. package/src/url.js +50 -0
  254. package/src/utils.js +72 -0
  255. package/src/validation.js.js +29 -0
  256. package/src/validation_ts.js +6 -0
  257. package/vendor/actioncable/adapters.js +6 -0
  258. package/vendor/actioncable/connection.js +204 -0
  259. package/vendor/actioncable/connection_monitor.js +129 -0
  260. package/vendor/actioncable/consumer.js +91 -0
  261. package/vendor/actioncable/index.js +34 -0
  262. package/vendor/actioncable/internal.js +22 -0
  263. package/vendor/actioncable/logger.js +28 -0
  264. package/vendor/actioncable/subscription.js +93 -0
  265. package/vendor/actioncable/subscriptions.js +89 -0
  266. package/vendor/open-telemetry-idgenerator.js +43 -0
  267. package/widget/analytics/facebook_tracker.js +8 -0
  268. package/widget/analytics/google_analytics_tracker.js +83 -0
  269. package/widget/analytics/google_tag_manager_tracker.js +22 -0
  270. package/widget/analytics.js +58 -0
  271. package/widget/api_handler/api_handler.js +730 -0
  272. package/widget/api_handler/base_api_handler.js +249 -0
  273. package/widget/booker_intent_tracker.js +391 -0
  274. package/widget/booker_outcome_tracker.js +329 -0
  275. package/widget/capture_widget_exceptions.js +150 -0
  276. package/widget/channel.js +282 -0
  277. package/widget/composite_experience_adapter.js +101 -0
  278. package/widget/constants.generated.js +350 -0
  279. package/widget/constants.js +21 -0
  280. package/widget/container.js +193 -0
  281. package/widget/content_activity_emitter.js +36 -0
  282. package/widget/data360_visitor.js +67 -0
  283. package/widget/date_provider.js +11 -0
  284. package/widget/debug_mode_state.js +175 -0
  285. package/widget/dummy_module.js +9 -0
  286. package/widget/eloqua_visitor.js +17 -0
  287. package/widget/form_cta_booker_intent.js +246 -0
  288. package/widget/hubspot_visitor.js +39 -0
  289. package/widget/inline_meeting_booker_page.js +90 -0
  290. package/widget/local_state/abstract_local_state.js +38 -0
  291. package/widget/local_state/debug_state/abstract_debug_flow.js +29 -0
  292. package/widget/local_state/debug_state/custom_form_flow.js +14 -0
  293. package/widget/local_state/debug_state/hubspot_form_flow.js +19 -0
  294. package/widget/local_state/debug_state/hubspot_v4_form_flow.js +19 -0
  295. package/widget/local_state/debug_state/marketo_form_flow.js +20 -0
  296. package/widget/local_state/debug_state/pardot_form_flow.js +18 -0
  297. package/widget/local_state/debug_state.js +362 -0
  298. package/widget/local_state/trace_state.js +20 -0
  299. package/widget/location_provider.js +9 -0
  300. package/widget/marketo_visitor.js +39 -0
  301. package/widget/meetings/tracing/buttons_forms_triggering_tracer.js +124 -0
  302. package/widget/meetings/tracing/spans/button_spans.js +18 -0
  303. package/widget/meetings/tracing/spans/form_spans.js +11 -0
  304. package/widget/multimodal_v2/assets_preloader.js +97 -0
  305. package/widget/multimodal_v2/components/AppLayout.js +93 -0
  306. package/widget/multimodal_v2/components/CursorOverlay.js +93 -0
  307. package/widget/multimodal_v2/components/PointerRectOverlay.js +74 -0
  308. package/widget/multimodal_v2/components/app/Artifact.js +109 -0
  309. package/widget/multimodal_v2/components/app/Background.js +27 -0
  310. package/widget/multimodal_v2/components/app/CalendarLoadingContent.js +255 -0
  311. package/widget/multimodal_v2/components/app/Chat.js +39 -0
  312. package/widget/multimodal_v2/components/app/CookieConsentModal.js +149 -0
  313. package/widget/multimodal_v2/components/app/Foreground.js +48 -0
  314. package/widget/multimodal_v2/components/app/HiddenInput.js +41 -0
  315. package/widget/multimodal_v2/components/app/Input.js +72 -0
  316. package/widget/multimodal_v2/components/app/LightboxExperience.js +769 -0
  317. package/widget/multimodal_v2/components/app/LoadingOverlay.js +97 -0
  318. package/widget/multimodal_v2/components/app/Main.js +985 -0
  319. package/widget/multimodal_v2/components/app/MessengerButton.js +160 -0
  320. package/widget/multimodal_v2/components/app/Multimodal.js +17 -0
  321. package/widget/multimodal_v2/components/app/OverlayControls.js +79 -0
  322. package/widget/multimodal_v2/components/app/Preview.js +32 -0
  323. package/widget/multimodal_v2/components/app/PrivacyDisclosure.js +57 -0
  324. package/widget/multimodal_v2/components/app/RotateDeviceOverlay.js +70 -0
  325. package/widget/multimodal_v2/components/app/Toolbar.js +156 -0
  326. package/widget/multimodal_v2/components/chat/ChatComposer.js +129 -0
  327. package/widget/multimodal_v2/components/chat/ChatInputForm.js +398 -0
  328. package/widget/multimodal_v2/components/chat/ColdStartQuestions.js +354 -0
  329. package/widget/multimodal_v2/components/chat/ComposerErrorBanner.js +62 -0
  330. package/widget/multimodal_v2/components/chat/PostCallSurvey.js +359 -0
  331. package/widget/multimodal_v2/components/chat/preview/FieldRequestRenderer.js +41 -0
  332. package/widget/multimodal_v2/components/chat/preview/PreviewMessageRenderer.js +60 -0
  333. package/widget/multimodal_v2/components/chat/preview/SharedOfferRenderer.js +143 -0
  334. package/widget/multimodal_v2/components/chat/preview/TextRenderer.js +27 -0
  335. package/widget/multimodal_v2/components/chat/preview/TimelinePreview.js +254 -0
  336. package/widget/multimodal_v2/components/chat/timeline/CalendarEventOfferRenderer.js +103 -0
  337. package/widget/multimodal_v2/components/chat/timeline/CalendarEventPickRenderer.js +148 -0
  338. package/widget/multimodal_v2/components/chat/timeline/FieldEntryRenderer.js +84 -0
  339. package/widget/multimodal_v2/components/chat/timeline/FieldRequestRenderer.js +56 -0
  340. package/widget/multimodal_v2/components/chat/timeline/InlinePrivacyDisclosure.js +66 -0
  341. package/widget/multimodal_v2/components/chat/timeline/LinkPreviewCard.js +70 -0
  342. package/widget/multimodal_v2/components/chat/timeline/MessageEntry.js +88 -0
  343. package/widget/multimodal_v2/components/chat/timeline/PresentContentRenderer.js +30 -0
  344. package/widget/multimodal_v2/components/chat/timeline/PresentDeckRenderer.js +279 -0
  345. package/widget/multimodal_v2/components/chat/timeline/PresentVideoRenderer.js +131 -0
  346. package/widget/multimodal_v2/components/chat/timeline/ShareContentRenderer.js +59 -0
  347. package/widget/multimodal_v2/components/chat/timeline/SharedOfferRenderer.js +131 -0
  348. package/widget/multimodal_v2/components/chat/timeline/SystemRenderer.js +82 -0
  349. package/widget/multimodal_v2/components/chat/timeline/TextRenderer.js +66 -0
  350. package/widget/multimodal_v2/components/chat/timeline/Timeline.js +158 -0
  351. package/widget/multimodal_v2/components/debug/DebugMultimodalPanel.js +327 -0
  352. package/widget/multimodal_v2/components/decks/index.js +160 -0
  353. package/widget/multimodal_v2/components/field_request/BooleanField.js +77 -0
  354. package/widget/multimodal_v2/components/field_request/FieldComponents.js +69 -0
  355. package/widget/multimodal_v2/components/field_request/Form.js +87 -0
  356. package/widget/multimodal_v2/components/field_request/MultiPicklistField.js +240 -0
  357. package/widget/multimodal_v2/components/field_request/PicklistField.js +166 -0
  358. package/widget/multimodal_v2/components/field_request/SingleLineInputField.js +69 -0
  359. package/widget/multimodal_v2/components/field_request/TextField.js +37 -0
  360. package/widget/multimodal_v2/components/field_request/index.js +170 -0
  361. package/widget/multimodal_v2/components/helpers/AutoScroll.js +37 -0
  362. package/widget/multimodal_v2/components/helpers/ErrorBoundary.js +53 -0
  363. package/widget/multimodal_v2/components/helpers/FocusTrapDialog.js +26 -0
  364. package/widget/multimodal_v2/components/helpers/ImpressionTracker.js +94 -0
  365. package/widget/multimodal_v2/components/helpers/ListRenderer.js +37 -0
  366. package/widget/multimodal_v2/components/helpers/Localization.js +76 -0
  367. package/widget/multimodal_v2/components/helpers/Persisted.js +166 -0
  368. package/widget/multimodal_v2/components/helpers/RichText.js +358 -0
  369. package/widget/multimodal_v2/components/helpers/ScreenReaderHeading.js +17 -0
  370. package/widget/multimodal_v2/components/helpers/Thumbnail.js +190 -0
  371. package/widget/multimodal_v2/components/helpers/VisuallyHidden.js +41 -0
  372. package/widget/multimodal_v2/components/helpers/content_click_payloads.js +58 -0
  373. package/widget/multimodal_v2/components/helpers/useDraggable.js +103 -0
  374. package/widget/multimodal_v2/components/helpers/useTextOverflow.js +44 -0
  375. package/widget/multimodal_v2/components/lightbox_gather/index.js +741 -0
  376. package/widget/multimodal_v2/components/meetings/ArtifactEntryPoint.js +252 -0
  377. package/widget/multimodal_v2/components/meetings/MeetingAdditionalAttendees.js +325 -0
  378. package/widget/multimodal_v2/components/meetings/MeetingBookerEntry.js +100 -0
  379. package/widget/multimodal_v2/components/meetings/MeetingDetailsCard.js +99 -0
  380. package/widget/multimodal_v2/components/meetings/MeetingErrorBanner.js +62 -0
  381. package/widget/multimodal_v2/components/meetings/MeetingOfferEmailStep.js +239 -0
  382. package/widget/multimodal_v2/components/meetings/MeetingOfferFooter.js +104 -0
  383. package/widget/multimodal_v2/components/meetings/MeetingOfferSelectionStep.js +60 -0
  384. package/widget/multimodal_v2/components/meetings/MeetingRepHeader.js +222 -0
  385. package/widget/multimodal_v2/components/meetings/MeetingStepShell.js +92 -0
  386. package/widget/multimodal_v2/components/meetings/MeetingSummaryRail.js +515 -0
  387. package/widget/multimodal_v2/components/meetings/MeetingTimeSelector.js +603 -0
  388. package/widget/multimodal_v2/components/meetings/MonthDatePicker.js +422 -0
  389. package/widget/multimodal_v2/components/meetings/NavigationButtons.js +76 -0
  390. package/widget/multimodal_v2/components/meetings/TimeSlotHeader.js +357 -0
  391. package/widget/multimodal_v2/components/meetings/WeekViewHeader.js +20 -0
  392. package/widget/multimodal_v2/components/meetings/constants.js +7 -0
  393. package/widget/multimodal_v2/components/meetings/index.js +47 -0
  394. package/widget/multimodal_v2/components/meetings/utils.js +328 -0
  395. package/widget/multimodal_v2/components/multimodal/Audio.js +28 -0
  396. package/widget/multimodal_v2/components/multimodal/Controls.js +188 -0
  397. package/widget/multimodal_v2/components/multimodal/LiveVideo.js +63 -0
  398. package/widget/multimodal_v2/components/multimodal/MultiModalComponent.js +424 -0
  399. package/widget/multimodal_v2/components/multimodal/MultimodalAvatar.js +36 -0
  400. package/widget/multimodal_v2/components/multimodal/OrbAvatar.js +326 -0
  401. package/widget/multimodal_v2/components/multimodal/Status.js +220 -0
  402. package/widget/multimodal_v2/components/multimodal/VideoAvatar.js +24 -0
  403. package/widget/multimodal_v2/components/multimodal/VideoPreview.js +114 -0
  404. package/widget/multimodal_v2/components/multimodal/useAudioLevelMonitoring.js +96 -0
  405. package/widget/multimodal_v2/components/multimodal/useMultimodal.js +434 -0
  406. package/widget/multimodal_v2/components/presentations/index.js +372 -0
  407. package/widget/multimodal_v2/components/shared/Avatar.js +92 -0
  408. package/widget/multimodal_v2/components/shared/AvatarGroup.js +135 -0
  409. package/widget/multimodal_v2/components/shared/Button.js +245 -0
  410. package/widget/multimodal_v2/components/shared/ButtonGroup.js +133 -0
  411. package/widget/multimodal_v2/components/shared/ComposerForm.js +98 -0
  412. package/widget/multimodal_v2/components/shared/SpeakingIndicator.js +239 -0
  413. package/widget/multimodal_v2/components/shared/ThinkingAnimation.js +165 -0
  414. package/widget/multimodal_v2/components/shared/Tooltip.js +266 -0
  415. package/widget/multimodal_v2/components/shared/controls/Dropdown.js +79 -0
  416. package/widget/multimodal_v2/components/shared/controls/PillToggle.js +142 -0
  417. package/widget/multimodal_v2/components/shared/controls/TextArea.js +114 -0
  418. package/widget/multimodal_v2/components/shared/toolCallLabels.js +12 -0
  419. package/widget/multimodal_v2/components/slides/SlidesThumbnail.js +47 -0
  420. package/widget/multimodal_v2/components/slides/index.js +61 -0
  421. package/widget/multimodal_v2/constants.js +88 -0
  422. package/widget/multimodal_v2/host.split-css.js +2 -0
  423. package/widget/multimodal_v2/host.string.js +96 -0
  424. package/widget/multimodal_v2/images/icons.js +582 -0
  425. package/widget/multimodal_v2/images/posters/piper_low_res.jpg +0 -0
  426. package/widget/multimodal_v2/index.js +23 -0
  427. package/widget/multimodal_v2/index.panda.js +28 -0
  428. package/widget/multimodal_v2/index.split-css.panda.js +2 -0
  429. package/widget/multimodal_v2/inline_meeting_booker.js +182 -0
  430. package/widget/multimodal_v2/locales/cs.js +196 -0
  431. package/widget/multimodal_v2/locales/da.js +196 -0
  432. package/widget/multimodal_v2/locales/de.js +196 -0
  433. package/widget/multimodal_v2/locales/en.js +196 -0
  434. package/widget/multimodal_v2/locales/en_AU.js +197 -0
  435. package/widget/multimodal_v2/locales/en_GB.js +197 -0
  436. package/widget/multimodal_v2/locales/es.js +197 -0
  437. package/widget/multimodal_v2/locales/es_LA.js +196 -0
  438. package/widget/multimodal_v2/locales/fi.js +196 -0
  439. package/widget/multimodal_v2/locales/fr.js +197 -0
  440. package/widget/multimodal_v2/locales/fr_CA.js +196 -0
  441. package/widget/multimodal_v2/locales/id.js +196 -0
  442. package/widget/multimodal_v2/locales/index.js +48 -0
  443. package/widget/multimodal_v2/locales/it.js +196 -0
  444. package/widget/multimodal_v2/locales/ja.js +196 -0
  445. package/widget/multimodal_v2/locales/ko.js +196 -0
  446. package/widget/multimodal_v2/locales/nb.js +196 -0
  447. package/widget/multimodal_v2/locales/nl.js +196 -0
  448. package/widget/multimodal_v2/locales/pl.js +196 -0
  449. package/widget/multimodal_v2/locales/pt_BR.js +196 -0
  450. package/widget/multimodal_v2/locales/ru.js +196 -0
  451. package/widget/multimodal_v2/locales/sv.js +196 -0
  452. package/widget/multimodal_v2/locales/th.js +196 -0
  453. package/widget/multimodal_v2/locales/tr.js +196 -0
  454. package/widget/multimodal_v2/locales/vi.js +196 -0
  455. package/widget/multimodal_v2/locales/zh_CN.js +196 -0
  456. package/widget/multimodal_v2/locales/zh_TW.js +196 -0
  457. package/widget/multimodal_v2/multimodal.js +633 -0
  458. package/widget/multimodal_v2/multimodal_channel.js +195 -0
  459. package/widget/multimodal_v2/signals/active_conversation_signal.js +33 -0
  460. package/widget/multimodal_v2/signals/allowed_conversation_mode_signal.js +38 -0
  461. package/widget/multimodal_v2/signals/artifact_signal.js +22 -0
  462. package/widget/multimodal_v2/signals/layout_signal.js +98 -0
  463. package/widget/multimodal_v2/signals/messages_signal.js +207 -0
  464. package/widget/multimodal_v2/signals/ui_state_signal.js +128 -0
  465. package/widget/multimodal_v2/stable_bundle_src.js +44 -0
  466. package/widget/multimodal_v2/stores/ai_conversation_store.js +221 -0
  467. package/widget/multimodal_v2/stores/artifact_store.js +205 -0
  468. package/widget/multimodal_v2/stores/base_store.js +16 -0
  469. package/widget/multimodal_v2/stores/call_store.js +770 -0
  470. package/widget/multimodal_v2/stores/call_ui_adapter.js +225 -0
  471. package/widget/multimodal_v2/stores/debug_multimodal_scenario_store.js +471 -0
  472. package/widget/multimodal_v2/stores/decks_store.js +285 -0
  473. package/widget/multimodal_v2/stores/device_store.js +63 -0
  474. package/widget/multimodal_v2/stores/docking_store.js +62 -0
  475. package/widget/multimodal_v2/stores/field_request_store.js +326 -0
  476. package/widget/multimodal_v2/stores/meeting_store.js +477 -0
  477. package/widget/multimodal_v2/stores/participant_store.js +73 -0
  478. package/widget/multimodal_v2/stores/post_call_survey_store.js +160 -0
  479. package/widget/multimodal_v2/stores/pounce_tracking_store.js +163 -0
  480. package/widget/multimodal_v2/stores/pounce_tracking_store_v2.js +511 -0
  481. package/widget/multimodal_v2/stores/presentations_store.js +111 -0
  482. package/widget/multimodal_v2/stores/root_store.js +1919 -0
  483. package/widget/multimodal_v2/stores/screen_share_store.js +217 -0
  484. package/widget/multimodal_v2/stores/slides_store.js +21 -0
  485. package/widget/multimodal_v2/stores/translation_store.js +185 -0
  486. package/widget/multimodal_v2/stores/ui_store.js +496 -0
  487. package/widget/multimodal_v2/stores/waiting_store.js +159 -0
  488. package/widget/multimodal_v2/stores/website_navigation_store.js +767 -0
  489. package/widget/multimodal_v2/styled-system/css/conditions.js +34 -0
  490. package/widget/multimodal_v2/styled-system/css/css.js +48 -0
  491. package/widget/multimodal_v2/styled-system/css/cva.js +96 -0
  492. package/widget/multimodal_v2/styled-system/css/cx.js +13 -0
  493. package/widget/multimodal_v2/styled-system/css/index.js +15 -0
  494. package/widget/multimodal_v2/styled-system/css/sva.js +69 -0
  495. package/widget/multimodal_v2/styled-system/helpers.js +384 -0
  496. package/widget/multimodal_v2/styled-system/jsx/create-style-context.js +96 -0
  497. package/widget/multimodal_v2/styled-system/jsx/factory-helper.js +19 -0
  498. package/widget/multimodal_v2/styled-system/jsx/factory.js +111 -0
  499. package/widget/multimodal_v2/styled-system/jsx/index.js +12 -0
  500. package/widget/multimodal_v2/styled-system/jsx/is-valid-prop.js +22 -0
  501. package/widget/multimodal_v2/types.js +105 -0
  502. package/widget/multimodal_v2/utils/auto_scroller.js +157 -0
  503. package/widget/multimodal_v2/utils/flip_animation.js +124 -0
  504. package/widget/multimodal_v2/utils/focus_gate.js +237 -0
  505. package/widget/multimodal_v2/utils/locale.js +16 -0
  506. package/widget/multimodal_v2/utils/media_queries.js +30 -0
  507. package/widget/multimodal_v2/utils/multimodal_cache.js +19 -0
  508. package/widget/multimodal_v2/utils/mutation_effect.js +14 -0
  509. package/widget/multimodal_v2/utils/navigation_interceptor.js +205 -0
  510. package/widget/multimodal_v2/utils/navigation_strategies/dom_swap.js +393 -0
  511. package/widget/multimodal_v2/utils/navigation_strategies/index.js +12 -0
  512. package/widget/multimodal_v2/utils/navigation_strategies/lwr.js +61 -0
  513. package/widget/multimodal_v2/utils/navigation_strategies/navigation_utils.js +46 -0
  514. package/widget/multimodal_v2/utils/navigation_strategies/next_js.js +24 -0
  515. package/widget/multimodal_v2/utils/navigation_strategies/wouter_v3.js +15 -0
  516. package/widget/multimodal_v2/utils/objects_map.js +38 -0
  517. package/widget/multimodal_v2/utils/perceived_voice_turn_tracker.js +345 -0
  518. package/widget/multimodal_v2/utils/sanitize_html.js +132 -0
  519. package/widget/multimodal_v2/utils/signals.js +97 -0
  520. package/widget/multimodal_v2/utils/slide_zoom.js +114 -0
  521. package/widget/multimodal_v2/utils/theme_styles.js +137 -0
  522. package/widget/multimodal_v2/utils/url_observer.js +52 -0
  523. package/widget/multimodal_v2/utils/voice_onset_detector.js +127 -0
  524. package/widget/page_mirror.js +89 -0
  525. package/widget/page_view_activity_emitter.js +71 -0
  526. package/widget/pardot_visitor.js +137 -0
  527. package/widget/personalization_observer.js +96 -0
  528. package/widget/personalizations_config.js +160 -0
  529. package/widget/qualified_form/constants.js +23 -0
  530. package/widget/qualified_form/phone_utils.js +38 -0
  531. package/widget/qualified_form/qualified_form_action.js +91 -0
  532. package/widget/qualified_form/qualified_form_action_orchestrator.js +21 -0
  533. package/widget/qualified_form/qualified_form_api.js +471 -0
  534. package/widget/scroll_disabler.js +109 -0
  535. package/widget/server-logger.js +156 -0
  536. package/widget/smart_website_config.js +112 -0
  537. package/widget/telemetry/context.js +75 -0
  538. package/widget/telemetry/index.js +16 -0
  539. package/widget/telemetry/messenger_uptime.js +80 -0
  540. package/widget/telemetry/metrics.js +120 -0
  541. package/widget/telemetry/span.js +82 -0
  542. package/widget/telemetry/telemetry.js +180 -0
  543. package/widget/telemetry/tracer.js +41 -0
  544. package/widget/telemetry/tracing_store.js +310 -0
  545. package/widget/tracker.js +916 -0
  546. package/widget/utils/native_globals.js +129 -0
  547. package/widget/v1_adapter.js +50 -0
  548. package/widget/v2_adapter.js +368 -0
  549. package/widget/visitor/base_visitor_state.js +11 -0
  550. package/widget/visitor/cookie_visitor_state.js +128 -0
  551. package/widget/visitor/in_memory_visitor_state.js +29 -0
  552. package/widget/visitor/visitor_state.js +384 -0
  553. package/widget/visitor.js +356 -0
  554. package/widget/widget/linked_widget_v2.js +227 -0
  555. package/widget/widget/page_mirror_factory.js +22 -0
  556. package/widget/widget/sentry.js +130 -0
  557. package/widget/widget/widget.js +1698 -0
  558. package/widget/widget.split-css.js +2 -0
  559. package/widget/widget_bootstrap.js +97 -0
  560. package/widget/widget_object.js +73 -0
@@ -0,0 +1,769 @@
1
+ import { __webpack_require__ } from "../../../../js/runtime.js";
2
+ import { compat_module_P, compat_module_z, hooks_module_y, signals_core_module_d, useComputed, hooks_module_d, jsxRuntime_module_u, signals_core_module_E, hooks_module_A } from "../../../../js/multimodal_v2.js";
3
+ import { CrossIcon, ClockIcon, CheckCircleIcon, GlobeIcon } from "../../images/icons.js";
4
+ import "../../styled-system/css/index.js";
5
+ import { MeetingRepHeader } from "../meetings/MeetingRepHeader.js";
6
+ import { formatTimeShort, formatDate } from "../meetings/utils.js";
7
+ import { CalendarLoadingContent, loadingContentStyle } from "./CalendarLoadingContent.js";
8
+ import "../../../utils/native_globals.js";
9
+ import { MEETING_LOADING_ROTATING_WIDGET_KEYS } from "../../../../components/shared/meetingLoadingProgressSpec.js";
10
+ import { cx } from "../../styled-system/css/cx.js";
11
+ import { css as css_css } from "../../styled-system/css/css.js";
12
+
13
+ /* provided dependency */ var LightboxExperience_clearTimeout = __webpack_require__(68034).Kj;
14
+ /* provided dependency */ var LightboxExperience_setTimeout = __webpack_require__(68034).pS;
15
+
16
+ /** @jsxImportSource preact */
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+ const LightboxGather = compat_module_z(()=>import("../lightbox_gather/index.js"));
26
+ const LOCAL_TIMEZONE = Intl.DateTimeFormat().resolvedOptions().timeZone.replace(/_/g, " ");
27
+ function maskEmail(visitorEmail) {
28
+ const atIndex = visitorEmail.indexOf("@");
29
+ if (atIndex <= 0 || atIndex === visitorEmail.length - 1) {
30
+ return visitorEmail;
31
+ }
32
+ const email = visitorEmail.slice(0, atIndex);
33
+ const domain = visitorEmail.slice(atIndex + 1);
34
+ let maskedEmail = email[0] + "*".repeat(email.length - 1);
35
+ if (maskedEmail.length > 2) {
36
+ maskedEmail = maskedEmail.slice(0, email.length - 1) + email[email.length - 1];
37
+ }
38
+ return maskedEmail + "@" + domain;
39
+ }
40
+ const MeetingBooker = compat_module_z(()=>import("../meetings/index.js"));
41
+ /**
42
+ * Drives one loading -> reveal transition: as soon as the data is ready, keeps
43
+ * the loading UI mounted (via `holding`) for `COMPLETION_HOLD_MS` — the fill's
44
+ * CSS transition plus a short dwell so the completed bar is visibly held —
45
+ * while `snapping` drives the CSS transition to 100%, then `holding` clears
46
+ * and the real content reveals. Without this, a fast response could unmount
47
+ * the loading UI while the bar was still mid-animation (or the instant it
48
+ * reached 100%) instead of ever visibly showing "done". How far the bar has
49
+ * visibly climbed by the time this fires is governed by the progress curve
50
+ * itself ({@link interpolateProgress}) — not by anything here. Mirrors
51
+ * StandaloneMeetingBooker's useLoadingCompletion: no artificial minimum wait
52
+ * before a completion signal is honored.
53
+ */ function useLoadingHold(isLoading, isReady) {
54
+ const [holding, setHolding] = hooks_module_d(false);
55
+ const [snapping, setSnapping] = hooks_module_d(false);
56
+ const wasLoadingRef = hooks_module_A(false);
57
+ const readyFiredRef = hooks_module_A(false);
58
+ const revealTimerRef = hooks_module_A(undefined);
59
+ /* eslint-disable react-hooks/exhaustive-deps */ // effect() from @preact/signals handles its own reactivity; empty deps array is intentional.
60
+ hooks_module_y(()=>{
61
+ const dispose = signals_core_module_E(()=>{
62
+ // Re-arm on each new loading phase so a later transition (e.g. a
63
+ // follow-up gather step) also holds.
64
+ if (isLoading()) {
65
+ wasLoadingRef.current = true;
66
+ readyFiredRef.current = false;
67
+ }
68
+ if (isReady() && wasLoadingRef.current && !readyFiredRef.current) {
69
+ readyFiredRef.current = true;
70
+ wasLoadingRef.current = false;
71
+ setHolding(true);
72
+ setSnapping(true);
73
+ // Guards against a stale pending timer from a previous hold cycle
74
+ // (e.g. a follow-up gather/offer transition) firing mid-way through
75
+ // this new cycle and cutting its hold short.
76
+ LightboxExperience_clearTimeout(revealTimerRef.current);
77
+ revealTimerRef.current = LightboxExperience_setTimeout(()=>{
78
+ setSnapping(false);
79
+ setHolding(false);
80
+ }, (/* inlined export .COMPLETION_HOLD_MS */400));
81
+ }
82
+ });
83
+ return ()=>{
84
+ dispose();
85
+ LightboxExperience_clearTimeout(revealTimerRef.current);
86
+ };
87
+ }, []);
88
+ /* eslint-enable react-hooks/exhaustive-deps */ return {
89
+ holding,
90
+ snapping
91
+ };
92
+ }
93
+ /**
94
+ * LightboxExperience renders a fullscreen overlay that covers the entire viewport,
95
+ * including the messenger. Used for two element-conversation flows:
96
+ *
97
+ * 1. Gather phase: smart button → initElementConversation → shows LightboxGather form
98
+ * 2. Meeting phase: smart form → initQualifiedFormElementConversation → shows MeetingBooker
99
+ *
100
+ * This is separate from the normal messenger meeting booker, which renders for
101
+ * calendar_event_offer messages either inline in the chat timeline or in the
102
+ * artifact overlay (see MeetingBookerEntry / ArtifactEntryPoint).
103
+ *
104
+ * The same component is reused inline via `variant="container"` to render a manual
105
+ * experience's meeting booker into a page container div instead of the overlay.
106
+ */ const LightboxExperience = (param)=>{
107
+ let { rootStore, variant = "lightbox" } = param;
108
+ var _ref, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6;
109
+ var _rootStore_meetingStore_value, _elementConversationOffer_value, _elementConversationTextMessage_value, _elementConversationTextMessage_value1, _elementConversationTextMessage_value2, _rootStore_meetingStore_value1, _rootStore_meetingStore_value2, _rootStore_meetingStore_value3, _elementConversationTextMessage_value3, _elementConversationTextMessage_value4;
110
+ const isContainer = variant === "container";
111
+ // When the booker is being routed into a container, the default full-screen
112
+ // instance (variant="lightbox", rendered in AppLayout) suppresses itself so
113
+ // the same element-conversation offer only surfaces inside the container.
114
+ const suppressedByContainer = useComputed(()=>!isContainer && rootStore.inlineMeetingBookerActive.value);
115
+ const elementConversation = useComputed(()=>rootStore.elementConversation.value);
116
+ const elementConversationOffer = useComputed(()=>rootStore.elementConversationOffer.value);
117
+ const elementConversationLoading = useComputed(()=>rootStore.elementConversationLoading.value);
118
+ const elementConversationTextMessage = useComputed(()=>rootStore.elementConversationTextMessage.value);
119
+ // The booker is rendered from a lazily-loaded store + code-split component
120
+ // chunk — two separate lazy imports. Until the store has loaded and produced
121
+ // an active offer, <MeetingBooker> renders nothing, so the offer arriving is
122
+ // not enough to actually show the calendar.
123
+ const meetingStoreReady = useComputed(()=>{
124
+ var _rootStore_meetingStore_value;
125
+ return ((_rootStore_meetingStore_value = rootStore.meetingStore.value) == null ? void 0 : _rootStore_meetingStore_value.activeOfferMessage.value) != null;
126
+ });
127
+ // Whether the <MeetingBooker> component chunk itself (rendered inside a
128
+ // Suspense boundary below) has finished loading. Without tracking this
129
+ // separately, the bar could snap to 100% on meetingStoreReady alone, reveal
130
+ // isMeetingPhase, and immediately fall into the Suspense fallback — a second,
131
+ // independent loading spinner — while the component chunk still loads.
132
+ //
133
+ // This is a signal, not useState: useLoadingHold's effect() is set up once
134
+ // (empty deps) and keeps the isReady/isLoading closures from that first call
135
+ // forever. A plain boolean captured by value in those closures would freeze
136
+ // at whatever it was on mount; reading `.value` off a stable signal instead
137
+ // always resolves to the current value, regardless of closure age.
138
+ const meetingChunkReadySignal = hooks_module_A(signals_core_module_d(false)).current;
139
+ const bookerReady = useComputed(()=>meetingStoreReady.value && meetingChunkReadySignal.value);
140
+ // Holds the loading UI visible after the offer arrives, and doesn't let the
141
+ // bar snap to 100% until the booker is fully ready to render — otherwise the
142
+ // bar would show "done" while the visitor is still staring at a spinner
143
+ // waiting on the code-split import.
144
+ const { holding: completing, snapping: snappingToOffer } = useLoadingHold(()=>elementConversationLoading.value, ()=>elementConversationOffer.value !== null && bookerReady.value);
145
+ // Same hold, for the earlier loading -> gather transition (initElementConversation
146
+ // arriving with a lightbox_gather message). Without this, a fast response snapped
147
+ // the spinner away mid-animation instead of letting the bar reach 100% first.
148
+ const { holding: gatherCompleting, snapping: snappingToGather } = useLoadingHold(()=>elementConversationLoading.value, ()=>elementConversation.value !== null);
149
+ // Reading t() during render subscribes to the active-locale signal so the
150
+ // rotating messages re-localize with the conversation/browser locale.
151
+ const loadingMessages = MEETING_LOADING_ROTATING_WIDGET_KEYS.map((key)=>rootStore.translationStore.t(key));
152
+ // Not "ready" while gatherCompleting so the progress bar can animate to 100% first.
153
+ const isGatherPhase = elementConversation.value !== null && !gatherCompleting;
154
+ const hasOffer = !isGatherPhase && elementConversationOffer.value !== null;
155
+ // Not "ready" while completing so the progress bar can animate to 100% first.
156
+ const isMeetingPhase = hasOffer && bookerReady.value && !completing;
157
+ // Hold the loading spinner while an offer exists but the booker store is still
158
+ // resolving, and during the brief completion window so the bar can fill to 100%
159
+ // before the booker appears. Dismissing it the instant the offer arrived left the
160
+ // visitor on a blank screen for the duration of the lazy load, prompting them to
161
+ // click away.
162
+ const isLoadingPhase = !isGatherPhase && !isMeetingPhase && (elementConversationLoading.value || hasOffer || completing && elementConversationOffer.value !== null || gatherCompleting && elementConversation.value !== null);
163
+ const isTextPhase = !isGatherPhase && !isLoadingPhase && !isMeetingPhase && elementConversationTextMessage.value !== null;
164
+ // Warm the booker store and code-split chunk while the spinner is up so the
165
+ // download overlaps the server preparing the offer instead of starting only
166
+ // once it arrives. Both imports are idempotent; the dynamic import resolves
167
+ // instantly on repeat calls once the chunk is cached.
168
+ hooks_module_y(()=>{
169
+ if (isLoadingPhase) {
170
+ rootStore.meetingStore.load();
171
+ void import("../meetings/index.js").then(()=>{
172
+ meetingChunkReadySignal.value = true;
173
+ });
174
+ }
175
+ // meetingChunkReadySignal is a stable ref (useRef), never changes identity.
176
+ // eslint-disable-next-line react-hooks/exhaustive-deps
177
+ }, [
178
+ isLoadingPhase,
179
+ rootStore
180
+ ]);
181
+ if (suppressedByContainer.value) return null;
182
+ if (!isGatherPhase && !isLoadingPhase && !isMeetingPhase && !isTextPhase) return null;
183
+ const handleClose = ()=>{
184
+ if (hasOffer) {
185
+ // Meeting phase: clear both the offer and the backend text confirmation
186
+ // message. The text message (calendar_event_confirmation) is suppressed here
187
+ // because we already rendered our own confirmation UI (LightboxBookingConfirmed).
188
+ rootStore.clearInputMessage();
189
+ }
190
+ // Reset all lightbox element-conversation state so stale gather/loading/offer
191
+ // signals cannot keep the overlay mounted after the user closes it.
192
+ rootStore.clearElementConversationState();
193
+ rootStore.closeLightbox();
194
+ };
195
+ const handleNotYou = ()=>{
196
+ rootStore.restoreGatherFromOffer();
197
+ };
198
+ // Reading .value during render subscribes this component to the signal.
199
+ const booked = (_ref = (_rootStore_meetingStore_value = rootStore.meetingStore.value) == null ? void 0 : _rootStore_meetingStore_value.booked.value) != null ? _ref : false;
200
+ // Content-card sizing: the container variant fills its host; otherwise the
201
+ // card is sized to the current phase.
202
+ const contentSizeStyle = isContainer ? containerContentStyle : phaseWidthStyle({
203
+ isGatherPhase,
204
+ isLoadingPhase,
205
+ isTextPhase
206
+ });
207
+ return /*#__PURE__*/ jsxRuntime_module_u("div", {
208
+ className: cx(overlayStyle, isContainer && containerOverlayStyle),
209
+ "data-component-name": "LightboxExperience.Overlay",
210
+ children: /*#__PURE__*/ jsxRuntime_module_u("div", {
211
+ className: cx(lightboxCardStyle, contentSizeStyle),
212
+ "data-component-name": "LightboxExperience.Content",
213
+ children: [
214
+ isMeetingPhase && !(isContainer && booked) && ((_elementConversationOffer_value = elementConversationOffer.value) == null ? void 0 : _elementConversationOffer_value.calendarEventInviteEmail) && /*#__PURE__*/ jsxRuntime_module_u("div", {
215
+ className: inviteBannerStyle,
216
+ "data-component-name": "LightboxExperience.InviteBanner",
217
+ children: /*#__PURE__*/ jsxRuntime_module_u("span", {
218
+ className: inviteBannerTextStyle,
219
+ children: [
220
+ "Invite will be sent to",
221
+ " ",
222
+ /*#__PURE__*/ jsxRuntime_module_u("strong", {
223
+ children: maskEmail(elementConversationOffer.value.calendarEventInviteEmail)
224
+ }),
225
+ ".",
226
+ " ",
227
+ /*#__PURE__*/ jsxRuntime_module_u("button", {
228
+ className: notYouButtonStyle,
229
+ onClick: handleNotYou,
230
+ "data-component-name": "LightboxExperience.NotYouButton",
231
+ children: "Not you?"
232
+ })
233
+ ]
234
+ })
235
+ }),
236
+ /*#__PURE__*/ jsxRuntime_module_u("div", {
237
+ className: contentBodyStyle,
238
+ "data-component-name": "LightboxExperience.ContentBody",
239
+ children: [
240
+ !isContainer && /*#__PURE__*/ jsxRuntime_module_u("button", {
241
+ className: closeButtonStyle,
242
+ onClick: handleClose,
243
+ "aria-label": "Close",
244
+ "data-component-name": "LightboxExperience.CloseButton",
245
+ children: /*#__PURE__*/ jsxRuntime_module_u(CrossIcon, {})
246
+ }),
247
+ isLoadingPhase ? /*#__PURE__*/ jsxRuntime_module_u(CalendarLoadingContent, {
248
+ completing: snappingToOffer || snappingToGather,
249
+ messages: loadingMessages
250
+ }) : isTextPhase ? /*#__PURE__*/ jsxRuntime_module_u("div", {
251
+ className: loadingContentStyle,
252
+ "data-component-name": "LightboxExperience.TextMessage",
253
+ children: [
254
+ ((_elementConversationTextMessage_value = elementConversationTextMessage.value) == null ? void 0 : _elementConversationTextMessage_value.title) && /*#__PURE__*/ jsxRuntime_module_u("h2", {
255
+ className: meetingTitleStyle,
256
+ "data-component-name": "LightboxExperience.TextTitle",
257
+ children: elementConversationTextMessage.value.title
258
+ }),
259
+ ((_elementConversationTextMessage_value1 = elementConversationTextMessage.value) == null ? void 0 : _elementConversationTextMessage_value1.text) && /*#__PURE__*/ jsxRuntime_module_u("p", {
260
+ "data-component-name": "LightboxExperience.TextSubtitle",
261
+ children: elementConversationTextMessage.value.text
262
+ }),
263
+ /*#__PURE__*/ jsxRuntime_module_u("button", {
264
+ className: closeButtonStyle,
265
+ onClick: handleClose,
266
+ "data-component-name": "LightboxExperience.TextDoneButton",
267
+ children: (_ref1 = (_elementConversationTextMessage_value2 = elementConversationTextMessage.value) == null ? void 0 : _elementConversationTextMessage_value2.buttonText) != null ? _ref1 : "Done"
268
+ })
269
+ ]
270
+ }) : /*#__PURE__*/ jsxRuntime_module_u(compat_module_P, {
271
+ fallback: isGatherPhase ? null : /*#__PURE__*/ jsxRuntime_module_u(CalendarLoadingContent, {
272
+ messages: loadingMessages
273
+ }),
274
+ children: isGatherPhase ? /*#__PURE__*/ jsxRuntime_module_u(LightboxGather, {
275
+ rootStore: rootStore
276
+ }) : /*#__PURE__*/ jsxRuntime_module_u("div", {
277
+ className: lightboxMeetingLayoutStyle,
278
+ style: booked && !isContainer ? {
279
+ alignItems: "center"
280
+ } : undefined,
281
+ "data-component-name": "LightboxExperience.MeetingLayout",
282
+ children: [
283
+ /*#__PURE__*/ jsxRuntime_module_u(LightboxMeetingInfo, {
284
+ offer: elementConversationOffer.value,
285
+ t: rootStore.translationStore.t,
286
+ booked: booked,
287
+ container: isContainer
288
+ }),
289
+ /*#__PURE__*/ jsxRuntime_module_u("div", {
290
+ className: lightboxMeetingDividerStyle,
291
+ "data-component-name": "LightboxExperience.Divider",
292
+ "aria-hidden": "true"
293
+ }),
294
+ /*#__PURE__*/ jsxRuntime_module_u("div", {
295
+ className: lightboxMeetingCalendarStyle,
296
+ "data-component-name": "LightboxExperience.MeetingCalendar",
297
+ children: booked ? /*#__PURE__*/ jsxRuntime_module_u(LightboxBookingConfirmed, {
298
+ email: (_ref2 = (_rootStore_meetingStore_value1 = rootStore.meetingStore.value) == null ? void 0 : _rootStore_meetingStore_value1.bookedEmail.value) != null ? _ref2 : null,
299
+ timeSlot: (_ref3 = (_rootStore_meetingStore_value2 = rootStore.meetingStore.value) == null ? void 0 : _rootStore_meetingStore_value2.bookedTimeSlot.value) != null ? _ref3 : null,
300
+ timeZone: (_ref4 = (_rootStore_meetingStore_value3 = rootStore.meetingStore.value) == null ? void 0 : _rootStore_meetingStore_value3.timeZone.value) != null ? _ref4 : LOCAL_TIMEZONE,
301
+ locale: rootStore.translationStore.effectiveLocale.value,
302
+ title: (_ref5 = (_elementConversationTextMessage_value3 = elementConversationTextMessage.value) == null ? void 0 : _elementConversationTextMessage_value3.title) != null ? _ref5 : "Your meeting has been scheduled",
303
+ text: (_ref6 = (_elementConversationTextMessage_value4 = elementConversationTextMessage.value) == null ? void 0 : _elementConversationTextMessage_value4.text) != null ? _ref6 : null,
304
+ container: isContainer
305
+ }) : /*#__PURE__*/ jsxRuntime_module_u(MeetingBooker, {
306
+ rootStore: rootStore,
307
+ context: "lightbox",
308
+ closeOnBooked: false
309
+ })
310
+ })
311
+ ]
312
+ })
313
+ })
314
+ ]
315
+ })
316
+ ]
317
+ })
318
+ });
319
+ };
320
+ const LightboxMeetingInfo = (param)=>{
321
+ let { offer, t, booked = false, container = false } = param;
322
+ var _ref, _offer_title, _offer_subtitle;
323
+ // Prefer the experience-level title, fall back to the calendar event type name.
324
+ const title = (_ref = (_offer_title = offer.title) != null ? _offer_title : offer.calendarEventTitle) != null ? _ref : null;
325
+ const subtitle = (_offer_subtitle = offer.subtitle) != null ? _offer_subtitle : null;
326
+ const durationMinutes = offer.calendarEventTypeDuration ? Math.round(offer.calendarEventTypeDuration / 60) : null;
327
+ const timeZone = LOCAL_TIMEZONE;
328
+ return /*#__PURE__*/ jsxRuntime_module_u("div", {
329
+ className: cx(meetingInfoStyle, booked && !container && meetingInfoBookedStyle),
330
+ "data-component-name": "LightboxExperience.MeetingInfo",
331
+ children: [
332
+ /*#__PURE__*/ jsxRuntime_module_u(MeetingRepHeader, {
333
+ message: offer,
334
+ t: t,
335
+ variant: booked ? "confirmation" : "lightbox"
336
+ }),
337
+ !booked && title && /*#__PURE__*/ jsxRuntime_module_u("h2", {
338
+ className: meetingTitleStyle,
339
+ children: title
340
+ }),
341
+ /*#__PURE__*/ jsxRuntime_module_u("div", {
342
+ className: cx(meetingMetaStyle, booked && !container && meetingMetaCenteredStyle),
343
+ "data-component-name": "LightboxExperience.MeetingMeta",
344
+ children: [
345
+ durationMinutes && /*#__PURE__*/ jsxRuntime_module_u("span", {
346
+ className: metaItemStyle,
347
+ "data-component-name": "LightboxExperience.Duration",
348
+ children: [
349
+ /*#__PURE__*/ jsxRuntime_module_u("span", {
350
+ className: metaIconStyle,
351
+ children: /*#__PURE__*/ jsxRuntime_module_u(ClockIcon, {})
352
+ }),
353
+ durationMinutes,
354
+ " minutes"
355
+ ]
356
+ }),
357
+ /*#__PURE__*/ jsxRuntime_module_u("span", {
358
+ className: metaItemStyle,
359
+ "data-component-name": "LightboxExperience.Timezone",
360
+ children: [
361
+ /*#__PURE__*/ jsxRuntime_module_u("span", {
362
+ className: metaIconStyle,
363
+ children: /*#__PURE__*/ jsxRuntime_module_u(GlobeIcon, {})
364
+ }),
365
+ timeZone
366
+ ]
367
+ })
368
+ ]
369
+ }),
370
+ !booked && subtitle && /*#__PURE__*/ jsxRuntime_module_u("p", {
371
+ className: meetingSubtitleStyle,
372
+ children: subtitle
373
+ })
374
+ ]
375
+ });
376
+ };
377
+ const LightboxBookingConfirmed = (param)=>{
378
+ let { email, timeSlot, timeZone, locale, title, text, container = false } = param;
379
+ const timeLabel = timeSlot ? formatTimeShort(timeSlot.startsAt, timeZone, locale) : null;
380
+ const dateLabel = timeSlot ? formatDate(timeSlot.startsAt, timeZone, locale) : null;
381
+ const timeZoneLabel = timeZone.replace(/_/g, " ");
382
+ return /*#__PURE__*/ jsxRuntime_module_u("div", {
383
+ className: confirmedContainerStyle,
384
+ "data-component-name": "LightboxBookingConfirmed.Container",
385
+ children: [
386
+ /*#__PURE__*/ jsxRuntime_module_u("h3", {
387
+ className: confirmedHeadingStyle,
388
+ children: "Meeting info"
389
+ }),
390
+ timeSlot && /*#__PURE__*/ jsxRuntime_module_u("div", {
391
+ className: confirmedTimeDateStyle,
392
+ children: [
393
+ /*#__PURE__*/ jsxRuntime_module_u("div", {
394
+ className: confirmedColumnStyle,
395
+ children: [
396
+ /*#__PURE__*/ jsxRuntime_module_u("span", {
397
+ className: confirmedLabelStyle,
398
+ children: "Time"
399
+ }),
400
+ /*#__PURE__*/ jsxRuntime_module_u("span", {
401
+ className: confirmedValueStyle,
402
+ children: timeLabel
403
+ }),
404
+ /*#__PURE__*/ jsxRuntime_module_u("span", {
405
+ className: confirmedTimeZoneStyle,
406
+ children: timeZoneLabel
407
+ })
408
+ ]
409
+ }),
410
+ /*#__PURE__*/ jsxRuntime_module_u("div", {
411
+ className: confirmedColumnStyle,
412
+ children: [
413
+ /*#__PURE__*/ jsxRuntime_module_u("span", {
414
+ className: confirmedLabelStyle,
415
+ children: "Date"
416
+ }),
417
+ /*#__PURE__*/ jsxRuntime_module_u("span", {
418
+ className: confirmedValueStyle,
419
+ children: dateLabel
420
+ })
421
+ ]
422
+ })
423
+ ]
424
+ }),
425
+ /*#__PURE__*/ jsxRuntime_module_u("div", {
426
+ className: cx(confirmedCardStyle, container && confirmedCardLeftStyle),
427
+ "data-component-name": "LightboxBookingConfirmed.Card",
428
+ children: [
429
+ /*#__PURE__*/ jsxRuntime_module_u("span", {
430
+ className: confirmedIconStyle,
431
+ children: /*#__PURE__*/ jsxRuntime_module_u(CheckCircleIcon, {})
432
+ }),
433
+ /*#__PURE__*/ jsxRuntime_module_u("p", {
434
+ className: confirmedTextStyle,
435
+ children: title
436
+ }),
437
+ text && /*#__PURE__*/ jsxRuntime_module_u("p", {
438
+ className: confirmedBodyStyle,
439
+ children: text
440
+ }),
441
+ email && /*#__PURE__*/ jsxRuntime_module_u("p", {
442
+ className: confirmedEmailStyle,
443
+ children: email
444
+ })
445
+ ]
446
+ })
447
+ ]
448
+ });
449
+ };
450
+ const overlayStyle = css_css({
451
+ position: "fixed",
452
+ inset: 0,
453
+ display: "flex",
454
+ alignItems: "center",
455
+ justifyContent: "center",
456
+ backgroundColor: "[rgba(0, 0, 0, 0.5)]",
457
+ zIndex: "[9998]"
458
+ });
459
+ /**
460
+ * The lightbox content card: white rounded panel with the lightbox drop shadow.
461
+ * Exported so other full-viewport surfaces (e.g. the meeting booker rendered as
462
+ * an artifact) get the same treatment without duplicating the CSS.
463
+ */ const lightboxCardStyle = css_css({
464
+ position: "relative",
465
+ backgroundColor: "[white]",
466
+ borderRadius: "[8px]",
467
+ maxHeight: "[min(700px,100vh)]",
468
+ overflowY: "auto",
469
+ boxShadow: "[0 20px 60px rgba(0,0,0,0.3)]",
470
+ display: "flex",
471
+ flexDirection: "column"
472
+ });
473
+ const contentBodyStyle = css_css({
474
+ position: "relative",
475
+ flex: "1"
476
+ });
477
+ const closeButtonStyle = css_css({
478
+ position: "absolute",
479
+ top: "[8px]",
480
+ right: "[8px]",
481
+ paddingBlock: "[6px]",
482
+ paddingInline: "[6px]",
483
+ display: "flex",
484
+ alignItems: "center",
485
+ justifyContent: "center",
486
+ background: "$transparent",
487
+ border: "none",
488
+ cursor: "pointer",
489
+ color: "[rgba(0,0,0,0.35)]",
490
+ borderRadius: "[4px]",
491
+ zIndex: "[1]",
492
+ "& svg": {
493
+ width: "[16px]",
494
+ height: "[16px]"
495
+ }
496
+ });
497
+ const gatherWidthStyle = css_css({
498
+ width: "[min(947px,96vw)]"
499
+ });
500
+ const lightboxMeetingWidthStyle = css_css({
501
+ width: "[min(860px,96vw)]"
502
+ });
503
+ const loadingWidthStyle = css_css({
504
+ width: "[min(320px,96vw)]"
505
+ });
506
+ // Content-card width for the non-container (full-screen) variant, by phase.
507
+ function phaseWidthStyle(phase) {
508
+ if (phase.isGatherPhase) return gatherWidthStyle;
509
+ if (phase.isLoadingPhase || phase.isTextPhase) return loadingWidthStyle;
510
+ return lightboxMeetingWidthStyle;
511
+ }
512
+ // Container variant: render inline inside a page container div instead of as a
513
+ // full-screen overlay. Overrides the fixed backdrop and viewport-relative widths
514
+ // so the booker fills its container. Applied via cx() after the base styles, so
515
+ // only the properties below are overridden.
516
+ const containerOverlayStyle = css_css({
517
+ position: "static",
518
+ inset: "[auto]",
519
+ backgroundColor: "[transparent]",
520
+ width: "[100%]",
521
+ // Size to content (no fixed height / stretch) so the card wraps the booker
522
+ // instead of filling the viewport — lets the page container's margins show.
523
+ height: "[auto]",
524
+ alignItems: "flex-start",
525
+ // Reset text-align: inheritable CSS crosses the shadow boundary, so a host
526
+ // page with `text-align: center` (e.g. a landing page) would otherwise centre
527
+ // every booker text that doesn't set its own alignment.
528
+ textAlign: "left"
529
+ });
530
+ const containerContentStyle = css_css({
531
+ width: "[100%]",
532
+ maxHeight: "[none]",
533
+ // Card chrome for container mode: a subtle border but no shadow (there's no
534
+ // lightbox overlay to frame it). Base lightboxCardStyle carries a strong
535
+ // lightbox shadow, so it's explicitly cleared here.
536
+ borderWidth: "1px",
537
+ borderStyle: "solid",
538
+ borderColor: "$gray",
539
+ boxShadow: "[none]"
540
+ });
541
+ // Meeting phase: two-column layout (meeting info | divider | calendar).
542
+ // Exported alongside lightboxCardStyle so the artifact-hosted booker renders the
543
+ // same two-column lightbox layout.
544
+ const lightboxMeetingLayoutStyle = css_css({
545
+ display: "flex",
546
+ flexDirection: "row",
547
+ paddingBlock: "[40px]",
548
+ paddingInline: "[48px]",
549
+ gap: "[32px]",
550
+ alignItems: "flex-start",
551
+ minHeight: "[500px]",
552
+ // On narrow viewports the fixed two-column layout overflows (the calendar gets
553
+ // cut off). Stack the meeting info above the calendar and drop the fixed
554
+ // min-height so the card sizes to content — this is the mobile booker layout.
555
+ // alignItems must flip to stretch: the base "flex-start" is cross-axis, so in a
556
+ // column it would let the calendar shrink to its content width and hug the left
557
+ // (leaving an empty band on the right); stretch makes each section fill the card.
558
+ _mobile: {
559
+ flexDirection: "column",
560
+ alignItems: "stretch",
561
+ paddingBlock: "[24px]",
562
+ paddingInline: "[20px]",
563
+ gap: "[20px]",
564
+ minHeight: "[auto]"
565
+ }
566
+ });
567
+ const meetingInfoStyle = css_css({
568
+ display: "flex",
569
+ flexDirection: "column",
570
+ gap: "$md",
571
+ flex: "[0 0 220px]",
572
+ paddingTop: "[8px]",
573
+ // Full width when stacked on mobile instead of a fixed 220px side column.
574
+ _mobile: {
575
+ flex: "[1 1 auto]",
576
+ width: "[100%]",
577
+ paddingTop: "$none"
578
+ }
579
+ });
580
+ const meetingInfoBookedStyle = css_css({
581
+ paddingTop: "$none",
582
+ alignItems: "center"
583
+ });
584
+ const meetingTitleStyle = css_css({
585
+ fontFamily: "$inter",
586
+ fontSize: "22px",
587
+ fontWeight: "$bold",
588
+ lineHeight: "28px",
589
+ color: "$text.dark",
590
+ margin: "$none"
591
+ });
592
+ const meetingMetaStyle = css_css({
593
+ display: "flex",
594
+ flexDirection: "column",
595
+ gap: "$xs"
596
+ });
597
+ const meetingMetaCenteredStyle = css_css({
598
+ alignItems: "center"
599
+ });
600
+ const metaItemStyle = css_css({
601
+ display: "flex",
602
+ alignItems: "center",
603
+ gap: "$xs",
604
+ fontFamily: "$inter",
605
+ fontSize: "13px",
606
+ color: "$text.secondary"
607
+ });
608
+ const metaIconStyle = css_css({
609
+ display: "flex",
610
+ flexShrink: 0,
611
+ "& svg": {
612
+ width: "[14px]",
613
+ height: "[14px]"
614
+ }
615
+ });
616
+ const meetingSubtitleStyle = css_css({
617
+ fontFamily: "$inter",
618
+ fontSize: "14px",
619
+ lineHeight: "22px",
620
+ color: "$text.secondary",
621
+ margin: "$none"
622
+ });
623
+ const lightboxMeetingCalendarStyle = css_css({
624
+ flex: "1",
625
+ minWidth: "[0]"
626
+ });
627
+ const lightboxMeetingDividerStyle = css_css({
628
+ width: "[1px]",
629
+ backgroundColor: "$gray",
630
+ alignSelf: "stretch",
631
+ flexShrink: 0,
632
+ // Becomes a horizontal rule between the stacked sections on mobile.
633
+ _mobile: {
634
+ width: "[100%]",
635
+ height: "[1px]"
636
+ }
637
+ });
638
+ const inviteBannerStyle = css_css({
639
+ display: "flex",
640
+ alignItems: "center",
641
+ justifyContent: "center",
642
+ paddingBlock: "[10px]",
643
+ paddingInline: "[24px]",
644
+ backgroundColor: "[rgba(0,0,0,0.04)]",
645
+ borderBottomWidth: "[1px]",
646
+ borderBottomStyle: "solid",
647
+ borderBottomColor: "[rgba(0,0,0,0.08)]",
648
+ borderTopLeftRadius: "[8px]",
649
+ borderTopRightRadius: "[8px]",
650
+ width: "[100%]"
651
+ });
652
+ const inviteBannerTextStyle = css_css({
653
+ fontFamily: "$inter",
654
+ fontSize: "13px",
655
+ color: "$text.secondary",
656
+ textAlign: "center"
657
+ });
658
+ const notYouButtonStyle = css_css({
659
+ fontFamily: "$inter",
660
+ fontSize: "13px",
661
+ color: "$primary",
662
+ background: "$transparent",
663
+ border: "none",
664
+ cursor: "pointer",
665
+ paddingBlock: "[0]",
666
+ paddingInline: "[0]",
667
+ flexShrink: 0,
668
+ "&:hover": {
669
+ textDecoration: "underline"
670
+ }
671
+ });
672
+ // Booking confirmed styles
673
+ const confirmedContainerStyle = css_css({
674
+ display: "flex",
675
+ flexDirection: "column",
676
+ gap: "$md",
677
+ paddingTop: "[8px]"
678
+ });
679
+ const confirmedHeadingStyle = css_css({
680
+ fontFamily: "$inter",
681
+ fontSize: "16px",
682
+ fontWeight: "$semibold",
683
+ lineHeight: "24px",
684
+ color: "$text.dark",
685
+ margin: "$none"
686
+ });
687
+ const confirmedTimeDateStyle = css_css({
688
+ display: "flex",
689
+ flexDirection: "row",
690
+ gap: "[32px]"
691
+ });
692
+ const confirmedColumnStyle = css_css({
693
+ display: "flex",
694
+ flexDirection: "column",
695
+ gap: "[4px]"
696
+ });
697
+ // Matches the micro label the details card uses for the same two words before
698
+ // booking, so TIME and DATE do not change size on the way through the flow.
699
+ const confirmedLabelStyle = css_css({
700
+ fontFamily: "$inter",
701
+ fontSize: "10px",
702
+ fontWeight: "$medium",
703
+ lineHeight: "16px",
704
+ textTransform: "uppercase",
705
+ letterSpacing: "[0.5px]",
706
+ color: "$text.secondary"
707
+ });
708
+ const confirmedValueStyle = css_css({
709
+ fontFamily: "$inter",
710
+ fontSize: "16px",
711
+ fontWeight: "$semibold",
712
+ color: "$text.dark"
713
+ });
714
+ const confirmedTimeZoneStyle = css_css({
715
+ fontFamily: "$inter",
716
+ fontSize: "12px",
717
+ color: "$text.secondary"
718
+ });
719
+ const confirmedCardStyle = css_css({
720
+ display: "flex",
721
+ flexDirection: "column",
722
+ alignItems: "center",
723
+ justifyContent: "center",
724
+ gap: "$sm",
725
+ padding: "$lg",
726
+ borderWidth: "[1px]",
727
+ borderStyle: "solid",
728
+ borderColor: "[#22c55e]",
729
+ borderRadius: "[8px]",
730
+ backgroundColor: "[rgba(34,197,94,0.06)]",
731
+ textAlign: "center"
732
+ });
733
+ // Container mode: left-align the confirmation card content instead of centering.
734
+ const confirmedCardLeftStyle = css_css({
735
+ alignItems: "flex-start",
736
+ textAlign: "left"
737
+ });
738
+ const confirmedIconStyle = css_css({
739
+ color: "[#22c55e]",
740
+ display: "flex",
741
+ "& svg": {
742
+ width: "[32px]",
743
+ height: "[32px]"
744
+ }
745
+ });
746
+ const confirmedTextStyle = css_css({
747
+ fontFamily: "$inter",
748
+ fontSize: "15px",
749
+ fontWeight: "$semibold",
750
+ color: "$text.dark",
751
+ margin: "$none"
752
+ });
753
+ const confirmedBodyStyle = css_css({
754
+ fontFamily: "$inter",
755
+ fontSize: "13px",
756
+ color: "$text.secondary",
757
+ margin: "$none"
758
+ });
759
+ const confirmedEmailStyle = css_css({
760
+ fontFamily: "$inter",
761
+ fontSize: "13px",
762
+ color: "$text.secondary",
763
+ margin: "$none"
764
+ });
765
+
766
+ var LightboxExperience_LightboxMeetingInfo = /* unused export */ undefined;
767
+ var LightboxExperience_lightboxMeetingDividerStyle = /* unused export */ undefined;
768
+ var LightboxExperience_lightboxMeetingWidthStyle = /* unused export */ undefined;
769
+ export { LightboxExperience, LightboxExperience_LightboxMeetingInfo as LightboxMeetingInfo, LightboxExperience_lightboxMeetingDividerStyle as lightboxMeetingDividerStyle, LightboxExperience_lightboxMeetingWidthStyle as lightboxMeetingWidthStyle, lightboxCardStyle, lightboxMeetingCalendarStyle, lightboxMeetingLayoutStyle };