@riverbankcms/sdk 0.145.0 → 0.147.0
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/CHANGELOG.md +29 -0
- package/dist/{PreviewEditorSidebar-O-V6Pl5a.mjs → PreviewEditorSidebar-DtpB3_sS.mjs} +51 -33
- package/dist/{PreviewEditorUI-1UlX_9cw.mjs → PreviewEditorUI-DxTLgaHo.mjs} +3 -3
- package/dist/{PreviewQueryProvider-BxGwdOCV.mjs → PreviewQueryProvider-Dd4dxOiU.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-DYbA_4iv.mjs → SdkPreviewModeRuntime-DMMNCngt.mjs} +311 -186
- package/dist/{SiteChromeCustomizeContext-CNTKQ9nx.mjs → SiteChromeCustomizeContext-DQXZXiqS.mjs} +3808 -2395
- package/dist/_dts/ai/src/contracts/proposals.d.ts +1122 -0
- package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +102 -0
- package/dist/_dts/api/src/accountApi.d.ts +5 -5
- package/dist/_dts/api/src/bookingConfig.d.ts +24 -1
- package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +11 -26
- package/dist/_dts/api/src/bookingManagementEventEndpointTypes.d.ts +45 -1
- package/dist/_dts/api/src/bookingOperations.d.ts +2 -44
- package/dist/_dts/api/src/bookingPeople.d.ts +92 -0
- package/dist/_dts/api/src/bookingPeopleEndpointDefinitions.d.ts +38 -0
- package/dist/_dts/api/src/bookingRecords.d.ts +11 -49
- package/dist/_dts/api/src/bookingSettingsSections.d.ts +1 -1
- package/dist/_dts/api/src/bookings.d.ts +1 -0
- package/dist/_dts/api/src/clientErrorReporting.d.ts +50 -0
- package/dist/_dts/api/src/communications.d.ts +20 -4
- package/dist/_dts/api/src/contentRuntime.d.ts +3 -7
- package/dist/_dts/api/src/endpoints.d.ts +816 -655
- package/dist/_dts/api/src/event-visibility.d.ts +20 -0
- package/dist/_dts/api/src/eventManagementContracts.d.ts +72 -4
- package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +24 -0
- package/dist/_dts/api/src/eventPageWords.d.ts +19 -0
- package/dist/_dts/api/src/eventSeriesRegistrationEndpointDefinitions.d.ts +14 -0
- package/dist/_dts/api/src/index.d.ts +9 -2
- package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
- package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
- package/dist/_dts/api/src/launchReadiness.d.ts +19 -6
- package/dist/_dts/api/src/launchRequirementPriority.d.ts +3 -0
- package/dist/_dts/api/src/mailingListIntegration.d.ts +6 -0
- package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +1 -1
- package/dist/_dts/api/src/newsletterCampaignCommandEndpoints.d.ts +13 -0
- package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +57 -0
- package/dist/_dts/api/src/occurrenceScheduling.d.ts +29 -0
- package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +44 -0
- package/dist/_dts/api/src/participantMessaging.d.ts +11 -1
- package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +48 -0
- package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +7 -0
- package/dist/_dts/api/src/sdk-event-upsert.d.ts +55 -1
- package/dist/_dts/api/src/sdkContracts.d.ts +3 -42
- package/dist/_dts/api/src/sdkCourseBooking.d.ts +30 -0
- package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +76 -0
- package/dist/_dts/api/src/sdkEventLifecycle.d.ts +37 -0
- package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +18 -0
- package/dist/_dts/api/src/sdkPageDesign.d.ts +388 -0
- package/dist/_dts/api/src/sdkPageDesignEndpointDefinitions.d.ts +22 -0
- package/dist/_dts/api/src/sdkPullEventContracts.d.ts +46 -0
- package/dist/_dts/api/src/siteAddressEndpoints.d.ts +29 -0
- package/dist/_dts/api/src/siteLifecycleEndpoints.d.ts +61 -0
- package/dist/_dts/api/src/siteManagementEndpointDefinitions.d.ts +49 -0
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +6 -49
- package/dist/_dts/api/src/siteOnboarding.d.ts +72 -18
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -1
- package/dist/_dts/api/src/types.d.ts +7 -1
- package/dist/_dts/api/src/wholeSeriesRuns.d.ts +14 -0
- package/dist/_dts/blocks/src/PageRenderer.d.ts +3 -4
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +8 -0
- package/dist/_dts/blocks/src/index.d.ts +2 -0
- package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +29 -1
- package/dist/_dts/blocks/src/pageRendererContracts.d.ts +5 -1
- package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +27 -5
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +14 -1
- package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +4 -1
- package/dist/_dts/blocks/src/system/icons/social.d.ts +1 -1
- package/dist/_dts/blocks/src/system/registry.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +12 -0
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +12 -0
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.completion.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +19 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-choice.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-note.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-state.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.reserved-fields.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.server.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-handler.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-success.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/AttendeeDetailsStep.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SuccessStep.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/sessionStorage.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +20 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/form.fields.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.block-submission.d.ts +34 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +6 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.parts.d.ts +46 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +4 -1
- package/dist/_dts/blocks/src/system/runtime/shared/components/BookingMailingListNote.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/CheckboxChoice.d.ts +18 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/shared/mailingListSignupCopy.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/shared/types.d.ts +1 -0
- package/dist/_dts/blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.d.ts +3 -2
- package/dist/_dts/blocks/src/system/transforms/registry/core.d.ts +2 -0
- package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +1 -3
- package/dist/_dts/content-editor/src/index.d.ts +1 -0
- package/dist/_dts/content-editor/src/primitives/previewEditableOutline.d.ts +2 -0
- package/dist/_dts/content-editor/src/ui/editorBlockEquality.d.ts +3 -0
- package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +3 -5
- package/dist/_dts/core/src/block-content-identity.d.ts +5 -0
- package/dist/_dts/core/src/editor-state.d.ts +2 -7
- package/dist/_dts/core/src/index.d.ts +2 -1
- package/dist/_dts/core/src/mailing-list-runtime.d.ts +15 -0
- package/dist/_dts/core/src/mailing-list-setup.d.ts +2 -0
- package/dist/_dts/core/src/mailing-list-submission.d.ts +9 -1
- package/dist/_dts/core/src/navigation-portal-labels.d.ts +9 -0
- package/dist/_dts/core/src/participants.d.ts +0 -38
- package/dist/_dts/core/src/public-event-booking-availability.d.ts +20 -1
- package/dist/_dts/core/src/public-profile.d.ts +3 -1
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +151 -24
- package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +3 -0
- package/dist/_dts/editor-blocks/src/block-editor/EmptyState.d.ts +13 -1
- package/dist/_dts/editor-blocks/src/block-editor/actionPresentation.d.ts +1 -0
- package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +2 -8
- package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/blocks/EditablePageRenderer.d.ts +7 -1
- package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +5 -5
- package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -2
- package/dist/_dts/sdk/src/next/renderSdkContent.d.ts +0 -1
- package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +3 -2
- package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +3 -2
- package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +6 -1
- package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +5 -2
- package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +6 -1
- package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +2 -0
- package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +5 -1
- package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +5 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/surfaces/src/index.d.ts +9 -0
- package/dist/_dts/theme-core/src/buttons/effects/types.d.ts +1 -1
- package/dist/_dts/theme-core/src/footer/effectiveNavLinkStyle.d.ts +13 -0
- package/dist/_dts/theme-core/src/footer/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/header/effectiveNavLinkStyle.d.ts +17 -0
- package/dist/_dts/theme-core/src/header/generateHeaderLogoStyles.d.ts +15 -0
- package/dist/_dts/theme-core/src/header/generateHeaderNavLinkStyles.d.ts +4 -0
- package/dist/_dts/theme-core/src/header/index.d.ts +3 -0
- package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +1 -1
- package/dist/_dts/theme-core/src/header/openingForegroundProjection.d.ts +7 -0
- package/dist/_dts/theme-core/src/header/rootPaint.d.ts +4 -0
- package/dist/_dts/theme-core/src/inputs/checkable.d.ts +42 -0
- package/dist/_dts/theme-core/src/inputs/inputGroup.d.ts +19 -0
- package/dist/_dts/theme-core/src/navigation/effectPolicy.d.ts +38 -0
- package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +4 -0
- package/dist/_dts/theme-core/src/navigation/types.d.ts +4 -0
- package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +1 -1
- package/dist/_dts/theme-core/src/surfaces/foregroundContract.d.ts +7 -0
- package/dist/_dts/theme-core/src/surfaces/foregroundInteraction.d.ts +29 -22
- package/dist/_dts/theme-core/src/surfaces/foregroundRoles.d.ts +10 -2
- package/dist/_dts/theme-core/src/surfaces/resolveSurfaceForeground.d.ts +9 -0
- package/dist/_dts/theme-core/src/utils/cssDeclarations.d.ts +2 -0
- package/dist/_dts/ui/src/badge.d.ts +2 -1
- package/dist/_dts/ui/src/button.d.ts +1 -1
- package/dist/_dts/ui/src/combobox-keys.d.ts +23 -0
- package/dist/_dts/ui/src/combobox-rows.d.ts +34 -0
- package/dist/_dts/ui/src/combobox.d.ts +26 -1
- package/dist/_dts/ui/src/date-picker.d.ts +5 -8
- package/dist/_dts/ui/src/editor-item-card.d.ts +1 -0
- package/dist/_dts/ui/src/field-trigger.d.ts +39 -0
- package/dist/_dts/ui/src/fieldControl.d.ts +27 -0
- package/dist/_dts/ui/src/index.d.ts +4 -1
- package/dist/_dts/ui/src/native-select.d.ts +8 -0
- package/dist/_dts/ui/src/navigation-tabs.d.ts +2 -1
- package/dist/_dts/ui/src/popover.d.ts +7 -1
- package/dist/_dts/ui/src/segmented-control.d.ts +4 -0
- package/dist/_dts/ui/src/surface.d.ts +1 -1
- package/dist/client/{BookingConsentAgreement-DlVOmpW4.mjs → BookingMailingListNote-1n4Ch_u_.mjs} +15 -4
- package/dist/client/CheckboxChoice-B33MqoUo.mjs +24 -0
- package/dist/client/{DiscountCodeDisclosure-T9q623PQ.mjs → DiscountCodeDisclosure-CKJtz0mY.mjs} +1 -1
- package/dist/client/{EventCombined.client-DnsUeONl.mjs → EventCombined.client-C0pgma9y.mjs} +7 -7
- package/dist/client/{EventListing.client-CNBFqJS4.mjs → EventListing.client-4fhLOvHP.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-C7higg52.mjs → LeafletStaticMap-DScC4F3w.mjs} +1 -1
- package/dist/client/{scrollToBlock-CWs8EIdo.mjs → TerminalPanel-B5ZUsYhe.mjs} +77 -77
- package/dist/client/{ThemedButton-LAJTNrS8.mjs → ThemedButton-DoVIV1Ao.mjs} +2 -2
- package/dist/client/{accordion-BcNF9TjX.mjs → accordion-CoT5g7zo.mjs} +1 -1
- package/dist/client/{bookingForm-BUaQ3S03.mjs → bookingForm-BWxB46xD.mjs} +251 -150
- package/dist/client/bookings.mjs +415 -234
- package/dist/client/{carousel-CTdF6e0V.mjs → carousel-DtNYWFd3.mjs} +2 -2
- package/dist/client/{carousel.client-jahpU9Vz.mjs → carousel.client-A2lG-9od.mjs} +1 -1
- package/dist/client/{cart-pGtyf_XU.mjs → cart-z4qZih1Y.mjs} +3 -3
- package/dist/client/{checkout-Da9WSn7Y.mjs → checkout-DpL7euFH.mjs} +3 -3
- package/dist/client/{checkoutUrls-CW3-78uu.mjs → checkoutUrls-BEfR7kVu.mjs} +1 -1
- package/dist/client/client.mjs +3721 -2220
- package/dist/client/{colorStyles-CuJBiS-1.mjs → colorStyles-j5U9v5JA.mjs} +5 -1
- package/dist/client/{context-BFeY_Wbm.mjs → context-C8TinPJc.mjs} +1 -1
- package/dist/client/{dates-BhwVSxDg.mjs → dates-vwwxTeB0.mjs} +2 -3
- package/dist/client/{eventCalendar-BAtdnR4s.mjs → eventCalendar-DIbHfJXO.mjs} +10 -10
- package/dist/client/{eventCombined-RksA3tRC.mjs → eventCombined-DoGMJ6cg.mjs} +4 -4
- package/dist/client/{eventDetails-BB9hB4wR.mjs → eventDetails-BjN9v6a1.mjs} +4 -4
- package/dist/client/{eventListing-BpJBkviM.mjs → eventListing-DajjWgOv.mjs} +4 -4
- package/dist/client/{eventRegistration-B18jFq_o.mjs → eventRegistration-DMq9gMA-.mjs} +121 -54
- package/dist/client/{form-Dodt8Y8t.mjs → form-Qf6qTbos.mjs} +136 -105
- package/dist/client/{headerSection-B0qj9ttg.mjs → headerSection-D7qJrqFX.mjs} +3 -3
- package/dist/client/hooks.mjs +1148 -179
- package/dist/client/{locationMap-gn-iMk7a.mjs → locationMap-CCF9-t_0.mjs} +4 -4
- package/dist/client/{FieldValidationMessage-AYanWFb-.mjs → mailingListSignupCopy-DZSHZrm6.mjs} +14 -1
- package/dist/client/{media-BtJ37tzS.mjs → media-CwBGetqC.mjs} +1 -1
- package/dist/client/{newsletterForm-oByLdFkr.mjs → newsletterForm-DzCLSP4S.mjs} +206 -104
- package/dist/client/{pricing-BOU0_Hai.mjs → pricing-Cgxv2KLC.mjs} +1 -1
- package/dist/client/{productDetail-D9v1zH2j.mjs → productDetail-ru9w5GHx.mjs} +3 -3
- package/dist/client/{productList-D-mItx1n.mjs → productList-zaapKSl-.mjs} +3 -3
- package/dist/client/{propsDecoder-C3TP_z4x.mjs → propsDecoder-CwvvNOHx.mjs} +91 -28
- package/dist/client/rendering/client.mjs +1441 -826
- package/dist/client/rendering/islands.mjs +19 -19
- package/dist/client/rendering.mjs +3652 -2005
- package/dist/client/{routeIslandApiConfig-DzN1W0sq.mjs → routeIslandApiConfig-BwVFo0Y4.mjs} +1 -1
- package/dist/client/{shop-commerce-gklw_hLF.mjs → shop-commerce-De7gEnkA.mjs} +8 -8
- package/dist/client/{shop-commerce-store-Sf1eyTaZ.mjs → shop-commerce-store-B3MCxIBW.mjs} +1 -1
- package/dist/client/{shop-Dufw7N7o.mjs → shop-mktkXvbV.mjs} +7 -7
- package/dist/client/{shopShared-B5nyA41S.mjs → shopShared-TqExh235.mjs} +5 -5
- package/dist/client/{useEventFilters-CLL829vy.mjs → useEventFilters-n_OjkIjX.mjs} +8 -8
- package/dist/preview-next/before-render.mjs +490 -153
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/editor-base.css +64 -2
- package/dist/preview-next/editor-chrome.css +7 -4
- package/dist/preview-next/keepAlive.mjs +450 -153
- package/dist/preview-next/middleware.mjs +451 -153
- package/dist/{previewAuthStore-BxAFlu-j.mjs → previewAuthStore-C_EHQ5XA.mjs} +475 -153
- package/dist/{sdk-runtime-D0uZFev7.mjs → sdk-runtime-BIkJg5y1.mjs} +2 -2
- package/dist/{separator-EvdCAn4V.mjs → separator-C9qDP95Z.mjs} +1 -1
- package/dist/server/components.mjs +4957 -3509
- package/dist/server/config-validation.mjs +1115 -189
- package/dist/server/config.mjs +1115 -189
- package/dist/server/data.mjs +1113 -188
- package/dist/server/index.mjs +492 -154
- package/dist/server/navigation.mjs +13 -2
- package/dist/server/next.mjs +4798 -3462
- package/dist/server/page-converter.mjs +143 -89
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +3862 -2414
- package/dist/server/rendering.mjs +5648 -4154
- package/dist/server/routing.mjs +1223 -329
- package/dist/server/server.mjs +1172 -314
- package/dist/server/theme-bridge.mjs +533 -128
- package/dist/server/theme.mjs +5 -1
- package/dist/styles/index.css +218 -69
- package/package.json +1 -1
- package/dist/_dts/core/src/participant-identity.d.ts +0 -135
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { C as unsafeAsPassId, b as unsafeAsCustomerPassId, v as unsafeAsAppointmentResourceId, x as unsafeAsFormId, y as unsafeAsAppointmentServiceId } from "./colorStyles-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { n as useBlockApi, t as BlockApiProvider } from "./context-
|
|
2
|
+
import { C as unsafeAsPassId, b as unsafeAsCustomerPassId, v as unsafeAsAppointmentResourceId, x as unsafeAsFormId, y as unsafeAsAppointmentServiceId } from "./colorStyles-j5U9v5JA.mjs";
|
|
3
|
+
import { a as buildBookingPaymentSelectionViewModel, i as usePolling, n as BookingConsentAgreement, r as StepIndicator, t as BookingMailingListNote } from "./BookingMailingListNote-1n4Ch_u_.mjs";
|
|
4
|
+
import { At as resolveAppointmentCheckoutVerificationState, Ct as formatBookingSubmissionPreparationError, Dt as isBookingServiceSlidingAmountInRange, Et as getBookingSuccessMessage, Ft as projectSelectedAppointmentConsentIntoForm, Gt as okWith, Ht as clearWorkflowFeedback, It as resolveSelectedAppointmentConsent, Kt as reportWorkflowError, Lt as BOOKING_FORM_DATA_RESERVED_KEYS, Mt as resolveBookingSiteId, Nt as resolveDefaultBookingServiceId, Ot as parseBookingCurrencyInputToCents, Pt as toSelectedCollectionOptionKind, Qt as addLocalScheduleDays, Rt as isBookingRequirementConsentFieldId, St as formatBookingCentsAsCurrencyInput, Tt as getBookingServiceSlidingScale, Ut as err, Vt as assertNever, Zt as resolveBookingSignupOffer, bn as formatCurrencyAmount, bt as logger, cn as resolveBookingTimeZoneId, in as formatLocalScheduleDate, jt as resolveBookingPaymentStep, kt as prepareBookingSubmission, nn as formatBookingInstant, qt as reportWorkflowSuccess, sn as parseBookingLocalDate, t as defineIslandPropsDecoder, wt as getBookingRedirectStateFromLocation, xt as deriveBookingFormViewState } from "./propsDecoder-CwvvNOHx.mjs";
|
|
5
|
+
import { n as useBlockApi, t as BlockApiProvider } from "./context-C8TinPJc.mjs";
|
|
6
6
|
import { n as isSpamProtectionEnabled, r as AltchaWidget, t as getChallengeUrl } from "./src-B833rYRr.mjs";
|
|
7
|
-
import {
|
|
8
|
-
import { t as
|
|
9
|
-
import { i as SpinnerNode, t as ThemedButton } from "./ThemedButton-
|
|
7
|
+
import { t as DiscountCodeDisclosure } from "./DiscountCodeDisclosure-CKJtz0mY.mjs";
|
|
8
|
+
import { a as useDiscountCodeUi, i as CheckIcon, n as StateIcon, r as scrollToBlock, t as TerminalPanel } from "./TerminalPanel-B5ZUsYhe.mjs";
|
|
9
|
+
import { i as SpinnerNode, t as ThemedButton } from "./ThemedButton-DoVIV1Ao.mjs";
|
|
10
10
|
import { t as FeedbackMessage } from "./FeedbackMessage-CtLvvS_d.mjs";
|
|
11
|
-
import {
|
|
12
|
-
import { t as buildCheckoutReturnUrls } from "./checkoutUrls-
|
|
11
|
+
import { i as getFieldValidationControlProps, r as FieldValidationMessage } from "./mailingListSignupCopy-DZSHZrm6.mjs";
|
|
12
|
+
import { t as buildCheckoutReturnUrls } from "./checkoutUrls-BEfR7kVu.mjs";
|
|
13
|
+
import { t as CheckboxChoice } from "./CheckboxChoice-B33MqoUo.mjs";
|
|
13
14
|
import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
|
|
14
|
-
import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-
|
|
15
|
+
import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-BwVFo0Y4.mjs";
|
|
15
16
|
import React, { useCallback, useEffect, useLayoutEffect, useMemo, useReducer, useRef, useState } from "react";
|
|
16
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
17
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
17
18
|
//#region ../core/src/appointment-service-categories.ts
|
|
18
19
|
/**
|
|
19
20
|
* Groups services under their categories.
|
|
@@ -54,30 +55,6 @@ function layoutServicesByCategory(categories, services, options) {
|
|
|
54
55
|
};
|
|
55
56
|
}
|
|
56
57
|
//#endregion
|
|
57
|
-
//#region ../blocks/src/system/runtime/components/booking/SuccessMessage.tsx
|
|
58
|
-
const SuccessMessage = ({ message, resourceName, className }) => {
|
|
59
|
-
return /* @__PURE__ */ jsx(TerminalPanel, {
|
|
60
|
-
tone: "success",
|
|
61
|
-
title: "Booking confirmed",
|
|
62
|
-
icon: /* @__PURE__ */ jsx(StateIcon, {
|
|
63
|
-
variant: "success",
|
|
64
|
-
children: /* @__PURE__ */ jsx(CheckIcon, { strokeWidth: 3 })
|
|
65
|
-
}),
|
|
66
|
-
body: /* @__PURE__ */ jsx("p", {
|
|
67
|
-
className: "ab-text",
|
|
68
|
-
children: message
|
|
69
|
-
}),
|
|
70
|
-
secondaryBody: resourceName ? /* @__PURE__ */ jsxs("p", {
|
|
71
|
-
className: "ab-text rb-on-surface--muted",
|
|
72
|
-
children: ["Practitioner: ", resourceName]
|
|
73
|
-
}) : null,
|
|
74
|
-
className: ["ab-center", className ?? ""].join(" ").trim(),
|
|
75
|
-
titleClassName: "ab-terminal-title",
|
|
76
|
-
role: "alert",
|
|
77
|
-
live: "polite"
|
|
78
|
-
});
|
|
79
|
-
};
|
|
80
|
-
//#endregion
|
|
81
58
|
//#region ../blocks/src/system/runtime/hooks/useSelectedAppointmentConsentForm.ts
|
|
82
59
|
function useSelectedAppointmentConsentForm(form, selectedService) {
|
|
83
60
|
return useMemo(() => projectSelectedAppointmentConsentIntoForm(form, resolveSelectedAppointmentConsent(selectedService)), [form, selectedService]);
|
|
@@ -642,6 +619,7 @@ function useBookingSubmission(_siteId) {
|
|
|
642
619
|
startAt: data.startAt,
|
|
643
620
|
endAt: data.endAt,
|
|
644
621
|
customFields: data.customFields,
|
|
622
|
+
mailingListOptIn: data.mailingListOptIn,
|
|
645
623
|
timezone: data.timezone,
|
|
646
624
|
customerPassId: data.customerPassId
|
|
647
625
|
}) : await api.submitBooking({
|
|
@@ -651,6 +629,7 @@ function useBookingSubmission(_siteId) {
|
|
|
651
629
|
startAt: data.startAt,
|
|
652
630
|
endAt: data.endAt,
|
|
653
631
|
customFields: data.customFields,
|
|
632
|
+
mailingListOptIn: data.mailingListOptIn,
|
|
654
633
|
timezone: data.timezone,
|
|
655
634
|
discountCode: data.discountCode,
|
|
656
635
|
selectedSlidingAmount: data.selectedSlidingAmount,
|
|
@@ -686,6 +665,40 @@ function useBookingSubmission(_siteId) {
|
|
|
686
665
|
};
|
|
687
666
|
}
|
|
688
667
|
//#endregion
|
|
668
|
+
//#region ../blocks/src/system/runtime/nodes/booking-form.submit-success.ts
|
|
669
|
+
function completeBookingSubmission(input) {
|
|
670
|
+
const { data } = input;
|
|
671
|
+
if (data.type === "checkout_redirect") {
|
|
672
|
+
if (input.redirect === "auto" && typeof window !== "undefined") input.navigateToCheckout(data.checkoutUrl);
|
|
673
|
+
return {
|
|
674
|
+
ok: true,
|
|
675
|
+
outcome: {
|
|
676
|
+
kind: "checkout_redirect",
|
|
677
|
+
checkoutUrl: data.checkoutUrl,
|
|
678
|
+
sessionId: data.sessionId,
|
|
679
|
+
...data.mailingListSignupNote ? { mailingListSignupNote: data.mailingListSignupNote } : {}
|
|
680
|
+
}
|
|
681
|
+
};
|
|
682
|
+
}
|
|
683
|
+
input.dispatch({
|
|
684
|
+
type: "feedback-set",
|
|
685
|
+
feedback: {
|
|
686
|
+
kind: "success",
|
|
687
|
+
message: getBookingSuccessMessage(input.successMessage),
|
|
688
|
+
resourceName: data.appointment.resourceName
|
|
689
|
+
}
|
|
690
|
+
});
|
|
691
|
+
return {
|
|
692
|
+
ok: true,
|
|
693
|
+
outcome: {
|
|
694
|
+
kind: "booked",
|
|
695
|
+
appointmentId: data.appointment.id,
|
|
696
|
+
resourceName: data.appointment.resourceName,
|
|
697
|
+
...data.mailingListSignupNote ? { mailingListSignupNote: data.mailingListSignupNote } : {}
|
|
698
|
+
}
|
|
699
|
+
};
|
|
700
|
+
}
|
|
701
|
+
//#endregion
|
|
689
702
|
//#region ../blocks/src/system/runtime/nodes/booking-form.validationErrors.ts
|
|
690
703
|
function omitRecordKey(record, key) {
|
|
691
704
|
if (!(key in record)) return record;
|
|
@@ -727,6 +740,40 @@ function clearBookingFieldError(errors, fieldId) {
|
|
|
727
740
|
};
|
|
728
741
|
}
|
|
729
742
|
//#endregion
|
|
743
|
+
//#region ../blocks/src/system/runtime/nodes/booking-form.mailing-list-state.ts
|
|
744
|
+
function bookingFormDataWithEligibleOptIn(data, eligible) {
|
|
745
|
+
return {
|
|
746
|
+
...data,
|
|
747
|
+
mailingListOptIn: eligible && data.mailingListOptIn === true
|
|
748
|
+
};
|
|
749
|
+
}
|
|
750
|
+
function isBookingContactEvent(event) {
|
|
751
|
+
return event.type === "field-updated" || event.type === "field-touched" || event.type === "mailing-list-opt-in-set";
|
|
752
|
+
}
|
|
753
|
+
function applyBookingContactEvent(state, event) {
|
|
754
|
+
switch (event.type) {
|
|
755
|
+
case "field-updated": return {
|
|
756
|
+
...state,
|
|
757
|
+
fieldValues: {
|
|
758
|
+
...state.fieldValues,
|
|
759
|
+
[event.fieldId]: event.value
|
|
760
|
+
},
|
|
761
|
+
validationErrors: clearBookingFieldError(clearBookingFormError(state.validationErrors), event.fieldId)
|
|
762
|
+
};
|
|
763
|
+
case "field-touched": return {
|
|
764
|
+
...state,
|
|
765
|
+
touchedFields: {
|
|
766
|
+
...state.touchedFields,
|
|
767
|
+
[event.fieldId]: true
|
|
768
|
+
}
|
|
769
|
+
};
|
|
770
|
+
case "mailing-list-opt-in-set": return {
|
|
771
|
+
...state,
|
|
772
|
+
mailingListOptIn: event.checked
|
|
773
|
+
};
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
//#endregion
|
|
730
777
|
//#region ../blocks/src/system/runtime/nodes/booking-form.field-values.ts
|
|
731
778
|
function collectInitialBookingFieldValues(initialData) {
|
|
732
779
|
const values = {};
|
|
@@ -752,6 +799,7 @@ function createInitialBookingFlowReducerState(input) {
|
|
|
752
799
|
selectedDate: toOptionalString(initialData.selectedDate),
|
|
753
800
|
selectedSlot: null,
|
|
754
801
|
fieldValues: collectInitialBookingFieldValues(initialData),
|
|
802
|
+
mailingListOptIn: initialData.mailingListOptIn === true,
|
|
755
803
|
touchedFields: {},
|
|
756
804
|
attemptedStepIds: {},
|
|
757
805
|
discountCode: toOptionalString(initialData.discountCode) ?? "",
|
|
@@ -801,6 +849,7 @@ function applyAvailabilitySelectionInvalidation(state, invalidation) {
|
|
|
801
849
|
};
|
|
802
850
|
}
|
|
803
851
|
function bookingFlowReducer(state, event) {
|
|
852
|
+
if (isBookingContactEvent(event)) return applyBookingContactEvent(state, event);
|
|
804
853
|
switch (event.type) {
|
|
805
854
|
case "service-selected": return applyBookingServiceSelection(state, event.serviceId);
|
|
806
855
|
case "resource-selected": return {
|
|
@@ -823,21 +872,6 @@ function bookingFlowReducer(state, event) {
|
|
|
823
872
|
feedback: clearAvailabilityFeedback(state.feedback),
|
|
824
873
|
validationErrors: clearBookingFormError(state.validationErrors)
|
|
825
874
|
};
|
|
826
|
-
case "field-updated": return {
|
|
827
|
-
...state,
|
|
828
|
-
fieldValues: {
|
|
829
|
-
...state.fieldValues,
|
|
830
|
-
[event.fieldId]: event.value
|
|
831
|
-
},
|
|
832
|
-
validationErrors: clearBookingFieldError(clearBookingFormError(state.validationErrors), event.fieldId)
|
|
833
|
-
};
|
|
834
|
-
case "field-touched": return {
|
|
835
|
-
...state,
|
|
836
|
-
touchedFields: {
|
|
837
|
-
...state.touchedFields,
|
|
838
|
-
[event.fieldId]: true
|
|
839
|
-
}
|
|
840
|
-
};
|
|
841
875
|
case "step-advance-attempted": return state.attemptedStepIds[event.stepId] ? state : {
|
|
842
876
|
...state,
|
|
843
877
|
attemptedStepIds: {
|
|
@@ -975,6 +1009,7 @@ function deriveBookingSlotDisplayOptions(input) {
|
|
|
975
1009
|
function toBookingFormData(state) {
|
|
976
1010
|
return {
|
|
977
1011
|
...state.fieldValues,
|
|
1012
|
+
mailingListOptIn: state.mailingListOptIn,
|
|
978
1013
|
serviceId: state.selectedServiceId,
|
|
979
1014
|
resourceId: state.selectedResourceId ?? state.selectedSlot?.resourceId,
|
|
980
1015
|
selectedDate: state.selectedDate,
|
|
@@ -1237,10 +1272,7 @@ function buildBookingSubmitPlan(input) {
|
|
|
1237
1272
|
};
|
|
1238
1273
|
const prepared = prepareBookingSubmission({
|
|
1239
1274
|
formId: input.formId,
|
|
1240
|
-
data: toBookingFormData(
|
|
1241
|
-
...input.state,
|
|
1242
|
-
altchaSolution: input.altchaSolution ?? input.state.altchaSolution
|
|
1243
|
-
}),
|
|
1275
|
+
data: bookingFormDataWithEligibleOptIn(toBookingFormData(input.state), Boolean(input.mailingListEligible)),
|
|
1244
1276
|
services: input.services,
|
|
1245
1277
|
defaultServiceId: input.defaultServiceId,
|
|
1246
1278
|
defaultResourceId: input.defaultResourceId,
|
|
@@ -1426,6 +1458,8 @@ function useHeadlessBookingFlow(options) {
|
|
|
1426
1458
|
const canLoadAppointmentPackages = Boolean(options.enableAppointmentPackages && hasPortalBearerAuth && selectedService && !selectedServiceSlidingScale && (selectedService.priceAmount ?? 0) > 0);
|
|
1427
1459
|
const appointmentPackagesUnavailableReason = !options.enableAppointmentPackages ? "disabled" : !selectedService || selectedServiceSlidingScale || (selectedService.priceAmount ?? 0) <= 0 ? "missing-priced-service" : !hasPortalBearerAuth ? "missing-portal-auth" : null;
|
|
1428
1460
|
const data = useMemo(() => toBookingFormData(state), [state]);
|
|
1461
|
+
const mailingList = resolveBookingSignupOffer(options.mailingList, options.siteName);
|
|
1462
|
+
const mailingListEligible = mailingList !== null;
|
|
1429
1463
|
const availabilityDatesQuery = useMemo(() => buildBookingAvailabilityQuery({
|
|
1430
1464
|
serviceId: selectedServiceId,
|
|
1431
1465
|
resourceId: selectedResourceId,
|
|
@@ -1686,7 +1720,8 @@ function useHeadlessBookingFlow(options) {
|
|
|
1686
1720
|
viewerTimeZone: latest.viewerTimeZone,
|
|
1687
1721
|
redirect: submitOptions?.redirect ?? "manual",
|
|
1688
1722
|
successUrl: submitOptions?.successUrl,
|
|
1689
|
-
cancelUrl: submitOptions?.cancelUrl
|
|
1723
|
+
cancelUrl: submitOptions?.cancelUrl,
|
|
1724
|
+
mailingListEligible
|
|
1690
1725
|
});
|
|
1691
1726
|
if (!plan.ok) {
|
|
1692
1727
|
dispatch({
|
|
@@ -1719,37 +1754,18 @@ function useHeadlessBookingFlow(options) {
|
|
|
1719
1754
|
message: result.error
|
|
1720
1755
|
};
|
|
1721
1756
|
}
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
checkoutUrl: result.data.checkoutUrl
|
|
1729
|
-
}
|
|
1730
|
-
};
|
|
1731
|
-
}
|
|
1732
|
-
dispatch({
|
|
1733
|
-
type: "feedback-set",
|
|
1734
|
-
feedback: {
|
|
1735
|
-
kind: "success",
|
|
1736
|
-
message: getBookingSuccessMessage(latest.successMessage),
|
|
1737
|
-
resourceName: result.data.appointment.resourceName
|
|
1738
|
-
}
|
|
1757
|
+
return completeBookingSubmission({
|
|
1758
|
+
data: result.data,
|
|
1759
|
+
redirect: plan.redirect,
|
|
1760
|
+
successMessage: latest.successMessage,
|
|
1761
|
+
navigateToCheckout: latest.navigateToCheckout,
|
|
1762
|
+
dispatch
|
|
1739
1763
|
});
|
|
1740
|
-
return {
|
|
1741
|
-
ok: true,
|
|
1742
|
-
outcome: {
|
|
1743
|
-
kind: "booked",
|
|
1744
|
-
appointmentId: result.data.appointment.id,
|
|
1745
|
-
resourceName: result.data.appointment.resourceName
|
|
1746
|
-
}
|
|
1747
|
-
};
|
|
1748
1764
|
} finally {
|
|
1749
1765
|
submittingRef.current = false;
|
|
1750
1766
|
dispatch({ type: "submission-finished" });
|
|
1751
1767
|
}
|
|
1752
|
-
}, [latestRef]);
|
|
1768
|
+
}, [latestRef, mailingListEligible]);
|
|
1753
1769
|
const actions = useMemo(() => ({
|
|
1754
1770
|
selectService: (serviceId) => dispatch({
|
|
1755
1771
|
type: "service-selected",
|
|
@@ -1772,6 +1788,10 @@ function useHeadlessBookingFlow(options) {
|
|
|
1772
1788
|
fieldId: unsafeAsBookingFieldId(fieldId),
|
|
1773
1789
|
value
|
|
1774
1790
|
}),
|
|
1791
|
+
setMailingListOptIn: (checked) => dispatch({
|
|
1792
|
+
type: "mailing-list-opt-in-set",
|
|
1793
|
+
checked
|
|
1794
|
+
}),
|
|
1775
1795
|
markFieldTouched: (fieldId) => dispatch({
|
|
1776
1796
|
type: "field-touched",
|
|
1777
1797
|
fieldId: unsafeAsBookingFieldId(fieldId)
|
|
@@ -1930,6 +1950,8 @@ function useHeadlessBookingFlow(options) {
|
|
|
1930
1950
|
appointmentPackages: appointmentPackagesModel
|
|
1931
1951
|
};
|
|
1932
1952
|
return {
|
|
1953
|
+
mailingList,
|
|
1954
|
+
mailingListOptIn: state.mailingListOptIn,
|
|
1933
1955
|
status,
|
|
1934
1956
|
view,
|
|
1935
1957
|
steps: stepState.steps,
|
|
@@ -2227,6 +2249,25 @@ const TimeSlotSelector = ({ value, onChange, slots, isLoading, timezone, require
|
|
|
2227
2249
|
});
|
|
2228
2250
|
};
|
|
2229
2251
|
//#endregion
|
|
2252
|
+
//#region ../blocks/src/system/runtime/nodes/booking-form.mailing-list-choice.tsx
|
|
2253
|
+
function BookingMailingListChoice({ booking }) {
|
|
2254
|
+
const id = React.useId();
|
|
2255
|
+
if (!booking.mailingList) return null;
|
|
2256
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
2257
|
+
className: "rb-space-y-2",
|
|
2258
|
+
children: [/* @__PURE__ */ jsx(CheckboxChoice, {
|
|
2259
|
+
id,
|
|
2260
|
+
name: "mailingListOptIn",
|
|
2261
|
+
checked: booking.mailingListOptIn,
|
|
2262
|
+
onChange: (event) => booking.actions.setMailingListOptIn(event.target.checked),
|
|
2263
|
+
label: `Email me news and updates from ${booking.mailingList.siteName}.`
|
|
2264
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
2265
|
+
className: "rb-caption status-muted",
|
|
2266
|
+
children: "Optional. You can unsubscribe at any time."
|
|
2267
|
+
})]
|
|
2268
|
+
});
|
|
2269
|
+
}
|
|
2270
|
+
//#endregion
|
|
2230
2271
|
//#region ../blocks/src/system/runtime/nodes/booking-form.service-choices.tsx
|
|
2231
2272
|
function optionCardClassName(isSelected) {
|
|
2232
2273
|
return `rb-option-card${isSelected ? " rb-option-card--selected" : ""}`;
|
|
@@ -2706,12 +2747,17 @@ function PaymentOptionContent({ description, helperText, id, summaryRows, title
|
|
|
2706
2747
|
});
|
|
2707
2748
|
}
|
|
2708
2749
|
function DefaultDynamicFields({ booking, fields }) {
|
|
2750
|
+
const lastContactIndex = fields.reduce((last, field, index) => [
|
|
2751
|
+
"name",
|
|
2752
|
+
"email",
|
|
2753
|
+
"phone"
|
|
2754
|
+
].includes(field.id) ? index : last, -1);
|
|
2709
2755
|
return /* @__PURE__ */ jsx("div", {
|
|
2710
2756
|
className: "rb-space-y-6",
|
|
2711
|
-
children: fields.map((field) => /* @__PURE__ */ jsx(DefaultDynamicField, {
|
|
2757
|
+
children: fields.map((field, index) => /* @__PURE__ */ jsxs(React.Fragment, { children: [/* @__PURE__ */ jsx(DefaultDynamicField, {
|
|
2712
2758
|
booking,
|
|
2713
2759
|
field
|
|
2714
|
-
}, field.id))
|
|
2760
|
+
}), index === lastContactIndex && booking.mailingList ? /* @__PURE__ */ jsx(BookingMailingListChoice, { booking }) : null] }, field.id))
|
|
2715
2761
|
});
|
|
2716
2762
|
}
|
|
2717
2763
|
function DefaultDynamicField({ booking, field }) {
|
|
@@ -2812,7 +2858,7 @@ function DefaultFieldInput({ describedBy, error, errorId, field, onBlur, onChang
|
|
|
2812
2858
|
case "radio": return /* @__PURE__ */ jsx("div", {
|
|
2813
2859
|
className: "rb-space-y-2",
|
|
2814
2860
|
children: field.field.options?.map((option) => /* @__PURE__ */ jsxs("label", {
|
|
2815
|
-
className: "
|
|
2861
|
+
className: "form-check",
|
|
2816
2862
|
children: [/* @__PURE__ */ jsx("input", {
|
|
2817
2863
|
type: "radio",
|
|
2818
2864
|
name: field.id,
|
|
@@ -2824,7 +2870,7 @@ function DefaultFieldInput({ describedBy, error, errorId, field, onBlur, onChang
|
|
|
2824
2870
|
...validationProps,
|
|
2825
2871
|
className: "form-radio"
|
|
2826
2872
|
}), /* @__PURE__ */ jsx("span", {
|
|
2827
|
-
className: "
|
|
2873
|
+
className: "form-check-label",
|
|
2828
2874
|
children: option.label
|
|
2829
2875
|
})]
|
|
2830
2876
|
}, option.value))
|
|
@@ -2834,47 +2880,20 @@ function DefaultFieldInput({ describedBy, error, errorId, field, onBlur, onChang
|
|
|
2834
2880
|
const checkedValues = toStringArray(value);
|
|
2835
2881
|
return /* @__PURE__ */ jsx("div", {
|
|
2836
2882
|
className: "rb-space-y-2",
|
|
2837
|
-
children: field.field.options.map((option) => /* @__PURE__ */
|
|
2838
|
-
|
|
2839
|
-
|
|
2840
|
-
|
|
2841
|
-
|
|
2842
|
-
value: option.value
|
|
2843
|
-
|
|
2844
|
-
|
|
2845
|
-
|
|
2846
|
-
|
|
2847
|
-
onBlur,
|
|
2848
|
-
...validationProps,
|
|
2849
|
-
className: "form-checkbox"
|
|
2850
|
-
}), /* @__PURE__ */ jsx("span", {
|
|
2851
|
-
className: "rb-caption",
|
|
2852
|
-
children: option.label
|
|
2853
|
-
})]
|
|
2883
|
+
children: field.field.options.map((option) => /* @__PURE__ */ jsx(CheckboxChoice, {
|
|
2884
|
+
name: field.id,
|
|
2885
|
+
value: option.value,
|
|
2886
|
+
checked: checkedValues.includes(option.value),
|
|
2887
|
+
onChange: (event) => {
|
|
2888
|
+
onChange(event.target.checked ? [...checkedValues, option.value] : checkedValues.filter((item) => item !== option.value));
|
|
2889
|
+
},
|
|
2890
|
+
onBlur,
|
|
2891
|
+
...validationProps,
|
|
2892
|
+
label: option.label
|
|
2854
2893
|
}, option.value))
|
|
2855
2894
|
});
|
|
2856
2895
|
}
|
|
2857
|
-
return /* @__PURE__ */
|
|
2858
|
-
className: "rb-flex rb-items-center rb-gap-2 rb-cursor-pointer",
|
|
2859
|
-
children: [/* @__PURE__ */ jsx("input", {
|
|
2860
|
-
type: "checkbox",
|
|
2861
|
-
id: field.inputId,
|
|
2862
|
-
name: field.id,
|
|
2863
|
-
checked: Boolean(value),
|
|
2864
|
-
onChange: (event) => onChange(event.target.checked),
|
|
2865
|
-
onBlur,
|
|
2866
|
-
required: field.required,
|
|
2867
|
-
...validationProps,
|
|
2868
|
-
className: "form-checkbox"
|
|
2869
|
-
}), /* @__PURE__ */ jsx("span", {
|
|
2870
|
-
className: "rb-caption",
|
|
2871
|
-
children: field.field.placeholder || field.label
|
|
2872
|
-
})]
|
|
2873
|
-
});
|
|
2874
|
-
case "booking_requirement_consent": return /* @__PURE__ */ jsxs("label", {
|
|
2875
|
-
className: "rb-flex rb-items-start rb-gap-2 rb-cursor-pointer",
|
|
2876
|
-
children: [/* @__PURE__ */ jsx("input", {
|
|
2877
|
-
type: "checkbox",
|
|
2896
|
+
return /* @__PURE__ */ jsx(CheckboxChoice, {
|
|
2878
2897
|
id: field.inputId,
|
|
2879
2898
|
name: field.id,
|
|
2880
2899
|
checked: Boolean(value),
|
|
@@ -2882,11 +2901,18 @@ function DefaultFieldInput({ describedBy, error, errorId, field, onBlur, onChang
|
|
|
2882
2901
|
onBlur,
|
|
2883
2902
|
required: field.required,
|
|
2884
2903
|
...validationProps,
|
|
2885
|
-
|
|
2886
|
-
})
|
|
2887
|
-
|
|
2888
|
-
|
|
2889
|
-
|
|
2904
|
+
label: field.field.placeholder || field.label
|
|
2905
|
+
});
|
|
2906
|
+
case "booking_requirement_consent": return /* @__PURE__ */ jsx(CheckboxChoice, {
|
|
2907
|
+
id: field.inputId,
|
|
2908
|
+
name: field.id,
|
|
2909
|
+
checked: Boolean(value),
|
|
2910
|
+
onChange: (event) => onChange(event.target.checked),
|
|
2911
|
+
onBlur,
|
|
2912
|
+
required: field.required,
|
|
2913
|
+
...validationProps,
|
|
2914
|
+
label: field.field.checkboxLabel,
|
|
2915
|
+
presentation: "tile"
|
|
2890
2916
|
});
|
|
2891
2917
|
case "number": return /* @__PURE__ */ jsx("input", {
|
|
2892
2918
|
...commonProps,
|
|
@@ -3002,9 +3028,88 @@ function DefaultBookingErrorSummary({ errors, id }) {
|
|
|
3002
3028
|
});
|
|
3003
3029
|
}
|
|
3004
3030
|
//#endregion
|
|
3031
|
+
//#region ../blocks/src/system/runtime/components/booking/SuccessMessage.tsx
|
|
3032
|
+
const SuccessMessage = ({ message, resourceName, className }) => {
|
|
3033
|
+
return /* @__PURE__ */ jsx(TerminalPanel, {
|
|
3034
|
+
tone: "success",
|
|
3035
|
+
title: "Booking confirmed",
|
|
3036
|
+
icon: /* @__PURE__ */ jsx(StateIcon, {
|
|
3037
|
+
variant: "success",
|
|
3038
|
+
children: /* @__PURE__ */ jsx(CheckIcon, { strokeWidth: 3 })
|
|
3039
|
+
}),
|
|
3040
|
+
body: /* @__PURE__ */ jsx("p", {
|
|
3041
|
+
className: "ab-text",
|
|
3042
|
+
children: message
|
|
3043
|
+
}),
|
|
3044
|
+
secondaryBody: resourceName ? /* @__PURE__ */ jsxs("p", {
|
|
3045
|
+
className: "ab-text rb-on-surface--muted",
|
|
3046
|
+
children: ["Practitioner: ", resourceName]
|
|
3047
|
+
}) : null,
|
|
3048
|
+
className: ["ab-center", className ?? ""].join(" ").trim(),
|
|
3049
|
+
titleClassName: "ab-terminal-title",
|
|
3050
|
+
role: "alert",
|
|
3051
|
+
live: "polite"
|
|
3052
|
+
});
|
|
3053
|
+
};
|
|
3054
|
+
//#endregion
|
|
3055
|
+
//#region ../blocks/src/system/runtime/nodes/booking-form.mailing-list-note.ts
|
|
3056
|
+
function storageKey(sessionId) {
|
|
3057
|
+
return `riverbank:booking:mailing-list:${sessionId}`;
|
|
3058
|
+
}
|
|
3059
|
+
function saveAppointmentMailingListNote(sessionId, note) {
|
|
3060
|
+
if (!note) return;
|
|
3061
|
+
try {
|
|
3062
|
+
window.sessionStorage.setItem(storageKey(sessionId), note);
|
|
3063
|
+
} catch {}
|
|
3064
|
+
}
|
|
3065
|
+
function readAppointmentMailingListNote(sessionId) {
|
|
3066
|
+
try {
|
|
3067
|
+
const stored = window.sessionStorage.getItem(storageKey(sessionId));
|
|
3068
|
+
return stored === "confirmation_required" || stored === "not_confirmed" ? stored : null;
|
|
3069
|
+
} catch {
|
|
3070
|
+
return null;
|
|
3071
|
+
}
|
|
3072
|
+
}
|
|
3073
|
+
//#endregion
|
|
3074
|
+
//#region ../blocks/src/system/runtime/nodes/booking-form.completion.tsx
|
|
3075
|
+
function BookingFormCompletion({ resourceName, successMessage, redirectState, localNote }) {
|
|
3076
|
+
const note = redirectState.kind === "success" ? readAppointmentMailingListNote(redirectState.sessionId) : localNote;
|
|
3077
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(SuccessMessage, {
|
|
3078
|
+
message: getBookingSuccessMessage(successMessage),
|
|
3079
|
+
resourceName
|
|
3080
|
+
}), note ? /* @__PURE__ */ jsx(BookingMailingListNote, {
|
|
3081
|
+
note,
|
|
3082
|
+
context: "booking",
|
|
3083
|
+
className: "rb-mt-4"
|
|
3084
|
+
}) : null] });
|
|
3085
|
+
}
|
|
3086
|
+
//#endregion
|
|
3087
|
+
//#region ../blocks/src/system/runtime/nodes/booking-form.submit-handler.ts
|
|
3088
|
+
function appendRebookFlag(url, enabled) {
|
|
3089
|
+
if (!enabled) return url;
|
|
3090
|
+
const nextUrl = new URL(url);
|
|
3091
|
+
nextUrl.searchParams.set("rebook", "1");
|
|
3092
|
+
return nextUrl.toString();
|
|
3093
|
+
}
|
|
3094
|
+
function createBookingFormSubmitHandler(input) {
|
|
3095
|
+
return async () => {
|
|
3096
|
+
const { successUrl, cancelUrl } = buildCheckoutReturnUrls("booking", input.bookingAnchorId);
|
|
3097
|
+
const result = await input.booking.actions.submit({
|
|
3098
|
+
redirect: "manual",
|
|
3099
|
+
successUrl: appendRebookFlag(successUrl, input.isPortalRebook),
|
|
3100
|
+
cancelUrl: appendRebookFlag(cancelUrl, input.isPortalRebook)
|
|
3101
|
+
});
|
|
3102
|
+
if (!result.ok) return;
|
|
3103
|
+
if (result.outcome.kind === "checkout_redirect") {
|
|
3104
|
+
saveAppointmentMailingListNote(result.outcome.sessionId, result.outcome.mailingListSignupNote);
|
|
3105
|
+
window.location.href = result.outcome.checkoutUrl;
|
|
3106
|
+
return;
|
|
3107
|
+
}
|
|
3108
|
+
input.setLocalMailingListNote(result.outcome.mailingListSignupNote ?? null);
|
|
3109
|
+
};
|
|
3110
|
+
}
|
|
3111
|
+
//#endregion
|
|
3005
3112
|
//#region ../blocks/src/system/runtime/nodes/booking-form.client.tsx
|
|
3006
|
-
const PORTAL_REBOOK_QUERY_PARAM = "rebook";
|
|
3007
|
-
const PORTAL_REBOOK_QUERY_VALUE = "1";
|
|
3008
3113
|
const REBOOK_COMPLETION_MODE_VERIFIED_CHECKOUT = "verified_checkout";
|
|
3009
3114
|
const REBOOK_COMPLETION_MODE_BYPASSED = "bypassed";
|
|
3010
3115
|
function getBookingRedirectLocationSnapshot() {
|
|
@@ -3017,12 +3122,6 @@ function getBookingRedirectLocationSnapshot() {
|
|
|
3017
3122
|
hash: window.location.hash
|
|
3018
3123
|
};
|
|
3019
3124
|
}
|
|
3020
|
-
function appendRebookFlag(url, enabled) {
|
|
3021
|
-
if (!enabled) return url;
|
|
3022
|
-
const nextUrl = new URL(url);
|
|
3023
|
-
nextUrl.searchParams.set(PORTAL_REBOOK_QUERY_PARAM, PORTAL_REBOOK_QUERY_VALUE);
|
|
3024
|
-
return nextUrl.toString();
|
|
3025
|
-
}
|
|
3026
3125
|
/**
|
|
3027
3126
|
* Themed surface container for every booking view state (wizard, success,
|
|
3028
3127
|
* verifying). Styled by the shared registration-surface layer.
|
|
@@ -3045,12 +3144,16 @@ const BookingFormClient = ({ siteId: siteIdProp, render }) => {
|
|
|
3045
3144
|
const isPortalRebook = render.hydration.rebookContext?.kind === "portal_rebook";
|
|
3046
3145
|
const hasLoggedRebookCompletionRef = useRef(false);
|
|
3047
3146
|
const [redirectState] = useState(() => getBookingRedirectStateFromLocation(getBookingRedirectLocationSnapshot()));
|
|
3147
|
+
const [localMailingListNote, setLocalMailingListNote] = useState(null);
|
|
3048
3148
|
const showSpamProtection = render.hydration.spamProtectionEnabled ?? isSpamProtectionEnabled();
|
|
3049
3149
|
const api = useBlockApi();
|
|
3050
3150
|
const hasPortalAuth = api.config.auth.type === "bearer" || api.config.authOverrides?.portal?.type === "bearer";
|
|
3151
|
+
const formId = render.hydration.formId ?? form?.id ?? "booking-form";
|
|
3051
3152
|
const booking = useHeadlessBookingFlow({
|
|
3153
|
+
mailingList: render.hydration.mailingList,
|
|
3154
|
+
siteName: render.hydration.siteName,
|
|
3052
3155
|
siteId,
|
|
3053
|
-
formId
|
|
3156
|
+
formId,
|
|
3054
3157
|
form,
|
|
3055
3158
|
services,
|
|
3056
3159
|
serviceCategories: render.hydration.serviceCategories,
|
|
@@ -3120,22 +3223,20 @@ const BookingFormClient = ({ siteId: siteIdProp, render }) => {
|
|
|
3120
3223
|
children: render.display.message ?? "Booking form not found. Please check your configuration."
|
|
3121
3224
|
})
|
|
3122
3225
|
});
|
|
3123
|
-
const handleComplete =
|
|
3124
|
-
|
|
3125
|
-
|
|
3126
|
-
|
|
3127
|
-
|
|
3128
|
-
|
|
3129
|
-
});
|
|
3130
|
-
if (!result.ok) return;
|
|
3131
|
-
if (result.outcome.kind === "checkout_redirect") window.location.href = result.outcome.checkoutUrl;
|
|
3132
|
-
};
|
|
3226
|
+
const handleComplete = createBookingFormSubmitHandler({
|
|
3227
|
+
booking,
|
|
3228
|
+
bookingAnchorId,
|
|
3229
|
+
isPortalRebook,
|
|
3230
|
+
setLocalMailingListNote
|
|
3231
|
+
});
|
|
3133
3232
|
if (viewState.kind === "success") return /* @__PURE__ */ jsx(BookingSurface, {
|
|
3134
3233
|
id: bookingAnchorId,
|
|
3135
3234
|
className: render.display.className,
|
|
3136
|
-
children: /* @__PURE__ */ jsx(
|
|
3137
|
-
|
|
3138
|
-
resourceName: viewState.resourceName
|
|
3235
|
+
children: /* @__PURE__ */ jsx(BookingFormCompletion, {
|
|
3236
|
+
successMessage: render.display.successMessage,
|
|
3237
|
+
resourceName: viewState.resourceName,
|
|
3238
|
+
redirectState,
|
|
3239
|
+
localNote: localMailingListNote
|
|
3139
3240
|
})
|
|
3140
3241
|
});
|
|
3141
3242
|
if (viewState.kind === "verifying") return /* @__PURE__ */ jsx(BookingSurface, {
|