@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.
Files changed (254) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/{PreviewEditorSidebar-O-V6Pl5a.mjs → PreviewEditorSidebar-DtpB3_sS.mjs} +51 -33
  3. package/dist/{PreviewEditorUI-1UlX_9cw.mjs → PreviewEditorUI-DxTLgaHo.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BxGwdOCV.mjs → PreviewQueryProvider-Dd4dxOiU.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-DYbA_4iv.mjs → SdkPreviewModeRuntime-DMMNCngt.mjs} +311 -186
  6. package/dist/{SiteChromeCustomizeContext-CNTKQ9nx.mjs → SiteChromeCustomizeContext-DQXZXiqS.mjs} +3808 -2395
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +1122 -0
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +102 -0
  9. package/dist/_dts/api/src/accountApi.d.ts +5 -5
  10. package/dist/_dts/api/src/bookingConfig.d.ts +24 -1
  11. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +11 -26
  12. package/dist/_dts/api/src/bookingManagementEventEndpointTypes.d.ts +45 -1
  13. package/dist/_dts/api/src/bookingOperations.d.ts +2 -44
  14. package/dist/_dts/api/src/bookingPeople.d.ts +92 -0
  15. package/dist/_dts/api/src/bookingPeopleEndpointDefinitions.d.ts +38 -0
  16. package/dist/_dts/api/src/bookingRecords.d.ts +11 -49
  17. package/dist/_dts/api/src/bookingSettingsSections.d.ts +1 -1
  18. package/dist/_dts/api/src/bookings.d.ts +1 -0
  19. package/dist/_dts/api/src/clientErrorReporting.d.ts +50 -0
  20. package/dist/_dts/api/src/communications.d.ts +20 -4
  21. package/dist/_dts/api/src/contentRuntime.d.ts +3 -7
  22. package/dist/_dts/api/src/endpoints.d.ts +816 -655
  23. package/dist/_dts/api/src/event-visibility.d.ts +20 -0
  24. package/dist/_dts/api/src/eventManagementContracts.d.ts +72 -4
  25. package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +24 -0
  26. package/dist/_dts/api/src/eventPageWords.d.ts +19 -0
  27. package/dist/_dts/api/src/eventSeriesRegistrationEndpointDefinitions.d.ts +14 -0
  28. package/dist/_dts/api/src/index.d.ts +9 -2
  29. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  30. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  31. package/dist/_dts/api/src/launchReadiness.d.ts +19 -6
  32. package/dist/_dts/api/src/launchRequirementPriority.d.ts +3 -0
  33. package/dist/_dts/api/src/mailingListIntegration.d.ts +6 -0
  34. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +1 -1
  35. package/dist/_dts/api/src/newsletterCampaignCommandEndpoints.d.ts +13 -0
  36. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +57 -0
  37. package/dist/_dts/api/src/occurrenceScheduling.d.ts +29 -0
  38. package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +44 -0
  39. package/dist/_dts/api/src/participantMessaging.d.ts +11 -1
  40. package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +48 -0
  41. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +7 -0
  42. package/dist/_dts/api/src/sdk-event-upsert.d.ts +55 -1
  43. package/dist/_dts/api/src/sdkContracts.d.ts +3 -42
  44. package/dist/_dts/api/src/sdkCourseBooking.d.ts +30 -0
  45. package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +76 -0
  46. package/dist/_dts/api/src/sdkEventLifecycle.d.ts +37 -0
  47. package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +18 -0
  48. package/dist/_dts/api/src/sdkPageDesign.d.ts +388 -0
  49. package/dist/_dts/api/src/sdkPageDesignEndpointDefinitions.d.ts +22 -0
  50. package/dist/_dts/api/src/sdkPullEventContracts.d.ts +46 -0
  51. package/dist/_dts/api/src/siteAddressEndpoints.d.ts +29 -0
  52. package/dist/_dts/api/src/siteLifecycleEndpoints.d.ts +61 -0
  53. package/dist/_dts/api/src/siteManagementEndpointDefinitions.d.ts +49 -0
  54. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +6 -49
  55. package/dist/_dts/api/src/siteOnboarding.d.ts +72 -18
  56. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -1
  57. package/dist/_dts/api/src/types.d.ts +7 -1
  58. package/dist/_dts/api/src/wholeSeriesRuns.d.ts +14 -0
  59. package/dist/_dts/blocks/src/PageRenderer.d.ts +3 -4
  60. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +8 -0
  61. package/dist/_dts/blocks/src/index.d.ts +2 -0
  62. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +29 -1
  63. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +5 -1
  64. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +27 -5
  65. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +14 -1
  66. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +4 -1
  67. package/dist/_dts/blocks/src/system/icons/social.d.ts +1 -1
  68. package/dist/_dts/blocks/src/system/registry.d.ts +1 -1
  69. package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +4 -0
  70. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +12 -0
  71. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +12 -0
  72. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +6 -0
  73. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +8 -0
  74. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +2 -0
  75. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.completion.d.ts +9 -0
  76. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +9 -0
  77. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +19 -0
  78. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-choice.d.ts +5 -0
  79. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-note.d.ts +3 -0
  80. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-state.d.ts +9 -0
  81. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.reserved-fields.d.ts +1 -1
  82. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.server.d.ts +1 -1
  83. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +2 -0
  84. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-handler.d.ts +8 -0
  85. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-success.d.ts +9 -0
  86. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +3 -0
  87. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/AttendeeDetailsStep.d.ts +3 -0
  88. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SuccessStep.d.ts +3 -0
  89. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +3 -0
  90. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +1 -0
  91. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/sessionStorage.d.ts +2 -0
  92. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +6 -0
  93. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +3 -0
  94. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +8 -0
  95. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +9 -0
  96. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +20 -4
  97. package/dist/_dts/blocks/src/system/runtime/nodes/form.fields.d.ts +5 -0
  98. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.block-submission.d.ts +34 -0
  99. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.d.ts +1 -1
  100. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +6 -1
  101. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.parts.d.ts +46 -0
  102. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +2 -1
  103. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +4 -1
  104. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingMailingListNote.d.ts +6 -0
  105. package/dist/_dts/blocks/src/system/runtime/shared/components/CheckboxChoice.d.ts +18 -0
  106. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
  107. package/dist/_dts/blocks/src/system/runtime/shared/mailingListSignupCopy.d.ts +6 -0
  108. package/dist/_dts/blocks/src/system/runtime/shared/types.d.ts +1 -0
  109. package/dist/_dts/blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.d.ts +3 -2
  110. package/dist/_dts/blocks/src/system/transforms/registry/core.d.ts +2 -0
  111. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +1 -3
  112. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  113. package/dist/_dts/content-editor/src/primitives/previewEditableOutline.d.ts +2 -0
  114. package/dist/_dts/content-editor/src/ui/editorBlockEquality.d.ts +3 -0
  115. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +3 -5
  116. package/dist/_dts/core/src/block-content-identity.d.ts +5 -0
  117. package/dist/_dts/core/src/editor-state.d.ts +2 -7
  118. package/dist/_dts/core/src/index.d.ts +2 -1
  119. package/dist/_dts/core/src/mailing-list-runtime.d.ts +15 -0
  120. package/dist/_dts/core/src/mailing-list-setup.d.ts +2 -0
  121. package/dist/_dts/core/src/mailing-list-submission.d.ts +9 -1
  122. package/dist/_dts/core/src/navigation-portal-labels.d.ts +9 -0
  123. package/dist/_dts/core/src/participants.d.ts +0 -38
  124. package/dist/_dts/core/src/public-event-booking-availability.d.ts +20 -1
  125. package/dist/_dts/core/src/public-profile.d.ts +3 -1
  126. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +151 -24
  127. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +3 -0
  128. package/dist/_dts/editor-blocks/src/block-editor/EmptyState.d.ts +13 -1
  129. package/dist/_dts/editor-blocks/src/block-editor/actionPresentation.d.ts +1 -0
  130. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +2 -8
  131. package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
  132. package/dist/_dts/preview-next/src/client/blocks/EditablePageRenderer.d.ts +7 -1
  133. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +5 -5
  134. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -2
  135. package/dist/_dts/sdk/src/next/renderSdkContent.d.ts +0 -1
  136. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +3 -2
  137. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +3 -2
  138. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +6 -1
  139. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +5 -2
  140. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +6 -1
  141. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +2 -0
  142. package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +5 -1
  143. package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +5 -1
  144. package/dist/_dts/sdk/src/version.d.ts +1 -1
  145. package/dist/_dts/surfaces/src/index.d.ts +9 -0
  146. package/dist/_dts/theme-core/src/buttons/effects/types.d.ts +1 -1
  147. package/dist/_dts/theme-core/src/footer/effectiveNavLinkStyle.d.ts +13 -0
  148. package/dist/_dts/theme-core/src/footer/index.d.ts +1 -0
  149. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  150. package/dist/_dts/theme-core/src/header/effectiveNavLinkStyle.d.ts +17 -0
  151. package/dist/_dts/theme-core/src/header/generateHeaderLogoStyles.d.ts +15 -0
  152. package/dist/_dts/theme-core/src/header/generateHeaderNavLinkStyles.d.ts +4 -0
  153. package/dist/_dts/theme-core/src/header/index.d.ts +3 -0
  154. package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +1 -1
  155. package/dist/_dts/theme-core/src/header/openingForegroundProjection.d.ts +7 -0
  156. package/dist/_dts/theme-core/src/header/rootPaint.d.ts +4 -0
  157. package/dist/_dts/theme-core/src/inputs/checkable.d.ts +42 -0
  158. package/dist/_dts/theme-core/src/inputs/inputGroup.d.ts +19 -0
  159. package/dist/_dts/theme-core/src/navigation/effectPolicy.d.ts +38 -0
  160. package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +4 -0
  161. package/dist/_dts/theme-core/src/navigation/types.d.ts +4 -0
  162. package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +1 -1
  163. package/dist/_dts/theme-core/src/surfaces/foregroundContract.d.ts +7 -0
  164. package/dist/_dts/theme-core/src/surfaces/foregroundInteraction.d.ts +29 -22
  165. package/dist/_dts/theme-core/src/surfaces/foregroundRoles.d.ts +10 -2
  166. package/dist/_dts/theme-core/src/surfaces/resolveSurfaceForeground.d.ts +9 -0
  167. package/dist/_dts/theme-core/src/utils/cssDeclarations.d.ts +2 -0
  168. package/dist/_dts/ui/src/badge.d.ts +2 -1
  169. package/dist/_dts/ui/src/button.d.ts +1 -1
  170. package/dist/_dts/ui/src/combobox-keys.d.ts +23 -0
  171. package/dist/_dts/ui/src/combobox-rows.d.ts +34 -0
  172. package/dist/_dts/ui/src/combobox.d.ts +26 -1
  173. package/dist/_dts/ui/src/date-picker.d.ts +5 -8
  174. package/dist/_dts/ui/src/editor-item-card.d.ts +1 -0
  175. package/dist/_dts/ui/src/field-trigger.d.ts +39 -0
  176. package/dist/_dts/ui/src/fieldControl.d.ts +27 -0
  177. package/dist/_dts/ui/src/index.d.ts +4 -1
  178. package/dist/_dts/ui/src/native-select.d.ts +8 -0
  179. package/dist/_dts/ui/src/navigation-tabs.d.ts +2 -1
  180. package/dist/_dts/ui/src/popover.d.ts +7 -1
  181. package/dist/_dts/ui/src/segmented-control.d.ts +4 -0
  182. package/dist/_dts/ui/src/surface.d.ts +1 -1
  183. package/dist/client/{BookingConsentAgreement-DlVOmpW4.mjs → BookingMailingListNote-1n4Ch_u_.mjs} +15 -4
  184. package/dist/client/CheckboxChoice-B33MqoUo.mjs +24 -0
  185. package/dist/client/{DiscountCodeDisclosure-T9q623PQ.mjs → DiscountCodeDisclosure-CKJtz0mY.mjs} +1 -1
  186. package/dist/client/{EventCombined.client-DnsUeONl.mjs → EventCombined.client-C0pgma9y.mjs} +7 -7
  187. package/dist/client/{EventListing.client-CNBFqJS4.mjs → EventListing.client-4fhLOvHP.mjs} +2 -2
  188. package/dist/client/{LeafletStaticMap-C7higg52.mjs → LeafletStaticMap-DScC4F3w.mjs} +1 -1
  189. package/dist/client/{scrollToBlock-CWs8EIdo.mjs → TerminalPanel-B5ZUsYhe.mjs} +77 -77
  190. package/dist/client/{ThemedButton-LAJTNrS8.mjs → ThemedButton-DoVIV1Ao.mjs} +2 -2
  191. package/dist/client/{accordion-BcNF9TjX.mjs → accordion-CoT5g7zo.mjs} +1 -1
  192. package/dist/client/{bookingForm-BUaQ3S03.mjs → bookingForm-BWxB46xD.mjs} +251 -150
  193. package/dist/client/bookings.mjs +415 -234
  194. package/dist/client/{carousel-CTdF6e0V.mjs → carousel-DtNYWFd3.mjs} +2 -2
  195. package/dist/client/{carousel.client-jahpU9Vz.mjs → carousel.client-A2lG-9od.mjs} +1 -1
  196. package/dist/client/{cart-pGtyf_XU.mjs → cart-z4qZih1Y.mjs} +3 -3
  197. package/dist/client/{checkout-Da9WSn7Y.mjs → checkout-DpL7euFH.mjs} +3 -3
  198. package/dist/client/{checkoutUrls-CW3-78uu.mjs → checkoutUrls-BEfR7kVu.mjs} +1 -1
  199. package/dist/client/client.mjs +3721 -2220
  200. package/dist/client/{colorStyles-CuJBiS-1.mjs → colorStyles-j5U9v5JA.mjs} +5 -1
  201. package/dist/client/{context-BFeY_Wbm.mjs → context-C8TinPJc.mjs} +1 -1
  202. package/dist/client/{dates-BhwVSxDg.mjs → dates-vwwxTeB0.mjs} +2 -3
  203. package/dist/client/{eventCalendar-BAtdnR4s.mjs → eventCalendar-DIbHfJXO.mjs} +10 -10
  204. package/dist/client/{eventCombined-RksA3tRC.mjs → eventCombined-DoGMJ6cg.mjs} +4 -4
  205. package/dist/client/{eventDetails-BB9hB4wR.mjs → eventDetails-BjN9v6a1.mjs} +4 -4
  206. package/dist/client/{eventListing-BpJBkviM.mjs → eventListing-DajjWgOv.mjs} +4 -4
  207. package/dist/client/{eventRegistration-B18jFq_o.mjs → eventRegistration-DMq9gMA-.mjs} +121 -54
  208. package/dist/client/{form-Dodt8Y8t.mjs → form-Qf6qTbos.mjs} +136 -105
  209. package/dist/client/{headerSection-B0qj9ttg.mjs → headerSection-D7qJrqFX.mjs} +3 -3
  210. package/dist/client/hooks.mjs +1148 -179
  211. package/dist/client/{locationMap-gn-iMk7a.mjs → locationMap-CCF9-t_0.mjs} +4 -4
  212. package/dist/client/{FieldValidationMessage-AYanWFb-.mjs → mailingListSignupCopy-DZSHZrm6.mjs} +14 -1
  213. package/dist/client/{media-BtJ37tzS.mjs → media-CwBGetqC.mjs} +1 -1
  214. package/dist/client/{newsletterForm-oByLdFkr.mjs → newsletterForm-DzCLSP4S.mjs} +206 -104
  215. package/dist/client/{pricing-BOU0_Hai.mjs → pricing-Cgxv2KLC.mjs} +1 -1
  216. package/dist/client/{productDetail-D9v1zH2j.mjs → productDetail-ru9w5GHx.mjs} +3 -3
  217. package/dist/client/{productList-D-mItx1n.mjs → productList-zaapKSl-.mjs} +3 -3
  218. package/dist/client/{propsDecoder-C3TP_z4x.mjs → propsDecoder-CwvvNOHx.mjs} +91 -28
  219. package/dist/client/rendering/client.mjs +1441 -826
  220. package/dist/client/rendering/islands.mjs +19 -19
  221. package/dist/client/rendering.mjs +3652 -2005
  222. package/dist/client/{routeIslandApiConfig-DzN1W0sq.mjs → routeIslandApiConfig-BwVFo0Y4.mjs} +1 -1
  223. package/dist/client/{shop-commerce-gklw_hLF.mjs → shop-commerce-De7gEnkA.mjs} +8 -8
  224. package/dist/client/{shop-commerce-store-Sf1eyTaZ.mjs → shop-commerce-store-B3MCxIBW.mjs} +1 -1
  225. package/dist/client/{shop-Dufw7N7o.mjs → shop-mktkXvbV.mjs} +7 -7
  226. package/dist/client/{shopShared-B5nyA41S.mjs → shopShared-TqExh235.mjs} +5 -5
  227. package/dist/client/{useEventFilters-CLL829vy.mjs → useEventFilters-n_OjkIjX.mjs} +8 -8
  228. package/dist/preview-next/before-render.mjs +490 -153
  229. package/dist/preview-next/client/runtime.mjs +4 -4
  230. package/dist/preview-next/editor-base.css +64 -2
  231. package/dist/preview-next/editor-chrome.css +7 -4
  232. package/dist/preview-next/keepAlive.mjs +450 -153
  233. package/dist/preview-next/middleware.mjs +451 -153
  234. package/dist/{previewAuthStore-BxAFlu-j.mjs → previewAuthStore-C_EHQ5XA.mjs} +475 -153
  235. package/dist/{sdk-runtime-D0uZFev7.mjs → sdk-runtime-BIkJg5y1.mjs} +2 -2
  236. package/dist/{separator-EvdCAn4V.mjs → separator-C9qDP95Z.mjs} +1 -1
  237. package/dist/server/components.mjs +4957 -3509
  238. package/dist/server/config-validation.mjs +1115 -189
  239. package/dist/server/config.mjs +1115 -189
  240. package/dist/server/data.mjs +1113 -188
  241. package/dist/server/index.mjs +492 -154
  242. package/dist/server/navigation.mjs +13 -2
  243. package/dist/server/next.mjs +4798 -3462
  244. package/dist/server/page-converter.mjs +143 -89
  245. package/dist/server/prebuild.mjs +1 -1
  246. package/dist/server/rendering/server.mjs +3862 -2414
  247. package/dist/server/rendering.mjs +5648 -4154
  248. package/dist/server/routing.mjs +1223 -329
  249. package/dist/server/server.mjs +1172 -314
  250. package/dist/server/theme-bridge.mjs +533 -128
  251. package/dist/server/theme.mjs +5 -1
  252. package/dist/styles/index.css +218 -69
  253. package/package.json +1 -1
  254. package/dist/_dts/core/src/participant-identity.d.ts +0 -135
@@ -124,13 +124,16 @@ const SURFACE_FOREGROUND_CSS_VARS = {
124
124
  text: "--rb-surface-text-color",
125
125
  heading: "--rb-surface-heading-color",
126
126
  link: "--rb-surface-link-color",
127
+ linkHover: "--rb-surface-link-hover-color",
127
128
  supporting: "--rb-surface-supporting-color"
128
129
  };
129
130
  const DEFAULT_SURFACE_TEXT_COLOR = "rgb(var(--tb-text, 17 24 39))";
131
+ const DEFAULT_SURFACE_LINK_COLOR = "rgb(var(--tb-primary, var(--tb-text, 17 24 39)))";
130
132
  const DEFAULT_ROLE_FALLBACKS = {
131
133
  text: DEFAULT_SURFACE_TEXT_COLOR,
132
134
  heading: DEFAULT_SURFACE_TEXT_COLOR,
133
- link: "rgb(var(--tb-primary, var(--tb-text, 17 24 39)))",
135
+ link: DEFAULT_SURFACE_LINK_COLOR,
136
+ linkHover: DEFAULT_SURFACE_LINK_COLOR,
134
137
  supporting: "rgb(var(--tb-mutedText, 100 116 139))"
135
138
  };
136
139
  function requireSurfaceColorValue(role, value) {
@@ -142,6 +145,7 @@ function surfaceForegroundValue(role, outsideProviderFallback = DEFAULT_ROLE_FAL
142
145
  const roleVariable = SURFACE_FOREGROUND_CSS_VARS[role];
143
146
  const fallback = requireSurfaceColorValue("fallback", outsideProviderFallback);
144
147
  if (role === "text") return `var(${roleVariable}, ${fallback})`;
148
+ if (role === "linkHover") return `var(${roleVariable}, ${surfaceForegroundValue("link", fallback)})`;
145
149
  return `var(${roleVariable}, var(${SURFACE_FOREGROUND_CSS_VARS.text}, ${fallback}))`;
146
150
  }
147
151
  function surfaceForegroundValueWithOpacity(role, opacityPercent) {
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { B as calendarWindowPageSchema } from "./propsDecoder-C3TP_z4x.mjs";
2
+ import { H as calendarWindowPageSchema } from "./propsDecoder-CwvvNOHx.mjs";
3
3
  import { createContext, useContext, useMemo } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  //#region ../blocks/src/system/runtime/api/deduplication.ts
@@ -1,5 +1,5 @@
1
- import { Xt as formatBookingDate, Zt as formatBookingDateParts, cn as toScheduledBookingDateTime, en as formatBookingTime, lt as resolveRuntimeEventDestination, on as toBookingTimeZone, sn as toScheduledBookingDateRange, yn as assertNever } from "./propsDecoder-C3TP_z4x.mjs";
2
- import { a as canJoinEventWaitlistOnAnyMode, p as isEventFull } from "./pricing-BOU0_Hai.mjs";
1
+ import { $t as formatBookingDate, Sn as assertNever, dn as toScheduledBookingDateTime, dt as resolveRuntimeEventDestination, en as formatBookingDateParts, ln as toBookingTimeZone, rn as formatBookingTime, un as toScheduledBookingDateRange } from "./propsDecoder-CwvvNOHx.mjs";
2
+ import { a as canJoinEventWaitlistOnAnyMode, p as isEventFull } from "./pricing-Cgxv2KLC.mjs";
3
3
  //#region ../blocks/src/system/runtime/nodes/events/domain/cta.ts
4
4
  /**
5
5
  * Booking call-to-action resolution for events: where an event links to and
@@ -16,7 +16,6 @@ function closedEventBookingLabel(reason) {
16
16
  case "series_archived":
17
17
  case "parent_archived":
18
18
  case "parent_inconsistent":
19
- case "not_public":
20
19
  case "already_started":
21
20
  case "enrollment_closed": return "Registration closed";
22
21
  default: return assertNever(reason);
@@ -1,15 +1,15 @@
1
1
  "use client";
2
- import { O as clsx } from "./colorStyles-CuJBiS-1.mjs";
3
- import { $ as addDays, G as buildEventRuntimeFilters, H as resolveCalendarReadProfile, O as buildEventCalendarListingRender, Q as MONTH_NAMES, at as getWeekCalendarDays, it as getOrderedDayNames, nt as formatDateKey, ot as isSameCalendarDay, rt as getDayOfWeek, st as isToday, t as defineIslandPropsDecoder } from "./propsDecoder-C3TP_z4x.mjs";
4
- import { o as EventFilters, s as formatEventTeacherLine, t as useEventFilters } from "./useEventFilters-CLL829vy.mjs";
5
- import { d as getEventAvailabilityStatus, o as formatEventRemainingPlaces, p as isEventFull } from "./pricing-BOU0_Hai.mjs";
6
- import { a as formatTime, c as getLocalDateKey, d as resolveEventLinkProps, l as getLocalMinuteOfDay, o as groupEventsByDate, s as resolveEventTimeZone } from "./dates-BhwVSxDg.mjs";
7
- import { a as WeekAgendaView, c as CalendarDayCell, d as useCalendarEvents, i as useHydrationReady, l as EventModalProvider, o as CalendarNavigationChevron, r as EventModals, s as CalendarDayHeaders, t as EventCombinedClient, u as useEventModal } from "./EventCombined.client-DnsUeONl.mjs";
8
- import { t as BlockApiProvider } from "./context-BFeY_Wbm.mjs";
9
- import { n as ThemedButtonLink, t as ThemedButton } from "./ThemedButton-LAJTNrS8.mjs";
2
+ import { O as clsx } from "./colorStyles-j5U9v5JA.mjs";
3
+ import { A as buildEventCalendarListingRender, W as resolveCalendarReadProfile, at as getDayOfWeek, ct as isSameCalendarDay, et as MONTH_NAMES, it as formatDateKey, lt as isToday, ot as getOrderedDayNames, q as buildEventRuntimeFilters, st as getWeekCalendarDays, t as defineIslandPropsDecoder, tt as addDays } from "./propsDecoder-CwvvNOHx.mjs";
4
+ import { o as EventFilters, s as formatEventTeacherLine, t as useEventFilters } from "./useEventFilters-n_OjkIjX.mjs";
5
+ import { d as getEventAvailabilityStatus, o as formatEventRemainingPlaces, p as isEventFull } from "./pricing-Cgxv2KLC.mjs";
6
+ import { a as formatTime, c as getLocalDateKey, d as resolveEventLinkProps, l as getLocalMinuteOfDay, o as groupEventsByDate, s as resolveEventTimeZone } from "./dates-vwwxTeB0.mjs";
7
+ import { a as WeekAgendaView, c as CalendarDayCell, d as useCalendarEvents, i as useHydrationReady, l as EventModalProvider, o as CalendarNavigationChevron, r as EventModals, s as CalendarDayHeaders, t as EventCombinedClient, u as useEventModal } from "./EventCombined.client-C0pgma9y.mjs";
8
+ import { t as BlockApiProvider } from "./context-C8TinPJc.mjs";
9
+ import { n as ThemedButtonLink, t as ThemedButton } from "./ThemedButton-DoVIV1Ao.mjs";
10
10
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
11
- import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-DzN1W0sq.mjs";
12
- import { n as EventListingController } from "./EventListing.client-CNBFqJS4.mjs";
11
+ import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-BwVFo0Y4.mjs";
12
+ import { n as EventListingController } from "./EventListing.client-4fhLOvHP.mjs";
13
13
  import { useEffect, useId, useMemo, useState } from "react";
14
14
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
15
15
  //#region ../calendar/src/lane-packing.ts
@@ -1,8 +1,8 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-C3TP_z4x.mjs";
2
- import { n as EventCombinedIslandClient } from "./EventCombined.client-DnsUeONl.mjs";
3
- import { t as BlockApiProvider } from "./context-BFeY_Wbm.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-CwvvNOHx.mjs";
2
+ import { n as EventCombinedIslandClient } from "./EventCombined.client-C0pgma9y.mjs";
3
+ import { t as BlockApiProvider } from "./context-C8TinPJc.mjs";
4
4
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
5
- import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-DzN1W0sq.mjs";
5
+ import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-BwVFo0Y4.mjs";
6
6
  import "react";
7
7
  import { jsx } from "react/jsx-runtime";
8
8
  //#region src/rendering/islands/enhancers/eventCombined.tsx
@@ -1,8 +1,8 @@
1
- import { A as resolveEventRegistrationScopedEvents, Kt as CANCELLED_SESSION_STATUS, _n as formatCurrencyAmount, cn as toScheduledBookingDateTime, dn as isPublicEventPricingOptionDisplayable, fn as publicEventPricingCurrency, gn as publicEventPricingType, ln as formatBookingPriceDisplay, nn as getBookingLocalDateKey, on as toBookingTimeZone, pn as publicEventPricingDisplay, qt as resolveWholeSeriesBookingPhase, t as defineIslandPropsDecoder } from "./propsDecoder-C3TP_z4x.mjs";
2
- import { l as formatTotalCapacity, n as formatEventPriceAmount, t as formatEventPrice } from "./pricing-BOU0_Hai.mjs";
3
- import { d as resolveEventLinkProps, r as formatEventDateParts } from "./dates-BhwVSxDg.mjs";
1
+ import { Jt as CANCELLED_SESSION_STATUS, M as resolveEventRegistrationScopedEvents, Yt as resolveWholeSeriesBookingPhase, an as getBookingLocalDateKey, bn as formatCurrencyAmount, dn as toScheduledBookingDateTime, fn as formatBookingPriceDisplay, gn as publicEventPricingDisplay, hn as publicEventPricingCurrency, ln as toBookingTimeZone, mn as isPublicEventPricingOptionDisplayable, t as defineIslandPropsDecoder, yn as publicEventPricingType } from "./propsDecoder-CwvvNOHx.mjs";
2
+ import { l as formatTotalCapacity, n as formatEventPriceAmount, t as formatEventPrice } from "./pricing-Cgxv2KLC.mjs";
3
+ import { d as resolveEventLinkProps, r as formatEventDateParts } from "./dates-vwwxTeB0.mjs";
4
4
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
5
- import { t as LeafletStaticMap } from "./LeafletStaticMap-C7higg52.mjs";
5
+ import { t as LeafletStaticMap } from "./LeafletStaticMap-DScC4F3w.mjs";
6
6
  import "react";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
  //#region ../blocks/src/system/runtime/nodes/events/shared/eventProductEligibility.ts
@@ -1,8 +1,8 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-C3TP_z4x.mjs";
2
- import { t as BlockApiProvider } from "./context-BFeY_Wbm.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-CwvvNOHx.mjs";
2
+ import { t as BlockApiProvider } from "./context-C8TinPJc.mjs";
3
3
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
4
- import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-DzN1W0sq.mjs";
5
- import { t as EventListingClient } from "./EventListing.client-CNBFqJS4.mjs";
4
+ import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-BwVFo0Y4.mjs";
5
+ import { t as EventListingClient } from "./EventListing.client-4fhLOvHP.mjs";
6
6
  import "react";
7
7
  import { jsx } from "react/jsx-runtime";
8
8
  //#region src/rendering/islands/enhancers/eventListing.tsx
@@ -1,20 +1,21 @@
1
1
  "use client";
2
- import { a as resolveBookingPaymentDueNowCents, i as buildBookingPaymentSelectionViewModel, n as StepIndicator$1, o as formatPrice, r as usePolling, t as BookingConsentAgreement } from "./BookingConsentAgreement-DlVOmpW4.mjs";
3
- import { A as resolveEventRegistrationScopedEvents, C as resolveRegistrationTarget, D as getWizardStepsForContext, E as getStepNumber, Qt as formatBookingDateTime, S as resolveEventRequiresPayment, T as WIZARD_STEPS, Xt as formatBookingDate, _ as toRegistrationEvents, _n as formatCurrencyAmount, b as findPreSelectedEvent, cn as toScheduledBookingDateTime, en as formatBookingTime, fn as publicEventPricingCurrency, g as getRegistrationStartAt, gn as publicEventPricingType, h as buildEventRegistrationDisplayFromScopedEvents, hn as publicEventPricingStrategy, mn as publicEventPricingOptions, on as toBookingTimeZone, t as defineIslandPropsDecoder, ut as groupPublicEventsByRun, v as toWholeSeriesRegistrationEvents, vn as parseCurrencyCode, w as toRegistrationRequestSubject, x as resolveDiscountContext, y as findEventByOccurrenceId, zt as assertNever } from "./propsDecoder-C3TP_z4x.mjs";
4
- import { a as canJoinEventWaitlistOnAnyMode, c as formatTicketTypeRemaining, f as getRemainingPlaces, h as selectMostOpenCapacitySource, i as canJoinEventWaitlist, m as selectEventCapacitySource, o as formatEventRemainingPlaces, p as isEventFull, r as formatEventPriceDisplay, s as formatRemainingPlaces, u as getEventAvailability } from "./pricing-BOU0_Hai.mjs";
5
- import { n as useBlockApi, r as BlockApiError, t as BlockApiProvider } from "./context-BFeY_Wbm.mjs";
2
+ import { a as buildBookingPaymentSelectionViewModel, i as usePolling, n as BookingConsentAgreement, o as resolveBookingPaymentDueNowCents, r as StepIndicator$1, s as formatPrice, t as BookingMailingListNote } from "./BookingMailingListNote-1n4Ch_u_.mjs";
3
+ import { $t as formatBookingDate, C as resolveDiscountContext, D as WIZARD_STEPS, E as toRegistrationRequestSubject, M as resolveEventRegistrationScopedEvents, O as getStepNumber, S as findPreSelectedEvent, T as resolveRegistrationTarget, Vt as assertNever, Zt as resolveBookingSignupOffer, _ as buildEventRegistrationDisplayFromScopedEvents, _n as publicEventPricingOptions, b as toWholeSeriesRegistrationEvents, bn as formatCurrencyAmount, dn as toScheduledBookingDateTime, ft as groupPublicEventsByRun, hn as publicEventPricingCurrency, k as getWizardStepsForContext, ln as toBookingTimeZone, rn as formatBookingTime, t as defineIslandPropsDecoder, tn as formatBookingDateTime, v as getRegistrationStartAt, vn as publicEventPricingStrategy, w as resolveEventRequiresPayment, x as findEventByOccurrenceId, xn as parseCurrencyCode, y as toRegistrationEvents, yn as publicEventPricingType } from "./propsDecoder-CwvvNOHx.mjs";
4
+ import { a as canJoinEventWaitlistOnAnyMode, c as formatTicketTypeRemaining, f as getRemainingPlaces, h as selectMostOpenCapacitySource, i as canJoinEventWaitlist, m as selectEventCapacitySource, o as formatEventRemainingPlaces, p as isEventFull, r as formatEventPriceDisplay, s as formatRemainingPlaces, u as getEventAvailability } from "./pricing-Cgxv2KLC.mjs";
5
+ import { n as useBlockApi, r as BlockApiError, 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-CWs8EIdo.mjs";
8
- import { t as DiscountCodeDisclosure } from "./DiscountCodeDisclosure-T9q623PQ.mjs";
9
- import { i as SpinnerNode, t as ThemedButton } from "./ThemedButton-LAJTNrS8.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";
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 createBodyThemePortalRoot } from "./themePortalRoot-AGs4cE7t.mjs";
14
15
  import { n as consumeSearchParams } from "./urlParams-D71VXFGx.mjs";
15
16
  import { t as CrossIcon } from "./CrossIcon-Dn1KRKW5.mjs";
16
17
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
17
- import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-DzN1W0sq.mjs";
18
+ import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-BwVFo0Y4.mjs";
18
19
  import { t as createLucideIcon } from "./createLucideIcon-PaLVMov4.mjs";
19
20
  import { t as ModalShell } from "./ModalShell-CqkBvBIC.mjs";
20
21
  import React, { useCallback, useEffect, useId, useLayoutEffect, useMemo, useReducer, useRef, useState, useSyncExternalStore } from "react";
@@ -832,7 +833,8 @@ function createInitialRegistrationFormData() {
832
833
  email: "",
833
834
  phone: "",
834
835
  notes: "",
835
- consentAccepted: false
836
+ consentAccepted: false,
837
+ mailingListOptIn: false
836
838
  };
837
839
  }
838
840
  function validateFormData(formData, requiresConsent = false) {
@@ -1905,7 +1907,10 @@ async function handleCheckoutReturn(options, deps, returnContextRef) {
1905
1907
  }
1906
1908
  const { checkoutAttemptId } = command;
1907
1909
  const pending = deps.getPendingRegistration(siteId, checkoutAttemptId);
1908
- returnContextRef.current = { checkoutAttemptId };
1910
+ returnContextRef.current = {
1911
+ checkoutAttemptId,
1912
+ mailingListSignupNote: pending?.mailingListSignupNote
1913
+ };
1909
1914
  if (pending) restorePendingPresentation(options, pending);
1910
1915
  options.setStep("verifying-payment");
1911
1916
  try {
@@ -1926,7 +1931,10 @@ function completeVerifiedRegistration(options, deps, returnContext) {
1926
1931
  const siteId = options.api.config.siteId;
1927
1932
  const checkoutAttemptId = returnContext?.checkoutAttemptId;
1928
1933
  if (siteId && checkoutAttemptId) deps.clearPendingRegistration(siteId, checkoutAttemptId);
1929
- options.setRegistrationResult({ status: "confirmed" });
1934
+ options.setRegistrationResult({
1935
+ status: "confirmed",
1936
+ mailingListSignupNote: returnContext?.mailingListSignupNote
1937
+ });
1930
1938
  options.setStep("success");
1931
1939
  }
1932
1940
  function useEventRegistrationStripeReturnWithDeps(options, deps) {
@@ -1999,6 +2007,9 @@ function registrationErrorPresentation(error) {
1999
2007
  }
2000
2008
  //#endregion
2001
2009
  //#region ../blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.ts
2010
+ function wantsMailingListSignup(options) {
2011
+ return options.mailingListSignup !== null && options.formData.mailingListOptIn === true;
2012
+ }
2002
2013
  function createClientCommandId(cryptoSource = {
2003
2014
  randomUUID: globalThis.crypto.randomUUID?.bind(globalThis.crypto),
2004
2015
  getRandomValues: (bytes) => globalThis.crypto.getRandomValues(bytes)
@@ -2096,7 +2107,8 @@ async function completeRegistrationSubmission(options, deps, prepared, result, s
2096
2107
  case "paymentStatusRequired":
2097
2108
  options.setPaymentStatusRecovery({
2098
2109
  kind: "ready",
2099
- subject: result.subject
2110
+ subject: result.subject,
2111
+ mailingListSignupNote: result.mailingListSignupNote
2100
2112
  });
2101
2113
  options.setStep("payment-status");
2102
2114
  return {
@@ -2105,14 +2117,15 @@ async function completeRegistrationSubmission(options, deps, prepared, result, s
2105
2117
  };
2106
2118
  case "checkoutRequired":
2107
2119
  options.setPendingRegistrationReference(result.reference);
2108
- savePendingCheckout(options, deps, prepared, result.submissionId, result.reference);
2120
+ savePendingCheckout(options, deps, prepared, result.submissionId, result.reference, result.mailingListSignupNote);
2109
2121
  options.setStep("redirecting");
2110
2122
  return redirectToCheckout(result.checkoutUrl, submitOptions);
2111
2123
  case "waitlisted":
2112
2124
  options.setRegistrationResult({
2113
2125
  status: "waitlist",
2114
2126
  title: "Added to waitlist",
2115
- message: result.waitlist.message
2127
+ message: result.waitlist.message,
2128
+ mailingListSignupNote: result.mailingListSignupNote
2116
2129
  });
2117
2130
  break;
2118
2131
  case "bookingComplete":
@@ -2120,7 +2133,8 @@ async function completeRegistrationSubmission(options, deps, prepared, result, s
2120
2133
  options.setPendingRegistrationReference(result.reference);
2121
2134
  options.setRegistrationResult({
2122
2135
  status: "confirmed",
2123
- message: result.summary.paymentMethod === "pass" ? result.summary.message : void 0
2136
+ message: result.summary.paymentMethod === "pass" ? result.summary.message : void 0,
2137
+ mailingListSignupNote: result.mailingListSignupNote
2124
2138
  });
2125
2139
  break;
2126
2140
  }
@@ -2179,7 +2193,7 @@ function resolveSelectionSnapshot(method, passId, membershipId, bundleProductId,
2179
2193
  if (method === "free") return { method };
2180
2194
  throw new Error("Choose an available payment option.");
2181
2195
  }
2182
- function savePendingCheckout(options, deps, prepared, checkoutAttemptId, reference) {
2196
+ function savePendingCheckout(options, deps, prepared, checkoutAttemptId, reference, mailingListSignupNote) {
2183
2197
  const siteId = options.api.config.siteId;
2184
2198
  if (!siteId) return;
2185
2199
  deps.savePendingRegistration(siteId, checkoutAttemptId, {
@@ -2188,7 +2202,8 @@ function savePendingCheckout(options, deps, prepared, checkoutAttemptId, referen
2188
2202
  ticketSelections: prepared.ticketSelections,
2189
2203
  selectedEventId: options.registrationTarget?.selectedEventId ?? null,
2190
2204
  selectedAttendanceMode: options.selectedAttendanceMode,
2191
- paymentSelection: prepared.selectionSnapshot
2205
+ paymentSelection: prepared.selectionSnapshot,
2206
+ mailingListSignupNote
2192
2207
  });
2193
2208
  }
2194
2209
  function redirectToCheckout(checkoutUrl, submitOptions) {
@@ -2202,7 +2217,7 @@ function redirectToCheckout(checkoutUrl, submitOptions) {
2202
2217
  };
2203
2218
  }
2204
2219
  function registrationRequestIntentKey(request) {
2205
- const { registrationCommandId: _command, altchaSolution: _proof, checkout, ...intent } = request;
2220
+ const { registrationCommandId: _command, altchaSolution: _proof, mailingListOptIn: _marketingConsent, checkout, ...intent } = request;
2206
2221
  return JSON.stringify({
2207
2222
  ...intent,
2208
2223
  checkout: checkout ? {
@@ -2227,6 +2242,7 @@ function buildRegistrationRequest(options, prepared, method, passId, membershipI
2227
2242
  phone: options.formData.phone.trim() || void 0,
2228
2243
  notes: options.formData.notes.trim() || void 0,
2229
2244
  consentAccepted: options.formData.consentAccepted,
2245
+ mailingListOptIn: wantsMailingListSignup(options),
2230
2246
  altchaSolution: options.altchaSolution,
2231
2247
  paymentMethod: method,
2232
2248
  customerPassId: method === "pass" ? passId : void 0,
@@ -2461,13 +2477,17 @@ function isCheckableRecovery(state) {
2461
2477
  function assistanceRequired(recovery) {
2462
2478
  return {
2463
2479
  kind: "assistanceRequired",
2464
- subject: recovery.subject
2480
+ subject: recovery.subject,
2481
+ mailingListSignupNote: recovery.mailingListSignupNote
2465
2482
  };
2466
2483
  }
2467
2484
  function applyStatusOutcome(outcome, recovery, setters, setRecovery) {
2468
2485
  if (outcome.kind === "resolved") {
2469
2486
  setters.setPendingRegistrationReference(outcome.reference);
2470
- setters.setRegistrationResult({ status: "confirmed" });
2487
+ setters.setRegistrationResult({
2488
+ status: "confirmed",
2489
+ mailingListSignupNote: recovery.mailingListSignupNote
2490
+ });
2471
2491
  setRecovery(null);
2472
2492
  setters.setStep("success");
2473
2493
  return;
@@ -2596,6 +2616,7 @@ function useEventRegistrationWizardWithDeps(options, deps) {
2596
2616
  const paymentSelection = flowState.paymentSelection;
2597
2617
  const [selectedEvent, setSelectedEvent] = useState(preSelectedEvent ?? null);
2598
2618
  const [formData, setFormData] = useState(createInitialRegistrationFormData);
2619
+ const mailingListSignup = resolveBookingSignupOffer(options.mailingList, options.siteName);
2599
2620
  const [errors, setErrors] = useState({});
2600
2621
  const [guests, setGuests] = useState([]);
2601
2622
  const [guestErrors, setGuestErrors] = useState({});
@@ -3042,6 +3063,7 @@ function useEventRegistrationWizardWithDeps(options, deps) {
3042
3063
  ticketSelections,
3043
3064
  selectedSlidingAmount,
3044
3065
  formData,
3066
+ mailingListSignup,
3045
3067
  altchaSolution,
3046
3068
  requireGuestDetails,
3047
3069
  guests,
@@ -3138,6 +3160,7 @@ function useEventRegistrationWizardWithDeps(options, deps) {
3138
3160
  hasValidTicketSelection,
3139
3161
  eventRequiresPayment,
3140
3162
  formData,
3163
+ mailingListSignup,
3141
3164
  setFormData,
3142
3165
  errors,
3143
3166
  guests,
@@ -4550,26 +4573,24 @@ function EventConsentField({ consent, error, formData, idBase, onChange }) {
4550
4573
  title: consent.title,
4551
4574
  titleId: `${idBase}-consent-title`
4552
4575
  }),
4553
- /* @__PURE__ */ jsxs("label", {
4554
- className: "er-label rb-flex rb-items-start rb-gap-2 rb-cursor-pointer",
4555
- children: [
4556
- /* @__PURE__ */ jsx("input", {
4557
- "aria-describedby": error ? errorId : void 0,
4558
- className: "form-checkbox rb-mt-0.5",
4559
- checked: formData.consentAccepted === true,
4560
- onChange: (event) => onChange({
4561
- ...formData,
4562
- consentAccepted: event.target.checked
4563
- }),
4564
- type: "checkbox"
4565
- }),
4576
+ /* @__PURE__ */ jsx(CheckboxChoice, {
4577
+ "aria-describedby": error ? errorId : void 0,
4578
+ "aria-invalid": error ? true : void 0,
4579
+ checked: formData.consentAccepted === true,
4580
+ onChange: (event) => onChange({
4581
+ ...formData,
4582
+ consentAccepted: event.target.checked
4583
+ }),
4584
+ label: /* @__PURE__ */ jsxs(Fragment, { children: [
4566
4585
  consent.checkboxLabel,
4567
4586
  " ",
4568
4587
  /* @__PURE__ */ jsx("span", {
4569
4588
  className: "er-required",
4570
4589
  children: "*"
4571
4590
  })
4572
- ]
4591
+ ] }),
4592
+ presentation: "tile",
4593
+ className: "er-consent-check"
4573
4594
  }),
4574
4595
  error ? /* @__PURE__ */ jsx(FieldValidationMessage, {
4575
4596
  id: errorId,
@@ -4599,13 +4620,31 @@ function NotesField({ id, onChange, value }) {
4599
4620
  })]
4600
4621
  });
4601
4622
  }
4623
+ function MailingListOptInField({ signup, formData, onChange }) {
4624
+ if (!signup) return null;
4625
+ return /* @__PURE__ */ jsxs("div", {
4626
+ className: "er-field",
4627
+ children: [/* @__PURE__ */ jsx(CheckboxChoice, {
4628
+ checked: formData.mailingListOptIn === true,
4629
+ onChange: (event) => onChange({
4630
+ ...formData,
4631
+ mailingListOptIn: event.target.checked
4632
+ }),
4633
+ label: `Email me news and updates from ${signup.siteName}.`,
4634
+ presentation: "row"
4635
+ }), /* @__PURE__ */ jsx("p", {
4636
+ className: "er-text er-text--muted",
4637
+ children: "Optional. You can unsubscribe at any time."
4638
+ })]
4639
+ });
4640
+ }
4602
4641
  /**
4603
4642
  * Attendee Details Step
4604
4643
  *
4605
4644
  * Collects attendee information: name, email, phone, and notes.
4606
4645
  * Validates required fields and displays errors.
4607
4646
  */
4608
- const AttendeeDetailsStep = ({ formData, onChange, errors, emailLocked = false, onLogout, ticketsCount = 1, requireGuestDetails = false, guests = [], onGuestsChange, guestErrors = {}, guestSectionShake = false, onGuestShakeEnd, consent }) => {
4647
+ const AttendeeDetailsStep = ({ formData, onChange, errors, emailLocked = false, onLogout, ticketsCount = 1, requireGuestDetails = false, guests = [], onGuestsChange, guestErrors = {}, guestSectionShake = false, onGuestShakeEnd, consent, mailingListSignup }) => {
4609
4648
  const idBase = useId();
4610
4649
  const nameId = `${idBase}-name`;
4611
4650
  const emailId = `${idBase}-email`;
@@ -4714,6 +4753,11 @@ const AttendeeDetailsStep = ({ formData, onChange, errors, emailLocked = false,
4714
4753
  placeholder: "(optional)"
4715
4754
  })]
4716
4755
  }),
4756
+ /* @__PURE__ */ jsx(MailingListOptInField, {
4757
+ signup: mailingListSignup,
4758
+ formData,
4759
+ onChange
4760
+ }),
4717
4761
  /* @__PURE__ */ jsx(NotesField, {
4718
4762
  id: notesId,
4719
4763
  value: formData.notes,
@@ -5207,7 +5251,8 @@ function AttendeeDetailsContent(props) {
5207
5251
  guestErrors: wizard.guestErrors,
5208
5252
  guestSectionShake: wizard.guestSectionShake,
5209
5253
  onGuestShakeEnd: wizard.handleGuestShakeEnd,
5210
- consent: (wizard.selectedEvent ?? wizard.preSelectedEvent)?.consent ?? null
5254
+ consent: (wizard.selectedEvent ?? wizard.preSelectedEvent)?.consent ?? null,
5255
+ mailingListSignup: wizard.mailingListSignup
5211
5256
  }),
5212
5257
  props.showSpamProtection && /* @__PURE__ */ jsx("div", {
5213
5258
  className: "er-altcha",
@@ -5409,6 +5454,10 @@ function PaymentStatusStep(props) {
5409
5454
  "aria-atomic": "true",
5410
5455
  children: props.state.kind === "checking" ? "Checking payment…" : view.title
5411
5456
  })] }),
5457
+ secondaryBody: props.state.mailingListSignupNote ? /* @__PURE__ */ jsx(BookingMailingListNote, {
5458
+ note: props.state.mailingListSignupNote,
5459
+ context: "booking"
5460
+ }) : void 0,
5412
5461
  actionsClassName: "er-button-group",
5413
5462
  actions: view.action ? /* @__PURE__ */ jsx("button", {
5414
5463
  type: "button",
@@ -5441,7 +5490,7 @@ function StepIndicator(props) {
5441
5490
  *
5442
5491
  * Displays registration confirmation with a success icon and message.
5443
5492
  */
5444
- const SuccessStep = ({ title, message, variant = "success" }) => {
5493
+ const SuccessStep = ({ title, message, variant = "success", mailingListSignupNote, context = "booking" }) => {
5445
5494
  return /* @__PURE__ */ jsx(TerminalPanel, {
5446
5495
  tone: variant === "info" ? "info" : "success",
5447
5496
  className: "er-center",
@@ -5482,7 +5531,11 @@ const SuccessStep = ({ title, message, variant = "success" }) => {
5482
5531
  })
5483
5532
  }),
5484
5533
  title: title ?? (variant === "info" ? "Already Registered" : "Registration Confirmed!"),
5485
- body: message
5534
+ body: message,
5535
+ secondaryBody: mailingListSignupNote ? /* @__PURE__ */ jsx(BookingMailingListNote, {
5536
+ note: mailingListSignupNote,
5537
+ context
5538
+ }) : void 0
5486
5539
  });
5487
5540
  };
5488
5541
  //#endregion
@@ -5653,11 +5706,10 @@ function EventRegistrationTerminalState(props) {
5653
5706
  onReturnToPayment: wizard.handleReturnToPayment,
5654
5707
  onReturnToBooking: wizard.handleReturnToBooking
5655
5708
  }) : null;
5656
- case "success": return wizard.registrationResult ? /* @__PURE__ */ jsx(SuccessStep, {
5657
- title: wizard.registrationResult.title,
5658
- variant: wizard.registrationResult.variant,
5659
- message: wizard.registrationResult.message ?? props.successMessage
5660
- }) : null;
5709
+ case "success": return /* @__PURE__ */ jsx(EventRegistrationSuccess, {
5710
+ wizard,
5711
+ fallbackMessage: props.successMessage
5712
+ });
5661
5713
  case "error": return /* @__PURE__ */ jsx(ErrorStep, {
5662
5714
  message: wizard.errorMessage,
5663
5715
  action: wizard.errorAction,
@@ -5670,6 +5722,17 @@ function EventRegistrationTerminalState(props) {
5670
5722
  case "select-payment": return null;
5671
5723
  }
5672
5724
  }
5725
+ function EventRegistrationSuccess(props) {
5726
+ const result = props.wizard.registrationResult;
5727
+ if (!result) return null;
5728
+ return /* @__PURE__ */ jsx(SuccessStep, {
5729
+ title: result.title,
5730
+ variant: result.variant,
5731
+ message: result.message ?? props.fallbackMessage,
5732
+ mailingListSignupNote: result.mailingListSignupNote,
5733
+ context: result.status === "waitlist" ? "waitlist" : "booking"
5734
+ });
5735
+ }
5673
5736
  function EventRegistrationSurface(props) {
5674
5737
  const { wizard } = props;
5675
5738
  const mainRef = useRef(null);
@@ -5865,19 +5928,23 @@ function getWizardStepLabel(input) {
5865
5928
  case "payment-failed": return "";
5866
5929
  }
5867
5930
  }
5931
+ function useConfiguredEventRegistrationWizard(props) {
5932
+ return useEventRegistrationWizard({
5933
+ anchorId: EVENT_REGISTRATION_ANCHOR_ID,
5934
+ occurrenceContext: props.occurrenceContext ?? null,
5935
+ subject: props.subject ?? null,
5936
+ events: props.events ?? [],
5937
+ maxTicketsNum: normalizeEventRegistrationMaxTickets(props.maxTickets ?? "5"),
5938
+ mailingList: props.mailingList,
5939
+ siteName: props.siteName
5940
+ });
5941
+ }
5868
5942
  function EventRegistrationWizard(props) {
5869
- const { occurrenceContext, subject, events, maxTickets = "5", showVenue = true, showCapacity = true, successMessage = "Thank you for registering! Check your email for confirmation details.", buttonText = "Complete Registration", buttonVariant = "primary", className, spamProtectionEnabled, supportEmail } = props;
5870
- const maxTicketsNum = normalizeEventRegistrationMaxTickets(maxTickets);
5943
+ const { occurrenceContext, subject, events, showVenue = true, showCapacity = true, successMessage = "Thank you for registering! Check your email for confirmation details.", buttonText = "Complete Registration", buttonVariant = "primary", className, spamProtectionEnabled, supportEmail } = props;
5871
5944
  const showSpamProtection = spamProtectionEnabled ?? isSpamProtectionEnabled();
5872
5945
  const registrationRootClassName = `event-registration ${className || ""}`;
5873
5946
  const registrationRootRef = React.useRef(null);
5874
- const wizard = useEventRegistrationWizard({
5875
- anchorId: EVENT_REGISTRATION_ANCHOR_ID,
5876
- occurrenceContext: occurrenceContext ?? null,
5877
- subject: subject ?? null,
5878
- events: events ?? [],
5879
- maxTicketsNum
5880
- });
5947
+ const wizard = useConfiguredEventRegistrationWizard(props);
5881
5948
  useEventCheckoutHandoffRestore(wizard.step === "redirecting");
5882
5949
  const [bookingOverlayOpen, setBookingOverlayOpen] = useState(false);
5883
5950
  const [floatingPortalRoot, setFloatingPortalRoot] = useState(null);