@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,252 @@
|
|
|
1
|
+
import { jsxRuntime_module_u } from "../../../../js/multimodal_v2.js";
|
|
2
|
+
import { CrossIcon } from "../../images/icons.js";
|
|
3
|
+
import "../../styled-system/jsx/index.js";
|
|
4
|
+
import { lightboxCardStyle, lightboxMeetingLayoutStyle, lightboxMeetingCalendarStyle } from "../app/LightboxExperience.js";
|
|
5
|
+
import { Button } from "../shared/Button.js";
|
|
6
|
+
import { MeetingSummaryRail } from "./MeetingSummaryRail.js";
|
|
7
|
+
import { default as meetings } from "./index.js";
|
|
8
|
+
import { styled } from "../../styled-system/jsx/factory.js";
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
/** @jsxImportSource preact */
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The meeting booker as an artifact: the booker's only surface in the messenger,
|
|
19
|
+
* on the white content card and two-column layout the element-conversation overlay
|
|
20
|
+
* uses. The card and the layout's shape are imported from LightboxExperience
|
|
21
|
+
* rather than re-declared, so the two surfaces cannot drift apart on the things
|
|
22
|
+
* they agree about.
|
|
23
|
+
*
|
|
24
|
+
* What they no longer agree about is the left column. The lightbox floats a block
|
|
25
|
+
* of meeting info in a wide overlay; this card is a booking dialog in a panel, so
|
|
26
|
+
* the column is a full-height rail with a border down it (MeetingSummaryRail) and
|
|
27
|
+
* the layout runs edge to edge to let it reach the card's sides.
|
|
28
|
+
*
|
|
29
|
+
* What the lightbox chrome cannot express is how much room this surface has. It
|
|
30
|
+
* sizes against the viewport, while the artifact panel is only a slice of the
|
|
31
|
+
* viewport — `calc(100% - messenger width)` wide in DOCKED/SIDEBAR, and a fraction
|
|
32
|
+
* of it tall on mobile. Each imported class is therefore passed to a local styled
|
|
33
|
+
* component that re-sizes it against the panel instead; see Panel below.
|
|
34
|
+
*
|
|
35
|
+
* One card serves every width. Where the panel is too narrow to stand two columns up
|
|
36
|
+
* the container queries below lay that column down across the top of the card and the
|
|
37
|
+
* card scrolls inside the panel, so the narrow treatment is this same card restyled
|
|
38
|
+
* rather than a second component. What the column puts in the space it is given is its
|
|
39
|
+
* own business, and on a phone that is something else entirely — see
|
|
40
|
+
* MeetingSummaryRail.
|
|
41
|
+
*
|
|
42
|
+
* The X below is therefore the only one the booker has, on every viewport — which
|
|
43
|
+
* is why the shared Artifact frame stands its own down for meetings entirely (see
|
|
44
|
+
* Artifact.tsx), leaving the visitor exactly one. Cancel in the step footer and
|
|
45
|
+
* Escape are the others.
|
|
46
|
+
*/ const ArtifactEntryPoint = (param)=>{
|
|
47
|
+
let { rootStore } = param;
|
|
48
|
+
const message = rootStore.artifact.message.value;
|
|
49
|
+
if ((message == null ? void 0 : message.type) !== "calendar_event_offer") return null;
|
|
50
|
+
const { t } = rootStore.translationStore;
|
|
51
|
+
const meetingStore = rootStore.meetingStore.value;
|
|
52
|
+
return /*#__PURE__*/ jsxRuntime_module_u(Panel, {
|
|
53
|
+
"data-component-name": "ArtifactEntryPoint.Panel",
|
|
54
|
+
children: /*#__PURE__*/ jsxRuntime_module_u(CardFrame, {
|
|
55
|
+
"data-component-name": "ArtifactEntryPoint.CardFrame",
|
|
56
|
+
children: [
|
|
57
|
+
/*#__PURE__*/ jsxRuntime_module_u(Button, {
|
|
58
|
+
variant: "tertiary",
|
|
59
|
+
size: "sm",
|
|
60
|
+
iconOnly: true,
|
|
61
|
+
onClick: ()=>rootStore.clearArtifact(),
|
|
62
|
+
"aria-label": t("meetings.closeMeetingBooker"),
|
|
63
|
+
css: {
|
|
64
|
+
position: "absolute",
|
|
65
|
+
top: "[20px]",
|
|
66
|
+
right: "[20px]",
|
|
67
|
+
zIndex: "[1]"
|
|
68
|
+
},
|
|
69
|
+
children: /*#__PURE__*/ jsxRuntime_module_u(CrossIcon, {})
|
|
70
|
+
}),
|
|
71
|
+
/*#__PURE__*/ jsxRuntime_module_u(Card, {
|
|
72
|
+
className: lightboxCardStyle,
|
|
73
|
+
"data-component-name": "ArtifactEntryPoint.Card",
|
|
74
|
+
children: /*#__PURE__*/ jsxRuntime_module_u(MeetingLayout, {
|
|
75
|
+
className: lightboxMeetingLayoutStyle,
|
|
76
|
+
"data-component-name": "ArtifactEntryPoint.MeetingLayout",
|
|
77
|
+
children: [
|
|
78
|
+
meetingStore && /*#__PURE__*/ jsxRuntime_module_u(MeetingSummaryRail, {
|
|
79
|
+
offer: message,
|
|
80
|
+
meetingStore: meetingStore,
|
|
81
|
+
t: t
|
|
82
|
+
}),
|
|
83
|
+
/*#__PURE__*/ jsxRuntime_module_u(Column, {
|
|
84
|
+
className: lightboxMeetingCalendarStyle,
|
|
85
|
+
"data-component-name": "ArtifactEntryPoint.MeetingCalendar",
|
|
86
|
+
children: /*#__PURE__*/ jsxRuntime_module_u(meetings, {
|
|
87
|
+
rootStore: rootStore,
|
|
88
|
+
context: "artifact"
|
|
89
|
+
})
|
|
90
|
+
})
|
|
91
|
+
]
|
|
92
|
+
})
|
|
93
|
+
})
|
|
94
|
+
]
|
|
95
|
+
})
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* Positioning context for the close button, sized to hug the card it wraps so the
|
|
100
|
+
* button lands on the card's corner rather than the panel's. Owns the 860px cap for
|
|
101
|
+
* both: Card fills this, so the two share a right edge at every panel width.
|
|
102
|
+
*/ const CardFrame = styled("div", {
|
|
103
|
+
base: {
|
|
104
|
+
position: "relative",
|
|
105
|
+
display: "flex",
|
|
106
|
+
flexDirection: "column",
|
|
107
|
+
width: "[min(860px,100%)]",
|
|
108
|
+
maxHeight: "[100%]",
|
|
109
|
+
minHeight: "[0]"
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
CardFrame.displayName = "CardFrame";
|
|
113
|
+
/**
|
|
114
|
+
* Registers the `bookerPanel` container the styles below query, and centres the
|
|
115
|
+
* card in the panel the way the Artifact frame centres its other bodies.
|
|
116
|
+
*
|
|
117
|
+
* Container queries rather than viewport media queries because panel width is what
|
|
118
|
+
* actually varies here: a 1024px window with the messenger open leaves the panel
|
|
119
|
+
* under 600px wide, which the 860px two-column desktop layout overflows even
|
|
120
|
+
* though the viewport is nowhere near the `_mobile` breakpoint. Containment is
|
|
121
|
+
* scoped to this wrapper rather than put on the Artifact frame so the slide,
|
|
122
|
+
* presentation and deck bodies are unaffected by it.
|
|
123
|
+
*
|
|
124
|
+
* `minHeight: 0` lets the panel shrink to the frame, giving the card's
|
|
125
|
+
* `maxHeight: 100%` a definite height to resolve against.
|
|
126
|
+
*/ const Panel = styled("div", {
|
|
127
|
+
base: {
|
|
128
|
+
containerType: "inline-size",
|
|
129
|
+
containerName: "bookerPanel",
|
|
130
|
+
display: "flex",
|
|
131
|
+
alignItems: "center",
|
|
132
|
+
justifyContent: "center",
|
|
133
|
+
width: "[100%]",
|
|
134
|
+
height: "[100%]",
|
|
135
|
+
minHeight: "[0]"
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
Panel.displayName = "Panel";
|
|
139
|
+
/**
|
|
140
|
+
* Each of the two styled components below takes its appearance from the
|
|
141
|
+
* LightboxExperience class handed to it in `className` and contributes only the
|
|
142
|
+
* panel-relative sizing.
|
|
143
|
+
*
|
|
144
|
+
* Declarations that override the imported class sit under `&&`, which Panda
|
|
145
|
+
* compiles to a doubled class selector. Class names alone would not settle it:
|
|
146
|
+
* Panda's `styled` concatenates `className` onto its own classes without merging
|
|
147
|
+
* them, so an override of equal specificity would be decided by stylesheet source
|
|
148
|
+
* order. The container-query breakpoints are spelled out at each use because Panda
|
|
149
|
+
* extracts styles statically — a shared `const` used as a key produces no CSS.
|
|
150
|
+
*
|
|
151
|
+
* 720px is where the two columns (a 264px rail and a calendar that wants ~380px
|
|
152
|
+
* plus its gutters) stop fitting side by side. MeetingTimeSelector queries the same
|
|
153
|
+
* container at 480px for the calendar's own density, and MeetingSummaryRail queries
|
|
154
|
+
* it at 720px to turn itself into a band.
|
|
155
|
+
*/ const Card = styled("div", {
|
|
156
|
+
base: {
|
|
157
|
+
// The lightbox asks for 860px and falls back to 96vw; here the panel is the
|
|
158
|
+
// constraint, and it can be far narrower than the viewport. CardFrame already
|
|
159
|
+
// caps that at 860px, so filling it is what keeps the two edge-to-edge — and
|
|
160
|
+
// with them the close button, which is pinned to the frame but has to land on
|
|
161
|
+
// the card. Repeating the cap here instead would leave the button's alignment
|
|
162
|
+
// resting on two declarations that nothing forces to agree.
|
|
163
|
+
width: "[100%]",
|
|
164
|
+
"&&": {
|
|
165
|
+
// Bounded by the panel rather than the viewport, and allowed to shrink below
|
|
166
|
+
// its content height so the shared card's `overflowY: auto` scrolls the
|
|
167
|
+
// booker inside the card instead of letting it spill out of a short panel.
|
|
168
|
+
maxHeight: "[100%]",
|
|
169
|
+
minHeight: "[0]",
|
|
170
|
+
// Rounder and lifted higher than the lightbox card this borrows from. The
|
|
171
|
+
// lightbox floats over a dimmed viewport, which does the separating for it;
|
|
172
|
+
// the panel sits against live page content, so the card has to say where its
|
|
173
|
+
// own edge is. The rail's 12px top-left corner is cut from this radius.
|
|
174
|
+
borderRadius: "[12px]",
|
|
175
|
+
boxShadow: "[0 24px 48px -12px rgba(0, 0, 0, 0.28), 0 2px 8px rgba(0, 0, 0, 0.06)]"
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
Card.displayName = "Card";
|
|
180
|
+
const MeetingLayout = styled("div", {
|
|
181
|
+
base: {
|
|
182
|
+
"&&": {
|
|
183
|
+
// The shared class aligns its columns to `flex-start`, so each is as tall as
|
|
184
|
+
// its own content. That leaves the step with no height to lay itself out
|
|
185
|
+
// against, and a step whose footer is supposed to sit on the card's bottom
|
|
186
|
+
// edge needs one. Stretching the columns hands the step the layout's full
|
|
187
|
+
// height: the shared 500px min-height at panel widths above the breakpoint
|
|
188
|
+
// below, and the stacked layout's content height under it.
|
|
189
|
+
alignItems: "stretch",
|
|
190
|
+
// Edge to edge. The shared class insets its columns by 40px/48px, which suits
|
|
191
|
+
// a block of meeting info floating in a wide overlay; here the left column is
|
|
192
|
+
// a rail with a border down it and the right one a dialog with a bar across
|
|
193
|
+
// its foot, and both have to reach the card's edges to read as panes. Their
|
|
194
|
+
// own padding replaces this.
|
|
195
|
+
padding: "[0]",
|
|
196
|
+
gap: "[0]",
|
|
197
|
+
// The stacked treatment the shared layout applies at `_mobile`, driven by the
|
|
198
|
+
// panel running out of room rather than the viewport doing so.
|
|
199
|
+
//
|
|
200
|
+
// The floor is restated rather than dropped, for the same reason the shared
|
|
201
|
+
// 500px exists: a height that clears the taller step is what stops the card
|
|
202
|
+
// resizing when the visitor moves between them. It takes a different number
|
|
203
|
+
// here because stacking changes the arithmetic -- side by side the rail and the
|
|
204
|
+
// step overlap, so the layout is as tall as the taller of the two, while
|
|
205
|
+
// stacked the rail is a band above the step and the two heights add up.
|
|
206
|
+
"@container bookerPanel (max-width: 720px)": {
|
|
207
|
+
flexDirection: "column",
|
|
208
|
+
alignItems: "stretch",
|
|
209
|
+
minHeight: "[640px]",
|
|
210
|
+
// Except on a phone, where the panel is a fraction of the viewport tall and
|
|
211
|
+
// 640px does not fit in it however the card is packed. The card scrolls
|
|
212
|
+
// there whatever this says, so a floor taller than the panel buys no
|
|
213
|
+
// stability between steps and only guarantees a scrollbar on the shorter of
|
|
214
|
+
// the two. Sizing to content lets the select step fit outright.
|
|
215
|
+
_mobile: {
|
|
216
|
+
minHeight: "[auto]"
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
MeetingLayout.displayName = "MeetingLayout";
|
|
223
|
+
/**
|
|
224
|
+
* The step's column. The shared class gives it `flex: 1`, which in the stacked layout
|
|
225
|
+
* grows it down the card and so hands it the slack the floor above creates. What the
|
|
226
|
+
* class cannot say is that the step inside should take that height rather than sit at
|
|
227
|
+
* the top of it: the step is `height: 100%` and needs a flex column with a definite
|
|
228
|
+
* height to resolve against, or it measures its content instead and leaves the footer
|
|
229
|
+
* bar wherever the calendar happens to end.
|
|
230
|
+
*/ const Column = styled("div", {
|
|
231
|
+
base: {
|
|
232
|
+
"&&": {
|
|
233
|
+
"@container bookerPanel (max-width: 720px)": {
|
|
234
|
+
display: "flex",
|
|
235
|
+
flexDirection: "column",
|
|
236
|
+
minHeight: "[0]",
|
|
237
|
+
// The step grows to fill rather than measuring its content. `flex` rather than
|
|
238
|
+
// the step's own `height: 100%`, which resolves against a parent height this
|
|
239
|
+
// column only has once it has grown -- late enough that the step has already
|
|
240
|
+
// sized itself and left the footer bar under the fields.
|
|
241
|
+
"& > *": {
|
|
242
|
+
flex: "[1]",
|
|
243
|
+
minHeight: "[0]"
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
Column.displayName = "Column";
|
|
250
|
+
/* export default */ const meetings_ArtifactEntryPoint = (ArtifactEntryPoint);
|
|
251
|
+
|
|
252
|
+
export default meetings_ArtifactEntryPoint;
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
import { jsxRuntime_module_u, signals_module_useSignal } from "../../../../js/multimodal_v2.js";
|
|
2
|
+
import { ChevronDownIcon, CrossIcon } from "../../images/icons.js";
|
|
3
|
+
import "../../styled-system/jsx/index.js";
|
|
4
|
+
import { styled } from "../../styled-system/jsx/factory.js";
|
|
5
|
+
|
|
6
|
+
/** @jsxImportSource preact */
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
const MeetingAdditionalAttendees = (props)=>{
|
|
11
|
+
const { state, handlers, t } = useMeetingAdditionalAttendees(props);
|
|
12
|
+
return /*#__PURE__*/ jsxRuntime_module_u(Container, {
|
|
13
|
+
"data-component-name": "MeetingAdditionalAttendees.Container",
|
|
14
|
+
children: [
|
|
15
|
+
/*#__PURE__*/ jsxRuntime_module_u(ToggleButton, {
|
|
16
|
+
"data-component-name": "MeetingAdditionalAttendees.ToggleButton",
|
|
17
|
+
type: "button",
|
|
18
|
+
onClick: handlers.handleToggle,
|
|
19
|
+
"aria-expanded": state.isExpanded,
|
|
20
|
+
"aria-controls": "additional-attendees-input",
|
|
21
|
+
children: [
|
|
22
|
+
/*#__PURE__*/ jsxRuntime_module_u(ToggleText, {
|
|
23
|
+
"data-component-name": "MeetingAdditionalAttendees.ToggleText",
|
|
24
|
+
children: t("meetings.inviteMoreAttendees")
|
|
25
|
+
}),
|
|
26
|
+
/*#__PURE__*/ jsxRuntime_module_u(ToggleIcon, {
|
|
27
|
+
"data-component-name": "MeetingAdditionalAttendees.ToggleIcon",
|
|
28
|
+
rotated: state.isExpanded,
|
|
29
|
+
children: /*#__PURE__*/ jsxRuntime_module_u(ChevronDownIcon, {})
|
|
30
|
+
})
|
|
31
|
+
]
|
|
32
|
+
}),
|
|
33
|
+
/*#__PURE__*/ jsxRuntime_module_u(CollapsibleContent, {
|
|
34
|
+
"data-component-name": "MeetingAdditionalAttendees.CollapsibleContent",
|
|
35
|
+
id: "additional-attendees-input",
|
|
36
|
+
expanded: state.isExpanded,
|
|
37
|
+
children: [
|
|
38
|
+
/*#__PURE__*/ jsxRuntime_module_u(InputContainer, {
|
|
39
|
+
"data-component-name": "MeetingAdditionalAttendees.InputContainer",
|
|
40
|
+
hasError: !!state.error,
|
|
41
|
+
children: [
|
|
42
|
+
/*#__PURE__*/ jsxRuntime_module_u(ChipsContainer, {
|
|
43
|
+
"data-component-name": "MeetingAdditionalAttendees.ChipsContainer",
|
|
44
|
+
children: state.attendees.map((email)=>/*#__PURE__*/ jsxRuntime_module_u(Chip, {
|
|
45
|
+
"data-component-name": "MeetingAdditionalAttendees.Chip",
|
|
46
|
+
children: [
|
|
47
|
+
/*#__PURE__*/ jsxRuntime_module_u(ChipText, {
|
|
48
|
+
"data-component-name": "MeetingAdditionalAttendees.ChipText",
|
|
49
|
+
children: email
|
|
50
|
+
}),
|
|
51
|
+
/*#__PURE__*/ jsxRuntime_module_u(ChipRemoveButton, {
|
|
52
|
+
"data-component-name": "MeetingAdditionalAttendees.ChipRemoveButton",
|
|
53
|
+
type: "button",
|
|
54
|
+
onClick: ()=>handlers.handleRemoveEmail(email),
|
|
55
|
+
"aria-label": t("meetings.removeEmail", {
|
|
56
|
+
email
|
|
57
|
+
}),
|
|
58
|
+
children: /*#__PURE__*/ jsxRuntime_module_u(CrossIcon, {})
|
|
59
|
+
})
|
|
60
|
+
]
|
|
61
|
+
}, email))
|
|
62
|
+
}),
|
|
63
|
+
/*#__PURE__*/ jsxRuntime_module_u(EmailInput, {
|
|
64
|
+
"data-component-name": "MeetingAdditionalAttendees.EmailInput",
|
|
65
|
+
type: "email",
|
|
66
|
+
value: state.inputValue.value,
|
|
67
|
+
onInput: handlers.handleInputChange,
|
|
68
|
+
onKeyDown: handlers.handleKeyDown,
|
|
69
|
+
onBlur: handlers.handleBlur,
|
|
70
|
+
placeholder: t("meetings.enterAttendeeEmails"),
|
|
71
|
+
"aria-label": t("meetings.additionalAttendeeEmail"),
|
|
72
|
+
"aria-invalid": !!state.error
|
|
73
|
+
})
|
|
74
|
+
]
|
|
75
|
+
}),
|
|
76
|
+
state.error && /*#__PURE__*/ jsxRuntime_module_u(ErrorMessage, {
|
|
77
|
+
"data-component-name": "MeetingAdditionalAttendees.ErrorMessage",
|
|
78
|
+
role: "alert",
|
|
79
|
+
children: state.error
|
|
80
|
+
})
|
|
81
|
+
]
|
|
82
|
+
})
|
|
83
|
+
]
|
|
84
|
+
});
|
|
85
|
+
};
|
|
86
|
+
function useMeetingAdditionalAttendees(param) {
|
|
87
|
+
let { meetingStore, t } = param;
|
|
88
|
+
// Local state
|
|
89
|
+
const inputValue = signals_module_useSignal("");
|
|
90
|
+
// Derived state from store
|
|
91
|
+
const isExpanded = meetingStore.showAdditionalAttendeesInput.value;
|
|
92
|
+
const attendees = meetingStore.additionalAttendees.value;
|
|
93
|
+
const error = meetingStore.additionalAttendeesError.value;
|
|
94
|
+
// Handlers
|
|
95
|
+
const handleToggle = ()=>{
|
|
96
|
+
meetingStore.toggleAdditionalAttendeesInput();
|
|
97
|
+
};
|
|
98
|
+
const handleInputChange = (e)=>{
|
|
99
|
+
inputValue.value = e.currentTarget.value;
|
|
100
|
+
meetingStore.clearAdditionalAttendeesError();
|
|
101
|
+
};
|
|
102
|
+
const handleAddEmail = ()=>{
|
|
103
|
+
const email = inputValue.value.trim();
|
|
104
|
+
if (email && meetingStore.addAttendeeEmail(email)) {
|
|
105
|
+
inputValue.value = "";
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
const handleKeyDown = (e)=>{
|
|
109
|
+
if (e.key === "Enter" || e.key === "," || e.key === " ") {
|
|
110
|
+
// Prevent default behavior to avoid form submission or inserting literal space
|
|
111
|
+
e.preventDefault();
|
|
112
|
+
handleAddEmail();
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
const handleRemoveEmail = (email)=>{
|
|
116
|
+
meetingStore.removeAttendeeEmail(email);
|
|
117
|
+
};
|
|
118
|
+
const handleBlur = ()=>{
|
|
119
|
+
handleAddEmail();
|
|
120
|
+
};
|
|
121
|
+
return {
|
|
122
|
+
state: {
|
|
123
|
+
inputValue,
|
|
124
|
+
isExpanded,
|
|
125
|
+
attendees,
|
|
126
|
+
error
|
|
127
|
+
},
|
|
128
|
+
handlers: {
|
|
129
|
+
handleToggle,
|
|
130
|
+
handleInputChange,
|
|
131
|
+
handleKeyDown,
|
|
132
|
+
handleRemoveEmail,
|
|
133
|
+
handleBlur
|
|
134
|
+
},
|
|
135
|
+
t
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
const Container = styled("div", {
|
|
139
|
+
base: {
|
|
140
|
+
display: "flex",
|
|
141
|
+
flexDirection: "column",
|
|
142
|
+
width: "[100%]",
|
|
143
|
+
gap: "$sm"
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
Container.displayName = "Container";
|
|
147
|
+
const ToggleButton = styled("button", {
|
|
148
|
+
base: {
|
|
149
|
+
display: "flex",
|
|
150
|
+
alignItems: "center",
|
|
151
|
+
gap: "$xs",
|
|
152
|
+
padding: "$none",
|
|
153
|
+
border: "none",
|
|
154
|
+
background: "$transparent",
|
|
155
|
+
cursor: "pointer",
|
|
156
|
+
color: "$text.secondary",
|
|
157
|
+
fontFamily: "$inter",
|
|
158
|
+
fontSize: "12px",
|
|
159
|
+
fontWeight: "$medium",
|
|
160
|
+
lineHeight: "18px",
|
|
161
|
+
"&:hover": {
|
|
162
|
+
color: "$text.dark"
|
|
163
|
+
},
|
|
164
|
+
"&:focus": {
|
|
165
|
+
outline: "none",
|
|
166
|
+
color: "$text.dark"
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
ToggleButton.displayName = "ToggleButton";
|
|
171
|
+
const ToggleIcon = styled("span", {
|
|
172
|
+
base: {
|
|
173
|
+
display: "flex",
|
|
174
|
+
alignItems: "center",
|
|
175
|
+
justifyContent: "center",
|
|
176
|
+
transition: "transform 0.2s ease"
|
|
177
|
+
},
|
|
178
|
+
variants: {
|
|
179
|
+
rotated: {
|
|
180
|
+
true: {
|
|
181
|
+
transform: "rotate(180deg)"
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
ToggleIcon.displayName = "ToggleIcon";
|
|
187
|
+
const ToggleText = styled("span", {
|
|
188
|
+
base: {}
|
|
189
|
+
});
|
|
190
|
+
ToggleText.displayName = "ToggleText";
|
|
191
|
+
const CollapsibleContent = styled("div", {
|
|
192
|
+
base: {
|
|
193
|
+
display: "none",
|
|
194
|
+
flexDirection: "column",
|
|
195
|
+
gap: "$xs",
|
|
196
|
+
overflow: "hidden",
|
|
197
|
+
transition: "all 0.2s ease"
|
|
198
|
+
},
|
|
199
|
+
variants: {
|
|
200
|
+
expanded: {
|
|
201
|
+
true: {
|
|
202
|
+
display: "flex"
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
CollapsibleContent.displayName = "CollapsibleContent";
|
|
208
|
+
const InputContainer = styled("div", {
|
|
209
|
+
base: {
|
|
210
|
+
display: "flex",
|
|
211
|
+
flexWrap: "wrap",
|
|
212
|
+
alignItems: "center",
|
|
213
|
+
gap: "$xs",
|
|
214
|
+
paddingBlock: "$xs",
|
|
215
|
+
paddingInline: "$lg",
|
|
216
|
+
minHeight: "[40px]",
|
|
217
|
+
borderRadius: "[4px]",
|
|
218
|
+
backgroundColor: "$white.solid",
|
|
219
|
+
border: "[1px solid rgba(200, 206, 208, 0.93)]",
|
|
220
|
+
"&:focus-within": {
|
|
221
|
+
border: "[2px solid token(colors.$primary)]"
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
variants: {
|
|
225
|
+
hasError: {
|
|
226
|
+
true: {
|
|
227
|
+
border: "[1px solid #E4251B]",
|
|
228
|
+
"&:focus-within": {
|
|
229
|
+
border: "[2px solid #E4251B]"
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
InputContainer.displayName = "InputContainer";
|
|
236
|
+
const ChipsContainer = styled("div", {
|
|
237
|
+
base: {
|
|
238
|
+
display: "flex",
|
|
239
|
+
flexWrap: "wrap",
|
|
240
|
+
gap: "$xs"
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
ChipsContainer.displayName = "ChipsContainer";
|
|
244
|
+
const Chip = styled("span", {
|
|
245
|
+
base: {
|
|
246
|
+
display: "inline-flex",
|
|
247
|
+
alignItems: "center",
|
|
248
|
+
gap: "$2xs",
|
|
249
|
+
paddingBlock: "$2xs",
|
|
250
|
+
paddingInline: "$xs",
|
|
251
|
+
backgroundColor: "$gray",
|
|
252
|
+
borderRadius: "[4px]",
|
|
253
|
+
fontSize: "12px",
|
|
254
|
+
lineHeight: "18px",
|
|
255
|
+
color: "$text.dark"
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
Chip.displayName = "Chip";
|
|
259
|
+
const ChipText = styled("span", {
|
|
260
|
+
base: {
|
|
261
|
+
maxWidth: "[150px]",
|
|
262
|
+
overflow: "hidden",
|
|
263
|
+
textOverflow: "ellipsis",
|
|
264
|
+
whiteSpace: "nowrap"
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
ChipText.displayName = "ChipText";
|
|
268
|
+
const ChipRemoveButton = styled("button", {
|
|
269
|
+
base: {
|
|
270
|
+
display: "flex",
|
|
271
|
+
alignItems: "center",
|
|
272
|
+
justifyContent: "center",
|
|
273
|
+
width: "[14px]",
|
|
274
|
+
height: "[14px]",
|
|
275
|
+
padding: "$none",
|
|
276
|
+
border: "none",
|
|
277
|
+
background: "$transparent",
|
|
278
|
+
cursor: "pointer",
|
|
279
|
+
color: "$text.secondary",
|
|
280
|
+
borderRadius: "[2px]",
|
|
281
|
+
"& svg": {
|
|
282
|
+
width: "[12px]",
|
|
283
|
+
height: "[12px]"
|
|
284
|
+
},
|
|
285
|
+
"&:hover": {
|
|
286
|
+
color: "$text.dark",
|
|
287
|
+
backgroundColor: "[rgba(0, 0, 0, 0.08)]"
|
|
288
|
+
},
|
|
289
|
+
"&:focus": {
|
|
290
|
+
outline: "none",
|
|
291
|
+
backgroundColor: "[rgba(0, 0, 0, 0.08)]"
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
ChipRemoveButton.displayName = "ChipRemoveButton";
|
|
296
|
+
const EmailInput = styled("input", {
|
|
297
|
+
base: {
|
|
298
|
+
flex: 1,
|
|
299
|
+
minWidth: "[120px]",
|
|
300
|
+
paddingBlock: "$2xs",
|
|
301
|
+
paddingInline: "$none",
|
|
302
|
+
border: "none",
|
|
303
|
+
outline: "none",
|
|
304
|
+
backgroundColor: "$transparent",
|
|
305
|
+
fontSize: "14px",
|
|
306
|
+
lineHeight: "22px",
|
|
307
|
+
color: "$text.dark",
|
|
308
|
+
fontFamily: "$inter",
|
|
309
|
+
"&::placeholder": {
|
|
310
|
+
color: "$text.muted"
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
EmailInput.displayName = "EmailInput";
|
|
315
|
+
const ErrorMessage = styled("span", {
|
|
316
|
+
base: {
|
|
317
|
+
fontSize: "12px",
|
|
318
|
+
lineHeight: "18px",
|
|
319
|
+
color: "[#E4251B]",
|
|
320
|
+
fontWeight: "$normal"
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
ErrorMessage.displayName = "ErrorMessage";
|
|
324
|
+
|
|
325
|
+
export { MeetingAdditionalAttendees };
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { jsxRuntime_module_u } from "../../../../js/multimodal_v2.js";
|
|
2
|
+
import { CalendarResumeIcon } from "../../images/icons.js";
|
|
3
|
+
import "../../styled-system/jsx/index.js";
|
|
4
|
+
import { styled } from "../../styled-system/jsx/factory.js";
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
/** @jsxImportSource preact */
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* The meeting booker's presence in the chat timeline: a placeholder card that
|
|
11
|
+
* opens the booker in the artifact overlay, which is the only surface the booker
|
|
12
|
+
* has in the messenger.
|
|
13
|
+
*
|
|
14
|
+
* A fresh offer opens the overlay on arrival, so the visitor normally meets this
|
|
15
|
+
* card only on the way back — after closing a booker they were not finished with.
|
|
16
|
+
* Until then CalendarEventOfferRenderer withholds the slot entirely, both while
|
|
17
|
+
* the overlay is up and while it is on its way up; leaving this component to
|
|
18
|
+
* render nothing instead would still cost a gap in the transcript.
|
|
19
|
+
*/ const MeetingBookerEntry = (param)=>{
|
|
20
|
+
let { rootStore, message } = param;
|
|
21
|
+
const { t } = rootStore.translationStore;
|
|
22
|
+
const handleClick = ()=>{
|
|
23
|
+
void rootStore.toggleMeetingBookerArtifact(message);
|
|
24
|
+
};
|
|
25
|
+
return /*#__PURE__*/ jsxRuntime_module_u(CardButton, {
|
|
26
|
+
"data-component-name": "MeetingBookerEntry.CardButton",
|
|
27
|
+
onClick: handleClick,
|
|
28
|
+
"aria-label": t("meetings.bookMeeting"),
|
|
29
|
+
children: /*#__PURE__*/ jsxRuntime_module_u(PreviewContent, {
|
|
30
|
+
"data-component-name": "MeetingBookerEntry.PreviewContent",
|
|
31
|
+
children: [
|
|
32
|
+
/*#__PURE__*/ jsxRuntime_module_u(PreviewText, {
|
|
33
|
+
"data-component-name": "MeetingBookerEntry.PreviewText",
|
|
34
|
+
children: t("meetings.continueBooking")
|
|
35
|
+
}),
|
|
36
|
+
/*#__PURE__*/ jsxRuntime_module_u(IconWrapper, {
|
|
37
|
+
"data-component-name": "MeetingBookerEntry.IconWrapper",
|
|
38
|
+
children: /*#__PURE__*/ jsxRuntime_module_u(CalendarResumeIcon, {})
|
|
39
|
+
})
|
|
40
|
+
]
|
|
41
|
+
})
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
const PreviewContent = styled("span", {
|
|
45
|
+
base: {
|
|
46
|
+
display: "flex",
|
|
47
|
+
alignItems: "center",
|
|
48
|
+
justifyContent: "space-between",
|
|
49
|
+
width: "[100%]",
|
|
50
|
+
gap: "$sm"
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
PreviewContent.displayName = "PreviewContent";
|
|
54
|
+
const PreviewText = styled("span", {
|
|
55
|
+
base: {
|
|
56
|
+
fontSize: "14px",
|
|
57
|
+
lineHeight: "20px",
|
|
58
|
+
color: "$text.dark"
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
PreviewText.displayName = "PreviewText";
|
|
62
|
+
const IconWrapper = styled("span", {
|
|
63
|
+
base: {
|
|
64
|
+
display: "contents",
|
|
65
|
+
color: "$primary"
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
IconWrapper.displayName = "IconWrapper";
|
|
69
|
+
const CardButton = styled("button", {
|
|
70
|
+
base: {
|
|
71
|
+
display: "flex",
|
|
72
|
+
width: "[100%]",
|
|
73
|
+
paddingInline: "$md",
|
|
74
|
+
paddingBlock: "$lg",
|
|
75
|
+
borderRadius: "[8px]",
|
|
76
|
+
fontSize: "14px",
|
|
77
|
+
lineHeight: "22px",
|
|
78
|
+
backgroundColor: "$white.solid",
|
|
79
|
+
border: "none",
|
|
80
|
+
outline: "1px solid token(colors.$gray.border)",
|
|
81
|
+
outlineOffset: "-1px",
|
|
82
|
+
cursor: "pointer",
|
|
83
|
+
textAlign: "left",
|
|
84
|
+
transition: "box-shadow 0.2s ease, transform 0.2s ease",
|
|
85
|
+
"&:hover": {
|
|
86
|
+
boxShadow: "[0 4px 12px rgba(0, 0, 0, 0.1)]",
|
|
87
|
+
transform: "translateY(-2px)"
|
|
88
|
+
},
|
|
89
|
+
"&:focus": {
|
|
90
|
+
outline: "2px solid token(colors.$primary)",
|
|
91
|
+
outlineOffset: "-2px"
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
CardButton.displayName = "CardButton";
|
|
96
|
+
/* export default */ const meetings_MeetingBookerEntry = ((/* unused pure expression or super */ null && (MeetingBookerEntry)));
|
|
97
|
+
|
|
98
|
+
var MeetingBookerEntry_default = /* unused export */ undefined;
|
|
99
|
+
export { MeetingBookerEntry };
|
|
100
|
+
export default MeetingBookerEntry_default;
|