@riverbankcms/sdk 0.147.0 → 0.148.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/{PreviewEditorSidebar-DtpB3_sS.mjs → PreviewEditorSidebar-DvEPG3Z2.mjs} +202 -143
  3. package/dist/{PreviewEditorUI-DxTLgaHo.mjs → PreviewEditorUI-D6eb6fkx.mjs} +68 -60
  4. package/dist/{PreviewQueryProvider-Dd4dxOiU.mjs → PreviewQueryProvider-5znTyJuz.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-DMMNCngt.mjs → SdkPreviewModeRuntime-DJ6utQ_R.mjs} +1191 -513
  6. package/dist/{SiteChromeCustomizeContext-DQXZXiqS.mjs → SiteChromeCustomizeContext-CFJYh6vo.mjs} +201798 -197304
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +0 -33
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +0 -3
  9. package/dist/_dts/api/src/accessAdmin.d.ts +0 -4
  10. package/dist/_dts/api/src/accountApi.d.ts +1 -1
  11. package/dist/_dts/api/src/admin.d.ts +22 -22
  12. package/dist/_dts/api/src/aiPatch.d.ts +2 -2
  13. package/dist/_dts/api/src/aiPlayground.d.ts +1 -0
  14. package/dist/_dts/api/src/analytics.d.ts +2 -2
  15. package/dist/_dts/api/src/apiEndpointTypes.d.ts +2 -0
  16. package/dist/_dts/api/src/appointmentSetup.d.ts +2 -2
  17. package/dist/_dts/api/src/auth.d.ts +10 -10
  18. package/dist/_dts/api/src/availability.d.ts +6 -6
  19. package/dist/_dts/api/src/billing.d.ts +42 -15
  20. package/dist/_dts/api/src/billingEndpointDefinitions.d.ts +8 -0
  21. package/dist/_dts/api/src/billingEndpointTypes.d.ts +15 -6
  22. package/dist/_dts/api/src/blocks.d.ts +15 -14
  23. package/dist/_dts/api/src/blocksKeys.d.ts +2 -0
  24. package/dist/_dts/api/src/bookingConfig.d.ts +0 -2
  25. package/dist/_dts/api/src/bookingOperations.d.ts +4 -4
  26. package/dist/_dts/api/src/bookingRecords.d.ts +1 -0
  27. package/dist/_dts/api/src/bookings.d.ts +7 -7
  28. package/dist/_dts/api/src/calendar.d.ts +9 -9
  29. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +7 -6
  30. package/dist/_dts/api/src/common/envelope.d.ts +2 -2
  31. package/dist/_dts/api/src/content-editor.d.ts +2 -2
  32. package/dist/_dts/api/src/contentEntries.d.ts +17 -48
  33. package/dist/_dts/api/src/contentRuntime.d.ts +51 -37
  34. package/dist/_dts/api/src/contentTypes.d.ts +11 -11
  35. package/dist/_dts/api/src/contentVersionHistoryClient.d.ts +6 -6
  36. package/dist/_dts/api/src/documentLifecycle.d.ts +67 -0
  37. package/dist/_dts/api/src/domains.d.ts +16 -16
  38. package/dist/_dts/api/src/editLeaseEndpoints.d.ts +72 -0
  39. package/dist/_dts/api/src/emailSettings.d.ts +4 -4
  40. package/dist/_dts/api/src/endpoints.d.ts +133 -41
  41. package/dist/_dts/api/src/eventEmailTemplates.d.ts +2 -2
  42. package/dist/_dts/api/src/eventManagementContracts.d.ts +25 -0
  43. package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +0 -8
  44. package/dist/_dts/api/src/eventPageWords.d.ts +7 -12
  45. package/dist/_dts/api/src/footerSettings.d.ts +6 -6
  46. package/dist/_dts/api/src/index.d.ts +6 -5
  47. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -0
  48. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  49. package/dist/_dts/api/src/navigation.d.ts +5 -5
  50. package/dist/_dts/api/src/pageSurfaceEditorEndpoints.d.ts +55 -0
  51. package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +28 -7
  52. package/dist/_dts/api/src/pages.d.ts +7 -7
  53. package/dist/_dts/api/src/performance.d.ts +1 -1
  54. package/dist/_dts/api/src/public/index.d.ts +1 -1
  55. package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +2 -0
  56. package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +4 -0
  57. package/dist/_dts/api/src/redirects.d.ts +3 -3
  58. package/dist/_dts/api/src/request.d.ts +10 -1
  59. package/dist/_dts/api/src/resources.d.ts +4 -4
  60. package/dist/_dts/api/src/routes.d.ts +8 -3
  61. package/dist/_dts/api/src/sdk-event-upsert.d.ts +0 -1
  62. package/dist/_dts/api/src/sdkBlockUpsertContracts.d.ts +21 -0
  63. package/dist/_dts/api/src/sdkContracts.d.ts +5 -28
  64. package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +1 -1
  65. package/dist/_dts/api/src/sdkEventOccurrenceRequestContracts.d.ts +43 -0
  66. package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +4 -2
  67. package/dist/_dts/api/src/sdkPullEventContracts.d.ts +8 -1
  68. package/dist/_dts/api/src/seo.d.ts +4 -4
  69. package/dist/_dts/api/src/services.d.ts +4 -4
  70. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +15 -8
  71. package/dist/_dts/api/src/siteMembers.d.ts +10 -10
  72. package/dist/_dts/api/src/siteOnboarding.d.ts +14 -0
  73. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +7 -3
  74. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +5 -12
  75. package/dist/_dts/api/src/siteRuntimeEntry.d.ts +31 -0
  76. package/dist/_dts/billing/src/checkout/platform.d.ts +77 -0
  77. package/dist/_dts/billing/src/components/index.d.ts +25 -40
  78. package/dist/_dts/billing/src/membership/index.d.ts +1 -3
  79. package/dist/_dts/billing/src/plans/entitlements.d.ts +80 -0
  80. package/dist/_dts/billing/src/plans/registry.d.ts +16 -16
  81. package/dist/_dts/billing/src/plans/standing.d.ts +9 -2
  82. package/dist/_dts/billing/src/plans/types.d.ts +5 -15
  83. package/dist/_dts/billing/src/site-arrangements.d.ts +2 -2
  84. package/dist/_dts/billing/src/subscriptions/standingEvidence.d.ts +2 -4
  85. package/dist/_dts/billing/src/subscriptions/store.d.ts +17 -11
  86. package/dist/_dts/block-form/src/backend/store-backend.d.ts +6 -7
  87. package/dist/_dts/block-form/src/backend/types.d.ts +7 -0
  88. package/dist/_dts/block-form/src/widgets/FieldFrame.d.ts +3 -1
  89. package/dist/_dts/blocks/src/client/events.d.ts +3 -0
  90. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +16 -4
  91. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +4 -13
  92. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -0
  93. package/dist/_dts/blocks/src/portal/types.d.ts +0 -2
  94. package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +2 -1
  95. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +3 -1
  96. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +4 -4
  97. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +6 -1
  98. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +2 -2
  99. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  100. package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +2 -0
  101. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +6 -0
  102. package/dist/_dts/blocks/src/system/runtime/api/types/portal.d.ts +6 -0
  103. package/dist/_dts/blocks/src/system/runtime/api/types/shop.d.ts +4 -0
  104. package/dist/_dts/blocks/src/system/runtime/components/booking/SuccessMessage.d.ts +4 -1
  105. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +24 -6
  106. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +12 -3
  107. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +3 -0
  108. package/dist/_dts/blocks/src/system/runtime/hooks/usePaymentVerification.d.ts +2 -1
  109. package/dist/_dts/blocks/src/system/runtime/hooks/usePolling.d.ts +7 -48
  110. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.checkout-return-context.d.ts +7 -0
  111. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.completion.d.ts +3 -1
  112. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +4 -0
  113. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +9 -0
  114. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.payment-confirmation.d.ts +13 -0
  115. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +15 -1
  116. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-actions.d.ts +8 -0
  117. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-handler.d.ts +1 -0
  118. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +1 -0
  119. package/dist/_dts/blocks/src/system/runtime/nodes/checkout.server.d.ts +2 -1
  120. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +2 -1
  121. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizard.d.ts +5 -0
  122. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SuccessStep.d.ts +4 -1
  123. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +2 -0
  124. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +2 -5
  125. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +9 -5
  126. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +6 -0
  127. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +37 -3
  128. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.client.d.ts +1 -1
  129. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +16 -1
  130. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCardPresentations.d.ts +13 -0
  131. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +5 -5
  132. package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.d.ts +1 -14
  133. package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.d.ts +12 -0
  134. package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +13 -0
  135. package/dist/_dts/blocks/src/system/runtime/shared/components/DemoBookingPortalAccess.d.ts +22 -0
  136. package/dist/_dts/blocks/src/system/runtime/shared/components/DemoPortalSignInLink.d.ts +4 -0
  137. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
  138. package/dist/_dts/blocks/src/system/runtime/shared/utils/demoBookingPassStorage.d.ts +10 -0
  139. package/dist/_dts/blocks/src/system/runtime/shared/utils/demoPortalMagicLink.d.ts +29 -0
  140. package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +4 -0
  141. package/dist/_dts/content-editor/src/components/ContentFieldsForm.d.ts +2 -7
  142. package/dist/_dts/content-editor/src/controller/EditLeaseController.d.ts +39 -0
  143. package/dist/_dts/content-editor/src/controller/EditorWriteGate.d.ts +38 -0
  144. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +25 -61
  145. package/dist/_dts/content-editor/src/controller/LinkedEntryLeaseBanner.d.ts +7 -0
  146. package/dist/_dts/content-editor/src/controller/LinkedEntryLeaseControllers.d.ts +14 -0
  147. package/dist/_dts/content-editor/src/controller/deriveEditorUnpublishedState.d.ts +6 -0
  148. package/dist/_dts/content-editor/src/controller/documentValueBaseline.d.ts +25 -0
  149. package/dist/_dts/content-editor/src/controller/editLeaseLossSignal.d.ts +6 -0
  150. package/dist/_dts/content-editor/src/controller/editLeaseNotice.d.ts +28 -0
  151. package/dist/_dts/content-editor/src/controller/editorClientId.d.ts +2 -0
  152. package/dist/_dts/content-editor/src/controller/editorEditability.d.ts +38 -0
  153. package/dist/_dts/content-editor/src/controller/editorLeaseParticipation.d.ts +34 -0
  154. package/dist/_dts/content-editor/src/controller/normalizedMetadataBaseline.d.ts +29 -0
  155. package/dist/_dts/content-editor/src/controller/pageSurfaceDocumentBaselines.d.ts +14 -0
  156. package/dist/_dts/content-editor/src/controller/pageSurfaceLifecycle.d.ts +11 -0
  157. package/dist/_dts/content-editor/src/controller/planDocumentBaselineRefresh.d.ts +19 -0
  158. package/dist/_dts/content-editor/src/controller/readDocumentLeaseBaselines.d.ts +19 -0
  159. package/dist/_dts/content-editor/src/controller/refreshDocumentLeaseBaseline.d.ts +12 -0
  160. package/dist/_dts/content-editor/src/controller/refreshLinkedEntry.d.ts +17 -0
  161. package/dist/_dts/content-editor/src/controller/replayRestoredEditorEffects.d.ts +2 -3
  162. package/dist/_dts/content-editor/src/controller/routeWrites.d.ts +26 -0
  163. package/dist/_dts/content-editor/src/controller/useAutosaveTriggers.d.ts +16 -17
  164. package/dist/_dts/content-editor/src/controller/useBlockedPublishPlan.d.ts +6 -2
  165. package/dist/_dts/content-editor/src/controller/useBlocksList.d.ts +3 -3
  166. package/dist/_dts/content-editor/src/controller/useEntryValueAutosaves.d.ts +21 -0
  167. package/dist/_dts/content-editor/src/controller/useInitialEditorUiStore.d.ts +24 -0
  168. package/dist/_dts/content-editor/src/controller/useServerBaselineReconciliation.d.ts +17 -0
  169. package/dist/_dts/content-editor/src/footerComposerPanelTypes.d.ts +1 -1
  170. package/dist/_dts/content-editor/src/hooks/applyBlockedPublishPlan.d.ts +5 -1
  171. package/dist/_dts/content-editor/src/hooks/blockDraftLifecycle.d.ts +8 -47
  172. package/dist/_dts/content-editor/src/hooks/editLeaseMachine.d.ts +120 -0
  173. package/dist/_dts/content-editor/src/hooks/publishability.d.ts +6 -10
  174. package/dist/_dts/content-editor/src/hooks/useAutosaveStatus.d.ts +3 -0
  175. package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +5 -15
  176. package/dist/_dts/content-editor/src/hooks/useDebouncedLatestSave.d.ts +7 -5
  177. package/dist/_dts/content-editor/src/hooks/useEditLease.d.ts +28 -0
  178. package/dist/_dts/content-editor/src/hooks/useEntryActions.d.ts +25 -39
  179. package/dist/_dts/content-editor/src/hooks/useEntryMutations.d.ts +17 -19
  180. package/dist/_dts/content-editor/src/hooks/useLinkedEntryAutosave.d.ts +5 -8
  181. package/dist/_dts/content-editor/src/hooks/useValueAutosave.d.ts +64 -0
  182. package/dist/_dts/content-editor/src/hooks/validateBlocksForPublish.d.ts +0 -7
  183. package/dist/_dts/content-editor/src/index.d.ts +26 -7
  184. package/dist/_dts/content-editor/src/linkedEntries/domain.d.ts +12 -0
  185. package/dist/_dts/content-editor/src/linkedEntries/owner.d.ts +9 -0
  186. package/dist/_dts/content-editor/src/liveDrafts/draftProjection.d.ts +66 -0
  187. package/dist/_dts/content-editor/src/liveDrafts/linkedSaveHandovers.d.ts +37 -0
  188. package/dist/_dts/content-editor/src/liveDrafts/remoteDraftOverlay.d.ts +113 -0
  189. package/dist/_dts/content-editor/src/liveDrafts/useLiveDrafts.d.ts +32 -0
  190. package/dist/_dts/content-editor/src/liveDrafts/useRetentionTicks.d.ts +7 -0
  191. package/dist/_dts/content-editor/src/primitives/shared/activePreviewField.d.ts +6 -0
  192. package/dist/_dts/content-editor/src/primitives/shared/storeBinding.d.ts +1 -0
  193. package/dist/_dts/content-editor/src/services/contentEntryServices.d.ts +96 -19
  194. package/dist/_dts/content-editor/src/services/editorApiClient.d.ts +13 -0
  195. package/dist/_dts/content-editor/src/services/index.d.ts +2 -0
  196. package/dist/_dts/content-editor/src/services/pageSurfaceEditorServices.d.ts +23 -0
  197. package/dist/_dts/content-editor/src/sync/flushValues.d.ts +13 -0
  198. package/dist/_dts/content-editor/src/sync/lifecycleFailure.d.ts +51 -0
  199. package/dist/_dts/content-editor/src/sync/runLifecycle.d.ts +64 -0
  200. package/dist/_dts/content-editor/src/sync/schedulerValues.d.ts +27 -0
  201. package/dist/_dts/content-editor/src/sync/sendPlanning.d.ts +104 -0
  202. package/dist/_dts/content-editor/src/sync/valueSync.d.ts +114 -0
  203. package/dist/_dts/content-editor/src/ui/blockCollection.d.ts +8 -0
  204. package/dist/_dts/content-editor/src/ui/documentLifecycle.d.ts +18 -0
  205. package/dist/_dts/content-editor/src/ui/editorLeaseUiState.d.ts +7 -0
  206. package/dist/_dts/content-editor/src/ui/editorRefresh.d.ts +82 -0
  207. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +102 -127
  208. package/dist/_dts/content-editor/src/ui/editorTransactionState.d.ts +1 -1
  209. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +126 -72
  210. package/dist/_dts/content-editor/src/ui/editorValueSnapshot.d.ts +18 -0
  211. package/dist/_dts/content-editor/src/ui/serverBlockAdmission.d.ts +26 -0
  212. package/dist/_dts/content-editor/src/ui/stores/autosaveStore.d.ts +16 -27
  213. package/dist/_dts/content-editor/src/ui/stores/blockVersionsStore.d.ts +24 -0
  214. package/dist/_dts/content-editor/src/ui/stores/linkedEntryLeaseStore.d.ts +54 -0
  215. package/dist/_dts/content-editor/src/ui/stores/linkedSaveHandoversStore.d.ts +11 -0
  216. package/dist/_dts/content-editor/src/ui/stores/remoteDraftsStore.d.ts +10 -0
  217. package/dist/_dts/content-editor/src/ui/stores/types.d.ts +63 -3
  218. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +2 -2
  219. package/dist/_dts/content-editor/src/useFooterNavigationLayout.d.ts +1 -1
  220. package/dist/_dts/content-model/src/content-types/builtin-schemas.d.ts +4 -4
  221. package/dist/_dts/content-model/src/content-types/builtins.d.ts +4 -4
  222. package/dist/_dts/content-model/src/definitions/shared.d.ts +11 -2
  223. package/dist/_dts/content-model/src/entry-slots/index.d.ts +1 -0
  224. package/dist/_dts/content-model/src/entry-slots/serializeAllowedBlocks.d.ts +2 -0
  225. package/dist/_dts/content-model/src/metadataConfig.d.ts +10 -38
  226. package/dist/_dts/content-model/src/templates/defaults.d.ts +0 -1
  227. package/dist/_dts/content-model/src/types.d.ts +0 -1
  228. package/dist/_dts/core/src/block-content-identity.d.ts +49 -1
  229. package/dist/_dts/core/src/branded.d.ts +12 -0
  230. package/dist/_dts/core/src/currency-format.d.ts +8 -2
  231. package/dist/_dts/core/src/demo-lifecycle-status.d.ts +2 -2
  232. package/dist/_dts/core/src/demo-warm-pool-target.d.ts +8 -0
  233. package/dist/_dts/core/src/edit-lease.d.ts +55 -0
  234. package/dist/_dts/core/src/editor-state.d.ts +38 -13
  235. package/dist/_dts/core/src/editor-value-sync.d.ts +79 -0
  236. package/dist/_dts/core/src/html-entities.d.ts +6 -0
  237. package/dist/_dts/core/src/index.d.ts +4 -0
  238. package/dist/_dts/core/src/uuid.d.ts +7 -5
  239. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +159 -153
  240. package/dist/_dts/editor/src/EditorProvider.d.ts +5 -0
  241. package/dist/_dts/editor/src/chrome/EditorChrome.d.ts +14 -0
  242. package/dist/_dts/editor/src/chrome/EditorStatusBar.d.ts +1 -0
  243. package/dist/_dts/editor/src/chrome/statusBarPresentation.d.ts +0 -1
  244. package/dist/_dts/editor/src/index.d.ts +1 -1
  245. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +10 -9
  246. package/dist/_dts/editor-blocks/src/BlockForm.d.ts +1 -1
  247. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +1 -1
  248. package/dist/_dts/editor-blocks/src/block-editor/BlockCardFrame.d.ts +1 -1
  249. package/dist/_dts/editor-blocks/src/block-editor/BlockSettingsModal.d.ts +1 -1
  250. package/dist/_dts/editor-blocks/src/block-editor/applyExtendedFieldDefaults.d.ts +3 -4
  251. package/dist/_dts/editor-blocks/src/block-editor/blockDraftBaselineSeed.d.ts +4 -8
  252. package/dist/_dts/editor-blocks/src/block-editor/editorBlockItem.d.ts +23 -0
  253. package/dist/_dts/editor-blocks/src/block-editor/generatedIconApplyCoordination.d.ts +2 -7
  254. package/dist/_dts/editor-blocks/src/block-editor/hooks/applyBlockStructureChange.d.ts +4 -0
  255. package/dist/_dts/editor-blocks/src/block-editor/hooks/buildInsertBlockHistoryCommand.d.ts +14 -5
  256. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockBaselineSync.d.ts +21 -19
  257. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockCreation.d.ts +2 -10
  258. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +8 -16
  259. package/dist/_dts/editor-blocks/src/block-editor/owner.d.ts +6 -16
  260. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +37 -9
  261. package/dist/_dts/editor-blocks/src/index.d.ts +2 -1
  262. package/dist/_dts/editor-blocks/src/widgets/entry-picker/loaders.d.ts +1 -1
  263. package/dist/_dts/editor-blocks/src/widgets/link/loaders.d.ts +1 -1
  264. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +1 -1
  265. package/dist/_dts/editor-blocks/src/widgets/reference/loaders.d.ts +1 -1
  266. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +3 -2
  267. package/dist/_dts/media-core/src/fileStorage.d.ts +4 -0
  268. package/dist/_dts/media-editor/src/context.d.ts +1 -1
  269. package/dist/_dts/media-editor/src/createMediaEditorProvider.d.ts +1 -2
  270. package/dist/_dts/media-editor/src/provider.d.ts +3 -2
  271. package/dist/_dts/media-react/src/hooks/internal/classification.d.ts +1 -1
  272. package/dist/_dts/media-react/src/hooks/useApiMediaUploader.d.ts +3 -1
  273. package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +8 -3
  274. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +6 -3
  275. package/dist/_dts/preview-next/src/client/blocks/linkedEntryRenderOverlay.d.ts +22 -2
  276. package/dist/_dts/preview-next/src/client/blocks/previewProjection/entryFieldRebinding.d.ts +13 -0
  277. package/dist/_dts/preview-next/src/client/blocks/previewProjection/index.d.ts +2 -1
  278. package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +11 -1
  279. package/dist/_dts/preview-next/src/client/blocks/renderPrecedence.d.ts +17 -0
  280. package/dist/_dts/preview-next/src/client/blocks/useLinkedSaveHandoverRetention.d.ts +20 -0
  281. package/dist/_dts/preview-next/src/client/index.d.ts +1 -1
  282. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -1
  283. package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -1
  284. package/dist/_dts/preview-next/src/client/preview/PreviewAccessBanners.d.ts +7 -0
  285. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -1
  286. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +24 -14
  287. package/dist/_dts/preview-next/src/client/preview/PreviewLeaseEditingMode.d.ts +2 -0
  288. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +9 -2
  289. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +1 -0
  290. package/dist/_dts/preview-next/src/client/preview/previewCustomizeAutosave.d.ts +5 -0
  291. package/dist/_dts/preview-next/src/client/preview/previewCustomizeWorkflowState.d.ts +3 -4
  292. package/dist/_dts/preview-next/src/client/preview/sdkConfig.d.ts +1 -0
  293. package/dist/_dts/preview-next/src/client/preview/usePreviewCustomizeWorkflowState.d.ts +4 -0
  294. package/dist/_dts/realtime/src/client.d.ts +3 -0
  295. package/dist/_dts/realtime/src/draftChannel.d.ts +91 -0
  296. package/dist/_dts/realtime/src/drafts.d.ts +210 -0
  297. package/dist/_dts/realtime/src/index.d.ts +3 -0
  298. package/dist/_dts/realtime/src/leaseChangeSubscriptions.d.ts +8 -0
  299. package/dist/_dts/realtime/src/types.d.ts +113 -0
  300. package/dist/_dts/realtime/src/useDraftChannel.d.ts +34 -0
  301. package/dist/_dts/realtime/src/useSiteRealtimeReload.d.ts +27 -0
  302. package/dist/_dts/sdk/src/public-api/contracts.d.ts +6 -55
  303. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +1 -0
  304. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +1 -0
  305. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +2 -0
  306. package/dist/_dts/sdk/src/version.d.ts +1 -1
  307. package/dist/_dts/surfaces/src/index.d.ts +1 -0
  308. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
  309. package/dist/client/{BookingMailingListNote-1n4Ch_u_.mjs → BookingMailingListNote-CzRt2dF_.mjs} +98 -96
  310. package/dist/client/DemoBookingPortalAccess-mxqwap3f.mjs +344 -0
  311. package/dist/client/{EventCombined.client-C0pgma9y.mjs → EventCombined.client-CDb11igO.mjs} +6 -6
  312. package/dist/client/{EventListing.client-4fhLOvHP.mjs → EventListing.client-EgYhzKPa.mjs} +2 -2
  313. package/dist/client/{LeafletStaticMap-DScC4F3w.mjs → LeafletStaticMap-gtmtaA2b.mjs} +1 -1
  314. package/dist/client/{TerminalPanel-B5ZUsYhe.mjs → TerminalPanel-DvNUP5ot.mjs} +1 -1
  315. package/dist/client/{ThemedButton-DoVIV1Ao.mjs → ThemedButton-C7CeUJjW.mjs} +1 -1
  316. package/dist/client/{accordion-CoT5g7zo.mjs → accordion-kjvt49rA.mjs} +1 -1
  317. package/dist/client/{bookingForm-BWxB46xD.mjs → bookingForm-pbRZordh.mjs} +212 -62
  318. package/dist/client/bookings.mjs +616 -225
  319. package/dist/client/{carousel-DtNYWFd3.mjs → carousel-f4Zbmicv.mjs} +1 -1
  320. package/dist/client/{cart-z4qZih1Y.mjs → cart-DO20An50.mjs} +3 -3
  321. package/dist/client/{checkout-DpL7euFH.mjs → checkout-Du5amDR_.mjs} +3 -3
  322. package/dist/client/{checkoutUrls-BEfR7kVu.mjs → checkoutUrls-CXhko2Rv.mjs} +1 -1
  323. package/dist/client/client.mjs +1753 -823
  324. package/dist/client/{context-C8TinPJc.mjs → context-eW97E945.mjs} +4 -3
  325. package/dist/client/{dates-vwwxTeB0.mjs → dates-jPCirRea.mjs} +56 -11
  326. package/dist/client/{eventCalendar-DIbHfJXO.mjs → eventCalendar-C2M-iE4j.mjs} +9 -9
  327. package/dist/client/{eventCombined-DoGMJ6cg.mjs → eventCombined-W6ns3LHg.mjs} +4 -4
  328. package/dist/client/{eventDetails-BjN9v6a1.mjs → eventDetails-CR-GT0f0.mjs} +4 -4
  329. package/dist/client/{eventListing-DajjWgOv.mjs → eventListing-BK8AfYZz.mjs} +4 -4
  330. package/dist/client/{eventRegistration-DMq9gMA-.mjs → eventRegistration-BJSd4KUu.mjs} +369 -242
  331. package/dist/client/{form-Qf6qTbos.mjs → form-BvpfbQaT.mjs} +3 -3
  332. package/dist/client/{headerSection-D7qJrqFX.mjs → headerSection-I5sUQ8x-.mjs} +3 -3
  333. package/dist/client/hooks.mjs +254 -53
  334. package/dist/client/{locationMap-CCF9-t_0.mjs → locationMap-BLvwf9_f.mjs} +3 -3
  335. package/dist/client/{media-CwBGetqC.mjs → media-Cl38iOMI.mjs} +10 -3
  336. package/dist/client/{newsletterForm-DzCLSP4S.mjs → newsletterForm-DrQ2weE8.mjs} +3 -3
  337. package/dist/client/{pricing-Cgxv2KLC.mjs → pricing-BES87mrR.mjs} +1 -1
  338. package/dist/client/{productDetail-ru9w5GHx.mjs → productDetail-Url9jcc5.mjs} +3 -3
  339. package/dist/client/{productList-zaapKSl-.mjs → productList-DE7ngEZJ.mjs} +3 -3
  340. package/dist/client/{propsDecoder-CwvvNOHx.mjs → propsDecoder-D1OtGXDV.mjs} +89 -17
  341. package/dist/client/rendering/client.mjs +1445 -658
  342. package/dist/client/rendering/islands.mjs +18 -18
  343. package/dist/client/rendering.mjs +2478 -1515
  344. package/dist/client/{routeIslandApiConfig-BwVFo0Y4.mjs → routeIslandApiConfig-BG9Y-SHg.mjs} +1 -1
  345. package/dist/client/{shop-mktkXvbV.mjs → shop-CJkuySJ3.mjs} +126 -79
  346. package/dist/client/{shop-commerce-De7gEnkA.mjs → shop-commerce-4rKj5n9h.mjs} +25 -13
  347. package/dist/client/{shop-commerce-store-B3MCxIBW.mjs → shop-commerce-store-Bxm75Pg6.mjs} +1 -1
  348. package/dist/client/{shopShared-TqExh235.mjs → shopShared-DpoQDWfz.mjs} +4 -4
  349. package/dist/client/{useEventFilters-n_OjkIjX.mjs → useEventFilters-D8HliSqR.mjs} +32 -17
  350. package/dist/preview-next/before-render.mjs +192 -83
  351. package/dist/preview-next/client/runtime.mjs +4 -4
  352. package/dist/preview-next/keepAlive.mjs +192 -83
  353. package/dist/preview-next/middleware.mjs +192 -83
  354. package/dist/{previewAuthStore-C_EHQ5XA.mjs → previewAuthStore-BXXF3hhW.mjs} +194 -83
  355. package/dist/{sdk-runtime-BIkJg5y1.mjs → sdk-runtime-C2a05WjL.mjs} +2 -2
  356. package/dist/{separator-C9qDP95Z.mjs → separator-CuNhBAhS.mjs} +1 -1
  357. package/dist/server/components.mjs +1720 -1392
  358. package/dist/server/config-validation.mjs +221 -37
  359. package/dist/server/config.mjs +221 -37
  360. package/dist/server/data.mjs +221 -37
  361. package/dist/server/index.mjs +195 -84
  362. package/dist/server/next.mjs +490 -196
  363. package/dist/server/page-converter.mjs +53 -14
  364. package/dist/server/prebuild.mjs +1 -1
  365. package/dist/server/rendering/server.mjs +1427 -1098
  366. package/dist/server/rendering.mjs +2693 -2365
  367. package/dist/server/routing.mjs +291 -55
  368. package/dist/server/server.mjs +281 -114
  369. package/package.json +1 -1
  370. package/dist/_dts/billing/src/plans/display.d.ts +0 -15
  371. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-note.d.ts +0 -3
  372. package/dist/_dts/content-editor/src/controller/buildBlockPublishedBaselines.d.ts +0 -4
  373. package/dist/_dts/content-editor/src/controller/buildPublishSuccessTransition.d.ts +0 -16
  374. package/dist/_dts/content-editor/src/controller/driver.d.ts +0 -14
  375. package/dist/_dts/content-editor/src/controller/seedDraftBaselinesFromBlocks.d.ts +0 -7
  376. package/dist/_dts/content-editor/src/controller/useEntrySyncHelpers.d.ts +0 -29
  377. package/dist/_dts/content-editor/src/hooks/autosaveScopePlanning.d.ts +0 -26
  378. package/dist/_dts/content-editor/src/hooks/useSimpleAutosave.d.ts +0 -64
  379. package/dist/_dts/content-editor/src/hooks/useStoreAutosave.d.ts +0 -48
  380. package/dist/_dts/content-editor/src/types.d.ts +0 -44
  381. 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. */
@@ -1768,6 +1784,26 @@ function toLocationCoordinates(value) {
1768
1784
  };
1769
1785
  }
1770
1786
  //#endregion
1787
+ //#region ../core/src/block-content-identity.ts
1788
+ function readContentVersionId(value) {
1789
+ const parsed = parseContentVersionId(value);
1790
+ return parsed.ok ? parsed.value : null;
1791
+ }
1792
+ /** The one pairing of a published id with its content. */
1793
+ function readPublishedBlockPlacement(id, content) {
1794
+ if (id == null && content == null) return null;
1795
+ const versionId = readContentVersionId(id);
1796
+ return versionId !== null && content != null ? {
1797
+ kind: "published",
1798
+ id: versionId,
1799
+ content
1800
+ } : {
1801
+ kind: "incomplete",
1802
+ id: id ?? null,
1803
+ content: content ?? null
1804
+ };
1805
+ }
1806
+ //#endregion
1771
1807
  //#region ../core/src/rich-text.ts
1772
1808
  function isRecord$39(value) {
1773
1809
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -2737,11 +2773,18 @@ function isReservedPathSegment(value) {
2737
2773
  function isUnsafePathSegment(segment) {
2738
2774
  return segment.trim().length === 0 || segment !== segment.trim() || isReservedPathSegment(segment) || containsUnsafePathSegmentCharacter(segment);
2739
2775
  }
2740
- ({
2776
+ //#endregion
2777
+ //#region ../media-core/src/fileStorage.ts
2778
+ const FILE_STORAGE_BUCKETS = {
2741
2779
  publicSite: unsafeAsStorageBucketName("media"),
2742
2780
  privateSite: unsafeAsStorageBucketName("site-files-private"),
2743
- temporary: unsafeAsStorageBucketName("temp-uploads")
2744
- }).publicSite;
2781
+ temporary: unsafeAsStorageBucketName("temp-uploads"),
2782
+ siteAssets: unsafeAsStorageBucketName("site-assets"),
2783
+ siteFonts: unsafeAsStorageBucketName("site-fonts"),
2784
+ bookingRequirementDocuments: unsafeAsStorageBucketName("booking-requirement-documents")
2785
+ };
2786
+ FILE_STORAGE_BUCKETS.publicSite, FILE_STORAGE_BUCKETS.siteAssets, FILE_STORAGE_BUCKETS.siteFonts;
2787
+ 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
2788
  function parseStoragePath(value) {
2746
2789
  return joinStoragePathSegments(value.split("/"));
2747
2790
  }
@@ -13620,7 +13663,6 @@ const publicEventBaseSchema = z$1.object({
13620
13663
  description: z$1.string().nullable(),
13621
13664
  content: z$1.object({ body: RichTextDocSchema.nullable().optional() }).optional(),
13622
13665
  presentation: z$1.object({
13623
- cardTitleOverride: z$1.string().nullable().optional(),
13624
13666
  summary: z$1.string().nullable().optional(),
13625
13667
  image: mediaSchema.nullable().optional()
13626
13668
  }).optional(),
@@ -13653,6 +13695,7 @@ const publicEventBaseSchema = z$1.object({
13653
13695
  "archived"
13654
13696
  ]).optional(),
13655
13697
  timeZone: z$1.string(),
13698
+ siteTimeZone: z$1.string().optional(),
13656
13699
  pricing: publicEventPricingSchema,
13657
13700
  paymentTerms: blockBookingPaymentTermsSchema,
13658
13701
  cancellationPolicy: z$1.object({ refunds: z$1.object({
@@ -29407,6 +29450,7 @@ const bookingMailingListContextSchema = z$1.unknown().transform((value) => {
29407
29450
  return parsed.ok ? parsed.value : void 0;
29408
29451
  });
29409
29452
  const bookingSourceSchema = z$1.object({
29453
+ demoEmailSuppressed: z$1.boolean().optional(),
29410
29454
  mailingList: bookingMailingListContextSchema.optional(),
29411
29455
  siteName: z$1.string().optional(),
29412
29456
  siteId: z$1.string().optional(),
@@ -29437,6 +29481,7 @@ const bookingDisplaySchema = z$1.object({
29437
29481
  message: z$1.string().nullable()
29438
29482
  });
29439
29483
  const bookingHydrationSchema = z$1.object({
29484
+ demoEmailSuppressed: z$1.boolean().optional(),
29440
29485
  mailingList: bookingMailingListContextSchema.optional(),
29441
29486
  siteName: z$1.string().optional(),
29442
29487
  formId: z$1.string().nullable(),
@@ -29484,6 +29529,7 @@ const bookingFormBlockRuntime = defineClientOwnedBlockRuntime({
29484
29529
  return {
29485
29530
  display: buildBookingFormDisplay(source, form),
29486
29531
  hydration: {
29532
+ demoEmailSuppressed: source.demoEmailSuppressed,
29487
29533
  mailingList: source.mailingList,
29488
29534
  siteName: source.siteName,
29489
29535
  formId: form?.id ?? source.formId ?? null,
@@ -29924,6 +29970,44 @@ function resolveEventCta(event, buttonText) {
29924
29970
  * timestamps become strings or date buckets. Calendar-grid primitives are
29925
29971
  * re-exported from @riverbankcms/calendar so block code has one import.
29926
29972
  */
29973
+ /**
29974
+ * The English locale a site's public dates are written in, read from the
29975
+ * site's own time zone (Will, 2026-09-26: "date style from site time zone").
29976
+ *
29977
+ * Sites don't store a locale, and every public word around a date is English,
29978
+ * so the only open question is which English conventions to follow: day or
29979
+ * month first, and a 24 or 12-hour clock. The site's time zone is the one
29980
+ * fact every site carries about where it is. It is the site's, never an
29981
+ * event's: a venue left at UTC must not turn a UK site's dates American.
29982
+ * Anywhere this can't place (UTC, the Americas, Asia) keeps US English, which
29983
+ * is what these helpers wrote before sites were placed at all.
29984
+ */
29985
+ function eventDateLocale(siteTimeZone) {
29986
+ if (!siteTimeZone) return "en-US";
29987
+ if (siteTimeZone === "Europe/Dublin") return "en-IE";
29988
+ if (siteTimeZone.startsWith("Europe/")) return "en-GB";
29989
+ if (siteTimeZone.startsWith("Australia/")) return "en-AU";
29990
+ if (siteTimeZone === "Pacific/Auckland" || siteTimeZone === "Pacific/Chatham") return "en-NZ";
29991
+ return "en-US";
29992
+ }
29993
+ /**
29994
+ * Formatting options for an event's dates: the times in the event's own zone,
29995
+ * written in its site's locale. A record from an older server that doesn't
29996
+ * name the site's zone falls back to the event's.
29997
+ */
29998
+ function eventDateOptions(place) {
29999
+ return {
30000
+ timeZone: place.timeZone ?? null,
30001
+ locale: eventDateLocale(place.siteTimeZone ?? place.timeZone)
30002
+ };
30003
+ }
30004
+ /**
30005
+ * Start and end times as cards write them, in the site's locale:
30006
+ * "10:00 to 16:00" in the UK, "10:00 AM to 4:00 PM" in the US.
30007
+ */
30008
+ function formatEventTimeRange$1(times, options) {
30009
+ return `${formatTime(times.startsAt, options)} to ${formatTime(times.endsAt, options)}`;
30010
+ }
29927
30011
  /** Use the event timezone when present, otherwise the calendar/site timezone. */
29928
30012
  function resolveEventTimeZone(event, calendarTimeZone) {
29929
30013
  return event.timeZone || calendarTimeZone;
@@ -29945,18 +30029,25 @@ function formatDate$2(isoTimestamp, options) {
29945
30029
  });
29946
30030
  }
29947
30031
  /**
29948
- * Format time for display.
29949
- * Returns: "10:00 AM"
30032
+ * Whether the locale reads a 24-hour clock, where hours are written with two
30033
+ * digits ("09:00"), as the dashboard writes them.
30034
+ */
30035
+ function usesTwentyFourHourClock(locale) {
30036
+ return new Intl.DateTimeFormat(locale, { hour: "numeric" }).resolvedOptions().hour12 === false;
30037
+ }
30038
+ /**
30039
+ * Format time for display, on the locale's own clock.
30040
+ * Returns: "9:00 AM" (en-US) or "09:00" (en-GB)
29950
30041
  */
29951
30042
  function formatTime(isoTimestamp, options) {
30043
+ const locale = options?.locale ?? "en-US";
29952
30044
  return formatBookingTime(toScheduledBookingDateTime({
29953
30045
  startsAt: isoTimestamp,
29954
30046
  timeZone: toBookingTimeZone(options?.timeZone ?? "UTC"),
29955
- locale: options?.locale ?? "en-US"
30047
+ locale
29956
30048
  }), {
29957
- hour: "numeric",
29958
- minute: "2-digit",
29959
- hour12: true
30049
+ hour: usesTwentyFourHourClock(locale) ? "2-digit" : "numeric",
30050
+ minute: "2-digit"
29960
30051
  });
29961
30052
  }
29962
30053
  function formatEventDateParts(args) {
@@ -29988,7 +30079,7 @@ function formatEventCompactDateRail(isoTimestamp, options) {
29988
30079
  locale: options?.locale ?? "en-US"
29989
30080
  });
29990
30081
  const weekday = formatBookingDate(dateTime, { weekday: "short" }).toLocaleUpperCase(options?.locale ?? "en-US");
29991
- const month = formatBookingDate(dateTime, { month: "short" }).toLocaleUpperCase(options?.locale ?? "en-US");
30082
+ const month = formatBookingDate(dateTime, { month: "short" }).slice(0, 3).toLocaleUpperCase(options?.locale ?? "en-US");
29992
30083
  return {
29993
30084
  weekday,
29994
30085
  day: formatBookingDate(dateTime, { day: "numeric" }),
@@ -30008,7 +30099,7 @@ function formatEventCompactDateRail(isoTimestamp, options) {
30008
30099
  * keep the fact panel on the same date and timezone rules as event rows.
30009
30100
  */
30010
30101
  function formatEventNextDateFact(event) {
30011
- const rail = formatEventCompactDateRail(event.startsAt, { timeZone: event.timeZone });
30102
+ const rail = formatEventCompactDateRail(event.startsAt, eventDateOptions(event));
30012
30103
  return {
30013
30104
  dateTime: event.startsAt,
30014
30105
  value: `${rail.weekday} ${rail.day} ${rail.month}`,
@@ -32797,6 +32888,13 @@ function ThemedAuthoredButton({ label, href, variant, size, extraClassName, disa
32797
32888
  }
32798
32889
  //#endregion
32799
32890
  //#region ../blocks/src/system/runtime/nodes/events/shared/EventCard.tsx
32891
+ /** The category's badge, when the event has a category. */
32892
+ function eventCardCategoryBadge(category) {
32893
+ return category ? {
32894
+ label: category.name,
32895
+ style: getCategoryBadgeStyle(category.color ?? null)
32896
+ } : null;
32897
+ }
32800
32898
  /**
32801
32899
  * EventCard Component
32802
32900
  *
@@ -32805,24 +32903,19 @@ function ThemedAuthoredButton({ label, href, variant, size, extraClassName, disa
32805
32903
  *
32806
32904
  * This component is server-safe (uses no client APIs like Intl).
32807
32905
  */
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 }) => {
32906
+ 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
32907
  const { presentation: cardPresentation, presentationClass, headingLevel: cardHeadingLevel } = resolveEventCardOptions({
32810
32908
  presentation,
32811
32909
  headingLevel
32812
32910
  });
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 })}`;
32911
+ const { formattedDate, formattedTime } = formatEventCardWhen(event);
32816
32912
  const cta = resolveEventCta(event, buttonText);
32817
32913
  const cardClass = boxStyleClassNames({ role: cardRole }, { baseClass: "event-card" });
32818
32914
  const title = event.title;
32819
32915
  const summary = event.presentation?.summary ?? event.description;
32820
32916
  const image = event.presentation?.image ?? null;
32821
32917
  const category = event.eventCategory;
32822
- const categoryBadge = category && showCategory ? {
32823
- label: category.name,
32824
- style: getCategoryBadgeStyle(category.color ?? null)
32825
- } : null;
32918
+ const categoryBadge = showCategory ? eventCardCategoryBadge(category) : null;
32826
32919
  const hasImage = Boolean(showImage && image);
32827
32920
  const dateFact = resolveEventCardDateFact({
32828
32921
  event,
@@ -32841,7 +32934,8 @@ const EventCard = ({ event, cardRole = "default", buttonVariant = "primary", but
32841
32934
  categoryId: category?.id,
32842
32935
  dateFact,
32843
32936
  hasImage,
32844
- image
32937
+ image,
32938
+ imageResolveContext
32845
32939
  }), /* @__PURE__ */ jsx(EventCardContent, {
32846
32940
  allowMap,
32847
32941
  buttonVariant,
@@ -32889,7 +32983,8 @@ function EventCardMedia(props) {
32889
32983
  /* @__PURE__ */ jsx(MediaNodeServer, {
32890
32984
  value: props.image,
32891
32985
  className: "event-card-image",
32892
- size: ImagePresets$1.card
32986
+ size: ImagePresets$1.card,
32987
+ imageResolveContext: props.imageResolveContext
32893
32988
  }),
32894
32989
  props.categoryBadge && /* @__PURE__ */ jsx("span", {
32895
32990
  className: "event-category-badge event-category-badge--overlay",
@@ -33004,6 +33099,17 @@ function resolveEventCardOptions(props) {
33004
33099
  headingLevel: props.headingLevel ?? 3
33005
33100
  };
33006
33101
  }
33102
+ /**
33103
+ * The card's date and times, written the way the event's place writes them
33104
+ * ("Friday, 16 October 2026" and "10:00 to 16:00" in the UK).
33105
+ */
33106
+ function formatEventCardWhen(event) {
33107
+ const options = eventDateOptions(event);
33108
+ return {
33109
+ formattedDate: formatDate$2(event.startsAt, options),
33110
+ formattedTime: formatEventTimeRange$1(event, options)
33111
+ };
33112
+ }
33007
33113
  function resolveEventCardDateFact(props) {
33008
33114
  if (!props.showImage || props.image || props.presentation !== "catalogue") return null;
33009
33115
  return formatEventNextDateFact(props.event);
@@ -33332,6 +33438,34 @@ function OfferingTitle({ className, path, title }) {
33332
33438
  });
33333
33439
  }
33334
33440
  //#endregion
33441
+ //#region ../blocks/src/system/runtime/nodes/events/shared/eventCardPresentations.ts
33442
+ /** A booking page's catalogue card: one per series, "See dates" for dated events. */
33443
+ function catalogueEventCardProps(event, buttonVariant = "primary") {
33444
+ return {
33445
+ presentation: "catalogue",
33446
+ headingLevel: 4,
33447
+ buttonVariant,
33448
+ buttonText: event.bookingScope === "single_occurrence" ? "See dates" : void 0,
33449
+ showMap: false,
33450
+ allowMap: false,
33451
+ showCategory: false,
33452
+ orientation: "vertical"
33453
+ };
33454
+ }
33455
+ /** An events listing's card, from the listing's display settings. */
33456
+ function listingEventCardProps(display) {
33457
+ return {
33458
+ cardRole: display.cardRole,
33459
+ buttonVariant: display.buttonVariant,
33460
+ buttonText: display.buttonText,
33461
+ showVenue: display.showVenue,
33462
+ showMap: display.showMap,
33463
+ allowMap: false,
33464
+ showCapacity: display.showCapacity,
33465
+ orientation: display.orientation
33466
+ };
33467
+ }
33468
+ //#endregion
33335
33469
  //#region ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
33336
33470
  const previewStageSchema = z$1.enum(["preview", "published"]);
33337
33471
  const registrationButtonVariantSchema = blockButtonRoleSchema;
@@ -34018,6 +34152,7 @@ const EVENT_REGISTRATION_SHELL_STEP_LABELS = [
34018
34152
  ];
34019
34153
  const eventRegistrationPublicEventSchema = z$1.preprocess(normalizeEventRegistrationEventInput, publicEventSchema);
34020
34154
  const eventRegistrationHydrationSchemaShape = {
34155
+ demoEmailSuppressed: z$1.boolean().optional(),
34021
34156
  occurrenceContext: occurrenceContextSchema.optional(),
34022
34157
  subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
34023
34158
  maxTickets: z$1.string().optional(),
@@ -34198,6 +34333,7 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
34198
34333
  ...eventSource,
34199
34334
  events: [...scopedSourceEvents]
34200
34335
  } : eventSource,
34336
+ demoEmailSuppressed: source.demoEmailSuppressed,
34201
34337
  maxTickets: source.maxTickets ?? void 0,
34202
34338
  showVenue: source.showVenue,
34203
34339
  showCapacity: source.showCapacity,
@@ -35256,6 +35392,7 @@ const shopSourceSchema = z$1.object({
35256
35392
  memberships: z$1.array(publicMembershipProductSchema).nullable().optional(),
35257
35393
  products: z$1.array(publicProductSchema).nullable().optional(),
35258
35394
  siteId: z$1.string().optional(),
35395
+ demoEmailSuppressed: z$1.boolean().optional(),
35259
35396
  apiBaseUrl: z$1.string().optional(),
35260
35397
  readAuthority: browserReadAuthoritySchema.optional(),
35261
35398
  stage: previewStageSchema.optional()
@@ -35375,7 +35512,8 @@ const checkoutDisplaySchema = z$1.object({
35375
35512
  const passesMembershipsHydrationSchema = z$1.object({
35376
35513
  memberships: z$1.array(publicMembershipProductSchema),
35377
35514
  passPurchaseMode: z$1.enum(["add_to_cart", "buy_now"]),
35378
- buttonVariant: blockButtonRoleSchema
35515
+ buttonVariant: blockButtonRoleSchema,
35516
+ demoEmailSuppressed: z$1.boolean().optional()
35379
35517
  });
35380
35518
  const productListHydrationSchema = z$1.object({
35381
35519
  products: z$1.array(publicProductSchema),
@@ -35397,7 +35535,8 @@ const cartHydrationSchema = z$1.object({
35397
35535
  });
35398
35536
  const checkoutHydrationSchema = z$1.object({
35399
35537
  emptyStateText: z$1.string(),
35400
- submitButtonText: z$1.string()
35538
+ submitButtonText: z$1.string(),
35539
+ demoEmailSuppressed: z$1.boolean().optional()
35401
35540
  });
35402
35541
  const passesMembershipsRenderSchema = z$1.object({
35403
35542
  display: passesMembershipsDisplaySchema,
@@ -35456,7 +35595,8 @@ const shopBlockRuntime = defineProgressiveBlockRuntime({
35456
35595
  hydration: {
35457
35596
  memberships: source.showMemberships === false ? [] : source.memberships ?? [],
35458
35597
  passPurchaseMode,
35459
- buttonVariant: source.buttonVariant ?? "primary"
35598
+ buttonVariant: source.buttonVariant ?? "primary",
35599
+ demoEmailSuppressed: source.demoEmailSuppressed
35460
35600
  }
35461
35601
  };
35462
35602
  }
@@ -35549,7 +35689,8 @@ const checkoutBlockRuntime = defineClientOwnedBlockRuntime({
35549
35689
  }),
35550
35690
  hydration: {
35551
35691
  emptyStateText: source.emptyStateText ?? "Add something to your cart to continue.",
35552
- submitButtonText: source.submitButtonText ?? "Checkout"
35692
+ submitButtonText: source.submitButtonText ?? "Checkout",
35693
+ demoEmailSuppressed: source.demoEmailSuppressed
35553
35694
  }
35554
35695
  })
35555
35696
  });
@@ -37218,6 +37359,7 @@ const SDK_EVENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
37218
37359
  responseKind: "json",
37219
37360
  errors: [
37220
37361
  "resource:not_found",
37362
+ "validation:invalid_input",
37221
37363
  "resource:conflict",
37222
37364
  "server:internal_error"
37223
37365
  ]
@@ -37672,28 +37814,6 @@ const EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
37672
37814
  "resource:conflict",
37673
37815
  "server:internal_error"
37674
37816
  ]
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
37817
  }
37698
37818
  });
37699
37819
  //#endregion
@@ -38118,6 +38238,15 @@ const BILLING_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
38118
38238
  auth: "user",
38119
38239
  responseKind: "json"
38120
38240
  },
38241
+ /** Continue on Free from the onboarding card page; only the attempt's owner. */
38242
+ continueOnboardingOnFree: {
38243
+ path: "/onboarding/attempts/{attemptToken}/plan/free",
38244
+ method: "POST",
38245
+ tags: ["billing"],
38246
+ auth: "user",
38247
+ errors: [],
38248
+ responseKind: "json"
38249
+ },
38121
38250
  createBillingPortalSession: {
38122
38251
  path: "/billing/portal/session",
38123
38252
  method: "POST",
@@ -38127,6 +38256,161 @@ const BILLING_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
38127
38256
  }
38128
38257
  });
38129
38258
  //#endregion
38259
+ //#region ../api/src/editLeaseEndpoints.ts
38260
+ const path = "/sites/{siteId}/edit-leases/{nodeType}/{nodeId}";
38261
+ const lifecycleErrors = [
38262
+ "auth:lease_required",
38263
+ "auth:forbidden",
38264
+ "resource:not_found",
38265
+ "validation:invalid_input",
38266
+ "server:internal_error"
38267
+ ];
38268
+ const EDIT_LEASE_ENDPOINT_DEFINITIONS = {
38269
+ readEditLease: {
38270
+ path,
38271
+ method: "GET",
38272
+ editLease: "lifecycle",
38273
+ errors: lifecycleErrors,
38274
+ auth: "user",
38275
+ responseKind: "json"
38276
+ },
38277
+ acquireEditLease: {
38278
+ path,
38279
+ method: "POST",
38280
+ editLease: "lifecycle",
38281
+ errors: lifecycleErrors,
38282
+ auth: "user",
38283
+ responseKind: "json"
38284
+ },
38285
+ takeOverEditLease: {
38286
+ path,
38287
+ method: "PUT",
38288
+ editLease: "lifecycle",
38289
+ errors: lifecycleErrors,
38290
+ auth: "user",
38291
+ responseKind: "json"
38292
+ },
38293
+ heartbeatEditLease: {
38294
+ path,
38295
+ method: "PATCH",
38296
+ editLease: "lifecycle",
38297
+ errors: [...lifecycleErrors, "auth:lease_lost"],
38298
+ auth: "user",
38299
+ responseKind: "json"
38300
+ },
38301
+ releaseEditLease: {
38302
+ path,
38303
+ method: "DELETE",
38304
+ editLease: "lifecycle",
38305
+ errors: lifecycleErrors,
38306
+ auth: "user",
38307
+ responseKind: "json"
38308
+ }
38309
+ };
38310
+ //#endregion
38311
+ //#region ../api/src/pageSurfaceEditorEndpoints.ts
38312
+ const surfaceTags = [TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById];
38313
+ const PAGE_SURFACE_EDITOR_ENDPOINT_DEFINITIONS = {
38314
+ getPageSurfaceEditorDocument: {
38315
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/content",
38316
+ method: "GET",
38317
+ errors: [
38318
+ "auth:forbidden",
38319
+ "validation:invalid_input",
38320
+ "resource:not_found",
38321
+ "resource:conflict",
38322
+ "server:internal_error"
38323
+ ],
38324
+ tags: surfaceTags,
38325
+ auth: "user",
38326
+ responseKind: "json"
38327
+ },
38328
+ updatePageSurfaceDraftContent: {
38329
+ editLease: "managed",
38330
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/content",
38331
+ method: "PUT",
38332
+ errors: [
38333
+ "validation:invalid_input",
38334
+ "resource:not_found",
38335
+ "resource:conflict",
38336
+ "server:internal_error"
38337
+ ],
38338
+ tags: surfaceTags,
38339
+ auth: "user",
38340
+ responseKind: "json"
38341
+ },
38342
+ discardPageSurfaceDraftContent: {
38343
+ editLease: "managed",
38344
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/content/draft",
38345
+ method: "DELETE",
38346
+ errors: [
38347
+ "validation:invalid_input",
38348
+ "resource:not_found",
38349
+ "resource:conflict",
38350
+ "server:internal_error"
38351
+ ],
38352
+ tags: surfaceTags,
38353
+ auth: "user",
38354
+ responseKind: "json"
38355
+ },
38356
+ updatePageSurfaceRouteMetadata: {
38357
+ editLease: "managed",
38358
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/metadata",
38359
+ method: "PATCH",
38360
+ errors: [
38361
+ "validation:invalid_input",
38362
+ "resource:not_found",
38363
+ "resource:conflict",
38364
+ "server:internal_error"
38365
+ ],
38366
+ tags: [
38367
+ TAG_TEMPLATES.siteCollection,
38368
+ TAG_TEMPLATES.siteRoutableContent,
38369
+ TAG_TEMPLATES.pageSurfaceById
38370
+ ],
38371
+ auth: "user",
38372
+ responseKind: "json"
38373
+ },
38374
+ publishPageSurface: {
38375
+ editLease: "managed",
38376
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/publication",
38377
+ method: "POST",
38378
+ errors: [
38379
+ "auth:forbidden",
38380
+ "validation:invalid_input",
38381
+ "resource:not_found",
38382
+ "resource:conflict",
38383
+ "server:internal_error"
38384
+ ],
38385
+ tags: [
38386
+ TAG_TEMPLATES.siteCollection,
38387
+ TAG_TEMPLATES.siteRoutableContent,
38388
+ TAG_TEMPLATES.pageSurfaceById
38389
+ ],
38390
+ auth: "user",
38391
+ responseKind: "json"
38392
+ },
38393
+ saveEventContentTab: {
38394
+ editLease: "managed",
38395
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/event-content",
38396
+ method: "PUT",
38397
+ errors: [
38398
+ "auth:forbidden",
38399
+ "validation:invalid_input",
38400
+ "resource:not_found",
38401
+ "resource:conflict",
38402
+ "server:internal_error"
38403
+ ],
38404
+ tags: [
38405
+ TAG_TEMPLATES.siteCollection,
38406
+ TAG_TEMPLATES.siteRoutableContent,
38407
+ TAG_TEMPLATES.pageSurfaceById
38408
+ ],
38409
+ auth: "user",
38410
+ responseKind: "json"
38411
+ }
38412
+ };
38413
+ //#endregion
38130
38414
  //#region ../api/src/bookingPeopleEndpointDefinitions.ts
38131
38415
  /**
38132
38416
  * People endpoints (#1356): the People list, its CSV export, and deleting a
@@ -38219,6 +38503,8 @@ const API_ENDPOINTS$1 = {
38219
38503
  ...GIFTING_ENDPOINT_DEFINITIONS,
38220
38504
  ...PUBLIC_READ_ENDPOINT_DEFINITIONS,
38221
38505
  ...BILLING_ENDPOINT_DEFINITIONS,
38506
+ ...EDIT_LEASE_ENDPOINT_DEFINITIONS,
38507
+ ...PAGE_SURFACE_EDITOR_ENDPOINT_DEFINITIONS,
38222
38508
  ...SITE_MANAGEMENT_ENDPOINT_DEFINITIONS,
38223
38509
  aiContentUpdateChat: {
38224
38510
  path: "/ai/content-update-chat",
@@ -38240,6 +38526,7 @@ const API_ENDPOINTS$1 = {
38240
38526
  responseKind: "json"
38241
38527
  },
38242
38528
  aiDesignerPageOpsApply: {
38529
+ editLease: "managed",
38243
38530
  path: "/sites/{siteId}/ai/designer/page/apply",
38244
38531
  method: "POST",
38245
38532
  tags: [TAG_TEMPLATES.siteCollection],
@@ -39074,6 +39361,7 @@ const API_ENDPOINTS$1 = {
39074
39361
  responseKind: "json"
39075
39362
  },
39076
39363
  restoreContentEntryVersion: {
39364
+ editLease: "managed",
39077
39365
  path: "/sites/{siteId}/content/{type}/{entryId}/versions/{versionId}/restore",
39078
39366
  method: "POST",
39079
39367
  errors: [
@@ -39091,6 +39379,7 @@ const API_ENDPOINTS$1 = {
39091
39379
  responseKind: "json"
39092
39380
  },
39093
39381
  updateContentEntryContent: {
39382
+ editLease: "managed",
39094
39383
  path: "/sites/{siteId}/content/{type}/{entryId}/content",
39095
39384
  method: "PUT",
39096
39385
  tags: [
@@ -39107,67 +39396,6 @@ const API_ENDPOINTS$1 = {
39107
39396
  ],
39108
39397
  responseKind: "json"
39109
39398
  },
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
39399
  runSdkWorkflow: {
39172
39400
  path: "/sites/{siteId}/content/{type}/{entryId}/workflows/{workflowId}/run",
39173
39401
  method: "POST",
@@ -39204,6 +39432,7 @@ const API_ENDPOINTS$1 = {
39204
39432
  responseKind: "json"
39205
39433
  },
39206
39434
  updateRouteMetadata: {
39435
+ editLease: "managed",
39207
39436
  path: "/sites/{siteId}/routes/{routeId}/metadata",
39208
39437
  method: "PATCH",
39209
39438
  tags: [
@@ -39221,6 +39450,7 @@ const API_ENDPOINTS$1 = {
39221
39450
  responseKind: "json"
39222
39451
  },
39223
39452
  publishContentEntry: {
39453
+ editLease: "managed",
39224
39454
  path: "/sites/{siteId}/content/{type}/{entryId}/publish",
39225
39455
  method: "POST",
39226
39456
  tags: [
@@ -39232,6 +39462,7 @@ const API_ENDPOINTS$1 = {
39232
39462
  responseKind: "json"
39233
39463
  },
39234
39464
  scheduleContentEntry: {
39465
+ editLease: "managed",
39235
39466
  path: "/sites/{siteId}/content/{type}/{entryId}/schedule",
39236
39467
  method: "POST",
39237
39468
  tags: [
@@ -39249,6 +39480,7 @@ const API_ENDPOINTS$1 = {
39249
39480
  responseKind: "json"
39250
39481
  },
39251
39482
  cancelScheduledContentEntry: {
39483
+ editLease: "managed",
39252
39484
  path: "/sites/{siteId}/content/{type}/{entryId}/schedule",
39253
39485
  method: "DELETE",
39254
39486
  tags: [
@@ -39266,6 +39498,7 @@ const API_ENDPOINTS$1 = {
39266
39498
  responseKind: "json"
39267
39499
  },
39268
39500
  discardContentEntry: {
39501
+ editLease: "managed",
39269
39502
  path: "/sites/{siteId}/content/{type}/{entryId}/discard",
39270
39503
  method: "POST",
39271
39504
  tags: [
@@ -39284,6 +39517,7 @@ const API_ENDPOINTS$1 = {
39284
39517
  responseKind: "json"
39285
39518
  },
39286
39519
  unpublishContentEntry: {
39520
+ editLease: "managed",
39287
39521
  path: "/sites/{siteId}/content/{type}/{entryId}/unpublish",
39288
39522
  method: "POST",
39289
39523
  tags: [
@@ -39325,6 +39559,7 @@ const API_ENDPOINTS$1 = {
39325
39559
  responseKind: "json"
39326
39560
  },
39327
39561
  deleteContentEntry: {
39562
+ editLease: "managed",
39328
39563
  path: "/sites/{siteId}/content/{type}/{entryId}",
39329
39564
  method: "DELETE",
39330
39565
  tags: [
@@ -40534,6 +40769,7 @@ const API_ENDPOINTS$1 = {
40534
40769
  responseKind: "json"
40535
40770
  },
40536
40771
  saveBlockContent: {
40772
+ editLease: "owner-derived",
40537
40773
  path: "/blocks/{blockId}/content",
40538
40774
  method: "POST",
40539
40775
  tags: [
@@ -40571,6 +40807,7 @@ const API_ENDPOINTS$1 = {
40571
40807
  errors: ["resource:not_found", "resource:conflict"]
40572
40808
  },
40573
40809
  createEntrySlotBlock: {
40810
+ editLease: "managed",
40574
40811
  path: "/sites/{siteId}/content/{type}/{entryId}/slots/{slotKey}/blocks",
40575
40812
  method: "POST",
40576
40813
  tags: [
@@ -40588,6 +40825,7 @@ const API_ENDPOINTS$1 = {
40588
40825
  ]
40589
40826
  },
40590
40827
  reorderEntrySlotBlocks: {
40828
+ editLease: "managed",
40591
40829
  path: "/sites/{siteId}/content/{type}/{entryId}/slots/{slotKey}/blocks/reorder",
40592
40830
  method: "POST",
40593
40831
  tags: [
@@ -40605,6 +40843,7 @@ const API_ENDPOINTS$1 = {
40605
40843
  ]
40606
40844
  },
40607
40845
  deleteEntrySlotBlock: {
40846
+ editLease: "managed",
40608
40847
  path: "/sites/{siteId}/content/{type}/{entryId}/slots/{slotKey}/blocks/{blockId}",
40609
40848
  method: "DELETE",
40610
40849
  tags: [
@@ -40635,6 +40874,7 @@ const API_ENDPOINTS$1 = {
40635
40874
  ]
40636
40875
  },
40637
40876
  createPageSurfaceSlotBlock: {
40877
+ editLease: "managed",
40638
40878
  path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/slots/{slotKey}/blocks",
40639
40879
  method: "POST",
40640
40880
  tags: [
@@ -40653,6 +40893,7 @@ const API_ENDPOINTS$1 = {
40653
40893
  ]
40654
40894
  },
40655
40895
  reorderPageSurfaceSlotBlocks: {
40896
+ editLease: "managed",
40656
40897
  path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/slots/{slotKey}/blocks/reorder",
40657
40898
  method: "POST",
40658
40899
  tags: [
@@ -40671,6 +40912,7 @@ const API_ENDPOINTS$1 = {
40671
40912
  ]
40672
40913
  },
40673
40914
  deletePageSurfaceSlotBlock: {
40915
+ editLease: "managed",
40674
40916
  path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/slots/{slotKey}/blocks/{blockId}",
40675
40917
  method: "DELETE",
40676
40918
  tags: [
@@ -40688,6 +40930,7 @@ const API_ENDPOINTS$1 = {
40688
40930
  ]
40689
40931
  },
40690
40932
  createBlock: {
40933
+ editLease: "managed",
40691
40934
  path: "/sites/{siteId}/pages/{pageId}/blocks",
40692
40935
  method: "POST",
40693
40936
  tags: [
@@ -40699,6 +40942,7 @@ const API_ENDPOINTS$1 = {
40699
40942
  responseKind: "json"
40700
40943
  },
40701
40944
  reorderBlocks: {
40945
+ editLease: "managed",
40702
40946
  path: "/sites/{siteId}/pages/{pageId}/blocks/reorder",
40703
40947
  method: "POST",
40704
40948
  tags: [
@@ -40710,6 +40954,7 @@ const API_ENDPOINTS$1 = {
40710
40954
  responseKind: "json"
40711
40955
  },
40712
40956
  deleteBlock: {
40957
+ editLease: "managed",
40713
40958
  path: "/sites/{siteId}/pages/{pageId}/blocks/{blockId}",
40714
40959
  method: "DELETE",
40715
40960
  tags: [
@@ -40755,6 +41000,7 @@ const API_ENDPOINTS$1 = {
40755
41000
  responseKind: "json"
40756
41001
  },
40757
41002
  publishPageDraft: {
41003
+ editLease: "managed",
40758
41004
  path: "/sites/{siteId}/pages/{pageId}/publish",
40759
41005
  method: "POST",
40760
41006
  tags: [TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById],
@@ -40762,6 +41008,7 @@ const API_ENDPOINTS$1 = {
40762
41008
  responseKind: "json"
40763
41009
  },
40764
41010
  discardPageDraft: {
41011
+ editLease: "managed",
40765
41012
  path: "/sites/{siteId}/pages/{pageId}/discard",
40766
41013
  method: "POST",
40767
41014
  tags: [TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById],
@@ -40777,6 +41024,7 @@ const API_ENDPOINTS$1 = {
40777
41024
  errors: ["resource:not_found", "server:internal_error"]
40778
41025
  },
40779
41026
  savePageDesignState: {
41027
+ editLease: "managed",
40780
41028
  path: "/sites/{siteId}/pages/{pageId}/design-state",
40781
41029
  method: "POST",
40782
41030
  tags: [TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById],
@@ -40806,6 +41054,7 @@ const API_ENDPOINTS$1 = {
40806
41054
  responseKind: "json"
40807
41055
  },
40808
41056
  restorePageVersion: {
41057
+ editLease: "managed",
40809
41058
  path: "/sites/{siteId}/pages/{pageId}/versions/{versionId}/restore",
40810
41059
  method: "POST",
40811
41060
  errors: [
@@ -40819,6 +41068,7 @@ const API_ENDPOINTS$1 = {
40819
41068
  responseKind: "json"
40820
41069
  },
40821
41070
  applyPageDesignEditorAction: {
41071
+ editLease: "managed",
40822
41072
  path: "/sites/{siteId}/pages/{pageId}/design/actions",
40823
41073
  method: "POST",
40824
41074
  tags: [TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById],
@@ -43584,6 +43834,8 @@ const API_ERROR_CODE_SET = /* @__PURE__ */ new Set([
43584
43834
  "auth:sudo_required",
43585
43835
  "auth:insufficient_permissions",
43586
43836
  "auth:impersonation_restricted",
43837
+ "auth:lease_required",
43838
+ "auth:lease_lost",
43587
43839
  "validation:invalid_input",
43588
43840
  "validation:missing_field",
43589
43841
  "validation:invalid_format",
@@ -48800,14 +49052,7 @@ function renderEventListItem(event, display) {
48800
49052
  }, event.occurrenceId || event.id);
48801
49053
  return /* @__PURE__ */ jsx(EventCard, {
48802
49054
  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
49055
+ ...listingEventCardProps(display)
48811
49056
  }, event.occurrenceId || event.id);
48812
49057
  }
48813
49058
  //#endregion
@@ -49213,14 +49458,7 @@ function OfferingsCatalogue(props) {
49213
49458
  style: { gridTemplateColumns: "repeat(auto-fill, minmax(min(100%, 18rem), 1fr))" },
49214
49459
  children: events.map((event) => /* @__PURE__ */ jsx(EventCard, {
49215
49460
  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"
49461
+ ...catalogueEventCardProps(event, props.buttonVariant ?? "primary")
49224
49462
  }, event.seriesId))
49225
49463
  })]
49226
49464
  }, group.sourceKey))
@@ -49508,45 +49746,73 @@ function FeaturedOfferingSummary({ item }) {
49508
49746
  }
49509
49747
  function featuredSummaryDetails(item) {
49510
49748
  switch (item.kind) {
49511
- case "event": return formatFeaturedSummary(deriveEventScheduleSummary(item.event), item.event.venue?.name ?? null);
49749
+ case "event": return formatFeaturedSummary(deriveEventScheduleSummary(item.event), {
49750
+ venue: item.event.venue?.name ?? null,
49751
+ siteTimeZone: item.event.siteTimeZone
49752
+ });
49512
49753
  case "run": {
49513
49754
  const schedule = derivePreviewRunSchedule(item.run.run.sessions);
49514
- return schedule.kind === "scheduled" ? formatFeaturedSummary(schedule.summary, item.run.representative.venue?.name ?? null) : null;
49755
+ return schedule.kind === "scheduled" ? formatFeaturedSummary(schedule.summary, {
49756
+ venue: item.run.representative.venue?.name ?? null,
49757
+ siteTimeZone: item.run.representative.siteTimeZone
49758
+ }) : null;
49515
49759
  }
49516
49760
  default: return assertNever$20(item, "Unhandled offerings preview item");
49517
49761
  }
49518
49762
  }
49519
- function formatFeaturedSummary(summary, venue) {
49763
+ function formatFeaturedSummary(summary, place) {
49520
49764
  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`);
49765
+ case "single-occurrence": return detailsFromOccurrences({
49766
+ first: summary.occurrence,
49767
+ last: null,
49768
+ place
49769
+ });
49770
+ case "multi-day-span": return detailsFromOccurrences({
49771
+ first: summary.occurrence,
49772
+ last: summary.occurrence,
49773
+ place,
49774
+ spanUsesEndDate: true
49775
+ });
49776
+ case "fixed-recurring-run": return detailsFromOccurrences({
49777
+ first: summary.first,
49778
+ last: summary.last,
49779
+ place,
49780
+ recurrence: summary.recurrenceLabel
49781
+ });
49782
+ case "irregular-multi-session-run": return detailsFromOccurrences({
49783
+ first: summary.first,
49784
+ last: summary.last,
49785
+ place,
49786
+ sessionCount: `${summary.sessionCount} dates`
49787
+ });
49525
49788
  default: return assertNever$20(summary, "Unhandled offerings preview schedule summary");
49526
49789
  }
49527
49790
  }
49528
- function detailsFromOccurrences(first, last, venue, recurrence, sessionCount, spanUsesEndDate = false) {
49529
- const endDateTime = spanUsesEndDate ? first.endsAt : last?.startsAt ?? first.startsAt;
49791
+ function detailsFromOccurrences(input) {
49792
+ const { first, last, place } = input;
49793
+ const endDateTime = input.spanUsesEndDate ? first.endsAt : last?.startsAt ?? first.startsAt;
49794
+ const options = eventDateOptions({
49795
+ timeZone: first.timeZone,
49796
+ siteTimeZone: place.siteTimeZone
49797
+ });
49798
+ const summaryDate = (isoTimestamp, timeZone) => formatSummaryDate(isoTimestamp, {
49799
+ timeZone,
49800
+ locale: options.locale
49801
+ });
49530
49802
  return {
49531
- startDate: formatSummaryDate(first.startsAt, first.timeZone),
49803
+ startDate: summaryDate(first.startsAt, first.timeZone),
49532
49804
  startDateTime: first.startsAt,
49533
- endDate: last ? formatSummaryDate(endDateTime, last.timeZone) : null,
49805
+ endDate: last ? summaryDate(endDateTime, last.timeZone) : null,
49534
49806
  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,
49807
+ timeRange: formatEventTimeRange$1(first, options),
49808
+ recurrence: input.recurrence ?? null,
49809
+ sessionCount: input.sessionCount ?? null,
49810
+ venue: place.venue
49811
+ };
49812
+ }
49813
+ function formatSummaryDate(isoTimestamp, options) {
49814
+ return new Intl.DateTimeFormat(options.locale, {
49815
+ timeZone: options.timeZone,
49550
49816
  weekday: "long",
49551
49817
  day: "numeric",
49552
49818
  month: "long",
@@ -49593,9 +49859,12 @@ function WholeSeriesRunCompactRow({ group, path, now }) {
49593
49859
  path
49594
49860
  });
49595
49861
  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 })}`;
49862
+ const options = eventDateOptions({
49863
+ timeZone: firstSession.timeZone,
49864
+ siteTimeZone: group.representative.siteTimeZone
49865
+ });
49866
+ const dateRail = formatEventCompactDateRail(firstSession.startsAt, options);
49867
+ const timeRange = formatEventTimeRange$1(firstSession, options);
49599
49868
  const price = formatEventPriceDisplay(group.representative.pricing);
49600
49869
  const statusLabel = resolveWholeSeriesBookingPhase(group.run, now).kind === "open" ? null : "Registration closed";
49601
49870
  return /* @__PURE__ */ jsxs("article", {
@@ -49675,9 +49944,12 @@ function WholeSeriesRunFeatureCard({ group, now, path, buttonVariant, buttonText
49675
49944
  path
49676
49945
  });
49677
49946
  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 })}`;
49947
+ const options = eventDateOptions({
49948
+ timeZone: firstSession.timeZone,
49949
+ siteTimeZone: group.representative.siteTimeZone
49950
+ });
49951
+ const formattedDate = formatEventCompactDateRail(firstSession.startsAt, options).label;
49952
+ const timeRange = formatEventTimeRange$1(firstSession, options);
49681
49953
  const price = formatEventPriceDisplay(group.representative.pricing);
49682
49954
  const statusLabel = resolveWholeSeriesBookingPhase(group.run, now).kind === "open" ? null : "Registration closed";
49683
49955
  const description = group.representative.description;
@@ -50135,6 +50407,10 @@ const checkoutBlockDefinition = {
50135
50407
  baseClass: "",
50136
50408
  spacing: "spacious",
50137
50409
  children: sectionContainer([checkout(withApiBindings({
50410
+ demoEmailSuppressed: { $bind: {
50411
+ from: "$root.demoEmailSuppressed",
50412
+ fallback: false
50413
+ } },
50138
50414
  readAuthority: { $bind: { from: "$root.readAuthority" } },
50139
50415
  mode: "checkout",
50140
50416
  heading: { $bind: {
@@ -50390,8 +50666,8 @@ const eventRegistrationBlockDefinition = {
50390
50666
  description: "Message shown after successful registration",
50391
50667
  required: false,
50392
50668
  multiline: true,
50393
- defaultValue: "Thank you for registering! Check your email for confirmation details.",
50394
- maxLength: 500
50669
+ maxLength: 500,
50670
+ ui: { placeholder: "Thank you for registering! Check your email for confirmation details." }
50395
50671
  },
50396
50672
  {
50397
50673
  id: "buttonText",
@@ -50412,6 +50688,10 @@ const eventRegistrationBlockDefinition = {
50412
50688
  text({ as: "h2" }, bind("content.heading"), when("content.heading")),
50413
50689
  richText({ className: "rb-prose rb-max-w-none" }, bind("content.description"), when("content.description")),
50414
50690
  eventRegistration(withApiBindings({
50691
+ demoEmailSuppressed: { $bind: {
50692
+ from: "$root.demoEmailSuppressed",
50693
+ fallback: false
50694
+ } },
50415
50695
  readAuthority: { $bind: { from: "$root.readAuthority" } },
50416
50696
  occurrenceContext: { $bind: { from: "$root.occurrenceContext" } },
50417
50697
  subject: { $bind: { from: "$root.subject" } },
@@ -52699,6 +52979,10 @@ const shopBlockDefinition = {
52699
52979
  spacing: "spacious",
52700
52980
  children: sectionContainer([shop(withApiBindings({
52701
52981
  readAuthority: { $bind: { from: "$root.readAuthority" } },
52982
+ demoEmailSuppressed: { $bind: {
52983
+ from: "$root.demoEmailSuppressed",
52984
+ fallback: false
52985
+ } },
52702
52986
  mode: "passes-memberships",
52703
52987
  showPasses: { $bind: {
52704
52988
  from: "content.showPasses",
@@ -53189,11 +53473,12 @@ function CartSSR({ blockId, siteId, apiBaseUrl, stage, children, ...rest }) {
53189
53473
  }
53190
53474
  //#endregion
53191
53475
  //#region ../blocks/src/system/runtime/nodes/checkout.server.tsx
53192
- function CheckoutSSR({ blockId, siteId, apiBaseUrl, stage, children, ...rest }) {
53476
+ function CheckoutSSR({ blockId, siteId, apiBaseUrl, stage, demoEmailSuppressed, children, ...rest }) {
53193
53477
  const islandProps = buildCheckoutInteractiveIslandProps({
53194
53478
  siteId,
53195
53479
  apiBaseUrl,
53196
53480
  stage,
53481
+ demoEmailSuppressed,
53197
53482
  ...rest
53198
53483
  });
53199
53484
  return /* @__PURE__ */ jsxs("div", {
@@ -59389,6 +59674,7 @@ function buildPageRendererRootRuntime(dataContext) {
59389
59674
  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
59675
  return {
59391
59676
  siteId,
59677
+ demoEmailSuppressed: resolveDemoEmailSuppression(dataContext),
59392
59678
  siteName,
59393
59679
  pageId,
59394
59680
  pathname,
@@ -59404,6 +59690,9 @@ function buildPageRendererRootRuntime(dataContext) {
59404
59690
  loaderFailures
59405
59691
  };
59406
59692
  }
59693
+ function resolveDemoEmailSuppression(dataContext) {
59694
+ return dataContext?.demoEmailSuppressed === true;
59695
+ }
59407
59696
  //#endregion
59408
59697
  //#region ../blocks/src/pageRenderAudience.tsx
59409
59698
  /**
@@ -63887,6 +64176,10 @@ const bookingDescription = richText({}, bind("content.description"), when("conte
63887
64176
  * that hydration never rewrites.
63888
64177
  */
63889
64178
  const bookingWizard = bookingForm(withApiBindings({
64179
+ demoEmailSuppressed: { $bind: {
64180
+ from: "$root.demoEmailSuppressed",
64181
+ fallback: false
64182
+ } },
63890
64183
  portalToken: { $bind: {
63891
64184
  from: "$root.portalToken",
63892
64185
  fallback: null
@@ -69000,15 +69293,17 @@ function planNewsletterBlockSubmission(placement) {
69000
69293
  sourceRef
69001
69294
  } : { tag: "unavailable" };
69002
69295
  }
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" };
69296
+ const published = placement.publishedPlacement;
69297
+ if (published === null) return placement.stage === "preview" ? { tag: "unpublished-form" } : { tag: "unavailable" };
69298
+ switch (published.kind) {
69299
+ case "incomplete": return { tag: "unpublished-settings" };
69300
+ case "published": return planNewsletterPreviewSubmission({
69301
+ blockId: placement.blockId,
69302
+ publishedContentId: published.id,
69303
+ renderedContent: placement.renderedContent,
69304
+ publishedContent: published.content
69305
+ });
69306
+ }
69012
69307
  }
69013
69308
  /** Decide whether the visible draft can safely cite the published placement. */
69014
69309
  function planNewsletterPreviewSubmission(placement) {
@@ -69255,19 +69550,6 @@ function createBlockErrorBoundary() {
69255
69550
  const BlockErrorBoundary = createBlockErrorBoundary();
69256
69551
  //#endregion
69257
69552
  //#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
69553
  function toPresentationPage(page) {
69272
69554
  if (!page) return null;
69273
69555
  return {
@@ -86963,9 +87245,17 @@ function readBlockContentId(value, name) {
86963
87245
  function readTransportedBlockIdentity(block, kind, stage) {
86964
87246
  return {
86965
87247
  draftContentId: readBlockContentId(block.draftContentId, "draft content id"),
86966
- publishedPlacement: stage === "preview" ? readPublishedBlockPlacement(readBlockContentId(block.publishedContentId, "published content id"), sanitizeNullableSdkRuntimeBlockContent(kind, readNestedContentRecord(block.publishedContent))) : null
87248
+ publishedPlacement: stage === "preview" ? readSdkPreviewPublishedPlacement(block, kind) : null
86967
87249
  };
86968
87250
  }
87251
+ /** Pair SDK preview publication data whether it is transported or already admitted. */
87252
+ function readSdkPreviewPublishedPlacement(block, kind) {
87253
+ if (block.publishedPlacement !== void 0 && block.publishedPlacement !== null) {
87254
+ if (!isRecord$5(block.publishedPlacement)) throw new Error("Invalid published placement in page");
87255
+ return readPublishedBlockPlacement(readBlockContentId(block.publishedPlacement.id, "published content id"), sanitizeNullableSdkRuntimeBlockContent(kind, readContentRecord(block.publishedPlacement.content) ?? null));
87256
+ }
87257
+ return readPublishedBlockPlacement(readBlockContentId(block.publishedContentId, "published content id"), sanitizeNullableSdkRuntimeBlockContent(kind, readSdkPublishedContentRecord(block.publishedContent)));
87258
+ }
86969
87259
  function convertPageResponseBlock(block, stage) {
86970
87260
  if (!isRecord$5(block)) throw new Error("Invalid block format in page API response");
86971
87261
  const header = readTransportedBlockHeader(block);
@@ -87074,6 +87364,10 @@ function readNestedContentRecord(value) {
87074
87364
  if (!isRecord$5(value)) return null;
87075
87365
  return readContentRecord(value.data) ?? null;
87076
87366
  }
87367
+ function readSdkPublishedContentRecord(value) {
87368
+ if (!isRecord$5(value)) return null;
87369
+ return "data" in value ? readContentRecord(value.data) ?? null : value;
87370
+ }
87077
87371
  function sanitizeSdkRuntimeBlockContent(blockKind, content) {
87078
87372
  if (blockKind !== "block.newsletter-signup") return content;
87079
87373
  const sanitized = sanitizeNewsletterSignupPublicContent(content);
@@ -87964,20 +88258,20 @@ const BUILTIN_CONTENT_TYPE_SCHEMAS = {
87964
88258
  id: "summary",
87965
88259
  type: "textarea",
87966
88260
  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.",
88261
+ description: "Shown in your listings and search results, and at the top of its page.",
87968
88262
  rows: 3
87969
88263
  },
87970
88264
  {
87971
88265
  id: "image",
87972
88266
  type: "media",
87973
88267
  label: "Event image",
87974
- description: "Choose the main image people will see wherever the event is listed and on its page."
88268
+ description: "At the top of its page and beside it in your listings."
87975
88269
  },
87976
88270
  {
87977
88271
  id: "body",
87978
88272
  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."
88273
+ label: "Full description",
88274
+ description: "The main text on its page, under the introduction."
87981
88275
  }
87982
88276
  ],
87983
88277
  routing: {
@@ -88398,7 +88692,6 @@ const DEFAULT_TEMPLATE_DEFINITIONS = {
88398
88692
  maxTickets: "5",
88399
88693
  showVenue: true,
88400
88694
  showCapacity: true,
88401
- successMessage: "Thank you for registering! Check your email for confirmation details.",
88402
88695
  buttonText: "Complete Registration",
88403
88696
  buttonVariant: "primary"
88404
88697
  },
@@ -90229,6 +90522,7 @@ function buildPageRouteRenderContext(dataContext) {
90229
90522
  }
90230
90523
  function buildPageIdentityRenderContext(dataContext) {
90231
90524
  return {
90525
+ demoEmailSuppressed: dataContext.demoEmailSuppressed,
90232
90526
  siteName: dataContext.siteName,
90233
90527
  pathname: dataContext.pathname
90234
90528
  };
@@ -91452,7 +91746,7 @@ var CircuitOpenError = class extends Error {
91452
91746
  * 1. This constant
91453
91747
  * 2. The "version" field in package.json
91454
91748
  */
91455
- const SDK_VERSION = "0.147.0";
91749
+ const SDK_VERSION = "0.148.0";
91456
91750
  //#endregion
91457
91751
  //#region src/next/content-load-failure.ts
91458
91752
  const SdkContentLoadError = RiverbankContentLoadError;