@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
@@ -1,18 +1,18 @@
1
1
  "use client";
2
2
  import { C as unsafeAsPassId, b as unsafeAsCustomerPassId, v as unsafeAsAppointmentResourceId, x as unsafeAsFormId, y as unsafeAsAppointmentServiceId } from "./colorStyles-j5U9v5JA.mjs";
3
- import { a as buildBookingPaymentSelectionViewModel, i as usePolling, n as BookingConsentAgreement, r as StepIndicator, t as BookingMailingListNote } from "./BookingMailingListNote-1n4Ch_u_.mjs";
4
- import { At as resolveAppointmentCheckoutVerificationState, Ct as formatBookingSubmissionPreparationError, Dt as isBookingServiceSlidingAmountInRange, Et as getBookingSuccessMessage, Ft as projectSelectedAppointmentConsentIntoForm, Gt as okWith, Ht as clearWorkflowFeedback, It as resolveSelectedAppointmentConsent, Kt as reportWorkflowError, Lt as BOOKING_FORM_DATA_RESERVED_KEYS, Mt as resolveBookingSiteId, Nt as resolveDefaultBookingServiceId, Ot as parseBookingCurrencyInputToCents, Pt as toSelectedCollectionOptionKind, Qt as addLocalScheduleDays, Rt as isBookingRequirementConsentFieldId, St as formatBookingCentsAsCurrencyInput, Tt as getBookingServiceSlidingScale, Ut as err, Vt as assertNever, Zt as resolveBookingSignupOffer, bn as formatCurrencyAmount, bt as logger, cn as resolveBookingTimeZoneId, in as formatLocalScheduleDate, jt as resolveBookingPaymentStep, kt as prepareBookingSubmission, nn as formatBookingInstant, qt as reportWorkflowSuccess, sn as parseBookingLocalDate, t as defineIslandPropsDecoder, wt as getBookingRedirectStateFromLocation, xt as deriveBookingFormViewState } from "./propsDecoder-CwvvNOHx.mjs";
5
- import { n as useBlockApi, t as BlockApiProvider } from "./context-C8TinPJc.mjs";
3
+ import { a as buildBookingPaymentSelectionViewModel, i as usePolling, n as BookingConsentAgreement, r as StepIndicator, t as BookingMailingListNote } from "./BookingMailingListNote-CzRt2dF_.mjs";
4
+ import { At as isBookingServiceSlidingAmountInRange, Bt as BOOKING_FORM_DATA_RESERVED_KEYS, Cn as formatCurrencyAmount, Ct as formatBookingSubmissionPreparationError, Dt as getBookingSuccessCopy, Et as getBookingServiceSlidingScale, Ft as resolveBookingSiteId, Gt as clearWorkflowFeedback, It as resolveDefaultBookingServiceId, Jt as okWith, Kt as err, Lt as toSelectedCollectionOptionKind, Mt as prepareBookingSubmission, Nt as resolveAppointmentCheckoutVerificationState, Pt as resolveBookingPaymentStep, Rt as projectSelectedAppointmentConsentIntoForm, St as formatBookingCentsAsCurrencyInput, Tt as getBookingServicePaymentSelectionMode, Vt as isBookingRequirementConsentFieldId, Wt as assertNever, Xt as reportWorkflowSuccess, Yt as reportWorkflowError, an as formatBookingInstant, bt as logger, dn as resolveBookingTimeZoneId, en as resolveBookingSignupOffer, jt as parseBookingCurrencyInputToCents, sn as formatLocalScheduleDate, t as defineIslandPropsDecoder, tn as addLocalScheduleDays, un as parseBookingLocalDate, wt as getBookingRedirectStateFromLocation, xt as deriveBookingFormViewState, zt as resolveSelectedAppointmentConsent } from "./propsDecoder-D1OtGXDV.mjs";
5
+ import { n as useBlockApi, t as BlockApiProvider } from "./context-eW97E945.mjs";
6
6
  import { n as isSpamProtectionEnabled, r as AltchaWidget, t as getChallengeUrl } from "./src-B833rYRr.mjs";
7
- import { t as DiscountCodeDisclosure } from "./DiscountCodeDisclosure-CKJtz0mY.mjs";
8
- import { a as useDiscountCodeUi, i as CheckIcon, n as StateIcon, r as scrollToBlock, t as TerminalPanel } from "./TerminalPanel-B5ZUsYhe.mjs";
9
- import { i as SpinnerNode, t as ThemedButton } from "./ThemedButton-DoVIV1Ao.mjs";
7
+ import { o as DiscountCodeDisclosure, p as storeDemoBookingPassIfAvailable, t as BookingConfirmation } from "./DemoBookingPortalAccess-mxqwap3f.mjs";
8
+ import { a as useDiscountCodeUi, i as CheckIcon, n as StateIcon, r as scrollToBlock, t as TerminalPanel } from "./TerminalPanel-DvNUP5ot.mjs";
9
+ import { i as SpinnerNode, t as ThemedButton } from "./ThemedButton-C7CeUJjW.mjs";
10
10
  import { t as FeedbackMessage } from "./FeedbackMessage-CtLvvS_d.mjs";
11
11
  import { i as getFieldValidationControlProps, r as FieldValidationMessage } from "./mailingListSignupCopy-DZSHZrm6.mjs";
12
- import { t as buildCheckoutReturnUrls } from "./checkoutUrls-BEfR7kVu.mjs";
12
+ import { t as buildCheckoutReturnUrls } from "./checkoutUrls-CXhko2Rv.mjs";
13
13
  import { t as CheckboxChoice } from "./CheckboxChoice-B33MqoUo.mjs";
14
14
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
15
- import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-BwVFo0Y4.mjs";
15
+ import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-BG9Y-SHg.mjs";
16
16
  import React, { useCallback, useEffect, useLayoutEffect, useMemo, useReducer, useRef, useState } from "react";
17
17
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
18
18
  //#region ../core/src/appointment-service-categories.ts
@@ -55,6 +55,32 @@ function layoutServicesByCategory(categories, services, options) {
55
55
  };
56
56
  }
57
57
  //#endregion
58
+ //#region ../blocks/src/system/runtime/nodes/booking-form.payment-confirmation.ts
59
+ function bookingServiceRequiresPaymentBeforeBooking(input) {
60
+ switch (getBookingServicePaymentSelectionMode(input.service)) {
61
+ case "implicit_upfront":
62
+ case "implicit_instalment_plan":
63
+ case "implicit_flexible_balance": return true;
64
+ case "choice_required": return input.selectedCollectionOptionKind !== void 0 && input.selectedCollectionOptionKind !== "deferred_manual";
65
+ case "implicit_deferred_manual":
66
+ case "pending_stripe_setup":
67
+ case "unsupported": return false;
68
+ }
69
+ }
70
+ function resolveBookingPaymentConfirmationSummary(input) {
71
+ const service = input.service;
72
+ if (!service || input.hasSelectedAppointmentPackage || !Number.isFinite(input.priceAmount) || input.priceAmount <= 0 || !service.durationMinutes || !bookingServiceRequiresPaymentBeforeBooking({
73
+ service,
74
+ selectedCollectionOptionKind: input.selectedCollectionOptionKind
75
+ })) return null;
76
+ return {
77
+ serviceTitle: service.title,
78
+ durationMinutes: service.durationMinutes,
79
+ priceAmount: input.priceAmount,
80
+ priceCurrency: service.priceCurrency ?? service.pricing?.currency ?? "USD"
81
+ };
82
+ }
83
+ //#endregion
58
84
  //#region ../blocks/src/system/runtime/hooks/useSelectedAppointmentConsentForm.ts
59
85
  function useSelectedAppointmentConsentForm(form, selectedService) {
60
86
  return useMemo(() => projectSelectedAppointmentConsentIntoForm(form, resolveSelectedAppointmentConsent(selectedService)), [form, selectedService]);
@@ -638,6 +664,7 @@ function useBookingSubmission(_siteId) {
638
664
  successUrl: data.successUrl,
639
665
  cancelUrl: data.cancelUrl
640
666
  });
667
+ storeDemoBookingPassIfAvailable(response.customer.email, response.demoBookingPass);
641
668
  dispatch({
642
669
  type: "submission-succeeded",
643
670
  message: response.type === "checkout_redirect" ? "Redirecting to secure checkout..." : "Booking submitted successfully."
@@ -676,15 +703,18 @@ function completeBookingSubmission(input) {
676
703
  kind: "checkout_redirect",
677
704
  checkoutUrl: data.checkoutUrl,
678
705
  sessionId: data.sessionId,
706
+ customerEmail: data.customer.email,
707
+ ...data.demoBookingPass ? { demoBookingPass: data.demoBookingPass } : {},
679
708
  ...data.mailingListSignupNote ? { mailingListSignupNote: data.mailingListSignupNote } : {}
680
709
  }
681
710
  };
682
711
  }
712
+ const successCopy = getBookingSuccessCopy(input.successMessage);
683
713
  input.dispatch({
684
714
  type: "feedback-set",
685
715
  feedback: {
686
716
  kind: "success",
687
- message: getBookingSuccessMessage(input.successMessage),
717
+ message: successCopy.defaultEmailSentence ? `${successCopy.message} ${successCopy.defaultEmailSentence}`.trim() : successCopy.message,
688
718
  resourceName: data.appointment.resourceName
689
719
  }
690
720
  });
@@ -694,6 +724,8 @@ function completeBookingSubmission(input) {
694
724
  kind: "booked",
695
725
  appointmentId: data.appointment.id,
696
726
  resourceName: data.appointment.resourceName,
727
+ customerEmail: data.customer.email,
728
+ ...data.demoBookingPass ? { demoBookingPass: data.demoBookingPass } : {},
697
729
  ...data.mailingListSignupNote ? { mailingListSignupNote: data.mailingListSignupNote } : {}
698
730
  }
699
731
  };
@@ -1908,6 +1940,12 @@ function useHeadlessBookingFlow(options) {
1908
1940
  selectedService,
1909
1941
  state.selectedSlot?.startAt
1910
1942
  ]);
1943
+ const paymentConfirmationSummary = resolveBookingPaymentConfirmationSummary({
1944
+ service: selectedService,
1945
+ priceAmount: selectedAppointmentPriceAmount,
1946
+ selectedCollectionOptionKind: state.selectedCollectionOptionKind,
1947
+ hasSelectedAppointmentPackage: Boolean(state.selectedAppointmentPackageId)
1948
+ });
1911
1949
  const appointmentPackageItems = appointmentPackages.tag === "loaded" ? appointmentPackages.value : [];
1912
1950
  const selectedAppointmentPackage = appointmentPackageItems.find((appointmentPackage) => appointmentPackage.customerPassId === state.selectedAppointmentPackageId) ?? null;
1913
1951
  const spamProtectionEnabled = options.spamProtectionEnabled ?? isSpamProtectionEnabled();
@@ -1937,7 +1975,8 @@ function useHeadlessBookingFlow(options) {
1937
1975
  selectedSlidingAmount,
1938
1976
  slidingScale: selectedServiceSlidingScale,
1939
1977
  appointmentPackages: appointmentPackagesModel,
1940
- errorMessage: paymentResolution.errorMessage ?? "This service cannot be booked right now."
1978
+ errorMessage: paymentResolution.errorMessage ?? "This service cannot be booked right now.",
1979
+ confirmationSummary: null
1941
1980
  } : {
1942
1981
  kind: "ok",
1943
1982
  mode: paymentResolution.mode,
@@ -1947,7 +1986,8 @@ function useHeadlessBookingFlow(options) {
1947
1986
  selectedSlidingAmountInput: state.selectedSlidingAmountInput,
1948
1987
  selectedSlidingAmount,
1949
1988
  slidingScale: selectedServiceSlidingScale,
1950
- appointmentPackages: appointmentPackagesModel
1989
+ appointmentPackages: appointmentPackagesModel,
1990
+ confirmationSummary: paymentConfirmationSummary
1951
1991
  };
1952
1992
  return {
1953
1993
  mailingList,
@@ -2043,6 +2083,10 @@ function useLatestRef(value) {
2043
2083
  }
2044
2084
  //#endregion
2045
2085
  //#region ../blocks/src/system/runtime/hooks/useAppointmentCheckoutVerification.ts
2086
+ const APPOINTMENT_CHECKOUT_MAX_ATTEMPTS = 12;
2087
+ function resolveAppointmentCheckoutPollInterval(attempt) {
2088
+ return Math.min(1e3 * 2 ** (attempt - 1), 4e3);
2089
+ }
2046
2090
  const appointmentCheckoutVerificationDeps = {
2047
2091
  useBlockApi,
2048
2092
  usePolling
@@ -2052,16 +2096,25 @@ function useAppointmentCheckoutVerification(config) {
2052
2096
  }
2053
2097
  function useAppointmentCheckoutVerificationWithDeps(config, deps) {
2054
2098
  const api = deps.useBlockApi();
2099
+ const sessionId = config?.sessionId ?? null;
2100
+ const maxAttempts = config?.maxAttempts;
2101
+ const pollInterval = config?.pollInterval;
2055
2102
  const pollingConfig = useMemo(() => {
2056
- if (!config) return null;
2103
+ if (sessionId === null) return null;
2057
2104
  return {
2058
- pollFn: () => api.getAppointmentBookingStatus({ sessionId: config.sessionId }),
2105
+ restartKey: sessionId,
2106
+ pollFn: () => api.getAppointmentBookingStatus({ sessionId }),
2059
2107
  isComplete: (result) => (result.paymentStatus === "completed" || result.paymentStatus === "not_required") && result.appointmentStatus === "confirmed",
2060
2108
  isFailed: (result) => result.paymentStatus === "failed" || result.paymentStatus === "cancelled" || result.paymentStatus === "refunded" || result.appointmentStatus === "cancelled",
2061
- maxAttempts: config.maxAttempts,
2062
- interval: config.pollInterval
2109
+ maxAttempts: maxAttempts ?? APPOINTMENT_CHECKOUT_MAX_ATTEMPTS,
2110
+ interval: pollInterval ?? resolveAppointmentCheckoutPollInterval
2063
2111
  };
2064
- }, [api, config]);
2112
+ }, [
2113
+ api,
2114
+ sessionId,
2115
+ maxAttempts,
2116
+ pollInterval
2117
+ ]);
2065
2118
  const polling = deps.usePolling(pollingConfig);
2066
2119
  return {
2067
2120
  state: resolveAppointmentCheckoutVerificationState({
@@ -2358,6 +2411,72 @@ function ServiceChoiceGrid({ booking, choices }) {
2358
2411
  });
2359
2412
  }
2360
2413
  //#endregion
2414
+ //#region ../blocks/src/system/runtime/nodes/booking-form.submit-actions.tsx
2415
+ function resolvePrimaryActionLabel(isLastStep, requiresPayment) {
2416
+ if (!isLastStep) return "Continue";
2417
+ return requiresPayment ? "Continue to payment" : "Complete";
2418
+ }
2419
+ function formatBookingConfirmationDateTime(booking) {
2420
+ const startAt = booking.currentStep?.id === "datetime-selection" ? booking.availability.selectedSlot?.startAt : void 0;
2421
+ return startAt ? new Intl.DateTimeFormat(void 0, {
2422
+ dateStyle: "medium",
2423
+ timeStyle: "short",
2424
+ timeZone: booking.availability.timezone
2425
+ }).format(new Date(startAt)) : null;
2426
+ }
2427
+ function BookingPaymentConfirmationText({ booking, summary }) {
2428
+ if (!summary) return null;
2429
+ const dateTime = formatBookingConfirmationDateTime(booking);
2430
+ return /* @__PURE__ */ jsxs("p", {
2431
+ className: "ab-text rb-on-surface--muted",
2432
+ children: [
2433
+ summary.serviceTitle,
2434
+ " · ",
2435
+ summary.durationMinutes,
2436
+ " min ·",
2437
+ " ",
2438
+ formatCurrencyAmount(summary.priceAmount, summary.priceCurrency, { decimals: "auto" }),
2439
+ dateTime ? ` · ${dateTime}` : ""
2440
+ ]
2441
+ });
2442
+ }
2443
+ function BookingFormSubmitActions({ booking, onSubmit }) {
2444
+ const currentStepIndex = booking.currentStep?.visibleIndex ?? 0;
2445
+ const isFirstStep = currentStepIndex === 0;
2446
+ const isLastStep = currentStepIndex === booking.steps.length - 1;
2447
+ const isSubmitting = booking.status.tag === "submitting";
2448
+ const paymentSummary = isLastStep && booking.payment.kind === "ok" ? booking.payment.confirmationSummary : null;
2449
+ const handlePrimaryAction = async () => {
2450
+ if ((await booking.actions.next()).ok && isLastStep) await onSubmit();
2451
+ };
2452
+ return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(BookingPaymentConfirmationText, {
2453
+ booking,
2454
+ summary: paymentSummary
2455
+ }), /* @__PURE__ */ jsxs("div", {
2456
+ className: "rb-wizard-actions",
2457
+ children: [!isFirstStep ? /* @__PURE__ */ jsx(ThemedButton, {
2458
+ type: "button",
2459
+ onClick: booking.actions.back,
2460
+ variant: "outline",
2461
+ size: "md",
2462
+ label: "Back"
2463
+ }) : null, /* @__PURE__ */ jsx(ThemedButton, {
2464
+ type: "button",
2465
+ onClick: () => {
2466
+ handlePrimaryAction();
2467
+ },
2468
+ disabled: isSubmitting,
2469
+ variant: "primary",
2470
+ size: "md",
2471
+ label: resolvePrimaryActionLabel(isLastStep, Boolean(paymentSummary)),
2472
+ pending: isSubmitting ? {
2473
+ label: "Submitting...",
2474
+ srLabel: "Submitting"
2475
+ } : void 0
2476
+ })]
2477
+ })] });
2478
+ }
2479
+ //#endregion
2361
2480
  //#region ../blocks/src/system/runtime/nodes/booking-form.default-ui.tsx
2362
2481
  function formatBookingAmount(amount, currency) {
2363
2482
  return formatCurrencyAmount(amount, currency, { decimals: "auto" });
@@ -2366,13 +2485,6 @@ function HeadlessBookingDefaultForm({ booking, onSubmit }) {
2366
2485
  const currentStep = booking.currentStep;
2367
2486
  const errorSummaryId = React.useId();
2368
2487
  const currentStepIndex = currentStep?.visibleIndex ?? 0;
2369
- const isFirstStep = currentStepIndex === 0;
2370
- const isLastStep = currentStepIndex === booking.steps.length - 1;
2371
- const isSubmitting = booking.status.tag === "submitting";
2372
- const handlePrimaryAction = async () => {
2373
- if (!(await booking.actions.next()).ok) return;
2374
- if (isLastStep) await onSubmit();
2375
- };
2376
2488
  if (!currentStep) return /* @__PURE__ */ jsx("div", {
2377
2489
  className: "rb-text-center rb-py-12",
2378
2490
  children: /* @__PURE__ */ jsx("p", {
@@ -2400,28 +2512,9 @@ function HeadlessBookingDefaultForm({ booking, onSubmit }) {
2400
2512
  errors: currentStep.errors,
2401
2513
  id: errorSummaryId
2402
2514
  }),
2403
- /* @__PURE__ */ jsxs("div", {
2404
- className: "rb-wizard-actions",
2405
- children: [!isFirstStep ? /* @__PURE__ */ jsx(ThemedButton, {
2406
- type: "button",
2407
- onClick: booking.actions.back,
2408
- variant: "outline",
2409
- size: "md",
2410
- label: "Back"
2411
- }) : null, /* @__PURE__ */ jsx(ThemedButton, {
2412
- type: "button",
2413
- onClick: () => {
2414
- handlePrimaryAction();
2415
- },
2416
- disabled: isSubmitting,
2417
- variant: "primary",
2418
- size: "md",
2419
- label: isLastStep ? "Complete" : "Continue",
2420
- pending: isSubmitting ? {
2421
- label: "Submitting...",
2422
- srLabel: "Submitting"
2423
- } : void 0
2424
- })]
2515
+ /* @__PURE__ */ jsx(BookingFormSubmitActions, {
2516
+ booking,
2517
+ onSubmit
2425
2518
  }),
2426
2519
  /* @__PURE__ */ jsx(DefaultBookingDiscount, { booking }),
2427
2520
  /* @__PURE__ */ jsx(DefaultBookingFeedback, { booking }),
@@ -3029,7 +3122,7 @@ function DefaultBookingErrorSummary({ errors, id }) {
3029
3122
  }
3030
3123
  //#endregion
3031
3124
  //#region ../blocks/src/system/runtime/components/booking/SuccessMessage.tsx
3032
- const SuccessMessage = ({ message, resourceName, className }) => {
3125
+ const SuccessMessage = ({ copy, resourceName, className, demoEmailSuppressed = false, customerEmail = null }) => {
3033
3126
  return /* @__PURE__ */ jsx(TerminalPanel, {
3034
3127
  tone: "success",
3035
3128
  title: "Booking confirmed",
@@ -3037,9 +3130,15 @@ const SuccessMessage = ({ message, resourceName, className }) => {
3037
3130
  variant: "success",
3038
3131
  children: /* @__PURE__ */ jsx(CheckIcon, { strokeWidth: 3 })
3039
3132
  }),
3040
- body: /* @__PURE__ */ jsx("p", {
3041
- className: "ab-text",
3042
- children: message
3133
+ body: /* @__PURE__ */ jsx(BookingConfirmation, {
3134
+ demoEmailSuppressed,
3135
+ email: customerEmail,
3136
+ copy,
3137
+ messagePresentation: {
3138
+ kind: "paragraph",
3139
+ className: "ab-text"
3140
+ },
3141
+ noteClassName: "ab-text"
3043
3142
  }),
3044
3143
  secondaryBody: resourceName ? /* @__PURE__ */ jsxs("p", {
3045
3144
  className: "ab-text rb-on-surface--muted",
@@ -3052,31 +3151,54 @@ const SuccessMessage = ({ message, resourceName, className }) => {
3052
3151
  });
3053
3152
  };
3054
3153
  //#endregion
3055
- //#region ../blocks/src/system/runtime/nodes/booking-form.mailing-list-note.ts
3154
+ //#region ../blocks/src/system/runtime/nodes/booking-form.checkout-return-context.ts
3056
3155
  function storageKey(sessionId) {
3057
3156
  return `riverbank:booking:mailing-list:${sessionId}`;
3058
3157
  }
3059
- function saveAppointmentMailingListNote(sessionId, note) {
3060
- if (!note) return;
3158
+ function saveAppointmentCheckoutReturnContext(sessionId, context) {
3159
+ if (!context.customerEmail && !context.mailingListNote) return;
3061
3160
  try {
3062
- window.sessionStorage.setItem(storageKey(sessionId), note);
3161
+ window.sessionStorage.setItem(storageKey(sessionId), JSON.stringify(context));
3063
3162
  } catch {}
3064
3163
  }
3065
- function readAppointmentMailingListNote(sessionId) {
3164
+ function readAppointmentCheckoutReturnContext(sessionId) {
3066
3165
  try {
3067
3166
  const stored = window.sessionStorage.getItem(storageKey(sessionId));
3068
- return stored === "confirmation_required" || stored === "not_confirmed" ? stored : null;
3167
+ if (!stored) return null;
3168
+ return parseContext(stored);
3069
3169
  } catch {
3070
3170
  return null;
3071
3171
  }
3072
3172
  }
3173
+ function parseContext(value) {
3174
+ try {
3175
+ const parsed = JSON.parse(value);
3176
+ return isContext(parsed) ? parsed : null;
3177
+ } catch {
3178
+ return value === "confirmation_required" || value === "not_confirmed" ? {
3179
+ customerEmail: null,
3180
+ mailingListNote: value
3181
+ } : null;
3182
+ }
3183
+ }
3184
+ function isContext(value) {
3185
+ if (!isRecord(value)) return false;
3186
+ return (typeof value.customerEmail === "string" || value.customerEmail === null) && (value.mailingListNote === null || value.mailingListNote === "confirmation_required" || value.mailingListNote === "not_confirmed");
3187
+ }
3188
+ function isRecord(value) {
3189
+ return typeof value === "object" && value !== null && !Array.isArray(value);
3190
+ }
3073
3191
  //#endregion
3074
3192
  //#region ../blocks/src/system/runtime/nodes/booking-form.completion.tsx
3075
- function BookingFormCompletion({ resourceName, successMessage, redirectState, localNote }) {
3076
- const note = redirectState.kind === "success" ? readAppointmentMailingListNote(redirectState.sessionId) : localNote;
3193
+ function BookingFormCompletion({ resourceName, successMessage, redirectState, localNote, customerEmail, demoEmailSuppressed = false }) {
3194
+ const returnContext = redirectState.kind === "success" ? readAppointmentCheckoutReturnContext(redirectState.sessionId) : null;
3195
+ const note = redirectState.kind === "success" ? returnContext?.mailingListNote ?? null : localNote;
3196
+ const confirmedEmail = returnContext?.customerEmail ?? customerEmail;
3077
3197
  return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(SuccessMessage, {
3078
- message: getBookingSuccessMessage(successMessage),
3079
- resourceName
3198
+ copy: getBookingSuccessCopy(successMessage),
3199
+ resourceName,
3200
+ demoEmailSuppressed,
3201
+ customerEmail: confirmedEmail
3080
3202
  }), note ? /* @__PURE__ */ jsx(BookingMailingListNote, {
3081
3203
  note,
3082
3204
  context: "booking",
@@ -3100,12 +3222,17 @@ function createBookingFormSubmitHandler(input) {
3100
3222
  cancelUrl: appendRebookFlag(cancelUrl, input.isPortalRebook)
3101
3223
  });
3102
3224
  if (!result.ok) return;
3225
+ storeDemoBookingPassIfAvailable(result.outcome.customerEmail, result.outcome.demoBookingPass);
3103
3226
  if (result.outcome.kind === "checkout_redirect") {
3104
- saveAppointmentMailingListNote(result.outcome.sessionId, result.outcome.mailingListSignupNote);
3227
+ saveAppointmentCheckoutReturnContext(result.outcome.sessionId, {
3228
+ customerEmail: result.outcome.customerEmail,
3229
+ mailingListNote: result.outcome.mailingListSignupNote ?? null
3230
+ });
3105
3231
  window.location.href = result.outcome.checkoutUrl;
3106
3232
  return;
3107
3233
  }
3108
3234
  input.setLocalMailingListNote(result.outcome.mailingListSignupNote ?? null);
3235
+ input.setLocalCustomerEmail(result.outcome.customerEmail);
3109
3236
  };
3110
3237
  }
3111
3238
  //#endregion
@@ -3145,6 +3272,7 @@ const BookingFormClient = ({ siteId: siteIdProp, render }) => {
3145
3272
  const hasLoggedRebookCompletionRef = useRef(false);
3146
3273
  const [redirectState] = useState(() => getBookingRedirectStateFromLocation(getBookingRedirectLocationSnapshot()));
3147
3274
  const [localMailingListNote, setLocalMailingListNote] = useState(null);
3275
+ const [localCustomerEmail, setLocalCustomerEmail] = useState(null);
3148
3276
  const showSpamProtection = render.hydration.spamProtectionEnabled ?? isSpamProtectionEnabled();
3149
3277
  const api = useBlockApi();
3150
3278
  const hasPortalAuth = api.config.auth.type === "bearer" || api.config.authOverrides?.portal?.type === "bearer";
@@ -3227,7 +3355,8 @@ const BookingFormClient = ({ siteId: siteIdProp, render }) => {
3227
3355
  booking,
3228
3356
  bookingAnchorId,
3229
3357
  isPortalRebook,
3230
- setLocalMailingListNote
3358
+ setLocalMailingListNote,
3359
+ setLocalCustomerEmail
3231
3360
  });
3232
3361
  if (viewState.kind === "success") return /* @__PURE__ */ jsx(BookingSurface, {
3233
3362
  id: bookingAnchorId,
@@ -3236,7 +3365,9 @@ const BookingFormClient = ({ siteId: siteIdProp, render }) => {
3236
3365
  successMessage: render.display.successMessage,
3237
3366
  resourceName: viewState.resourceName,
3238
3367
  redirectState,
3239
- localNote: localMailingListNote
3368
+ localNote: localMailingListNote,
3369
+ customerEmail: localCustomerEmail,
3370
+ demoEmailSuppressed: render.hydration.demoEmailSuppressed
3240
3371
  })
3241
3372
  });
3242
3373
  if (viewState.kind === "verifying") return /* @__PURE__ */ jsx(BookingSurface, {
@@ -3252,6 +3383,25 @@ const BookingFormClient = ({ siteId: siteIdProp, render }) => {
3252
3383
  })
3253
3384
  })
3254
3385
  });
3386
+ if (viewState.kind === "timeout") return /* @__PURE__ */ jsxs(BookingSurface, {
3387
+ id: bookingAnchorId,
3388
+ className: render.display.className,
3389
+ children: [/* @__PURE__ */ jsx(FeedbackMessage, {
3390
+ tone: "info",
3391
+ className: "alert alert-info",
3392
+ role: "status",
3393
+ children: /* @__PURE__ */ jsx("p", {
3394
+ className: "ab-text",
3395
+ children: viewState.message
3396
+ })
3397
+ }), /* @__PURE__ */ jsx(ThemedButton, {
3398
+ type: "button",
3399
+ variant: "primary",
3400
+ size: "md",
3401
+ label: "Check again",
3402
+ onClick: verification.retry
3403
+ })]
3404
+ });
3255
3405
  return /* @__PURE__ */ jsxs(BookingSurface, {
3256
3406
  id: bookingAnchorId,
3257
3407
  className: render.display.className,