@riverbankcms/sdk 0.147.0 → 0.149.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 (442) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +1 -1
  3. package/dist/{PreviewEditorSidebar-DtpB3_sS.mjs → PreviewEditorSidebar-DBKln68M.mjs} +301 -205
  4. package/dist/{PreviewEditorUI-DxTLgaHo.mjs → PreviewEditorUI-DpRX4Mum.mjs} +68 -63
  5. package/dist/{PreviewQueryProvider-Dd4dxOiU.mjs → PreviewQueryProvider-C0mndwHB.mjs} +3 -3
  6. package/dist/{SdkPreviewModeRuntime-DMMNCngt.mjs → SdkPreviewModeRuntime-DJPmPY-r.mjs} +1247 -541
  7. package/dist/{SiteChromeCustomizeContext-DQXZXiqS.mjs → SiteChromeCustomizeContext-JYA0cJ_Z.mjs} +209720 -204978
  8. package/dist/_dts/ai/src/contracts/proposals.d.ts +0 -33
  9. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +0 -3
  10. package/dist/_dts/api/src/accessAdmin.d.ts +0 -4
  11. package/dist/_dts/api/src/accountApi.d.ts +1 -1
  12. package/dist/_dts/api/src/admin.d.ts +22 -22
  13. package/dist/_dts/api/src/aiPatch.d.ts +2 -2
  14. package/dist/_dts/api/src/aiPlayground.d.ts +1 -0
  15. package/dist/_dts/api/src/analytics.d.ts +2 -2
  16. package/dist/_dts/api/src/apiEndpointTypes.d.ts +2 -0
  17. package/dist/_dts/api/src/appointmentSetup.d.ts +2 -2
  18. package/dist/_dts/api/src/auth.d.ts +10 -10
  19. package/dist/_dts/api/src/availability.d.ts +6 -6
  20. package/dist/_dts/api/src/billing.d.ts +42 -15
  21. package/dist/_dts/api/src/billingEndpointDefinitions.d.ts +8 -0
  22. package/dist/_dts/api/src/billingEndpointTypes.d.ts +15 -6
  23. package/dist/_dts/api/src/blocks.d.ts +15 -14
  24. package/dist/_dts/api/src/blocksKeys.d.ts +2 -0
  25. package/dist/_dts/api/src/bookingConfig.d.ts +33 -50
  26. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +2 -6
  27. package/dist/_dts/api/src/bookingOperations.d.ts +9 -11
  28. package/dist/_dts/api/src/bookingRecords.d.ts +16 -11
  29. package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +5 -5
  30. package/dist/_dts/api/src/bookings.d.ts +7 -7
  31. package/dist/_dts/api/src/calendar.d.ts +9 -9
  32. package/dist/_dts/api/src/clientErrorReporting.d.ts +11 -0
  33. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +7 -8
  34. package/dist/_dts/api/src/common/cancellation.d.ts +23 -0
  35. package/dist/_dts/api/src/common/envelope.d.ts +2 -2
  36. package/dist/_dts/api/src/content-editor.d.ts +2 -2
  37. package/dist/_dts/api/src/contentEntries.d.ts +17 -48
  38. package/dist/_dts/api/src/contentRuntime.d.ts +51 -37
  39. package/dist/_dts/api/src/contentTypes.d.ts +11 -11
  40. package/dist/_dts/api/src/contentVersionHistoryClient.d.ts +6 -6
  41. package/dist/_dts/api/src/customerMembershipOutcomes.d.ts +1 -1
  42. package/dist/_dts/api/src/documentLifecycle.d.ts +67 -0
  43. package/dist/_dts/api/src/domains.d.ts +16 -16
  44. package/dist/_dts/api/src/editLeaseEndpoints.d.ts +72 -0
  45. package/dist/_dts/api/src/emailSettings.d.ts +4 -4
  46. package/dist/_dts/api/src/endpoints.d.ts +135 -51
  47. package/dist/_dts/api/src/eventEmailTemplates.d.ts +2 -2
  48. package/dist/_dts/api/src/eventManagementContracts.d.ts +29 -7
  49. package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +0 -8
  50. package/dist/_dts/api/src/eventPageWords.d.ts +7 -12
  51. package/dist/_dts/api/src/footerSettings.d.ts +6 -6
  52. package/dist/_dts/api/src/index.d.ts +8 -7
  53. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -0
  54. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  55. package/dist/_dts/api/src/navigation.d.ts +5 -5
  56. package/dist/_dts/api/src/pageSurfaceEditorEndpoints.d.ts +55 -0
  57. package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +28 -7
  58. package/dist/_dts/api/src/pages.d.ts +7 -7
  59. package/dist/_dts/api/src/performance.d.ts +1 -1
  60. package/dist/_dts/api/src/public/index.d.ts +1 -1
  61. package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +4 -2
  62. package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +6 -29
  63. package/dist/_dts/api/src/redirects.d.ts +3 -3
  64. package/dist/_dts/api/src/request.d.ts +11 -2
  65. package/dist/_dts/api/src/resources.d.ts +4 -4
  66. package/dist/_dts/api/src/routes.d.ts +8 -3
  67. package/dist/_dts/api/src/sdk-event-upsert.d.ts +1 -2
  68. package/dist/_dts/api/src/sdkBlockUpsertContracts.d.ts +21 -0
  69. package/dist/_dts/api/src/sdkContracts.d.ts +5 -28
  70. package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +1 -1
  71. package/dist/_dts/api/src/sdkEventOccurrenceRequestContracts.d.ts +43 -0
  72. package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +4 -2
  73. package/dist/_dts/api/src/sdkPullEventContracts.d.ts +9 -2
  74. package/dist/_dts/api/src/seo.d.ts +4 -4
  75. package/dist/_dts/api/src/services.d.ts +4 -4
  76. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +15 -8
  77. package/dist/_dts/api/src/siteMembers.d.ts +10 -10
  78. package/dist/_dts/api/src/siteOnboarding.d.ts +14 -0
  79. package/dist/_dts/api/src/siteOperations.d.ts +6 -2
  80. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +7 -3
  81. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +5 -12
  82. package/dist/_dts/api/src/siteRuntimeEntry.d.ts +31 -0
  83. package/dist/_dts/billing/src/checkout/platform.d.ts +77 -0
  84. package/dist/_dts/billing/src/components/index.d.ts +25 -40
  85. package/dist/_dts/billing/src/membership/index.d.ts +1 -3
  86. package/dist/_dts/billing/src/plans/entitlements.d.ts +80 -0
  87. package/dist/_dts/billing/src/plans/registry.d.ts +16 -16
  88. package/dist/_dts/billing/src/plans/standing.d.ts +9 -2
  89. package/dist/_dts/billing/src/plans/types.d.ts +5 -15
  90. package/dist/_dts/billing/src/site-arrangements.d.ts +2 -2
  91. package/dist/_dts/billing/src/subscriptions/standingEvidence.d.ts +2 -4
  92. package/dist/_dts/billing/src/subscriptions/store.d.ts +17 -11
  93. package/dist/_dts/block-form/src/backend/store-backend.d.ts +6 -7
  94. package/dist/_dts/block-form/src/backend/types.d.ts +7 -0
  95. package/dist/_dts/block-form/src/widgets/FieldFrame.d.ts +3 -1
  96. package/dist/_dts/blocks/src/client/events.d.ts +3 -0
  97. package/dist/_dts/blocks/src/contracts/index.d.ts +1 -1
  98. package/dist/_dts/blocks/src/contracts/non-block-islands.d.ts +2 -2
  99. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +54 -14
  100. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +4 -13
  101. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -0
  102. package/dist/_dts/blocks/src/portal/types.d.ts +9 -8
  103. package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +2 -1
  104. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +3 -1
  105. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +28 -28
  106. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +7 -2
  107. package/dist/_dts/blocks/src/system/blocks/shared/bookingPaymentTerms.d.ts +84 -160
  108. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +2 -2
  109. package/dist/_dts/blocks/src/system/blocks/shop.shared.d.ts +31 -4
  110. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +2 -2
  111. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  112. package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +4 -2
  113. package/dist/_dts/blocks/src/system/runtime/api/types/core.d.ts +3 -1
  114. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +6 -0
  115. package/dist/_dts/blocks/src/system/runtime/api/types/portal.d.ts +6 -0
  116. package/dist/_dts/blocks/src/system/runtime/api/types/shop.d.ts +4 -0
  117. package/dist/_dts/blocks/src/system/runtime/components/booking/SuccessMessage.d.ts +4 -1
  118. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +72 -12
  119. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +36 -6
  120. package/dist/_dts/blocks/src/system/runtime/hooks/useBookingNowIso.d.ts +8 -0
  121. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +3 -0
  122. package/dist/_dts/blocks/src/system/runtime/hooks/usePaymentVerification.d.ts +2 -1
  123. package/dist/_dts/blocks/src/system/runtime/hooks/usePolling.d.ts +7 -48
  124. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.checkout-return-context.d.ts +7 -0
  125. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.completion.d.ts +3 -1
  126. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +4 -0
  127. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +9 -0
  128. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.payment-confirmation.d.ts +13 -0
  129. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +17 -2
  130. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-actions.d.ts +8 -0
  131. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-handler.d.ts +1 -0
  132. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +1 -0
  133. package/dist/_dts/blocks/src/system/runtime/nodes/checkout.server.d.ts +2 -1
  134. package/dist/_dts/blocks/src/system/runtime/nodes/commerce/shared/display.d.ts +9 -2
  135. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/presentation.d.ts +14 -2
  136. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +2 -1
  137. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizard.d.ts +5 -0
  138. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PaymentSelectionStep.d.ts +2 -0
  139. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SuccessStep.d.ts +4 -1
  140. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventPaymentOptions.d.ts +3 -3
  141. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +2 -0
  142. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +2 -5
  143. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +4 -0
  144. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +9 -5
  145. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +6 -0
  146. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +37 -3
  147. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.client.d.ts +1 -1
  148. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +16 -1
  149. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCardPresentations.d.ts +13 -0
  150. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +29 -29
  151. package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.d.ts +1 -14
  152. package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.d.ts +12 -0
  153. package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +54 -6
  154. package/dist/_dts/blocks/src/system/runtime/shared/bookingPaymentOptions.d.ts +7 -2
  155. package/dist/_dts/blocks/src/system/runtime/shared/components/DemoBookingPortalAccess.d.ts +22 -0
  156. package/dist/_dts/blocks/src/system/runtime/shared/components/DemoPortalSignInLink.d.ts +4 -0
  157. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
  158. package/dist/_dts/blocks/src/system/runtime/shared/utils/demoBookingPassStorage.d.ts +10 -0
  159. package/dist/_dts/blocks/src/system/runtime/shared/utils/demoPortalMagicLink.d.ts +29 -0
  160. package/dist/_dts/commerce/src/purchase/bookingPaymentSelection.d.ts +54 -0
  161. package/dist/_dts/commerce/src/purchase/checkoutCommitPlan.d.ts +58 -13
  162. package/dist/_dts/commerce/src/purchase/checkoutErrorCodes.d.ts +1 -1
  163. package/dist/_dts/commerce/src/purchase/checkoutPaymentPlanPlanning.d.ts +16 -21
  164. package/dist/_dts/commerce/src/purchase/checkoutPaymentTerms.d.ts +23 -40
  165. package/dist/_dts/commerce/src/purchase/checkoutSessionMetadata.d.ts +2 -2
  166. package/dist/_dts/commerce/src/purchase/checkoutStripeSessionPlanning.d.ts +5 -4
  167. package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +4 -0
  168. package/dist/_dts/commerce/src/purchase/index.d.ts +1 -3
  169. package/dist/_dts/commerce/src/purchase/membershipOrderItemMetadata.d.ts +4 -0
  170. package/dist/_dts/commerce/src/purchase/oneTimeCheckoutPlanning.d.ts +9 -4
  171. package/dist/_dts/commerce/src/purchase/orderInstalmentClosure.d.ts +13 -1
  172. package/dist/_dts/commerce/src/purchase/orderInstalmentLifecycle.d.ts +5 -0
  173. package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +3 -1
  174. package/dist/_dts/commerce/src/purchase/orderTypes.d.ts +7 -1
  175. package/dist/_dts/commerce/src/purchase/refundRailSplit.d.ts +1 -1
  176. package/dist/_dts/commerce/src/purchase/stateTransitions.d.ts +2 -2
  177. package/dist/_dts/commerce/src/purchase/stripeMinimumCharge.d.ts +6 -0
  178. package/dist/_dts/commerce/src/purchase/types.d.ts +2 -1
  179. package/dist/_dts/content-editor/src/components/ContentFieldsForm.d.ts +2 -7
  180. package/dist/_dts/content-editor/src/controller/EditLeaseController.d.ts +39 -0
  181. package/dist/_dts/content-editor/src/controller/EditorWriteGate.d.ts +38 -0
  182. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +25 -61
  183. package/dist/_dts/content-editor/src/controller/LinkedEntryLeaseBanner.d.ts +7 -0
  184. package/dist/_dts/content-editor/src/controller/LinkedEntryLeaseControllers.d.ts +14 -0
  185. package/dist/_dts/content-editor/src/controller/deriveEditorUnpublishedState.d.ts +6 -0
  186. package/dist/_dts/content-editor/src/controller/documentValueBaseline.d.ts +25 -0
  187. package/dist/_dts/content-editor/src/controller/editLeaseHandover.d.ts +30 -0
  188. package/dist/_dts/content-editor/src/controller/editLeaseLossSignal.d.ts +6 -0
  189. package/dist/_dts/content-editor/src/controller/editLeaseNotice.d.ts +28 -0
  190. package/dist/_dts/content-editor/src/controller/editorClientId.d.ts +2 -0
  191. package/dist/_dts/content-editor/src/controller/editorEditability.d.ts +38 -0
  192. package/dist/_dts/content-editor/src/controller/editorLeaseParticipation.d.ts +34 -0
  193. package/dist/_dts/content-editor/src/controller/normalizedMetadataBaseline.d.ts +29 -0
  194. package/dist/_dts/content-editor/src/controller/pageSurfaceDocumentBaselines.d.ts +14 -0
  195. package/dist/_dts/content-editor/src/controller/pageSurfaceLifecycle.d.ts +11 -0
  196. package/dist/_dts/content-editor/src/controller/planDocumentBaselineRefresh.d.ts +19 -0
  197. package/dist/_dts/content-editor/src/controller/readDocumentLeaseBaselines.d.ts +19 -0
  198. package/dist/_dts/content-editor/src/controller/refreshDocumentLeaseBaseline.d.ts +12 -0
  199. package/dist/_dts/content-editor/src/controller/refreshLinkedEntry.d.ts +17 -0
  200. package/dist/_dts/content-editor/src/controller/replayRestoredEditorEffects.d.ts +2 -3
  201. package/dist/_dts/content-editor/src/controller/routeWrites.d.ts +26 -0
  202. package/dist/_dts/content-editor/src/controller/useAutosaveTriggers.d.ts +16 -17
  203. package/dist/_dts/content-editor/src/controller/useBlockedPublishPlan.d.ts +6 -2
  204. package/dist/_dts/content-editor/src/controller/useBlocksList.d.ts +3 -3
  205. package/dist/_dts/content-editor/src/controller/useEntryValueAutosaves.d.ts +21 -0
  206. package/dist/_dts/content-editor/src/controller/useInitialEditorUiStore.d.ts +24 -0
  207. package/dist/_dts/content-editor/src/controller/useServerBaselineReconciliation.d.ts +17 -0
  208. package/dist/_dts/content-editor/src/footerComposerPanelTypes.d.ts +1 -1
  209. package/dist/_dts/content-editor/src/hooks/applyBlockedPublishPlan.d.ts +5 -1
  210. package/dist/_dts/content-editor/src/hooks/blockDraftLifecycle.d.ts +8 -47
  211. package/dist/_dts/content-editor/src/hooks/editLeaseMachine.d.ts +120 -0
  212. package/dist/_dts/content-editor/src/hooks/publishability.d.ts +6 -10
  213. package/dist/_dts/content-editor/src/hooks/useAutosaveStatus.d.ts +3 -0
  214. package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +5 -15
  215. package/dist/_dts/content-editor/src/hooks/useDebouncedLatestSave.d.ts +7 -5
  216. package/dist/_dts/content-editor/src/hooks/useEditLease.d.ts +28 -0
  217. package/dist/_dts/content-editor/src/hooks/useEntryActions.d.ts +25 -39
  218. package/dist/_dts/content-editor/src/hooks/useEntryMutations.d.ts +17 -19
  219. package/dist/_dts/content-editor/src/hooks/useLinkedEntryAutosave.d.ts +5 -8
  220. package/dist/_dts/content-editor/src/hooks/useValueAutosave.d.ts +64 -0
  221. package/dist/_dts/content-editor/src/hooks/validateBlocksForPublish.d.ts +0 -7
  222. package/dist/_dts/content-editor/src/index.d.ts +26 -7
  223. package/dist/_dts/content-editor/src/lib/browserStorage.d.ts +5 -0
  224. package/dist/_dts/content-editor/src/linkedEntries/domain.d.ts +12 -0
  225. package/dist/_dts/content-editor/src/linkedEntries/owner.d.ts +9 -0
  226. package/dist/_dts/content-editor/src/liveDrafts/draftProjection.d.ts +66 -0
  227. package/dist/_dts/content-editor/src/liveDrafts/linkedSaveHandovers.d.ts +37 -0
  228. package/dist/_dts/content-editor/src/liveDrafts/remoteDraftOverlay.d.ts +113 -0
  229. package/dist/_dts/content-editor/src/liveDrafts/useLiveDrafts.d.ts +32 -0
  230. package/dist/_dts/content-editor/src/liveDrafts/useRetentionTicks.d.ts +7 -0
  231. package/dist/_dts/content-editor/src/primitives/shared/activePreviewField.d.ts +6 -0
  232. package/dist/_dts/content-editor/src/primitives/shared/storeBinding.d.ts +1 -0
  233. package/dist/_dts/content-editor/src/services/contentEntryServices.d.ts +96 -19
  234. package/dist/_dts/content-editor/src/services/editorApiClient.d.ts +13 -0
  235. package/dist/_dts/content-editor/src/services/index.d.ts +2 -0
  236. package/dist/_dts/content-editor/src/services/pageSurfaceEditorServices.d.ts +23 -0
  237. package/dist/_dts/content-editor/src/sync/flushValues.d.ts +13 -0
  238. package/dist/_dts/content-editor/src/sync/lifecycleFailure.d.ts +51 -0
  239. package/dist/_dts/content-editor/src/sync/runLifecycle.d.ts +64 -0
  240. package/dist/_dts/content-editor/src/sync/schedulerValues.d.ts +27 -0
  241. package/dist/_dts/content-editor/src/sync/sendPlanning.d.ts +104 -0
  242. package/dist/_dts/content-editor/src/sync/valueSync.d.ts +114 -0
  243. package/dist/_dts/content-editor/src/ui/blockCollection.d.ts +8 -0
  244. package/dist/_dts/content-editor/src/ui/documentLifecycle.d.ts +18 -0
  245. package/dist/_dts/content-editor/src/ui/editorLeaseUiState.d.ts +7 -0
  246. package/dist/_dts/content-editor/src/ui/editorRefresh.d.ts +82 -0
  247. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +102 -127
  248. package/dist/_dts/content-editor/src/ui/editorTransactionState.d.ts +1 -1
  249. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +126 -72
  250. package/dist/_dts/content-editor/src/ui/editorValueSnapshot.d.ts +18 -0
  251. package/dist/_dts/content-editor/src/ui/serverBlockAdmission.d.ts +26 -0
  252. package/dist/_dts/content-editor/src/ui/stores/autosaveStore.d.ts +16 -27
  253. package/dist/_dts/content-editor/src/ui/stores/blockVersionsStore.d.ts +24 -0
  254. package/dist/_dts/content-editor/src/ui/stores/linkedEntryLeaseStore.d.ts +54 -0
  255. package/dist/_dts/content-editor/src/ui/stores/linkedSaveHandoversStore.d.ts +11 -0
  256. package/dist/_dts/content-editor/src/ui/stores/remoteDraftsStore.d.ts +10 -0
  257. package/dist/_dts/content-editor/src/ui/stores/types.d.ts +63 -3
  258. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +2 -2
  259. package/dist/_dts/content-editor/src/useFooterNavigationLayout.d.ts +1 -1
  260. package/dist/_dts/content-model/src/content-types/builtin-schemas.d.ts +4 -4
  261. package/dist/_dts/content-model/src/content-types/builtins.d.ts +4 -4
  262. package/dist/_dts/content-model/src/definitions/shared.d.ts +11 -2
  263. package/dist/_dts/content-model/src/entry-slots/index.d.ts +1 -0
  264. package/dist/_dts/content-model/src/entry-slots/serializeAllowedBlocks.d.ts +2 -0
  265. package/dist/_dts/content-model/src/metadataConfig.d.ts +10 -38
  266. package/dist/_dts/content-model/src/templates/defaults.d.ts +0 -1
  267. package/dist/_dts/content-model/src/types.d.ts +0 -1
  268. package/dist/_dts/core/src/block-content-identity.d.ts +49 -1
  269. package/dist/_dts/core/src/booking-flexible-balance.d.ts +2 -2
  270. package/dist/_dts/core/src/booking-instalment-deposit.d.ts +20 -0
  271. package/dist/_dts/core/src/booking-live-payment-terms.d.ts +72 -0
  272. package/dist/_dts/core/src/booking-payment-options.d.ts +24 -0
  273. package/dist/_dts/core/src/booking-payment-schemas.d.ts +522 -0
  274. package/dist/_dts/core/src/branded.d.ts +15 -0
  275. package/dist/_dts/core/src/currency-format.d.ts +8 -2
  276. package/dist/_dts/core/src/demo-lifecycle-status.d.ts +2 -2
  277. package/dist/_dts/core/src/demo-warm-pool-target.d.ts +8 -0
  278. package/dist/_dts/core/src/edit-lease.d.ts +60 -0
  279. package/dist/_dts/core/src/editor-state.d.ts +38 -13
  280. package/dist/_dts/core/src/editor-value-sync.d.ts +79 -0
  281. package/dist/_dts/core/src/html-entities.d.ts +6 -0
  282. package/dist/_dts/core/src/index.d.ts +7 -0
  283. package/dist/_dts/core/src/uuid.d.ts +7 -5
  284. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +456 -189
  285. package/dist/_dts/editor/src/EditorProvider.d.ts +5 -0
  286. package/dist/_dts/editor/src/chrome/EditorChrome.d.ts +14 -0
  287. package/dist/_dts/editor/src/chrome/EditorStatusBar.d.ts +1 -0
  288. package/dist/_dts/editor/src/chrome/statusBarPresentation.d.ts +0 -1
  289. package/dist/_dts/editor/src/index.d.ts +1 -1
  290. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +10 -9
  291. package/dist/_dts/editor-blocks/src/BlockForm.d.ts +1 -1
  292. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +1 -1
  293. package/dist/_dts/editor-blocks/src/block-editor/BlockCardFrame.d.ts +1 -1
  294. package/dist/_dts/editor-blocks/src/block-editor/BlockSettingsModal.d.ts +1 -1
  295. package/dist/_dts/editor-blocks/src/block-editor/applyExtendedFieldDefaults.d.ts +3 -4
  296. package/dist/_dts/editor-blocks/src/block-editor/blockDraftBaselineSeed.d.ts +4 -8
  297. package/dist/_dts/editor-blocks/src/block-editor/editorBlockItem.d.ts +23 -0
  298. package/dist/_dts/editor-blocks/src/block-editor/generatedIconApplyCoordination.d.ts +2 -7
  299. package/dist/_dts/editor-blocks/src/block-editor/hooks/applyBlockStructureChange.d.ts +4 -0
  300. package/dist/_dts/editor-blocks/src/block-editor/hooks/buildInsertBlockHistoryCommand.d.ts +14 -5
  301. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockBaselineSync.d.ts +21 -19
  302. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockCreation.d.ts +2 -10
  303. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +8 -16
  304. package/dist/_dts/editor-blocks/src/block-editor/owner.d.ts +6 -16
  305. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +37 -9
  306. package/dist/_dts/editor-blocks/src/index.d.ts +2 -1
  307. package/dist/_dts/editor-blocks/src/widgets/entry-picker/loaders.d.ts +1 -1
  308. package/dist/_dts/editor-blocks/src/widgets/link/loaders.d.ts +1 -1
  309. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +1 -1
  310. package/dist/_dts/editor-blocks/src/widgets/reference/loaders.d.ts +1 -1
  311. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +3 -2
  312. package/dist/_dts/media-core/src/fileStorage.d.ts +4 -0
  313. package/dist/_dts/media-editor/src/MediaPickerDialog.d.ts +3 -1
  314. package/dist/_dts/media-editor/src/MediaPickerMiniDialog.d.ts +10 -0
  315. package/dist/_dts/media-editor/src/context.d.ts +1 -1
  316. package/dist/_dts/media-editor/src/createMediaEditorProvider.d.ts +1 -2
  317. package/dist/_dts/media-editor/src/index.d.ts +2 -0
  318. package/dist/_dts/media-editor/src/provider.d.ts +3 -2
  319. package/dist/_dts/media-react/src/hooks/internal/classification.d.ts +1 -1
  320. package/dist/_dts/media-react/src/hooks/useApiMediaUploader.d.ts +3 -1
  321. package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +8 -3
  322. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +6 -3
  323. package/dist/_dts/preview-next/src/client/blocks/linkedEntryRenderOverlay.d.ts +22 -2
  324. package/dist/_dts/preview-next/src/client/blocks/previewProjection/entryFieldRebinding.d.ts +13 -0
  325. package/dist/_dts/preview-next/src/client/blocks/previewProjection/index.d.ts +2 -1
  326. package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +11 -1
  327. package/dist/_dts/preview-next/src/client/blocks/renderPrecedence.d.ts +17 -0
  328. package/dist/_dts/preview-next/src/client/blocks/useLinkedSaveHandoverRetention.d.ts +20 -0
  329. package/dist/_dts/preview-next/src/client/index.d.ts +1 -1
  330. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -1
  331. package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -1
  332. package/dist/_dts/preview-next/src/client/preview/PreviewAccessBanners.d.ts +7 -0
  333. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -1
  334. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +23 -14
  335. package/dist/_dts/preview-next/src/client/preview/PreviewLeaseEditingMode.d.ts +2 -0
  336. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +9 -2
  337. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +1 -0
  338. package/dist/_dts/preview-next/src/client/preview/previewCustomizeAutosave.d.ts +5 -0
  339. package/dist/_dts/preview-next/src/client/preview/previewCustomizeWorkflowState.d.ts +3 -4
  340. package/dist/_dts/preview-next/src/client/preview/sdkConfig.d.ts +1 -0
  341. package/dist/_dts/preview-next/src/client/preview/usePreviewCustomizeWorkflowState.d.ts +4 -0
  342. package/dist/_dts/preview-next/src/client/previewAuthStore.d.ts +7 -0
  343. package/dist/_dts/preview-next/src/constants.d.ts +4 -0
  344. package/dist/_dts/preview-next/src/keepAlive.d.ts +1 -0
  345. package/dist/_dts/realtime/src/client.d.ts +3 -0
  346. package/dist/_dts/realtime/src/draftChannel.d.ts +91 -0
  347. package/dist/_dts/realtime/src/drafts.d.ts +210 -0
  348. package/dist/_dts/realtime/src/index.d.ts +3 -0
  349. package/dist/_dts/realtime/src/leaseChangeSubscriptions.d.ts +8 -0
  350. package/dist/_dts/realtime/src/types.d.ts +113 -0
  351. package/dist/_dts/realtime/src/useDraftChannel.d.ts +34 -0
  352. package/dist/_dts/realtime/src/useSiteRealtimeReload.d.ts +27 -0
  353. package/dist/_dts/sdk/src/public-api/contracts.d.ts +6 -55
  354. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +1 -0
  355. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +1 -0
  356. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +2 -0
  357. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -12
  358. package/dist/_dts/sdk/src/version.d.ts +1 -1
  359. package/dist/_dts/surfaces/src/index.d.ts +1 -0
  360. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
  361. package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +0 -5
  362. package/dist/_dts/ui/src/color-picker.d.ts +1 -1
  363. package/dist/_dts/ui/src/palette/useHexDraft.d.ts +7 -0
  364. package/dist/client/{BookingMailingListNote-1n4Ch_u_.mjs → BookingMailingListNote-Cr3EeTP5.mjs} +504 -163
  365. package/dist/client/DemoBookingPortalAccess-BFGB1Fay.mjs +344 -0
  366. package/dist/client/{EventCombined.client-C0pgma9y.mjs → EventCombined.client-DKYV0_ft.mjs} +6 -6
  367. package/dist/client/{EventListing.client-4fhLOvHP.mjs → EventListing.client-B9UIcEYc.mjs} +2 -2
  368. package/dist/client/{LeafletStaticMap-DScC4F3w.mjs → LeafletStaticMap-CFLPkP0K.mjs} +1 -1
  369. package/dist/client/{TerminalPanel-B5ZUsYhe.mjs → TerminalPanel-JjmgxEsR.mjs} +1 -1
  370. package/dist/client/{ThemedButton-DoVIV1Ao.mjs → ThemedButton-CKV1Jh2m.mjs} +1 -1
  371. package/dist/client/{accordion-CoT5g7zo.mjs → accordion-DXWIfT3T.mjs} +1 -1
  372. package/dist/client/{bookingForm-BWxB46xD.mjs → bookingForm-CjZgHNvv.mjs} +216 -63
  373. package/dist/client/bookings.mjs +1187 -692
  374. package/dist/client/{carousel-DtNYWFd3.mjs → carousel-DSLikmvZ.mjs} +1 -1
  375. package/dist/client/{cart-z4qZih1Y.mjs → cart-HDjWReFt.mjs} +3 -3
  376. package/dist/client/{checkout-DpL7euFH.mjs → checkout-CUvRZA3W.mjs} +3 -3
  377. package/dist/client/{checkoutUrls-BEfR7kVu.mjs → checkoutUrls-CXhko2Rv.mjs} +1 -1
  378. package/dist/client/client.mjs +2711 -1684
  379. package/dist/client/{context-C8TinPJc.mjs → context-DFmaZa-Q.mjs} +4 -3
  380. package/dist/client/{dates-vwwxTeB0.mjs → dates-BBep1JnF.mjs} +56 -11
  381. package/dist/client/{eventCalendar-DIbHfJXO.mjs → eventCalendar-zEobhxo4.mjs} +9 -9
  382. package/dist/client/{eventCombined-DoGMJ6cg.mjs → eventCombined-Dp7bz5k-.mjs} +4 -4
  383. package/dist/client/{eventDetails-BjN9v6a1.mjs → eventDetails-FE-zqTt7.mjs} +4 -4
  384. package/dist/client/{eventListing-DajjWgOv.mjs → eventListing-BMt5snal.mjs} +4 -4
  385. package/dist/client/{eventRegistration-DMq9gMA-.mjs → eventRegistration-O6ZxHfOb.mjs} +422 -570
  386. package/dist/client/{form-Qf6qTbos.mjs → form-DFa1D8vt.mjs} +3 -3
  387. package/dist/client/{headerSection-D7qJrqFX.mjs → headerSection-CmjHLR-N.mjs} +3 -3
  388. package/dist/client/hooks.mjs +414 -182
  389. package/dist/client/{locationMap-CCF9-t_0.mjs → locationMap-BXKP_lGh.mjs} +3 -3
  390. package/dist/client/{media-CwBGetqC.mjs → media-Cl38iOMI.mjs} +10 -3
  391. package/dist/client/{newsletterForm-DzCLSP4S.mjs → newsletterForm-CU-HmxGx.mjs} +3 -3
  392. package/dist/client/{pricing-Cgxv2KLC.mjs → pricing-KEAEsibq.mjs} +1 -1
  393. package/dist/client/{productDetail-ru9w5GHx.mjs → productDetail-Ckp7MGnt.mjs} +3 -3
  394. package/dist/client/{productList-zaapKSl-.mjs → productList-D91V0sYa.mjs} +3 -3
  395. package/dist/client/{propsDecoder-CwvvNOHx.mjs → propsDecoder-DZd6RJeA.mjs} +244 -94
  396. package/dist/client/rendering/client.mjs +2656 -1705
  397. package/dist/client/rendering/islands.mjs +18 -18
  398. package/dist/client/rendering.mjs +3430 -2352
  399. package/dist/client/{routeIslandApiConfig-BwVFo0Y4.mjs → routeIslandApiConfig-E1EkhhYY.mjs} +1 -1
  400. package/dist/client/{shop-mktkXvbV.mjs → shop-4F2jLQPI.mjs} +131 -85
  401. package/dist/client/{shop-commerce-De7gEnkA.mjs → shop-commerce-BbfCJjB3.mjs} +25 -13
  402. package/dist/client/{shop-commerce-store-B3MCxIBW.mjs → shop-commerce-store-vicweP2K.mjs} +1 -1
  403. package/dist/client/{shopShared-TqExh235.mjs → shopShared-DlONJt0T.mjs} +4 -4
  404. package/dist/client/{useEventFilters-n_OjkIjX.mjs → useEventFilters-COYyL3m7.mjs} +32 -17
  405. package/dist/preview-next/before-render.mjs +207 -105
  406. package/dist/preview-next/client/runtime.mjs +4 -4
  407. package/dist/preview-next/constants.mjs +5 -1
  408. package/dist/preview-next/index.mjs +5 -1
  409. package/dist/preview-next/keepAlive.mjs +341 -165
  410. package/dist/preview-next/middleware.mjs +207 -105
  411. package/dist/{previewAuthStore-C_EHQ5XA.mjs → previewAuthStore-BBmV7UsW.mjs} +243 -112
  412. package/dist/{sdk-runtime-BIkJg5y1.mjs → sdk-runtime-CwvFFjB-.mjs} +2 -2
  413. package/dist/{separator-C9qDP95Z.mjs → separator-ByL72zUT.mjs} +1 -1
  414. package/dist/server/components.mjs +1839 -1475
  415. package/dist/server/config-validation.mjs +381 -166
  416. package/dist/server/config.mjs +381 -166
  417. package/dist/server/data.mjs +381 -166
  418. package/dist/server/index.mjs +214 -110
  419. package/dist/server/next.mjs +663 -351
  420. package/dist/server/page-converter.mjs +198 -79
  421. package/dist/server/prebuild.mjs +1 -1
  422. package/dist/server/rendering/server.mjs +1536 -1169
  423. package/dist/server/rendering.mjs +2432 -2068
  424. package/dist/server/routing.mjs +456 -173
  425. package/dist/server/server.mjs +447 -267
  426. package/package.json +1 -1
  427. package/dist/_dts/api/src/bookingPaymentTermSchemas.d.ts +0 -123
  428. package/dist/_dts/billing/src/plans/display.d.ts +0 -15
  429. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-note.d.ts +0 -3
  430. package/dist/_dts/commerce/src/purchase/checkoutPaymentTermPlanning.d.ts +0 -10
  431. package/dist/_dts/commerce/src/purchase/checkoutValidatedItemPlanning.d.ts +0 -55
  432. package/dist/_dts/commerce/src/purchase/orderInstalmentPayoff.d.ts +0 -24
  433. package/dist/_dts/content-editor/src/controller/buildBlockPublishedBaselines.d.ts +0 -4
  434. package/dist/_dts/content-editor/src/controller/buildPublishSuccessTransition.d.ts +0 -16
  435. package/dist/_dts/content-editor/src/controller/driver.d.ts +0 -14
  436. package/dist/_dts/content-editor/src/controller/seedDraftBaselinesFromBlocks.d.ts +0 -7
  437. package/dist/_dts/content-editor/src/controller/useEntrySyncHelpers.d.ts +0 -29
  438. package/dist/_dts/content-editor/src/hooks/autosaveScopePlanning.d.ts +0 -26
  439. package/dist/_dts/content-editor/src/hooks/useSimpleAutosave.d.ts +0 -64
  440. package/dist/_dts/content-editor/src/hooks/useStoreAutosave.d.ts +0 -48
  441. package/dist/_dts/content-editor/src/types.d.ts +0 -44
  442. package/dist/client/DiscountCodeDisclosure-CKJtz0mY.mjs +0 -137
@@ -1150,6 +1150,19 @@ const CURRENCY_LOCALE_BY_CODE = {
1150
1150
  function resolveCurrencyLocale(currencyCode, override) {
1151
1151
  return override ?? CURRENCY_LOCALE_BY_CODE[currencyCode] ?? "en";
1152
1152
  }
1153
+ function fractionDigitsFor(decimals, exactFormatter) {
1154
+ switch (decimals) {
1155
+ case "exact": return {};
1156
+ case "auto": return {
1157
+ minimumFractionDigits: 0,
1158
+ maximumFractionDigits: exactFormatter.resolvedOptions().maximumFractionDigits
1159
+ };
1160
+ case "whole": return {
1161
+ minimumFractionDigits: 0,
1162
+ maximumFractionDigits: 0
1163
+ };
1164
+ }
1165
+ }
1153
1166
  /**
1154
1167
  * The single currency-amount formatter for the product: minor units in,
1155
1168
  * localized string out.
@@ -1160,6 +1173,13 @@ function resolveCurrencyLocale(currencyCode, override) {
1160
1173
  * own `Intl.NumberFormat`.
1161
1174
  */
1162
1175
  function formatCurrencyAmount(amountCents, currency, options) {
1176
+ return formatCurrencyMajorUnits(amountCents / 100, currency, options);
1177
+ }
1178
+ /**
1179
+ * `formatCurrencyAmount` for an amount already in MAJOR units (29.99 = £29.99),
1180
+ * such as a registrar price. Prefer minor units everywhere else.
1181
+ */
1182
+ function formatCurrencyMajorUnits(amount, currency, options) {
1163
1183
  const currencyCode = currency.toUpperCase();
1164
1184
  const locale = resolveCurrencyLocale(currencyCode, options?.locale);
1165
1185
  try {
@@ -1167,17 +1187,13 @@ function formatCurrencyAmount(amountCents, currency, options) {
1167
1187
  style: "currency",
1168
1188
  currency: currencyCode
1169
1189
  });
1170
- const fractionDigits = options?.decimals === "auto" ? {
1171
- minimumFractionDigits: 0,
1172
- maximumFractionDigits: exactFormatter.resolvedOptions().maximumFractionDigits
1173
- } : {};
1174
1190
  return new Intl.NumberFormat(locale, {
1175
1191
  style: "currency",
1176
1192
  currency: currencyCode,
1177
- ...fractionDigits
1178
- }).format(amountCents / 100);
1193
+ ...fractionDigitsFor(options?.decimals ?? "exact", exactFormatter)
1194
+ }).format(amount);
1179
1195
  } catch {
1180
- return `${(amountCents / 100).toFixed(2)} ${currencyCode}`;
1196
+ return `${amount.toFixed(2)} ${currencyCode}`;
1181
1197
  }
1182
1198
  }
1183
1199
  /** Default clock for production callers that do not inject time explicitly. */
@@ -1461,6 +1477,16 @@ function isRecord$41(value) {
1461
1477
  return typeof value === "object" && value !== null && !Array.isArray(value);
1462
1478
  }
1463
1479
  //#endregion
1480
+ //#region ../core/src/booking-payment-options.ts
1481
+ /** Automatic instalments and a flexible balance cannot share one booking offer. */
1482
+ function validateBookingPaymentOptionKinds(kinds) {
1483
+ if (kinds.length === 0) return err$3("no_options");
1484
+ const uniqueKinds = new Set(kinds);
1485
+ if (uniqueKinds.size !== kinds.length) return err$3("duplicate_kind");
1486
+ if (uniqueKinds.has("instalment_plan") && uniqueKinds.has("flexible_balance")) return err$3("incompatible_collection_options");
1487
+ return ok$3(void 0);
1488
+ }
1489
+ //#endregion
1464
1490
  //#region ../core/src/booking-time-zone.ts
1465
1491
  const TIME_ZONE_VALIDITY_CACHE_LIMIT = 100;
1466
1492
  const timeZoneValidityCache = /* @__PURE__ */ new Map();
@@ -1768,6 +1794,26 @@ function toLocationCoordinates(value) {
1768
1794
  };
1769
1795
  }
1770
1796
  //#endregion
1797
+ //#region ../core/src/block-content-identity.ts
1798
+ function readContentVersionId(value) {
1799
+ const parsed = parseContentVersionId(value);
1800
+ return parsed.ok ? parsed.value : null;
1801
+ }
1802
+ /** The one pairing of a published id with its content. */
1803
+ function readPublishedBlockPlacement(id, content) {
1804
+ if (id == null && content == null) return null;
1805
+ const versionId = readContentVersionId(id);
1806
+ return versionId !== null && content != null ? {
1807
+ kind: "published",
1808
+ id: versionId,
1809
+ content
1810
+ } : {
1811
+ kind: "incomplete",
1812
+ id: id ?? null,
1813
+ content: content ?? null
1814
+ };
1815
+ }
1816
+ //#endregion
1771
1817
  //#region ../core/src/rich-text.ts
1772
1818
  function isRecord$39(value) {
1773
1819
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -2737,11 +2783,18 @@ function isReservedPathSegment(value) {
2737
2783
  function isUnsafePathSegment(segment) {
2738
2784
  return segment.trim().length === 0 || segment !== segment.trim() || isReservedPathSegment(segment) || containsUnsafePathSegmentCharacter(segment);
2739
2785
  }
2740
- ({
2786
+ //#endregion
2787
+ //#region ../media-core/src/fileStorage.ts
2788
+ const FILE_STORAGE_BUCKETS = {
2741
2789
  publicSite: unsafeAsStorageBucketName("media"),
2742
2790
  privateSite: unsafeAsStorageBucketName("site-files-private"),
2743
- temporary: unsafeAsStorageBucketName("temp-uploads")
2744
- }).publicSite;
2791
+ temporary: unsafeAsStorageBucketName("temp-uploads"),
2792
+ siteAssets: unsafeAsStorageBucketName("site-assets"),
2793
+ siteFonts: unsafeAsStorageBucketName("site-fonts"),
2794
+ bookingRequirementDocuments: unsafeAsStorageBucketName("booking-requirement-documents")
2795
+ };
2796
+ FILE_STORAGE_BUCKETS.publicSite, FILE_STORAGE_BUCKETS.siteAssets, FILE_STORAGE_BUCKETS.siteFonts;
2797
+ FILE_STORAGE_BUCKETS.publicSite, FILE_STORAGE_BUCKETS.privateSite, FILE_STORAGE_BUCKETS.temporary, FILE_STORAGE_BUCKETS.siteAssets, FILE_STORAGE_BUCKETS.siteFonts, FILE_STORAGE_BUCKETS.bookingRequirementDocuments;
2745
2798
  function parseStoragePath(value) {
2746
2799
  return joinStoragePathSegments(value.split("/"));
2747
2800
  }
@@ -13315,68 +13368,113 @@ function createRichTextDoc(paragraphs) {
13315
13368
  };
13316
13369
  }
13317
13370
  //#endregion
13318
- //#region ../blocks/src/system/blocks/shared/bookingPaymentTerms.ts
13319
- const bookingDepositRefundPolicySchema$1 = z$1.enum(["refundable", "non_refundable"]);
13320
- const bookingInstalmentPlanSchema$1 = z$1.union([
13321
- z$1.object({
13322
- kind: z$1.literal("deposit_plus_one_remainder"),
13323
- depositAmountCents: z$1.number().int().min(0),
13324
- depositRefundability: bookingDepositRefundPolicySchema$1,
13325
- remainderDueCount: z$1.number().int().positive(),
13326
- intervalUnit: z$1.enum([
13327
- "day",
13328
- "week",
13329
- "month"
13330
- ])
13331
- }),
13332
- z$1.object({
13333
- kind: z$1.literal("deposit_plus_scheduled_instalments"),
13334
- depositAmountCents: z$1.number().int().min(0),
13335
- depositRefundability: bookingDepositRefundPolicySchema$1,
13336
- instalmentCount: z$1.number().int().positive(),
13337
- intervalCount: z$1.number().int().positive(),
13338
- intervalUnit: z$1.enum([
13339
- "day",
13340
- "week",
13341
- "month"
13342
- ])
13343
- }),
13344
- z$1.object({
13345
- kind: z$1.literal("equal_scheduled_instalments"),
13346
- instalmentCount: z$1.number().int().positive(),
13347
- intervalCount: z$1.number().int().positive(),
13348
- intervalUnit: z$1.enum([
13349
- "day",
13350
- "week",
13351
- "month"
13352
- ])
13353
- })
13371
+ //#region ../core/src/booking-payment-schemas.ts
13372
+ const stripObject = (shape) => z$1.object(shape);
13373
+ const strictObject = (shape) => z$1.strictObject(shape);
13374
+ const depositRefundPolicySchema = z$1.enum(["refundable", "non_refundable"]);
13375
+ const intervalUnitSchema = z$1.enum([
13376
+ "day",
13377
+ "week",
13378
+ "month"
13354
13379
  ]);
13355
- const bookingFlexibleBalanceDueDateRuleSchema$1 = z$1.union([z$1.object({
13356
- kind: z$1.literal("relative_to_start_date"),
13357
- daysBeforeStart: z$1.number().int().positive()
13358
- }), z$1.object({
13359
- kind: z$1.literal("fixed_calendar_date"),
13360
- dueAt: z$1.string().datetime()
13361
- })]);
13362
- const bookingFlexibleBalanceConfigSchema$1 = z$1.object({
13363
- upfrontAmountCents: z$1.number().int().min(0),
13364
- dueDateRule: bookingFlexibleBalanceDueDateRuleSchema$1,
13365
- depositRefundability: bookingDepositRefundPolicySchema$1
13366
- });
13367
- const blockBookingPaymentCollectionOptionSchema = z$1.union([
13368
- z$1.object({ kind: z$1.literal("upfront") }),
13369
- z$1.object({ kind: z$1.literal("deferred_manual") }),
13370
- z$1.object({
13371
- kind: z$1.literal("instalment_plan"),
13372
- plan: bookingInstalmentPlanSchema$1
13373
- }),
13374
- z$1.object({
13375
- kind: z$1.literal("flexible_balance"),
13376
- config: bookingFlexibleBalanceConfigSchema$1
13377
- })
13378
- ]);
13379
- const blockBookingPaymentTermsSchema = z$1.object({ allowedOptions: z$1.array(blockBookingPaymentCollectionOptionSchema).min(1) });
13380
+ const nonNegativeIntegerSchema = z$1.number().int().nonnegative();
13381
+ const positiveIntegerSchema = z$1.number().int().positive();
13382
+ function createInstalmentPlanSchema(object) {
13383
+ return z$1.discriminatedUnion("kind", [
13384
+ object({
13385
+ kind: z$1.literal("deposit_plus_one_remainder"),
13386
+ depositAmountCents: nonNegativeIntegerSchema,
13387
+ depositRefundability: depositRefundPolicySchema,
13388
+ remainderDueCount: positiveIntegerSchema,
13389
+ intervalUnit: intervalUnitSchema
13390
+ }),
13391
+ object({
13392
+ kind: z$1.literal("deposit_plus_scheduled_instalments"),
13393
+ depositAmountCents: nonNegativeIntegerSchema,
13394
+ depositRefundability: depositRefundPolicySchema,
13395
+ instalmentCount: positiveIntegerSchema,
13396
+ intervalCount: positiveIntegerSchema,
13397
+ intervalUnit: intervalUnitSchema
13398
+ }),
13399
+ object({
13400
+ kind: z$1.literal("equal_scheduled_instalments"),
13401
+ instalmentCount: positiveIntegerSchema,
13402
+ intervalCount: positiveIntegerSchema,
13403
+ intervalUnit: intervalUnitSchema
13404
+ })
13405
+ ]);
13406
+ }
13407
+ function createFlexibleBalanceSchemas(object) {
13408
+ const dueDateRule = z$1.discriminatedUnion("kind", [object({
13409
+ kind: z$1.literal("relative_to_start_date"),
13410
+ daysBeforeStart: positiveIntegerSchema
13411
+ }), object({
13412
+ kind: z$1.literal("fixed_calendar_date"),
13413
+ dueAt: z$1.string().datetime()
13414
+ })]);
13415
+ return {
13416
+ dueDateRule,
13417
+ config: object({
13418
+ upfrontAmountCents: nonNegativeIntegerSchema,
13419
+ dueDateRule,
13420
+ depositRefundability: depositRefundPolicySchema
13421
+ })
13422
+ };
13423
+ }
13424
+ const paymentOptionKindsMessages = {
13425
+ no_options: "Choose at least one way for customers to pay.",
13426
+ duplicate_kind: "Choose each payment option only once.",
13427
+ incompatible_collection_options: "Offer instalments or a deposit with the rest paid later, but not both."
13428
+ };
13429
+ function buildBookingPaymentOptionSchemas(object) {
13430
+ const instalmentPlan = createInstalmentPlanSchema(object);
13431
+ const flexibleBalance = createFlexibleBalanceSchemas(object);
13432
+ const paymentCollectionOption = z$1.discriminatedUnion("kind", [
13433
+ object({ kind: z$1.literal("upfront") }),
13434
+ object({ kind: z$1.literal("deferred_manual") }),
13435
+ object({
13436
+ kind: z$1.literal("instalment_plan"),
13437
+ plan: instalmentPlan
13438
+ }),
13439
+ object({
13440
+ kind: z$1.literal("flexible_balance"),
13441
+ config: flexibleBalance.config
13442
+ })
13443
+ ]);
13444
+ const paymentTerms = object({ allowedOptions: z$1.array(paymentCollectionOption) }).superRefine(({ allowedOptions }, ctx) => {
13445
+ const result = validateBookingPaymentOptionKinds(allowedOptions.map(({ kind }) => kind));
13446
+ if (!result.ok) ctx.addIssue({
13447
+ code: "custom",
13448
+ path: ["allowedOptions"],
13449
+ message: paymentOptionKindsMessages[result.error]
13450
+ });
13451
+ });
13452
+ const paymentOptionsChoice = z$1.discriminatedUnion("source", [z$1.strictObject({ source: z$1.literal("default") }), z$1.strictObject({
13453
+ source: z$1.literal("custom"),
13454
+ paymentTerms
13455
+ })]);
13456
+ return {
13457
+ depositRefundPolicy: depositRefundPolicySchema,
13458
+ instalmentPlan,
13459
+ flexibleBalanceDueDateRule: flexibleBalance.dueDateRule,
13460
+ flexibleBalanceConfig: flexibleBalance.config,
13461
+ paymentCollectionOption,
13462
+ paymentTerms,
13463
+ paymentOptionsChoice
13464
+ };
13465
+ }
13466
+ function createBookingPaymentOptionSchemas(mode) {
13467
+ return mode === "strict" ? buildBookingPaymentOptionSchemas(strictObject) : buildBookingPaymentOptionSchemas(stripObject);
13468
+ }
13469
+ const bookingPaymentOptionSchemas = createBookingPaymentOptionSchemas("strip");
13470
+ bookingPaymentOptionSchemas.depositRefundPolicy;
13471
+ bookingPaymentOptionSchemas.instalmentPlan;
13472
+ bookingPaymentOptionSchemas.flexibleBalanceDueDateRule;
13473
+ bookingPaymentOptionSchemas.flexibleBalanceConfig;
13474
+ bookingPaymentOptionSchemas.paymentCollectionOption;
13475
+ const bookingPaymentTermsSchema = bookingPaymentOptionSchemas.paymentTerms;
13476
+ bookingPaymentOptionSchemas.paymentOptionsChoice;
13477
+ const blockBookingPaymentTermsSchema = bookingPaymentTermsSchema;
13380
13478
  const blockBookingConsentSchema = z$1.object({
13381
13479
  requirementId: z$1.string(),
13382
13480
  title: z$1.string(),
@@ -13620,7 +13718,6 @@ const publicEventBaseSchema = z$1.object({
13620
13718
  description: z$1.string().nullable(),
13621
13719
  content: z$1.object({ body: RichTextDocSchema.nullable().optional() }).optional(),
13622
13720
  presentation: z$1.object({
13623
- cardTitleOverride: z$1.string().nullable().optional(),
13624
13721
  summary: z$1.string().nullable().optional(),
13625
13722
  image: mediaSchema.nullable().optional()
13626
13723
  }).optional(),
@@ -13653,6 +13750,7 @@ const publicEventBaseSchema = z$1.object({
13653
13750
  "archived"
13654
13751
  ]).optional(),
13655
13752
  timeZone: z$1.string(),
13753
+ siteTimeZone: z$1.string().optional(),
13656
13754
  pricing: publicEventPricingSchema,
13657
13755
  paymentTerms: blockBookingPaymentTermsSchema,
13658
13756
  cancellationPolicy: z$1.object({ refunds: z$1.object({
@@ -13985,7 +14083,7 @@ const publicPassProductCollectionSchema = z$1.object({ passes: z$1.array(publicP
13985
14083
  /**
13986
14084
  * Public membership product for shop display
13987
14085
  */
13988
- const publicMembershipProductSchema = z$1.object({
14086
+ const publicMembershipProductFields = {
13989
14087
  id: z$1.string(),
13990
14088
  name: z$1.string(),
13991
14089
  description: z$1.string().nullable(),
@@ -13994,7 +14092,16 @@ const publicMembershipProductSchema = z$1.object({
13994
14092
  billingInterval: z$1.enum(["month", "year"]),
13995
14093
  eligibleCategoryIds: z$1.array(z$1.string()),
13996
14094
  eligibleCategoryNames: z$1.array(z$1.string())
14095
+ };
14096
+ const purchasablePublicMembershipProductSchema = z$1.object({
14097
+ ...publicMembershipProductFields,
14098
+ purchaseAvailability: z$1.literal("purchasable")
13997
14099
  });
14100
+ const publicMembershipProductSchema = z$1.discriminatedUnion("purchaseAvailability", [purchasablePublicMembershipProductSchema, z$1.object({
14101
+ ...publicMembershipProductFields,
14102
+ purchaseAvailability: z$1.literal("display_only"),
14103
+ unavailabilityReason: z$1.literal("online_payments_unavailable")
14104
+ })]);
13998
14105
  const publicMembershipProductCollectionSchema = z$1.object({ memberships: z$1.array(publicMembershipProductSchema) });
13999
14106
  //#endregion
14000
14107
  //#region ../blocks/src/system/node/schema.ts
@@ -29214,6 +29321,13 @@ const STRUCTURED_KEYS = /* @__PURE__ */ new Set([
29214
29321
  "domainOperationProvider",
29215
29322
  "domainOperationError",
29216
29323
  "domainOperationMetadata",
29324
+ "previewDecision",
29325
+ "previewOutcome",
29326
+ "previewTokenTtlBucket",
29327
+ "previewRefreshCookiePresent",
29328
+ "previewDashboardStatus",
29329
+ "previewProviderResult",
29330
+ "previewUpstreamStatus",
29217
29331
  "durationMs",
29218
29332
  "duration",
29219
29333
  "status",
@@ -29407,6 +29521,7 @@ const bookingMailingListContextSchema = z$1.unknown().transform((value) => {
29407
29521
  return parsed.ok ? parsed.value : void 0;
29408
29522
  });
29409
29523
  const bookingSourceSchema = z$1.object({
29524
+ demoEmailSuppressed: z$1.boolean().optional(),
29410
29525
  mailingList: bookingMailingListContextSchema.optional(),
29411
29526
  siteName: z$1.string().optional(),
29412
29527
  siteId: z$1.string().optional(),
@@ -29437,6 +29552,7 @@ const bookingDisplaySchema = z$1.object({
29437
29552
  message: z$1.string().nullable()
29438
29553
  });
29439
29554
  const bookingHydrationSchema = z$1.object({
29555
+ demoEmailSuppressed: z$1.boolean().optional(),
29440
29556
  mailingList: bookingMailingListContextSchema.optional(),
29441
29557
  siteName: z$1.string().optional(),
29442
29558
  formId: z$1.string().nullable(),
@@ -29484,6 +29600,7 @@ const bookingFormBlockRuntime = defineClientOwnedBlockRuntime({
29484
29600
  return {
29485
29601
  display: buildBookingFormDisplay(source, form),
29486
29602
  hydration: {
29603
+ demoEmailSuppressed: source.demoEmailSuppressed,
29487
29604
  mailingList: source.mailingList,
29488
29605
  siteName: source.siteName,
29489
29606
  formId: form?.id ?? source.formId ?? null,
@@ -29924,6 +30041,44 @@ function resolveEventCta(event, buttonText) {
29924
30041
  * timestamps become strings or date buckets. Calendar-grid primitives are
29925
30042
  * re-exported from @riverbankcms/calendar so block code has one import.
29926
30043
  */
30044
+ /**
30045
+ * The English locale a site's public dates are written in, read from the
30046
+ * site's own time zone (Will, 2026-09-26: "date style from site time zone").
30047
+ *
30048
+ * Sites don't store a locale, and every public word around a date is English,
30049
+ * so the only open question is which English conventions to follow: day or
30050
+ * month first, and a 24 or 12-hour clock. The site's time zone is the one
30051
+ * fact every site carries about where it is. It is the site's, never an
30052
+ * event's: a venue left at UTC must not turn a UK site's dates American.
30053
+ * Anywhere this can't place (UTC, the Americas, Asia) keeps US English, which
30054
+ * is what these helpers wrote before sites were placed at all.
30055
+ */
30056
+ function eventDateLocale(siteTimeZone) {
30057
+ if (!siteTimeZone) return "en-US";
30058
+ if (siteTimeZone === "Europe/Dublin") return "en-IE";
30059
+ if (siteTimeZone.startsWith("Europe/")) return "en-GB";
30060
+ if (siteTimeZone.startsWith("Australia/")) return "en-AU";
30061
+ if (siteTimeZone === "Pacific/Auckland" || siteTimeZone === "Pacific/Chatham") return "en-NZ";
30062
+ return "en-US";
30063
+ }
30064
+ /**
30065
+ * Formatting options for an event's dates: the times in the event's own zone,
30066
+ * written in its site's locale. A record from an older server that doesn't
30067
+ * name the site's zone falls back to the event's.
30068
+ */
30069
+ function eventDateOptions(place) {
30070
+ return {
30071
+ timeZone: place.timeZone ?? null,
30072
+ locale: eventDateLocale(place.siteTimeZone ?? place.timeZone)
30073
+ };
30074
+ }
30075
+ /**
30076
+ * Start and end times as cards write them, in the site's locale:
30077
+ * "10:00 to 16:00" in the UK, "10:00 AM to 4:00 PM" in the US.
30078
+ */
30079
+ function formatEventTimeRange$1(times, options) {
30080
+ return `${formatTime(times.startsAt, options)} to ${formatTime(times.endsAt, options)}`;
30081
+ }
29927
30082
  /** Use the event timezone when present, otherwise the calendar/site timezone. */
29928
30083
  function resolveEventTimeZone(event, calendarTimeZone) {
29929
30084
  return event.timeZone || calendarTimeZone;
@@ -29945,18 +30100,25 @@ function formatDate$2(isoTimestamp, options) {
29945
30100
  });
29946
30101
  }
29947
30102
  /**
29948
- * Format time for display.
29949
- * Returns: "10:00 AM"
30103
+ * Whether the locale reads a 24-hour clock, where hours are written with two
30104
+ * digits ("09:00"), as the dashboard writes them.
30105
+ */
30106
+ function usesTwentyFourHourClock(locale) {
30107
+ return new Intl.DateTimeFormat(locale, { hour: "numeric" }).resolvedOptions().hour12 === false;
30108
+ }
30109
+ /**
30110
+ * Format time for display, on the locale's own clock.
30111
+ * Returns: "9:00 AM" (en-US) or "09:00" (en-GB)
29950
30112
  */
29951
30113
  function formatTime(isoTimestamp, options) {
30114
+ const locale = options?.locale ?? "en-US";
29952
30115
  return formatBookingTime(toScheduledBookingDateTime({
29953
30116
  startsAt: isoTimestamp,
29954
30117
  timeZone: toBookingTimeZone(options?.timeZone ?? "UTC"),
29955
- locale: options?.locale ?? "en-US"
30118
+ locale
29956
30119
  }), {
29957
- hour: "numeric",
29958
- minute: "2-digit",
29959
- hour12: true
30120
+ hour: usesTwentyFourHourClock(locale) ? "2-digit" : "numeric",
30121
+ minute: "2-digit"
29960
30122
  });
29961
30123
  }
29962
30124
  function formatEventDateParts(args) {
@@ -29988,7 +30150,7 @@ function formatEventCompactDateRail(isoTimestamp, options) {
29988
30150
  locale: options?.locale ?? "en-US"
29989
30151
  });
29990
30152
  const weekday = formatBookingDate(dateTime, { weekday: "short" }).toLocaleUpperCase(options?.locale ?? "en-US");
29991
- const month = formatBookingDate(dateTime, { month: "short" }).toLocaleUpperCase(options?.locale ?? "en-US");
30153
+ const month = formatBookingDate(dateTime, { month: "short" }).slice(0, 3).toLocaleUpperCase(options?.locale ?? "en-US");
29992
30154
  return {
29993
30155
  weekday,
29994
30156
  day: formatBookingDate(dateTime, { day: "numeric" }),
@@ -30008,7 +30170,7 @@ function formatEventCompactDateRail(isoTimestamp, options) {
30008
30170
  * keep the fact panel on the same date and timezone rules as event rows.
30009
30171
  */
30010
30172
  function formatEventNextDateFact(event) {
30011
- const rail = formatEventCompactDateRail(event.startsAt, { timeZone: event.timeZone });
30173
+ const rail = formatEventCompactDateRail(event.startsAt, eventDateOptions(event));
30012
30174
  return {
30013
30175
  dateTime: event.startsAt,
30014
30176
  value: `${rail.weekday} ${rail.day} ${rail.month}`,
@@ -32797,6 +32959,13 @@ function ThemedAuthoredButton({ label, href, variant, size, extraClassName, disa
32797
32959
  }
32798
32960
  //#endregion
32799
32961
  //#region ../blocks/src/system/runtime/nodes/events/shared/EventCard.tsx
32962
+ /** The category's badge, when the event has a category. */
32963
+ function eventCardCategoryBadge(category) {
32964
+ return category ? {
32965
+ label: category.name,
32966
+ style: getCategoryBadgeStyle(category.color ?? null)
32967
+ } : null;
32968
+ }
32800
32969
  /**
32801
32970
  * EventCard Component
32802
32971
  *
@@ -32805,24 +32974,19 @@ function ThemedAuthoredButton({ label, href, variant, size, extraClassName, disa
32805
32974
  *
32806
32975
  * This component is server-safe (uses no client APIs like Intl).
32807
32976
  */
32808
- const EventCard = ({ event, cardRole = "default", buttonVariant = "primary", buttonText, showVenue = true, showMap = true, mapSlot, allowMap = true, showCapacity = true, showImage = true, showCategory = true, showSummary = true, orientation = "vertical", presentation, headingLevel }) => {
32977
+ const EventCard = ({ event, cardRole = "default", buttonVariant = "primary", buttonText, showVenue = true, showMap = true, mapSlot, allowMap = true, showCapacity = true, showImage = true, showCategory = true, showSummary = true, orientation = "vertical", presentation, headingLevel, imageResolveContext }) => {
32809
32978
  const { presentation: cardPresentation, presentationClass, headingLevel: cardHeadingLevel } = resolveEventCardOptions({
32810
32979
  presentation,
32811
32980
  headingLevel
32812
32981
  });
32813
- const timeZone = event.timeZone ?? null;
32814
- const formattedDate = formatDate$2(event.startsAt, { timeZone });
32815
- const formattedTime = `${formatTime(event.startsAt, { timeZone })} - ${formatTime(event.endsAt, { timeZone })}`;
32982
+ const { formattedDate, formattedTime } = formatEventCardWhen(event);
32816
32983
  const cta = resolveEventCta(event, buttonText);
32817
32984
  const cardClass = boxStyleClassNames({ role: cardRole }, { baseClass: "event-card" });
32818
32985
  const title = event.title;
32819
32986
  const summary = event.presentation?.summary ?? event.description;
32820
32987
  const image = event.presentation?.image ?? null;
32821
32988
  const category = event.eventCategory;
32822
- const categoryBadge = category && showCategory ? {
32823
- label: category.name,
32824
- style: getCategoryBadgeStyle(category.color ?? null)
32825
- } : null;
32989
+ const categoryBadge = showCategory ? eventCardCategoryBadge(category) : null;
32826
32990
  const hasImage = Boolean(showImage && image);
32827
32991
  const dateFact = resolveEventCardDateFact({
32828
32992
  event,
@@ -32841,7 +33005,8 @@ const EventCard = ({ event, cardRole = "default", buttonVariant = "primary", but
32841
33005
  categoryId: category?.id,
32842
33006
  dateFact,
32843
33007
  hasImage,
32844
- image
33008
+ image,
33009
+ imageResolveContext
32845
33010
  }), /* @__PURE__ */ jsx(EventCardContent, {
32846
33011
  allowMap,
32847
33012
  buttonVariant,
@@ -32889,7 +33054,8 @@ function EventCardMedia(props) {
32889
33054
  /* @__PURE__ */ jsx(MediaNodeServer, {
32890
33055
  value: props.image,
32891
33056
  className: "event-card-image",
32892
- size: ImagePresets$1.card
33057
+ size: ImagePresets$1.card,
33058
+ imageResolveContext: props.imageResolveContext
32893
33059
  }),
32894
33060
  props.categoryBadge && /* @__PURE__ */ jsx("span", {
32895
33061
  className: "event-category-badge event-category-badge--overlay",
@@ -33004,6 +33170,17 @@ function resolveEventCardOptions(props) {
33004
33170
  headingLevel: props.headingLevel ?? 3
33005
33171
  };
33006
33172
  }
33173
+ /**
33174
+ * The card's date and times, written the way the event's place writes them
33175
+ * ("Friday, 16 October 2026" and "10:00 to 16:00" in the UK).
33176
+ */
33177
+ function formatEventCardWhen(event) {
33178
+ const options = eventDateOptions(event);
33179
+ return {
33180
+ formattedDate: formatDate$2(event.startsAt, options),
33181
+ formattedTime: formatEventTimeRange$1(event, options)
33182
+ };
33183
+ }
33007
33184
  function resolveEventCardDateFact(props) {
33008
33185
  if (!props.showImage || props.image || props.presentation !== "catalogue") return null;
33009
33186
  return formatEventNextDateFact(props.event);
@@ -33332,6 +33509,34 @@ function OfferingTitle({ className, path, title }) {
33332
33509
  });
33333
33510
  }
33334
33511
  //#endregion
33512
+ //#region ../blocks/src/system/runtime/nodes/events/shared/eventCardPresentations.ts
33513
+ /** A booking page's catalogue card: one per series, "See dates" for dated events. */
33514
+ function catalogueEventCardProps(event, buttonVariant = "primary") {
33515
+ return {
33516
+ presentation: "catalogue",
33517
+ headingLevel: 4,
33518
+ buttonVariant,
33519
+ buttonText: event.bookingScope === "single_occurrence" ? "See dates" : void 0,
33520
+ showMap: false,
33521
+ allowMap: false,
33522
+ showCategory: false,
33523
+ orientation: "vertical"
33524
+ };
33525
+ }
33526
+ /** An events listing's card, from the listing's display settings. */
33527
+ function listingEventCardProps(display) {
33528
+ return {
33529
+ cardRole: display.cardRole,
33530
+ buttonVariant: display.buttonVariant,
33531
+ buttonText: display.buttonText,
33532
+ showVenue: display.showVenue,
33533
+ showMap: display.showMap,
33534
+ allowMap: false,
33535
+ showCapacity: display.showCapacity,
33536
+ orientation: display.orientation
33537
+ };
33538
+ }
33539
+ //#endregion
33335
33540
  //#region ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
33336
33541
  const previewStageSchema = z$1.enum(["preview", "published"]);
33337
33542
  const registrationButtonVariantSchema = blockButtonRoleSchema;
@@ -34018,6 +34223,7 @@ const EVENT_REGISTRATION_SHELL_STEP_LABELS = [
34018
34223
  ];
34019
34224
  const eventRegistrationPublicEventSchema = z$1.preprocess(normalizeEventRegistrationEventInput, publicEventSchema);
34020
34225
  const eventRegistrationHydrationSchemaShape = {
34226
+ demoEmailSuppressed: z$1.boolean().optional(),
34021
34227
  occurrenceContext: occurrenceContextSchema.optional(),
34022
34228
  subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
34023
34229
  maxTickets: z$1.string().optional(),
@@ -34198,6 +34404,7 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
34198
34404
  ...eventSource,
34199
34405
  events: [...scopedSourceEvents]
34200
34406
  } : eventSource,
34407
+ demoEmailSuppressed: source.demoEmailSuppressed,
34201
34408
  maxTickets: source.maxTickets ?? void 0,
34202
34409
  showVenue: source.showVenue,
34203
34410
  showCapacity: source.showCapacity,
@@ -35094,7 +35301,7 @@ function buildPassesMembershipsDisplay(options) {
35094
35301
  product: pass
35095
35302
  } : {
35096
35303
  kind: "unavailable",
35097
- label: "Online purchasing coming soon."
35304
+ label: "Online purchasing is unavailable."
35098
35305
  }
35099
35306
  };
35100
35307
  });
@@ -35104,7 +35311,14 @@ function buildPassesMembershipsDisplay(options) {
35104
35311
  description: options.showDescriptions ? membership.description : null,
35105
35312
  priceLabel: formatCommercePrice(membership.price, membership.currency),
35106
35313
  intervalLabel: formatInterval(membership.billingInterval),
35107
- actionLabel: options.membershipActionLabel
35314
+ action: membership.purchaseAvailability === "purchasable" ? {
35315
+ kind: "purchase",
35316
+ label: options.membershipActionLabel,
35317
+ product: membership
35318
+ } : {
35319
+ kind: "unavailable",
35320
+ label: "Online purchasing is unavailable."
35321
+ }
35108
35322
  }));
35109
35323
  return {
35110
35324
  kind: "passes-memberships",
@@ -35256,6 +35470,7 @@ const shopSourceSchema = z$1.object({
35256
35470
  memberships: z$1.array(publicMembershipProductSchema).nullable().optional(),
35257
35471
  products: z$1.array(publicProductSchema).nullable().optional(),
35258
35472
  siteId: z$1.string().optional(),
35473
+ demoEmailSuppressed: z$1.boolean().optional(),
35259
35474
  apiBaseUrl: z$1.string().optional(),
35260
35475
  readAuthority: browserReadAuthoritySchema.optional(),
35261
35476
  stage: previewStageSchema.optional()
@@ -35323,7 +35538,14 @@ const membershipCardDisplaySchema = z$1.object({
35323
35538
  description: z$1.string().nullable(),
35324
35539
  priceLabel: z$1.string(),
35325
35540
  intervalLabel: z$1.string(),
35326
- actionLabel: z$1.string()
35541
+ action: z$1.discriminatedUnion("kind", [z$1.object({
35542
+ kind: z$1.literal("purchase"),
35543
+ label: z$1.string(),
35544
+ product: purchasablePublicMembershipProductSchema
35545
+ }), z$1.object({
35546
+ kind: z$1.literal("unavailable"),
35547
+ label: z$1.string()
35548
+ })])
35327
35549
  });
35328
35550
  const passesMembershipsDisplaySchema = z$1.object({
35329
35551
  kind: z$1.literal("passes-memberships"),
@@ -35375,7 +35597,8 @@ const checkoutDisplaySchema = z$1.object({
35375
35597
  const passesMembershipsHydrationSchema = z$1.object({
35376
35598
  memberships: z$1.array(publicMembershipProductSchema),
35377
35599
  passPurchaseMode: z$1.enum(["add_to_cart", "buy_now"]),
35378
- buttonVariant: blockButtonRoleSchema
35600
+ buttonVariant: blockButtonRoleSchema,
35601
+ demoEmailSuppressed: z$1.boolean().optional()
35379
35602
  });
35380
35603
  const productListHydrationSchema = z$1.object({
35381
35604
  products: z$1.array(publicProductSchema),
@@ -35397,7 +35620,8 @@ const cartHydrationSchema = z$1.object({
35397
35620
  });
35398
35621
  const checkoutHydrationSchema = z$1.object({
35399
35622
  emptyStateText: z$1.string(),
35400
- submitButtonText: z$1.string()
35623
+ submitButtonText: z$1.string(),
35624
+ demoEmailSuppressed: z$1.boolean().optional()
35401
35625
  });
35402
35626
  const passesMembershipsRenderSchema = z$1.object({
35403
35627
  display: passesMembershipsDisplaySchema,
@@ -35456,7 +35680,8 @@ const shopBlockRuntime = defineProgressiveBlockRuntime({
35456
35680
  hydration: {
35457
35681
  memberships: source.showMemberships === false ? [] : source.memberships ?? [],
35458
35682
  passPurchaseMode,
35459
- buttonVariant: source.buttonVariant ?? "primary"
35683
+ buttonVariant: source.buttonVariant ?? "primary",
35684
+ demoEmailSuppressed: source.demoEmailSuppressed
35460
35685
  }
35461
35686
  };
35462
35687
  }
@@ -35549,7 +35774,8 @@ const checkoutBlockRuntime = defineClientOwnedBlockRuntime({
35549
35774
  }),
35550
35775
  hydration: {
35551
35776
  emptyStateText: source.emptyStateText ?? "Add something to your cart to continue.",
35552
- submitButtonText: source.submitButtonText ?? "Checkout"
35777
+ submitButtonText: source.submitButtonText ?? "Checkout",
35778
+ demoEmailSuppressed: source.demoEmailSuppressed
35553
35779
  }
35554
35780
  })
35555
35781
  });
@@ -37218,6 +37444,7 @@ const SDK_EVENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
37218
37444
  responseKind: "json",
37219
37445
  errors: [
37220
37446
  "resource:not_found",
37447
+ "validation:invalid_input",
37221
37448
  "resource:conflict",
37222
37449
  "server:internal_error"
37223
37450
  ]
@@ -37672,28 +37899,6 @@ const EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
37672
37899
  "resource:conflict",
37673
37900
  "server:internal_error"
37674
37901
  ]
37675
- },
37676
- /**
37677
- * The Content tab's one write: the short introduction, image and
37678
- * description of an event's page, published without its layout.
37679
- */
37680
- saveEventPageWords: {
37681
- path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/words",
37682
- method: "PUT",
37683
- tags: [
37684
- TAG_TEMPLATES.siteCollection,
37685
- TAG_TEMPLATES.siteRoutableContent,
37686
- TAG_TEMPLATES.pageSurfaceById
37687
- ],
37688
- auth: "user",
37689
- responseKind: "json",
37690
- errors: [
37691
- "auth:forbidden",
37692
- "validation:invalid_input",
37693
- "resource:not_found",
37694
- "resource:conflict",
37695
- "server:internal_error"
37696
- ]
37697
37902
  }
37698
37903
  });
37699
37904
  //#endregion
@@ -38118,6 +38323,15 @@ const BILLING_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
38118
38323
  auth: "user",
38119
38324
  responseKind: "json"
38120
38325
  },
38326
+ /** Continue on Free from the onboarding card page; only the attempt's owner. */
38327
+ continueOnboardingOnFree: {
38328
+ path: "/onboarding/attempts/{attemptToken}/plan/free",
38329
+ method: "POST",
38330
+ tags: ["billing"],
38331
+ auth: "user",
38332
+ errors: [],
38333
+ responseKind: "json"
38334
+ },
38121
38335
  createBillingPortalSession: {
38122
38336
  path: "/billing/portal/session",
38123
38337
  method: "POST",
@@ -38127,6 +38341,161 @@ const BILLING_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
38127
38341
  }
38128
38342
  });
38129
38343
  //#endregion
38344
+ //#region ../api/src/editLeaseEndpoints.ts
38345
+ const path = "/sites/{siteId}/edit-leases/{nodeType}/{nodeId}";
38346
+ const lifecycleErrors = [
38347
+ "auth:lease_required",
38348
+ "auth:forbidden",
38349
+ "resource:not_found",
38350
+ "validation:invalid_input",
38351
+ "server:internal_error"
38352
+ ];
38353
+ const EDIT_LEASE_ENDPOINT_DEFINITIONS = {
38354
+ readEditLease: {
38355
+ path,
38356
+ method: "GET",
38357
+ editLease: "lifecycle",
38358
+ errors: lifecycleErrors,
38359
+ auth: "user",
38360
+ responseKind: "json"
38361
+ },
38362
+ acquireEditLease: {
38363
+ path,
38364
+ method: "POST",
38365
+ editLease: "lifecycle",
38366
+ errors: lifecycleErrors,
38367
+ auth: "user",
38368
+ responseKind: "json"
38369
+ },
38370
+ takeOverEditLease: {
38371
+ path,
38372
+ method: "PUT",
38373
+ editLease: "lifecycle",
38374
+ errors: lifecycleErrors,
38375
+ auth: "user",
38376
+ responseKind: "json"
38377
+ },
38378
+ heartbeatEditLease: {
38379
+ path,
38380
+ method: "PATCH",
38381
+ editLease: "lifecycle",
38382
+ errors: [...lifecycleErrors, "auth:lease_lost"],
38383
+ auth: "user",
38384
+ responseKind: "json"
38385
+ },
38386
+ releaseEditLease: {
38387
+ path,
38388
+ method: "DELETE",
38389
+ editLease: "lifecycle",
38390
+ errors: lifecycleErrors,
38391
+ auth: "user",
38392
+ responseKind: "json"
38393
+ }
38394
+ };
38395
+ //#endregion
38396
+ //#region ../api/src/pageSurfaceEditorEndpoints.ts
38397
+ const surfaceTags = [TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById];
38398
+ const PAGE_SURFACE_EDITOR_ENDPOINT_DEFINITIONS = {
38399
+ getPageSurfaceEditorDocument: {
38400
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/content",
38401
+ method: "GET",
38402
+ errors: [
38403
+ "auth:forbidden",
38404
+ "validation:invalid_input",
38405
+ "resource:not_found",
38406
+ "resource:conflict",
38407
+ "server:internal_error"
38408
+ ],
38409
+ tags: surfaceTags,
38410
+ auth: "user",
38411
+ responseKind: "json"
38412
+ },
38413
+ updatePageSurfaceDraftContent: {
38414
+ editLease: "managed",
38415
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/content",
38416
+ method: "PUT",
38417
+ errors: [
38418
+ "validation:invalid_input",
38419
+ "resource:not_found",
38420
+ "resource:conflict",
38421
+ "server:internal_error"
38422
+ ],
38423
+ tags: surfaceTags,
38424
+ auth: "user",
38425
+ responseKind: "json"
38426
+ },
38427
+ discardPageSurfaceDraftContent: {
38428
+ editLease: "managed",
38429
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/content/draft",
38430
+ method: "DELETE",
38431
+ errors: [
38432
+ "validation:invalid_input",
38433
+ "resource:not_found",
38434
+ "resource:conflict",
38435
+ "server:internal_error"
38436
+ ],
38437
+ tags: surfaceTags,
38438
+ auth: "user",
38439
+ responseKind: "json"
38440
+ },
38441
+ updatePageSurfaceRouteMetadata: {
38442
+ editLease: "managed",
38443
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/metadata",
38444
+ method: "PATCH",
38445
+ errors: [
38446
+ "validation:invalid_input",
38447
+ "resource:not_found",
38448
+ "resource:conflict",
38449
+ "server:internal_error"
38450
+ ],
38451
+ tags: [
38452
+ TAG_TEMPLATES.siteCollection,
38453
+ TAG_TEMPLATES.siteRoutableContent,
38454
+ TAG_TEMPLATES.pageSurfaceById
38455
+ ],
38456
+ auth: "user",
38457
+ responseKind: "json"
38458
+ },
38459
+ publishPageSurface: {
38460
+ editLease: "managed",
38461
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/publication",
38462
+ method: "POST",
38463
+ errors: [
38464
+ "auth:forbidden",
38465
+ "validation:invalid_input",
38466
+ "resource:not_found",
38467
+ "resource:conflict",
38468
+ "server:internal_error"
38469
+ ],
38470
+ tags: [
38471
+ TAG_TEMPLATES.siteCollection,
38472
+ TAG_TEMPLATES.siteRoutableContent,
38473
+ TAG_TEMPLATES.pageSurfaceById
38474
+ ],
38475
+ auth: "user",
38476
+ responseKind: "json"
38477
+ },
38478
+ saveEventContentTab: {
38479
+ editLease: "managed",
38480
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/event-content",
38481
+ method: "PUT",
38482
+ errors: [
38483
+ "auth:forbidden",
38484
+ "validation:invalid_input",
38485
+ "resource:not_found",
38486
+ "resource:conflict",
38487
+ "server:internal_error"
38488
+ ],
38489
+ tags: [
38490
+ TAG_TEMPLATES.siteCollection,
38491
+ TAG_TEMPLATES.siteRoutableContent,
38492
+ TAG_TEMPLATES.pageSurfaceById
38493
+ ],
38494
+ auth: "user",
38495
+ responseKind: "json"
38496
+ }
38497
+ };
38498
+ //#endregion
38130
38499
  //#region ../api/src/bookingPeopleEndpointDefinitions.ts
38131
38500
  /**
38132
38501
  * People endpoints (#1356): the People list, its CSV export, and deleting a
@@ -38190,7 +38559,8 @@ const CLIENT_ERROR_REPORT_LIMITS = {
38190
38559
  stack: 8e3,
38191
38560
  digest: 128,
38192
38561
  componentStack: 8e3,
38193
- sourceLocation: 1024
38562
+ sourceLocation: 1024,
38563
+ navigationAgeMs: 6e4
38194
38564
  };
38195
38565
  const clientErrorEventSchema = z$1.enum([
38196
38566
  "dashboard:route-error",
@@ -38207,7 +38577,17 @@ z$1.object({
38207
38577
  stack: z$1.string().max(CLIENT_ERROR_REPORT_LIMITS.stack).nullable(),
38208
38578
  digest: z$1.string().max(CLIENT_ERROR_REPORT_LIMITS.digest).nullable(),
38209
38579
  componentStack: z$1.string().max(CLIENT_ERROR_REPORT_LIMITS.componentStack).nullable(),
38210
- sourceLocation: z$1.string().max(CLIENT_ERROR_REPORT_LIMITS.sourceLocation).nullable()
38580
+ sourceLocation: z$1.string().max(CLIENT_ERROR_REPORT_LIMITS.sourceLocation).nullable(),
38581
+ navigation: z$1.object({
38582
+ fromPathname: z$1.string().regex(/^\/[^?#]*$/).max(CLIENT_ERROR_REPORT_LIMITS.pathname),
38583
+ toPathname: z$1.string().regex(/^\/[^?#]*$/).max(CLIENT_ERROR_REPORT_LIMITS.pathname),
38584
+ type: z$1.enum([
38585
+ "push",
38586
+ "replace",
38587
+ "traverse"
38588
+ ]),
38589
+ ageMs: z$1.number().int().min(0).max(CLIENT_ERROR_REPORT_LIMITS.navigationAgeMs)
38590
+ }).strict().nullable().optional()
38211
38591
  }).strict();
38212
38592
  const API_ENDPOINTS$1 = {
38213
38593
  ...SITE_LIFECYCLE_ENDPOINT_DEFINITIONS,
@@ -38219,6 +38599,8 @@ const API_ENDPOINTS$1 = {
38219
38599
  ...GIFTING_ENDPOINT_DEFINITIONS,
38220
38600
  ...PUBLIC_READ_ENDPOINT_DEFINITIONS,
38221
38601
  ...BILLING_ENDPOINT_DEFINITIONS,
38602
+ ...EDIT_LEASE_ENDPOINT_DEFINITIONS,
38603
+ ...PAGE_SURFACE_EDITOR_ENDPOINT_DEFINITIONS,
38222
38604
  ...SITE_MANAGEMENT_ENDPOINT_DEFINITIONS,
38223
38605
  aiContentUpdateChat: {
38224
38606
  path: "/ai/content-update-chat",
@@ -38240,6 +38622,7 @@ const API_ENDPOINTS$1 = {
38240
38622
  responseKind: "json"
38241
38623
  },
38242
38624
  aiDesignerPageOpsApply: {
38625
+ editLease: "managed",
38243
38626
  path: "/sites/{siteId}/ai/designer/page/apply",
38244
38627
  method: "POST",
38245
38628
  tags: [TAG_TEMPLATES.siteCollection],
@@ -39074,6 +39457,7 @@ const API_ENDPOINTS$1 = {
39074
39457
  responseKind: "json"
39075
39458
  },
39076
39459
  restoreContentEntryVersion: {
39460
+ editLease: "managed",
39077
39461
  path: "/sites/{siteId}/content/{type}/{entryId}/versions/{versionId}/restore",
39078
39462
  method: "POST",
39079
39463
  errors: [
@@ -39091,6 +39475,7 @@ const API_ENDPOINTS$1 = {
39091
39475
  responseKind: "json"
39092
39476
  },
39093
39477
  updateContentEntryContent: {
39478
+ editLease: "managed",
39094
39479
  path: "/sites/{siteId}/content/{type}/{entryId}/content",
39095
39480
  method: "PUT",
39096
39481
  tags: [
@@ -39107,67 +39492,6 @@ const API_ENDPOINTS$1 = {
39107
39492
  ],
39108
39493
  responseKind: "json"
39109
39494
  },
39110
- updatePageSurfaceDraftContent: {
39111
- path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/content",
39112
- method: "PUT",
39113
- errors: [
39114
- "validation:invalid_input",
39115
- "resource:not_found",
39116
- "resource:conflict",
39117
- "server:internal_error"
39118
- ],
39119
- tags: [TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById],
39120
- auth: "user",
39121
- responseKind: "json"
39122
- },
39123
- discardPageSurfaceDraftContent: {
39124
- path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/content/draft",
39125
- method: "DELETE",
39126
- errors: [
39127
- "validation:invalid_input",
39128
- "resource:not_found",
39129
- "resource:conflict",
39130
- "server:internal_error"
39131
- ],
39132
- tags: [TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById],
39133
- auth: "user",
39134
- responseKind: "json"
39135
- },
39136
- updatePageSurfaceRouteMetadata: {
39137
- path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/metadata",
39138
- method: "PATCH",
39139
- errors: [
39140
- "validation:invalid_input",
39141
- "resource:not_found",
39142
- "resource:conflict",
39143
- "server:internal_error"
39144
- ],
39145
- tags: [
39146
- TAG_TEMPLATES.siteCollection,
39147
- TAG_TEMPLATES.siteRoutableContent,
39148
- TAG_TEMPLATES.pageSurfaceById
39149
- ],
39150
- auth: "user",
39151
- responseKind: "json"
39152
- },
39153
- publishPageSurface: {
39154
- path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/publication",
39155
- method: "POST",
39156
- errors: [
39157
- "auth:forbidden",
39158
- "validation:invalid_input",
39159
- "resource:not_found",
39160
- "resource:conflict",
39161
- "server:internal_error"
39162
- ],
39163
- tags: [
39164
- TAG_TEMPLATES.siteCollection,
39165
- TAG_TEMPLATES.siteRoutableContent,
39166
- TAG_TEMPLATES.pageSurfaceById
39167
- ],
39168
- auth: "user",
39169
- responseKind: "json"
39170
- },
39171
39495
  runSdkWorkflow: {
39172
39496
  path: "/sites/{siteId}/content/{type}/{entryId}/workflows/{workflowId}/run",
39173
39497
  method: "POST",
@@ -39204,6 +39528,7 @@ const API_ENDPOINTS$1 = {
39204
39528
  responseKind: "json"
39205
39529
  },
39206
39530
  updateRouteMetadata: {
39531
+ editLease: "managed",
39207
39532
  path: "/sites/{siteId}/routes/{routeId}/metadata",
39208
39533
  method: "PATCH",
39209
39534
  tags: [
@@ -39221,6 +39546,7 @@ const API_ENDPOINTS$1 = {
39221
39546
  responseKind: "json"
39222
39547
  },
39223
39548
  publishContentEntry: {
39549
+ editLease: "managed",
39224
39550
  path: "/sites/{siteId}/content/{type}/{entryId}/publish",
39225
39551
  method: "POST",
39226
39552
  tags: [
@@ -39232,6 +39558,7 @@ const API_ENDPOINTS$1 = {
39232
39558
  responseKind: "json"
39233
39559
  },
39234
39560
  scheduleContentEntry: {
39561
+ editLease: "managed",
39235
39562
  path: "/sites/{siteId}/content/{type}/{entryId}/schedule",
39236
39563
  method: "POST",
39237
39564
  tags: [
@@ -39249,6 +39576,7 @@ const API_ENDPOINTS$1 = {
39249
39576
  responseKind: "json"
39250
39577
  },
39251
39578
  cancelScheduledContentEntry: {
39579
+ editLease: "managed",
39252
39580
  path: "/sites/{siteId}/content/{type}/{entryId}/schedule",
39253
39581
  method: "DELETE",
39254
39582
  tags: [
@@ -39266,6 +39594,7 @@ const API_ENDPOINTS$1 = {
39266
39594
  responseKind: "json"
39267
39595
  },
39268
39596
  discardContentEntry: {
39597
+ editLease: "managed",
39269
39598
  path: "/sites/{siteId}/content/{type}/{entryId}/discard",
39270
39599
  method: "POST",
39271
39600
  tags: [
@@ -39284,6 +39613,7 @@ const API_ENDPOINTS$1 = {
39284
39613
  responseKind: "json"
39285
39614
  },
39286
39615
  unpublishContentEntry: {
39616
+ editLease: "managed",
39287
39617
  path: "/sites/{siteId}/content/{type}/{entryId}/unpublish",
39288
39618
  method: "POST",
39289
39619
  tags: [
@@ -39325,6 +39655,7 @@ const API_ENDPOINTS$1 = {
39325
39655
  responseKind: "json"
39326
39656
  },
39327
39657
  deleteContentEntry: {
39658
+ editLease: "managed",
39328
39659
  path: "/sites/{siteId}/content/{type}/{entryId}",
39329
39660
  method: "DELETE",
39330
39661
  tags: [
@@ -40534,6 +40865,7 @@ const API_ENDPOINTS$1 = {
40534
40865
  responseKind: "json"
40535
40866
  },
40536
40867
  saveBlockContent: {
40868
+ editLease: "owner-derived",
40537
40869
  path: "/blocks/{blockId}/content",
40538
40870
  method: "POST",
40539
40871
  tags: [
@@ -40571,6 +40903,7 @@ const API_ENDPOINTS$1 = {
40571
40903
  errors: ["resource:not_found", "resource:conflict"]
40572
40904
  },
40573
40905
  createEntrySlotBlock: {
40906
+ editLease: "managed",
40574
40907
  path: "/sites/{siteId}/content/{type}/{entryId}/slots/{slotKey}/blocks",
40575
40908
  method: "POST",
40576
40909
  tags: [
@@ -40588,6 +40921,7 @@ const API_ENDPOINTS$1 = {
40588
40921
  ]
40589
40922
  },
40590
40923
  reorderEntrySlotBlocks: {
40924
+ editLease: "managed",
40591
40925
  path: "/sites/{siteId}/content/{type}/{entryId}/slots/{slotKey}/blocks/reorder",
40592
40926
  method: "POST",
40593
40927
  tags: [
@@ -40605,6 +40939,7 @@ const API_ENDPOINTS$1 = {
40605
40939
  ]
40606
40940
  },
40607
40941
  deleteEntrySlotBlock: {
40942
+ editLease: "managed",
40608
40943
  path: "/sites/{siteId}/content/{type}/{entryId}/slots/{slotKey}/blocks/{blockId}",
40609
40944
  method: "DELETE",
40610
40945
  tags: [
@@ -40635,6 +40970,7 @@ const API_ENDPOINTS$1 = {
40635
40970
  ]
40636
40971
  },
40637
40972
  createPageSurfaceSlotBlock: {
40973
+ editLease: "managed",
40638
40974
  path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/slots/{slotKey}/blocks",
40639
40975
  method: "POST",
40640
40976
  tags: [
@@ -40653,6 +40989,7 @@ const API_ENDPOINTS$1 = {
40653
40989
  ]
40654
40990
  },
40655
40991
  reorderPageSurfaceSlotBlocks: {
40992
+ editLease: "managed",
40656
40993
  path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/slots/{slotKey}/blocks/reorder",
40657
40994
  method: "POST",
40658
40995
  tags: [
@@ -40671,6 +41008,7 @@ const API_ENDPOINTS$1 = {
40671
41008
  ]
40672
41009
  },
40673
41010
  deletePageSurfaceSlotBlock: {
41011
+ editLease: "managed",
40674
41012
  path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/slots/{slotKey}/blocks/{blockId}",
40675
41013
  method: "DELETE",
40676
41014
  tags: [
@@ -40688,6 +41026,7 @@ const API_ENDPOINTS$1 = {
40688
41026
  ]
40689
41027
  },
40690
41028
  createBlock: {
41029
+ editLease: "managed",
40691
41030
  path: "/sites/{siteId}/pages/{pageId}/blocks",
40692
41031
  method: "POST",
40693
41032
  tags: [
@@ -40699,6 +41038,7 @@ const API_ENDPOINTS$1 = {
40699
41038
  responseKind: "json"
40700
41039
  },
40701
41040
  reorderBlocks: {
41041
+ editLease: "managed",
40702
41042
  path: "/sites/{siteId}/pages/{pageId}/blocks/reorder",
40703
41043
  method: "POST",
40704
41044
  tags: [
@@ -40710,6 +41050,7 @@ const API_ENDPOINTS$1 = {
40710
41050
  responseKind: "json"
40711
41051
  },
40712
41052
  deleteBlock: {
41053
+ editLease: "managed",
40713
41054
  path: "/sites/{siteId}/pages/{pageId}/blocks/{blockId}",
40714
41055
  method: "DELETE",
40715
41056
  tags: [
@@ -40755,6 +41096,7 @@ const API_ENDPOINTS$1 = {
40755
41096
  responseKind: "json"
40756
41097
  },
40757
41098
  publishPageDraft: {
41099
+ editLease: "managed",
40758
41100
  path: "/sites/{siteId}/pages/{pageId}/publish",
40759
41101
  method: "POST",
40760
41102
  tags: [TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById],
@@ -40762,6 +41104,7 @@ const API_ENDPOINTS$1 = {
40762
41104
  responseKind: "json"
40763
41105
  },
40764
41106
  discardPageDraft: {
41107
+ editLease: "managed",
40765
41108
  path: "/sites/{siteId}/pages/{pageId}/discard",
40766
41109
  method: "POST",
40767
41110
  tags: [TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById],
@@ -40777,6 +41120,7 @@ const API_ENDPOINTS$1 = {
40777
41120
  errors: ["resource:not_found", "server:internal_error"]
40778
41121
  },
40779
41122
  savePageDesignState: {
41123
+ editLease: "managed",
40780
41124
  path: "/sites/{siteId}/pages/{pageId}/design-state",
40781
41125
  method: "POST",
40782
41126
  tags: [TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById],
@@ -40806,6 +41150,7 @@ const API_ENDPOINTS$1 = {
40806
41150
  responseKind: "json"
40807
41151
  },
40808
41152
  restorePageVersion: {
41153
+ editLease: "managed",
40809
41154
  path: "/sites/{siteId}/pages/{pageId}/versions/{versionId}/restore",
40810
41155
  method: "POST",
40811
41156
  errors: [
@@ -40819,6 +41164,7 @@ const API_ENDPOINTS$1 = {
40819
41164
  responseKind: "json"
40820
41165
  },
40821
41166
  applyPageDesignEditorAction: {
41167
+ editLease: "managed",
40822
41168
  path: "/sites/{siteId}/pages/{pageId}/design/actions",
40823
41169
  method: "POST",
40824
41170
  tags: [TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById],
@@ -41998,24 +42344,6 @@ const API_ENDPOINTS$1 = {
41998
42344
  "server:internal_error"
41999
42345
  ]
42000
42346
  },
42001
- syncBookingPassWithStripe: {
42002
- path: "/sites/{siteId}/bookings/passes/{passId}/sync-stripe",
42003
- method: "POST",
42004
- tags: [
42005
- "site-{siteId}",
42006
- "passes-{siteId}",
42007
- "pass-{passId}"
42008
- ],
42009
- auth: "user",
42010
- responseKind: "json",
42011
- errors: [
42012
- "validation:invalid_input",
42013
- "auth:forbidden",
42014
- "resource:not_found",
42015
- "resource:conflict",
42016
- "server:internal_error"
42017
- ]
42018
- },
42019
42347
  refundCustomerPass: {
42020
42348
  path: "/sites/{siteId}/bookings/customer-passes/{customerPassId}/refund",
42021
42349
  method: "POST",
@@ -43479,7 +43807,7 @@ const API_ENDPOINTS$1 = {
43479
43807
  ]
43480
43808
  },
43481
43809
  cancelFlexibleBalanceBookingDueToNonPayment: {
43482
- path: "/sites/{siteId}/shop/orders/{orderId}/items/{orderItemId}/flexible-balance/cancel-due-to-non-payment",
43810
+ path: "/sites/{siteId}/shop/orders/{orderId}/flexible-balance/cancel-due-to-non-payment",
43483
43811
  method: "POST",
43484
43812
  auth: "user",
43485
43813
  responseKind: "json",
@@ -43490,7 +43818,7 @@ const API_ENDPOINTS$1 = {
43490
43818
  ]
43491
43819
  },
43492
43820
  reopenFlexibleBalanceBookingAfterNonPaymentCancellation: {
43493
- path: "/sites/{siteId}/shop/orders/{orderId}/items/{orderItemId}/flexible-balance/reopen",
43821
+ path: "/sites/{siteId}/shop/orders/{orderId}/flexible-balance/reopen",
43494
43822
  method: "POST",
43495
43823
  auth: "user",
43496
43824
  responseKind: "json",
@@ -43584,6 +43912,8 @@ const API_ERROR_CODE_SET = /* @__PURE__ */ new Set([
43584
43912
  "auth:sudo_required",
43585
43913
  "auth:insufficient_permissions",
43586
43914
  "auth:impersonation_restricted",
43915
+ "auth:lease_required",
43916
+ "auth:lease_lost",
43587
43917
  "validation:invalid_input",
43588
43918
  "validation:missing_field",
43589
43919
  "validation:invalid_format",
@@ -48800,14 +49130,7 @@ function renderEventListItem(event, display) {
48800
49130
  }, event.occurrenceId || event.id);
48801
49131
  return /* @__PURE__ */ jsx(EventCard, {
48802
49132
  event,
48803
- cardRole: display.cardRole,
48804
- buttonVariant: display.buttonVariant,
48805
- buttonText: display.buttonText,
48806
- showVenue: display.showVenue,
48807
- showMap: display.showMap,
48808
- allowMap: false,
48809
- showCapacity: display.showCapacity,
48810
- orientation: display.orientation
49133
+ ...listingEventCardProps(display)
48811
49134
  }, event.occurrenceId || event.id);
48812
49135
  }
48813
49136
  //#endregion
@@ -49213,14 +49536,7 @@ function OfferingsCatalogue(props) {
49213
49536
  style: { gridTemplateColumns: "repeat(auto-fill, minmax(min(100%, 18rem), 1fr))" },
49214
49537
  children: events.map((event) => /* @__PURE__ */ jsx(EventCard, {
49215
49538
  event,
49216
- presentation: "catalogue",
49217
- headingLevel: 4,
49218
- buttonVariant: props.buttonVariant ?? "primary",
49219
- buttonText: event.bookingScope === "single_occurrence" ? "See dates" : void 0,
49220
- showMap: false,
49221
- allowMap: false,
49222
- showCategory: false,
49223
- orientation: "vertical"
49539
+ ...catalogueEventCardProps(event, props.buttonVariant ?? "primary")
49224
49540
  }, event.seriesId))
49225
49541
  })]
49226
49542
  }, group.sourceKey))
@@ -49508,45 +49824,73 @@ function FeaturedOfferingSummary({ item }) {
49508
49824
  }
49509
49825
  function featuredSummaryDetails(item) {
49510
49826
  switch (item.kind) {
49511
- case "event": return formatFeaturedSummary(deriveEventScheduleSummary(item.event), item.event.venue?.name ?? null);
49827
+ case "event": return formatFeaturedSummary(deriveEventScheduleSummary(item.event), {
49828
+ venue: item.event.venue?.name ?? null,
49829
+ siteTimeZone: item.event.siteTimeZone
49830
+ });
49512
49831
  case "run": {
49513
49832
  const schedule = derivePreviewRunSchedule(item.run.run.sessions);
49514
- return schedule.kind === "scheduled" ? formatFeaturedSummary(schedule.summary, item.run.representative.venue?.name ?? null) : null;
49833
+ return schedule.kind === "scheduled" ? formatFeaturedSummary(schedule.summary, {
49834
+ venue: item.run.representative.venue?.name ?? null,
49835
+ siteTimeZone: item.run.representative.siteTimeZone
49836
+ }) : null;
49515
49837
  }
49516
49838
  default: return assertNever$20(item, "Unhandled offerings preview item");
49517
49839
  }
49518
49840
  }
49519
- function formatFeaturedSummary(summary, venue) {
49841
+ function formatFeaturedSummary(summary, place) {
49520
49842
  switch (summary.kind) {
49521
- case "single-occurrence": return detailsFromOccurrences(summary.occurrence, null, venue, null, null);
49522
- case "multi-day-span": return detailsFromOccurrences(summary.occurrence, summary.occurrence, venue, null, null, true);
49523
- case "fixed-recurring-run": return detailsFromOccurrences(summary.first, summary.last, venue, summary.recurrenceLabel, null);
49524
- case "irregular-multi-session-run": return detailsFromOccurrences(summary.first, summary.last, venue, null, `${summary.sessionCount} dates`);
49843
+ case "single-occurrence": return detailsFromOccurrences({
49844
+ first: summary.occurrence,
49845
+ last: null,
49846
+ place
49847
+ });
49848
+ case "multi-day-span": return detailsFromOccurrences({
49849
+ first: summary.occurrence,
49850
+ last: summary.occurrence,
49851
+ place,
49852
+ spanUsesEndDate: true
49853
+ });
49854
+ case "fixed-recurring-run": return detailsFromOccurrences({
49855
+ first: summary.first,
49856
+ last: summary.last,
49857
+ place,
49858
+ recurrence: summary.recurrenceLabel
49859
+ });
49860
+ case "irregular-multi-session-run": return detailsFromOccurrences({
49861
+ first: summary.first,
49862
+ last: summary.last,
49863
+ place,
49864
+ sessionCount: `${summary.sessionCount} dates`
49865
+ });
49525
49866
  default: return assertNever$20(summary, "Unhandled offerings preview schedule summary");
49526
49867
  }
49527
49868
  }
49528
- function detailsFromOccurrences(first, last, venue, recurrence, sessionCount, spanUsesEndDate = false) {
49529
- const endDateTime = spanUsesEndDate ? first.endsAt : last?.startsAt ?? first.startsAt;
49869
+ function detailsFromOccurrences(input) {
49870
+ const { first, last, place } = input;
49871
+ const endDateTime = input.spanUsesEndDate ? first.endsAt : last?.startsAt ?? first.startsAt;
49872
+ const options = eventDateOptions({
49873
+ timeZone: first.timeZone,
49874
+ siteTimeZone: place.siteTimeZone
49875
+ });
49876
+ const summaryDate = (isoTimestamp, timeZone) => formatSummaryDate(isoTimestamp, {
49877
+ timeZone,
49878
+ locale: options.locale
49879
+ });
49530
49880
  return {
49531
- startDate: formatSummaryDate(first.startsAt, first.timeZone),
49881
+ startDate: summaryDate(first.startsAt, first.timeZone),
49532
49882
  startDateTime: first.startsAt,
49533
- endDate: last ? formatSummaryDate(endDateTime, last.timeZone) : null,
49883
+ endDate: last ? summaryDate(endDateTime, last.timeZone) : null,
49534
49884
  endDateTime,
49535
- timeRange: `${formatTime(first.startsAt, {
49536
- timeZone: first.timeZone,
49537
- locale: "en-GB"
49538
- })} – ${formatTime(first.endsAt, {
49539
- timeZone: first.timeZone,
49540
- locale: "en-GB"
49541
- })}`,
49542
- recurrence,
49543
- sessionCount,
49544
- venue
49545
- };
49546
- }
49547
- function formatSummaryDate(isoTimestamp, timeZone) {
49548
- return new Intl.DateTimeFormat("en-GB", {
49549
- timeZone,
49885
+ timeRange: formatEventTimeRange$1(first, options),
49886
+ recurrence: input.recurrence ?? null,
49887
+ sessionCount: input.sessionCount ?? null,
49888
+ venue: place.venue
49889
+ };
49890
+ }
49891
+ function formatSummaryDate(isoTimestamp, options) {
49892
+ return new Intl.DateTimeFormat(options.locale, {
49893
+ timeZone: options.timeZone,
49550
49894
  weekday: "long",
49551
49895
  day: "numeric",
49552
49896
  month: "long",
@@ -49593,9 +49937,12 @@ function WholeSeriesRunCompactRow({ group, path, now }) {
49593
49937
  path
49594
49938
  });
49595
49939
  const { sessionCount: sessionsCount, firstSession } = schedule;
49596
- const timeZone = firstSession.timeZone;
49597
- const dateRail = formatEventCompactDateRail(firstSession.startsAt, { timeZone });
49598
- const timeRange = `${formatTime(firstSession.startsAt, { timeZone })} - ${formatTime(firstSession.endsAt, { timeZone })}`;
49940
+ const options = eventDateOptions({
49941
+ timeZone: firstSession.timeZone,
49942
+ siteTimeZone: group.representative.siteTimeZone
49943
+ });
49944
+ const dateRail = formatEventCompactDateRail(firstSession.startsAt, options);
49945
+ const timeRange = formatEventTimeRange$1(firstSession, options);
49599
49946
  const price = formatEventPriceDisplay(group.representative.pricing);
49600
49947
  const statusLabel = resolveWholeSeriesBookingPhase(group.run, now).kind === "open" ? null : "Registration closed";
49601
49948
  return /* @__PURE__ */ jsxs("article", {
@@ -49675,9 +50022,12 @@ function WholeSeriesRunFeatureCard({ group, now, path, buttonVariant, buttonText
49675
50022
  path
49676
50023
  });
49677
50024
  const { firstSession } = schedule;
49678
- const timeZone = firstSession.timeZone;
49679
- const formattedDate = formatEventCompactDateRail(firstSession.startsAt, { timeZone }).label;
49680
- const timeRange = `${formatTime(firstSession.startsAt, { timeZone })} - ${formatTime(firstSession.endsAt, { timeZone })}`;
50025
+ const options = eventDateOptions({
50026
+ timeZone: firstSession.timeZone,
50027
+ siteTimeZone: group.representative.siteTimeZone
50028
+ });
50029
+ const formattedDate = formatEventCompactDateRail(firstSession.startsAt, options).label;
50030
+ const timeRange = formatEventTimeRange$1(firstSession, options);
49681
50031
  const price = formatEventPriceDisplay(group.representative.pricing);
49682
50032
  const statusLabel = resolveWholeSeriesBookingPhase(group.run, now).kind === "open" ? null : "Registration closed";
49683
50033
  const description = group.representative.description;
@@ -50135,6 +50485,10 @@ const checkoutBlockDefinition = {
50135
50485
  baseClass: "",
50136
50486
  spacing: "spacious",
50137
50487
  children: sectionContainer([checkout(withApiBindings({
50488
+ demoEmailSuppressed: { $bind: {
50489
+ from: "$root.demoEmailSuppressed",
50490
+ fallback: false
50491
+ } },
50138
50492
  readAuthority: { $bind: { from: "$root.readAuthority" } },
50139
50493
  mode: "checkout",
50140
50494
  heading: { $bind: {
@@ -50390,8 +50744,8 @@ const eventRegistrationBlockDefinition = {
50390
50744
  description: "Message shown after successful registration",
50391
50745
  required: false,
50392
50746
  multiline: true,
50393
- defaultValue: "Thank you for registering! Check your email for confirmation details.",
50394
- maxLength: 500
50747
+ maxLength: 500,
50748
+ ui: { placeholder: "Thank you for registering! Check your email for confirmation details." }
50395
50749
  },
50396
50750
  {
50397
50751
  id: "buttonText",
@@ -50412,6 +50766,10 @@ const eventRegistrationBlockDefinition = {
50412
50766
  text({ as: "h2" }, bind("content.heading"), when("content.heading")),
50413
50767
  richText({ className: "rb-prose rb-max-w-none" }, bind("content.description"), when("content.description")),
50414
50768
  eventRegistration(withApiBindings({
50769
+ demoEmailSuppressed: { $bind: {
50770
+ from: "$root.demoEmailSuppressed",
50771
+ fallback: false
50772
+ } },
50415
50773
  readAuthority: { $bind: { from: "$root.readAuthority" } },
50416
50774
  occurrenceContext: { $bind: { from: "$root.occurrenceContext" } },
50417
50775
  subject: { $bind: { from: "$root.subject" } },
@@ -52699,6 +53057,10 @@ const shopBlockDefinition = {
52699
53057
  spacing: "spacious",
52700
53058
  children: sectionContainer([shop(withApiBindings({
52701
53059
  readAuthority: { $bind: { from: "$root.readAuthority" } },
53060
+ demoEmailSuppressed: { $bind: {
53061
+ from: "$root.demoEmailSuppressed",
53062
+ fallback: false
53063
+ } },
52702
53064
  mode: "passes-memberships",
52703
53065
  showPasses: { $bind: {
52704
53066
  from: "content.showPasses",
@@ -53189,11 +53551,12 @@ function CartSSR({ blockId, siteId, apiBaseUrl, stage, children, ...rest }) {
53189
53551
  }
53190
53552
  //#endregion
53191
53553
  //#region ../blocks/src/system/runtime/nodes/checkout.server.tsx
53192
- function CheckoutSSR({ blockId, siteId, apiBaseUrl, stage, children, ...rest }) {
53554
+ function CheckoutSSR({ blockId, siteId, apiBaseUrl, stage, demoEmailSuppressed, children, ...rest }) {
53193
53555
  const islandProps = buildCheckoutInteractiveIslandProps({
53194
53556
  siteId,
53195
53557
  apiBaseUrl,
53196
53558
  stage,
53559
+ demoEmailSuppressed,
53197
53560
  ...rest
53198
53561
  });
53199
53562
  return /* @__PURE__ */ jsxs("div", {
@@ -55000,11 +55363,11 @@ function ShopSSR({ blockId, siteId, apiBaseUrl, stage, children, checkoutEndpoin
55000
55363
  }, pass.id)),
55001
55364
  membershipCards: render.display.memberships.map((membership) => /* @__PURE__ */ jsx(MembershipCardView, {
55002
55365
  display: membership,
55003
- action: /* @__PURE__ */ jsx(ThemedButton, {
55366
+ action: membership.action.kind === "unavailable" ? /* @__PURE__ */ jsx(PassPurchaseUnavailable, { label: membership.action.label }) : /* @__PURE__ */ jsx(ThemedButton, {
55004
55367
  type: "button",
55005
55368
  variant: render.hydration.buttonVariant,
55006
55369
  size: "md",
55007
- label: membership.actionLabel,
55370
+ label: membership.action.label,
55008
55371
  disabled: true,
55009
55372
  "aria-disabled": "true"
55010
55373
  })
@@ -59389,6 +59752,7 @@ function buildPageRendererRootRuntime(dataContext) {
59389
59752
  const { siteId = null, siteName, pageId = null, pathname = null, bookingTimeZone, previewStage = "published", apiBaseUrl = null, portalToken = null, readAuthority, bookingOfferingPresets = [], appointmentServicePathPrefix = null, mailingList = { tag: "not_configured" }, eventRegistrationOverlayEnabled = false, loaderFailures = {} } = dataContext ?? {};
59390
59753
  return {
59391
59754
  siteId,
59755
+ demoEmailSuppressed: resolveDemoEmailSuppression(dataContext),
59392
59756
  siteName,
59393
59757
  pageId,
59394
59758
  pathname,
@@ -59404,6 +59768,9 @@ function buildPageRendererRootRuntime(dataContext) {
59404
59768
  loaderFailures
59405
59769
  };
59406
59770
  }
59771
+ function resolveDemoEmailSuppression(dataContext) {
59772
+ return dataContext?.demoEmailSuppressed === true;
59773
+ }
59407
59774
  //#endregion
59408
59775
  //#region ../blocks/src/pageRenderAudience.tsx
59409
59776
  /**
@@ -63887,6 +64254,10 @@ const bookingDescription = richText({}, bind("content.description"), when("conte
63887
64254
  * that hydration never rewrites.
63888
64255
  */
63889
64256
  const bookingWizard = bookingForm(withApiBindings({
64257
+ demoEmailSuppressed: { $bind: {
64258
+ from: "$root.demoEmailSuppressed",
64259
+ fallback: false
64260
+ } },
63890
64261
  portalToken: { $bind: {
63891
64262
  from: "$root.portalToken",
63892
64263
  fallback: null
@@ -69000,15 +69371,17 @@ function planNewsletterBlockSubmission(placement) {
69000
69371
  sourceRef
69001
69372
  } : { tag: "unavailable" };
69002
69373
  }
69003
- if (placement.publishedPlacement && "kind" in placement.publishedPlacement) return { tag: "unpublished-settings" };
69004
- if (placement.publishedPlacement) return planNewsletterPreviewSubmission({
69005
- blockId: placement.blockId,
69006
- publishedContentId: placement.publishedPlacement.id,
69007
- renderedContent: placement.renderedContent,
69008
- publishedContent: placement.publishedPlacement.content
69009
- });
69010
- if (placement.stage === "preview") return { tag: "unpublished-form" };
69011
- return { tag: "unavailable" };
69374
+ const published = placement.publishedPlacement;
69375
+ if (published === null) return placement.stage === "preview" ? { tag: "unpublished-form" } : { tag: "unavailable" };
69376
+ switch (published.kind) {
69377
+ case "incomplete": return { tag: "unpublished-settings" };
69378
+ case "published": return planNewsletterPreviewSubmission({
69379
+ blockId: placement.blockId,
69380
+ publishedContentId: published.id,
69381
+ renderedContent: placement.renderedContent,
69382
+ publishedContent: published.content
69383
+ });
69384
+ }
69012
69385
  }
69013
69386
  /** Decide whether the visible draft can safely cite the published placement. */
69014
69387
  function planNewsletterPreviewSubmission(placement) {
@@ -69255,19 +69628,6 @@ function createBlockErrorBoundary() {
69255
69628
  const BlockErrorBoundary = createBlockErrorBoundary();
69256
69629
  //#endregion
69257
69630
  //#region ../blocks/src/pageRenderAdmission.ts
69258
- /** Pair a published version with the content it authorises at the render boundary. */
69259
- function readPublishedBlockPlacement(id, content) {
69260
- if (id == null && content == null) return null;
69261
- if (id == null || content == null) return {
69262
- kind: "incomplete",
69263
- id: id ?? null,
69264
- content: content ?? null
69265
- };
69266
- return {
69267
- id,
69268
- content
69269
- };
69270
- }
69271
69631
  function toPresentationPage(page) {
69272
69632
  if (!page) return null;
69273
69633
  return {
@@ -85517,14 +85877,14 @@ async function parseSuccessResponse(endpoint, response, config) {
85517
85877
  default: return buildSuccessEnvelope(void 0, requestId);
85518
85878
  }
85519
85879
  }
85520
- function createRawCMSClient(headers = {}, baseUrl) {
85880
+ function createRawCMSClient(getHeaders = () => ({}), baseUrl) {
85521
85881
  return ({ endpoint, body, params, options = {} }) => {
85522
85882
  const plan = buildApiRequestPlan({
85523
85883
  endpoint,
85524
85884
  body,
85525
85885
  params,
85526
85886
  options,
85527
- headers,
85887
+ headers: getHeaders(),
85528
85888
  baseUrl: normalizeCmsApiBaseUrl(baseUrl ?? resolveApiBaseUrl()),
85529
85889
  sdkVersion
85530
85890
  });
@@ -85630,13 +85990,13 @@ function createParsedClient(rawClient) {
85630
85990
  };
85631
85991
  }
85632
85992
  function createCMSClient(headers = {}, baseUrl) {
85633
- return createParsedClient(createRawCMSClient(headers, baseUrl));
85993
+ return createParsedClient(createRawCMSClient(() => headers, baseUrl));
85634
85994
  }
85635
85995
  function createInternalAPIClient(baseUrl) {
85636
85996
  return createCMSClient({}, baseUrl);
85637
85997
  }
85638
85998
  function createBearerAPIClient(token, baseUrl) {
85639
- return createCMSClient({ Authorization: `Bearer ${token}` }, baseUrl);
85999
+ return createParsedClient(createRawCMSClient(() => ({ Authorization: `Bearer ${typeof token === "function" ? token() : token}` }), baseUrl));
85640
86000
  }
85641
86001
  //#endregion
85642
86002
  //#region ../api/src/accountApi.ts
@@ -85863,6 +86223,7 @@ const CANONICAL_REFUND_PLANNER_ERROR_CODES = [
85863
86223
  "refund_failed"
85864
86224
  ];
85865
86225
  const CANONICAL_ADMIN_REFUND_FAILURE_CODES = [
86226
+ "refund_blocked_by_live_payment_terms",
85866
86227
  ...CANONICAL_REFUND_PLANNER_ERROR_CODES,
85867
86228
  "payment_intent_not_found",
85868
86229
  "stripe_error",
@@ -85878,6 +86239,7 @@ const CANONICAL_ADMIN_REFUND_FAILURE_CODES = [
85878
86239
  //#endregion
85879
86240
  //#region ../api/src/bookingRefundOutcomes.ts
85880
86241
  const STANDARD_LINE_ITEM_REFUND_INVALID_CODES = [
86242
+ "refund_blocked_by_live_payment_terms",
85881
86243
  "missing_amount",
85882
86244
  "invalid_amount",
85883
86245
  "amount_exceeds_remaining",
@@ -86285,68 +86647,6 @@ function parsePublicProductCategorySelector(value) {
86285
86647
  }
86286
86648
  z$1.enum(["public", "unlisted"], { error: "visibility must be 'public' or 'unlisted'" });
86287
86649
  //#endregion
86288
- //#region ../api/src/bookingPaymentTermSchemas.ts
86289
- const bookingDepositRefundPolicySchema = z$1.enum(["refundable", "non_refundable"]);
86290
- const bookingInstalmentPlanSchema = z$1.discriminatedUnion("kind", [
86291
- z$1.object({
86292
- kind: z$1.literal("deposit_plus_one_remainder"),
86293
- depositAmountCents: z$1.number().int().nonnegative(),
86294
- depositRefundability: bookingDepositRefundPolicySchema,
86295
- remainderDueCount: z$1.number().int().positive(),
86296
- intervalUnit: z$1.enum([
86297
- "day",
86298
- "week",
86299
- "month"
86300
- ])
86301
- }),
86302
- z$1.object({
86303
- kind: z$1.literal("deposit_plus_scheduled_instalments"),
86304
- depositAmountCents: z$1.number().int().nonnegative(),
86305
- depositRefundability: bookingDepositRefundPolicySchema,
86306
- instalmentCount: z$1.number().int().positive(),
86307
- intervalCount: z$1.number().int().positive(),
86308
- intervalUnit: z$1.enum([
86309
- "day",
86310
- "week",
86311
- "month"
86312
- ])
86313
- }),
86314
- z$1.object({
86315
- kind: z$1.literal("equal_scheduled_instalments"),
86316
- instalmentCount: z$1.number().int().positive(),
86317
- intervalCount: z$1.number().int().positive(),
86318
- intervalUnit: z$1.enum([
86319
- "day",
86320
- "week",
86321
- "month"
86322
- ])
86323
- })
86324
- ]);
86325
- const bookingFlexibleBalanceDueDateRuleSchema = z$1.discriminatedUnion("kind", [z$1.object({
86326
- kind: z$1.literal("relative_to_start_date"),
86327
- daysBeforeStart: z$1.number().int().positive()
86328
- }), z$1.object({
86329
- kind: z$1.literal("fixed_calendar_date"),
86330
- dueAt: z$1.string().datetime()
86331
- })]);
86332
- const bookingFlexibleBalanceConfigSchema = z$1.object({
86333
- upfrontAmountCents: z$1.number().int().nonnegative(),
86334
- dueDateRule: bookingFlexibleBalanceDueDateRuleSchema,
86335
- depositRefundability: bookingDepositRefundPolicySchema
86336
- });
86337
- z$1.discriminatedUnion("kind", [
86338
- z$1.object({ kind: z$1.literal("upfront") }),
86339
- z$1.object({ kind: z$1.literal("deferred_manual") }),
86340
- z$1.object({
86341
- kind: z$1.literal("instalment_plan"),
86342
- plan: bookingInstalmentPlanSchema
86343
- }),
86344
- z$1.object({
86345
- kind: z$1.literal("flexible_balance"),
86346
- config: bookingFlexibleBalanceConfigSchema
86347
- })
86348
- ]);
86349
- //#endregion
86350
86650
  //#region ../api/src/navigationMenuValidation.ts
86351
86651
  function hasChildren(item) {
86352
86652
  return Array.isArray(item.children) && item.children.length > 0;
@@ -86963,9 +87263,17 @@ function readBlockContentId(value, name) {
86963
87263
  function readTransportedBlockIdentity(block, kind, stage) {
86964
87264
  return {
86965
87265
  draftContentId: readBlockContentId(block.draftContentId, "draft content id"),
86966
- publishedPlacement: stage === "preview" ? readPublishedBlockPlacement(readBlockContentId(block.publishedContentId, "published content id"), sanitizeNullableSdkRuntimeBlockContent(kind, readNestedContentRecord(block.publishedContent))) : null
87266
+ publishedPlacement: stage === "preview" ? readSdkPreviewPublishedPlacement(block, kind) : null
86967
87267
  };
86968
87268
  }
87269
+ /** Pair SDK preview publication data whether it is transported or already admitted. */
87270
+ function readSdkPreviewPublishedPlacement(block, kind) {
87271
+ if (block.publishedPlacement !== void 0 && block.publishedPlacement !== null) {
87272
+ if (!isRecord$5(block.publishedPlacement)) throw new Error("Invalid published placement in page");
87273
+ return readPublishedBlockPlacement(readBlockContentId(block.publishedPlacement.id, "published content id"), sanitizeNullableSdkRuntimeBlockContent(kind, readContentRecord(block.publishedPlacement.content) ?? null));
87274
+ }
87275
+ return readPublishedBlockPlacement(readBlockContentId(block.publishedContentId, "published content id"), sanitizeNullableSdkRuntimeBlockContent(kind, readSdkPublishedContentRecord(block.publishedContent)));
87276
+ }
86969
87277
  function convertPageResponseBlock(block, stage) {
86970
87278
  if (!isRecord$5(block)) throw new Error("Invalid block format in page API response");
86971
87279
  const header = readTransportedBlockHeader(block);
@@ -87074,6 +87382,10 @@ function readNestedContentRecord(value) {
87074
87382
  if (!isRecord$5(value)) return null;
87075
87383
  return readContentRecord(value.data) ?? null;
87076
87384
  }
87385
+ function readSdkPublishedContentRecord(value) {
87386
+ if (!isRecord$5(value)) return null;
87387
+ return "data" in value ? readContentRecord(value.data) ?? null : value;
87388
+ }
87077
87389
  function sanitizeSdkRuntimeBlockContent(blockKind, content) {
87078
87390
  if (blockKind !== "block.newsletter-signup") return content;
87079
87391
  const sanitized = sanitizeNewsletterSignupPublicContent(content);
@@ -87964,20 +88276,20 @@ const BUILTIN_CONTENT_TYPE_SCHEMAS = {
87964
88276
  id: "summary",
87965
88277
  type: "textarea",
87966
88278
  label: "Short introduction",
87967
- description: "Write one or two sentences that help people quickly understand what this is. It appears wherever the event is listed and near the top of its page.",
88279
+ description: "Shown in your listings and search results, and at the top of its page.",
87968
88280
  rows: 3
87969
88281
  },
87970
88282
  {
87971
88283
  id: "image",
87972
88284
  type: "media",
87973
88285
  label: "Event image",
87974
- description: "Choose the main image people will see wherever the event is listed and on its page."
88286
+ description: "At the top of its page and beside it in your listings."
87975
88287
  },
87976
88288
  {
87977
88289
  id: "body",
87978
88290
  type: "richText",
87979
- label: "About this event",
87980
- description: "Add the main information people need before booking—what to expect, who it’s for, what’s included, and anything they should bring or know."
88291
+ label: "Full description",
88292
+ description: "The main text on its page, under the introduction."
87981
88293
  }
87982
88294
  ],
87983
88295
  routing: {
@@ -88398,7 +88710,6 @@ const DEFAULT_TEMPLATE_DEFINITIONS = {
88398
88710
  maxTickets: "5",
88399
88711
  showVenue: true,
88400
88712
  showCapacity: true,
88401
- successMessage: "Thank you for registering! Check your email for confirmation details.",
88402
88713
  buttonText: "Complete Registration",
88403
88714
  buttonVariant: "primary"
88404
88715
  },
@@ -90229,6 +90540,7 @@ function buildPageRouteRenderContext(dataContext) {
90229
90540
  }
90230
90541
  function buildPageIdentityRenderContext(dataContext) {
90231
90542
  return {
90543
+ demoEmailSuppressed: dataContext.demoEmailSuppressed,
90232
90544
  siteName: dataContext.siteName,
90233
90545
  pathname: dataContext.pathname
90234
90546
  };
@@ -91452,7 +91764,7 @@ var CircuitOpenError = class extends Error {
91452
91764
  * 1. This constant
91453
91765
  * 2. The "version" field in package.json
91454
91766
  */
91455
- const SDK_VERSION = "0.147.0";
91767
+ const SDK_VERSION = "0.149.0";
91456
91768
  //#endregion
91457
91769
  //#region src/next/content-load-failure.ts
91458
91770
  const SdkContentLoadError = RiverbankContentLoadError;