@riverbankcms/sdk 0.146.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.
Files changed (195) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/{PreviewEditorSidebar-kg2r2Fyi.mjs → PreviewEditorSidebar-DtpB3_sS.mjs} +51 -33
  3. package/dist/{PreviewEditorUI-sWMLp5dT.mjs → PreviewEditorUI-DxTLgaHo.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-Cg51xq1w.mjs → PreviewQueryProvider-Dd4dxOiU.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-h2ti3Hch.mjs → SdkPreviewModeRuntime-DMMNCngt.mjs} +39 -12
  6. package/dist/{SiteChromeCustomizeContext-DEACFH9m.mjs → SiteChromeCustomizeContext-DQXZXiqS.mjs} +2499 -1682
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +198 -0
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +18 -0
  9. package/dist/_dts/api/src/accountApi.d.ts +5 -5
  10. package/dist/_dts/api/src/bookingConfig.d.ts +16 -0
  11. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +4 -13
  12. package/dist/_dts/api/src/bookingOperations.d.ts +2 -44
  13. package/dist/_dts/api/src/bookingPeople.d.ts +92 -0
  14. package/dist/_dts/api/src/bookingPeopleEndpointDefinitions.d.ts +38 -0
  15. package/dist/_dts/api/src/bookingRecords.d.ts +11 -49
  16. package/dist/_dts/api/src/bookingSettingsSections.d.ts +1 -1
  17. package/dist/_dts/api/src/bookings.d.ts +1 -0
  18. package/dist/_dts/api/src/endpoints.d.ts +587 -561
  19. package/dist/_dts/api/src/eventManagementContracts.d.ts +23 -8
  20. package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +1 -1
  21. package/dist/_dts/api/src/index.d.ts +3 -2
  22. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  23. package/dist/_dts/api/src/launchReadiness.d.ts +1 -6
  24. package/dist/_dts/api/src/mailingListIntegration.d.ts +6 -0
  25. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +1 -1
  26. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +15 -0
  27. package/dist/_dts/api/src/occurrenceScheduling.d.ts +19 -0
  28. package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +48 -0
  29. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +7 -0
  30. package/dist/_dts/api/src/sdk-event-upsert.d.ts +15 -0
  31. package/dist/_dts/api/src/sdkCourseBooking.d.ts +4 -4
  32. package/dist/_dts/api/src/siteLifecycleEndpoints.d.ts +61 -0
  33. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +5 -18
  34. package/dist/_dts/api/src/siteOnboarding.d.ts +2 -14
  35. package/dist/_dts/blocks/src/PageRenderer.d.ts +3 -4
  36. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +8 -0
  37. package/dist/_dts/blocks/src/index.d.ts +1 -1
  38. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +22 -4
  39. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -0
  40. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +4 -1
  41. package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +4 -0
  42. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +12 -0
  43. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +12 -0
  44. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +6 -0
  45. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +8 -0
  46. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +2 -0
  47. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.completion.d.ts +9 -0
  48. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +9 -0
  49. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +19 -0
  50. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-choice.d.ts +5 -0
  51. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-note.d.ts +3 -0
  52. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-state.d.ts +9 -0
  53. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.reserved-fields.d.ts +1 -1
  54. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.server.d.ts +1 -1
  55. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +2 -0
  56. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-handler.d.ts +8 -0
  57. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-success.d.ts +9 -0
  58. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +3 -0
  59. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/AttendeeDetailsStep.d.ts +3 -0
  60. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SuccessStep.d.ts +3 -0
  61. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +3 -0
  62. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/sessionStorage.d.ts +2 -0
  63. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +6 -0
  64. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +3 -0
  65. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +8 -0
  66. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +9 -0
  67. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.block-submission.d.ts +2 -4
  68. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +2 -0
  69. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingMailingListNote.d.ts +6 -0
  70. package/dist/_dts/blocks/src/system/runtime/shared/mailingListSignupCopy.d.ts +6 -0
  71. package/dist/_dts/blocks/src/system/runtime/shared/types.d.ts +1 -0
  72. package/dist/_dts/blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.d.ts +3 -2
  73. package/dist/_dts/blocks/src/system/transforms/registry/core.d.ts +2 -0
  74. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +1 -3
  75. package/dist/_dts/core/src/index.d.ts +1 -1
  76. package/dist/_dts/core/src/mailing-list-runtime.d.ts +15 -0
  77. package/dist/_dts/core/src/mailing-list-setup.d.ts +2 -0
  78. package/dist/_dts/core/src/mailing-list-submission.d.ts +6 -0
  79. package/dist/_dts/core/src/navigation-portal-labels.d.ts +9 -0
  80. package/dist/_dts/core/src/participants.d.ts +0 -38
  81. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +102 -22
  82. package/dist/_dts/editor-blocks/src/block-editor/actionPresentation.d.ts +1 -0
  83. package/dist/_dts/preview-next/src/client/blocks/EditablePageRenderer.d.ts +7 -1
  84. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +4 -3
  85. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +1 -0
  86. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +1 -0
  87. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +1 -1
  88. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +2 -2
  89. package/dist/_dts/sdk/src/version.d.ts +1 -1
  90. package/dist/_dts/theme-core/src/buttons/effects/types.d.ts +1 -1
  91. package/dist/_dts/theme-core/src/footer/effectiveNavLinkStyle.d.ts +13 -0
  92. package/dist/_dts/theme-core/src/footer/index.d.ts +1 -0
  93. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  94. package/dist/_dts/theme-core/src/header/effectiveNavLinkStyle.d.ts +17 -0
  95. package/dist/_dts/theme-core/src/header/generateHeaderLogoStyles.d.ts +15 -0
  96. package/dist/_dts/theme-core/src/header/generateHeaderNavLinkStyles.d.ts +4 -0
  97. package/dist/_dts/theme-core/src/header/index.d.ts +3 -0
  98. package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +1 -1
  99. package/dist/_dts/theme-core/src/header/openingForegroundProjection.d.ts +7 -0
  100. package/dist/_dts/theme-core/src/header/rootPaint.d.ts +4 -0
  101. package/dist/_dts/theme-core/src/navigation/effectPolicy.d.ts +38 -0
  102. package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +4 -0
  103. package/dist/_dts/theme-core/src/navigation/types.d.ts +4 -0
  104. package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +1 -1
  105. package/dist/_dts/theme-core/src/surfaces/foregroundContract.d.ts +7 -0
  106. package/dist/_dts/theme-core/src/surfaces/foregroundInteraction.d.ts +29 -22
  107. package/dist/_dts/theme-core/src/surfaces/foregroundRoles.d.ts +10 -2
  108. package/dist/_dts/theme-core/src/surfaces/resolveSurfaceForeground.d.ts +9 -0
  109. package/dist/_dts/theme-core/src/utils/cssDeclarations.d.ts +2 -0
  110. package/dist/_dts/ui/src/badge.d.ts +2 -1
  111. package/dist/_dts/ui/src/button.d.ts +1 -1
  112. package/dist/_dts/ui/src/combobox-keys.d.ts +23 -0
  113. package/dist/_dts/ui/src/combobox-rows.d.ts +34 -0
  114. package/dist/_dts/ui/src/combobox.d.ts +26 -1
  115. package/dist/_dts/ui/src/date-picker.d.ts +5 -8
  116. package/dist/_dts/ui/src/editor-item-card.d.ts +1 -0
  117. package/dist/_dts/ui/src/field-trigger.d.ts +39 -0
  118. package/dist/_dts/ui/src/fieldControl.d.ts +27 -0
  119. package/dist/_dts/ui/src/index.d.ts +4 -1
  120. package/dist/_dts/ui/src/native-select.d.ts +8 -0
  121. package/dist/_dts/ui/src/popover.d.ts +7 -1
  122. package/dist/_dts/ui/src/segmented-control.d.ts +4 -0
  123. package/dist/_dts/ui/src/surface.d.ts +1 -1
  124. package/dist/client/{BookingConsentAgreement-BQKL045f.mjs → BookingMailingListNote-1n4Ch_u_.mjs} +15 -4
  125. package/dist/client/{CheckboxChoice--W2n6yKs.mjs → CheckboxChoice-B33MqoUo.mjs} +1 -1
  126. package/dist/client/{DiscountCodeDisclosure-CsOtjFY7.mjs → DiscountCodeDisclosure-CKJtz0mY.mjs} +1 -1
  127. package/dist/client/{EventCombined.client-BdRjVbhH.mjs → EventCombined.client-C0pgma9y.mjs} +7 -7
  128. package/dist/client/{EventListing.client-DBxC6xOU.mjs → EventListing.client-4fhLOvHP.mjs} +2 -2
  129. package/dist/client/{LeafletStaticMap-mHEJKrTs.mjs → LeafletStaticMap-DScC4F3w.mjs} +1 -1
  130. package/dist/client/{scrollToBlock-BNgaEUpo.mjs → TerminalPanel-B5ZUsYhe.mjs} +77 -77
  131. package/dist/client/{ThemedButton-CE5KYT6z.mjs → ThemedButton-DoVIV1Ao.mjs} +2 -2
  132. package/dist/client/{accordion-BEQNSptH.mjs → accordion-CoT5g7zo.mjs} +1 -1
  133. package/dist/client/{bookingForm-AMr-s5vw.mjs → bookingForm-BWxB46xD.mjs} +226 -106
  134. package/dist/client/bookings.mjs +367 -188
  135. package/dist/client/{carousel-Bbt_QgJy.mjs → carousel-DtNYWFd3.mjs} +2 -2
  136. package/dist/client/{carousel.client-jahpU9Vz.mjs → carousel.client-A2lG-9od.mjs} +1 -1
  137. package/dist/client/{cart-CnWi30zJ.mjs → cart-z4qZih1Y.mjs} +3 -3
  138. package/dist/client/{checkout-f3nkWgd4.mjs → checkout-DpL7euFH.mjs} +3 -3
  139. package/dist/client/{checkoutUrls-CW3-78uu.mjs → checkoutUrls-BEfR7kVu.mjs} +1 -1
  140. package/dist/client/client.mjs +2125 -1420
  141. package/dist/client/{colorStyles-CuJBiS-1.mjs → colorStyles-j5U9v5JA.mjs} +5 -1
  142. package/dist/client/{context-Bc8T6pCe.mjs → context-C8TinPJc.mjs} +1 -1
  143. package/dist/client/{dates-DUsCEzLb.mjs → dates-vwwxTeB0.mjs} +2 -2
  144. package/dist/client/{eventCalendar-CKwgXui5.mjs → eventCalendar-DIbHfJXO.mjs} +10 -10
  145. package/dist/client/{eventCombined-CBAOSTGR.mjs → eventCombined-DoGMJ6cg.mjs} +4 -4
  146. package/dist/client/{eventDetails-Dh-_WiBD.mjs → eventDetails-BjN9v6a1.mjs} +4 -4
  147. package/dist/client/{eventListing-CA3frIH5.mjs → eventListing-DajjWgOv.mjs} +4 -4
  148. package/dist/client/{eventRegistration-BHtsgdcg.mjs → eventRegistration-DMq9gMA-.mjs} +109 -41
  149. package/dist/client/{form-C2h3YAcg.mjs → form-Qf6qTbos.mjs} +5 -5
  150. package/dist/client/{headerSection-lwMuMTH9.mjs → headerSection-D7qJrqFX.mjs} +3 -3
  151. package/dist/client/hooks.mjs +661 -116
  152. package/dist/client/{locationMap-DJ2bLODV.mjs → locationMap-CCF9-t_0.mjs} +4 -4
  153. package/dist/client/{FieldValidationMessage-AYanWFb-.mjs → mailingListSignupCopy-DZSHZrm6.mjs} +14 -1
  154. package/dist/client/{media-BtJ37tzS.mjs → media-CwBGetqC.mjs} +1 -1
  155. package/dist/client/{newsletterForm-8Pu5K32g.mjs → newsletterForm-DzCLSP4S.mjs} +6 -6
  156. package/dist/client/{pricing-HHx3IgBz.mjs → pricing-Cgxv2KLC.mjs} +1 -1
  157. package/dist/client/{productDetail-C_1odnAf.mjs → productDetail-ru9w5GHx.mjs} +3 -3
  158. package/dist/client/{productList-CtCv-Nmx.mjs → productList-zaapKSl-.mjs} +3 -3
  159. package/dist/client/{propsDecoder-Dcgsncxb.mjs → propsDecoder-CwvvNOHx.mjs} +52 -6
  160. package/dist/client/rendering/client.mjs +951 -369
  161. package/dist/client/rendering/islands.mjs +19 -19
  162. package/dist/client/rendering.mjs +2153 -1393
  163. package/dist/client/{routeIslandApiConfig-CWLP7wu3.mjs → routeIslandApiConfig-BwVFo0Y4.mjs} +1 -1
  164. package/dist/client/{shop-commerce-B88zmWWo.mjs → shop-commerce-De7gEnkA.mjs} +8 -8
  165. package/dist/client/{shop-commerce-store-DtSfkKuX.mjs → shop-commerce-store-B3MCxIBW.mjs} +1 -1
  166. package/dist/client/{shop-DQXrQ8kJ.mjs → shop-mktkXvbV.mjs} +7 -7
  167. package/dist/client/{shopShared-cuaONpkJ.mjs → shopShared-TqExh235.mjs} +5 -5
  168. package/dist/client/{useEventFilters-Bukew6Gb.mjs → useEventFilters-n_OjkIjX.mjs} +8 -8
  169. package/dist/preview-next/before-render.mjs +122 -50
  170. package/dist/preview-next/client/runtime.mjs +4 -4
  171. package/dist/preview-next/editor-base.css +53 -2
  172. package/dist/preview-next/editor-chrome.css +7 -4
  173. package/dist/preview-next/keepAlive.mjs +122 -50
  174. package/dist/preview-next/middleware.mjs +122 -50
  175. package/dist/{previewAuthStore-h5IgbSp4.mjs → previewAuthStore-C_EHQ5XA.mjs} +122 -50
  176. package/dist/{sdk-runtime-DTc1uIXn.mjs → sdk-runtime-BIkJg5y1.mjs} +2 -2
  177. package/dist/{separator-BpHS1KZK.mjs → separator-C9qDP95Z.mjs} +1 -1
  178. package/dist/server/components.mjs +25345 -24942
  179. package/dist/server/config-validation.mjs +711 -163
  180. package/dist/server/config.mjs +711 -163
  181. package/dist/server/data.mjs +709 -162
  182. package/dist/server/index.mjs +123 -51
  183. package/dist/server/navigation.mjs +13 -2
  184. package/dist/server/next.mjs +4538 -4169
  185. package/dist/server/page-converter.mjs +107 -64
  186. package/dist/server/prebuild.mjs +1 -1
  187. package/dist/server/rendering/server.mjs +2509 -2104
  188. package/dist/server/rendering.mjs +25526 -25104
  189. package/dist/server/routing.mjs +750 -289
  190. package/dist/server/server.mjs +671 -148
  191. package/dist/server/theme-bridge.mjs +66 -17
  192. package/dist/server/theme.mjs +5 -1
  193. package/dist/styles/index.css +32 -4
  194. package/package.json +1 -1
  195. package/dist/_dts/core/src/participant-identity.d.ts +0 -135
@@ -1,20 +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-CuJBiS-1.mjs";
3
- import { i as buildBookingPaymentSelectionViewModel, n as StepIndicator, r as usePolling, t as BookingConsentAgreement } from "./BookingConsentAgreement-BQKL045f.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, Rt as isBookingRequirementConsentFieldId, St as formatBookingCentsAsCurrencyInput, Tt as getBookingServiceSlidingScale, Ut as err, Vt as assertNever, Zt as addLocalScheduleDays, bt as logger, jt as resolveBookingPaymentStep, kt as prepareBookingSubmission, on as parseBookingLocalDate, qt as reportWorkflowSuccess, rn as formatLocalScheduleDate, sn as resolveBookingTimeZoneId, t as defineIslandPropsDecoder, tn as formatBookingInstant, wt as getBookingRedirectStateFromLocation, xt as deriveBookingFormViewState, yn as formatCurrencyAmount } from "./propsDecoder-Dcgsncxb.mjs";
5
- import { n as useBlockApi, t as BlockApiProvider } from "./context-Bc8T6pCe.mjs";
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 { a as CheckIcon, i as StateIcon, n as useDiscountCodeUi, r as TerminalPanel, t as scrollToBlock } from "./scrollToBlock-BNgaEUpo.mjs";
8
- import { t as DiscountCodeDisclosure } from "./DiscountCodeDisclosure-CsOtjFY7.mjs";
9
- import { i as SpinnerNode, t as ThemedButton } from "./ThemedButton-CE5KYT6z.mjs";
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 { n as getFieldValidationControlProps, t as FieldValidationMessage } from "./FieldValidationMessage-AYanWFb-.mjs";
12
- import { t as buildCheckoutReturnUrls } from "./checkoutUrls-CW3-78uu.mjs";
13
- import { t as CheckboxChoice } from "./CheckboxChoice--W2n6yKs.mjs";
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";
14
14
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
15
- import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-CWLP7wu3.mjs";
15
+ import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-BwVFo0Y4.mjs";
16
16
  import React, { useCallback, useEffect, useLayoutEffect, useMemo, useReducer, useRef, useState } from "react";
17
- import { jsx, jsxs } from "react/jsx-runtime";
17
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
18
18
  //#region ../core/src/appointment-service-categories.ts
19
19
  /**
20
20
  * Groups services under their categories.
@@ -55,30 +55,6 @@ function layoutServicesByCategory(categories, services, options) {
55
55
  };
56
56
  }
57
57
  //#endregion
58
- //#region ../blocks/src/system/runtime/components/booking/SuccessMessage.tsx
59
- const SuccessMessage = ({ message, resourceName, className }) => {
60
- return /* @__PURE__ */ jsx(TerminalPanel, {
61
- tone: "success",
62
- title: "Booking confirmed",
63
- icon: /* @__PURE__ */ jsx(StateIcon, {
64
- variant: "success",
65
- children: /* @__PURE__ */ jsx(CheckIcon, { strokeWidth: 3 })
66
- }),
67
- body: /* @__PURE__ */ jsx("p", {
68
- className: "ab-text",
69
- children: message
70
- }),
71
- secondaryBody: resourceName ? /* @__PURE__ */ jsxs("p", {
72
- className: "ab-text rb-on-surface--muted",
73
- children: ["Practitioner: ", resourceName]
74
- }) : null,
75
- className: ["ab-center", className ?? ""].join(" ").trim(),
76
- titleClassName: "ab-terminal-title",
77
- role: "alert",
78
- live: "polite"
79
- });
80
- };
81
- //#endregion
82
58
  //#region ../blocks/src/system/runtime/hooks/useSelectedAppointmentConsentForm.ts
83
59
  function useSelectedAppointmentConsentForm(form, selectedService) {
84
60
  return useMemo(() => projectSelectedAppointmentConsentIntoForm(form, resolveSelectedAppointmentConsent(selectedService)), [form, selectedService]);
@@ -643,6 +619,7 @@ function useBookingSubmission(_siteId) {
643
619
  startAt: data.startAt,
644
620
  endAt: data.endAt,
645
621
  customFields: data.customFields,
622
+ mailingListOptIn: data.mailingListOptIn,
646
623
  timezone: data.timezone,
647
624
  customerPassId: data.customerPassId
648
625
  }) : await api.submitBooking({
@@ -652,6 +629,7 @@ function useBookingSubmission(_siteId) {
652
629
  startAt: data.startAt,
653
630
  endAt: data.endAt,
654
631
  customFields: data.customFields,
632
+ mailingListOptIn: data.mailingListOptIn,
655
633
  timezone: data.timezone,
656
634
  discountCode: data.discountCode,
657
635
  selectedSlidingAmount: data.selectedSlidingAmount,
@@ -687,6 +665,40 @@ function useBookingSubmission(_siteId) {
687
665
  };
688
666
  }
689
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
690
702
  //#region ../blocks/src/system/runtime/nodes/booking-form.validationErrors.ts
691
703
  function omitRecordKey(record, key) {
692
704
  if (!(key in record)) return record;
@@ -728,6 +740,40 @@ function clearBookingFieldError(errors, fieldId) {
728
740
  };
729
741
  }
730
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
731
777
  //#region ../blocks/src/system/runtime/nodes/booking-form.field-values.ts
732
778
  function collectInitialBookingFieldValues(initialData) {
733
779
  const values = {};
@@ -753,6 +799,7 @@ function createInitialBookingFlowReducerState(input) {
753
799
  selectedDate: toOptionalString(initialData.selectedDate),
754
800
  selectedSlot: null,
755
801
  fieldValues: collectInitialBookingFieldValues(initialData),
802
+ mailingListOptIn: initialData.mailingListOptIn === true,
756
803
  touchedFields: {},
757
804
  attemptedStepIds: {},
758
805
  discountCode: toOptionalString(initialData.discountCode) ?? "",
@@ -802,6 +849,7 @@ function applyAvailabilitySelectionInvalidation(state, invalidation) {
802
849
  };
803
850
  }
804
851
  function bookingFlowReducer(state, event) {
852
+ if (isBookingContactEvent(event)) return applyBookingContactEvent(state, event);
805
853
  switch (event.type) {
806
854
  case "service-selected": return applyBookingServiceSelection(state, event.serviceId);
807
855
  case "resource-selected": return {
@@ -824,21 +872,6 @@ function bookingFlowReducer(state, event) {
824
872
  feedback: clearAvailabilityFeedback(state.feedback),
825
873
  validationErrors: clearBookingFormError(state.validationErrors)
826
874
  };
827
- case "field-updated": return {
828
- ...state,
829
- fieldValues: {
830
- ...state.fieldValues,
831
- [event.fieldId]: event.value
832
- },
833
- validationErrors: clearBookingFieldError(clearBookingFormError(state.validationErrors), event.fieldId)
834
- };
835
- case "field-touched": return {
836
- ...state,
837
- touchedFields: {
838
- ...state.touchedFields,
839
- [event.fieldId]: true
840
- }
841
- };
842
875
  case "step-advance-attempted": return state.attemptedStepIds[event.stepId] ? state : {
843
876
  ...state,
844
877
  attemptedStepIds: {
@@ -976,6 +1009,7 @@ function deriveBookingSlotDisplayOptions(input) {
976
1009
  function toBookingFormData(state) {
977
1010
  return {
978
1011
  ...state.fieldValues,
1012
+ mailingListOptIn: state.mailingListOptIn,
979
1013
  serviceId: state.selectedServiceId,
980
1014
  resourceId: state.selectedResourceId ?? state.selectedSlot?.resourceId,
981
1015
  selectedDate: state.selectedDate,
@@ -1238,10 +1272,7 @@ function buildBookingSubmitPlan(input) {
1238
1272
  };
1239
1273
  const prepared = prepareBookingSubmission({
1240
1274
  formId: input.formId,
1241
- data: toBookingFormData({
1242
- ...input.state,
1243
- altchaSolution: input.altchaSolution ?? input.state.altchaSolution
1244
- }),
1275
+ data: bookingFormDataWithEligibleOptIn(toBookingFormData(input.state), Boolean(input.mailingListEligible)),
1245
1276
  services: input.services,
1246
1277
  defaultServiceId: input.defaultServiceId,
1247
1278
  defaultResourceId: input.defaultResourceId,
@@ -1427,6 +1458,8 @@ function useHeadlessBookingFlow(options) {
1427
1458
  const canLoadAppointmentPackages = Boolean(options.enableAppointmentPackages && hasPortalBearerAuth && selectedService && !selectedServiceSlidingScale && (selectedService.priceAmount ?? 0) > 0);
1428
1459
  const appointmentPackagesUnavailableReason = !options.enableAppointmentPackages ? "disabled" : !selectedService || selectedServiceSlidingScale || (selectedService.priceAmount ?? 0) <= 0 ? "missing-priced-service" : !hasPortalBearerAuth ? "missing-portal-auth" : null;
1429
1460
  const data = useMemo(() => toBookingFormData(state), [state]);
1461
+ const mailingList = resolveBookingSignupOffer(options.mailingList, options.siteName);
1462
+ const mailingListEligible = mailingList !== null;
1430
1463
  const availabilityDatesQuery = useMemo(() => buildBookingAvailabilityQuery({
1431
1464
  serviceId: selectedServiceId,
1432
1465
  resourceId: selectedResourceId,
@@ -1687,7 +1720,8 @@ function useHeadlessBookingFlow(options) {
1687
1720
  viewerTimeZone: latest.viewerTimeZone,
1688
1721
  redirect: submitOptions?.redirect ?? "manual",
1689
1722
  successUrl: submitOptions?.successUrl,
1690
- cancelUrl: submitOptions?.cancelUrl
1723
+ cancelUrl: submitOptions?.cancelUrl,
1724
+ mailingListEligible
1691
1725
  });
1692
1726
  if (!plan.ok) {
1693
1727
  dispatch({
@@ -1720,37 +1754,18 @@ function useHeadlessBookingFlow(options) {
1720
1754
  message: result.error
1721
1755
  };
1722
1756
  }
1723
- if (result.data.type === "checkout_redirect") {
1724
- if (plan.redirect === "auto" && typeof window !== "undefined") latest.navigateToCheckout(result.data.checkoutUrl);
1725
- return {
1726
- ok: true,
1727
- outcome: {
1728
- kind: "checkout_redirect",
1729
- checkoutUrl: result.data.checkoutUrl
1730
- }
1731
- };
1732
- }
1733
- dispatch({
1734
- type: "feedback-set",
1735
- feedback: {
1736
- kind: "success",
1737
- message: getBookingSuccessMessage(latest.successMessage),
1738
- resourceName: result.data.appointment.resourceName
1739
- }
1757
+ return completeBookingSubmission({
1758
+ data: result.data,
1759
+ redirect: plan.redirect,
1760
+ successMessage: latest.successMessage,
1761
+ navigateToCheckout: latest.navigateToCheckout,
1762
+ dispatch
1740
1763
  });
1741
- return {
1742
- ok: true,
1743
- outcome: {
1744
- kind: "booked",
1745
- appointmentId: result.data.appointment.id,
1746
- resourceName: result.data.appointment.resourceName
1747
- }
1748
- };
1749
1764
  } finally {
1750
1765
  submittingRef.current = false;
1751
1766
  dispatch({ type: "submission-finished" });
1752
1767
  }
1753
- }, [latestRef]);
1768
+ }, [latestRef, mailingListEligible]);
1754
1769
  const actions = useMemo(() => ({
1755
1770
  selectService: (serviceId) => dispatch({
1756
1771
  type: "service-selected",
@@ -1773,6 +1788,10 @@ function useHeadlessBookingFlow(options) {
1773
1788
  fieldId: unsafeAsBookingFieldId(fieldId),
1774
1789
  value
1775
1790
  }),
1791
+ setMailingListOptIn: (checked) => dispatch({
1792
+ type: "mailing-list-opt-in-set",
1793
+ checked
1794
+ }),
1776
1795
  markFieldTouched: (fieldId) => dispatch({
1777
1796
  type: "field-touched",
1778
1797
  fieldId: unsafeAsBookingFieldId(fieldId)
@@ -1931,6 +1950,8 @@ function useHeadlessBookingFlow(options) {
1931
1950
  appointmentPackages: appointmentPackagesModel
1932
1951
  };
1933
1952
  return {
1953
+ mailingList,
1954
+ mailingListOptIn: state.mailingListOptIn,
1934
1955
  status,
1935
1956
  view,
1936
1957
  steps: stepState.steps,
@@ -2228,6 +2249,25 @@ const TimeSlotSelector = ({ value, onChange, slots, isLoading, timezone, require
2228
2249
  });
2229
2250
  };
2230
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
2231
2271
  //#region ../blocks/src/system/runtime/nodes/booking-form.service-choices.tsx
2232
2272
  function optionCardClassName(isSelected) {
2233
2273
  return `rb-option-card${isSelected ? " rb-option-card--selected" : ""}`;
@@ -2707,12 +2747,17 @@ function PaymentOptionContent({ description, helperText, id, summaryRows, title
2707
2747
  });
2708
2748
  }
2709
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);
2710
2755
  return /* @__PURE__ */ jsx("div", {
2711
2756
  className: "rb-space-y-6",
2712
- children: fields.map((field) => /* @__PURE__ */ jsx(DefaultDynamicField, {
2757
+ children: fields.map((field, index) => /* @__PURE__ */ jsxs(React.Fragment, { children: [/* @__PURE__ */ jsx(DefaultDynamicField, {
2713
2758
  booking,
2714
2759
  field
2715
- }, field.id))
2760
+ }), index === lastContactIndex && booking.mailingList ? /* @__PURE__ */ jsx(BookingMailingListChoice, { booking }) : null] }, field.id))
2716
2761
  });
2717
2762
  }
2718
2763
  function DefaultDynamicField({ booking, field }) {
@@ -2983,9 +3028,88 @@ function DefaultBookingErrorSummary({ errors, id }) {
2983
3028
  });
2984
3029
  }
2985
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
2986
3112
  //#region ../blocks/src/system/runtime/nodes/booking-form.client.tsx
2987
- const PORTAL_REBOOK_QUERY_PARAM = "rebook";
2988
- const PORTAL_REBOOK_QUERY_VALUE = "1";
2989
3113
  const REBOOK_COMPLETION_MODE_VERIFIED_CHECKOUT = "verified_checkout";
2990
3114
  const REBOOK_COMPLETION_MODE_BYPASSED = "bypassed";
2991
3115
  function getBookingRedirectLocationSnapshot() {
@@ -2998,12 +3122,6 @@ function getBookingRedirectLocationSnapshot() {
2998
3122
  hash: window.location.hash
2999
3123
  };
3000
3124
  }
3001
- function appendRebookFlag(url, enabled) {
3002
- if (!enabled) return url;
3003
- const nextUrl = new URL(url);
3004
- nextUrl.searchParams.set(PORTAL_REBOOK_QUERY_PARAM, PORTAL_REBOOK_QUERY_VALUE);
3005
- return nextUrl.toString();
3006
- }
3007
3125
  /**
3008
3126
  * Themed surface container for every booking view state (wizard, success,
3009
3127
  * verifying). Styled by the shared registration-surface layer.
@@ -3026,12 +3144,16 @@ const BookingFormClient = ({ siteId: siteIdProp, render }) => {
3026
3144
  const isPortalRebook = render.hydration.rebookContext?.kind === "portal_rebook";
3027
3145
  const hasLoggedRebookCompletionRef = useRef(false);
3028
3146
  const [redirectState] = useState(() => getBookingRedirectStateFromLocation(getBookingRedirectLocationSnapshot()));
3147
+ const [localMailingListNote, setLocalMailingListNote] = useState(null);
3029
3148
  const showSpamProtection = render.hydration.spamProtectionEnabled ?? isSpamProtectionEnabled();
3030
3149
  const api = useBlockApi();
3031
3150
  const hasPortalAuth = api.config.auth.type === "bearer" || api.config.authOverrides?.portal?.type === "bearer";
3151
+ const formId = render.hydration.formId ?? form?.id ?? "booking-form";
3032
3152
  const booking = useHeadlessBookingFlow({
3153
+ mailingList: render.hydration.mailingList,
3154
+ siteName: render.hydration.siteName,
3033
3155
  siteId,
3034
- formId: render.hydration.formId ?? form?.id ?? "booking-form",
3156
+ formId,
3035
3157
  form,
3036
3158
  services,
3037
3159
  serviceCategories: render.hydration.serviceCategories,
@@ -3101,22 +3223,20 @@ const BookingFormClient = ({ siteId: siteIdProp, render }) => {
3101
3223
  children: render.display.message ?? "Booking form not found. Please check your configuration."
3102
3224
  })
3103
3225
  });
3104
- const handleComplete = async () => {
3105
- const { successUrl, cancelUrl } = buildCheckoutReturnUrls("booking", bookingAnchorId);
3106
- const result = await booking.actions.submit({
3107
- redirect: "manual",
3108
- successUrl: appendRebookFlag(successUrl, isPortalRebook),
3109
- cancelUrl: appendRebookFlag(cancelUrl, isPortalRebook)
3110
- });
3111
- if (!result.ok) return;
3112
- if (result.outcome.kind === "checkout_redirect") window.location.href = result.outcome.checkoutUrl;
3113
- };
3226
+ const handleComplete = createBookingFormSubmitHandler({
3227
+ booking,
3228
+ bookingAnchorId,
3229
+ isPortalRebook,
3230
+ setLocalMailingListNote
3231
+ });
3114
3232
  if (viewState.kind === "success") return /* @__PURE__ */ jsx(BookingSurface, {
3115
3233
  id: bookingAnchorId,
3116
3234
  className: render.display.className,
3117
- children: /* @__PURE__ */ jsx(SuccessMessage, {
3118
- message: getBookingSuccessMessage(render.display.successMessage),
3119
- resourceName: viewState.resourceName
3235
+ children: /* @__PURE__ */ jsx(BookingFormCompletion, {
3236
+ successMessage: render.display.successMessage,
3237
+ resourceName: viewState.resourceName,
3238
+ redirectState,
3239
+ localNote: localMailingListNote
3120
3240
  })
3121
3241
  });
3122
3242
  if (viewState.kind === "verifying") return /* @__PURE__ */ jsx(BookingSurface, {