@riverbankcms/sdk 0.146.0 → 0.148.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (466) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/{PreviewEditorSidebar-kg2r2Fyi.mjs → PreviewEditorSidebar-DvEPG3Z2.mjs} +249 -172
  3. package/dist/{PreviewEditorUI-sWMLp5dT.mjs → PreviewEditorUI-D6eb6fkx.mjs} +68 -60
  4. package/dist/{PreviewQueryProvider-Cg51xq1w.mjs → PreviewQueryProvider-5znTyJuz.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-h2ti3Hch.mjs → SdkPreviewModeRuntime-DJ6utQ_R.mjs} +1180 -475
  6. package/dist/{SiteChromeCustomizeContext-DEACFH9m.mjs → SiteChromeCustomizeContext-CFJYh6vo.mjs} +199078 -193767
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +198 -33
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +18 -3
  9. package/dist/_dts/api/src/accessAdmin.d.ts +0 -4
  10. package/dist/_dts/api/src/accountApi.d.ts +6 -6
  11. package/dist/_dts/api/src/admin.d.ts +22 -22
  12. package/dist/_dts/api/src/aiPatch.d.ts +2 -2
  13. package/dist/_dts/api/src/aiPlayground.d.ts +1 -0
  14. package/dist/_dts/api/src/analytics.d.ts +2 -2
  15. package/dist/_dts/api/src/apiEndpointTypes.d.ts +2 -0
  16. package/dist/_dts/api/src/appointmentSetup.d.ts +2 -2
  17. package/dist/_dts/api/src/auth.d.ts +10 -10
  18. package/dist/_dts/api/src/availability.d.ts +6 -6
  19. package/dist/_dts/api/src/billing.d.ts +42 -15
  20. package/dist/_dts/api/src/billingEndpointDefinitions.d.ts +8 -0
  21. package/dist/_dts/api/src/billingEndpointTypes.d.ts +15 -6
  22. package/dist/_dts/api/src/blocks.d.ts +15 -14
  23. package/dist/_dts/api/src/blocksKeys.d.ts +2 -0
  24. package/dist/_dts/api/src/bookingConfig.d.ts +16 -2
  25. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +4 -13
  26. package/dist/_dts/api/src/bookingOperations.d.ts +6 -48
  27. package/dist/_dts/api/src/bookingPeople.d.ts +92 -0
  28. package/dist/_dts/api/src/bookingPeopleEndpointDefinitions.d.ts +38 -0
  29. package/dist/_dts/api/src/bookingRecords.d.ts +12 -49
  30. package/dist/_dts/api/src/bookingSettingsSections.d.ts +1 -1
  31. package/dist/_dts/api/src/bookings.d.ts +8 -7
  32. package/dist/_dts/api/src/calendar.d.ts +9 -9
  33. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +7 -6
  34. package/dist/_dts/api/src/common/envelope.d.ts +2 -2
  35. package/dist/_dts/api/src/content-editor.d.ts +2 -2
  36. package/dist/_dts/api/src/contentEntries.d.ts +17 -48
  37. package/dist/_dts/api/src/contentRuntime.d.ts +51 -37
  38. package/dist/_dts/api/src/contentTypes.d.ts +11 -11
  39. package/dist/_dts/api/src/contentVersionHistoryClient.d.ts +6 -6
  40. package/dist/_dts/api/src/documentLifecycle.d.ts +67 -0
  41. package/dist/_dts/api/src/domains.d.ts +16 -16
  42. package/dist/_dts/api/src/editLeaseEndpoints.d.ts +72 -0
  43. package/dist/_dts/api/src/emailSettings.d.ts +4 -4
  44. package/dist/_dts/api/src/endpoints.d.ts +725 -607
  45. package/dist/_dts/api/src/eventEmailTemplates.d.ts +2 -2
  46. package/dist/_dts/api/src/eventManagementContracts.d.ts +48 -8
  47. package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +1 -9
  48. package/dist/_dts/api/src/eventPageWords.d.ts +7 -12
  49. package/dist/_dts/api/src/footerSettings.d.ts +6 -6
  50. package/dist/_dts/api/src/index.d.ts +8 -6
  51. package/dist/_dts/api/src/indexCoreTypes.d.ts +2 -1
  52. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  53. package/dist/_dts/api/src/launchReadiness.d.ts +1 -6
  54. package/dist/_dts/api/src/mailingListIntegration.d.ts +6 -0
  55. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +1 -1
  56. package/dist/_dts/api/src/navigation.d.ts +5 -5
  57. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +15 -0
  58. package/dist/_dts/api/src/occurrenceScheduling.d.ts +19 -0
  59. package/dist/_dts/api/src/pageSurfaceEditorEndpoints.d.ts +55 -0
  60. package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +28 -7
  61. package/dist/_dts/api/src/pages.d.ts +7 -7
  62. package/dist/_dts/api/src/performance.d.ts +1 -1
  63. package/dist/_dts/api/src/public/index.d.ts +1 -1
  64. package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +50 -0
  65. package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +4 -0
  66. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +7 -0
  67. package/dist/_dts/api/src/redirects.d.ts +3 -3
  68. package/dist/_dts/api/src/request.d.ts +10 -1
  69. package/dist/_dts/api/src/resources.d.ts +4 -4
  70. package/dist/_dts/api/src/routes.d.ts +8 -3
  71. package/dist/_dts/api/src/sdk-event-upsert.d.ts +15 -1
  72. package/dist/_dts/api/src/sdkBlockUpsertContracts.d.ts +21 -0
  73. package/dist/_dts/api/src/sdkContracts.d.ts +5 -28
  74. package/dist/_dts/api/src/sdkCourseBooking.d.ts +4 -4
  75. package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +1 -1
  76. package/dist/_dts/api/src/sdkEventOccurrenceRequestContracts.d.ts +43 -0
  77. package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +4 -2
  78. package/dist/_dts/api/src/sdkPullEventContracts.d.ts +8 -1
  79. package/dist/_dts/api/src/seo.d.ts +4 -4
  80. package/dist/_dts/api/src/services.d.ts +4 -4
  81. package/dist/_dts/api/src/siteLifecycleEndpoints.d.ts +61 -0
  82. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +19 -25
  83. package/dist/_dts/api/src/siteMembers.d.ts +10 -10
  84. package/dist/_dts/api/src/siteOnboarding.d.ts +16 -14
  85. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +7 -3
  86. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +5 -12
  87. package/dist/_dts/api/src/siteRuntimeEntry.d.ts +31 -0
  88. package/dist/_dts/billing/src/checkout/platform.d.ts +77 -0
  89. package/dist/_dts/billing/src/components/index.d.ts +25 -40
  90. package/dist/_dts/billing/src/membership/index.d.ts +1 -3
  91. package/dist/_dts/billing/src/plans/entitlements.d.ts +80 -0
  92. package/dist/_dts/billing/src/plans/registry.d.ts +16 -16
  93. package/dist/_dts/billing/src/plans/standing.d.ts +9 -2
  94. package/dist/_dts/billing/src/plans/types.d.ts +5 -15
  95. package/dist/_dts/billing/src/site-arrangements.d.ts +2 -2
  96. package/dist/_dts/billing/src/subscriptions/standingEvidence.d.ts +2 -4
  97. package/dist/_dts/billing/src/subscriptions/store.d.ts +17 -11
  98. package/dist/_dts/block-form/src/backend/store-backend.d.ts +6 -7
  99. package/dist/_dts/block-form/src/backend/types.d.ts +7 -0
  100. package/dist/_dts/block-form/src/widgets/FieldFrame.d.ts +3 -1
  101. package/dist/_dts/blocks/src/PageRenderer.d.ts +3 -4
  102. package/dist/_dts/blocks/src/client/events.d.ts +3 -0
  103. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +24 -4
  104. package/dist/_dts/blocks/src/index.d.ts +1 -1
  105. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +18 -9
  106. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +4 -0
  107. package/dist/_dts/blocks/src/portal/types.d.ts +0 -2
  108. package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +2 -1
  109. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +3 -1
  110. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +4 -4
  111. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +6 -1
  112. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +4 -1
  113. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +2 -2
  114. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  115. package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +6 -0
  116. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +18 -0
  117. package/dist/_dts/blocks/src/system/runtime/api/types/portal.d.ts +6 -0
  118. package/dist/_dts/blocks/src/system/runtime/api/types/shop.d.ts +4 -0
  119. package/dist/_dts/blocks/src/system/runtime/components/booking/SuccessMessage.d.ts +4 -1
  120. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +36 -6
  121. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +18 -3
  122. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +11 -0
  123. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +2 -0
  124. package/dist/_dts/blocks/src/system/runtime/hooks/usePaymentVerification.d.ts +2 -1
  125. package/dist/_dts/blocks/src/system/runtime/hooks/usePolling.d.ts +7 -48
  126. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.checkout-return-context.d.ts +7 -0
  127. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.completion.d.ts +11 -0
  128. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +13 -0
  129. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +28 -0
  130. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-choice.d.ts +5 -0
  131. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-state.d.ts +9 -0
  132. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.payment-confirmation.d.ts +13 -0
  133. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.reserved-fields.d.ts +1 -1
  134. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.server.d.ts +1 -1
  135. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +17 -1
  136. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-actions.d.ts +8 -0
  137. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-handler.d.ts +9 -0
  138. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-success.d.ts +9 -0
  139. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +4 -0
  140. package/dist/_dts/blocks/src/system/runtime/nodes/checkout.server.d.ts +2 -1
  141. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/AttendeeDetailsStep.d.ts +3 -0
  142. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +2 -1
  143. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizard.d.ts +5 -0
  144. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SuccessStep.d.ts +7 -1
  145. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +3 -0
  146. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/sessionStorage.d.ts +2 -0
  147. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +8 -0
  148. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +5 -5
  149. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +8 -0
  150. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +18 -5
  151. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +6 -0
  152. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +37 -3
  153. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.client.d.ts +1 -1
  154. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +16 -1
  155. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCardPresentations.d.ts +13 -0
  156. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +5 -5
  157. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.block-submission.d.ts +2 -4
  158. package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.d.ts +1 -14
  159. package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.d.ts +12 -0
  160. package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +13 -0
  161. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +2 -0
  162. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingMailingListNote.d.ts +6 -0
  163. package/dist/_dts/blocks/src/system/runtime/shared/components/DemoBookingPortalAccess.d.ts +22 -0
  164. package/dist/_dts/blocks/src/system/runtime/shared/components/DemoPortalSignInLink.d.ts +4 -0
  165. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
  166. package/dist/_dts/blocks/src/system/runtime/shared/mailingListSignupCopy.d.ts +6 -0
  167. package/dist/_dts/blocks/src/system/runtime/shared/types.d.ts +1 -0
  168. package/dist/_dts/blocks/src/system/runtime/shared/utils/demoBookingPassStorage.d.ts +10 -0
  169. package/dist/_dts/blocks/src/system/runtime/shared/utils/demoPortalMagicLink.d.ts +29 -0
  170. package/dist/_dts/blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.d.ts +3 -2
  171. package/dist/_dts/blocks/src/system/transforms/registry/core.d.ts +2 -0
  172. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +1 -3
  173. package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +4 -0
  174. package/dist/_dts/content-editor/src/components/ContentFieldsForm.d.ts +2 -7
  175. package/dist/_dts/content-editor/src/controller/EditLeaseController.d.ts +39 -0
  176. package/dist/_dts/content-editor/src/controller/EditorWriteGate.d.ts +38 -0
  177. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +25 -61
  178. package/dist/_dts/content-editor/src/controller/LinkedEntryLeaseBanner.d.ts +7 -0
  179. package/dist/_dts/content-editor/src/controller/LinkedEntryLeaseControllers.d.ts +14 -0
  180. package/dist/_dts/content-editor/src/controller/deriveEditorUnpublishedState.d.ts +6 -0
  181. package/dist/_dts/content-editor/src/controller/documentValueBaseline.d.ts +25 -0
  182. package/dist/_dts/content-editor/src/controller/editLeaseLossSignal.d.ts +6 -0
  183. package/dist/_dts/content-editor/src/controller/editLeaseNotice.d.ts +28 -0
  184. package/dist/_dts/content-editor/src/controller/editorClientId.d.ts +2 -0
  185. package/dist/_dts/content-editor/src/controller/editorEditability.d.ts +38 -0
  186. package/dist/_dts/content-editor/src/controller/editorLeaseParticipation.d.ts +34 -0
  187. package/dist/_dts/content-editor/src/controller/normalizedMetadataBaseline.d.ts +29 -0
  188. package/dist/_dts/content-editor/src/controller/pageSurfaceDocumentBaselines.d.ts +14 -0
  189. package/dist/_dts/content-editor/src/controller/pageSurfaceLifecycle.d.ts +11 -0
  190. package/dist/_dts/content-editor/src/controller/planDocumentBaselineRefresh.d.ts +19 -0
  191. package/dist/_dts/content-editor/src/controller/readDocumentLeaseBaselines.d.ts +19 -0
  192. package/dist/_dts/content-editor/src/controller/refreshDocumentLeaseBaseline.d.ts +12 -0
  193. package/dist/_dts/content-editor/src/controller/refreshLinkedEntry.d.ts +17 -0
  194. package/dist/_dts/content-editor/src/controller/replayRestoredEditorEffects.d.ts +2 -3
  195. package/dist/_dts/content-editor/src/controller/routeWrites.d.ts +26 -0
  196. package/dist/_dts/content-editor/src/controller/useAutosaveTriggers.d.ts +16 -17
  197. package/dist/_dts/content-editor/src/controller/useBlockedPublishPlan.d.ts +6 -2
  198. package/dist/_dts/content-editor/src/controller/useBlocksList.d.ts +3 -3
  199. package/dist/_dts/content-editor/src/controller/useEntryValueAutosaves.d.ts +21 -0
  200. package/dist/_dts/content-editor/src/controller/useInitialEditorUiStore.d.ts +24 -0
  201. package/dist/_dts/content-editor/src/controller/useServerBaselineReconciliation.d.ts +17 -0
  202. package/dist/_dts/content-editor/src/footerComposerPanelTypes.d.ts +1 -1
  203. package/dist/_dts/content-editor/src/hooks/applyBlockedPublishPlan.d.ts +5 -1
  204. package/dist/_dts/content-editor/src/hooks/blockDraftLifecycle.d.ts +8 -47
  205. package/dist/_dts/content-editor/src/hooks/editLeaseMachine.d.ts +120 -0
  206. package/dist/_dts/content-editor/src/hooks/publishability.d.ts +6 -10
  207. package/dist/_dts/content-editor/src/hooks/useAutosaveStatus.d.ts +3 -0
  208. package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +5 -15
  209. package/dist/_dts/content-editor/src/hooks/useDebouncedLatestSave.d.ts +7 -5
  210. package/dist/_dts/content-editor/src/hooks/useEditLease.d.ts +28 -0
  211. package/dist/_dts/content-editor/src/hooks/useEntryActions.d.ts +25 -39
  212. package/dist/_dts/content-editor/src/hooks/useEntryMutations.d.ts +17 -19
  213. package/dist/_dts/content-editor/src/hooks/useLinkedEntryAutosave.d.ts +5 -8
  214. package/dist/_dts/content-editor/src/hooks/useValueAutosave.d.ts +64 -0
  215. package/dist/_dts/content-editor/src/hooks/validateBlocksForPublish.d.ts +0 -7
  216. package/dist/_dts/content-editor/src/index.d.ts +26 -7
  217. package/dist/_dts/content-editor/src/linkedEntries/domain.d.ts +12 -0
  218. package/dist/_dts/content-editor/src/linkedEntries/owner.d.ts +9 -0
  219. package/dist/_dts/content-editor/src/liveDrafts/draftProjection.d.ts +66 -0
  220. package/dist/_dts/content-editor/src/liveDrafts/linkedSaveHandovers.d.ts +37 -0
  221. package/dist/_dts/content-editor/src/liveDrafts/remoteDraftOverlay.d.ts +113 -0
  222. package/dist/_dts/content-editor/src/liveDrafts/useLiveDrafts.d.ts +32 -0
  223. package/dist/_dts/content-editor/src/liveDrafts/useRetentionTicks.d.ts +7 -0
  224. package/dist/_dts/content-editor/src/primitives/shared/activePreviewField.d.ts +6 -0
  225. package/dist/_dts/content-editor/src/primitives/shared/storeBinding.d.ts +1 -0
  226. package/dist/_dts/content-editor/src/services/contentEntryServices.d.ts +96 -19
  227. package/dist/_dts/content-editor/src/services/editorApiClient.d.ts +13 -0
  228. package/dist/_dts/content-editor/src/services/index.d.ts +2 -0
  229. package/dist/_dts/content-editor/src/services/pageSurfaceEditorServices.d.ts +23 -0
  230. package/dist/_dts/content-editor/src/sync/flushValues.d.ts +13 -0
  231. package/dist/_dts/content-editor/src/sync/lifecycleFailure.d.ts +51 -0
  232. package/dist/_dts/content-editor/src/sync/runLifecycle.d.ts +64 -0
  233. package/dist/_dts/content-editor/src/sync/schedulerValues.d.ts +27 -0
  234. package/dist/_dts/content-editor/src/sync/sendPlanning.d.ts +104 -0
  235. package/dist/_dts/content-editor/src/sync/valueSync.d.ts +114 -0
  236. package/dist/_dts/content-editor/src/ui/blockCollection.d.ts +8 -0
  237. package/dist/_dts/content-editor/src/ui/documentLifecycle.d.ts +18 -0
  238. package/dist/_dts/content-editor/src/ui/editorLeaseUiState.d.ts +7 -0
  239. package/dist/_dts/content-editor/src/ui/editorRefresh.d.ts +82 -0
  240. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +102 -127
  241. package/dist/_dts/content-editor/src/ui/editorTransactionState.d.ts +1 -1
  242. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +126 -72
  243. package/dist/_dts/content-editor/src/ui/editorValueSnapshot.d.ts +18 -0
  244. package/dist/_dts/content-editor/src/ui/serverBlockAdmission.d.ts +26 -0
  245. package/dist/_dts/content-editor/src/ui/stores/autosaveStore.d.ts +16 -27
  246. package/dist/_dts/content-editor/src/ui/stores/blockVersionsStore.d.ts +24 -0
  247. package/dist/_dts/content-editor/src/ui/stores/linkedEntryLeaseStore.d.ts +54 -0
  248. package/dist/_dts/content-editor/src/ui/stores/linkedSaveHandoversStore.d.ts +11 -0
  249. package/dist/_dts/content-editor/src/ui/stores/remoteDraftsStore.d.ts +10 -0
  250. package/dist/_dts/content-editor/src/ui/stores/types.d.ts +63 -3
  251. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +2 -2
  252. package/dist/_dts/content-editor/src/useFooterNavigationLayout.d.ts +1 -1
  253. package/dist/_dts/content-model/src/content-types/builtin-schemas.d.ts +4 -4
  254. package/dist/_dts/content-model/src/content-types/builtins.d.ts +4 -4
  255. package/dist/_dts/content-model/src/definitions/shared.d.ts +11 -2
  256. package/dist/_dts/content-model/src/entry-slots/index.d.ts +1 -0
  257. package/dist/_dts/content-model/src/entry-slots/serializeAllowedBlocks.d.ts +2 -0
  258. package/dist/_dts/content-model/src/metadataConfig.d.ts +10 -38
  259. package/dist/_dts/content-model/src/templates/defaults.d.ts +0 -1
  260. package/dist/_dts/content-model/src/types.d.ts +0 -1
  261. package/dist/_dts/core/src/block-content-identity.d.ts +49 -1
  262. package/dist/_dts/core/src/branded.d.ts +12 -0
  263. package/dist/_dts/core/src/currency-format.d.ts +8 -2
  264. package/dist/_dts/core/src/demo-lifecycle-status.d.ts +2 -2
  265. package/dist/_dts/core/src/demo-warm-pool-target.d.ts +8 -0
  266. package/dist/_dts/core/src/edit-lease.d.ts +55 -0
  267. package/dist/_dts/core/src/editor-state.d.ts +38 -13
  268. package/dist/_dts/core/src/editor-value-sync.d.ts +79 -0
  269. package/dist/_dts/core/src/html-entities.d.ts +6 -0
  270. package/dist/_dts/core/src/index.d.ts +5 -1
  271. package/dist/_dts/core/src/mailing-list-runtime.d.ts +15 -0
  272. package/dist/_dts/core/src/mailing-list-setup.d.ts +2 -0
  273. package/dist/_dts/core/src/mailing-list-submission.d.ts +6 -0
  274. package/dist/_dts/core/src/navigation-portal-labels.d.ts +9 -0
  275. package/dist/_dts/core/src/participants.d.ts +0 -38
  276. package/dist/_dts/core/src/uuid.d.ts +7 -5
  277. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +261 -175
  278. package/dist/_dts/editor/src/EditorProvider.d.ts +5 -0
  279. package/dist/_dts/editor/src/chrome/EditorChrome.d.ts +14 -0
  280. package/dist/_dts/editor/src/chrome/EditorStatusBar.d.ts +1 -0
  281. package/dist/_dts/editor/src/chrome/statusBarPresentation.d.ts +0 -1
  282. package/dist/_dts/editor/src/index.d.ts +1 -1
  283. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +10 -9
  284. package/dist/_dts/editor-blocks/src/BlockForm.d.ts +1 -1
  285. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +1 -1
  286. package/dist/_dts/editor-blocks/src/block-editor/BlockCardFrame.d.ts +1 -1
  287. package/dist/_dts/editor-blocks/src/block-editor/BlockSettingsModal.d.ts +1 -1
  288. package/dist/_dts/editor-blocks/src/block-editor/actionPresentation.d.ts +1 -0
  289. package/dist/_dts/editor-blocks/src/block-editor/applyExtendedFieldDefaults.d.ts +3 -4
  290. package/dist/_dts/editor-blocks/src/block-editor/blockDraftBaselineSeed.d.ts +4 -8
  291. package/dist/_dts/editor-blocks/src/block-editor/editorBlockItem.d.ts +23 -0
  292. package/dist/_dts/editor-blocks/src/block-editor/generatedIconApplyCoordination.d.ts +2 -7
  293. package/dist/_dts/editor-blocks/src/block-editor/hooks/applyBlockStructureChange.d.ts +4 -0
  294. package/dist/_dts/editor-blocks/src/block-editor/hooks/buildInsertBlockHistoryCommand.d.ts +14 -5
  295. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockBaselineSync.d.ts +21 -19
  296. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockCreation.d.ts +2 -10
  297. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +8 -16
  298. package/dist/_dts/editor-blocks/src/block-editor/owner.d.ts +6 -16
  299. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +37 -9
  300. package/dist/_dts/editor-blocks/src/index.d.ts +2 -1
  301. package/dist/_dts/editor-blocks/src/widgets/entry-picker/loaders.d.ts +1 -1
  302. package/dist/_dts/editor-blocks/src/widgets/link/loaders.d.ts +1 -1
  303. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +1 -1
  304. package/dist/_dts/editor-blocks/src/widgets/reference/loaders.d.ts +1 -1
  305. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +3 -2
  306. package/dist/_dts/media-core/src/fileStorage.d.ts +4 -0
  307. package/dist/_dts/media-editor/src/context.d.ts +1 -1
  308. package/dist/_dts/media-editor/src/createMediaEditorProvider.d.ts +1 -2
  309. package/dist/_dts/media-editor/src/provider.d.ts +3 -2
  310. package/dist/_dts/media-react/src/hooks/internal/classification.d.ts +1 -1
  311. package/dist/_dts/media-react/src/hooks/useApiMediaUploader.d.ts +3 -1
  312. package/dist/_dts/preview-next/src/client/blocks/EditablePageRenderer.d.ts +7 -1
  313. package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +8 -3
  314. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +10 -6
  315. package/dist/_dts/preview-next/src/client/blocks/linkedEntryRenderOverlay.d.ts +22 -2
  316. package/dist/_dts/preview-next/src/client/blocks/previewProjection/entryFieldRebinding.d.ts +13 -0
  317. package/dist/_dts/preview-next/src/client/blocks/previewProjection/index.d.ts +2 -1
  318. package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +11 -1
  319. package/dist/_dts/preview-next/src/client/blocks/renderPrecedence.d.ts +17 -0
  320. package/dist/_dts/preview-next/src/client/blocks/useLinkedSaveHandoverRetention.d.ts +20 -0
  321. package/dist/_dts/preview-next/src/client/index.d.ts +1 -1
  322. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -1
  323. package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -1
  324. package/dist/_dts/preview-next/src/client/preview/PreviewAccessBanners.d.ts +7 -0
  325. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -1
  326. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +24 -14
  327. package/dist/_dts/preview-next/src/client/preview/PreviewLeaseEditingMode.d.ts +2 -0
  328. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +9 -2
  329. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +1 -0
  330. package/dist/_dts/preview-next/src/client/preview/previewCustomizeAutosave.d.ts +5 -0
  331. package/dist/_dts/preview-next/src/client/preview/previewCustomizeWorkflowState.d.ts +3 -4
  332. package/dist/_dts/preview-next/src/client/preview/sdkConfig.d.ts +1 -0
  333. package/dist/_dts/preview-next/src/client/preview/usePreviewCustomizeWorkflowState.d.ts +4 -0
  334. package/dist/_dts/realtime/src/client.d.ts +3 -0
  335. package/dist/_dts/realtime/src/draftChannel.d.ts +91 -0
  336. package/dist/_dts/realtime/src/drafts.d.ts +210 -0
  337. package/dist/_dts/realtime/src/index.d.ts +3 -0
  338. package/dist/_dts/realtime/src/leaseChangeSubscriptions.d.ts +8 -0
  339. package/dist/_dts/realtime/src/types.d.ts +113 -0
  340. package/dist/_dts/realtime/src/useDraftChannel.d.ts +34 -0
  341. package/dist/_dts/realtime/src/useSiteRealtimeReload.d.ts +27 -0
  342. package/dist/_dts/sdk/src/public-api/contracts.d.ts +6 -55
  343. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -0
  344. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +2 -0
  345. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +1 -1
  346. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +4 -2
  347. package/dist/_dts/sdk/src/version.d.ts +1 -1
  348. package/dist/_dts/surfaces/src/index.d.ts +1 -0
  349. package/dist/_dts/theme-core/src/buttons/effects/types.d.ts +1 -1
  350. package/dist/_dts/theme-core/src/footer/effectiveNavLinkStyle.d.ts +13 -0
  351. package/dist/_dts/theme-core/src/footer/index.d.ts +1 -0
  352. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  353. package/dist/_dts/theme-core/src/header/effectiveNavLinkStyle.d.ts +17 -0
  354. package/dist/_dts/theme-core/src/header/generateHeaderLogoStyles.d.ts +15 -0
  355. package/dist/_dts/theme-core/src/header/generateHeaderNavLinkStyles.d.ts +4 -0
  356. package/dist/_dts/theme-core/src/header/index.d.ts +3 -0
  357. package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +1 -1
  358. package/dist/_dts/theme-core/src/header/openingForegroundProjection.d.ts +7 -0
  359. package/dist/_dts/theme-core/src/header/rootPaint.d.ts +4 -0
  360. package/dist/_dts/theme-core/src/navigation/effectPolicy.d.ts +38 -0
  361. package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +4 -0
  362. package/dist/_dts/theme-core/src/navigation/types.d.ts +4 -0
  363. package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +1 -1
  364. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
  365. package/dist/_dts/theme-core/src/surfaces/foregroundContract.d.ts +7 -0
  366. package/dist/_dts/theme-core/src/surfaces/foregroundInteraction.d.ts +29 -22
  367. package/dist/_dts/theme-core/src/surfaces/foregroundRoles.d.ts +10 -2
  368. package/dist/_dts/theme-core/src/surfaces/resolveSurfaceForeground.d.ts +9 -0
  369. package/dist/_dts/theme-core/src/utils/cssDeclarations.d.ts +2 -0
  370. package/dist/_dts/ui/src/badge.d.ts +2 -1
  371. package/dist/_dts/ui/src/button.d.ts +1 -1
  372. package/dist/_dts/ui/src/combobox-keys.d.ts +23 -0
  373. package/dist/_dts/ui/src/combobox-rows.d.ts +34 -0
  374. package/dist/_dts/ui/src/combobox.d.ts +26 -1
  375. package/dist/_dts/ui/src/date-picker.d.ts +5 -8
  376. package/dist/_dts/ui/src/editor-item-card.d.ts +1 -0
  377. package/dist/_dts/ui/src/field-trigger.d.ts +39 -0
  378. package/dist/_dts/ui/src/fieldControl.d.ts +27 -0
  379. package/dist/_dts/ui/src/index.d.ts +4 -1
  380. package/dist/_dts/ui/src/native-select.d.ts +8 -0
  381. package/dist/_dts/ui/src/popover.d.ts +7 -1
  382. package/dist/_dts/ui/src/segmented-control.d.ts +4 -0
  383. package/dist/_dts/ui/src/surface.d.ts +1 -1
  384. package/dist/client/{BookingConsentAgreement-BQKL045f.mjs → BookingMailingListNote-CzRt2dF_.mjs} +110 -97
  385. package/dist/client/{CheckboxChoice--W2n6yKs.mjs → CheckboxChoice-B33MqoUo.mjs} +1 -1
  386. package/dist/client/DemoBookingPortalAccess-mxqwap3f.mjs +344 -0
  387. package/dist/client/{EventCombined.client-BdRjVbhH.mjs → EventCombined.client-CDb11igO.mjs} +7 -7
  388. package/dist/client/{EventListing.client-DBxC6xOU.mjs → EventListing.client-EgYhzKPa.mjs} +2 -2
  389. package/dist/client/{LeafletStaticMap-mHEJKrTs.mjs → LeafletStaticMap-gtmtaA2b.mjs} +1 -1
  390. package/dist/client/{scrollToBlock-BNgaEUpo.mjs → TerminalPanel-DvNUP5ot.mjs} +77 -77
  391. package/dist/client/{ThemedButton-CE5KYT6z.mjs → ThemedButton-C7CeUJjW.mjs} +2 -2
  392. package/dist/client/{accordion-BEQNSptH.mjs → accordion-kjvt49rA.mjs} +1 -1
  393. package/dist/client/{bookingForm-AMr-s5vw.mjs → bookingForm-pbRZordh.mjs} +411 -141
  394. package/dist/client/bookings.mjs +966 -396
  395. package/dist/client/{carousel-Bbt_QgJy.mjs → carousel-f4Zbmicv.mjs} +2 -2
  396. package/dist/client/{carousel.client-jahpU9Vz.mjs → carousel.client-A2lG-9od.mjs} +1 -1
  397. package/dist/client/{cart-CnWi30zJ.mjs → cart-DO20An50.mjs} +3 -3
  398. package/dist/client/{checkout-f3nkWgd4.mjs → checkout-Du5amDR_.mjs} +3 -3
  399. package/dist/client/{checkoutUrls-CW3-78uu.mjs → checkoutUrls-CXhko2Rv.mjs} +1 -1
  400. package/dist/client/client.mjs +3837 -2202
  401. package/dist/client/{colorStyles-CuJBiS-1.mjs → colorStyles-j5U9v5JA.mjs} +5 -1
  402. package/dist/client/{context-Bc8T6pCe.mjs → context-eW97E945.mjs} +4 -3
  403. package/dist/client/{dates-DUsCEzLb.mjs → dates-jPCirRea.mjs} +56 -11
  404. package/dist/client/{eventCalendar-CKwgXui5.mjs → eventCalendar-C2M-iE4j.mjs} +10 -10
  405. package/dist/client/{eventCombined-CBAOSTGR.mjs → eventCombined-W6ns3LHg.mjs} +4 -4
  406. package/dist/client/{eventDetails-Dh-_WiBD.mjs → eventDetails-CR-GT0f0.mjs} +4 -4
  407. package/dist/client/{eventListing-CA3frIH5.mjs → eventListing-BK8AfYZz.mjs} +4 -4
  408. package/dist/client/{eventRegistration-BHtsgdcg.mjs → eventRegistration-BJSd4KUu.mjs} +461 -266
  409. package/dist/client/{form-C2h3YAcg.mjs → form-BvpfbQaT.mjs} +5 -5
  410. package/dist/client/{headerSection-lwMuMTH9.mjs → headerSection-I5sUQ8x-.mjs} +3 -3
  411. package/dist/client/hooks.mjs +909 -163
  412. package/dist/client/{locationMap-DJ2bLODV.mjs → locationMap-BLvwf9_f.mjs} +4 -4
  413. package/dist/client/{FieldValidationMessage-AYanWFb-.mjs → mailingListSignupCopy-DZSHZrm6.mjs} +14 -1
  414. package/dist/client/{media-BtJ37tzS.mjs → media-Cl38iOMI.mjs} +11 -4
  415. package/dist/client/{newsletterForm-8Pu5K32g.mjs → newsletterForm-DrQ2weE8.mjs} +6 -6
  416. package/dist/client/{pricing-HHx3IgBz.mjs → pricing-BES87mrR.mjs} +1 -1
  417. package/dist/client/{productDetail-C_1odnAf.mjs → productDetail-Url9jcc5.mjs} +3 -3
  418. package/dist/client/{productList-CtCv-Nmx.mjs → productList-DE7ngEZJ.mjs} +3 -3
  419. package/dist/client/{propsDecoder-Dcgsncxb.mjs → propsDecoder-D1OtGXDV.mjs} +140 -22
  420. package/dist/client/rendering/client.mjs +2366 -997
  421. package/dist/client/rendering/islands.mjs +19 -19
  422. package/dist/client/rendering.mjs +4607 -2884
  423. package/dist/client/{routeIslandApiConfig-CWLP7wu3.mjs → routeIslandApiConfig-BG9Y-SHg.mjs} +1 -1
  424. package/dist/client/{shop-DQXrQ8kJ.mjs → shop-CJkuySJ3.mjs} +126 -79
  425. package/dist/client/{shop-commerce-B88zmWWo.mjs → shop-commerce-4rKj5n9h.mjs} +26 -14
  426. package/dist/client/{shop-commerce-store-DtSfkKuX.mjs → shop-commerce-store-Bxm75Pg6.mjs} +1 -1
  427. package/dist/client/{shopShared-cuaONpkJ.mjs → shopShared-DpoQDWfz.mjs} +5 -5
  428. package/dist/client/{useEventFilters-Bukew6Gb.mjs → useEventFilters-D8HliSqR.mjs} +33 -18
  429. package/dist/preview-next/before-render.mjs +314 -133
  430. package/dist/preview-next/client/runtime.mjs +4 -4
  431. package/dist/preview-next/editor-base.css +53 -2
  432. package/dist/preview-next/editor-chrome.css +7 -4
  433. package/dist/preview-next/keepAlive.mjs +314 -133
  434. package/dist/preview-next/middleware.mjs +314 -133
  435. package/dist/{previewAuthStore-h5IgbSp4.mjs → previewAuthStore-BXXF3hhW.mjs} +316 -133
  436. package/dist/{sdk-runtime-DTc1uIXn.mjs → sdk-runtime-C2a05WjL.mjs} +2 -2
  437. package/dist/{separator-BpHS1KZK.mjs → separator-CuNhBAhS.mjs} +1 -1
  438. package/dist/server/components.mjs +6888 -6157
  439. package/dist/server/config-validation.mjs +931 -199
  440. package/dist/server/config.mjs +931 -199
  441. package/dist/server/data.mjs +929 -198
  442. package/dist/server/index.mjs +317 -134
  443. package/dist/server/navigation.mjs +13 -2
  444. package/dist/server/next.mjs +5003 -4340
  445. package/dist/server/page-converter.mjs +160 -78
  446. package/dist/server/prebuild.mjs +1 -1
  447. package/dist/server/rendering/server.mjs +6421 -5687
  448. package/dist/server/rendering.mjs +7683 -6933
  449. package/dist/server/routing.mjs +1035 -338
  450. package/dist/server/server.mjs +946 -256
  451. package/dist/server/theme-bridge.mjs +66 -17
  452. package/dist/server/theme.mjs +5 -1
  453. package/dist/styles/index.css +32 -4
  454. package/package.json +1 -1
  455. package/dist/_dts/billing/src/plans/display.d.ts +0 -15
  456. package/dist/_dts/content-editor/src/controller/buildBlockPublishedBaselines.d.ts +0 -4
  457. package/dist/_dts/content-editor/src/controller/buildPublishSuccessTransition.d.ts +0 -16
  458. package/dist/_dts/content-editor/src/controller/driver.d.ts +0 -14
  459. package/dist/_dts/content-editor/src/controller/seedDraftBaselinesFromBlocks.d.ts +0 -7
  460. package/dist/_dts/content-editor/src/controller/useEntrySyncHelpers.d.ts +0 -29
  461. package/dist/_dts/content-editor/src/hooks/autosaveScopePlanning.d.ts +0 -26
  462. package/dist/_dts/content-editor/src/hooks/useSimpleAutosave.d.ts +0 -64
  463. package/dist/_dts/content-editor/src/hooks/useStoreAutosave.d.ts +0 -48
  464. package/dist/_dts/content-editor/src/types.d.ts +0 -44
  465. package/dist/_dts/core/src/participant-identity.d.ts +0 -135
  466. package/dist/client/DiscountCodeDisclosure-CsOtjFY7.mjs +0 -137
@@ -57,6 +57,19 @@ const CURRENCY_LOCALE_BY_CODE = {
57
57
  function resolveCurrencyLocale(currencyCode, override) {
58
58
  return override ?? CURRENCY_LOCALE_BY_CODE[currencyCode] ?? "en";
59
59
  }
60
+ function fractionDigitsFor(decimals, exactFormatter) {
61
+ switch (decimals) {
62
+ case "exact": return {};
63
+ case "auto": return {
64
+ minimumFractionDigits: 0,
65
+ maximumFractionDigits: exactFormatter.resolvedOptions().maximumFractionDigits
66
+ };
67
+ case "whole": return {
68
+ minimumFractionDigits: 0,
69
+ maximumFractionDigits: 0
70
+ };
71
+ }
72
+ }
60
73
  /**
61
74
  * The single currency-amount formatter for the product: minor units in,
62
75
  * localized string out.
@@ -67,6 +80,13 @@ function resolveCurrencyLocale(currencyCode, override) {
67
80
  * own `Intl.NumberFormat`.
68
81
  */
69
82
  function formatCurrencyAmount(amountCents, currency, options) {
83
+ return formatCurrencyMajorUnits(amountCents / 100, currency, options);
84
+ }
85
+ /**
86
+ * `formatCurrencyAmount` for an amount already in MAJOR units (29.99 = £29.99),
87
+ * such as a registrar price. Prefer minor units everywhere else.
88
+ */
89
+ function formatCurrencyMajorUnits(amount, currency, options) {
70
90
  const currencyCode = currency.toUpperCase();
71
91
  const locale = resolveCurrencyLocale(currencyCode, options?.locale);
72
92
  try {
@@ -74,17 +94,13 @@ function formatCurrencyAmount(amountCents, currency, options) {
74
94
  style: "currency",
75
95
  currency: currencyCode
76
96
  });
77
- const fractionDigits = options?.decimals === "auto" ? {
78
- minimumFractionDigits: 0,
79
- maximumFractionDigits: exactFormatter.resolvedOptions().maximumFractionDigits
80
- } : {};
81
97
  return new Intl.NumberFormat(locale, {
82
98
  style: "currency",
83
99
  currency: currencyCode,
84
- ...fractionDigits
85
- }).format(amountCents / 100);
100
+ ...fractionDigitsFor(options?.decimals ?? "exact", exactFormatter)
101
+ }).format(amount);
86
102
  } catch {
87
- return `${(amountCents / 100).toFixed(2)} ${currencyCode}`;
103
+ return `${amount.toFixed(2)} ${currencyCode}`;
88
104
  }
89
105
  }
90
106
  //#endregion
@@ -661,17 +677,35 @@ function parseMailingListRuntimeContext(value) {
661
677
  if (!isRecord$10(value)) return invalidRuntimeContext();
662
678
  if (value.tag === "not_configured") return ok({ tag: "not_configured" });
663
679
  if (value.tag !== "configured") return invalidRuntimeContext();
680
+ return parseConfiguredRuntimeContext(value);
681
+ }
682
+ function parseConfiguredRuntimeContext(value) {
664
683
  const revision = parseMailingListSetupRevision(value.revision);
665
684
  const form = parseMailingListGlobalForm(value.form);
666
685
  const provider = parseRuntimeProvider(value.provider);
667
- if (revision === null || !form.ok || provider === null) return invalidRuntimeContext();
686
+ const bookingSignup = parseBookingSignupOffer(value.bookingSignup);
687
+ if (revision === null || !form.ok || provider === null || bookingSignup === null) return invalidRuntimeContext();
668
688
  return ok({
669
689
  tag: "configured",
670
690
  revision,
691
+ bookingSignup,
671
692
  form: form.value,
672
693
  provider
673
694
  });
674
695
  }
696
+ function parseBookingSignupOffer(value) {
697
+ if (value === void 0) return {
698
+ tag: "unavailable",
699
+ reason: "disabled"
700
+ };
701
+ if (!isRecord$10(value)) return null;
702
+ if (value.tag === "offered") return { tag: "offered" };
703
+ if (value.tag === "unavailable" && (value.reason === "disabled" || value.reason === "fields" || value.reason === "destination")) return {
704
+ tag: "unavailable",
705
+ reason: value.reason
706
+ };
707
+ return null;
708
+ }
675
709
  function parseRuntimeProvider(value) {
676
710
  if (!isRecord$10(value)) return null;
677
711
  switch (value.provider) {
@@ -2347,13 +2381,16 @@ const SURFACE_FOREGROUND_CSS_VARS = {
2347
2381
  text: "--rb-surface-text-color",
2348
2382
  heading: "--rb-surface-heading-color",
2349
2383
  link: "--rb-surface-link-color",
2384
+ linkHover: "--rb-surface-link-hover-color",
2350
2385
  supporting: "--rb-surface-supporting-color"
2351
2386
  };
2352
2387
  const DEFAULT_SURFACE_TEXT_COLOR = "rgb(var(--tb-text, 17 24 39))";
2388
+ const DEFAULT_SURFACE_LINK_COLOR = "rgb(var(--tb-primary, var(--tb-text, 17 24 39)))";
2353
2389
  const DEFAULT_ROLE_FALLBACKS = {
2354
2390
  text: DEFAULT_SURFACE_TEXT_COLOR,
2355
2391
  heading: DEFAULT_SURFACE_TEXT_COLOR,
2356
- link: "rgb(var(--tb-primary, var(--tb-text, 17 24 39)))",
2392
+ link: DEFAULT_SURFACE_LINK_COLOR,
2393
+ linkHover: DEFAULT_SURFACE_LINK_COLOR,
2357
2394
  supporting: "rgb(var(--tb-mutedText, 100 116 139))"
2358
2395
  };
2359
2396
  function requireSurfaceColorValue(role, value) {
@@ -2363,10 +2400,12 @@ function requireSurfaceColorValue(role, value) {
2363
2400
  }
2364
2401
  function completeSurfaceForegrounds(input) {
2365
2402
  const text = requireSurfaceColorValue("text", input.text);
2403
+ const link = input.link === void 0 ? text : requireSurfaceColorValue("link", input.link);
2366
2404
  return {
2367
2405
  text,
2368
2406
  heading: input.heading === void 0 ? text : requireSurfaceColorValue("heading", input.heading),
2369
- link: input.link === void 0 ? text : requireSurfaceColorValue("link", input.link),
2407
+ link,
2408
+ linkHover: input.linkHover === void 0 ? link : requireSurfaceColorValue("linkHover", input.linkHover),
2370
2409
  supporting: input.supporting === void 0 ? text : requireSurfaceColorValue("supporting", input.supporting)
2371
2410
  };
2372
2411
  }
@@ -2374,6 +2413,7 @@ function surfaceForegroundValue(role, outsideProviderFallback = DEFAULT_ROLE_FAL
2374
2413
  const roleVariable = SURFACE_FOREGROUND_CSS_VARS[role];
2375
2414
  const fallback = requireSurfaceColorValue("fallback", outsideProviderFallback);
2376
2415
  if (role === "text") return `var(${roleVariable}, ${fallback})`;
2416
+ if (role === "linkHover") return `var(${roleVariable}, ${surfaceForegroundValue("link", fallback)})`;
2377
2417
  return `var(${roleVariable}, var(${SURFACE_FOREGROUND_CSS_VARS.text}, ${fallback}))`;
2378
2418
  }
2379
2419
  function surfaceForegroundValueWithOpacity(role, opacityPercent) {
@@ -2387,9 +2427,25 @@ function surfaceForegroundStyle(input) {
2387
2427
  [SURFACE_FOREGROUND_CSS_VARS.text]: foregrounds.text,
2388
2428
  [SURFACE_FOREGROUND_CSS_VARS.heading]: foregrounds.heading,
2389
2429
  [SURFACE_FOREGROUND_CSS_VARS.link]: foregrounds.link,
2390
- [SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting
2430
+ [SURFACE_FOREGROUND_CSS_VARS.linkHover]: foregrounds.linkHover,
2431
+ [SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting,
2432
+ "--rb-surface-link-hover-decoration": hoverDecoration(input)
2433
+ };
2434
+ }
2435
+ function surfaceForegroundInputFromResolved(foreground, color) {
2436
+ const { roles } = foreground;
2437
+ return {
2438
+ text: color(roles.text),
2439
+ heading: color(roles.heading),
2440
+ link: color(roles.link),
2441
+ linkHover: color(roles.linkHover),
2442
+ supporting: color(roles.supporting),
2443
+ hoverDecoration: foreground.hoverDecoration
2391
2444
  };
2392
2445
  }
2446
+ function hoverDecoration(input) {
2447
+ return input.hoverDecoration ?? "underline";
2448
+ }
2393
2449
  //#endregion
2394
2450
  //#region ../theme-core/src/buttons/constants.ts
2395
2451
  /**
@@ -3246,6 +3302,64 @@ function parseAlpha(source) {
3246
3302
  function isRgbChannel(value) {
3247
3303
  return Number.isFinite(value) && value >= 0 && value <= 255;
3248
3304
  }
3305
+ /**
3306
+ * Derive the hover foreground that belongs with a resolved resting foreground.
3307
+ *
3308
+ * A resting foreground is chosen to be legible against a known surface. A hover
3309
+ * state derived from it stays within a bounded distance of that colour, so it
3310
+ * inherits most of the resting colour's contrast margin instead of asserting
3311
+ * an unrelated brand colour that no one checked against the surface.
3312
+ *
3313
+ * That bounded-distance property is what lets this be used on a transparent
3314
+ * overlay header, where the backdrop is only partly knowable: the scrolled
3315
+ * state composites a 60% glass tint over arbitrary page content, so no
3316
+ * compile-time contrast proof is available there. Staying near a colour that
3317
+ * is already trusted in both states is a weaker claim than a contrast proof,
3318
+ * and it is one this function can actually keep.
3319
+ *
3320
+ * Returns `null` when the resting token is not a plain palette token — an
3321
+ * already-faded or raw value has no well-defined softening, and the caller
3322
+ * should leave hover alone rather than guess.
3323
+ */
3324
+ function deriveForegroundHoverToken(restingToken) {
3325
+ const parts = parseColorTokenParts(restingToken);
3326
+ if (parts.kind !== "token") return null;
3327
+ if (parts.opacityPercent !== null) return null;
3328
+ return parseThemeColorToken(`${parts.token}/85`);
3329
+ }
3330
+ /**
3331
+ * Prefer an authored hover that survives every measured backdrop, then a
3332
+ * checked softening of the resting colour. A null backdrop set represents a
3333
+ * trusted treatment: only an explicit authored hover may change the colour.
3334
+ * When neither option works, retain the resting colour and underline it.
3335
+ */
3336
+ function planForegroundHover(input) {
3337
+ const { restingToken, candidate, palette, backdrops } = input;
3338
+ if (candidate && candidate !== restingToken) {
3339
+ if (backdrops === null || survivesEveryBackdrop(candidate, palette, backdrops)) return {
3340
+ kind: "candidate",
3341
+ token: candidate,
3342
+ decoration: "initial"
3343
+ };
3344
+ }
3345
+ const softened = deriveForegroundHoverToken(restingToken);
3346
+ if (softened && backdrops && survivesEveryBackdrop(softened, palette, backdrops)) return {
3347
+ kind: "softened",
3348
+ token: softened,
3349
+ decoration: "initial"
3350
+ };
3351
+ return {
3352
+ kind: "resting",
3353
+ token: restingToken,
3354
+ decoration: "underline"
3355
+ };
3356
+ }
3357
+ function survivesEveryBackdrop(token, palette, backdrops) {
3358
+ return backdrops.length > 0 && backdrops.every((backdrop) => {
3359
+ const foreground = resolveOpaqueSurfaceHex(token, palette, backdrop);
3360
+ return foreground !== null && contrastRatio(foreground, backdrop) >= 4.5;
3361
+ });
3362
+ }
3249
3363
  //#endregion
3250
3364
  //#region ../theme-core/src/surfaces/resolveSurfaceForeground.ts
3251
3365
  const FALLBACK_TEXT_TOKENS = [
@@ -3292,12 +3406,16 @@ function resolveSurfaceForeground(background, palette, candidates = {}, options
3292
3406
  }
3293
3407
  function foregroundCandidates(background, overrides) {
3294
3408
  return {
3295
- text: overrides.text ?? background?.textColor ?? null,
3296
- heading: overrides.heading ?? background?.headingColor ?? null,
3297
- link: overrides.link ?? background?.linkColor ?? null,
3298
- supporting: overrides.supporting ?? background?.supportingColor ?? null
3409
+ text: candidateOrBackground(overrides.text, background?.textColor),
3410
+ heading: candidateOrBackground(overrides.heading, background?.headingColor),
3411
+ link: candidateOrBackground(overrides.link, background?.linkColor),
3412
+ linkHover: candidateOrBackground(overrides.linkHover),
3413
+ supporting: candidateOrBackground(overrides.supporting, background?.supportingColor)
3299
3414
  };
3300
3415
  }
3416
+ function candidateOrBackground(candidate, backgroundValue) {
3417
+ return candidate ?? backgroundValue ?? null;
3418
+ }
3301
3419
  function resolveDeterministicForeground(backgroundReference, candidates, palette, compositeBase) {
3302
3420
  const backgroundHex = resolveOpaqueSurfaceHex(backgroundReference, palette, compositeBase);
3303
3421
  if (!backgroundHex) return resolveTrustedTreatmentForeground(candidates, palette);
@@ -3309,29 +3427,51 @@ function resolveDeterministicForeground(backgroundReference, candidates, palette
3309
3427
  ...FALLBACK_TEXT_TOKENS
3310
3428
  ], backgroundHex, palette, derivedOnToken ? [derivedOnToken] : []);
3311
3429
  if (!text) return { kind: "unknown" };
3312
- return {
3313
- kind: "known",
3314
- roles: {
3315
- text,
3316
- heading: safeTokenOr(candidates.heading, text, backgroundHex, palette),
3317
- link: safeTokenOr(candidates.link, text, backgroundHex, palette),
3318
- supporting: safeTokenOr(candidates.supporting, text, backgroundHex, palette)
3319
- }
3320
- };
3430
+ return knownForeground({
3431
+ text,
3432
+ heading: safeTokenOr(candidates.heading, text, backgroundHex, palette),
3433
+ link: safeTokenOr(candidates.link, text, backgroundHex, palette),
3434
+ supporting: safeTokenOr(candidates.supporting, text, backgroundHex, palette)
3435
+ }, {
3436
+ kind: "measured",
3437
+ backdropHex: backgroundHex
3438
+ }, candidates.linkHover, palette);
3321
3439
  }
3322
3440
  function resolveTrustedTreatmentForeground(candidates, palette) {
3323
3441
  const text = canonicalToken(candidates.text, palette);
3324
3442
  if (!text) return { kind: "unknown" };
3443
+ return knownForeground({
3444
+ text,
3445
+ heading: canonicalToken(candidates.heading, palette) ?? text,
3446
+ link: canonicalToken(candidates.link, palette) ?? text,
3447
+ supporting: canonicalToken(candidates.supporting, palette) ?? text
3448
+ }, { kind: "trusted-treatment" }, candidates.linkHover, palette);
3449
+ }
3450
+ function knownForeground(roles, provenance, hoverCandidate, palette) {
3451
+ const hover = planForegroundHover({
3452
+ restingToken: roles.link,
3453
+ candidate: canonicalHoverToken(hoverCandidate, palette),
3454
+ palette,
3455
+ backdrops: provenance.kind === "measured" ? [provenance.backdropHex] : null
3456
+ });
3325
3457
  return {
3326
3458
  kind: "known",
3459
+ provenance,
3327
3460
  roles: {
3328
- text,
3329
- heading: canonicalToken(candidates.heading, palette) ?? text,
3330
- link: canonicalToken(candidates.link, palette) ?? text,
3331
- supporting: canonicalToken(candidates.supporting, palette) ?? text
3332
- }
3461
+ ...roles,
3462
+ linkHover: hover.token
3463
+ },
3464
+ hoverDecoration: hover.decoration
3333
3465
  };
3334
3466
  }
3467
+ function canonicalHoverToken(reference, palette) {
3468
+ const token = parseThemeColorToken(reference);
3469
+ if (token) {
3470
+ const parts = parseColorTokenParts(token);
3471
+ if (parts.kind === "token" && resolveConcreteColorHex(parts.token, palette)) return token;
3472
+ }
3473
+ return canonicalToken(reference, palette);
3474
+ }
3335
3475
  function safeTokenOr(candidate, fallback, backgroundHex, palette) {
3336
3476
  return firstSafeToken([candidate], backgroundHex, palette) ?? fallback;
3337
3477
  }
@@ -6271,6 +6411,43 @@ const effectCompositionSchema = z.object({
6271
6411
  /** Effects applied on focus */
6272
6412
  focus: z.array(effectApplicationSchema).optional()
6273
6413
  });
6414
+ const policiesById = {
6415
+ "darken-background": "other",
6416
+ "lighten-background": "other",
6417
+ "fade-background": "other",
6418
+ "opacity-reduce": "other",
6419
+ "animated-gradient": "other",
6420
+ "background-on-hover": "paired-hover",
6421
+ "background-on-hover-alpha": "paired-hover",
6422
+ "border-glow": "other",
6423
+ "drop-shadow": "other",
6424
+ "inner-shadow": "other",
6425
+ "neumorphic-shadow": "other",
6426
+ "outer-glow": "other",
6427
+ "retro-3d-shadow": "other",
6428
+ "scale-up": "other",
6429
+ "scale-down": "other",
6430
+ lift: "other",
6431
+ "press-down": "other",
6432
+ pop: "other",
6433
+ "aurora-glow": "other",
6434
+ "cosmic-stardust": "other",
6435
+ "gradient-border-fill": "other",
6436
+ "animated-gradient-border-fill": "other",
6437
+ "border-bottom-grow": "other",
6438
+ "gradient-text": "other",
6439
+ "text-color-change": "text-colour",
6440
+ "border-color-change": "other",
6441
+ "sketchy-border": "other",
6442
+ "pulse-animation": "other",
6443
+ "nav-underline": "underline",
6444
+ "nav-frosted-base": "other",
6445
+ "nav-frosted-hover": "other",
6446
+ "nav-frosted-active": "other"
6447
+ };
6448
+ function navEffectPolicy(effectId) {
6449
+ return policiesById[effectId] ?? null;
6450
+ }
6274
6451
  //#endregion
6275
6452
  //#region ../theme-core/src/navigation/types.ts
6276
6453
  /**
@@ -6359,6 +6536,16 @@ const navLinkStyleSchema = z.object({
6359
6536
  /** Composable effects */
6360
6537
  effects: effectCompositionSchema.optional()
6361
6538
  });
6539
+ function navLinkHoverColorCandidate(style) {
6540
+ const effect = style?.effects?.hover?.find((item) => navEffectPolicy(item.effectId) === "text-colour");
6541
+ return parseThemeColorToken(effect?.options?.hoverColorToken ?? style?.hoverColorToken);
6542
+ }
6543
+ function navLinkOwnsHoverForeground(style) {
6544
+ return style?.effects?.hover?.some((effect) => navEffectPolicy(effect.effectId) === "paired-hover") ?? false;
6545
+ }
6546
+ function navLinkOwnsUnderline(style) {
6547
+ return style?.effects?.hover?.some((effect) => navEffectPolicy(effect.effectId) === "underline") ?? false;
6548
+ }
6362
6549
  //#endregion
6363
6550
  //#region ../theme-core/src/customCss/validation.ts
6364
6551
  /**
@@ -8214,7 +8401,6 @@ const publicEventBaseSchema = z.object({
8214
8401
  description: z.string().nullable(),
8215
8402
  content: z.object({ body: RichTextDocSchema.nullable().optional() }).optional(),
8216
8403
  presentation: z.object({
8217
- cardTitleOverride: z.string().nullable().optional(),
8218
8404
  summary: z.string().nullable().optional(),
8219
8405
  image: mediaSchema.nullable().optional()
8220
8406
  }).optional(),
@@ -8247,6 +8433,7 @@ const publicEventBaseSchema = z.object({
8247
8433
  "archived"
8248
8434
  ]).optional(),
8249
8435
  timeZone: z.string(),
8436
+ siteTimeZone: z.string().optional(),
8250
8437
  pricing: publicEventPricingSchema,
8251
8438
  paymentTerms: blockBookingPaymentTermsSchema,
8252
8439
  cancellationPolicy: z.object({ refunds: z.object({
@@ -8517,6 +8704,64 @@ function defineEndpointDefinitions(definitions) {
8517
8704
  return definitions;
8518
8705
  }
8519
8706
  //#endregion
8707
+ //#region ../api/src/apiEndpointTypes.ts
8708
+ function allowedDemoMutationPolicy() {
8709
+ return {
8710
+ classification: "allowed",
8711
+ publicMessage: ""
8712
+ };
8713
+ }
8714
+ function blockedDemoMutationPolicy(classification, publicMessage) {
8715
+ if (publicMessage.trim() === "") throw new Error(`Demo mutation policy ${classification} requires publicMessage.`);
8716
+ return {
8717
+ classification,
8718
+ publicMessage
8719
+ };
8720
+ }
8721
+ //#endregion
8722
+ //#region ../api/src/demoMutationPolicies.ts
8723
+ const DEMO_MUTATION_BLOCKED_HIDDEN = blockedDemoMutationPolicy("blocked-hidden", "This action is not available in demo sites.");
8724
+ const DEMO_MUTATION_BLOCKED_DISABLED = blockedDemoMutationPolicy("blocked-disabled", "This setting is disabled in demo sites.");
8725
+ blockedDemoMutationPolicy("internal-only", "This internal operation is not available in demo sites.");
8726
+ const DEMO_MUTATION_ALLOWED = allowedDemoMutationPolicy();
8727
+ //#endregion
8728
+ //#region ../api/src/siteLifecycleEndpoints.ts
8729
+ const SITE_LIFECYCLE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
8730
+ createSite: {
8731
+ path: "/sites/manage",
8732
+ method: "POST",
8733
+ tags: ["site"],
8734
+ auth: "user",
8735
+ responseKind: "json",
8736
+ errors: []
8737
+ },
8738
+ createSiteManual: {
8739
+ path: "/sites/manual",
8740
+ method: "POST",
8741
+ tags: ["site"],
8742
+ auth: "user",
8743
+ responseKind: "json",
8744
+ errors: []
8745
+ },
8746
+ updateSite: {
8747
+ path: "/sites/manage",
8748
+ method: "PUT",
8749
+ tags: ["site"],
8750
+ auth: "user",
8751
+ responseKind: "json",
8752
+ errors: []
8753
+ },
8754
+ deleteSite: {
8755
+ path: "/sites/{siteId}",
8756
+ method: "DELETE",
8757
+ tags: ["site", "site-{siteId}"],
8758
+ auth: "user",
8759
+ responseKind: "json",
8760
+ errors: [],
8761
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
8762
+ }
8763
+ });
8764
+ //#endregion
8520
8765
  //#region ../api/src/publicNewsletterEndpointDefinitions.ts
8521
8766
  const PUBLIC_NEWSLETTER_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
8522
8767
  subscribeNewsletter: {
@@ -8577,27 +8822,6 @@ const PUBLIC_NEWSLETTER_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
8577
8822
  }
8578
8823
  });
8579
8824
  //#endregion
8580
- //#region ../api/src/apiEndpointTypes.ts
8581
- function allowedDemoMutationPolicy() {
8582
- return {
8583
- classification: "allowed",
8584
- publicMessage: ""
8585
- };
8586
- }
8587
- function blockedDemoMutationPolicy(classification, publicMessage) {
8588
- if (publicMessage.trim() === "") throw new Error(`Demo mutation policy ${classification} requires publicMessage.`);
8589
- return {
8590
- classification,
8591
- publicMessage
8592
- };
8593
- }
8594
- //#endregion
8595
- //#region ../api/src/demoMutationPolicies.ts
8596
- const DEMO_MUTATION_BLOCKED_HIDDEN = blockedDemoMutationPolicy("blocked-hidden", "This action is not available in demo sites.");
8597
- const DEMO_MUTATION_BLOCKED_DISABLED = blockedDemoMutationPolicy("blocked-disabled", "This setting is disabled in demo sites.");
8598
- blockedDemoMutationPolicy("internal-only", "This internal operation is not available in demo sites.");
8599
- const DEMO_MUTATION_ALLOWED = allowedDemoMutationPolicy();
8600
- //#endregion
8601
8825
  //#region ../api/src/cache-tags.ts
8602
8826
  /**
8603
8827
  * Tag templates for endpoint definitions (support `{param}` placeholders).
@@ -9624,6 +9848,20 @@ const NEWSLETTER_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
9624
9848
  responseKind: "json",
9625
9849
  errors: ["auth:forbidden", "server:internal_error"]
9626
9850
  },
9851
+ setMailingListBookingOptIn: {
9852
+ path: "/sites/{siteId}/mailing-list/setup/booking-opt-in",
9853
+ method: "PUT",
9854
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
9855
+ auth: "user",
9856
+ responseKind: "json",
9857
+ demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
9858
+ errors: [
9859
+ "auth:forbidden",
9860
+ "validation:invalid_input",
9861
+ "resource:conflict",
9862
+ "server:internal_error"
9863
+ ]
9864
+ },
9627
9865
  getMailingListAuthoringContext: {
9628
9866
  path: "/sites/{siteId}/mailing-list/authoring-context",
9629
9867
  method: "GET",
@@ -10039,6 +10277,7 @@ const SDK_EVENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
10039
10277
  responseKind: "json",
10040
10278
  errors: [
10041
10279
  "resource:not_found",
10280
+ "validation:invalid_input",
10042
10281
  "resource:conflict",
10043
10282
  "server:internal_error"
10044
10283
  ]
@@ -10493,28 +10732,6 @@ const EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
10493
10732
  "resource:conflict",
10494
10733
  "server:internal_error"
10495
10734
  ]
10496
- },
10497
- /**
10498
- * The Content tab's one write: the short introduction, image and
10499
- * description of an event's page, published without its layout.
10500
- */
10501
- saveEventPageWords: {
10502
- path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/words",
10503
- method: "PUT",
10504
- tags: [
10505
- TAG_TEMPLATES.siteCollection,
10506
- TAG_TEMPLATES.siteRoutableContent,
10507
- TAG_TEMPLATES.pageSurfaceById
10508
- ],
10509
- auth: "user",
10510
- responseKind: "json",
10511
- errors: [
10512
- "auth:forbidden",
10513
- "validation:invalid_input",
10514
- "resource:not_found",
10515
- "resource:conflict",
10516
- "server:internal_error"
10517
- ]
10518
10735
  }
10519
10736
  });
10520
10737
  //#endregion
@@ -10939,6 +11156,15 @@ const BILLING_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
10939
11156
  auth: "user",
10940
11157
  responseKind: "json"
10941
11158
  },
11159
+ /** Continue on Free from the onboarding card page; only the attempt's owner. */
11160
+ continueOnboardingOnFree: {
11161
+ path: "/onboarding/attempts/{attemptToken}/plan/free",
11162
+ method: "POST",
11163
+ tags: ["billing"],
11164
+ auth: "user",
11165
+ errors: [],
11166
+ responseKind: "json"
11167
+ },
10942
11168
  createBillingPortalSession: {
10943
11169
  path: "/billing/portal/session",
10944
11170
  method: "POST",
@@ -10948,6 +11174,209 @@ const BILLING_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
10948
11174
  }
10949
11175
  });
10950
11176
  //#endregion
11177
+ //#region ../api/src/editLeaseEndpoints.ts
11178
+ const path = "/sites/{siteId}/edit-leases/{nodeType}/{nodeId}";
11179
+ const lifecycleErrors = [
11180
+ "auth:lease_required",
11181
+ "auth:forbidden",
11182
+ "resource:not_found",
11183
+ "validation:invalid_input",
11184
+ "server:internal_error"
11185
+ ];
11186
+ const EDIT_LEASE_ENDPOINT_DEFINITIONS = {
11187
+ readEditLease: {
11188
+ path,
11189
+ method: "GET",
11190
+ editLease: "lifecycle",
11191
+ errors: lifecycleErrors,
11192
+ auth: "user",
11193
+ responseKind: "json"
11194
+ },
11195
+ acquireEditLease: {
11196
+ path,
11197
+ method: "POST",
11198
+ editLease: "lifecycle",
11199
+ errors: lifecycleErrors,
11200
+ auth: "user",
11201
+ responseKind: "json"
11202
+ },
11203
+ takeOverEditLease: {
11204
+ path,
11205
+ method: "PUT",
11206
+ editLease: "lifecycle",
11207
+ errors: lifecycleErrors,
11208
+ auth: "user",
11209
+ responseKind: "json"
11210
+ },
11211
+ heartbeatEditLease: {
11212
+ path,
11213
+ method: "PATCH",
11214
+ editLease: "lifecycle",
11215
+ errors: [...lifecycleErrors, "auth:lease_lost"],
11216
+ auth: "user",
11217
+ responseKind: "json"
11218
+ },
11219
+ releaseEditLease: {
11220
+ path,
11221
+ method: "DELETE",
11222
+ editLease: "lifecycle",
11223
+ errors: lifecycleErrors,
11224
+ auth: "user",
11225
+ responseKind: "json"
11226
+ }
11227
+ };
11228
+ //#endregion
11229
+ //#region ../api/src/pageSurfaceEditorEndpoints.ts
11230
+ const surfaceTags = [TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById];
11231
+ const PAGE_SURFACE_EDITOR_ENDPOINT_DEFINITIONS = {
11232
+ getPageSurfaceEditorDocument: {
11233
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/content",
11234
+ method: "GET",
11235
+ errors: [
11236
+ "auth:forbidden",
11237
+ "validation:invalid_input",
11238
+ "resource:not_found",
11239
+ "resource:conflict",
11240
+ "server:internal_error"
11241
+ ],
11242
+ tags: surfaceTags,
11243
+ auth: "user",
11244
+ responseKind: "json"
11245
+ },
11246
+ updatePageSurfaceDraftContent: {
11247
+ editLease: "managed",
11248
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/content",
11249
+ method: "PUT",
11250
+ errors: [
11251
+ "validation:invalid_input",
11252
+ "resource:not_found",
11253
+ "resource:conflict",
11254
+ "server:internal_error"
11255
+ ],
11256
+ tags: surfaceTags,
11257
+ auth: "user",
11258
+ responseKind: "json"
11259
+ },
11260
+ discardPageSurfaceDraftContent: {
11261
+ editLease: "managed",
11262
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/content/draft",
11263
+ method: "DELETE",
11264
+ errors: [
11265
+ "validation:invalid_input",
11266
+ "resource:not_found",
11267
+ "resource:conflict",
11268
+ "server:internal_error"
11269
+ ],
11270
+ tags: surfaceTags,
11271
+ auth: "user",
11272
+ responseKind: "json"
11273
+ },
11274
+ updatePageSurfaceRouteMetadata: {
11275
+ editLease: "managed",
11276
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/metadata",
11277
+ method: "PATCH",
11278
+ errors: [
11279
+ "validation:invalid_input",
11280
+ "resource:not_found",
11281
+ "resource:conflict",
11282
+ "server:internal_error"
11283
+ ],
11284
+ tags: [
11285
+ TAG_TEMPLATES.siteCollection,
11286
+ TAG_TEMPLATES.siteRoutableContent,
11287
+ TAG_TEMPLATES.pageSurfaceById
11288
+ ],
11289
+ auth: "user",
11290
+ responseKind: "json"
11291
+ },
11292
+ publishPageSurface: {
11293
+ editLease: "managed",
11294
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/publication",
11295
+ method: "POST",
11296
+ errors: [
11297
+ "auth:forbidden",
11298
+ "validation:invalid_input",
11299
+ "resource:not_found",
11300
+ "resource:conflict",
11301
+ "server:internal_error"
11302
+ ],
11303
+ tags: [
11304
+ TAG_TEMPLATES.siteCollection,
11305
+ TAG_TEMPLATES.siteRoutableContent,
11306
+ TAG_TEMPLATES.pageSurfaceById
11307
+ ],
11308
+ auth: "user",
11309
+ responseKind: "json"
11310
+ },
11311
+ saveEventContentTab: {
11312
+ editLease: "managed",
11313
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/event-content",
11314
+ method: "PUT",
11315
+ errors: [
11316
+ "auth:forbidden",
11317
+ "validation:invalid_input",
11318
+ "resource:not_found",
11319
+ "resource:conflict",
11320
+ "server:internal_error"
11321
+ ],
11322
+ tags: [
11323
+ TAG_TEMPLATES.siteCollection,
11324
+ TAG_TEMPLATES.siteRoutableContent,
11325
+ TAG_TEMPLATES.pageSurfaceById
11326
+ ],
11327
+ auth: "user",
11328
+ responseKind: "json"
11329
+ }
11330
+ };
11331
+ //#endregion
11332
+ //#region ../api/src/bookingPeopleEndpointDefinitions.ts
11333
+ /**
11334
+ * People endpoints (#1356): the People list, its CSV export, and deleting a
11335
+ * person when nothing is attached to them.
11336
+ */
11337
+ const BOOKING_PEOPLE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
11338
+ listPeople: {
11339
+ path: "/sites/{siteId}/bookings/people",
11340
+ method: "GET",
11341
+ tags: ["site-{siteId}", "customers-{siteId}"],
11342
+ auth: "user",
11343
+ responseKind: "json",
11344
+ errors: ["server:internal_error"]
11345
+ },
11346
+ exportPeopleCsv: {
11347
+ path: "/sites/{siteId}/bookings/people/export.csv",
11348
+ method: "GET",
11349
+ tags: ["site-{siteId}", "customers-{siteId}"],
11350
+ auth: "user",
11351
+ errors: [],
11352
+ responseKind: "blob"
11353
+ },
11354
+ checkPersonDeletion: {
11355
+ path: "/sites/{siteId}/bookings/people/{personId}/deletion-check",
11356
+ method: "GET",
11357
+ tags: ["site-{siteId}", "customers-{siteId}"],
11358
+ auth: "user",
11359
+ responseKind: "json",
11360
+ errors: [
11361
+ "auth:forbidden",
11362
+ "resource:not_found",
11363
+ "server:internal_error"
11364
+ ]
11365
+ },
11366
+ deletePerson: {
11367
+ path: "/sites/{siteId}/bookings/people/{personId}",
11368
+ method: "DELETE",
11369
+ tags: ["site-{siteId}", "customers-{siteId}"],
11370
+ auth: "user",
11371
+ responseKind: "json",
11372
+ errors: [
11373
+ "auth:forbidden",
11374
+ "resource:not_found",
11375
+ "server:internal_error"
11376
+ ]
11377
+ }
11378
+ });
11379
+ //#endregion
10951
11380
  //#region ../api/src/clientErrorReporting.ts
10952
11381
  const CLIENT_ERROR_REPORT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({ reportClientError: {
10953
11382
  path: "/client/error-report",
@@ -10983,6 +11412,7 @@ z.object({
10983
11412
  sourceLocation: z.string().max(CLIENT_ERROR_REPORT_LIMITS.sourceLocation).nullable()
10984
11413
  }).strict();
10985
11414
  ({
11415
+ ...SITE_LIFECYCLE_ENDPOINT_DEFINITIONS,
10986
11416
  ...CLIENT_ERROR_REPORT_ENDPOINT_DEFINITIONS,
10987
11417
  ...PUBLIC_NEWSLETTER_ENDPOINT_DEFINITIONS,
10988
11418
  ...ACCOUNT_ENDPOINT_DEFINITIONS,
@@ -10991,12 +11421,14 @@ z.object({
10991
11421
  ...GIFTING_ENDPOINT_DEFINITIONS,
10992
11422
  ...PUBLIC_READ_ENDPOINT_DEFINITIONS,
10993
11423
  ...BILLING_ENDPOINT_DEFINITIONS,
11424
+ ...EDIT_LEASE_ENDPOINT_DEFINITIONS,
11425
+ ...PAGE_SURFACE_EDITOR_ENDPOINT_DEFINITIONS,
10994
11426
  ...SITE_MANAGEMENT_ENDPOINT_DEFINITIONS
10995
11427
  }), TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, { ...SITE_API_KEY_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.site, TAG_TEMPLATES.siteBookingSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteBookingSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, {
10996
11428
  ...NEWSLETTER_ENDPOINT_DEFINITIONS,
10997
11429
  ...APPOINTMENT_ENDPOINT_DEFINITIONS,
10998
11430
  ...EVENT_SERIES_REGISTRATION_ENDPOINT_DEFINITIONS
10999
- }, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteById, TAG_TEMPLATES.siteBySlug, TAG_TEMPLATES.siteByDomain, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteById, TAG_TEMPLATES.siteBySlug, TAG_TEMPLATES.siteByDomain, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.workflowRunById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.routeById, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.navigationItemById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.navigationItemById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicBookingServices, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRedirects, TAG_TEMPLATES.siteRouteOutcomes, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRedirects, TAG_TEMPLATES.siteRouteOutcomes, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, { ...PUBLIC_BOOKING_AVAILABILITY_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicEventFilters, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicShop, TAG_TEMPLATES.publicCheckout, TAG_TEMPLATES.siteRoutableContent, { ...PUBLIC_EVENT_CHECKOUT_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, { ...EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS }, { ...SDK_MEDIA_ENDPOINT_DEFINITIONS }, { ...SDK_ENDPOINT_DEFINITIONS }, { ...SDK_PAGE_DESIGN_ENDPOINT_DEFINITIONS }, { ...SDK_EVENT_ENDPOINT_DEFINITIONS }, { ...SDK_ENTRY_READ_ENDPOINTS };
11431
+ }, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteById, TAG_TEMPLATES.siteBySlug, TAG_TEMPLATES.siteByDomain, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteById, TAG_TEMPLATES.siteBySlug, TAG_TEMPLATES.siteByDomain, TAG_TEMPLATES.workflowRunById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.routeById, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.navigationItemById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.navigationItemById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicBookingServices, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRedirects, TAG_TEMPLATES.siteRouteOutcomes, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRedirects, TAG_TEMPLATES.siteRouteOutcomes, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, { ...PUBLIC_BOOKING_AVAILABILITY_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicEventFilters, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicShop, TAG_TEMPLATES.publicCheckout, TAG_TEMPLATES.siteRoutableContent, { ...PUBLIC_EVENT_CHECKOUT_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, { ...EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS }, { ...BOOKING_PEOPLE_ENDPOINT_DEFINITIONS }, { ...SDK_MEDIA_ENDPOINT_DEFINITIONS }, { ...SDK_ENDPOINT_DEFINITIONS }, { ...SDK_PAGE_DESIGN_ENDPOINT_DEFINITIONS }, { ...SDK_EVENT_ENDPOINT_DEFINITIONS }, { ...SDK_ENTRY_READ_ENDPOINTS };
11000
11432
  z.object({ refreshToken: z.string().min(1).max(4096) }).strict();
11001
11433
  z.object({
11002
11434
  accessToken: z.string().min(1).max(4096),
@@ -17285,6 +17717,14 @@ const blockDesignFallback = {
17285
17717
  };
17286
17718
  blockDesignFallback.sectionSurface, blockDesignFallback.contentFrame, blockDesignFallback.sectionHeight, blockDesignFallback.heroLegibility, blockDesignFallback.imageSurfaceTreatment, blockDesignFallback.imageSurfaceMotion, blockDesignFallback.tileTreatment, blockDesignFallback.eventListTreatment, blockDesignFallback.eyebrowTreatment, blockDesignFallback.accordionIconTreatment, blockDesignFallback.composition;
17287
17719
  //#endregion
17720
+ //#region ../theme-core/src/header/rootPaint.ts
17721
+ /** The nav container takes precedence when a floating header also has one. */
17722
+ function headerRootPaint(header) {
17723
+ const navContainerType = header?.navContainer?.type ?? "none";
17724
+ if (navContainerType === "glass" || navContainerType === "pill") return "contained-nav";
17725
+ return header?.variant === "floating" ? "overlay" : "own-surface";
17726
+ }
17727
+ //#endregion
17288
17728
  //#region ../theme-core/src/site-styles/siteChromeBackgrounds.ts
17289
17729
  const siteChromeBackgroundColorTokens = toSiteChromeBackgroundColorTokens(backgroundAppearanceColorTokenNames);
17290
17730
  const quickSiteChromeBackgroundColorTokens = toSiteChromeBackgroundColorTokens(backgroundAppearanceQuickColorTokenNames);
@@ -17464,6 +17904,259 @@ z.object(headerPreferencesShape).omit({
17464
17904
  structure: true
17465
17905
  }).strict();
17466
17906
  //#endregion
17907
+ //#region ../theme-core/src/navigation/presets.ts
17908
+ /**
17909
+ * Built-in nav link style presets
17910
+ *
17911
+ * Each preset uses composable effects to achieve its look.
17912
+ */
17913
+ const NAV_LINK_PRESETS = {
17914
+ /**
17915
+ * Minimal - subtle color change on hover
17916
+ */
17917
+ minimal: {
17918
+ name: "Minimal",
17919
+ typography: "body",
17920
+ fontWeight: "medium",
17921
+ textTransform: "none",
17922
+ italic: false,
17923
+ colorToken: "text",
17924
+ hoverColorToken: "primary",
17925
+ padding: "none",
17926
+ borderRadius: "none",
17927
+ effects: { hover: [{
17928
+ effectId: "text-color-change",
17929
+ options: { hoverColorToken: "primary" }
17930
+ }] }
17931
+ },
17932
+ /**
17933
+ * Underline - static underline appears on hover
17934
+ */
17935
+ underline: {
17936
+ name: "Underline",
17937
+ typography: "body",
17938
+ fontWeight: "medium",
17939
+ textTransform: "none",
17940
+ italic: false,
17941
+ colorToken: "text",
17942
+ padding: "none",
17943
+ borderRadius: "none",
17944
+ effects: { hover: [{
17945
+ effectId: "nav-underline",
17946
+ options: { style: "static" }
17947
+ }] }
17948
+ },
17949
+ /**
17950
+ * Underline Grow - animated underline grows from center on hover
17951
+ */
17952
+ "underline-grow": {
17953
+ name: "Underline Grow",
17954
+ typography: "body",
17955
+ fontWeight: "medium",
17956
+ textTransform: "none",
17957
+ italic: false,
17958
+ colorToken: "text",
17959
+ padding: "none",
17960
+ borderRadius: "none",
17961
+ effects: { hover: [{
17962
+ effectId: "nav-underline",
17963
+ options: { style: "grow" }
17964
+ }] }
17965
+ },
17966
+ /**
17967
+ * Capsule - pill-shaped background on hover
17968
+ */
17969
+ capsule: {
17970
+ name: "Capsule",
17971
+ typography: "body",
17972
+ fontWeight: "medium",
17973
+ textTransform: "none",
17974
+ italic: false,
17975
+ colorToken: "text",
17976
+ padding: "compact",
17977
+ borderRadius: "full",
17978
+ effects: {
17979
+ hover: [{
17980
+ effectId: "background-on-hover-alpha",
17981
+ options: {
17982
+ colorToken: "primary",
17983
+ opacity: 10
17984
+ }
17985
+ }],
17986
+ active: [{
17987
+ effectId: "background-on-hover-alpha",
17988
+ options: {
17989
+ colorToken: "primary",
17990
+ opacity: 15
17991
+ }
17992
+ }]
17993
+ }
17994
+ },
17995
+ /**
17996
+ * Solid - solid background color on hover
17997
+ */
17998
+ solid: {
17999
+ name: "Solid",
18000
+ typography: "body",
18001
+ fontWeight: "medium",
18002
+ textTransform: "none",
18003
+ italic: false,
18004
+ colorToken: "text",
18005
+ padding: "compact",
18006
+ borderRadius: "none",
18007
+ effects: {
18008
+ hover: [{
18009
+ effectId: "background-on-hover",
18010
+ options: {
18011
+ colorToken: "primary",
18012
+ textColorToken: "primaryForeground"
18013
+ }
18014
+ }],
18015
+ active: [{
18016
+ effectId: "background-on-hover",
18017
+ options: {
18018
+ colorToken: "primary",
18019
+ textColorToken: "primaryForeground"
18020
+ }
18021
+ }]
18022
+ }
18023
+ },
18024
+ /**
18025
+ * Scale - gentle scale-up on hover
18026
+ */
18027
+ scale: {
18028
+ name: "Scale",
18029
+ typography: "body",
18030
+ fontWeight: "medium",
18031
+ textTransform: "none",
18032
+ italic: false,
18033
+ colorToken: "text",
18034
+ padding: "none",
18035
+ borderRadius: "none",
18036
+ effects: { hover: [{
18037
+ effectId: "scale-up",
18038
+ options: { scale: 1.05 }
18039
+ }] }
18040
+ },
18041
+ /**
18042
+ * Frosted - semi-transparent glass-like background
18043
+ */
18044
+ frosted: {
18045
+ name: "Frosted",
18046
+ typography: "body",
18047
+ fontWeight: "medium",
18048
+ textTransform: "none",
18049
+ italic: false,
18050
+ colorToken: "text",
18051
+ padding: "compact",
18052
+ borderRadius: "md",
18053
+ effects: {
18054
+ base: [{ effectId: "nav-frosted-base" }],
18055
+ hover: [{ effectId: "nav-frosted-hover" }],
18056
+ active: [{ effectId: "nav-frosted-active" }]
18057
+ }
18058
+ }
18059
+ };
18060
+ /**
18061
+ * Get a nav link style preset by ID
18062
+ */
18063
+ function getNavLinkPreset(presetId) {
18064
+ return NAV_LINK_PRESETS[presetId];
18065
+ }
18066
+ Object.keys(NAV_LINK_PRESETS);
18067
+ //#endregion
18068
+ //#region ../theme-core/src/header/legacyNavLinkStyle.ts
18069
+ function buildLegacyHeaderNavLinkStyle(header, contrastTreatment, navTextSize) {
18070
+ const navStyle = header.navStyle ?? "minimal";
18071
+ const basePreset = getNavLinkPreset(navStyle);
18072
+ if (!basePreset) return null;
18073
+ const style = {
18074
+ ...basePreset,
18075
+ fontWeight: header.navWeight ?? basePreset.fontWeight,
18076
+ colorToken: (header.navColor ?? header.textColor)?.trim() || basePreset.colorToken,
18077
+ ...contrastTreatment ? { contrastTreatment } : {},
18078
+ ...navTextSize ? { textSize: navTextSize } : {}
18079
+ };
18080
+ if (header.navWeight === "bold" && navStyle === "solid") style.textTransform = "uppercase";
18081
+ applyLegacyGlassTreatment(style, header, navStyle);
18082
+ return style;
18083
+ }
18084
+ function applyLegacyGlassTreatment(style, header, navStyle) {
18085
+ if (header.navContainer?.type !== "glass" || navStyle !== "minimal") return;
18086
+ style.borderRadius = "full";
18087
+ style.effects = {
18088
+ ...style.effects,
18089
+ hover: glassStateEffects(10),
18090
+ active: glassStateEffects(18)
18091
+ };
18092
+ }
18093
+ function glassStateEffects(opacity) {
18094
+ return [{
18095
+ effectId: "background-on-hover-alpha",
18096
+ options: {
18097
+ colorToken: "neutral-50",
18098
+ opacity
18099
+ }
18100
+ }, {
18101
+ effectId: "text-color-change",
18102
+ options: { hoverColorToken: "neutral-50" }
18103
+ }];
18104
+ }
18105
+ //#endregion
18106
+ //#region ../theme-core/src/header/openingForegroundProjection.ts
18107
+ function readOpeningForegroundProjection(header) {
18108
+ return header?.__runtimeOpeningForeground ?? null;
18109
+ }
18110
+ //#endregion
18111
+ //#region ../theme-core/src/header/effectiveNavLinkStyle.ts
18112
+ function effectiveHeaderNavLinkStyle(header, contrastTreatment = null, navTextSize = null) {
18113
+ if (!header) return null;
18114
+ if (!header.navLinkStyle) return buildLegacyHeaderNavLinkStyle(header, contrastTreatment, navTextSize);
18115
+ return {
18116
+ ...header.navLinkStyle,
18117
+ ...contrastTreatment ? { contrastTreatment } : {},
18118
+ ...navTextSize ? { textSize: navTextSize } : {}
18119
+ };
18120
+ }
18121
+ function headerForegroundCandidates(header) {
18122
+ if (!header) return {};
18123
+ const style = effectiveHeaderNavLinkStyle(header);
18124
+ return {
18125
+ text: header.textColor ?? header.background?.textColor,
18126
+ link: style?.colorToken ?? header.navColor ?? header.textColor,
18127
+ linkHover: navLinkHoverColorCandidate(style)
18128
+ };
18129
+ }
18130
+ function headerLeafTextColor(header) {
18131
+ if (!header) return "text";
18132
+ return header.textColor ?? header.navColor ?? header.background?.textColor ?? header.navLinkStyle?.colorToken ?? "text";
18133
+ }
18134
+ /** Transparent chrome must reset the whole contract on its own root. */
18135
+ function transparentHeaderForegroundInput(header, palette) {
18136
+ const projection = readOpeningForegroundProjection(header);
18137
+ if (projection?.kind === "known") return surfaceForegroundInputFromResolved(projection, rgbColorValue);
18138
+ return authoredTransparentHeaderForegroundInput(header, palette);
18139
+ }
18140
+ function authoredTransparentHeaderForegroundInput(header, palette) {
18141
+ const text = headerLeafTextColor(header);
18142
+ const style = effectiveHeaderNavLinkStyle(header);
18143
+ const link = style?.colorToken ?? text;
18144
+ const restingToken = parseThemeColorToken(link) ?? parseThemeColorToken("text");
18145
+ if (!restingToken) throw new Error("Built-in text colour token is invalid");
18146
+ const hover = planForegroundHover({
18147
+ restingToken,
18148
+ candidate: navLinkOwnsHoverForeground(style) ? null : navLinkHoverColorCandidate(style),
18149
+ palette,
18150
+ backdrops: null
18151
+ });
18152
+ return {
18153
+ text: rgbColorValue(text),
18154
+ link: rgbColorValue(link),
18155
+ linkHover: rgbColorValue(hover.token),
18156
+ hoverDecoration: navLinkOwnsUnderline(style) ? "initial" : hover.decoration
18157
+ };
18158
+ }
18159
+ //#endregion
17467
18160
  //#region ../theme-core/src/site-styles/pageDesignAuthority.ts
17468
18161
  const nonEmptyStringSchema = z.string().min(1);
17469
18162
  const blockContentVersionIdSchema = nonEmptyStringSchema.transform(asBlockContentVersionId);
@@ -17616,6 +18309,28 @@ z.object({
17616
18309
  motion: z.enum(themeTokenRecipeOptions.motion)
17617
18310
  });
17618
18311
  //#endregion
18312
+ //#region ../theme-core/src/footer/effectiveNavLinkStyle.ts
18313
+ function effectiveFooterNavLinkStyle(footer) {
18314
+ if (!footer) return null;
18315
+ if (footer.navLinkStyle) return footer.navLinkStyle;
18316
+ const basePreset = getNavLinkPreset(footer.navStyle ?? "minimal");
18317
+ if (!basePreset) return null;
18318
+ return {
18319
+ ...basePreset,
18320
+ fontWeight: footer.navWeight ?? basePreset.fontWeight,
18321
+ colorToken: footer.navColor?.trim() || basePreset.colorToken
18322
+ };
18323
+ }
18324
+ function footerForegroundCandidates(footer, proseHoverCandidate) {
18325
+ if (!footer) return {};
18326
+ const style = effectiveFooterNavLinkStyle(footer);
18327
+ return {
18328
+ text: footer.background?.textColor,
18329
+ link: style?.colorToken ?? footer.navColor ?? footer.background?.textColor,
18330
+ linkHover: navLinkOwnsHoverForeground(style) ? proseHoverCandidate : navLinkHoverColorCandidate(style)
18331
+ };
18332
+ }
18333
+ //#endregion
17619
18334
  //#region ../theme-core/src/siteChromeOverlayClearance.ts
17620
18335
  const SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
17621
18336
  //#endregion
@@ -20389,33 +21104,28 @@ function resolveBackgroundColorValue(value, context) {
20389
21104
  //#endregion
20390
21105
  //#region ../blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.ts
20391
21106
  const contextualButtonStylesCache = /* @__PURE__ */ new WeakMap();
20392
- function resolveHeaderLeafTextColor(header) {
20393
- return header?.textColor ?? header?.navColor ?? header?.background?.textColor ?? header?.navLinkStyle?.colorToken ?? "text";
20394
- }
20395
21107
  function resolveHeaderRootForeground(header, palette, isTransparent) {
20396
- if (isTransparent) return { kind: "unknown" };
21108
+ if (isTransparent) return readOpeningForegroundProjection(header) ?? { kind: "unknown" };
20397
21109
  const background = header?.background;
20398
21110
  return resolveSurfaceForeground(background ?? {
20399
21111
  type: "color",
20400
21112
  color: "surface"
20401
- }, palette, {
20402
- text: header?.textColor ?? background?.textColor,
20403
- link: header?.navLinkStyle?.colorToken ?? header?.navColor ?? header?.textColor
20404
- });
21113
+ }, palette, headerForegroundCandidates(header));
21114
+ }
21115
+ function resolveFooterRootForeground(footer, palette, proseHoverCandidate) {
21116
+ return resolveSurfaceForeground(footer?.background ?? {
21117
+ type: "color",
21118
+ color: "surface"
21119
+ }, palette, footerForegroundCandidates(footer, proseHoverCandidate), { compositeBase: "background" });
20405
21120
  }
20406
21121
  function resolveSurfaceForegroundStyles(value, context, options) {
20407
21122
  const input = parseBackgroundContent(value);
20408
- const foreground = input ? resolveSurfaceForeground(input, context.theme.palette, {}, { compositeBase: options?.fallbackToken }) : { kind: "unknown" };
21123
+ const foreground = input ? resolveSurfaceForeground(input, context.theme.palette, { linkHover: context.proseHoverCandidate }, { compositeBase: options?.fallbackToken }) : { kind: "unknown" };
20409
21124
  const buttonStyles = resolveContextualButtonStyles(input, foreground, context, options);
20410
21125
  if (foreground.kind === "unknown") return buttonStyles;
20411
21126
  return {
20412
21127
  ...buttonStyles,
20413
- ...surfaceForegroundStyle({
20414
- text: resolveBackgroundColorValue(foreground.roles.text, context),
20415
- heading: resolveBackgroundColorValue(foreground.roles.heading, context),
20416
- link: resolveBackgroundColorValue(foreground.roles.link, context),
20417
- supporting: resolveBackgroundColorValue(foreground.roles.supporting, context)
20418
- })
21128
+ ...surfaceForegroundStyle(surfaceForegroundInputFromResolved(foreground, (token) => resolveBackgroundColorValue(token, context)))
20419
21129
  };
20420
21130
  }
20421
21131
  function resolveContextualButtonStyles(background, foreground, context, options) {
@@ -26231,10 +26941,7 @@ function resolveBackgroundVisualStyles(backgroundColor, defaultToken = "surface"
26231
26941
  };
26232
26942
  }
26233
26943
  function resolveHeaderVisualStyles(header) {
26234
- const navContainerType = header?.navContainer?.type ?? "none";
26235
- const hasContainedNav = navContainerType === "glass" || navContainerType === "pill";
26236
- const hasOverlayVariant = header?.variant === "floating";
26237
- if (hasContainedNav || hasOverlayVariant) return {
26944
+ if (headerRootPaint(header) !== "own-surface") return {
26238
26945
  backgroundToken: "transparent",
26239
26946
  isTransparent: true
26240
26947
  };
@@ -26245,23 +26952,7 @@ function resolveHeaderVisualStyles(header) {
26245
26952
  }
26246
26953
  function resolvedForegroundStyle(foreground) {
26247
26954
  if (foreground.kind === "unknown") return void 0;
26248
- const { roles } = foreground;
26249
- return surfaceForegroundStyle({
26250
- text: rgbColorValue(roles.text),
26251
- heading: rgbColorValue(roles.heading),
26252
- link: rgbColorValue(roles.link),
26253
- supporting: rgbColorValue(roles.supporting)
26254
- });
26255
- }
26256
- function resolveFooterRootForeground(footer, palette) {
26257
- const background = footer?.background;
26258
- return resolveSurfaceForeground(background ?? {
26259
- type: "color",
26260
- color: "surface"
26261
- }, palette, {
26262
- text: background?.textColor,
26263
- link: footer?.navLinkStyle?.colorToken ?? footer?.navColor ?? background?.textColor
26264
- });
26955
+ return surfaceForegroundStyle(surfaceForegroundInputFromResolved(foreground, rgbColorValue));
26265
26956
  }
26266
26957
  function footerBottomBarBorderWidthStyle(width) {
26267
26958
  if (!width) return void 0;
@@ -26288,8 +26979,7 @@ const headerRootClassTransform = {
26288
26979
  const placement = planSiteChromePlacement(parseHeaderPositioning(content.positioning));
26289
26980
  const header = asPartialObject(value);
26290
26981
  const visuals = resolveHeaderVisualStyles(header);
26291
- const navContainerType = header?.navContainer?.type ?? "none";
26292
- const hasContainedNav = navContainerType === "glass" || navContainerType === "pill";
26982
+ const hasContainedNav = headerRootPaint(header) === "contained-nav";
26293
26983
  const backgroundClass = visuals.isTransparent || hasContainedNav ? "rb-bg-transparent" : null;
26294
26984
  const classes = [config.base, backgroundClass];
26295
26985
  if (!hasContainedNav) {
@@ -26332,7 +27022,7 @@ const headerRootStyleTransform = {
26332
27022
  run: (value, _options, context) => {
26333
27023
  const header = asPartialObject(value);
26334
27024
  const visuals = resolveHeaderVisualStyles(header);
26335
- return mergeStyles(resolvedForegroundStyle(resolveHeaderRootForeground(header, context.theme.palette, visuals.isTransparent)) ?? { color: rgbColorValue(resolveHeaderLeafTextColor(header)) }, borderColorStyle(header?.border?.colorToken ?? "border"));
27025
+ return mergeStyles(resolvedForegroundStyle(resolveHeaderRootForeground(header, context.theme.palette, visuals.isTransparent)) ?? (visuals.isTransparent ? surfaceForegroundStyle(transparentHeaderForegroundInput(header, context.theme.palette)) : { color: rgbColorValue(headerLeafTextColor(header)) }), borderColorStyle(header?.border?.colorToken ?? "border"));
26336
27026
  }
26337
27027
  };
26338
27028
  const headerSectionBackgroundTransform = {
@@ -26340,9 +27030,7 @@ const headerSectionBackgroundTransform = {
26340
27030
  kind: "string",
26341
27031
  summary: "Resolve the inner site-header section background token",
26342
27032
  run: (value) => {
26343
- const header = asPartialObject(value);
26344
- const navContainerType = header?.navContainer?.type ?? "none";
26345
- return header?.variant === "floating" || navContainerType === "glass" || navContainerType === "pill" ? "raw:transparent" : "background";
27033
+ return headerRootPaint(asPartialObject(value)) !== "own-surface" ? "raw:transparent" : "background";
26346
27034
  }
26347
27035
  };
26348
27036
  const footerRootStyleTransform = {
@@ -26360,7 +27048,7 @@ const footerRootStyleTransform = {
26360
27048
  styleParts.push(backgroundColorStyle(token));
26361
27049
  }
26362
27050
  }
26363
- styleParts.push(resolvedForegroundStyle(resolveFooterRootForeground(footer, context.theme.palette)));
27051
+ styleParts.push(resolvedForegroundStyle(resolveFooterRootForeground(footer, context.theme.palette, context.proseHoverCandidate)));
26364
27052
  styleParts.push(borderColorStyle("border"));
26365
27053
  return mergeStyles(...styleParts);
26366
27054
  }
@@ -26422,22 +27110,28 @@ const footerBottomBarStyleTransform = {
26422
27110
  run: (value, _options, context) => {
26423
27111
  const footer = asPartialObject(value);
26424
27112
  const bottomBar = footer?.bottomBar;
26425
- const styleParts = [];
26426
- const background = bottomBar?.background;
26427
- if (background?.type === "color") styleParts.push(backgroundColorStyle(background.color ?? "surface"));
26428
- styleParts.push(borderColorStyle(bottomBar?.borderTop?.colorToken ?? "border"), footerBottomBarBorderWidthStyle(bottomBar?.borderTop?.width));
26429
- const foreground = resolveSurfaceForeground(background?.type === "color" ? background : {
26430
- type: "color",
26431
- color: "transparent"
26432
- }, context.theme.palette, {
26433
- text: bottomBar?.textColor,
26434
- link: footer?.bottomTextLinkStyle?.colorToken ?? bottomBar?.textColor
26435
- });
26436
- if (background?.type === "color") styleParts.push(resolvedForegroundStyle(foreground));
26437
- else if (bottomBar?.textColor) styleParts.push(textColorStyle(bottomBar.textColor));
26438
- return mergeStyles(...styleParts);
27113
+ return mergeStyles(bottomBar?.background?.type === "color" ? backgroundColorStyle(bottomBar.background.color ?? "surface") : void 0, borderColorStyle(bottomBar?.borderTop?.colorToken ?? "border"), footerBottomBarBorderWidthStyle(bottomBar?.borderTop?.width), footerBottomBarForegroundStyle(footer, context.theme.palette));
26439
27114
  }
26440
27115
  };
27116
+ function footerBottomBarForegroundStyle(footer, palette) {
27117
+ if (!footer?.bottomBar) return void 0;
27118
+ const bar = footer.bottomBar;
27119
+ if (bar.background?.type !== "color") return backgroundlessBottomBarForegroundStyle(footer);
27120
+ return resolvedForegroundStyle(resolveSurfaceForeground(bar.background, palette, {
27121
+ text: bar.textColor,
27122
+ link: footer.bottomTextLinkStyle?.colorToken ?? bar.textColor,
27123
+ linkHover: footer.bottomTextLinkStyle?.hoverColorToken
27124
+ }, { compositeBase: measuredFooterBackdrop(footer, palette) }));
27125
+ }
27126
+ function backgroundlessBottomBarForegroundStyle(footer) {
27127
+ if (footer.background?.contentOwner === "site-chrome-editor") return;
27128
+ const textColor = footer.bottomBar?.textColor;
27129
+ return textColor ? textColorStyle(textColor) : void 0;
27130
+ }
27131
+ function measuredFooterBackdrop(footer, palette) {
27132
+ const foreground = resolveFooterRootForeground(footer, palette);
27133
+ return foreground.kind === "known" && foreground.provenance.kind === "measured" ? foreground.provenance.backdropHex : null;
27134
+ }
26441
27135
  const footerSplitMainClassTransform = {
26442
27136
  id: "layout.footerSplitMainClass",
26443
27137
  kind: "string",
@@ -26533,7 +27227,7 @@ function chromeSurfaceTextToken(surface, theme, palette) {
26533
27227
  case "header-root": {
26534
27228
  const header = theme.header;
26535
27229
  const foreground = resolveHeaderRootForeground(header, palette, resolveHeaderVisualStyles(header).isTransparent);
26536
- return foreground.kind === "known" ? foreground.roles.text : resolveHeaderLeafTextColor(header);
27230
+ return foreground.kind === "known" ? foreground.roles.text : headerLeafTextColor(header);
26537
27231
  }
26538
27232
  case "header-mobile-panel": return theme.header?.dropdownStyle?.textColor ?? "text";
26539
27233
  case "footer-root": {
@@ -28606,13 +29300,19 @@ const bookingDescription = richText({}, bind("content.description"), when("conte
28606
29300
  * that hydration never rewrites.
28607
29301
  */
28608
29302
  const bookingWizard = bookingForm(withApiBindings({
29303
+ demoEmailSuppressed: { $bind: {
29304
+ from: "$root.demoEmailSuppressed",
29305
+ fallback: false
29306
+ } },
28609
29307
  portalToken: { $bind: {
28610
29308
  from: "$root.portalToken",
28611
29309
  fallback: null
28612
29310
  } },
28613
29311
  formId: { $bind: { from: "content.formId" } },
28614
29312
  form: { $bind: { from: "data.form" } },
28615
- services: { $bind: { from: "data.services" } }
29313
+ services: { $bind: { from: "data.services" } },
29314
+ mailingList: { $bind: { from: "$root.mailingList" } },
29315
+ siteName: { $bind: { from: "$root.siteName" } }
28616
29316
  }));
28617
29317
  /** Both variants sit in the same section shell; only the inner layout differs. */
28618
29318
  function bookingSection(children) {
@@ -29517,6 +30217,7 @@ const EVENT_REGISTRATION_SHELL_STEP_LABELS = [
29517
30217
  ];
29518
30218
  const eventRegistrationPublicEventSchema = z.preprocess(normalizeEventRegistrationEventInput, publicEventSchema);
29519
30219
  const eventRegistrationHydrationSchemaShape = {
30220
+ demoEmailSuppressed: z.boolean().optional(),
29520
30221
  occurrenceContext: occurrenceContextSchema.optional(),
29521
30222
  subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
29522
30223
  maxTickets: z.string().optional(),
@@ -29528,7 +30229,13 @@ const eventRegistrationHydrationSchemaShape = {
29528
30229
  spamProtectionEnabled: z.boolean().optional(),
29529
30230
  supportEmail: z.string().optional(),
29530
30231
  sitePasses: publicPassProductCollectionSchema.nullable().optional(),
29531
- siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
30232
+ siteMemberships: publicMembershipProductCollectionSchema.nullable().optional(),
30233
+ mailingList: z.unknown().transform((value) => {
30234
+ if (value === void 0) return void 0;
30235
+ const parsed = parseMailingListRuntimeContext(value);
30236
+ return parsed.ok ? parsed.value : void 0;
30237
+ }),
30238
+ siteName: z.string().optional()
29532
30239
  };
29533
30240
  const eventRegistrationEventSourceSchema = z.discriminatedUnion("kind", [z.object({
29534
30241
  kind: z.literal("loaded"),
@@ -29691,6 +30398,7 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
29691
30398
  ...eventSource,
29692
30399
  events: [...scopedSourceEvents]
29693
30400
  } : eventSource,
30401
+ demoEmailSuppressed: source.demoEmailSuppressed,
29694
30402
  maxTickets: source.maxTickets ?? void 0,
29695
30403
  showVenue: source.showVenue,
29696
30404
  showCapacity: source.showCapacity,
@@ -29700,7 +30408,9 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
29700
30408
  spamProtectionEnabled: source.spamProtectionEnabled,
29701
30409
  supportEmail: source.supportEmail,
29702
30410
  sitePasses: source.sitePasses ?? null,
29703
- siteMemberships: source.siteMemberships ?? null
30411
+ siteMemberships: source.siteMemberships ?? null,
30412
+ mailingList: source.mailingList,
30413
+ siteName: source.siteName
29704
30414
  }
29705
30415
  };
29706
30416
  }
@@ -29817,8 +30527,8 @@ const eventRegistrationBlockDefinition = {
29817
30527
  description: "Message shown after successful registration",
29818
30528
  required: false,
29819
30529
  multiline: true,
29820
- defaultValue: "Thank you for registering! Check your email for confirmation details.",
29821
- maxLength: 500
30530
+ maxLength: 500,
30531
+ ui: { placeholder: "Thank you for registering! Check your email for confirmation details." }
29822
30532
  },
29823
30533
  {
29824
30534
  id: "buttonText",
@@ -29839,6 +30549,10 @@ const eventRegistrationBlockDefinition = {
29839
30549
  text({ as: "h2" }, bind("content.heading"), when("content.heading")),
29840
30550
  richText({ className: "rb-prose rb-max-w-none" }, bind("content.description"), when("content.description")),
29841
30551
  eventRegistration(withApiBindings({
30552
+ demoEmailSuppressed: { $bind: {
30553
+ from: "$root.demoEmailSuppressed",
30554
+ fallback: false
30555
+ } },
29842
30556
  readAuthority: { $bind: { from: "$root.readAuthority" } },
29843
30557
  occurrenceContext: { $bind: { from: "$root.occurrenceContext" } },
29844
30558
  subject: { $bind: { from: "$root.subject" } },
@@ -29868,6 +30582,8 @@ const eventRegistrationBlockDefinition = {
29868
30582
  events: { $bind: { from: "data.events" } },
29869
30583
  wholeSeriesRunEvents: { $bind: { from: "data.wholeSeriesRunEvents" } },
29870
30584
  loaderFailures: { $bind: { from: "$root.loaderFailures" } },
30585
+ mailingList: { $bind: { from: "$root.mailingList" } },
30586
+ siteName: { $bind: { from: "$root.siteName" } },
29871
30587
  sitePasses: { $bind: { from: "data.sitePasses" } },
29872
30588
  siteMemberships: { $bind: { from: "data.siteMemberships" } },
29873
30589
  stage: { $bind: {
@@ -35199,6 +35915,7 @@ const shopSourceSchema = z.object({
35199
35915
  memberships: z.array(publicMembershipProductSchema).nullable().optional(),
35200
35916
  products: z.array(publicProductSchema).nullable().optional(),
35201
35917
  siteId: z.string().optional(),
35918
+ demoEmailSuppressed: z.boolean().optional(),
35202
35919
  apiBaseUrl: z.string().optional(),
35203
35920
  readAuthority: browserReadAuthoritySchema.optional(),
35204
35921
  stage: previewStageSchema.optional()
@@ -35318,7 +36035,8 @@ const checkoutDisplaySchema = z.object({
35318
36035
  const passesMembershipsHydrationSchema = z.object({
35319
36036
  memberships: z.array(publicMembershipProductSchema),
35320
36037
  passPurchaseMode: z.enum(["add_to_cart", "buy_now"]),
35321
- buttonVariant: blockButtonRoleSchema
36038
+ buttonVariant: blockButtonRoleSchema,
36039
+ demoEmailSuppressed: z.boolean().optional()
35322
36040
  });
35323
36041
  const productListHydrationSchema = z.object({
35324
36042
  products: z.array(publicProductSchema),
@@ -35340,7 +36058,8 @@ const cartHydrationSchema = z.object({
35340
36058
  });
35341
36059
  const checkoutHydrationSchema = z.object({
35342
36060
  emptyStateText: z.string(),
35343
- submitButtonText: z.string()
36061
+ submitButtonText: z.string(),
36062
+ demoEmailSuppressed: z.boolean().optional()
35344
36063
  });
35345
36064
  const passesMembershipsRenderSchema = z.object({
35346
36065
  display: passesMembershipsDisplaySchema,
@@ -35399,7 +36118,8 @@ const shopBlockRuntime = defineProgressiveBlockRuntime({
35399
36118
  hydration: {
35400
36119
  memberships: source.showMemberships === false ? [] : source.memberships ?? [],
35401
36120
  passPurchaseMode,
35402
- buttonVariant: source.buttonVariant ?? "primary"
36121
+ buttonVariant: source.buttonVariant ?? "primary",
36122
+ demoEmailSuppressed: source.demoEmailSuppressed
35403
36123
  }
35404
36124
  };
35405
36125
  }
@@ -35492,7 +36212,8 @@ const checkoutBlockRuntime = defineClientOwnedBlockRuntime({
35492
36212
  }),
35493
36213
  hydration: {
35494
36214
  emptyStateText: source.emptyStateText ?? "Add something to your cart to continue.",
35495
- submitButtonText: source.submitButtonText ?? "Checkout"
36215
+ submitButtonText: source.submitButtonText ?? "Checkout",
36216
+ demoEmailSuppressed: source.demoEmailSuppressed
35496
36217
  }
35497
36218
  })
35498
36219
  });
@@ -35710,6 +36431,10 @@ const shopBlockDefinition = {
35710
36431
  spacing: "spacious",
35711
36432
  children: sectionContainer([shop(withApiBindings({
35712
36433
  readAuthority: { $bind: { from: "$root.readAuthority" } },
36434
+ demoEmailSuppressed: { $bind: {
36435
+ from: "$root.demoEmailSuppressed",
36436
+ fallback: false
36437
+ } },
35713
36438
  mode: "passes-memberships",
35714
36439
  showPasses: { $bind: {
35715
36440
  from: "content.showPasses",
@@ -36252,6 +36977,10 @@ const checkoutBlockDefinition = {
36252
36977
  baseClass: "",
36253
36978
  spacing: "spacious",
36254
36979
  children: sectionContainer([checkout(withApiBindings({
36980
+ demoEmailSuppressed: { $bind: {
36981
+ from: "$root.demoEmailSuppressed",
36982
+ fallback: false
36983
+ } },
36255
36984
  readAuthority: { $bind: { from: "$root.readAuthority" } },
36256
36985
  mode: "checkout",
36257
36986
  heading: { $bind: {
@@ -36884,65 +37613,67 @@ const editorialSplitLayout = styledSection({
36884
37613
  spacing: "comfortable",
36885
37614
  background: "surface"
36886
37615
  });
36887
- const newsletterSignupBlockDefinition = {
36888
- manifest: createBlockManifest({
36889
- id: "block.newsletter-signup",
36890
- title: "Newsletter Signup",
36891
- titleSource: "title",
36892
- description: "Newsletter subscription form with configurable field presets.",
36893
- category: "interactive",
36894
- contentSource: { kind: "inline" },
36895
- fragments: [{
36896
- fragment: newsletterCopyFragment,
36897
- fieldPriority: 0
36898
- }, {
36899
- fragment: newsletterFormFragment,
36900
- fieldPriority: 1
36901
- }],
36902
- layout: stackedLayout,
36903
- variants: {
36904
- stacked: stackedLayout,
36905
- inline: inlineLayout,
36906
- "editorial-split": editorialSplitLayout
36907
- },
36908
- defaultVariant: "stacked",
36909
- variantOptions: {
36910
- stacked: {
36911
- label: "Stacked",
36912
- description: "Vertical layout with fields stacked"
36913
- },
36914
- inline: {
36915
- label: "Inline",
36916
- description: "Horizontal layout (email + button side by side)"
36917
- },
36918
- "editorial-split": {
36919
- label: "Editorial split",
36920
- description: "Copy and form in balanced side-by-side columns, stacked on mobile."
36921
- }
36922
- },
36923
- styleTokens: {
36924
- background: "surface",
36925
- typography: "body",
36926
- spacing: "md"
37616
+ const newsletterSignupManifest = createBlockManifest({
37617
+ id: "block.newsletter-signup",
37618
+ title: "Newsletter Signup",
37619
+ titleSource: "title",
37620
+ description: "Newsletter subscription form with configurable field presets.",
37621
+ category: "interactive",
37622
+ contentSource: { kind: "inline" },
37623
+ fragments: [{
37624
+ fragment: newsletterCopyFragment,
37625
+ fieldPriority: 0
37626
+ }, {
37627
+ fragment: newsletterFormFragment,
37628
+ fieldPriority: 1
37629
+ }],
37630
+ layout: stackedLayout,
37631
+ variants: {
37632
+ stacked: stackedLayout,
37633
+ inline: inlineLayout,
37634
+ "editorial-split": editorialSplitLayout
37635
+ },
37636
+ defaultVariant: "stacked",
37637
+ variantOptions: {
37638
+ stacked: {
37639
+ label: "Stacked",
37640
+ description: "Vertical layout with fields stacked"
36927
37641
  },
36928
- behaviours: {
36929
- supportsThemeSwitching: true,
36930
- inlineEditing: false,
36931
- animation: false,
36932
- paletteHidden: false
37642
+ inline: {
37643
+ label: "Inline",
37644
+ description: "Horizontal layout (email + button side by side)"
36933
37645
  },
36934
- tags: [
36935
- "newsletter",
36936
- "signup",
36937
- "email",
36938
- "subscribe",
36939
- "subscription",
36940
- "mailchimp",
36941
- "marketing",
36942
- "lead-capture"
36943
- ],
36944
- icon: "Mail"
36945
- }),
37646
+ "editorial-split": {
37647
+ label: "Editorial split",
37648
+ description: "Copy and form in balanced side-by-side columns, stacked on mobile."
37649
+ }
37650
+ },
37651
+ styleTokens: {
37652
+ background: "surface",
37653
+ typography: "body",
37654
+ spacing: "md"
37655
+ },
37656
+ behaviours: {
37657
+ supportsThemeSwitching: true,
37658
+ inlineEditing: false,
37659
+ animation: false,
37660
+ paletteHidden: false
37661
+ },
37662
+ tags: [
37663
+ "newsletter",
37664
+ "signup",
37665
+ "email",
37666
+ "subscribe",
37667
+ "subscription",
37668
+ "mailchimp",
37669
+ "marketing",
37670
+ "lead-capture"
37671
+ ],
37672
+ icon: "Mail"
37673
+ });
37674
+ [...(newsletterSignupManifest.fields ?? []).map((field) => field.id)];
37675
+ const newsletterSignupBlockDefinition = {
37676
+ manifest: newsletterSignupManifest,
36946
37677
  runtime: newsletterFormBlockRuntime
36947
37678
  };
36948
37679
  //#endregion