@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.
- package/41842993ec71d6628e4949e9a22b146b.svg +3 -0
- package/7271f3433ed82fc7f56adcd9e30275f4.svg +17 -0
- package/LICENSE.txt +82 -0
- package/components/helpers/entriesStringValidations.js +69 -0
- package/components/helpers/languages.js +32 -0
- package/components/shared/assertUnreachable.js +5 -0
- package/components/shared/controls/imageCropperHelpers.js +43 -0
- package/components/shared/meetingLoadingProgressSpec.js +116 -0
- package/constants.generated.js +9883 -0
- package/css/widget/multimodal_v2/host.split-css.css +162 -0
- package/css/widget/multimodal_v2/index.split-css.panda.css +5240 -0
- package/css/widget/widget.split-css.css +100 -0
- package/fonts/inter/Inter-Black.woff +0 -0
- package/fonts/inter/Inter-Black.woff2 +0 -0
- package/fonts/inter/Inter-BlackItalic.woff +0 -0
- package/fonts/inter/Inter-BlackItalic.woff2 +0 -0
- package/fonts/inter/Inter-Bold.woff +0 -0
- package/fonts/inter/Inter-Bold.woff2 +0 -0
- package/fonts/inter/Inter-BoldItalic.woff +0 -0
- package/fonts/inter/Inter-BoldItalic.woff2 +0 -0
- package/fonts/inter/Inter-ExtraBold.woff +0 -0
- package/fonts/inter/Inter-ExtraBold.woff2 +0 -0
- package/fonts/inter/Inter-ExtraBoldItalic.woff +0 -0
- package/fonts/inter/Inter-ExtraBoldItalic.woff2 +0 -0
- package/fonts/inter/Inter-ExtraLight.woff +0 -0
- package/fonts/inter/Inter-ExtraLight.woff2 +0 -0
- package/fonts/inter/Inter-ExtraLightItalic.woff +0 -0
- package/fonts/inter/Inter-ExtraLightItalic.woff2 +0 -0
- package/fonts/inter/Inter-Italic.woff +0 -0
- package/fonts/inter/Inter-Italic.woff2 +0 -0
- package/fonts/inter/Inter-Light.woff +0 -0
- package/fonts/inter/Inter-Light.woff2 +0 -0
- package/fonts/inter/Inter-LightItalic.woff +0 -0
- package/fonts/inter/Inter-LightItalic.woff2 +0 -0
- package/fonts/inter/Inter-Medium.woff +0 -0
- package/fonts/inter/Inter-Medium.woff2 +0 -0
- package/fonts/inter/Inter-MediumItalic.woff +0 -0
- package/fonts/inter/Inter-MediumItalic.woff2 +0 -0
- package/fonts/inter/Inter-Regular.woff +0 -0
- package/fonts/inter/Inter-Regular.woff2 +0 -0
- package/fonts/inter/Inter-SemiBold.woff +0 -0
- package/fonts/inter/Inter-SemiBold.woff2 +0 -0
- package/fonts/inter/Inter-SemiBoldItalic.woff +0 -0
- package/fonts/inter/Inter-SemiBoldItalic.woff2 +0 -0
- package/fonts/inter/Inter-Thin.woff +0 -0
- package/fonts/inter/Inter-Thin.woff2 +0 -0
- package/fonts/inter/Inter-ThinItalic.woff +0 -0
- package/fonts/inter/Inter-ThinItalic.woff2 +0 -0
- package/fonts/inter/Inter-italic.var.woff2 +0 -0
- package/fonts/inter/Inter-roman.var.woff2 +0 -0
- package/images/close.js +63 -0
- package/images/logo.js +22 -0
- package/js/4101.js +19721 -0
- package/js/daily-esm.js +9948 -0
- package/js/date-fns.js +427 -0
- package/js/multimodal_v2.js +1653 -0
- package/js/runtime.js +109 -0
- package/media/Inter-Black.796be8d8bf.woff2 +0 -0
- package/media/Inter-Black.b254104c56.woff +0 -0
- package/media/Inter-BlackItalic.70306b0eae.woff +0 -0
- package/media/Inter-BlackItalic.752f1e0aaa.woff2 +0 -0
- package/media/Inter-Bold.579e0f95ca.woff2 +0 -0
- package/media/Inter-Bold.b1234477a5.woff +0 -0
- package/media/Inter-BoldItalic.3d0d804323.woff +0 -0
- package/media/Inter-BoldItalic.828a494e04.woff2 +0 -0
- package/media/Inter-ExtraBold.208a9e6c99.woff +0 -0
- package/media/Inter-ExtraBold.d65f028165.woff2 +0 -0
- package/media/Inter-ExtraBoldItalic.30429962ec.woff +0 -0
- package/media/Inter-ExtraBoldItalic.8c7eac5ce3.woff2 +0 -0
- package/media/Inter-ExtraLight.15c082a57d.woff +0 -0
- package/media/Inter-ExtraLight.6824177d1e.woff2 +0 -0
- package/media/Inter-ExtraLightItalic.05138dddf3.woff2 +0 -0
- package/media/Inter-ExtraLightItalic.3beee54f59.woff +0 -0
- package/media/Inter-Italic.9beab78452.woff +0 -0
- package/media/Inter-Italic.d593a8df79.woff2 +0 -0
- package/media/Inter-Light.27083fa637.woff2 +0 -0
- package/media/Inter-Light.91dfddd842.woff +0 -0
- package/media/Inter-LightItalic.0a783b89b3.woff2 +0 -0
- package/media/Inter-LightItalic.f8ccf2813f.woff +0 -0
- package/media/Inter-Medium.dc792b508e.woff2 +0 -0
- package/media/Inter-Medium.ec7dd2d9d8.woff +0 -0
- package/media/Inter-MediumItalic.17301e5b40.woff +0 -0
- package/media/Inter-MediumItalic.84d3493a9f.woff2 +0 -0
- package/media/Inter-Regular.f1f0c35b32.woff2 +0 -0
- package/media/Inter-Regular.f356e84aa0.woff +0 -0
- package/media/Inter-SemiBold.55027e4724.woff +0 -0
- package/media/Inter-SemiBold.fcb100c760.woff2 +0 -0
- package/media/Inter-SemiBoldItalic.ab9105ed3b.woff +0 -0
- package/media/Inter-SemiBoldItalic.d90f295d0c.woff2 +0 -0
- package/media/Inter-Thin.16325d9b0f.woff +0 -0
- package/media/Inter-Thin.dafaa44d99.woff2 +0 -0
- package/media/Inter-ThinItalic.4fc662b3cf.woff2 +0 -0
- package/media/Inter-ThinItalic.d3d8994788.woff +0 -0
- package/media/Inter-italic.var.958a0b9742.woff2 +0 -0
- package/media/Inter-roman.var.b2129c009c.woff2 +0 -0
- package/package.json +20 -0
- package/packs/widget/api/docking/docking_host.js +97 -0
- package/packs/widget/api/docking/index.js +294 -0
- package/packs/widget/api/docking/shared.js +164 -0
- package/packs/widget/api/docking/viewport_lock.js +488 -0
- package/packs/widget/api/docking/viewport_resize.js +1203 -0
- package/packs/widget/esm/fonts/Inter-Black.796be8d8bf.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Black.b254104c56.woff +0 -0
- package/packs/widget/esm/fonts/Inter-BlackItalic.70306b0eae.woff +0 -0
- package/packs/widget/esm/fonts/Inter-BlackItalic.752f1e0aaa.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Bold.579e0f95ca.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Bold.b1234477a5.woff +0 -0
- package/packs/widget/esm/fonts/Inter-BoldItalic.3d0d804323.woff +0 -0
- package/packs/widget/esm/fonts/Inter-BoldItalic.828a494e04.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraBold.208a9e6c99.woff +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraBold.d65f028165.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraBoldItalic.30429962ec.woff +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraBoldItalic.8c7eac5ce3.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraLight.15c082a57d.woff +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraLight.6824177d1e.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraLightItalic.05138dddf3.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraLightItalic.3beee54f59.woff +0 -0
- package/packs/widget/esm/fonts/Inter-Italic.9beab78452.woff +0 -0
- package/packs/widget/esm/fonts/Inter-Italic.d593a8df79.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Light.27083fa637.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Light.91dfddd842.woff +0 -0
- package/packs/widget/esm/fonts/Inter-LightItalic.0a783b89b3.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-LightItalic.f8ccf2813f.woff +0 -0
- package/packs/widget/esm/fonts/Inter-Medium.dc792b508e.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Medium.ec7dd2d9d8.woff +0 -0
- package/packs/widget/esm/fonts/Inter-MediumItalic.17301e5b40.woff +0 -0
- package/packs/widget/esm/fonts/Inter-MediumItalic.84d3493a9f.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Regular.f1f0c35b32.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Regular.f356e84aa0.woff +0 -0
- package/packs/widget/esm/fonts/Inter-SemiBold.55027e4724.woff +0 -0
- package/packs/widget/esm/fonts/Inter-SemiBold.fcb100c760.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-SemiBoldItalic.ab9105ed3b.woff +0 -0
- package/packs/widget/esm/fonts/Inter-SemiBoldItalic.d90f295d0c.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Thin.16325d9b0f.woff +0 -0
- package/packs/widget/esm/fonts/Inter-Thin.dafaa44d99.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-ThinItalic.4fc662b3cf.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-ThinItalic.d3d8994788.woff +0 -0
- package/packs/widget/esm/fonts/Inter-italic.var.958a0b9742.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-roman.var.b2129c009c.woff2 +0 -0
- package/packs/widget/esm/index.js +183 -0
- package/packs/widget/esm/qualified.css +5502 -0
- package/routes/app/offers/scripts/OfferMainScript.js +154 -0
- package/routes/app/offers/scripts/constants.js +71 -0
- package/routes/app/offers/scripts/main/ButtonManager.js +65 -0
- package/routes/app/offers/scripts/main/FormManager.js +325 -0
- package/routes/app/offers/scripts/main/MainContext.js +19 -0
- package/routes/app/offers/scripts/main/OfferManager.js +91 -0
- package/routes/app/offers/scripts/main/TriggerManager.js +125 -0
- package/routes/app/offers/scripts/rendering/ContentManager.js +53 -0
- package/routes/app/offers/scripts/rendering/LocationManager.js +83 -0
- package/routes/app/offers/scripts/rendering/RenderedOffer.js +188 -0
- package/routes/app/offers/scripts/rendering/Renderer.js +69 -0
- package/routes/app/offers/scripts/rendering/RenderingInitializer.js +62 -0
- package/routes/app/offers/scripts/rendering/animations/AnimationManager.js +31 -0
- package/routes/app/offers/scripts/rendering/animations/AnimationManagerFooter.js +81 -0
- package/routes/app/offers/scripts/rendering/animations/AnimationManagerHeader.js +81 -0
- package/routes/app/offers/scripts/rendering/animations/AnimationManagerModal.js +117 -0
- package/routes/app/offers/scripts/rendering/animations/AnimationManagerSidebar.js +75 -0
- package/routes/app/offers/scripts/rendering/animations/AnimationResult.js +43 -0
- package/routes/app/offers/scripts/rendering/animations/Animator.js +78 -0
- package/routes/app/offers/scripts/rendering/animations/BaseAnimationManager.js +25 -0
- package/routes/app/offers/scripts/rendering/lib/BaseComponent.js +106 -0
- package/routes/app/offers/scripts/rendering/lib/FormComponent.js +134 -0
- package/routes/app/offers/scripts/rendering/lib/OfferComponent.js +144 -0
- package/routes/app/offers/scripts/rendering/lib/ScrollbarWidth.js +27 -0
- package/routes/app/offers/scripts/rendering/lib/decorators.js +20 -0
- package/routes/app/offers/scripts/rendering/locations/CSSVarsManager.js +66 -0
- package/routes/app/offers/scripts/rendering/locations/ElementResizeObserver.js +49 -0
- package/routes/app/offers/scripts/rendering/locations/footer.js +53 -0
- package/routes/app/offers/scripts/rendering/locations/header/AsyncBatchProcessor.js +70 -0
- package/routes/app/offers/scripts/rendering/locations/header/CSSTransitionObserver.js +182 -0
- package/routes/app/offers/scripts/rendering/locations/header/ElementStyleChangeObserver.js +138 -0
- package/routes/app/offers/scripts/rendering/locations/header/ExternalStyleManager.js +110 -0
- package/routes/app/offers/scripts/rendering/locations/header/Header.js +353 -0
- package/routes/app/offers/scripts/rendering/locations/header/InlineStyleManager.js +105 -0
- package/routes/app/offers/scripts/rendering/locations/header/MatchingElementsObserver.js +107 -0
- package/routes/app/offers/scripts/rendering/locations/header/NewElementsObserver.js +129 -0
- package/routes/app/offers/scripts/rendering/locations/header/RuleWrapper.js +46 -0
- package/routes/app/offers/scripts/rendering/locations/header/SelectorObservable.js +23 -0
- package/routes/app/offers/scripts/rendering/locations/header/SelectorObserver.js +61 -0
- package/routes/app/offers/scripts/rendering/locations/header/ShiftedElementsManager.js +45 -0
- package/routes/app/offers/scripts/rendering/locations/header/StyleElementManager.js +37 -0
- package/routes/app/offers/scripts/rendering/locations/header/StyleElementWrapper.js +62 -0
- package/routes/app/offers/scripts/rendering/locations/header/StyleSelectorObserver/ObservedSelectorValue.js +45 -0
- package/routes/app/offers/scripts/rendering/locations/header/StyleSelectorObserver/ObservedSelectors.js +62 -0
- package/routes/app/offers/scripts/rendering/locations/header/StyleSelectorObserver/StyleSelectorObserver.js +294 -0
- package/routes/app/offers/scripts/rendering/locations/header/StyleSelectorObserver/constants.js +21 -0
- package/routes/app/offers/scripts/rendering/locations/header/WindowResizeObserver.js +43 -0
- package/routes/app/offers/scripts/rendering/locations/header/utils.js +25 -0
- package/routes/app/offers/scripts/rendering/locations/popup.js +66 -0
- package/routes/app/offers/scripts/rendering/locations/sidebar.js +21 -0
- package/routes/app/offers/scripts/rendering/variations/ButtonBanner.js +105 -0
- package/routes/app/offers/scripts/rendering/variations/ButtonModal.js +114 -0
- package/routes/app/offers/scripts/rendering/variations/FormBanner.js +214 -0
- package/routes/app/offers/scripts/rendering/variations/FormModal.js +325 -0
- package/routes/app/offers/scripts/rendering/variations/LinkBanner.js +105 -0
- package/routes/app/offers/scripts/rendering/variations/components/Body.js +29 -0
- package/routes/app/offers/scripts/rendering/variations/components/Button.js +128 -0
- package/routes/app/offers/scripts/rendering/variations/components/DismissButton.js +39 -0
- package/routes/app/offers/scripts/rendering/variations/components/ForegroundImageBanner.js +110 -0
- package/routes/app/offers/scripts/rendering/variations/components/ForegroundImageModal.js +128 -0
- package/routes/app/offers/scripts/rendering/variations/components/Headline.js +94 -0
- package/routes/app/offers/scripts/rendering/variations/components/MultiFieldForm.js +302 -0
- package/routes/app/offers/scripts/rendering/variations/components/Tooltip.js +74 -0
- package/routes/app/offers/scripts/rendering/variations/icons.js +15 -0
- package/routes/app/offers/scripts/utils.js +115 -0
- package/routes/app/offers/utils/HTMLUtils.js +10 -0
- package/routes/app/offers/utils/createTypeGuard.js +32 -0
- package/routes/app/offers/utils/promise-utils.js +22 -0
- package/routes/app/websiteBuilder/stores/storeHelpers.js +18 -0
- package/sounds/message-initial.mp3 +0 -0
- package/sounds/message-received.mp3 +0 -0
- package/sounds/message-sent.mp3 +0 -0
- package/src/arrays.js +15 -0
- package/src/audio.js +106 -0
- package/src/bounded-set.js +16 -0
- package/src/bounding_box_observer.js +129 -0
- package/src/decorators.js +29 -0
- package/src/dom.js +128 -0
- package/src/dom_roots.js +26 -0
- package/src/embedded_forms/EmbeddedForm.js +638 -0
- package/src/embedded_forms/QualifiedEmbeddedForm.js +51 -0
- package/src/embedded_forms/QualifiedFormField.js +137 -0
- package/src/embedded_forms/utils.js +17 -0
- package/src/graphql-types.js +1686 -0
- package/src/iframes.js +86 -0
- package/src/localstorage.js +43 -0
- package/src/mirror/Shipper.js +133 -0
- package/src/mirror/constants.generated.js +13 -0
- package/src/mirror/constants.js +238 -0
- package/src/mirror/shipper/ChangeQueue.js +155 -0
- package/src/mirror/shipper/DOMSerializer.js +392 -0
- package/src/mirror/shipper/observers.js +441 -0
- package/src/mirror/shipper/utils.js +98 -0
- package/src/mixins/disposable.js +125 -0
- package/src/mixins/injectable.js +37 -0
- package/src/personalizations/personalization-manager.js +110 -0
- package/src/personalizations/strategies/node-freezing-strategy.js +174 -0
- package/src/personalizations/utils.js +187 -0
- package/src/promises.js +107 -0
- package/src/proxy.js +144 -0
- package/src/qualified_root.js +35 -0
- package/src/query_params.js +55 -0
- package/src/shadow-dom-helper.js +63 -0
- package/src/singleton_host.js +39 -0
- package/src/smart_website/trigger.js +49 -0
- package/src/smart_website/utils.js +149 -0
- package/src/string.js +53 -0
- package/src/timezone.js +57 -0
- package/src/timing.js +49 -0
- package/src/type-utils.js +76 -0
- package/src/url-utils.js +102 -0
- package/src/url.js +50 -0
- package/src/utils.js +72 -0
- package/src/validation.js.js +29 -0
- package/src/validation_ts.js +6 -0
- package/vendor/actioncable/adapters.js +6 -0
- package/vendor/actioncable/connection.js +204 -0
- package/vendor/actioncable/connection_monitor.js +129 -0
- package/vendor/actioncable/consumer.js +91 -0
- package/vendor/actioncable/index.js +34 -0
- package/vendor/actioncable/internal.js +22 -0
- package/vendor/actioncable/logger.js +28 -0
- package/vendor/actioncable/subscription.js +93 -0
- package/vendor/actioncable/subscriptions.js +89 -0
- package/vendor/open-telemetry-idgenerator.js +43 -0
- package/widget/analytics/facebook_tracker.js +8 -0
- package/widget/analytics/google_analytics_tracker.js +83 -0
- package/widget/analytics/google_tag_manager_tracker.js +22 -0
- package/widget/analytics.js +58 -0
- package/widget/api_handler/api_handler.js +730 -0
- package/widget/api_handler/base_api_handler.js +249 -0
- package/widget/booker_intent_tracker.js +391 -0
- package/widget/booker_outcome_tracker.js +329 -0
- package/widget/capture_widget_exceptions.js +150 -0
- package/widget/channel.js +282 -0
- package/widget/composite_experience_adapter.js +101 -0
- package/widget/constants.generated.js +350 -0
- package/widget/constants.js +21 -0
- package/widget/container.js +193 -0
- package/widget/content_activity_emitter.js +36 -0
- package/widget/data360_visitor.js +67 -0
- package/widget/date_provider.js +11 -0
- package/widget/debug_mode_state.js +175 -0
- package/widget/dummy_module.js +9 -0
- package/widget/eloqua_visitor.js +17 -0
- package/widget/form_cta_booker_intent.js +246 -0
- package/widget/hubspot_visitor.js +39 -0
- package/widget/inline_meeting_booker_page.js +90 -0
- package/widget/local_state/abstract_local_state.js +38 -0
- package/widget/local_state/debug_state/abstract_debug_flow.js +29 -0
- package/widget/local_state/debug_state/custom_form_flow.js +14 -0
- package/widget/local_state/debug_state/hubspot_form_flow.js +19 -0
- package/widget/local_state/debug_state/hubspot_v4_form_flow.js +19 -0
- package/widget/local_state/debug_state/marketo_form_flow.js +20 -0
- package/widget/local_state/debug_state/pardot_form_flow.js +18 -0
- package/widget/local_state/debug_state.js +362 -0
- package/widget/local_state/trace_state.js +20 -0
- package/widget/location_provider.js +9 -0
- package/widget/marketo_visitor.js +39 -0
- package/widget/meetings/tracing/buttons_forms_triggering_tracer.js +124 -0
- package/widget/meetings/tracing/spans/button_spans.js +18 -0
- package/widget/meetings/tracing/spans/form_spans.js +11 -0
- package/widget/multimodal_v2/assets_preloader.js +97 -0
- package/widget/multimodal_v2/components/AppLayout.js +93 -0
- package/widget/multimodal_v2/components/CursorOverlay.js +93 -0
- package/widget/multimodal_v2/components/PointerRectOverlay.js +74 -0
- package/widget/multimodal_v2/components/app/Artifact.js +109 -0
- package/widget/multimodal_v2/components/app/Background.js +27 -0
- package/widget/multimodal_v2/components/app/CalendarLoadingContent.js +255 -0
- package/widget/multimodal_v2/components/app/Chat.js +39 -0
- package/widget/multimodal_v2/components/app/CookieConsentModal.js +149 -0
- package/widget/multimodal_v2/components/app/Foreground.js +48 -0
- package/widget/multimodal_v2/components/app/HiddenInput.js +41 -0
- package/widget/multimodal_v2/components/app/Input.js +72 -0
- package/widget/multimodal_v2/components/app/LightboxExperience.js +769 -0
- package/widget/multimodal_v2/components/app/LoadingOverlay.js +97 -0
- package/widget/multimodal_v2/components/app/Main.js +985 -0
- package/widget/multimodal_v2/components/app/MessengerButton.js +160 -0
- package/widget/multimodal_v2/components/app/Multimodal.js +17 -0
- package/widget/multimodal_v2/components/app/OverlayControls.js +79 -0
- package/widget/multimodal_v2/components/app/Preview.js +32 -0
- package/widget/multimodal_v2/components/app/PrivacyDisclosure.js +57 -0
- package/widget/multimodal_v2/components/app/RotateDeviceOverlay.js +70 -0
- package/widget/multimodal_v2/components/app/Toolbar.js +156 -0
- package/widget/multimodal_v2/components/chat/ChatComposer.js +129 -0
- package/widget/multimodal_v2/components/chat/ChatInputForm.js +398 -0
- package/widget/multimodal_v2/components/chat/ColdStartQuestions.js +354 -0
- package/widget/multimodal_v2/components/chat/ComposerErrorBanner.js +62 -0
- package/widget/multimodal_v2/components/chat/PostCallSurvey.js +359 -0
- package/widget/multimodal_v2/components/chat/preview/FieldRequestRenderer.js +41 -0
- package/widget/multimodal_v2/components/chat/preview/PreviewMessageRenderer.js +60 -0
- package/widget/multimodal_v2/components/chat/preview/SharedOfferRenderer.js +143 -0
- package/widget/multimodal_v2/components/chat/preview/TextRenderer.js +27 -0
- package/widget/multimodal_v2/components/chat/preview/TimelinePreview.js +254 -0
- package/widget/multimodal_v2/components/chat/timeline/CalendarEventOfferRenderer.js +103 -0
- package/widget/multimodal_v2/components/chat/timeline/CalendarEventPickRenderer.js +148 -0
- package/widget/multimodal_v2/components/chat/timeline/FieldEntryRenderer.js +84 -0
- package/widget/multimodal_v2/components/chat/timeline/FieldRequestRenderer.js +56 -0
- package/widget/multimodal_v2/components/chat/timeline/InlinePrivacyDisclosure.js +66 -0
- package/widget/multimodal_v2/components/chat/timeline/LinkPreviewCard.js +70 -0
- package/widget/multimodal_v2/components/chat/timeline/MessageEntry.js +88 -0
- package/widget/multimodal_v2/components/chat/timeline/PresentContentRenderer.js +30 -0
- package/widget/multimodal_v2/components/chat/timeline/PresentDeckRenderer.js +279 -0
- package/widget/multimodal_v2/components/chat/timeline/PresentVideoRenderer.js +131 -0
- package/widget/multimodal_v2/components/chat/timeline/ShareContentRenderer.js +59 -0
- package/widget/multimodal_v2/components/chat/timeline/SharedOfferRenderer.js +131 -0
- package/widget/multimodal_v2/components/chat/timeline/SystemRenderer.js +82 -0
- package/widget/multimodal_v2/components/chat/timeline/TextRenderer.js +66 -0
- package/widget/multimodal_v2/components/chat/timeline/Timeline.js +158 -0
- package/widget/multimodal_v2/components/debug/DebugMultimodalPanel.js +327 -0
- package/widget/multimodal_v2/components/decks/index.js +160 -0
- package/widget/multimodal_v2/components/field_request/BooleanField.js +77 -0
- package/widget/multimodal_v2/components/field_request/FieldComponents.js +69 -0
- package/widget/multimodal_v2/components/field_request/Form.js +87 -0
- package/widget/multimodal_v2/components/field_request/MultiPicklistField.js +240 -0
- package/widget/multimodal_v2/components/field_request/PicklistField.js +166 -0
- package/widget/multimodal_v2/components/field_request/SingleLineInputField.js +69 -0
- package/widget/multimodal_v2/components/field_request/TextField.js +37 -0
- package/widget/multimodal_v2/components/field_request/index.js +170 -0
- package/widget/multimodal_v2/components/helpers/AutoScroll.js +37 -0
- package/widget/multimodal_v2/components/helpers/ErrorBoundary.js +53 -0
- package/widget/multimodal_v2/components/helpers/FocusTrapDialog.js +26 -0
- package/widget/multimodal_v2/components/helpers/ImpressionTracker.js +94 -0
- package/widget/multimodal_v2/components/helpers/ListRenderer.js +37 -0
- package/widget/multimodal_v2/components/helpers/Localization.js +76 -0
- package/widget/multimodal_v2/components/helpers/Persisted.js +166 -0
- package/widget/multimodal_v2/components/helpers/RichText.js +358 -0
- package/widget/multimodal_v2/components/helpers/ScreenReaderHeading.js +17 -0
- package/widget/multimodal_v2/components/helpers/Thumbnail.js +190 -0
- package/widget/multimodal_v2/components/helpers/VisuallyHidden.js +41 -0
- package/widget/multimodal_v2/components/helpers/content_click_payloads.js +58 -0
- package/widget/multimodal_v2/components/helpers/useDraggable.js +103 -0
- package/widget/multimodal_v2/components/helpers/useTextOverflow.js +44 -0
- package/widget/multimodal_v2/components/lightbox_gather/index.js +741 -0
- package/widget/multimodal_v2/components/meetings/ArtifactEntryPoint.js +252 -0
- package/widget/multimodal_v2/components/meetings/MeetingAdditionalAttendees.js +325 -0
- package/widget/multimodal_v2/components/meetings/MeetingBookerEntry.js +100 -0
- package/widget/multimodal_v2/components/meetings/MeetingDetailsCard.js +99 -0
- package/widget/multimodal_v2/components/meetings/MeetingErrorBanner.js +62 -0
- package/widget/multimodal_v2/components/meetings/MeetingOfferEmailStep.js +239 -0
- package/widget/multimodal_v2/components/meetings/MeetingOfferFooter.js +104 -0
- package/widget/multimodal_v2/components/meetings/MeetingOfferSelectionStep.js +60 -0
- package/widget/multimodal_v2/components/meetings/MeetingRepHeader.js +222 -0
- package/widget/multimodal_v2/components/meetings/MeetingStepShell.js +92 -0
- package/widget/multimodal_v2/components/meetings/MeetingSummaryRail.js +515 -0
- package/widget/multimodal_v2/components/meetings/MeetingTimeSelector.js +603 -0
- package/widget/multimodal_v2/components/meetings/MonthDatePicker.js +422 -0
- package/widget/multimodal_v2/components/meetings/NavigationButtons.js +76 -0
- package/widget/multimodal_v2/components/meetings/TimeSlotHeader.js +357 -0
- package/widget/multimodal_v2/components/meetings/WeekViewHeader.js +20 -0
- package/widget/multimodal_v2/components/meetings/constants.js +7 -0
- package/widget/multimodal_v2/components/meetings/index.js +47 -0
- package/widget/multimodal_v2/components/meetings/utils.js +328 -0
- package/widget/multimodal_v2/components/multimodal/Audio.js +28 -0
- package/widget/multimodal_v2/components/multimodal/Controls.js +188 -0
- package/widget/multimodal_v2/components/multimodal/LiveVideo.js +63 -0
- package/widget/multimodal_v2/components/multimodal/MultiModalComponent.js +424 -0
- package/widget/multimodal_v2/components/multimodal/MultimodalAvatar.js +36 -0
- package/widget/multimodal_v2/components/multimodal/OrbAvatar.js +326 -0
- package/widget/multimodal_v2/components/multimodal/Status.js +220 -0
- package/widget/multimodal_v2/components/multimodal/VideoAvatar.js +24 -0
- package/widget/multimodal_v2/components/multimodal/VideoPreview.js +114 -0
- package/widget/multimodal_v2/components/multimodal/useAudioLevelMonitoring.js +96 -0
- package/widget/multimodal_v2/components/multimodal/useMultimodal.js +434 -0
- package/widget/multimodal_v2/components/presentations/index.js +372 -0
- package/widget/multimodal_v2/components/shared/Avatar.js +92 -0
- package/widget/multimodal_v2/components/shared/AvatarGroup.js +135 -0
- package/widget/multimodal_v2/components/shared/Button.js +245 -0
- package/widget/multimodal_v2/components/shared/ButtonGroup.js +133 -0
- package/widget/multimodal_v2/components/shared/ComposerForm.js +98 -0
- package/widget/multimodal_v2/components/shared/SpeakingIndicator.js +239 -0
- package/widget/multimodal_v2/components/shared/ThinkingAnimation.js +165 -0
- package/widget/multimodal_v2/components/shared/Tooltip.js +266 -0
- package/widget/multimodal_v2/components/shared/controls/Dropdown.js +79 -0
- package/widget/multimodal_v2/components/shared/controls/PillToggle.js +142 -0
- package/widget/multimodal_v2/components/shared/controls/TextArea.js +114 -0
- package/widget/multimodal_v2/components/shared/toolCallLabels.js +12 -0
- package/widget/multimodal_v2/components/slides/SlidesThumbnail.js +47 -0
- package/widget/multimodal_v2/components/slides/index.js +61 -0
- package/widget/multimodal_v2/constants.js +88 -0
- package/widget/multimodal_v2/host.split-css.js +2 -0
- package/widget/multimodal_v2/host.string.js +96 -0
- package/widget/multimodal_v2/images/icons.js +582 -0
- package/widget/multimodal_v2/images/posters/piper_low_res.jpg +0 -0
- package/widget/multimodal_v2/index.js +23 -0
- package/widget/multimodal_v2/index.panda.js +28 -0
- package/widget/multimodal_v2/index.split-css.panda.js +2 -0
- package/widget/multimodal_v2/inline_meeting_booker.js +182 -0
- package/widget/multimodal_v2/locales/cs.js +196 -0
- package/widget/multimodal_v2/locales/da.js +196 -0
- package/widget/multimodal_v2/locales/de.js +196 -0
- package/widget/multimodal_v2/locales/en.js +196 -0
- package/widget/multimodal_v2/locales/en_AU.js +197 -0
- package/widget/multimodal_v2/locales/en_GB.js +197 -0
- package/widget/multimodal_v2/locales/es.js +197 -0
- package/widget/multimodal_v2/locales/es_LA.js +196 -0
- package/widget/multimodal_v2/locales/fi.js +196 -0
- package/widget/multimodal_v2/locales/fr.js +197 -0
- package/widget/multimodal_v2/locales/fr_CA.js +196 -0
- package/widget/multimodal_v2/locales/id.js +196 -0
- package/widget/multimodal_v2/locales/index.js +48 -0
- package/widget/multimodal_v2/locales/it.js +196 -0
- package/widget/multimodal_v2/locales/ja.js +196 -0
- package/widget/multimodal_v2/locales/ko.js +196 -0
- package/widget/multimodal_v2/locales/nb.js +196 -0
- package/widget/multimodal_v2/locales/nl.js +196 -0
- package/widget/multimodal_v2/locales/pl.js +196 -0
- package/widget/multimodal_v2/locales/pt_BR.js +196 -0
- package/widget/multimodal_v2/locales/ru.js +196 -0
- package/widget/multimodal_v2/locales/sv.js +196 -0
- package/widget/multimodal_v2/locales/th.js +196 -0
- package/widget/multimodal_v2/locales/tr.js +196 -0
- package/widget/multimodal_v2/locales/vi.js +196 -0
- package/widget/multimodal_v2/locales/zh_CN.js +196 -0
- package/widget/multimodal_v2/locales/zh_TW.js +196 -0
- package/widget/multimodal_v2/multimodal.js +633 -0
- package/widget/multimodal_v2/multimodal_channel.js +195 -0
- package/widget/multimodal_v2/signals/active_conversation_signal.js +33 -0
- package/widget/multimodal_v2/signals/allowed_conversation_mode_signal.js +38 -0
- package/widget/multimodal_v2/signals/artifact_signal.js +22 -0
- package/widget/multimodal_v2/signals/layout_signal.js +98 -0
- package/widget/multimodal_v2/signals/messages_signal.js +207 -0
- package/widget/multimodal_v2/signals/ui_state_signal.js +128 -0
- package/widget/multimodal_v2/stable_bundle_src.js +44 -0
- package/widget/multimodal_v2/stores/ai_conversation_store.js +221 -0
- package/widget/multimodal_v2/stores/artifact_store.js +205 -0
- package/widget/multimodal_v2/stores/base_store.js +16 -0
- package/widget/multimodal_v2/stores/call_store.js +770 -0
- package/widget/multimodal_v2/stores/call_ui_adapter.js +225 -0
- package/widget/multimodal_v2/stores/debug_multimodal_scenario_store.js +471 -0
- package/widget/multimodal_v2/stores/decks_store.js +285 -0
- package/widget/multimodal_v2/stores/device_store.js +63 -0
- package/widget/multimodal_v2/stores/docking_store.js +62 -0
- package/widget/multimodal_v2/stores/field_request_store.js +326 -0
- package/widget/multimodal_v2/stores/meeting_store.js +477 -0
- package/widget/multimodal_v2/stores/participant_store.js +73 -0
- package/widget/multimodal_v2/stores/post_call_survey_store.js +160 -0
- package/widget/multimodal_v2/stores/pounce_tracking_store.js +163 -0
- package/widget/multimodal_v2/stores/pounce_tracking_store_v2.js +511 -0
- package/widget/multimodal_v2/stores/presentations_store.js +111 -0
- package/widget/multimodal_v2/stores/root_store.js +1919 -0
- package/widget/multimodal_v2/stores/screen_share_store.js +217 -0
- package/widget/multimodal_v2/stores/slides_store.js +21 -0
- package/widget/multimodal_v2/stores/translation_store.js +185 -0
- package/widget/multimodal_v2/stores/ui_store.js +496 -0
- package/widget/multimodal_v2/stores/waiting_store.js +159 -0
- package/widget/multimodal_v2/stores/website_navigation_store.js +767 -0
- package/widget/multimodal_v2/styled-system/css/conditions.js +34 -0
- package/widget/multimodal_v2/styled-system/css/css.js +48 -0
- package/widget/multimodal_v2/styled-system/css/cva.js +96 -0
- package/widget/multimodal_v2/styled-system/css/cx.js +13 -0
- package/widget/multimodal_v2/styled-system/css/index.js +15 -0
- package/widget/multimodal_v2/styled-system/css/sva.js +69 -0
- package/widget/multimodal_v2/styled-system/helpers.js +384 -0
- package/widget/multimodal_v2/styled-system/jsx/create-style-context.js +96 -0
- package/widget/multimodal_v2/styled-system/jsx/factory-helper.js +19 -0
- package/widget/multimodal_v2/styled-system/jsx/factory.js +111 -0
- package/widget/multimodal_v2/styled-system/jsx/index.js +12 -0
- package/widget/multimodal_v2/styled-system/jsx/is-valid-prop.js +22 -0
- package/widget/multimodal_v2/types.js +105 -0
- package/widget/multimodal_v2/utils/auto_scroller.js +157 -0
- package/widget/multimodal_v2/utils/flip_animation.js +124 -0
- package/widget/multimodal_v2/utils/focus_gate.js +237 -0
- package/widget/multimodal_v2/utils/locale.js +16 -0
- package/widget/multimodal_v2/utils/media_queries.js +30 -0
- package/widget/multimodal_v2/utils/multimodal_cache.js +19 -0
- package/widget/multimodal_v2/utils/mutation_effect.js +14 -0
- package/widget/multimodal_v2/utils/navigation_interceptor.js +205 -0
- package/widget/multimodal_v2/utils/navigation_strategies/dom_swap.js +393 -0
- package/widget/multimodal_v2/utils/navigation_strategies/index.js +12 -0
- package/widget/multimodal_v2/utils/navigation_strategies/lwr.js +61 -0
- package/widget/multimodal_v2/utils/navigation_strategies/navigation_utils.js +46 -0
- package/widget/multimodal_v2/utils/navigation_strategies/next_js.js +24 -0
- package/widget/multimodal_v2/utils/navigation_strategies/wouter_v3.js +15 -0
- package/widget/multimodal_v2/utils/objects_map.js +38 -0
- package/widget/multimodal_v2/utils/perceived_voice_turn_tracker.js +345 -0
- package/widget/multimodal_v2/utils/sanitize_html.js +132 -0
- package/widget/multimodal_v2/utils/signals.js +97 -0
- package/widget/multimodal_v2/utils/slide_zoom.js +114 -0
- package/widget/multimodal_v2/utils/theme_styles.js +137 -0
- package/widget/multimodal_v2/utils/url_observer.js +52 -0
- package/widget/multimodal_v2/utils/voice_onset_detector.js +127 -0
- package/widget/page_mirror.js +89 -0
- package/widget/page_view_activity_emitter.js +71 -0
- package/widget/pardot_visitor.js +137 -0
- package/widget/personalization_observer.js +96 -0
- package/widget/personalizations_config.js +160 -0
- package/widget/qualified_form/constants.js +23 -0
- package/widget/qualified_form/phone_utils.js +38 -0
- package/widget/qualified_form/qualified_form_action.js +91 -0
- package/widget/qualified_form/qualified_form_action_orchestrator.js +21 -0
- package/widget/qualified_form/qualified_form_api.js +471 -0
- package/widget/scroll_disabler.js +109 -0
- package/widget/server-logger.js +156 -0
- package/widget/smart_website_config.js +112 -0
- package/widget/telemetry/context.js +75 -0
- package/widget/telemetry/index.js +16 -0
- package/widget/telemetry/messenger_uptime.js +80 -0
- package/widget/telemetry/metrics.js +120 -0
- package/widget/telemetry/span.js +82 -0
- package/widget/telemetry/telemetry.js +180 -0
- package/widget/telemetry/tracer.js +41 -0
- package/widget/telemetry/tracing_store.js +310 -0
- package/widget/tracker.js +916 -0
- package/widget/utils/native_globals.js +129 -0
- package/widget/v1_adapter.js +50 -0
- package/widget/v2_adapter.js +368 -0
- package/widget/visitor/base_visitor_state.js +11 -0
- package/widget/visitor/cookie_visitor_state.js +128 -0
- package/widget/visitor/in_memory_visitor_state.js +29 -0
- package/widget/visitor/visitor_state.js +384 -0
- package/widget/visitor.js +356 -0
- package/widget/widget/linked_widget_v2.js +227 -0
- package/widget/widget/page_mirror_factory.js +22 -0
- package/widget/widget/sentry.js +130 -0
- package/widget/widget/widget.js +1698 -0
- package/widget/widget.split-css.js +2 -0
- package/widget/widget_bootstrap.js +97 -0
- 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 };
|