@riverbankcms/sdk 0.146.0 → 0.148.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 (466) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/{PreviewEditorSidebar-kg2r2Fyi.mjs → PreviewEditorSidebar-DvEPG3Z2.mjs} +249 -172
  3. package/dist/{PreviewEditorUI-sWMLp5dT.mjs → PreviewEditorUI-D6eb6fkx.mjs} +68 -60
  4. package/dist/{PreviewQueryProvider-Cg51xq1w.mjs → PreviewQueryProvider-5znTyJuz.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-h2ti3Hch.mjs → SdkPreviewModeRuntime-DJ6utQ_R.mjs} +1180 -475
  6. package/dist/{SiteChromeCustomizeContext-DEACFH9m.mjs → SiteChromeCustomizeContext-CFJYh6vo.mjs} +199078 -193767
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +198 -33
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +18 -3
  9. package/dist/_dts/api/src/accessAdmin.d.ts +0 -4
  10. package/dist/_dts/api/src/accountApi.d.ts +6 -6
  11. package/dist/_dts/api/src/admin.d.ts +22 -22
  12. package/dist/_dts/api/src/aiPatch.d.ts +2 -2
  13. package/dist/_dts/api/src/aiPlayground.d.ts +1 -0
  14. package/dist/_dts/api/src/analytics.d.ts +2 -2
  15. package/dist/_dts/api/src/apiEndpointTypes.d.ts +2 -0
  16. package/dist/_dts/api/src/appointmentSetup.d.ts +2 -2
  17. package/dist/_dts/api/src/auth.d.ts +10 -10
  18. package/dist/_dts/api/src/availability.d.ts +6 -6
  19. package/dist/_dts/api/src/billing.d.ts +42 -15
  20. package/dist/_dts/api/src/billingEndpointDefinitions.d.ts +8 -0
  21. package/dist/_dts/api/src/billingEndpointTypes.d.ts +15 -6
  22. package/dist/_dts/api/src/blocks.d.ts +15 -14
  23. package/dist/_dts/api/src/blocksKeys.d.ts +2 -0
  24. package/dist/_dts/api/src/bookingConfig.d.ts +16 -2
  25. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +4 -13
  26. package/dist/_dts/api/src/bookingOperations.d.ts +6 -48
  27. package/dist/_dts/api/src/bookingPeople.d.ts +92 -0
  28. package/dist/_dts/api/src/bookingPeopleEndpointDefinitions.d.ts +38 -0
  29. package/dist/_dts/api/src/bookingRecords.d.ts +12 -49
  30. package/dist/_dts/api/src/bookingSettingsSections.d.ts +1 -1
  31. package/dist/_dts/api/src/bookings.d.ts +8 -7
  32. package/dist/_dts/api/src/calendar.d.ts +9 -9
  33. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +7 -6
  34. package/dist/_dts/api/src/common/envelope.d.ts +2 -2
  35. package/dist/_dts/api/src/content-editor.d.ts +2 -2
  36. package/dist/_dts/api/src/contentEntries.d.ts +17 -48
  37. package/dist/_dts/api/src/contentRuntime.d.ts +51 -37
  38. package/dist/_dts/api/src/contentTypes.d.ts +11 -11
  39. package/dist/_dts/api/src/contentVersionHistoryClient.d.ts +6 -6
  40. package/dist/_dts/api/src/documentLifecycle.d.ts +67 -0
  41. package/dist/_dts/api/src/domains.d.ts +16 -16
  42. package/dist/_dts/api/src/editLeaseEndpoints.d.ts +72 -0
  43. package/dist/_dts/api/src/emailSettings.d.ts +4 -4
  44. package/dist/_dts/api/src/endpoints.d.ts +725 -607
  45. package/dist/_dts/api/src/eventEmailTemplates.d.ts +2 -2
  46. package/dist/_dts/api/src/eventManagementContracts.d.ts +48 -8
  47. package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +1 -9
  48. package/dist/_dts/api/src/eventPageWords.d.ts +7 -12
  49. package/dist/_dts/api/src/footerSettings.d.ts +6 -6
  50. package/dist/_dts/api/src/index.d.ts +8 -6
  51. package/dist/_dts/api/src/indexCoreTypes.d.ts +2 -1
  52. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  53. package/dist/_dts/api/src/launchReadiness.d.ts +1 -6
  54. package/dist/_dts/api/src/mailingListIntegration.d.ts +6 -0
  55. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +1 -1
  56. package/dist/_dts/api/src/navigation.d.ts +5 -5
  57. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +15 -0
  58. package/dist/_dts/api/src/occurrenceScheduling.d.ts +19 -0
  59. package/dist/_dts/api/src/pageSurfaceEditorEndpoints.d.ts +55 -0
  60. package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +28 -7
  61. package/dist/_dts/api/src/pages.d.ts +7 -7
  62. package/dist/_dts/api/src/performance.d.ts +1 -1
  63. package/dist/_dts/api/src/public/index.d.ts +1 -1
  64. package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +50 -0
  65. package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +4 -0
  66. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +7 -0
  67. package/dist/_dts/api/src/redirects.d.ts +3 -3
  68. package/dist/_dts/api/src/request.d.ts +10 -1
  69. package/dist/_dts/api/src/resources.d.ts +4 -4
  70. package/dist/_dts/api/src/routes.d.ts +8 -3
  71. package/dist/_dts/api/src/sdk-event-upsert.d.ts +15 -1
  72. package/dist/_dts/api/src/sdkBlockUpsertContracts.d.ts +21 -0
  73. package/dist/_dts/api/src/sdkContracts.d.ts +5 -28
  74. package/dist/_dts/api/src/sdkCourseBooking.d.ts +4 -4
  75. package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +1 -1
  76. package/dist/_dts/api/src/sdkEventOccurrenceRequestContracts.d.ts +43 -0
  77. package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +4 -2
  78. package/dist/_dts/api/src/sdkPullEventContracts.d.ts +8 -1
  79. package/dist/_dts/api/src/seo.d.ts +4 -4
  80. package/dist/_dts/api/src/services.d.ts +4 -4
  81. package/dist/_dts/api/src/siteLifecycleEndpoints.d.ts +61 -0
  82. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +19 -25
  83. package/dist/_dts/api/src/siteMembers.d.ts +10 -10
  84. package/dist/_dts/api/src/siteOnboarding.d.ts +16 -14
  85. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +7 -3
  86. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +5 -12
  87. package/dist/_dts/api/src/siteRuntimeEntry.d.ts +31 -0
  88. package/dist/_dts/billing/src/checkout/platform.d.ts +77 -0
  89. package/dist/_dts/billing/src/components/index.d.ts +25 -40
  90. package/dist/_dts/billing/src/membership/index.d.ts +1 -3
  91. package/dist/_dts/billing/src/plans/entitlements.d.ts +80 -0
  92. package/dist/_dts/billing/src/plans/registry.d.ts +16 -16
  93. package/dist/_dts/billing/src/plans/standing.d.ts +9 -2
  94. package/dist/_dts/billing/src/plans/types.d.ts +5 -15
  95. package/dist/_dts/billing/src/site-arrangements.d.ts +2 -2
  96. package/dist/_dts/billing/src/subscriptions/standingEvidence.d.ts +2 -4
  97. package/dist/_dts/billing/src/subscriptions/store.d.ts +17 -11
  98. package/dist/_dts/block-form/src/backend/store-backend.d.ts +6 -7
  99. package/dist/_dts/block-form/src/backend/types.d.ts +7 -0
  100. package/dist/_dts/block-form/src/widgets/FieldFrame.d.ts +3 -1
  101. package/dist/_dts/blocks/src/PageRenderer.d.ts +3 -4
  102. package/dist/_dts/blocks/src/client/events.d.ts +3 -0
  103. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +24 -4
  104. package/dist/_dts/blocks/src/index.d.ts +1 -1
  105. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +18 -9
  106. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +4 -0
  107. package/dist/_dts/blocks/src/portal/types.d.ts +0 -2
  108. package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +2 -1
  109. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +3 -1
  110. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +4 -4
  111. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +6 -1
  112. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +4 -1
  113. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +2 -2
  114. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  115. package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +6 -0
  116. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +18 -0
  117. package/dist/_dts/blocks/src/system/runtime/api/types/portal.d.ts +6 -0
  118. package/dist/_dts/blocks/src/system/runtime/api/types/shop.d.ts +4 -0
  119. package/dist/_dts/blocks/src/system/runtime/components/booking/SuccessMessage.d.ts +4 -1
  120. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +36 -6
  121. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +18 -3
  122. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +11 -0
  123. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +2 -0
  124. package/dist/_dts/blocks/src/system/runtime/hooks/usePaymentVerification.d.ts +2 -1
  125. package/dist/_dts/blocks/src/system/runtime/hooks/usePolling.d.ts +7 -48
  126. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.checkout-return-context.d.ts +7 -0
  127. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.completion.d.ts +11 -0
  128. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +13 -0
  129. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +28 -0
  130. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-choice.d.ts +5 -0
  131. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-state.d.ts +9 -0
  132. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.payment-confirmation.d.ts +13 -0
  133. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.reserved-fields.d.ts +1 -1
  134. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.server.d.ts +1 -1
  135. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +17 -1
  136. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-actions.d.ts +8 -0
  137. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-handler.d.ts +9 -0
  138. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-success.d.ts +9 -0
  139. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +4 -0
  140. package/dist/_dts/blocks/src/system/runtime/nodes/checkout.server.d.ts +2 -1
  141. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/AttendeeDetailsStep.d.ts +3 -0
  142. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +2 -1
  143. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizard.d.ts +5 -0
  144. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SuccessStep.d.ts +7 -1
  145. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +3 -0
  146. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/sessionStorage.d.ts +2 -0
  147. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +8 -0
  148. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +5 -5
  149. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +8 -0
  150. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +18 -5
  151. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +6 -0
  152. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +37 -3
  153. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.client.d.ts +1 -1
  154. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +16 -1
  155. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCardPresentations.d.ts +13 -0
  156. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +5 -5
  157. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.block-submission.d.ts +2 -4
  158. package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.d.ts +1 -14
  159. package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.d.ts +12 -0
  160. package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +13 -0
  161. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +2 -0
  162. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingMailingListNote.d.ts +6 -0
  163. package/dist/_dts/blocks/src/system/runtime/shared/components/DemoBookingPortalAccess.d.ts +22 -0
  164. package/dist/_dts/blocks/src/system/runtime/shared/components/DemoPortalSignInLink.d.ts +4 -0
  165. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
  166. package/dist/_dts/blocks/src/system/runtime/shared/mailingListSignupCopy.d.ts +6 -0
  167. package/dist/_dts/blocks/src/system/runtime/shared/types.d.ts +1 -0
  168. package/dist/_dts/blocks/src/system/runtime/shared/utils/demoBookingPassStorage.d.ts +10 -0
  169. package/dist/_dts/blocks/src/system/runtime/shared/utils/demoPortalMagicLink.d.ts +29 -0
  170. package/dist/_dts/blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.d.ts +3 -2
  171. package/dist/_dts/blocks/src/system/transforms/registry/core.d.ts +2 -0
  172. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +1 -3
  173. package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +4 -0
  174. package/dist/_dts/content-editor/src/components/ContentFieldsForm.d.ts +2 -7
  175. package/dist/_dts/content-editor/src/controller/EditLeaseController.d.ts +39 -0
  176. package/dist/_dts/content-editor/src/controller/EditorWriteGate.d.ts +38 -0
  177. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +25 -61
  178. package/dist/_dts/content-editor/src/controller/LinkedEntryLeaseBanner.d.ts +7 -0
  179. package/dist/_dts/content-editor/src/controller/LinkedEntryLeaseControllers.d.ts +14 -0
  180. package/dist/_dts/content-editor/src/controller/deriveEditorUnpublishedState.d.ts +6 -0
  181. package/dist/_dts/content-editor/src/controller/documentValueBaseline.d.ts +25 -0
  182. package/dist/_dts/content-editor/src/controller/editLeaseLossSignal.d.ts +6 -0
  183. package/dist/_dts/content-editor/src/controller/editLeaseNotice.d.ts +28 -0
  184. package/dist/_dts/content-editor/src/controller/editorClientId.d.ts +2 -0
  185. package/dist/_dts/content-editor/src/controller/editorEditability.d.ts +38 -0
  186. package/dist/_dts/content-editor/src/controller/editorLeaseParticipation.d.ts +34 -0
  187. package/dist/_dts/content-editor/src/controller/normalizedMetadataBaseline.d.ts +29 -0
  188. package/dist/_dts/content-editor/src/controller/pageSurfaceDocumentBaselines.d.ts +14 -0
  189. package/dist/_dts/content-editor/src/controller/pageSurfaceLifecycle.d.ts +11 -0
  190. package/dist/_dts/content-editor/src/controller/planDocumentBaselineRefresh.d.ts +19 -0
  191. package/dist/_dts/content-editor/src/controller/readDocumentLeaseBaselines.d.ts +19 -0
  192. package/dist/_dts/content-editor/src/controller/refreshDocumentLeaseBaseline.d.ts +12 -0
  193. package/dist/_dts/content-editor/src/controller/refreshLinkedEntry.d.ts +17 -0
  194. package/dist/_dts/content-editor/src/controller/replayRestoredEditorEffects.d.ts +2 -3
  195. package/dist/_dts/content-editor/src/controller/routeWrites.d.ts +26 -0
  196. package/dist/_dts/content-editor/src/controller/useAutosaveTriggers.d.ts +16 -17
  197. package/dist/_dts/content-editor/src/controller/useBlockedPublishPlan.d.ts +6 -2
  198. package/dist/_dts/content-editor/src/controller/useBlocksList.d.ts +3 -3
  199. package/dist/_dts/content-editor/src/controller/useEntryValueAutosaves.d.ts +21 -0
  200. package/dist/_dts/content-editor/src/controller/useInitialEditorUiStore.d.ts +24 -0
  201. package/dist/_dts/content-editor/src/controller/useServerBaselineReconciliation.d.ts +17 -0
  202. package/dist/_dts/content-editor/src/footerComposerPanelTypes.d.ts +1 -1
  203. package/dist/_dts/content-editor/src/hooks/applyBlockedPublishPlan.d.ts +5 -1
  204. package/dist/_dts/content-editor/src/hooks/blockDraftLifecycle.d.ts +8 -47
  205. package/dist/_dts/content-editor/src/hooks/editLeaseMachine.d.ts +120 -0
  206. package/dist/_dts/content-editor/src/hooks/publishability.d.ts +6 -10
  207. package/dist/_dts/content-editor/src/hooks/useAutosaveStatus.d.ts +3 -0
  208. package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +5 -15
  209. package/dist/_dts/content-editor/src/hooks/useDebouncedLatestSave.d.ts +7 -5
  210. package/dist/_dts/content-editor/src/hooks/useEditLease.d.ts +28 -0
  211. package/dist/_dts/content-editor/src/hooks/useEntryActions.d.ts +25 -39
  212. package/dist/_dts/content-editor/src/hooks/useEntryMutations.d.ts +17 -19
  213. package/dist/_dts/content-editor/src/hooks/useLinkedEntryAutosave.d.ts +5 -8
  214. package/dist/_dts/content-editor/src/hooks/useValueAutosave.d.ts +64 -0
  215. package/dist/_dts/content-editor/src/hooks/validateBlocksForPublish.d.ts +0 -7
  216. package/dist/_dts/content-editor/src/index.d.ts +26 -7
  217. package/dist/_dts/content-editor/src/linkedEntries/domain.d.ts +12 -0
  218. package/dist/_dts/content-editor/src/linkedEntries/owner.d.ts +9 -0
  219. package/dist/_dts/content-editor/src/liveDrafts/draftProjection.d.ts +66 -0
  220. package/dist/_dts/content-editor/src/liveDrafts/linkedSaveHandovers.d.ts +37 -0
  221. package/dist/_dts/content-editor/src/liveDrafts/remoteDraftOverlay.d.ts +113 -0
  222. package/dist/_dts/content-editor/src/liveDrafts/useLiveDrafts.d.ts +32 -0
  223. package/dist/_dts/content-editor/src/liveDrafts/useRetentionTicks.d.ts +7 -0
  224. package/dist/_dts/content-editor/src/primitives/shared/activePreviewField.d.ts +6 -0
  225. package/dist/_dts/content-editor/src/primitives/shared/storeBinding.d.ts +1 -0
  226. package/dist/_dts/content-editor/src/services/contentEntryServices.d.ts +96 -19
  227. package/dist/_dts/content-editor/src/services/editorApiClient.d.ts +13 -0
  228. package/dist/_dts/content-editor/src/services/index.d.ts +2 -0
  229. package/dist/_dts/content-editor/src/services/pageSurfaceEditorServices.d.ts +23 -0
  230. package/dist/_dts/content-editor/src/sync/flushValues.d.ts +13 -0
  231. package/dist/_dts/content-editor/src/sync/lifecycleFailure.d.ts +51 -0
  232. package/dist/_dts/content-editor/src/sync/runLifecycle.d.ts +64 -0
  233. package/dist/_dts/content-editor/src/sync/schedulerValues.d.ts +27 -0
  234. package/dist/_dts/content-editor/src/sync/sendPlanning.d.ts +104 -0
  235. package/dist/_dts/content-editor/src/sync/valueSync.d.ts +114 -0
  236. package/dist/_dts/content-editor/src/ui/blockCollection.d.ts +8 -0
  237. package/dist/_dts/content-editor/src/ui/documentLifecycle.d.ts +18 -0
  238. package/dist/_dts/content-editor/src/ui/editorLeaseUiState.d.ts +7 -0
  239. package/dist/_dts/content-editor/src/ui/editorRefresh.d.ts +82 -0
  240. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +102 -127
  241. package/dist/_dts/content-editor/src/ui/editorTransactionState.d.ts +1 -1
  242. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +126 -72
  243. package/dist/_dts/content-editor/src/ui/editorValueSnapshot.d.ts +18 -0
  244. package/dist/_dts/content-editor/src/ui/serverBlockAdmission.d.ts +26 -0
  245. package/dist/_dts/content-editor/src/ui/stores/autosaveStore.d.ts +16 -27
  246. package/dist/_dts/content-editor/src/ui/stores/blockVersionsStore.d.ts +24 -0
  247. package/dist/_dts/content-editor/src/ui/stores/linkedEntryLeaseStore.d.ts +54 -0
  248. package/dist/_dts/content-editor/src/ui/stores/linkedSaveHandoversStore.d.ts +11 -0
  249. package/dist/_dts/content-editor/src/ui/stores/remoteDraftsStore.d.ts +10 -0
  250. package/dist/_dts/content-editor/src/ui/stores/types.d.ts +63 -3
  251. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +2 -2
  252. package/dist/_dts/content-editor/src/useFooterNavigationLayout.d.ts +1 -1
  253. package/dist/_dts/content-model/src/content-types/builtin-schemas.d.ts +4 -4
  254. package/dist/_dts/content-model/src/content-types/builtins.d.ts +4 -4
  255. package/dist/_dts/content-model/src/definitions/shared.d.ts +11 -2
  256. package/dist/_dts/content-model/src/entry-slots/index.d.ts +1 -0
  257. package/dist/_dts/content-model/src/entry-slots/serializeAllowedBlocks.d.ts +2 -0
  258. package/dist/_dts/content-model/src/metadataConfig.d.ts +10 -38
  259. package/dist/_dts/content-model/src/templates/defaults.d.ts +0 -1
  260. package/dist/_dts/content-model/src/types.d.ts +0 -1
  261. package/dist/_dts/core/src/block-content-identity.d.ts +49 -1
  262. package/dist/_dts/core/src/branded.d.ts +12 -0
  263. package/dist/_dts/core/src/currency-format.d.ts +8 -2
  264. package/dist/_dts/core/src/demo-lifecycle-status.d.ts +2 -2
  265. package/dist/_dts/core/src/demo-warm-pool-target.d.ts +8 -0
  266. package/dist/_dts/core/src/edit-lease.d.ts +55 -0
  267. package/dist/_dts/core/src/editor-state.d.ts +38 -13
  268. package/dist/_dts/core/src/editor-value-sync.d.ts +79 -0
  269. package/dist/_dts/core/src/html-entities.d.ts +6 -0
  270. package/dist/_dts/core/src/index.d.ts +5 -1
  271. package/dist/_dts/core/src/mailing-list-runtime.d.ts +15 -0
  272. package/dist/_dts/core/src/mailing-list-setup.d.ts +2 -0
  273. package/dist/_dts/core/src/mailing-list-submission.d.ts +6 -0
  274. package/dist/_dts/core/src/navigation-portal-labels.d.ts +9 -0
  275. package/dist/_dts/core/src/participants.d.ts +0 -38
  276. package/dist/_dts/core/src/uuid.d.ts +7 -5
  277. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +261 -175
  278. package/dist/_dts/editor/src/EditorProvider.d.ts +5 -0
  279. package/dist/_dts/editor/src/chrome/EditorChrome.d.ts +14 -0
  280. package/dist/_dts/editor/src/chrome/EditorStatusBar.d.ts +1 -0
  281. package/dist/_dts/editor/src/chrome/statusBarPresentation.d.ts +0 -1
  282. package/dist/_dts/editor/src/index.d.ts +1 -1
  283. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +10 -9
  284. package/dist/_dts/editor-blocks/src/BlockForm.d.ts +1 -1
  285. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +1 -1
  286. package/dist/_dts/editor-blocks/src/block-editor/BlockCardFrame.d.ts +1 -1
  287. package/dist/_dts/editor-blocks/src/block-editor/BlockSettingsModal.d.ts +1 -1
  288. package/dist/_dts/editor-blocks/src/block-editor/actionPresentation.d.ts +1 -0
  289. package/dist/_dts/editor-blocks/src/block-editor/applyExtendedFieldDefaults.d.ts +3 -4
  290. package/dist/_dts/editor-blocks/src/block-editor/blockDraftBaselineSeed.d.ts +4 -8
  291. package/dist/_dts/editor-blocks/src/block-editor/editorBlockItem.d.ts +23 -0
  292. package/dist/_dts/editor-blocks/src/block-editor/generatedIconApplyCoordination.d.ts +2 -7
  293. package/dist/_dts/editor-blocks/src/block-editor/hooks/applyBlockStructureChange.d.ts +4 -0
  294. package/dist/_dts/editor-blocks/src/block-editor/hooks/buildInsertBlockHistoryCommand.d.ts +14 -5
  295. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockBaselineSync.d.ts +21 -19
  296. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockCreation.d.ts +2 -10
  297. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +8 -16
  298. package/dist/_dts/editor-blocks/src/block-editor/owner.d.ts +6 -16
  299. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +37 -9
  300. package/dist/_dts/editor-blocks/src/index.d.ts +2 -1
  301. package/dist/_dts/editor-blocks/src/widgets/entry-picker/loaders.d.ts +1 -1
  302. package/dist/_dts/editor-blocks/src/widgets/link/loaders.d.ts +1 -1
  303. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +1 -1
  304. package/dist/_dts/editor-blocks/src/widgets/reference/loaders.d.ts +1 -1
  305. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +3 -2
  306. package/dist/_dts/media-core/src/fileStorage.d.ts +4 -0
  307. package/dist/_dts/media-editor/src/context.d.ts +1 -1
  308. package/dist/_dts/media-editor/src/createMediaEditorProvider.d.ts +1 -2
  309. package/dist/_dts/media-editor/src/provider.d.ts +3 -2
  310. package/dist/_dts/media-react/src/hooks/internal/classification.d.ts +1 -1
  311. package/dist/_dts/media-react/src/hooks/useApiMediaUploader.d.ts +3 -1
  312. package/dist/_dts/preview-next/src/client/blocks/EditablePageRenderer.d.ts +7 -1
  313. package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +8 -3
  314. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +10 -6
  315. package/dist/_dts/preview-next/src/client/blocks/linkedEntryRenderOverlay.d.ts +22 -2
  316. package/dist/_dts/preview-next/src/client/blocks/previewProjection/entryFieldRebinding.d.ts +13 -0
  317. package/dist/_dts/preview-next/src/client/blocks/previewProjection/index.d.ts +2 -1
  318. package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +11 -1
  319. package/dist/_dts/preview-next/src/client/blocks/renderPrecedence.d.ts +17 -0
  320. package/dist/_dts/preview-next/src/client/blocks/useLinkedSaveHandoverRetention.d.ts +20 -0
  321. package/dist/_dts/preview-next/src/client/index.d.ts +1 -1
  322. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -1
  323. package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -1
  324. package/dist/_dts/preview-next/src/client/preview/PreviewAccessBanners.d.ts +7 -0
  325. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -1
  326. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +24 -14
  327. package/dist/_dts/preview-next/src/client/preview/PreviewLeaseEditingMode.d.ts +2 -0
  328. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +9 -2
  329. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +1 -0
  330. package/dist/_dts/preview-next/src/client/preview/previewCustomizeAutosave.d.ts +5 -0
  331. package/dist/_dts/preview-next/src/client/preview/previewCustomizeWorkflowState.d.ts +3 -4
  332. package/dist/_dts/preview-next/src/client/preview/sdkConfig.d.ts +1 -0
  333. package/dist/_dts/preview-next/src/client/preview/usePreviewCustomizeWorkflowState.d.ts +4 -0
  334. package/dist/_dts/realtime/src/client.d.ts +3 -0
  335. package/dist/_dts/realtime/src/draftChannel.d.ts +91 -0
  336. package/dist/_dts/realtime/src/drafts.d.ts +210 -0
  337. package/dist/_dts/realtime/src/index.d.ts +3 -0
  338. package/dist/_dts/realtime/src/leaseChangeSubscriptions.d.ts +8 -0
  339. package/dist/_dts/realtime/src/types.d.ts +113 -0
  340. package/dist/_dts/realtime/src/useDraftChannel.d.ts +34 -0
  341. package/dist/_dts/realtime/src/useSiteRealtimeReload.d.ts +27 -0
  342. package/dist/_dts/sdk/src/public-api/contracts.d.ts +6 -55
  343. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -0
  344. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +2 -0
  345. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +1 -1
  346. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +4 -2
  347. package/dist/_dts/sdk/src/version.d.ts +1 -1
  348. package/dist/_dts/surfaces/src/index.d.ts +1 -0
  349. package/dist/_dts/theme-core/src/buttons/effects/types.d.ts +1 -1
  350. package/dist/_dts/theme-core/src/footer/effectiveNavLinkStyle.d.ts +13 -0
  351. package/dist/_dts/theme-core/src/footer/index.d.ts +1 -0
  352. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  353. package/dist/_dts/theme-core/src/header/effectiveNavLinkStyle.d.ts +17 -0
  354. package/dist/_dts/theme-core/src/header/generateHeaderLogoStyles.d.ts +15 -0
  355. package/dist/_dts/theme-core/src/header/generateHeaderNavLinkStyles.d.ts +4 -0
  356. package/dist/_dts/theme-core/src/header/index.d.ts +3 -0
  357. package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +1 -1
  358. package/dist/_dts/theme-core/src/header/openingForegroundProjection.d.ts +7 -0
  359. package/dist/_dts/theme-core/src/header/rootPaint.d.ts +4 -0
  360. package/dist/_dts/theme-core/src/navigation/effectPolicy.d.ts +38 -0
  361. package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +4 -0
  362. package/dist/_dts/theme-core/src/navigation/types.d.ts +4 -0
  363. package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +1 -1
  364. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
  365. package/dist/_dts/theme-core/src/surfaces/foregroundContract.d.ts +7 -0
  366. package/dist/_dts/theme-core/src/surfaces/foregroundInteraction.d.ts +29 -22
  367. package/dist/_dts/theme-core/src/surfaces/foregroundRoles.d.ts +10 -2
  368. package/dist/_dts/theme-core/src/surfaces/resolveSurfaceForeground.d.ts +9 -0
  369. package/dist/_dts/theme-core/src/utils/cssDeclarations.d.ts +2 -0
  370. package/dist/_dts/ui/src/badge.d.ts +2 -1
  371. package/dist/_dts/ui/src/button.d.ts +1 -1
  372. package/dist/_dts/ui/src/combobox-keys.d.ts +23 -0
  373. package/dist/_dts/ui/src/combobox-rows.d.ts +34 -0
  374. package/dist/_dts/ui/src/combobox.d.ts +26 -1
  375. package/dist/_dts/ui/src/date-picker.d.ts +5 -8
  376. package/dist/_dts/ui/src/editor-item-card.d.ts +1 -0
  377. package/dist/_dts/ui/src/field-trigger.d.ts +39 -0
  378. package/dist/_dts/ui/src/fieldControl.d.ts +27 -0
  379. package/dist/_dts/ui/src/index.d.ts +4 -1
  380. package/dist/_dts/ui/src/native-select.d.ts +8 -0
  381. package/dist/_dts/ui/src/popover.d.ts +7 -1
  382. package/dist/_dts/ui/src/segmented-control.d.ts +4 -0
  383. package/dist/_dts/ui/src/surface.d.ts +1 -1
  384. package/dist/client/{BookingConsentAgreement-BQKL045f.mjs → BookingMailingListNote-CzRt2dF_.mjs} +110 -97
  385. package/dist/client/{CheckboxChoice--W2n6yKs.mjs → CheckboxChoice-B33MqoUo.mjs} +1 -1
  386. package/dist/client/DemoBookingPortalAccess-mxqwap3f.mjs +344 -0
  387. package/dist/client/{EventCombined.client-BdRjVbhH.mjs → EventCombined.client-CDb11igO.mjs} +7 -7
  388. package/dist/client/{EventListing.client-DBxC6xOU.mjs → EventListing.client-EgYhzKPa.mjs} +2 -2
  389. package/dist/client/{LeafletStaticMap-mHEJKrTs.mjs → LeafletStaticMap-gtmtaA2b.mjs} +1 -1
  390. package/dist/client/{scrollToBlock-BNgaEUpo.mjs → TerminalPanel-DvNUP5ot.mjs} +77 -77
  391. package/dist/client/{ThemedButton-CE5KYT6z.mjs → ThemedButton-C7CeUJjW.mjs} +2 -2
  392. package/dist/client/{accordion-BEQNSptH.mjs → accordion-kjvt49rA.mjs} +1 -1
  393. package/dist/client/{bookingForm-AMr-s5vw.mjs → bookingForm-pbRZordh.mjs} +411 -141
  394. package/dist/client/bookings.mjs +966 -396
  395. package/dist/client/{carousel-Bbt_QgJy.mjs → carousel-f4Zbmicv.mjs} +2 -2
  396. package/dist/client/{carousel.client-jahpU9Vz.mjs → carousel.client-A2lG-9od.mjs} +1 -1
  397. package/dist/client/{cart-CnWi30zJ.mjs → cart-DO20An50.mjs} +3 -3
  398. package/dist/client/{checkout-f3nkWgd4.mjs → checkout-Du5amDR_.mjs} +3 -3
  399. package/dist/client/{checkoutUrls-CW3-78uu.mjs → checkoutUrls-CXhko2Rv.mjs} +1 -1
  400. package/dist/client/client.mjs +3837 -2202
  401. package/dist/client/{colorStyles-CuJBiS-1.mjs → colorStyles-j5U9v5JA.mjs} +5 -1
  402. package/dist/client/{context-Bc8T6pCe.mjs → context-eW97E945.mjs} +4 -3
  403. package/dist/client/{dates-DUsCEzLb.mjs → dates-jPCirRea.mjs} +56 -11
  404. package/dist/client/{eventCalendar-CKwgXui5.mjs → eventCalendar-C2M-iE4j.mjs} +10 -10
  405. package/dist/client/{eventCombined-CBAOSTGR.mjs → eventCombined-W6ns3LHg.mjs} +4 -4
  406. package/dist/client/{eventDetails-Dh-_WiBD.mjs → eventDetails-CR-GT0f0.mjs} +4 -4
  407. package/dist/client/{eventListing-CA3frIH5.mjs → eventListing-BK8AfYZz.mjs} +4 -4
  408. package/dist/client/{eventRegistration-BHtsgdcg.mjs → eventRegistration-BJSd4KUu.mjs} +461 -266
  409. package/dist/client/{form-C2h3YAcg.mjs → form-BvpfbQaT.mjs} +5 -5
  410. package/dist/client/{headerSection-lwMuMTH9.mjs → headerSection-I5sUQ8x-.mjs} +3 -3
  411. package/dist/client/hooks.mjs +909 -163
  412. package/dist/client/{locationMap-DJ2bLODV.mjs → locationMap-BLvwf9_f.mjs} +4 -4
  413. package/dist/client/{FieldValidationMessage-AYanWFb-.mjs → mailingListSignupCopy-DZSHZrm6.mjs} +14 -1
  414. package/dist/client/{media-BtJ37tzS.mjs → media-Cl38iOMI.mjs} +11 -4
  415. package/dist/client/{newsletterForm-8Pu5K32g.mjs → newsletterForm-DrQ2weE8.mjs} +6 -6
  416. package/dist/client/{pricing-HHx3IgBz.mjs → pricing-BES87mrR.mjs} +1 -1
  417. package/dist/client/{productDetail-C_1odnAf.mjs → productDetail-Url9jcc5.mjs} +3 -3
  418. package/dist/client/{productList-CtCv-Nmx.mjs → productList-DE7ngEZJ.mjs} +3 -3
  419. package/dist/client/{propsDecoder-Dcgsncxb.mjs → propsDecoder-D1OtGXDV.mjs} +140 -22
  420. package/dist/client/rendering/client.mjs +2366 -997
  421. package/dist/client/rendering/islands.mjs +19 -19
  422. package/dist/client/rendering.mjs +4607 -2884
  423. package/dist/client/{routeIslandApiConfig-CWLP7wu3.mjs → routeIslandApiConfig-BG9Y-SHg.mjs} +1 -1
  424. package/dist/client/{shop-DQXrQ8kJ.mjs → shop-CJkuySJ3.mjs} +126 -79
  425. package/dist/client/{shop-commerce-B88zmWWo.mjs → shop-commerce-4rKj5n9h.mjs} +26 -14
  426. package/dist/client/{shop-commerce-store-DtSfkKuX.mjs → shop-commerce-store-Bxm75Pg6.mjs} +1 -1
  427. package/dist/client/{shopShared-cuaONpkJ.mjs → shopShared-DpoQDWfz.mjs} +5 -5
  428. package/dist/client/{useEventFilters-Bukew6Gb.mjs → useEventFilters-D8HliSqR.mjs} +33 -18
  429. package/dist/preview-next/before-render.mjs +314 -133
  430. package/dist/preview-next/client/runtime.mjs +4 -4
  431. package/dist/preview-next/editor-base.css +53 -2
  432. package/dist/preview-next/editor-chrome.css +7 -4
  433. package/dist/preview-next/keepAlive.mjs +314 -133
  434. package/dist/preview-next/middleware.mjs +314 -133
  435. package/dist/{previewAuthStore-h5IgbSp4.mjs → previewAuthStore-BXXF3hhW.mjs} +316 -133
  436. package/dist/{sdk-runtime-DTc1uIXn.mjs → sdk-runtime-C2a05WjL.mjs} +2 -2
  437. package/dist/{separator-BpHS1KZK.mjs → separator-CuNhBAhS.mjs} +1 -1
  438. package/dist/server/components.mjs +6888 -6157
  439. package/dist/server/config-validation.mjs +931 -199
  440. package/dist/server/config.mjs +931 -199
  441. package/dist/server/data.mjs +929 -198
  442. package/dist/server/index.mjs +317 -134
  443. package/dist/server/navigation.mjs +13 -2
  444. package/dist/server/next.mjs +5003 -4340
  445. package/dist/server/page-converter.mjs +160 -78
  446. package/dist/server/prebuild.mjs +1 -1
  447. package/dist/server/rendering/server.mjs +6421 -5687
  448. package/dist/server/rendering.mjs +7683 -6933
  449. package/dist/server/routing.mjs +1035 -338
  450. package/dist/server/server.mjs +946 -256
  451. package/dist/server/theme-bridge.mjs +66 -17
  452. package/dist/server/theme.mjs +5 -1
  453. package/dist/styles/index.css +32 -4
  454. package/package.json +1 -1
  455. package/dist/_dts/billing/src/plans/display.d.ts +0 -15
  456. package/dist/_dts/content-editor/src/controller/buildBlockPublishedBaselines.d.ts +0 -4
  457. package/dist/_dts/content-editor/src/controller/buildPublishSuccessTransition.d.ts +0 -16
  458. package/dist/_dts/content-editor/src/controller/driver.d.ts +0 -14
  459. package/dist/_dts/content-editor/src/controller/seedDraftBaselinesFromBlocks.d.ts +0 -7
  460. package/dist/_dts/content-editor/src/controller/useEntrySyncHelpers.d.ts +0 -29
  461. package/dist/_dts/content-editor/src/hooks/autosaveScopePlanning.d.ts +0 -26
  462. package/dist/_dts/content-editor/src/hooks/useSimpleAutosave.d.ts +0 -64
  463. package/dist/_dts/content-editor/src/hooks/useStoreAutosave.d.ts +0 -48
  464. package/dist/_dts/content-editor/src/types.d.ts +0 -44
  465. package/dist/_dts/core/src/participant-identity.d.ts +0 -135
  466. package/dist/client/DiscountCodeDisclosure-CsOtjFY7.mjs +0 -137
@@ -1,21 +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-BQKL045f.mjs";
3
- import { C as resolveDiscountContext, D as WIZARD_STEPS, E as toRegistrationRequestSubject, M as resolveEventRegistrationScopedEvents, O as getStepNumber, Qt as formatBookingDate, S as findPreSelectedEvent, T as resolveRegistrationTarget, Vt as assertNever, _ as buildEventRegistrationDisplayFromScopedEvents, _n as publicEventPricingStrategy, b as toWholeSeriesRegistrationEvents, bn as parseCurrencyCode, cn as toBookingTimeZone, en as formatBookingDateTime, ft as groupPublicEventsByRun, gn as publicEventPricingOptions, k as getWizardStepsForContext, mn as publicEventPricingCurrency, nn as formatBookingTime, t as defineIslandPropsDecoder, un as toScheduledBookingDateTime, v as getRegistrationStartAt, vn as publicEventPricingType, w as resolveEventRequiresPayment, x as findEventByOccurrenceId, y as toRegistrationEvents, yn as formatCurrencyAmount } from "./propsDecoder-Dcgsncxb.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-HHx3IgBz.mjs";
5
- import { n as useBlockApi, r as BlockApiError, t as BlockApiProvider } from "./context-Bc8T6pCe.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-CzRt2dF_.mjs";
3
+ import { C as resolveDiscountContext, Cn as formatCurrencyAmount, D as WIZARD_STEPS, E as toRegistrationRequestSubject, M as resolveEventRegistrationScopedEvents, O as getStepNumber, Ot as getRegistrationSuccessCopy, S as findPreSelectedEvent, Sn as publicEventPricingType, T as resolveRegistrationTarget, Wt as assertNever, _ as buildEventRegistrationDisplayFromScopedEvents, b as toWholeSeriesRegistrationEvents, bn as publicEventPricingOptions, en as resolveBookingSignupOffer, fn as toBookingTimeZone, ft as groupPublicEventsByRun, in as formatBookingDateTime, k as getWizardStepsForContext, mn as toScheduledBookingDateTime, nn as formatBookingDate, on as formatBookingTime, t as defineIslandPropsDecoder, v as getRegistrationStartAt, vn as publicEventPricingCurrency, w as resolveEventRequiresPayment, wn as parseCurrencyCode, x as findEventByOccurrenceId, xn as publicEventPricingStrategy, y as toRegistrationEvents } from "./propsDecoder-D1OtGXDV.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-BES87mrR.mjs";
5
+ import { n as useBlockApi, r as BlockApiError, t as BlockApiProvider } from "./context-eW97E945.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 { a as requestDemoPortalMagicLink, f as storeDemoBookingPass, i as buildPortalCallbackUrl, o as DiscountCodeDisclosure, r as CUSTOMER_PORTAL_PATH, t as BookingConfirmation } from "./DemoBookingPortalAccess-mxqwap3f.mjs";
8
+ import { a as useDiscountCodeUi, i as CheckIcon, n as StateIcon, r as scrollToBlock, t as TerminalPanel } from "./TerminalPanel-DvNUP5ot.mjs";
9
+ import { i as SpinnerNode, n as ThemedButtonLink, t as ThemedButton } from "./ThemedButton-C7CeUJjW.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-CXhko2Rv.mjs";
13
+ import { t as CheckboxChoice } from "./CheckboxChoice-B33MqoUo.mjs";
14
14
  import { t as createBodyThemePortalRoot } from "./themePortalRoot-AGs4cE7t.mjs";
15
15
  import { n as consumeSearchParams } from "./urlParams-D71VXFGx.mjs";
16
16
  import { t as CrossIcon } from "./CrossIcon-Dn1KRKW5.mjs";
17
17
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
18
- import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-CWLP7wu3.mjs";
18
+ import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-BG9Y-SHg.mjs";
19
19
  import { t as createLucideIcon } from "./createLucideIcon-PaLVMov4.mjs";
20
20
  import { t as ModalShell } from "./ModalShell-CqkBvBIC.mjs";
21
21
  import React, { useCallback, useEffect, useId, useLayoutEffect, useMemo, useReducer, useRef, useState, useSyncExternalStore } from "react";
@@ -34,6 +34,16 @@ function toNonNegativeCents(value) {
34
34
  return unsafeAsNonNegativeCents(Math.max(0, Math.trunc(value)));
35
35
  }
36
36
  //#endregion
37
+ //#region ../core/src/uuid.ts
38
+ function generateUuidV4(cryptoSource = globalThis.crypto) {
39
+ if (typeof cryptoSource.randomUUID === "function") return cryptoSource.randomUUID();
40
+ const bytes = cryptoSource.getRandomValues(/* @__PURE__ */ new Uint8Array(16));
41
+ bytes[6] = (bytes[6] ?? 0) & 15 | 64;
42
+ bytes[8] = (bytes[8] ?? 0) & 63 | 128;
43
+ const hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0"));
44
+ return `${hex.slice(0, 4).join("")}-${hex.slice(4, 6).join("")}-${hex.slice(6, 8).join("")}-${hex.slice(8, 10).join("")}-${hex.slice(10).join("")}`;
45
+ }
46
+ //#endregion
37
47
  //#region ../blocks/src/system/runtime/shared/components/ClockIcon.tsx
38
48
  function ClockIcon({ className, strokeWidth = 2 }) {
39
49
  return /* @__PURE__ */ jsx("svg", {
@@ -800,7 +810,7 @@ function recoverRegistrationError(action, handlers) {
800
810
  switch (action) {
801
811
  case "none": return;
802
812
  case "portal":
803
- window.location.assign("/portal");
813
+ window.location.assign(CUSTOMER_PORTAL_PATH);
804
814
  return;
805
815
  case "event":
806
816
  window.location.assign(window.location.pathname);
@@ -833,7 +843,8 @@ function createInitialRegistrationFormData() {
833
843
  email: "",
834
844
  phone: "",
835
845
  notes: "",
836
- consentAccepted: false
846
+ consentAccepted: false,
847
+ mailingListOptIn: false
837
848
  };
838
849
  }
839
850
  function validateFormData(formData, requiresConsent = false) {
@@ -1413,6 +1424,10 @@ const eventRegistrationErrors = {
1413
1424
  message: "The payment options for this event have changed. Please check the latest options before continuing.",
1414
1425
  action: "payment-options"
1415
1426
  },
1427
+ verificationFailed: {
1428
+ message: "We couldn’t confirm this request came from a person. Please refresh the page and try again.",
1429
+ action: "none"
1430
+ },
1416
1431
  idempotencyConflict: {
1417
1432
  message: "You’ve already started booking this event. Please finish in the other tab if it’s still open, or check your booking status before starting again.",
1418
1433
  action: "portal"
@@ -1600,11 +1615,50 @@ function useResolvedWaitlistClaim(deps, credential) {
1600
1615
  * ```
1601
1616
  */
1602
1617
  const paymentVerificationDeps = { useBlockApi };
1618
+ function resolvePaymentPollingTarget(config) {
1619
+ const reference = config.reference;
1620
+ return reference.scope === "occurrence" ? {
1621
+ key: `occurrence:${reference.attendeeId}`,
1622
+ reference
1623
+ } : {
1624
+ key: `wholeSeries:${reference.registrationId}`,
1625
+ reference
1626
+ };
1627
+ }
1628
+ function createPaymentPollingConfig(api, settings) {
1629
+ if (settings === null) return null;
1630
+ const target = resolvePaymentPollingTarget(settings);
1631
+ return {
1632
+ restartKey: target.key,
1633
+ pollFn: () => api.getEventRegistrationStatus(target.reference),
1634
+ isComplete: (result) => result.paymentStatus === "completed" || result.paymentStatus === "not_required",
1635
+ isFailed: (result) => result.paymentStatus === "failed" || result.paymentStatus === "refunded",
1636
+ maxAttempts: settings.maxAttempts,
1637
+ interval: settings.pollInterval
1638
+ };
1639
+ }
1640
+ function getPaymentVerificationError(polling, paymentStatus) {
1641
+ if (polling.status === "timeout") return "Could not verify payment. If you were charged, please contact support.";
1642
+ if (polling.status === "failed" && paymentStatus !== null) return paymentStatus === "refunded" ? "Payment was refunded. Please contact support." : "Payment was declined. Please try again.";
1643
+ return polling.error?.message ?? null;
1644
+ }
1645
+ function mapPaymentVerificationResult(polling) {
1646
+ const paymentStatus = polling.result?.paymentStatus ?? null;
1647
+ return {
1648
+ status: polling.status,
1649
+ paymentStatus,
1650
+ attendeeStatus: polling.result?.attendeeStatus ?? null,
1651
+ waitlistPosition: polling.result?.waitlistPosition ?? null,
1652
+ error: getPaymentVerificationError(polling, paymentStatus),
1653
+ retry: polling.retry
1654
+ };
1655
+ }
1603
1656
  /**
1604
1657
  * Hook for polling payment status after Stripe redirects.
1605
1658
  *
1606
1659
  * Pass config to start polling, or null to stop/idle.
1607
- * The hook handles cleanup on unmount and config changes.
1660
+ * The hook handles cleanup on unmount and starts a new cycle when the status
1661
+ * reference changes.
1608
1662
  *
1609
1663
  * @param config - Configuration for polling, or null to stop
1610
1664
  * @returns Verification result with status, data, and retry function
@@ -1613,30 +1667,7 @@ function usePaymentVerification(config) {
1613
1667
  return usePaymentVerificationWithDeps(config, paymentVerificationDeps);
1614
1668
  }
1615
1669
  function usePaymentVerificationWithDeps(config, deps) {
1616
- const api = deps.useBlockApi();
1617
- const polling = usePolling(useMemo(() => {
1618
- if (!config) return null;
1619
- return {
1620
- pollFn: () => api.getEventRegistrationStatus(config.reference),
1621
- isComplete: (result) => result.paymentStatus === "completed" || result.paymentStatus === "not_required",
1622
- isFailed: (result) => result.paymentStatus === "failed" || result.paymentStatus === "refunded",
1623
- maxAttempts: config.maxAttempts,
1624
- interval: config.pollInterval
1625
- };
1626
- }, [api, config]));
1627
- const paymentStatus = polling.result?.paymentStatus ?? null;
1628
- let errorMessage = null;
1629
- if (polling.status === "timeout") errorMessage = "Could not verify payment. If you were charged, please contact support.";
1630
- else if (polling.status === "failed" && paymentStatus) errorMessage = paymentStatus === "refunded" ? "Payment was refunded. Please contact support." : "Payment was declined. Please try again.";
1631
- else if (polling.error) errorMessage = polling.error.message;
1632
- return {
1633
- status: polling.status,
1634
- paymentStatus,
1635
- attendeeStatus: polling.result?.attendeeStatus ?? null,
1636
- waitlistPosition: polling.result?.waitlistPosition ?? null,
1637
- error: errorMessage,
1638
- retry: polling.retry
1639
- };
1670
+ return mapPaymentVerificationResult(usePolling(createPaymentPollingConfig(deps.useBlockApi(), config)));
1640
1671
  }
1641
1672
  //#endregion
1642
1673
  //#region ../blocks/src/system/runtime/nodes/event-registration/constants.ts
@@ -1906,7 +1937,10 @@ async function handleCheckoutReturn(options, deps, returnContextRef) {
1906
1937
  }
1907
1938
  const { checkoutAttemptId } = command;
1908
1939
  const pending = deps.getPendingRegistration(siteId, checkoutAttemptId);
1909
- returnContextRef.current = { checkoutAttemptId };
1940
+ returnContextRef.current = {
1941
+ checkoutAttemptId,
1942
+ mailingListSignupNote: pending?.mailingListSignupNote
1943
+ };
1910
1944
  if (pending) restorePendingPresentation(options, pending);
1911
1945
  options.setStep("verifying-payment");
1912
1946
  try {
@@ -1927,7 +1961,10 @@ function completeVerifiedRegistration(options, deps, returnContext) {
1927
1961
  const siteId = options.api.config.siteId;
1928
1962
  const checkoutAttemptId = returnContext?.checkoutAttemptId;
1929
1963
  if (siteId && checkoutAttemptId) deps.clearPendingRegistration(siteId, checkoutAttemptId);
1930
- options.setRegistrationResult({ status: "confirmed" });
1964
+ options.setRegistrationResult({
1965
+ status: "confirmed",
1966
+ mailingListSignupNote: returnContext?.mailingListSignupNote
1967
+ });
1931
1968
  options.setStep("success");
1932
1969
  }
1933
1970
  function useEventRegistrationStripeReturnWithDeps(options, deps) {
@@ -2000,20 +2037,12 @@ function registrationErrorPresentation(error) {
2000
2037
  }
2001
2038
  //#endregion
2002
2039
  //#region ../blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.ts
2003
- function createClientCommandId(cryptoSource = {
2004
- randomUUID: globalThis.crypto.randomUUID?.bind(globalThis.crypto),
2005
- getRandomValues: (bytes) => globalThis.crypto.getRandomValues(bytes)
2006
- }) {
2007
- if (cryptoSource.randomUUID) return cryptoSource.randomUUID();
2008
- const bytes = cryptoSource.getRandomValues(/* @__PURE__ */ new Uint8Array(16));
2009
- bytes[6] = (bytes[6] ?? 0) & 15 | 64;
2010
- bytes[8] = (bytes[8] ?? 0) & 63 | 128;
2011
- const hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0"));
2012
- return `${hex.slice(0, 4).join("")}-${hex.slice(4, 6).join("")}-${hex.slice(6, 8).join("")}-${hex.slice(8, 10).join("")}-${hex.slice(10).join("")}`;
2040
+ function wantsMailingListSignup(options) {
2041
+ return options.mailingListSignup !== null && options.formData.mailingListOptIn === true;
2013
2042
  }
2014
2043
  const eventRegistrationSubmitDeps = {
2015
2044
  savePendingRegistration,
2016
- createClientCommandId
2045
+ createClientCommandId: generateUuidV4
2017
2046
  };
2018
2047
  function useEventRegistrationSubmit(options) {
2019
2048
  return useEventRegistrationSubmitWithDeps(options, eventRegistrationSubmitDeps);
@@ -2093,11 +2122,13 @@ function useEventRegistrationSubmitWithDeps(options, deps) {
2093
2122
  };
2094
2123
  }
2095
2124
  async function completeRegistrationSubmission(options, deps, prepared, result, submitOptions) {
2125
+ if (result.demoBookingPass) storeDemoBookingPass(options.formData.email, result.demoBookingPass);
2096
2126
  switch (result.kind) {
2097
2127
  case "paymentStatusRequired":
2098
2128
  options.setPaymentStatusRecovery({
2099
2129
  kind: "ready",
2100
- subject: result.subject
2130
+ subject: result.subject,
2131
+ mailingListSignupNote: result.mailingListSignupNote
2101
2132
  });
2102
2133
  options.setStep("payment-status");
2103
2134
  return {
@@ -2106,14 +2137,16 @@ async function completeRegistrationSubmission(options, deps, prepared, result, s
2106
2137
  };
2107
2138
  case "checkoutRequired":
2108
2139
  options.setPendingRegistrationReference(result.reference);
2109
- savePendingCheckout(options, deps, prepared, result.submissionId, result.reference);
2140
+ savePendingCheckout(options, deps, prepared, result.submissionId, result.reference, result.mailingListSignupNote);
2110
2141
  options.setStep("redirecting");
2111
2142
  return redirectToCheckout(result.checkoutUrl, submitOptions);
2112
2143
  case "waitlisted":
2113
2144
  options.setRegistrationResult({
2114
2145
  status: "waitlist",
2115
2146
  title: "Added to waitlist",
2116
- message: result.waitlist.message
2147
+ message: result.waitlist.message,
2148
+ emailFollowupMessage: result.waitlist.emailFollowupMessage,
2149
+ mailingListSignupNote: result.mailingListSignupNote
2117
2150
  });
2118
2151
  break;
2119
2152
  case "bookingComplete":
@@ -2121,7 +2154,8 @@ async function completeRegistrationSubmission(options, deps, prepared, result, s
2121
2154
  options.setPendingRegistrationReference(result.reference);
2122
2155
  options.setRegistrationResult({
2123
2156
  status: "confirmed",
2124
- message: result.summary.paymentMethod === "pass" ? result.summary.message : void 0
2157
+ message: result.summary.paymentMethod === "pass" ? result.summary.message : void 0,
2158
+ mailingListSignupNote: result.mailingListSignupNote
2125
2159
  });
2126
2160
  break;
2127
2161
  }
@@ -2180,7 +2214,7 @@ function resolveSelectionSnapshot(method, passId, membershipId, bundleProductId,
2180
2214
  if (method === "free") return { method };
2181
2215
  throw new Error("Choose an available payment option.");
2182
2216
  }
2183
- function savePendingCheckout(options, deps, prepared, checkoutAttemptId, reference) {
2217
+ function savePendingCheckout(options, deps, prepared, checkoutAttemptId, reference, mailingListSignupNote) {
2184
2218
  const siteId = options.api.config.siteId;
2185
2219
  if (!siteId) return;
2186
2220
  deps.savePendingRegistration(siteId, checkoutAttemptId, {
@@ -2189,7 +2223,8 @@ function savePendingCheckout(options, deps, prepared, checkoutAttemptId, referen
2189
2223
  ticketSelections: prepared.ticketSelections,
2190
2224
  selectedEventId: options.registrationTarget?.selectedEventId ?? null,
2191
2225
  selectedAttendanceMode: options.selectedAttendanceMode,
2192
- paymentSelection: prepared.selectionSnapshot
2226
+ paymentSelection: prepared.selectionSnapshot,
2227
+ mailingListSignupNote
2193
2228
  });
2194
2229
  }
2195
2230
  function redirectToCheckout(checkoutUrl, submitOptions) {
@@ -2203,7 +2238,7 @@ function redirectToCheckout(checkoutUrl, submitOptions) {
2203
2238
  };
2204
2239
  }
2205
2240
  function registrationRequestIntentKey(request) {
2206
- const { registrationCommandId: _command, altchaSolution: _proof, checkout, ...intent } = request;
2241
+ const { registrationCommandId: _command, altchaSolution: _proof, mailingListOptIn: _marketingConsent, checkout, ...intent } = request;
2207
2242
  return JSON.stringify({
2208
2243
  ...intent,
2209
2244
  checkout: checkout ? {
@@ -2228,6 +2263,7 @@ function buildRegistrationRequest(options, prepared, method, passId, membershipI
2228
2263
  phone: options.formData.phone.trim() || void 0,
2229
2264
  notes: options.formData.notes.trim() || void 0,
2230
2265
  consentAccepted: options.formData.consentAccepted,
2266
+ mailingListOptIn: wantsMailingListSignup(options),
2231
2267
  altchaSolution: options.altchaSolution,
2232
2268
  paymentMethod: method,
2233
2269
  customerPassId: method === "pass" ? passId : void 0,
@@ -2462,13 +2498,17 @@ function isCheckableRecovery(state) {
2462
2498
  function assistanceRequired(recovery) {
2463
2499
  return {
2464
2500
  kind: "assistanceRequired",
2465
- subject: recovery.subject
2501
+ subject: recovery.subject,
2502
+ mailingListSignupNote: recovery.mailingListSignupNote
2466
2503
  };
2467
2504
  }
2468
2505
  function applyStatusOutcome(outcome, recovery, setters, setRecovery) {
2469
2506
  if (outcome.kind === "resolved") {
2470
2507
  setters.setPendingRegistrationReference(outcome.reference);
2471
- setters.setRegistrationResult({ status: "confirmed" });
2508
+ setters.setRegistrationResult({
2509
+ status: "confirmed",
2510
+ mailingListSignupNote: recovery.mailingListSignupNote
2511
+ });
2472
2512
  setRecovery(null);
2473
2513
  setters.setStep("success");
2474
2514
  return;
@@ -2597,6 +2637,7 @@ function useEventRegistrationWizardWithDeps(options, deps) {
2597
2637
  const paymentSelection = flowState.paymentSelection;
2598
2638
  const [selectedEvent, setSelectedEvent] = useState(preSelectedEvent ?? null);
2599
2639
  const [formData, setFormData] = useState(createInitialRegistrationFormData);
2640
+ const mailingListSignup = resolveBookingSignupOffer(options.mailingList, options.siteName);
2600
2641
  const [errors, setErrors] = useState({});
2601
2642
  const [guests, setGuests] = useState([]);
2602
2643
  const [guestErrors, setGuestErrors] = useState({});
@@ -3043,6 +3084,7 @@ function useEventRegistrationWizardWithDeps(options, deps) {
3043
3084
  ticketSelections,
3044
3085
  selectedSlidingAmount,
3045
3086
  formData,
3087
+ mailingListSignup,
3046
3088
  altchaSolution,
3047
3089
  requireGuestDetails,
3048
3090
  guests,
@@ -3139,6 +3181,7 @@ function useEventRegistrationWizardWithDeps(options, deps) {
3139
3181
  hasValidTicketSelection,
3140
3182
  eventRequiresPayment,
3141
3183
  formData,
3184
+ mailingListSignup,
3142
3185
  setFormData,
3143
3186
  errors,
3144
3187
  guests,
@@ -3228,6 +3271,118 @@ function useEventCheckoutHandoffRestoreWithDeps(active, deps) {
3228
3271
  }, [active, deps]);
3229
3272
  }
3230
3273
  //#endregion
3274
+ //#region ../blocks/src/system/runtime/nodes/event-registration/EventRegistrationBookingLayer.tsx
3275
+ function BookingEntry(props) {
3276
+ const base = props.variant === "teaser" ? "er-booking-teaser" : "er-booking-bar";
3277
+ return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("div", {
3278
+ className: `${base}__info`,
3279
+ children: [
3280
+ /* @__PURE__ */ jsx("span", {
3281
+ className: `${base}__title`,
3282
+ children: "Book this event"
3283
+ }),
3284
+ props.summary && /* @__PURE__ */ jsx("span", {
3285
+ className: `${base}__meta`,
3286
+ children: props.summary
3287
+ }),
3288
+ props.variant === "teaser" && props.ticketCurrency && props.ticketTypes.length > 0 ? /* @__PURE__ */ jsx("div", {
3289
+ className: "er-booking-teaser__tickets",
3290
+ children: props.ticketTypes.map((ticketType) => /* @__PURE__ */ jsxs("div", {
3291
+ className: "er-booking-teaser__ticket",
3292
+ children: [/* @__PURE__ */ jsx("span", {
3293
+ className: "er-booking-teaser__ticket-name",
3294
+ children: ticketType.name
3295
+ }), /* @__PURE__ */ jsx("strong", { children: props.formatTicketPrice(ticketType) })]
3296
+ }, ticketType.pricingOptionId))
3297
+ }) : null
3298
+ ]
3299
+ }), /* @__PURE__ */ jsx(ThemedButton, {
3300
+ type: "button",
3301
+ variant: props.buttonVariant,
3302
+ size: "md",
3303
+ extraClassName: `${base}__cta`,
3304
+ label: "Book now",
3305
+ onClick: props.onOpen
3306
+ })] });
3307
+ }
3308
+ function EventRegistrationBookingLayer(props) {
3309
+ const entryProps = {
3310
+ summary: [props.priceLabel, props.availabilityLabel].filter(Boolean).join(" · "),
3311
+ ticketTypes: props.ticketTypes,
3312
+ ticketCurrency: props.ticketCurrency,
3313
+ buttonVariant: props.buttonVariant,
3314
+ formatTicketPrice: props.formatTicketPrice,
3315
+ onOpen: props.onOpen
3316
+ };
3317
+ const floatingBar = !props.overlayOpen && props.isWizardStep ? /* @__PURE__ */ jsx("div", {
3318
+ className: "er-booking-bar",
3319
+ children: /* @__PURE__ */ jsx("div", {
3320
+ className: "er-booking-bar__inner",
3321
+ children: /* @__PURE__ */ jsx(BookingEntry, {
3322
+ ...entryProps,
3323
+ variant: "bar"
3324
+ })
3325
+ })
3326
+ }) : null;
3327
+ const floatingLayer = props.portalRoot ? createPortal(/* @__PURE__ */ jsx("div", {
3328
+ className: props.registrationRootClassName,
3329
+ "data-block": "event-registration",
3330
+ children: floatingBar
3331
+ }), props.portalRoot) : floatingBar;
3332
+ const overlayLayer = props.overlayOpen ? /* @__PURE__ */ jsx(ModalShell, {
3333
+ title: "Book this event",
3334
+ titleId: "event-registration-booking-title",
3335
+ onClose: props.onClose,
3336
+ portal: props.portalRoot != null,
3337
+ portalRoot: props.portalRoot,
3338
+ portalWrapperClassName: props.registrationRootClassName,
3339
+ portalWrapperProps: { "data-block": "event-registration" },
3340
+ overlayClassName: "er-booking-overlay",
3341
+ modalClassName: "er-booking-overlay__panel",
3342
+ renderHeader: ({ closeButtonRef, onClose, title, titleId }) => /* @__PURE__ */ jsxs("div", {
3343
+ className: "er-booking-overlay__header",
3344
+ children: [/* @__PURE__ */ jsx("h2", {
3345
+ className: "er-booking-overlay__title",
3346
+ id: titleId,
3347
+ children: title
3348
+ }), /* @__PURE__ */ jsx("button", {
3349
+ ref: closeButtonRef,
3350
+ type: "button",
3351
+ className: "er-booking-overlay__close",
3352
+ onClick: onClose,
3353
+ "aria-label": "Close booking",
3354
+ children: "×"
3355
+ })]
3356
+ }),
3357
+ children: props.overlaySurface
3358
+ }) : null;
3359
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
3360
+ props.isWizardStep && /* @__PURE__ */ jsx("div", {
3361
+ className: "er-booking-teaser",
3362
+ children: /* @__PURE__ */ jsx(BookingEntry, {
3363
+ ...entryProps,
3364
+ variant: "teaser"
3365
+ })
3366
+ }),
3367
+ floatingLayer,
3368
+ overlayLayer
3369
+ ] });
3370
+ }
3371
+ //#endregion
3372
+ //#region ../blocks/src/system/runtime/shared/components/DemoPortalSignInLink.tsx
3373
+ function DemoPortalSignInLink(props) {
3374
+ return /* @__PURE__ */ jsxs("div", { children: [
3375
+ /* @__PURE__ */ jsx("h3", { children: "Your sign-in link" }),
3376
+ /* @__PURE__ */ jsx("p", { children: "In the demo we don’t send emails, so here’s the link we’d have sent you." }),
3377
+ /* @__PURE__ */ jsx(ThemedButtonLink, {
3378
+ variant: "default",
3379
+ size: "md",
3380
+ label: "Sign in to the portal",
3381
+ href: props.url
3382
+ })
3383
+ ] });
3384
+ }
3385
+ //#endregion
3231
3386
  //#region ../blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.ts
3232
3387
  const initialMagicLinkSubmissionState = Object.freeze({ tag: "idle" });
3233
3388
  function magicLinkSubmissionReducer(state, action) {
@@ -3238,6 +3393,14 @@ function magicLinkSubmissionReducer(state, action) {
3238
3393
  case "submit-succeeded":
3239
3394
  if (state.tag !== "submitting") return state;
3240
3395
  return { tag: "success" };
3396
+ case "submit-demo-link": return state.tag === "submitting" ? {
3397
+ tag: "demo_link",
3398
+ url: action.url
3399
+ } : state;
3400
+ case "submit-demo-refused": return state.tag === "submitting" ? {
3401
+ tag: "demo_refused",
3402
+ message: action.message
3403
+ } : state;
3241
3404
  case "submit-failed":
3242
3405
  if (state.tag !== "submitting") return state;
3243
3406
  return {
@@ -3256,110 +3419,168 @@ function getMagicLinkError(state) {
3256
3419
  }
3257
3420
  //#endregion
3258
3421
  //#region ../blocks/src/system/runtime/nodes/shared/MagicLinkForm.tsx
3259
- function MagicLinkButton(props) {
3260
- return props.themed ? /* @__PURE__ */ jsx(ThemedButton, {
3261
- type: props.type,
3262
- variant: props.variant,
3263
- size: "md",
3264
- label: props.label,
3265
- disabled: props.disabled,
3266
- onClick: props.onClick
3267
- }) : /* @__PURE__ */ jsx("button", {
3268
- type: props.type,
3269
- className: props.className,
3270
- disabled: props.disabled,
3271
- onClick: props.onClick,
3272
- children: props.label
3273
- });
3274
- }
3275
- /**
3276
- * Reusable magic link login form.
3277
- * Used by Customer Portal and Event Registration blocks.
3278
- */
3279
- function MagicLinkForm({ initialEmail = "", title, subtitle, buttonText = "Send login link", successMessage = "Check your email for a login link to sign in.", onSuccess, classPrefix = "er", compact = false }) {
3422
+ function MagicLinkForm(props) {
3280
3423
  const api = useBlockApi();
3281
- const [email, setEmail] = useState(initialEmail);
3282
- const [submissionState, dispatchSubmission] = useReducer(magicLinkSubmissionReducer, initialMagicLinkSubmissionState);
3283
- const loading = isMagicLinkSubmitting(submissionState);
3284
- const error = getMagicLinkError(submissionState);
3285
- const handleSubmit = async (e) => {
3286
- e.preventDefault();
3287
- const normalizedEmail = email.trim().toLowerCase();
3288
- if (!normalizedEmail || loading) return;
3289
- dispatchSubmission({ type: "submit-started" });
3290
- try {
3291
- const redirectTo = `${window.location.pathname}${window.location.search}${window.location.hash}`;
3292
- await api.sendMagicLink({
3293
- email: normalizedEmail,
3294
- redirectUrl: `${window.location.origin}/api/portal/callback?redirect_to=${encodeURIComponent(redirectTo)}`
3295
- });
3296
- dispatchSubmission({ type: "submit-succeeded" });
3297
- onSuccess?.();
3298
- } catch (err) {
3299
- console.error("Magic link error:", err);
3300
- dispatchSubmission({
3301
- type: "submit-failed",
3302
- message: getMagicLinkErrorMessage(err)
3303
- });
3304
- }
3305
- };
3306
- const handleReset = () => {
3307
- setEmail("");
3308
- dispatchSubmission({ type: "reset" });
3424
+ const [email, setEmail] = useState(props.initialEmail ?? "");
3425
+ const [state, dispatch] = useReducer(magicLinkSubmissionReducer, initialMagicLinkSubmissionState);
3426
+ const loading = isMagicLinkSubmitting(state);
3427
+ const handleSubmit = (event) => {
3428
+ submitMagicLink({
3429
+ event,
3430
+ email,
3431
+ loading,
3432
+ api,
3433
+ dispatch,
3434
+ onSuccess: props.onSuccess
3435
+ });
3309
3436
  };
3310
- if (submissionState.tag === "success") return /* @__PURE__ */ jsxs("div", {
3311
- className: `${classPrefix}-magic-link-success`,
3312
- children: [/* @__PURE__ */ jsx("p", {
3313
- className: `${classPrefix}-portal-auth-text ${classPrefix}-portal-auth-text--success`,
3314
- children: successMessage
3315
- }), !compact && /* @__PURE__ */ jsx(MagicLinkButton, {
3316
- themed: classPrefix === "cp",
3317
- type: "button",
3318
- variant: "secondary",
3319
- className: `${classPrefix}-modal-btn ${classPrefix}-modal-btn--secondary`,
3320
- label: "Try a different email",
3321
- onClick: handleReset
3322
- })]
3437
+ if (state.tag === "success" || state.tag === "demo_link") return /* @__PURE__ */ jsx(MagicLinkSuccess, {
3438
+ state,
3439
+ classPrefix: props.classPrefix ?? "er",
3440
+ compact: props.compact ?? false,
3441
+ successMessage: props.successMessage ?? "Check your email for a login link to sign in.",
3442
+ onReset: () => {
3443
+ setEmail("");
3444
+ dispatch({ type: "reset" });
3445
+ }
3446
+ });
3447
+ return /* @__PURE__ */ jsx(MagicLinkFormView, {
3448
+ classPrefix: props.classPrefix ?? "er",
3449
+ compact: props.compact ?? false,
3450
+ email,
3451
+ error: getMagicLinkError(state),
3452
+ loading,
3453
+ title: props.title,
3454
+ subtitle: props.subtitle,
3455
+ buttonText: props.buttonText ?? "Send login link",
3456
+ state,
3457
+ onEmailChange: setEmail,
3458
+ onSubmit: handleSubmit
3323
3459
  });
3460
+ }
3461
+ function MagicLinkFormView(props) {
3462
+ const classPrefix = props.classPrefix;
3324
3463
  return /* @__PURE__ */ jsxs("form", {
3325
- onSubmit: handleSubmit,
3464
+ onSubmit: props.onSubmit,
3326
3465
  className: `${classPrefix}-magic-link-form`,
3327
3466
  children: [
3328
- title && /* @__PURE__ */ jsx("h3", {
3467
+ props.title ? /* @__PURE__ */ jsx("h3", {
3329
3468
  className: `${classPrefix}-magic-link-title`,
3330
- children: title
3331
- }),
3332
- subtitle && /* @__PURE__ */ jsx("p", {
3469
+ children: props.title
3470
+ }) : null,
3471
+ props.subtitle ? /* @__PURE__ */ jsx("p", {
3333
3472
  className: `${classPrefix}-portal-auth-text`,
3334
- children: subtitle
3335
- }),
3473
+ children: props.subtitle
3474
+ }) : null,
3336
3475
  /* @__PURE__ */ jsx("input", {
3337
3476
  type: "email",
3338
3477
  className: classPrefix === "cp" ? "cp-input" : `${classPrefix}-form__input`,
3339
3478
  placeholder: "your@email.com",
3340
- value: email,
3341
- onChange: (e) => setEmail(e.target.value),
3342
- autoFocus: !compact,
3479
+ value: props.email,
3480
+ onChange: (event) => props.onEmailChange(event.target.value),
3481
+ autoFocus: !props.compact,
3343
3482
  required: true,
3344
- disabled: loading
3483
+ disabled: props.loading
3345
3484
  }),
3346
- error && /* @__PURE__ */ jsx("p", {
3347
- className: `${classPrefix}-portal-auth-text ${classPrefix}-portal-auth-text--error`,
3348
- children: error
3485
+ /* @__PURE__ */ jsx(MagicLinkFormFeedback, {
3486
+ classPrefix,
3487
+ error: props.error,
3488
+ state: props.state
3349
3489
  }),
3350
3490
  /* @__PURE__ */ jsx(MagicLinkButton, {
3351
3491
  themed: classPrefix === "cp",
3352
3492
  type: "submit",
3353
3493
  variant: "primary",
3354
3494
  className: `${classPrefix}-modal-btn`,
3355
- label: loading ? "Sending..." : buttonText,
3356
- disabled: !email.trim() || loading
3495
+ label: props.loading ? "Sending..." : props.buttonText,
3496
+ disabled: !props.email.trim() || props.loading
3357
3497
  })
3358
3498
  ]
3359
3499
  });
3360
3500
  }
3501
+ function MagicLinkFormFeedback(props) {
3502
+ if (!props.error && props.state.tag !== "demo_refused") return null;
3503
+ return /* @__PURE__ */ jsxs(Fragment, { children: [props.error ? /* @__PURE__ */ jsx("p", {
3504
+ className: `${props.classPrefix}-portal-auth-text ${props.classPrefix}-portal-auth-text--error`,
3505
+ children: props.error
3506
+ }) : null, props.state.tag === "demo_refused" ? /* @__PURE__ */ jsx("p", {
3507
+ role: "alert",
3508
+ className: `${props.classPrefix}-portal-auth-text ${props.classPrefix}-portal-auth-text--error`,
3509
+ children: props.state.message
3510
+ }) : null] });
3511
+ }
3512
+ function MagicLinkSuccess(props) {
3513
+ return /* @__PURE__ */ jsxs("div", {
3514
+ className: `${props.classPrefix}-magic-link-success`,
3515
+ children: [props.state.tag === "success" ? /* @__PURE__ */ jsx("p", {
3516
+ className: `${props.classPrefix}-portal-auth-text ${props.classPrefix}-portal-auth-text--success`,
3517
+ children: props.successMessage
3518
+ }) : /* @__PURE__ */ jsx(DemoPortalSignInLink, { url: props.state.url }), !props.compact ? /* @__PURE__ */ jsx(MagicLinkButton, {
3519
+ themed: props.classPrefix === "cp",
3520
+ type: "button",
3521
+ variant: "secondary",
3522
+ className: `${props.classPrefix}-modal-btn ${props.classPrefix}-modal-btn--secondary`,
3523
+ label: "Try a different email",
3524
+ onClick: props.onReset
3525
+ }) : null]
3526
+ });
3527
+ }
3528
+ function MagicLinkButton(props) {
3529
+ return props.themed ? /* @__PURE__ */ jsx(ThemedButton, {
3530
+ type: props.type,
3531
+ variant: props.variant,
3532
+ size: "md",
3533
+ label: props.label,
3534
+ disabled: props.disabled,
3535
+ onClick: props.onClick
3536
+ }) : /* @__PURE__ */ jsx("button", {
3537
+ type: props.type,
3538
+ className: props.className,
3539
+ disabled: props.disabled,
3540
+ onClick: props.onClick,
3541
+ children: props.label
3542
+ });
3543
+ }
3544
+ async function submitMagicLink(input) {
3545
+ input.event.preventDefault();
3546
+ const email = input.email.trim().toLowerCase();
3547
+ if (!email || input.loading) return;
3548
+ input.dispatch({ type: "submit-started" });
3549
+ try {
3550
+ const result = await requestDemoPortalMagicLink({
3551
+ email,
3552
+ redirectUrl: getMagicLinkRedirectUrl(),
3553
+ send: (request) => input.api.sendMagicLink(request)
3554
+ });
3555
+ input.dispatch(magicLinkActionForResult(result));
3556
+ if (result.kind === "email_sent") input.onSuccess?.();
3557
+ } catch (error) {
3558
+ console.error("Magic link error:", error);
3559
+ input.dispatch({
3560
+ type: "submit-failed",
3561
+ message: getMagicLinkErrorMessage(error)
3562
+ });
3563
+ }
3564
+ }
3565
+ function magicLinkActionForResult(result) {
3566
+ switch (result.kind) {
3567
+ case "email_sent": return { type: "submit-succeeded" };
3568
+ case "demo_sign_in": return {
3569
+ type: "submit-demo-link",
3570
+ url: result.url
3571
+ };
3572
+ case "refused": return {
3573
+ type: "submit-demo-refused",
3574
+ message: result.message
3575
+ };
3576
+ }
3577
+ }
3578
+ function getMagicLinkRedirectUrl() {
3579
+ const redirectTo = `${window.location.pathname}${window.location.search}${window.location.hash}`;
3580
+ return buildPortalCallbackUrl(window.location.origin, redirectTo);
3581
+ }
3361
3582
  function getMagicLinkErrorMessage(error) {
3362
- return error instanceof Error ? error.message : "Failed to send. Please try again.";
3583
+ return error instanceof BlockApiError ? error.message : "We couldn’t send the sign-in link. Please try again.";
3363
3584
  }
3364
3585
  //#endregion
3365
3586
  //#region ../blocks/src/system/runtime/nodes/event-registration/ErrorStep.tsx
@@ -3668,19 +3889,19 @@ function isExistingRegistrationBlocking$1(wizard) {
3668
3889
  }
3669
3890
  function resolveTicketSelectionContinueLabel(input) {
3670
3891
  if (input.isCheckingExistingRegistration) return "Checking registration...";
3892
+ if (input.ticketTypeSelectionBlocked) return "Choose a ticket";
3671
3893
  if (input.registrationOptionsPending) return "Checking availability...";
3672
3894
  if (input.registrationOptionsFailed) return "Availability unavailable";
3673
3895
  if (input.hasExistingRegistration) return resolveExistingRegistrationLabel(input.wizard);
3674
- if (input.ticketTypeSelectionBlocked) return "Choose a ticket";
3675
3896
  return "Continue";
3676
3897
  }
3677
3898
  function SelectTicketsActions(props) {
3678
3899
  const { wizard } = props;
3679
- const registrationOptionsPending = wizard.registrationOptionsState.tag === "idle" || wizard.registrationOptionsState.tag === "loading";
3900
+ const ticketTypeSelectionBlocked = wizard.ticketTypeSelectionRequired && !wizard.hasValidTicketSelection;
3901
+ const registrationOptionsPending = !ticketTypeSelectionBlocked && ["idle", "loading"].includes(wizard.registrationOptionsState.tag);
3680
3902
  const registrationOptionsFailed = wizard.registrationOptionsState.tag === "failed";
3681
3903
  const isCheckingExistingRegistration = wizard.portalAuthState === "authenticated" && wizard.existingRegistrationLoading;
3682
3904
  const hasExistingRegistration = isExistingRegistrationBlocking$1(wizard);
3683
- const ticketTypeSelectionBlocked = wizard.ticketTypeSelectionRequired && !wizard.hasValidTicketSelection;
3684
3905
  const isContinueDisabled = registrationOptionsPending || registrationOptionsFailed || isCheckingExistingRegistration || hasExistingRegistration || ticketTypeSelectionBlocked;
3685
3906
  const continueLabel = resolveTicketSelectionContinueLabel({
3686
3907
  wizard,
@@ -4598,13 +4819,31 @@ function NotesField({ id, onChange, value }) {
4598
4819
  })]
4599
4820
  });
4600
4821
  }
4822
+ function MailingListOptInField({ signup, formData, onChange }) {
4823
+ if (!signup) return null;
4824
+ return /* @__PURE__ */ jsxs("div", {
4825
+ className: "er-field",
4826
+ children: [/* @__PURE__ */ jsx(CheckboxChoice, {
4827
+ checked: formData.mailingListOptIn === true,
4828
+ onChange: (event) => onChange({
4829
+ ...formData,
4830
+ mailingListOptIn: event.target.checked
4831
+ }),
4832
+ label: `Email me news and updates from ${signup.siteName}.`,
4833
+ presentation: "row"
4834
+ }), /* @__PURE__ */ jsx("p", {
4835
+ className: "er-text er-text--muted",
4836
+ children: "Optional. You can unsubscribe at any time."
4837
+ })]
4838
+ });
4839
+ }
4601
4840
  /**
4602
4841
  * Attendee Details Step
4603
4842
  *
4604
4843
  * Collects attendee information: name, email, phone, and notes.
4605
4844
  * Validates required fields and displays errors.
4606
4845
  */
4607
- const AttendeeDetailsStep = ({ formData, onChange, errors, emailLocked = false, onLogout, ticketsCount = 1, requireGuestDetails = false, guests = [], onGuestsChange, guestErrors = {}, guestSectionShake = false, onGuestShakeEnd, consent }) => {
4846
+ const AttendeeDetailsStep = ({ formData, onChange, errors, emailLocked = false, onLogout, ticketsCount = 1, requireGuestDetails = false, guests = [], onGuestsChange, guestErrors = {}, guestSectionShake = false, onGuestShakeEnd, consent, mailingListSignup }) => {
4608
4847
  const idBase = useId();
4609
4848
  const nameId = `${idBase}-name`;
4610
4849
  const emailId = `${idBase}-email`;
@@ -4713,6 +4952,11 @@ const AttendeeDetailsStep = ({ formData, onChange, errors, emailLocked = false,
4713
4952
  placeholder: "(optional)"
4714
4953
  })]
4715
4954
  }),
4955
+ /* @__PURE__ */ jsx(MailingListOptInField, {
4956
+ signup: mailingListSignup,
4957
+ formData,
4958
+ onChange
4959
+ }),
4716
4960
  /* @__PURE__ */ jsx(NotesField, {
4717
4961
  id: notesId,
4718
4962
  value: formData.notes,
@@ -5206,7 +5450,8 @@ function AttendeeDetailsContent(props) {
5206
5450
  guestErrors: wizard.guestErrors,
5207
5451
  guestSectionShake: wizard.guestSectionShake,
5208
5452
  onGuestShakeEnd: wizard.handleGuestShakeEnd,
5209
- consent: (wizard.selectedEvent ?? wizard.preSelectedEvent)?.consent ?? null
5453
+ consent: (wizard.selectedEvent ?? wizard.preSelectedEvent)?.consent ?? null,
5454
+ mailingListSignup: wizard.mailingListSignup
5210
5455
  }),
5211
5456
  props.showSpamProtection && /* @__PURE__ */ jsx("div", {
5212
5457
  className: "er-altcha",
@@ -5408,6 +5653,10 @@ function PaymentStatusStep(props) {
5408
5653
  "aria-atomic": "true",
5409
5654
  children: props.state.kind === "checking" ? "Checking payment…" : view.title
5410
5655
  })] }),
5656
+ secondaryBody: props.state.mailingListSignupNote ? /* @__PURE__ */ jsx(BookingMailingListNote, {
5657
+ note: props.state.mailingListSignupNote,
5658
+ context: "booking"
5659
+ }) : void 0,
5411
5660
  actionsClassName: "er-button-group",
5412
5661
  actions: view.action ? /* @__PURE__ */ jsx("button", {
5413
5662
  type: "button",
@@ -5440,8 +5689,8 @@ function StepIndicator(props) {
5440
5689
  *
5441
5690
  * Displays registration confirmation with a success icon and message.
5442
5691
  */
5443
- const SuccessStep = ({ title, message, variant = "success" }) => {
5444
- return /* @__PURE__ */ jsx(TerminalPanel, {
5692
+ const SuccessStep = ({ title, copy, variant = "success", mailingListSignupNote, context = "booking", demoEmailSuppressed = false, customerEmail }) => {
5693
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(TerminalPanel, {
5445
5694
  tone: variant === "info" ? "info" : "success",
5446
5695
  className: "er-center",
5447
5696
  iconClassName: "er-icon",
@@ -5481,8 +5730,18 @@ const SuccessStep = ({ title, message, variant = "success" }) => {
5481
5730
  })
5482
5731
  }),
5483
5732
  title: title ?? (variant === "info" ? "Already Registered" : "Registration Confirmed!"),
5484
- body: message
5485
- });
5733
+ body: /* @__PURE__ */ jsx(BookingConfirmation, {
5734
+ demoEmailSuppressed,
5735
+ email: customerEmail,
5736
+ copy,
5737
+ messagePresentation: { kind: "plain" },
5738
+ noteClassName: "er-text--muted"
5739
+ }),
5740
+ secondaryBody: mailingListSignupNote ? /* @__PURE__ */ jsx(BookingMailingListNote, {
5741
+ note: mailingListSignupNote,
5742
+ context
5743
+ }) : void 0
5744
+ }) });
5486
5745
  };
5487
5746
  //#endregion
5488
5747
  //#region ../blocks/src/system/runtime/nodes/event-registration/VerifyingPaymentStep.tsx
@@ -5652,11 +5911,11 @@ function EventRegistrationTerminalState(props) {
5652
5911
  onReturnToPayment: wizard.handleReturnToPayment,
5653
5912
  onReturnToBooking: wizard.handleReturnToBooking
5654
5913
  }) : null;
5655
- case "success": return wizard.registrationResult ? /* @__PURE__ */ jsx(SuccessStep, {
5656
- title: wizard.registrationResult.title,
5657
- variant: wizard.registrationResult.variant,
5658
- message: wizard.registrationResult.message ?? props.successMessage
5659
- }) : null;
5914
+ case "success": return /* @__PURE__ */ jsx(EventRegistrationSuccess, {
5915
+ wizard,
5916
+ fallbackMessage: props.successMessage,
5917
+ demoEmailSuppressed: props.demoEmailSuppressed
5918
+ });
5660
5919
  case "error": return /* @__PURE__ */ jsx(ErrorStep, {
5661
5920
  message: wizard.errorMessage,
5662
5921
  action: wizard.errorAction,
@@ -5669,6 +5928,20 @@ function EventRegistrationTerminalState(props) {
5669
5928
  case "select-payment": return null;
5670
5929
  }
5671
5930
  }
5931
+ function EventRegistrationSuccess(props) {
5932
+ const result = props.wizard.registrationResult;
5933
+ if (!result) return null;
5934
+ const copy = getRegistrationSuccessCopy(result, props.fallbackMessage);
5935
+ return /* @__PURE__ */ jsx(SuccessStep, {
5936
+ title: result.title,
5937
+ variant: result.variant,
5938
+ copy,
5939
+ mailingListSignupNote: result.mailingListSignupNote,
5940
+ context: result.status === "waitlist" ? "waitlist" : "booking",
5941
+ demoEmailSuppressed: props.demoEmailSuppressed,
5942
+ customerEmail: props.wizard.formData.email
5943
+ });
5944
+ }
5672
5945
  function EventRegistrationSurface(props) {
5673
5946
  const { wizard } = props;
5674
5947
  const mainRef = useRef(null);
@@ -5714,109 +5987,12 @@ function EventRegistrationSurface(props) {
5714
5987
  }), /* @__PURE__ */ jsx(EventRegistrationTerminalState, {
5715
5988
  wizard,
5716
5989
  supportEmail: props.supportEmail,
5717
- successMessage: props.successMessage
5990
+ successMessage: props.successMessage,
5991
+ demoEmailSuppressed: props.demoEmailSuppressed
5718
5992
  })]
5719
5993
  });
5720
5994
  }
5721
5995
  //#endregion
5722
- //#region ../blocks/src/system/runtime/nodes/event-registration/EventRegistrationBookingLayer.tsx
5723
- function BookingEntry(props) {
5724
- const base = props.variant === "teaser" ? "er-booking-teaser" : "er-booking-bar";
5725
- return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("div", {
5726
- className: `${base}__info`,
5727
- children: [
5728
- /* @__PURE__ */ jsx("span", {
5729
- className: `${base}__title`,
5730
- children: "Book this event"
5731
- }),
5732
- props.summary && /* @__PURE__ */ jsx("span", {
5733
- className: `${base}__meta`,
5734
- children: props.summary
5735
- }),
5736
- props.variant === "teaser" && props.ticketCurrency && props.ticketTypes.length > 0 ? /* @__PURE__ */ jsx("div", {
5737
- className: "er-booking-teaser__tickets",
5738
- children: props.ticketTypes.map((ticketType) => /* @__PURE__ */ jsxs("div", {
5739
- className: "er-booking-teaser__ticket",
5740
- children: [/* @__PURE__ */ jsx("span", {
5741
- className: "er-booking-teaser__ticket-name",
5742
- children: ticketType.name
5743
- }), /* @__PURE__ */ jsx("strong", { children: props.formatTicketPrice(ticketType) })]
5744
- }, ticketType.pricingOptionId))
5745
- }) : null
5746
- ]
5747
- }), /* @__PURE__ */ jsx(ThemedButton, {
5748
- type: "button",
5749
- variant: props.buttonVariant,
5750
- size: "md",
5751
- extraClassName: `${base}__cta`,
5752
- label: "Book now",
5753
- onClick: props.onOpen
5754
- })] });
5755
- }
5756
- function EventRegistrationBookingLayer(props) {
5757
- const entryProps = {
5758
- summary: [props.priceLabel, props.availabilityLabel].filter(Boolean).join(" · "),
5759
- ticketTypes: props.ticketTypes,
5760
- ticketCurrency: props.ticketCurrency,
5761
- buttonVariant: props.buttonVariant,
5762
- formatTicketPrice: props.formatTicketPrice,
5763
- onOpen: props.onOpen
5764
- };
5765
- const floatingBar = !props.overlayOpen && props.isWizardStep ? /* @__PURE__ */ jsx("div", {
5766
- className: "er-booking-bar",
5767
- children: /* @__PURE__ */ jsx("div", {
5768
- className: "er-booking-bar__inner",
5769
- children: /* @__PURE__ */ jsx(BookingEntry, {
5770
- ...entryProps,
5771
- variant: "bar"
5772
- })
5773
- })
5774
- }) : null;
5775
- const floatingLayer = props.portalRoot ? createPortal(/* @__PURE__ */ jsx("div", {
5776
- className: props.registrationRootClassName,
5777
- "data-block": "event-registration",
5778
- children: floatingBar
5779
- }), props.portalRoot) : floatingBar;
5780
- const overlayLayer = props.overlayOpen ? /* @__PURE__ */ jsx(ModalShell, {
5781
- title: "Book this event",
5782
- titleId: "event-registration-booking-title",
5783
- onClose: props.onClose,
5784
- portal: props.portalRoot != null,
5785
- portalRoot: props.portalRoot,
5786
- portalWrapperClassName: props.registrationRootClassName,
5787
- portalWrapperProps: { "data-block": "event-registration" },
5788
- overlayClassName: "er-booking-overlay",
5789
- modalClassName: "er-booking-overlay__panel",
5790
- renderHeader: ({ closeButtonRef, onClose, title, titleId }) => /* @__PURE__ */ jsxs("div", {
5791
- className: "er-booking-overlay__header",
5792
- children: [/* @__PURE__ */ jsx("h2", {
5793
- className: "er-booking-overlay__title",
5794
- id: titleId,
5795
- children: title
5796
- }), /* @__PURE__ */ jsx("button", {
5797
- ref: closeButtonRef,
5798
- type: "button",
5799
- className: "er-booking-overlay__close",
5800
- onClick: onClose,
5801
- "aria-label": "Close booking",
5802
- children: "×"
5803
- })]
5804
- }),
5805
- children: props.overlaySurface
5806
- }) : null;
5807
- return /* @__PURE__ */ jsxs(Fragment, { children: [
5808
- props.isWizardStep && /* @__PURE__ */ jsx("div", {
5809
- className: "er-booking-teaser",
5810
- children: /* @__PURE__ */ jsx(BookingEntry, {
5811
- ...entryProps,
5812
- variant: "teaser"
5813
- })
5814
- }),
5815
- floatingLayer,
5816
- overlayLayer
5817
- ] });
5818
- }
5819
- //#endregion
5820
5996
  //#region ../blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizard.tsx
5821
5997
  const EVENT_PORTAL_AUTH_COPY = {
5822
5998
  membership: {
@@ -5829,6 +6005,16 @@ const EVENT_PORTAL_AUTH_COPY = {
5829
6005
  buttonText: "Email me a login link to continue →"
5830
6006
  }
5831
6007
  };
6008
+ function getPortalAuthCopy(waitlistClaimRequiresPortalLogin, loginMessage, demoEmailSuppressed) {
6009
+ const defaultCopy = waitlistClaimRequiresPortalLogin ? {
6010
+ ...EVENT_PORTAL_AUTH_COPY["waitlist-claim"],
6011
+ description: loginMessage ?? "Log in to continue with your waitlist claim."
6012
+ } : EVENT_PORTAL_AUTH_COPY.membership;
6013
+ return demoEmailSuppressed && !waitlistClaimRequiresPortalLogin ? {
6014
+ ...defaultCopy,
6015
+ buttonText: "Get a sign-in link →"
6016
+ } : defaultCopy;
6017
+ }
5832
6018
  function getActiveTicketTypes(event) {
5833
6019
  return event?.pricing.kind === "tiered" ? event.pricing.options.filter((ticketType) => ticketType.isActive).sort((left, right) => left.sortOrder - right.sortOrder).map(({ id, ...ticketType }) => ({
5834
6020
  ...ticketType,
@@ -5864,19 +6050,30 @@ function getWizardStepLabel(input) {
5864
6050
  case "payment-failed": return "";
5865
6051
  }
5866
6052
  }
6053
+ function useConfiguredEventRegistrationWizard(props) {
6054
+ return useEventRegistrationWizard({
6055
+ anchorId: EVENT_REGISTRATION_ANCHOR_ID,
6056
+ occurrenceContext: props.occurrenceContext ?? null,
6057
+ subject: props.subject ?? null,
6058
+ events: props.events ?? [],
6059
+ maxTicketsNum: normalizeEventRegistrationMaxTickets(props.maxTickets ?? "5"),
6060
+ mailingList: props.mailingList,
6061
+ siteName: props.siteName
6062
+ });
6063
+ }
5867
6064
  function EventRegistrationWizard(props) {
5868
- 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;
5869
- const maxTicketsNum = normalizeEventRegistrationMaxTickets(maxTickets);
6065
+ const wizard = useConfiguredEventRegistrationWizard(props);
6066
+ return /* @__PURE__ */ jsx(EventRegistrationWizardView, {
6067
+ ...props,
6068
+ wizard
6069
+ });
6070
+ }
6071
+ function EventRegistrationWizardView(viewProps) {
6072
+ const { wizard, ...props } = viewProps;
6073
+ const { showVenue = true, showCapacity = true, successMessage, buttonText = "Complete Registration", buttonVariant = "primary", className, spamProtectionEnabled, supportEmail } = props;
5870
6074
  const showSpamProtection = spamProtectionEnabled ?? isSpamProtectionEnabled();
5871
6075
  const registrationRootClassName = `event-registration ${className || ""}`;
5872
6076
  const registrationRootRef = React.useRef(null);
5873
- const wizard = useEventRegistrationWizard({
5874
- anchorId: EVENT_REGISTRATION_ANCHOR_ID,
5875
- occurrenceContext: occurrenceContext ?? null,
5876
- subject: subject ?? null,
5877
- events: events ?? [],
5878
- maxTicketsNum
5879
- });
5880
6077
  useEventCheckoutHandoffRestore(wizard.step === "redirecting");
5881
6078
  const [bookingOverlayOpen, setBookingOverlayOpen] = useState(false);
5882
6079
  const [floatingPortalRoot, setFloatingPortalRoot] = useState(null);
@@ -5942,10 +6139,7 @@ function EventRegistrationWizard(props) {
5942
6139
  const summaryPriceLabel = summaryEvent ? formatEventPriceDisplay(summaryEvent.pricing) : null;
5943
6140
  const summaryAvailabilityLabel = getAvailabilityLabel(summaryEvent, wizard.selectedAttendanceMode);
5944
6141
  const waitlistClaimRequiresPortalLogin = wizard.waitlistClaim.requiresPortalLogin && wizard.portalAuthState !== "authenticated" && wizard.portalAuthState !== "checking";
5945
- const portalAuthCopy = waitlistClaimRequiresPortalLogin ? {
5946
- ...EVENT_PORTAL_AUTH_COPY["waitlist-claim"],
5947
- description: wizard.waitlistClaim.loginMessage ?? "Log in to continue with your waitlist claim."
5948
- } : EVENT_PORTAL_AUTH_COPY.membership;
6142
+ const portalAuthCopy = getPortalAuthCopy(waitlistClaimRequiresPortalLogin, wizard.waitlistClaim.loginMessage, props.demoEmailSuppressed);
5949
6143
  const showPortalAuthPrompt = waitlistClaimRequiresPortalLogin || wizard.step === "select-tickets" && wizard.portalAuthState !== "authenticated" && wizard.portalAuthState !== "checking" && summaryEventPricingType !== "free";
5950
6144
  const renderRegistrationSurface = (variant) => /* @__PURE__ */ jsx(EventRegistrationSurface, {
5951
6145
  variant,
@@ -5962,7 +6156,8 @@ function EventRegistrationWizard(props) {
5962
6156
  buttonText,
5963
6157
  buttonVariant,
5964
6158
  supportEmail,
5965
- successMessage
6159
+ successMessage,
6160
+ demoEmailSuppressed: props.demoEmailSuppressed
5966
6161
  });
5967
6162
  const isEmbedded = (className ?? "").includes("event-registration--embedded");
5968
6163
  const overlayEnabled = props.overlayEnabled === true;