@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
@@ -52,6 +52,64 @@ function defineEndpointDefinitions(definitions) {
52
52
  return definitions;
53
53
  }
54
54
  //#endregion
55
+ //#region ../api/src/apiEndpointTypes.ts
56
+ function allowedDemoMutationPolicy() {
57
+ return {
58
+ classification: "allowed",
59
+ publicMessage: ""
60
+ };
61
+ }
62
+ function blockedDemoMutationPolicy(classification, publicMessage) {
63
+ if (publicMessage.trim() === "") throw new Error(`Demo mutation policy ${classification} requires publicMessage.`);
64
+ return {
65
+ classification,
66
+ publicMessage
67
+ };
68
+ }
69
+ //#endregion
70
+ //#region ../api/src/demoMutationPolicies.ts
71
+ const DEMO_MUTATION_BLOCKED_HIDDEN = blockedDemoMutationPolicy("blocked-hidden", "This action is not available in demo sites.");
72
+ const DEMO_MUTATION_BLOCKED_DISABLED = blockedDemoMutationPolicy("blocked-disabled", "This setting is disabled in demo sites.");
73
+ const DEMO_MUTATION_INTERNAL_ONLY = blockedDemoMutationPolicy("internal-only", "This internal operation is not available in demo sites.");
74
+ const DEMO_MUTATION_ALLOWED = allowedDemoMutationPolicy();
75
+ //#endregion
76
+ //#region ../api/src/siteLifecycleEndpoints.ts
77
+ const SITE_LIFECYCLE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
78
+ createSite: {
79
+ path: "/sites/manage",
80
+ method: "POST",
81
+ tags: ["site"],
82
+ auth: "user",
83
+ responseKind: "json",
84
+ errors: []
85
+ },
86
+ createSiteManual: {
87
+ path: "/sites/manual",
88
+ method: "POST",
89
+ tags: ["site"],
90
+ auth: "user",
91
+ responseKind: "json",
92
+ errors: []
93
+ },
94
+ updateSite: {
95
+ path: "/sites/manage",
96
+ method: "PUT",
97
+ tags: ["site"],
98
+ auth: "user",
99
+ responseKind: "json",
100
+ errors: []
101
+ },
102
+ deleteSite: {
103
+ path: "/sites/{siteId}",
104
+ method: "DELETE",
105
+ tags: ["site", "site-{siteId}"],
106
+ auth: "user",
107
+ responseKind: "json",
108
+ errors: [],
109
+ demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
110
+ }
111
+ });
112
+ //#endregion
55
113
  //#region ../api/src/publicNewsletterEndpointDefinitions.ts
56
114
  const PUBLIC_NEWSLETTER_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
57
115
  subscribeNewsletter: {
@@ -112,27 +170,6 @@ const PUBLIC_NEWSLETTER_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
112
170
  }
113
171
  });
114
172
  //#endregion
115
- //#region ../api/src/apiEndpointTypes.ts
116
- function allowedDemoMutationPolicy() {
117
- return {
118
- classification: "allowed",
119
- publicMessage: ""
120
- };
121
- }
122
- function blockedDemoMutationPolicy(classification, publicMessage) {
123
- if (publicMessage.trim() === "") throw new Error(`Demo mutation policy ${classification} requires publicMessage.`);
124
- return {
125
- classification,
126
- publicMessage
127
- };
128
- }
129
- //#endregion
130
- //#region ../api/src/demoMutationPolicies.ts
131
- const DEMO_MUTATION_BLOCKED_HIDDEN = blockedDemoMutationPolicy("blocked-hidden", "This action is not available in demo sites.");
132
- const DEMO_MUTATION_BLOCKED_DISABLED = blockedDemoMutationPolicy("blocked-disabled", "This setting is disabled in demo sites.");
133
- const DEMO_MUTATION_INTERNAL_ONLY = blockedDemoMutationPolicy("internal-only", "This internal operation is not available in demo sites.");
134
- const DEMO_MUTATION_ALLOWED = allowedDemoMutationPolicy();
135
- //#endregion
136
173
  //#region ../api/src/cache-tags.ts
137
174
  /**
138
175
  * Tag templates for endpoint definitions (support `{param}` placeholders).
@@ -1159,6 +1196,20 @@ const NEWSLETTER_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1159
1196
  responseKind: "json",
1160
1197
  errors: ["auth:forbidden", "server:internal_error"]
1161
1198
  },
1199
+ setMailingListBookingOptIn: {
1200
+ path: "/sites/{siteId}/mailing-list/setup/booking-opt-in",
1201
+ method: "PUT",
1202
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
1203
+ auth: "user",
1204
+ responseKind: "json",
1205
+ demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
1206
+ errors: [
1207
+ "auth:forbidden",
1208
+ "validation:invalid_input",
1209
+ "resource:conflict",
1210
+ "server:internal_error"
1211
+ ]
1212
+ },
1162
1213
  getMailingListAuthoringContext: {
1163
1214
  path: "/sites/{siteId}/mailing-list/authoring-context",
1164
1215
  method: "GET",
@@ -1574,6 +1625,7 @@ const SDK_EVENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1574
1625
  responseKind: "json",
1575
1626
  errors: [
1576
1627
  "resource:not_found",
1628
+ "validation:invalid_input",
1577
1629
  "resource:conflict",
1578
1630
  "server:internal_error"
1579
1631
  ]
@@ -1680,6 +1732,19 @@ const CURRENCY_LOCALE_BY_CODE = {
1680
1732
  function resolveCurrencyLocale(currencyCode, override) {
1681
1733
  return override ?? CURRENCY_LOCALE_BY_CODE[currencyCode] ?? "en";
1682
1734
  }
1735
+ function fractionDigitsFor(decimals, exactFormatter) {
1736
+ switch (decimals) {
1737
+ case "exact": return {};
1738
+ case "auto": return {
1739
+ minimumFractionDigits: 0,
1740
+ maximumFractionDigits: exactFormatter.resolvedOptions().maximumFractionDigits
1741
+ };
1742
+ case "whole": return {
1743
+ minimumFractionDigits: 0,
1744
+ maximumFractionDigits: 0
1745
+ };
1746
+ }
1747
+ }
1683
1748
  /**
1684
1749
  * The single currency-amount formatter for the product: minor units in,
1685
1750
  * localized string out.
@@ -1690,6 +1755,13 @@ function resolveCurrencyLocale(currencyCode, override) {
1690
1755
  * own `Intl.NumberFormat`.
1691
1756
  */
1692
1757
  function formatCurrencyAmount(amountCents, currency, options) {
1758
+ return formatCurrencyMajorUnits(amountCents / 100, currency, options);
1759
+ }
1760
+ /**
1761
+ * `formatCurrencyAmount` for an amount already in MAJOR units (29.99 = £29.99),
1762
+ * such as a registrar price. Prefer minor units everywhere else.
1763
+ */
1764
+ function formatCurrencyMajorUnits(amount, currency, options) {
1693
1765
  const currencyCode = currency.toUpperCase();
1694
1766
  const locale = resolveCurrencyLocale(currencyCode, options?.locale);
1695
1767
  try {
@@ -1697,17 +1769,13 @@ function formatCurrencyAmount(amountCents, currency, options) {
1697
1769
  style: "currency",
1698
1770
  currency: currencyCode
1699
1771
  });
1700
- const fractionDigits = options?.decimals === "auto" ? {
1701
- minimumFractionDigits: 0,
1702
- maximumFractionDigits: exactFormatter.resolvedOptions().maximumFractionDigits
1703
- } : {};
1704
1772
  return new Intl.NumberFormat(locale, {
1705
1773
  style: "currency",
1706
1774
  currency: currencyCode,
1707
- ...fractionDigits
1708
- }).format(amountCents / 100);
1775
+ ...fractionDigitsFor(options?.decimals ?? "exact", exactFormatter)
1776
+ }).format(amount);
1709
1777
  } catch {
1710
- return `${(amountCents / 100).toFixed(2)} ${currencyCode}`;
1778
+ return `${amount.toFixed(2)} ${currencyCode}`;
1711
1779
  }
1712
1780
  }
1713
1781
  //#endregion
@@ -2116,6 +2184,26 @@ function toLocationCoordinates(value) {
2116
2184
  };
2117
2185
  }
2118
2186
  //#endregion
2187
+ //#region ../core/src/block-content-identity.ts
2188
+ function readContentVersionId(value) {
2189
+ const parsed = parseContentVersionId(value);
2190
+ return parsed.ok ? parsed.value : null;
2191
+ }
2192
+ /** The one pairing of a published id with its content. */
2193
+ function readPublishedBlockPlacement(id, content) {
2194
+ if (id == null && content == null) return null;
2195
+ const versionId = readContentVersionId(id);
2196
+ return versionId !== null && content != null ? {
2197
+ kind: "published",
2198
+ id: versionId,
2199
+ content
2200
+ } : {
2201
+ kind: "incomplete",
2202
+ id: id ?? null,
2203
+ content: content ?? null
2204
+ };
2205
+ }
2206
+ //#endregion
2119
2207
  //#region ../core/src/mailing-list-identifiers.ts
2120
2208
  const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu;
2121
2209
  const OPAQUE_ID_PATTERN = /^[A-Za-z0-9_-]{1,100}$/u;
@@ -2284,17 +2372,35 @@ function parseMailingListRuntimeContext(value) {
2284
2372
  if (!isRecord$15(value)) return invalidRuntimeContext();
2285
2373
  if (value.tag === "not_configured") return ok$1({ tag: "not_configured" });
2286
2374
  if (value.tag !== "configured") return invalidRuntimeContext();
2375
+ return parseConfiguredRuntimeContext(value);
2376
+ }
2377
+ function parseConfiguredRuntimeContext(value) {
2287
2378
  const revision = parseMailingListSetupRevision(value.revision);
2288
2379
  const form = parseMailingListGlobalForm(value.form);
2289
2380
  const provider = parseRuntimeProvider(value.provider);
2290
- if (revision === null || !form.ok || provider === null) return invalidRuntimeContext();
2381
+ const bookingSignup = parseBookingSignupOffer(value.bookingSignup);
2382
+ if (revision === null || !form.ok || provider === null || bookingSignup === null) return invalidRuntimeContext();
2291
2383
  return ok$1({
2292
2384
  tag: "configured",
2293
2385
  revision,
2386
+ bookingSignup,
2294
2387
  form: form.value,
2295
2388
  provider
2296
2389
  });
2297
2390
  }
2391
+ function parseBookingSignupOffer(value) {
2392
+ if (value === void 0) return {
2393
+ tag: "unavailable",
2394
+ reason: "disabled"
2395
+ };
2396
+ if (!isRecord$15(value)) return null;
2397
+ if (value.tag === "offered") return { tag: "offered" };
2398
+ if (value.tag === "unavailable" && (value.reason === "disabled" || value.reason === "fields" || value.reason === "destination")) return {
2399
+ tag: "unavailable",
2400
+ reason: value.reason
2401
+ };
2402
+ return null;
2403
+ }
2298
2404
  function parseRuntimeProvider(value) {
2299
2405
  if (!isRecord$15(value)) return null;
2300
2406
  switch (value.provider) {
@@ -3332,28 +3438,6 @@ const EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
3332
3438
  "resource:conflict",
3333
3439
  "server:internal_error"
3334
3440
  ]
3335
- },
3336
- /**
3337
- * The Content tab's one write: the short introduction, image and
3338
- * description of an event's page, published without its layout.
3339
- */
3340
- saveEventPageWords: {
3341
- path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/words",
3342
- method: "PUT",
3343
- tags: [
3344
- TAG_TEMPLATES.siteCollection,
3345
- TAG_TEMPLATES.siteRoutableContent,
3346
- TAG_TEMPLATES.pageSurfaceById
3347
- ],
3348
- auth: "user",
3349
- responseKind: "json",
3350
- errors: [
3351
- "auth:forbidden",
3352
- "validation:invalid_input",
3353
- "resource:not_found",
3354
- "resource:conflict",
3355
- "server:internal_error"
3356
- ]
3357
3441
  }
3358
3442
  });
3359
3443
  //#endregion
@@ -3778,6 +3862,15 @@ const BILLING_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
3778
3862
  auth: "user",
3779
3863
  responseKind: "json"
3780
3864
  },
3865
+ /** Continue on Free from the onboarding card page; only the attempt's owner. */
3866
+ continueOnboardingOnFree: {
3867
+ path: "/onboarding/attempts/{attemptToken}/plan/free",
3868
+ method: "POST",
3869
+ tags: ["billing"],
3870
+ auth: "user",
3871
+ errors: [],
3872
+ responseKind: "json"
3873
+ },
3781
3874
  createBillingPortalSession: {
3782
3875
  path: "/billing/portal/session",
3783
3876
  method: "POST",
@@ -3787,6 +3880,209 @@ const BILLING_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
3787
3880
  }
3788
3881
  });
3789
3882
  //#endregion
3883
+ //#region ../api/src/editLeaseEndpoints.ts
3884
+ const path = "/sites/{siteId}/edit-leases/{nodeType}/{nodeId}";
3885
+ const lifecycleErrors = [
3886
+ "auth:lease_required",
3887
+ "auth:forbidden",
3888
+ "resource:not_found",
3889
+ "validation:invalid_input",
3890
+ "server:internal_error"
3891
+ ];
3892
+ const EDIT_LEASE_ENDPOINT_DEFINITIONS = {
3893
+ readEditLease: {
3894
+ path,
3895
+ method: "GET",
3896
+ editLease: "lifecycle",
3897
+ errors: lifecycleErrors,
3898
+ auth: "user",
3899
+ responseKind: "json"
3900
+ },
3901
+ acquireEditLease: {
3902
+ path,
3903
+ method: "POST",
3904
+ editLease: "lifecycle",
3905
+ errors: lifecycleErrors,
3906
+ auth: "user",
3907
+ responseKind: "json"
3908
+ },
3909
+ takeOverEditLease: {
3910
+ path,
3911
+ method: "PUT",
3912
+ editLease: "lifecycle",
3913
+ errors: lifecycleErrors,
3914
+ auth: "user",
3915
+ responseKind: "json"
3916
+ },
3917
+ heartbeatEditLease: {
3918
+ path,
3919
+ method: "PATCH",
3920
+ editLease: "lifecycle",
3921
+ errors: [...lifecycleErrors, "auth:lease_lost"],
3922
+ auth: "user",
3923
+ responseKind: "json"
3924
+ },
3925
+ releaseEditLease: {
3926
+ path,
3927
+ method: "DELETE",
3928
+ editLease: "lifecycle",
3929
+ errors: lifecycleErrors,
3930
+ auth: "user",
3931
+ responseKind: "json"
3932
+ }
3933
+ };
3934
+ //#endregion
3935
+ //#region ../api/src/pageSurfaceEditorEndpoints.ts
3936
+ const surfaceTags = [TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById];
3937
+ const PAGE_SURFACE_EDITOR_ENDPOINT_DEFINITIONS = {
3938
+ getPageSurfaceEditorDocument: {
3939
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/content",
3940
+ method: "GET",
3941
+ errors: [
3942
+ "auth:forbidden",
3943
+ "validation:invalid_input",
3944
+ "resource:not_found",
3945
+ "resource:conflict",
3946
+ "server:internal_error"
3947
+ ],
3948
+ tags: surfaceTags,
3949
+ auth: "user",
3950
+ responseKind: "json"
3951
+ },
3952
+ updatePageSurfaceDraftContent: {
3953
+ editLease: "managed",
3954
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/content",
3955
+ method: "PUT",
3956
+ errors: [
3957
+ "validation:invalid_input",
3958
+ "resource:not_found",
3959
+ "resource:conflict",
3960
+ "server:internal_error"
3961
+ ],
3962
+ tags: surfaceTags,
3963
+ auth: "user",
3964
+ responseKind: "json"
3965
+ },
3966
+ discardPageSurfaceDraftContent: {
3967
+ editLease: "managed",
3968
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/content/draft",
3969
+ method: "DELETE",
3970
+ errors: [
3971
+ "validation:invalid_input",
3972
+ "resource:not_found",
3973
+ "resource:conflict",
3974
+ "server:internal_error"
3975
+ ],
3976
+ tags: surfaceTags,
3977
+ auth: "user",
3978
+ responseKind: "json"
3979
+ },
3980
+ updatePageSurfaceRouteMetadata: {
3981
+ editLease: "managed",
3982
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/metadata",
3983
+ method: "PATCH",
3984
+ errors: [
3985
+ "validation:invalid_input",
3986
+ "resource:not_found",
3987
+ "resource:conflict",
3988
+ "server:internal_error"
3989
+ ],
3990
+ tags: [
3991
+ TAG_TEMPLATES.siteCollection,
3992
+ TAG_TEMPLATES.siteRoutableContent,
3993
+ TAG_TEMPLATES.pageSurfaceById
3994
+ ],
3995
+ auth: "user",
3996
+ responseKind: "json"
3997
+ },
3998
+ publishPageSurface: {
3999
+ editLease: "managed",
4000
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/publication",
4001
+ method: "POST",
4002
+ errors: [
4003
+ "auth:forbidden",
4004
+ "validation:invalid_input",
4005
+ "resource:not_found",
4006
+ "resource:conflict",
4007
+ "server:internal_error"
4008
+ ],
4009
+ tags: [
4010
+ TAG_TEMPLATES.siteCollection,
4011
+ TAG_TEMPLATES.siteRoutableContent,
4012
+ TAG_TEMPLATES.pageSurfaceById
4013
+ ],
4014
+ auth: "user",
4015
+ responseKind: "json"
4016
+ },
4017
+ saveEventContentTab: {
4018
+ editLease: "managed",
4019
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/event-content",
4020
+ method: "PUT",
4021
+ errors: [
4022
+ "auth:forbidden",
4023
+ "validation:invalid_input",
4024
+ "resource:not_found",
4025
+ "resource:conflict",
4026
+ "server:internal_error"
4027
+ ],
4028
+ tags: [
4029
+ TAG_TEMPLATES.siteCollection,
4030
+ TAG_TEMPLATES.siteRoutableContent,
4031
+ TAG_TEMPLATES.pageSurfaceById
4032
+ ],
4033
+ auth: "user",
4034
+ responseKind: "json"
4035
+ }
4036
+ };
4037
+ //#endregion
4038
+ //#region ../api/src/bookingPeopleEndpointDefinitions.ts
4039
+ /**
4040
+ * People endpoints (#1356): the People list, its CSV export, and deleting a
4041
+ * person when nothing is attached to them.
4042
+ */
4043
+ const BOOKING_PEOPLE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
4044
+ listPeople: {
4045
+ path: "/sites/{siteId}/bookings/people",
4046
+ method: "GET",
4047
+ tags: ["site-{siteId}", "customers-{siteId}"],
4048
+ auth: "user",
4049
+ responseKind: "json",
4050
+ errors: ["server:internal_error"]
4051
+ },
4052
+ exportPeopleCsv: {
4053
+ path: "/sites/{siteId}/bookings/people/export.csv",
4054
+ method: "GET",
4055
+ tags: ["site-{siteId}", "customers-{siteId}"],
4056
+ auth: "user",
4057
+ errors: [],
4058
+ responseKind: "blob"
4059
+ },
4060
+ checkPersonDeletion: {
4061
+ path: "/sites/{siteId}/bookings/people/{personId}/deletion-check",
4062
+ method: "GET",
4063
+ tags: ["site-{siteId}", "customers-{siteId}"],
4064
+ auth: "user",
4065
+ responseKind: "json",
4066
+ errors: [
4067
+ "auth:forbidden",
4068
+ "resource:not_found",
4069
+ "server:internal_error"
4070
+ ]
4071
+ },
4072
+ deletePerson: {
4073
+ path: "/sites/{siteId}/bookings/people/{personId}",
4074
+ method: "DELETE",
4075
+ tags: ["site-{siteId}", "customers-{siteId}"],
4076
+ auth: "user",
4077
+ responseKind: "json",
4078
+ errors: [
4079
+ "auth:forbidden",
4080
+ "resource:not_found",
4081
+ "server:internal_error"
4082
+ ]
4083
+ }
4084
+ });
4085
+ //#endregion
3790
4086
  //#region ../api/src/clientErrorReporting.ts
3791
4087
  const CLIENT_ERROR_REPORT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({ reportClientError: {
3792
4088
  path: "/client/error-report",
@@ -3822,6 +4118,7 @@ z.object({
3822
4118
  sourceLocation: z.string().max(CLIENT_ERROR_REPORT_LIMITS.sourceLocation).nullable()
3823
4119
  }).strict();
3824
4120
  const API_ENDPOINTS$1 = {
4121
+ ...SITE_LIFECYCLE_ENDPOINT_DEFINITIONS,
3825
4122
  ...CLIENT_ERROR_REPORT_ENDPOINT_DEFINITIONS,
3826
4123
  ...PUBLIC_NEWSLETTER_ENDPOINT_DEFINITIONS,
3827
4124
  ...ACCOUNT_ENDPOINT_DEFINITIONS,
@@ -3830,6 +4127,8 @@ const API_ENDPOINTS$1 = {
3830
4127
  ...GIFTING_ENDPOINT_DEFINITIONS,
3831
4128
  ...PUBLIC_READ_ENDPOINT_DEFINITIONS,
3832
4129
  ...BILLING_ENDPOINT_DEFINITIONS,
4130
+ ...EDIT_LEASE_ENDPOINT_DEFINITIONS,
4131
+ ...PAGE_SURFACE_EDITOR_ENDPOINT_DEFINITIONS,
3833
4132
  ...SITE_MANAGEMENT_ENDPOINT_DEFINITIONS,
3834
4133
  aiContentUpdateChat: {
3835
4134
  path: "/ai/content-update-chat",
@@ -3851,6 +4150,7 @@ const API_ENDPOINTS$1 = {
3851
4150
  responseKind: "json"
3852
4151
  },
3853
4152
  aiDesignerPageOpsApply: {
4153
+ editLease: "managed",
3854
4154
  path: "/sites/{siteId}/ai/designer/page/apply",
3855
4155
  method: "POST",
3856
4156
  tags: [TAG_TEMPLATES.siteCollection],
@@ -4357,13 +4657,6 @@ const API_ENDPOINTS$1 = {
4357
4657
  auth: "user",
4358
4658
  responseKind: "json"
4359
4659
  },
4360
- createSiteManual: {
4361
- path: "/sites/manual",
4362
- method: "POST",
4363
- tags: ["site"],
4364
- auth: "user",
4365
- responseKind: "json"
4366
- },
4367
4660
  listSiteMembers: {
4368
4661
  path: "/sites/{siteId}/members",
4369
4662
  method: "GET",
@@ -4692,6 +4985,7 @@ const API_ENDPOINTS$1 = {
4692
4985
  responseKind: "json"
4693
4986
  },
4694
4987
  restoreContentEntryVersion: {
4988
+ editLease: "managed",
4695
4989
  path: "/sites/{siteId}/content/{type}/{entryId}/versions/{versionId}/restore",
4696
4990
  method: "POST",
4697
4991
  errors: [
@@ -4709,6 +5003,7 @@ const API_ENDPOINTS$1 = {
4709
5003
  responseKind: "json"
4710
5004
  },
4711
5005
  updateContentEntryContent: {
5006
+ editLease: "managed",
4712
5007
  path: "/sites/{siteId}/content/{type}/{entryId}/content",
4713
5008
  method: "PUT",
4714
5009
  tags: [
@@ -4725,67 +5020,6 @@ const API_ENDPOINTS$1 = {
4725
5020
  ],
4726
5021
  responseKind: "json"
4727
5022
  },
4728
- updatePageSurfaceDraftContent: {
4729
- path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/content",
4730
- method: "PUT",
4731
- errors: [
4732
- "validation:invalid_input",
4733
- "resource:not_found",
4734
- "resource:conflict",
4735
- "server:internal_error"
4736
- ],
4737
- tags: [TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById],
4738
- auth: "user",
4739
- responseKind: "json"
4740
- },
4741
- discardPageSurfaceDraftContent: {
4742
- path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/content/draft",
4743
- method: "DELETE",
4744
- errors: [
4745
- "validation:invalid_input",
4746
- "resource:not_found",
4747
- "resource:conflict",
4748
- "server:internal_error"
4749
- ],
4750
- tags: [TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById],
4751
- auth: "user",
4752
- responseKind: "json"
4753
- },
4754
- updatePageSurfaceRouteMetadata: {
4755
- path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/metadata",
4756
- method: "PATCH",
4757
- errors: [
4758
- "validation:invalid_input",
4759
- "resource:not_found",
4760
- "resource:conflict",
4761
- "server:internal_error"
4762
- ],
4763
- tags: [
4764
- TAG_TEMPLATES.siteCollection,
4765
- TAG_TEMPLATES.siteRoutableContent,
4766
- TAG_TEMPLATES.pageSurfaceById
4767
- ],
4768
- auth: "user",
4769
- responseKind: "json"
4770
- },
4771
- publishPageSurface: {
4772
- path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/publication",
4773
- method: "POST",
4774
- errors: [
4775
- "auth:forbidden",
4776
- "validation:invalid_input",
4777
- "resource:not_found",
4778
- "resource:conflict",
4779
- "server:internal_error"
4780
- ],
4781
- tags: [
4782
- TAG_TEMPLATES.siteCollection,
4783
- TAG_TEMPLATES.siteRoutableContent,
4784
- TAG_TEMPLATES.pageSurfaceById
4785
- ],
4786
- auth: "user",
4787
- responseKind: "json"
4788
- },
4789
5023
  runSdkWorkflow: {
4790
5024
  path: "/sites/{siteId}/content/{type}/{entryId}/workflows/{workflowId}/run",
4791
5025
  method: "POST",
@@ -4822,6 +5056,7 @@ const API_ENDPOINTS$1 = {
4822
5056
  responseKind: "json"
4823
5057
  },
4824
5058
  updateRouteMetadata: {
5059
+ editLease: "managed",
4825
5060
  path: "/sites/{siteId}/routes/{routeId}/metadata",
4826
5061
  method: "PATCH",
4827
5062
  tags: [
@@ -4839,6 +5074,7 @@ const API_ENDPOINTS$1 = {
4839
5074
  responseKind: "json"
4840
5075
  },
4841
5076
  publishContentEntry: {
5077
+ editLease: "managed",
4842
5078
  path: "/sites/{siteId}/content/{type}/{entryId}/publish",
4843
5079
  method: "POST",
4844
5080
  tags: [
@@ -4850,6 +5086,7 @@ const API_ENDPOINTS$1 = {
4850
5086
  responseKind: "json"
4851
5087
  },
4852
5088
  scheduleContentEntry: {
5089
+ editLease: "managed",
4853
5090
  path: "/sites/{siteId}/content/{type}/{entryId}/schedule",
4854
5091
  method: "POST",
4855
5092
  tags: [
@@ -4867,6 +5104,7 @@ const API_ENDPOINTS$1 = {
4867
5104
  responseKind: "json"
4868
5105
  },
4869
5106
  cancelScheduledContentEntry: {
5107
+ editLease: "managed",
4870
5108
  path: "/sites/{siteId}/content/{type}/{entryId}/schedule",
4871
5109
  method: "DELETE",
4872
5110
  tags: [
@@ -4884,6 +5122,7 @@ const API_ENDPOINTS$1 = {
4884
5122
  responseKind: "json"
4885
5123
  },
4886
5124
  discardContentEntry: {
5125
+ editLease: "managed",
4887
5126
  path: "/sites/{siteId}/content/{type}/{entryId}/discard",
4888
5127
  method: "POST",
4889
5128
  tags: [
@@ -4902,6 +5141,7 @@ const API_ENDPOINTS$1 = {
4902
5141
  responseKind: "json"
4903
5142
  },
4904
5143
  unpublishContentEntry: {
5144
+ editLease: "managed",
4905
5145
  path: "/sites/{siteId}/content/{type}/{entryId}/unpublish",
4906
5146
  method: "POST",
4907
5147
  tags: [
@@ -4943,6 +5183,7 @@ const API_ENDPOINTS$1 = {
4943
5183
  responseKind: "json"
4944
5184
  },
4945
5185
  deleteContentEntry: {
5186
+ editLease: "managed",
4946
5187
  path: "/sites/{siteId}/content/{type}/{entryId}",
4947
5188
  method: "DELETE",
4948
5189
  tags: [
@@ -6152,6 +6393,7 @@ const API_ENDPOINTS$1 = {
6152
6393
  responseKind: "json"
6153
6394
  },
6154
6395
  saveBlockContent: {
6396
+ editLease: "owner-derived",
6155
6397
  path: "/blocks/{blockId}/content",
6156
6398
  method: "POST",
6157
6399
  tags: [
@@ -6189,6 +6431,7 @@ const API_ENDPOINTS$1 = {
6189
6431
  errors: ["resource:not_found", "resource:conflict"]
6190
6432
  },
6191
6433
  createEntrySlotBlock: {
6434
+ editLease: "managed",
6192
6435
  path: "/sites/{siteId}/content/{type}/{entryId}/slots/{slotKey}/blocks",
6193
6436
  method: "POST",
6194
6437
  tags: [
@@ -6206,6 +6449,7 @@ const API_ENDPOINTS$1 = {
6206
6449
  ]
6207
6450
  },
6208
6451
  reorderEntrySlotBlocks: {
6452
+ editLease: "managed",
6209
6453
  path: "/sites/{siteId}/content/{type}/{entryId}/slots/{slotKey}/blocks/reorder",
6210
6454
  method: "POST",
6211
6455
  tags: [
@@ -6223,6 +6467,7 @@ const API_ENDPOINTS$1 = {
6223
6467
  ]
6224
6468
  },
6225
6469
  deleteEntrySlotBlock: {
6470
+ editLease: "managed",
6226
6471
  path: "/sites/{siteId}/content/{type}/{entryId}/slots/{slotKey}/blocks/{blockId}",
6227
6472
  method: "DELETE",
6228
6473
  tags: [
@@ -6253,6 +6498,7 @@ const API_ENDPOINTS$1 = {
6253
6498
  ]
6254
6499
  },
6255
6500
  createPageSurfaceSlotBlock: {
6501
+ editLease: "managed",
6256
6502
  path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/slots/{slotKey}/blocks",
6257
6503
  method: "POST",
6258
6504
  tags: [
@@ -6271,6 +6517,7 @@ const API_ENDPOINTS$1 = {
6271
6517
  ]
6272
6518
  },
6273
6519
  reorderPageSurfaceSlotBlocks: {
6520
+ editLease: "managed",
6274
6521
  path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/slots/{slotKey}/blocks/reorder",
6275
6522
  method: "POST",
6276
6523
  tags: [
@@ -6289,6 +6536,7 @@ const API_ENDPOINTS$1 = {
6289
6536
  ]
6290
6537
  },
6291
6538
  deletePageSurfaceSlotBlock: {
6539
+ editLease: "managed",
6292
6540
  path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/slots/{slotKey}/blocks/{blockId}",
6293
6541
  method: "DELETE",
6294
6542
  tags: [
@@ -6306,6 +6554,7 @@ const API_ENDPOINTS$1 = {
6306
6554
  ]
6307
6555
  },
6308
6556
  createBlock: {
6557
+ editLease: "managed",
6309
6558
  path: "/sites/{siteId}/pages/{pageId}/blocks",
6310
6559
  method: "POST",
6311
6560
  tags: [
@@ -6317,6 +6566,7 @@ const API_ENDPOINTS$1 = {
6317
6566
  responseKind: "json"
6318
6567
  },
6319
6568
  reorderBlocks: {
6569
+ editLease: "managed",
6320
6570
  path: "/sites/{siteId}/pages/{pageId}/blocks/reorder",
6321
6571
  method: "POST",
6322
6572
  tags: [
@@ -6328,6 +6578,7 @@ const API_ENDPOINTS$1 = {
6328
6578
  responseKind: "json"
6329
6579
  },
6330
6580
  deleteBlock: {
6581
+ editLease: "managed",
6331
6582
  path: "/sites/{siteId}/pages/{pageId}/blocks/{blockId}",
6332
6583
  method: "DELETE",
6333
6584
  tags: [
@@ -6373,6 +6624,7 @@ const API_ENDPOINTS$1 = {
6373
6624
  responseKind: "json"
6374
6625
  },
6375
6626
  publishPageDraft: {
6627
+ editLease: "managed",
6376
6628
  path: "/sites/{siteId}/pages/{pageId}/publish",
6377
6629
  method: "POST",
6378
6630
  tags: [TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById],
@@ -6380,6 +6632,7 @@ const API_ENDPOINTS$1 = {
6380
6632
  responseKind: "json"
6381
6633
  },
6382
6634
  discardPageDraft: {
6635
+ editLease: "managed",
6383
6636
  path: "/sites/{siteId}/pages/{pageId}/discard",
6384
6637
  method: "POST",
6385
6638
  tags: [TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById],
@@ -6395,6 +6648,7 @@ const API_ENDPOINTS$1 = {
6395
6648
  errors: ["resource:not_found", "server:internal_error"]
6396
6649
  },
6397
6650
  savePageDesignState: {
6651
+ editLease: "managed",
6398
6652
  path: "/sites/{siteId}/pages/{pageId}/design-state",
6399
6653
  method: "POST",
6400
6654
  tags: [TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById],
@@ -6424,6 +6678,7 @@ const API_ENDPOINTS$1 = {
6424
6678
  responseKind: "json"
6425
6679
  },
6426
6680
  restorePageVersion: {
6681
+ editLease: "managed",
6427
6682
  path: "/sites/{siteId}/pages/{pageId}/versions/{versionId}/restore",
6428
6683
  method: "POST",
6429
6684
  errors: [
@@ -6437,6 +6692,7 @@ const API_ENDPOINTS$1 = {
6437
6692
  responseKind: "json"
6438
6693
  },
6439
6694
  applyPageDesignEditorAction: {
6695
+ editLease: "managed",
6440
6696
  path: "/sites/{siteId}/pages/{pageId}/design/actions",
6441
6697
  method: "POST",
6442
6698
  tags: [TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById],
@@ -7869,21 +8125,7 @@ const API_ENDPOINTS$1 = {
7869
8125
  responseKind: "json",
7870
8126
  errors: []
7871
8127
  },
7872
- listBookingCustomers: {
7873
- path: "/sites/{siteId}/bookings/customers",
7874
- method: "GET",
7875
- tags: ["site-{siteId}", "customers-{siteId}"],
7876
- auth: "user",
7877
- responseKind: "json"
7878
- },
7879
- exportBookingCustomersCsv: {
7880
- path: "/sites/{siteId}/bookings/customers/export.csv",
7881
- method: "GET",
7882
- tags: ["site-{siteId}", "customers-{siteId}"],
7883
- auth: "user",
7884
- errors: [],
7885
- responseKind: "blob"
7886
- },
8128
+ ...BOOKING_PEOPLE_ENDPOINT_DEFINITIONS,
7887
8129
  createBookingCustomer: {
7888
8130
  path: "/sites/{siteId}/bookings/customers",
7889
8131
  method: "POST",
@@ -7974,13 +8216,6 @@ const API_ENDPOINTS$1 = {
7974
8216
  "server:internal_error"
7975
8217
  ]
7976
8218
  },
7977
- listCustomerAttendances: {
7978
- path: "/sites/{siteId}/bookings/customers/{customerId}/attendances",
7979
- method: "GET",
7980
- tags: ["site-{siteId}", "customers-{siteId}"],
7981
- auth: "user",
7982
- responseKind: "json"
7983
- },
7984
8219
  createPersonRecordEntry: {
7985
8220
  path: "/sites/{siteId}/bookings/person-records/entries",
7986
8221
  method: "POST",
@@ -9314,6 +9549,8 @@ const API_ERROR_CODE_SET = /* @__PURE__ */ new Set([
9314
9549
  "auth:sudo_required",
9315
9550
  "auth:insufficient_permissions",
9316
9551
  "auth:impersonation_restricted",
9552
+ "auth:lease_required",
9553
+ "auth:lease_lost",
9317
9554
  "validation:invalid_input",
9318
9555
  "validation:missing_field",
9319
9556
  "validation:invalid_format",
@@ -9865,7 +10102,7 @@ var SimpleCache = class {
9865
10102
  * 1. This constant
9866
10103
  * 2. The "version" field in package.json
9867
10104
  */
9868
- const SDK_VERSION = "0.146.0";
10105
+ const SDK_VERSION = "0.148.0";
9869
10106
  //#endregion
9870
10107
  //#region src/client/error.ts
9871
10108
  let _Symbol$for;
@@ -11068,13 +11305,16 @@ const SURFACE_FOREGROUND_CSS_VARS = {
11068
11305
  text: "--rb-surface-text-color",
11069
11306
  heading: "--rb-surface-heading-color",
11070
11307
  link: "--rb-surface-link-color",
11308
+ linkHover: "--rb-surface-link-hover-color",
11071
11309
  supporting: "--rb-surface-supporting-color"
11072
11310
  };
11073
11311
  const DEFAULT_SURFACE_TEXT_COLOR = "rgb(var(--tb-text, 17 24 39))";
11312
+ const DEFAULT_SURFACE_LINK_COLOR = "rgb(var(--tb-primary, var(--tb-text, 17 24 39)))";
11074
11313
  const DEFAULT_ROLE_FALLBACKS = {
11075
11314
  text: DEFAULT_SURFACE_TEXT_COLOR,
11076
11315
  heading: DEFAULT_SURFACE_TEXT_COLOR,
11077
- link: "rgb(var(--tb-primary, var(--tb-text, 17 24 39)))",
11316
+ link: DEFAULT_SURFACE_LINK_COLOR,
11317
+ linkHover: DEFAULT_SURFACE_LINK_COLOR,
11078
11318
  supporting: "rgb(var(--tb-mutedText, 100 116 139))"
11079
11319
  };
11080
11320
  function requireSurfaceColorValue(role, value) {
@@ -11084,10 +11324,12 @@ function requireSurfaceColorValue(role, value) {
11084
11324
  }
11085
11325
  function completeSurfaceForegrounds(input) {
11086
11326
  const text = requireSurfaceColorValue("text", input.text);
11327
+ const link = input.link === void 0 ? text : requireSurfaceColorValue("link", input.link);
11087
11328
  return {
11088
11329
  text,
11089
11330
  heading: input.heading === void 0 ? text : requireSurfaceColorValue("heading", input.heading),
11090
- link: input.link === void 0 ? text : requireSurfaceColorValue("link", input.link),
11331
+ link,
11332
+ linkHover: input.linkHover === void 0 ? link : requireSurfaceColorValue("linkHover", input.linkHover),
11091
11333
  supporting: input.supporting === void 0 ? text : requireSurfaceColorValue("supporting", input.supporting)
11092
11334
  };
11093
11335
  }
@@ -11095,6 +11337,7 @@ function surfaceForegroundValue(role, outsideProviderFallback = DEFAULT_ROLE_FAL
11095
11337
  const roleVariable = SURFACE_FOREGROUND_CSS_VARS[role];
11096
11338
  const fallback = requireSurfaceColorValue("fallback", outsideProviderFallback);
11097
11339
  if (role === "text") return `var(${roleVariable}, ${fallback})`;
11340
+ if (role === "linkHover") return `var(${roleVariable}, ${surfaceForegroundValue("link", fallback)})`;
11098
11341
  return `var(${roleVariable}, var(${SURFACE_FOREGROUND_CSS_VARS.text}, ${fallback}))`;
11099
11342
  }
11100
11343
  function surfaceForegroundValueWithOpacity(role, opacityPercent) {
@@ -11108,9 +11351,25 @@ function surfaceForegroundStyle(input) {
11108
11351
  [SURFACE_FOREGROUND_CSS_VARS.text]: foregrounds.text,
11109
11352
  [SURFACE_FOREGROUND_CSS_VARS.heading]: foregrounds.heading,
11110
11353
  [SURFACE_FOREGROUND_CSS_VARS.link]: foregrounds.link,
11111
- [SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting
11354
+ [SURFACE_FOREGROUND_CSS_VARS.linkHover]: foregrounds.linkHover,
11355
+ [SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting,
11356
+ "--rb-surface-link-hover-decoration": hoverDecoration(input)
11357
+ };
11358
+ }
11359
+ function surfaceForegroundInputFromResolved(foreground, color) {
11360
+ const { roles } = foreground;
11361
+ return {
11362
+ text: color(roles.text),
11363
+ heading: color(roles.heading),
11364
+ link: color(roles.link),
11365
+ linkHover: color(roles.linkHover),
11366
+ supporting: color(roles.supporting),
11367
+ hoverDecoration: foreground.hoverDecoration
11112
11368
  };
11113
11369
  }
11370
+ function hoverDecoration(input) {
11371
+ return input.hoverDecoration ?? "underline";
11372
+ }
11114
11373
  //#endregion
11115
11374
  //#region ../theme-core/src/buttons/constants.ts
11116
11375
  /**
@@ -11967,6 +12226,64 @@ function parseAlpha(source) {
11967
12226
  function isRgbChannel(value) {
11968
12227
  return Number.isFinite(value) && value >= 0 && value <= 255;
11969
12228
  }
12229
+ /**
12230
+ * Derive the hover foreground that belongs with a resolved resting foreground.
12231
+ *
12232
+ * A resting foreground is chosen to be legible against a known surface. A hover
12233
+ * state derived from it stays within a bounded distance of that colour, so it
12234
+ * inherits most of the resting colour's contrast margin instead of asserting
12235
+ * an unrelated brand colour that no one checked against the surface.
12236
+ *
12237
+ * That bounded-distance property is what lets this be used on a transparent
12238
+ * overlay header, where the backdrop is only partly knowable: the scrolled
12239
+ * state composites a 60% glass tint over arbitrary page content, so no
12240
+ * compile-time contrast proof is available there. Staying near a colour that
12241
+ * is already trusted in both states is a weaker claim than a contrast proof,
12242
+ * and it is one this function can actually keep.
12243
+ *
12244
+ * Returns `null` when the resting token is not a plain palette token — an
12245
+ * already-faded or raw value has no well-defined softening, and the caller
12246
+ * should leave hover alone rather than guess.
12247
+ */
12248
+ function deriveForegroundHoverToken(restingToken) {
12249
+ const parts = parseColorTokenParts(restingToken);
12250
+ if (parts.kind !== "token") return null;
12251
+ if (parts.opacityPercent !== null) return null;
12252
+ return parseThemeColorToken(`${parts.token}/85`);
12253
+ }
12254
+ /**
12255
+ * Prefer an authored hover that survives every measured backdrop, then a
12256
+ * checked softening of the resting colour. A null backdrop set represents a
12257
+ * trusted treatment: only an explicit authored hover may change the colour.
12258
+ * When neither option works, retain the resting colour and underline it.
12259
+ */
12260
+ function planForegroundHover(input) {
12261
+ const { restingToken, candidate, palette, backdrops } = input;
12262
+ if (candidate && candidate !== restingToken) {
12263
+ if (backdrops === null || survivesEveryBackdrop(candidate, palette, backdrops)) return {
12264
+ kind: "candidate",
12265
+ token: candidate,
12266
+ decoration: "initial"
12267
+ };
12268
+ }
12269
+ const softened = deriveForegroundHoverToken(restingToken);
12270
+ if (softened && backdrops && survivesEveryBackdrop(softened, palette, backdrops)) return {
12271
+ kind: "softened",
12272
+ token: softened,
12273
+ decoration: "initial"
12274
+ };
12275
+ return {
12276
+ kind: "resting",
12277
+ token: restingToken,
12278
+ decoration: "underline"
12279
+ };
12280
+ }
12281
+ function survivesEveryBackdrop(token, palette, backdrops) {
12282
+ return backdrops.length > 0 && backdrops.every((backdrop) => {
12283
+ const foreground = resolveOpaqueSurfaceHex(token, palette, backdrop);
12284
+ return foreground !== null && contrastRatio(foreground, backdrop) >= 4.5;
12285
+ });
12286
+ }
11970
12287
  //#endregion
11971
12288
  //#region ../theme-core/src/surfaces/resolveSurfaceForeground.ts
11972
12289
  const FALLBACK_TEXT_TOKENS = [
@@ -12013,12 +12330,16 @@ function resolveSurfaceForeground(background, palette, candidates = {}, options
12013
12330
  }
12014
12331
  function foregroundCandidates(background, overrides) {
12015
12332
  return {
12016
- text: overrides.text ?? background?.textColor ?? null,
12017
- heading: overrides.heading ?? background?.headingColor ?? null,
12018
- link: overrides.link ?? background?.linkColor ?? null,
12019
- supporting: overrides.supporting ?? background?.supportingColor ?? null
12333
+ text: candidateOrBackground(overrides.text, background?.textColor),
12334
+ heading: candidateOrBackground(overrides.heading, background?.headingColor),
12335
+ link: candidateOrBackground(overrides.link, background?.linkColor),
12336
+ linkHover: candidateOrBackground(overrides.linkHover),
12337
+ supporting: candidateOrBackground(overrides.supporting, background?.supportingColor)
12020
12338
  };
12021
12339
  }
12340
+ function candidateOrBackground(candidate, backgroundValue) {
12341
+ return candidate ?? backgroundValue ?? null;
12342
+ }
12022
12343
  function resolveDeterministicForeground(backgroundReference, candidates, palette, compositeBase) {
12023
12344
  const backgroundHex = resolveOpaqueSurfaceHex(backgroundReference, palette, compositeBase);
12024
12345
  if (!backgroundHex) return resolveTrustedTreatmentForeground(candidates, palette);
@@ -12030,29 +12351,51 @@ function resolveDeterministicForeground(backgroundReference, candidates, palette
12030
12351
  ...FALLBACK_TEXT_TOKENS
12031
12352
  ], backgroundHex, palette, derivedOnToken ? [derivedOnToken] : []);
12032
12353
  if (!text) return { kind: "unknown" };
12033
- return {
12034
- kind: "known",
12035
- roles: {
12036
- text,
12037
- heading: safeTokenOr(candidates.heading, text, backgroundHex, palette),
12038
- link: safeTokenOr(candidates.link, text, backgroundHex, palette),
12039
- supporting: safeTokenOr(candidates.supporting, text, backgroundHex, palette)
12040
- }
12041
- };
12354
+ return knownForeground({
12355
+ text,
12356
+ heading: safeTokenOr(candidates.heading, text, backgroundHex, palette),
12357
+ link: safeTokenOr(candidates.link, text, backgroundHex, palette),
12358
+ supporting: safeTokenOr(candidates.supporting, text, backgroundHex, palette)
12359
+ }, {
12360
+ kind: "measured",
12361
+ backdropHex: backgroundHex
12362
+ }, candidates.linkHover, palette);
12042
12363
  }
12043
12364
  function resolveTrustedTreatmentForeground(candidates, palette) {
12044
12365
  const text = canonicalToken(candidates.text, palette);
12045
12366
  if (!text) return { kind: "unknown" };
12367
+ return knownForeground({
12368
+ text,
12369
+ heading: canonicalToken(candidates.heading, palette) ?? text,
12370
+ link: canonicalToken(candidates.link, palette) ?? text,
12371
+ supporting: canonicalToken(candidates.supporting, palette) ?? text
12372
+ }, { kind: "trusted-treatment" }, candidates.linkHover, palette);
12373
+ }
12374
+ function knownForeground(roles, provenance, hoverCandidate, palette) {
12375
+ const hover = planForegroundHover({
12376
+ restingToken: roles.link,
12377
+ candidate: canonicalHoverToken(hoverCandidate, palette),
12378
+ palette,
12379
+ backdrops: provenance.kind === "measured" ? [provenance.backdropHex] : null
12380
+ });
12046
12381
  return {
12047
12382
  kind: "known",
12383
+ provenance,
12048
12384
  roles: {
12049
- text,
12050
- heading: canonicalToken(candidates.heading, palette) ?? text,
12051
- link: canonicalToken(candidates.link, palette) ?? text,
12052
- supporting: canonicalToken(candidates.supporting, palette) ?? text
12053
- }
12385
+ ...roles,
12386
+ linkHover: hover.token
12387
+ },
12388
+ hoverDecoration: hover.decoration
12054
12389
  };
12055
12390
  }
12391
+ function canonicalHoverToken(reference, palette) {
12392
+ const token = parseThemeColorToken(reference);
12393
+ if (token) {
12394
+ const parts = parseColorTokenParts(token);
12395
+ if (parts.kind === "token" && resolveConcreteColorHex(parts.token, palette)) return token;
12396
+ }
12397
+ return canonicalToken(reference, palette);
12398
+ }
12056
12399
  function safeTokenOr(candidate, fallback, backgroundHex, palette) {
12057
12400
  return firstSafeToken([candidate], backgroundHex, palette) ?? fallback;
12058
12401
  }
@@ -14992,6 +15335,43 @@ const effectCompositionSchema = z.object({
14992
15335
  /** Effects applied on focus */
14993
15336
  focus: z.array(effectApplicationSchema).optional()
14994
15337
  });
15338
+ const policiesById = {
15339
+ "darken-background": "other",
15340
+ "lighten-background": "other",
15341
+ "fade-background": "other",
15342
+ "opacity-reduce": "other",
15343
+ "animated-gradient": "other",
15344
+ "background-on-hover": "paired-hover",
15345
+ "background-on-hover-alpha": "paired-hover",
15346
+ "border-glow": "other",
15347
+ "drop-shadow": "other",
15348
+ "inner-shadow": "other",
15349
+ "neumorphic-shadow": "other",
15350
+ "outer-glow": "other",
15351
+ "retro-3d-shadow": "other",
15352
+ "scale-up": "other",
15353
+ "scale-down": "other",
15354
+ lift: "other",
15355
+ "press-down": "other",
15356
+ pop: "other",
15357
+ "aurora-glow": "other",
15358
+ "cosmic-stardust": "other",
15359
+ "gradient-border-fill": "other",
15360
+ "animated-gradient-border-fill": "other",
15361
+ "border-bottom-grow": "other",
15362
+ "gradient-text": "other",
15363
+ "text-color-change": "text-colour",
15364
+ "border-color-change": "other",
15365
+ "sketchy-border": "other",
15366
+ "pulse-animation": "other",
15367
+ "nav-underline": "underline",
15368
+ "nav-frosted-base": "other",
15369
+ "nav-frosted-hover": "other",
15370
+ "nav-frosted-active": "other"
15371
+ };
15372
+ function navEffectPolicy(effectId) {
15373
+ return policiesById[effectId] ?? null;
15374
+ }
14995
15375
  //#endregion
14996
15376
  //#region ../theme-core/src/navigation/types.ts
14997
15377
  /**
@@ -15080,6 +15460,16 @@ const navLinkStyleSchema = z.object({
15080
15460
  /** Composable effects */
15081
15461
  effects: effectCompositionSchema.optional()
15082
15462
  });
15463
+ function navLinkHoverColorCandidate(style) {
15464
+ const effect = style?.effects?.hover?.find((item) => navEffectPolicy(item.effectId) === "text-colour");
15465
+ return parseThemeColorToken(effect?.options?.hoverColorToken ?? style?.hoverColorToken);
15466
+ }
15467
+ function navLinkOwnsHoverForeground(style) {
15468
+ return style?.effects?.hover?.some((effect) => navEffectPolicy(effect.effectId) === "paired-hover") ?? false;
15469
+ }
15470
+ function navLinkOwnsUnderline(style) {
15471
+ return style?.effects?.hover?.some((effect) => navEffectPolicy(effect.effectId) === "underline") ?? false;
15472
+ }
15083
15473
  //#endregion
15084
15474
  //#region ../theme-core/src/customCss/validation.ts
15085
15475
  /**
@@ -25527,6 +25917,14 @@ const blockDesignFallback = {
25527
25917
  };
25528
25918
  blockDesignFallback.sectionSurface, blockDesignFallback.contentFrame, blockDesignFallback.sectionHeight, blockDesignFallback.heroLegibility, blockDesignFallback.imageSurfaceTreatment, blockDesignFallback.imageSurfaceMotion, blockDesignFallback.tileTreatment, blockDesignFallback.eventListTreatment, blockDesignFallback.eyebrowTreatment, blockDesignFallback.accordionIconTreatment, blockDesignFallback.composition;
25529
25919
  //#endregion
25920
+ //#region ../theme-core/src/header/rootPaint.ts
25921
+ /** The nav container takes precedence when a floating header also has one. */
25922
+ function headerRootPaint(header) {
25923
+ const navContainerType = header?.navContainer?.type ?? "none";
25924
+ if (navContainerType === "glass" || navContainerType === "pill") return "contained-nav";
25925
+ return header?.variant === "floating" ? "overlay" : "own-surface";
25926
+ }
25927
+ //#endregion
25530
25928
  //#region ../theme-core/src/site-styles/siteChromeBackgrounds.ts
25531
25929
  const siteChromeBackgroundColorTokens = toSiteChromeBackgroundColorTokens(backgroundAppearanceColorTokenNames);
25532
25930
  const quickSiteChromeBackgroundColorTokens = toSiteChromeBackgroundColorTokens(backgroundAppearanceQuickColorTokenNames);
@@ -25706,6 +26104,259 @@ z.object(headerPreferencesShape).omit({
25706
26104
  structure: true
25707
26105
  }).strict();
25708
26106
  //#endregion
26107
+ //#region ../theme-core/src/navigation/presets.ts
26108
+ /**
26109
+ * Built-in nav link style presets
26110
+ *
26111
+ * Each preset uses composable effects to achieve its look.
26112
+ */
26113
+ const NAV_LINK_PRESETS = {
26114
+ /**
26115
+ * Minimal - subtle color change on hover
26116
+ */
26117
+ minimal: {
26118
+ name: "Minimal",
26119
+ typography: "body",
26120
+ fontWeight: "medium",
26121
+ textTransform: "none",
26122
+ italic: false,
26123
+ colorToken: "text",
26124
+ hoverColorToken: "primary",
26125
+ padding: "none",
26126
+ borderRadius: "none",
26127
+ effects: { hover: [{
26128
+ effectId: "text-color-change",
26129
+ options: { hoverColorToken: "primary" }
26130
+ }] }
26131
+ },
26132
+ /**
26133
+ * Underline - static underline appears on hover
26134
+ */
26135
+ underline: {
26136
+ name: "Underline",
26137
+ typography: "body",
26138
+ fontWeight: "medium",
26139
+ textTransform: "none",
26140
+ italic: false,
26141
+ colorToken: "text",
26142
+ padding: "none",
26143
+ borderRadius: "none",
26144
+ effects: { hover: [{
26145
+ effectId: "nav-underline",
26146
+ options: { style: "static" }
26147
+ }] }
26148
+ },
26149
+ /**
26150
+ * Underline Grow - animated underline grows from center on hover
26151
+ */
26152
+ "underline-grow": {
26153
+ name: "Underline Grow",
26154
+ typography: "body",
26155
+ fontWeight: "medium",
26156
+ textTransform: "none",
26157
+ italic: false,
26158
+ colorToken: "text",
26159
+ padding: "none",
26160
+ borderRadius: "none",
26161
+ effects: { hover: [{
26162
+ effectId: "nav-underline",
26163
+ options: { style: "grow" }
26164
+ }] }
26165
+ },
26166
+ /**
26167
+ * Capsule - pill-shaped background on hover
26168
+ */
26169
+ capsule: {
26170
+ name: "Capsule",
26171
+ typography: "body",
26172
+ fontWeight: "medium",
26173
+ textTransform: "none",
26174
+ italic: false,
26175
+ colorToken: "text",
26176
+ padding: "compact",
26177
+ borderRadius: "full",
26178
+ effects: {
26179
+ hover: [{
26180
+ effectId: "background-on-hover-alpha",
26181
+ options: {
26182
+ colorToken: "primary",
26183
+ opacity: 10
26184
+ }
26185
+ }],
26186
+ active: [{
26187
+ effectId: "background-on-hover-alpha",
26188
+ options: {
26189
+ colorToken: "primary",
26190
+ opacity: 15
26191
+ }
26192
+ }]
26193
+ }
26194
+ },
26195
+ /**
26196
+ * Solid - solid background color on hover
26197
+ */
26198
+ solid: {
26199
+ name: "Solid",
26200
+ typography: "body",
26201
+ fontWeight: "medium",
26202
+ textTransform: "none",
26203
+ italic: false,
26204
+ colorToken: "text",
26205
+ padding: "compact",
26206
+ borderRadius: "none",
26207
+ effects: {
26208
+ hover: [{
26209
+ effectId: "background-on-hover",
26210
+ options: {
26211
+ colorToken: "primary",
26212
+ textColorToken: "primaryForeground"
26213
+ }
26214
+ }],
26215
+ active: [{
26216
+ effectId: "background-on-hover",
26217
+ options: {
26218
+ colorToken: "primary",
26219
+ textColorToken: "primaryForeground"
26220
+ }
26221
+ }]
26222
+ }
26223
+ },
26224
+ /**
26225
+ * Scale - gentle scale-up on hover
26226
+ */
26227
+ scale: {
26228
+ name: "Scale",
26229
+ typography: "body",
26230
+ fontWeight: "medium",
26231
+ textTransform: "none",
26232
+ italic: false,
26233
+ colorToken: "text",
26234
+ padding: "none",
26235
+ borderRadius: "none",
26236
+ effects: { hover: [{
26237
+ effectId: "scale-up",
26238
+ options: { scale: 1.05 }
26239
+ }] }
26240
+ },
26241
+ /**
26242
+ * Frosted - semi-transparent glass-like background
26243
+ */
26244
+ frosted: {
26245
+ name: "Frosted",
26246
+ typography: "body",
26247
+ fontWeight: "medium",
26248
+ textTransform: "none",
26249
+ italic: false,
26250
+ colorToken: "text",
26251
+ padding: "compact",
26252
+ borderRadius: "md",
26253
+ effects: {
26254
+ base: [{ effectId: "nav-frosted-base" }],
26255
+ hover: [{ effectId: "nav-frosted-hover" }],
26256
+ active: [{ effectId: "nav-frosted-active" }]
26257
+ }
26258
+ }
26259
+ };
26260
+ /**
26261
+ * Get a nav link style preset by ID
26262
+ */
26263
+ function getNavLinkPreset(presetId) {
26264
+ return NAV_LINK_PRESETS[presetId];
26265
+ }
26266
+ Object.keys(NAV_LINK_PRESETS);
26267
+ //#endregion
26268
+ //#region ../theme-core/src/header/legacyNavLinkStyle.ts
26269
+ function buildLegacyHeaderNavLinkStyle(header, contrastTreatment, navTextSize) {
26270
+ const navStyle = header.navStyle ?? "minimal";
26271
+ const basePreset = getNavLinkPreset(navStyle);
26272
+ if (!basePreset) return null;
26273
+ const style = {
26274
+ ...basePreset,
26275
+ fontWeight: header.navWeight ?? basePreset.fontWeight,
26276
+ colorToken: (header.navColor ?? header.textColor)?.trim() || basePreset.colorToken,
26277
+ ...contrastTreatment ? { contrastTreatment } : {},
26278
+ ...navTextSize ? { textSize: navTextSize } : {}
26279
+ };
26280
+ if (header.navWeight === "bold" && navStyle === "solid") style.textTransform = "uppercase";
26281
+ applyLegacyGlassTreatment(style, header, navStyle);
26282
+ return style;
26283
+ }
26284
+ function applyLegacyGlassTreatment(style, header, navStyle) {
26285
+ if (header.navContainer?.type !== "glass" || navStyle !== "minimal") return;
26286
+ style.borderRadius = "full";
26287
+ style.effects = {
26288
+ ...style.effects,
26289
+ hover: glassStateEffects(10),
26290
+ active: glassStateEffects(18)
26291
+ };
26292
+ }
26293
+ function glassStateEffects(opacity) {
26294
+ return [{
26295
+ effectId: "background-on-hover-alpha",
26296
+ options: {
26297
+ colorToken: "neutral-50",
26298
+ opacity
26299
+ }
26300
+ }, {
26301
+ effectId: "text-color-change",
26302
+ options: { hoverColorToken: "neutral-50" }
26303
+ }];
26304
+ }
26305
+ //#endregion
26306
+ //#region ../theme-core/src/header/openingForegroundProjection.ts
26307
+ function readOpeningForegroundProjection(header) {
26308
+ return header?.__runtimeOpeningForeground ?? null;
26309
+ }
26310
+ //#endregion
26311
+ //#region ../theme-core/src/header/effectiveNavLinkStyle.ts
26312
+ function effectiveHeaderNavLinkStyle(header, contrastTreatment = null, navTextSize = null) {
26313
+ if (!header) return null;
26314
+ if (!header.navLinkStyle) return buildLegacyHeaderNavLinkStyle(header, contrastTreatment, navTextSize);
26315
+ return {
26316
+ ...header.navLinkStyle,
26317
+ ...contrastTreatment ? { contrastTreatment } : {},
26318
+ ...navTextSize ? { textSize: navTextSize } : {}
26319
+ };
26320
+ }
26321
+ function headerForegroundCandidates(header) {
26322
+ if (!header) return {};
26323
+ const style = effectiveHeaderNavLinkStyle(header);
26324
+ return {
26325
+ text: header.textColor ?? header.background?.textColor,
26326
+ link: style?.colorToken ?? header.navColor ?? header.textColor,
26327
+ linkHover: navLinkHoverColorCandidate(style)
26328
+ };
26329
+ }
26330
+ function headerLeafTextColor(header) {
26331
+ if (!header) return "text";
26332
+ return header.textColor ?? header.navColor ?? header.background?.textColor ?? header.navLinkStyle?.colorToken ?? "text";
26333
+ }
26334
+ /** Transparent chrome must reset the whole contract on its own root. */
26335
+ function transparentHeaderForegroundInput(header, palette) {
26336
+ const projection = readOpeningForegroundProjection(header);
26337
+ if (projection?.kind === "known") return surfaceForegroundInputFromResolved(projection, rgbColorValue);
26338
+ return authoredTransparentHeaderForegroundInput(header, palette);
26339
+ }
26340
+ function authoredTransparentHeaderForegroundInput(header, palette) {
26341
+ const text = headerLeafTextColor(header);
26342
+ const style = effectiveHeaderNavLinkStyle(header);
26343
+ const link = style?.colorToken ?? text;
26344
+ const restingToken = parseThemeColorToken(link) ?? parseThemeColorToken("text");
26345
+ if (!restingToken) throw new Error("Built-in text colour token is invalid");
26346
+ const hover = planForegroundHover({
26347
+ restingToken,
26348
+ candidate: navLinkOwnsHoverForeground(style) ? null : navLinkHoverColorCandidate(style),
26349
+ palette,
26350
+ backdrops: null
26351
+ });
26352
+ return {
26353
+ text: rgbColorValue(text),
26354
+ link: rgbColorValue(link),
26355
+ linkHover: rgbColorValue(hover.token),
26356
+ hoverDecoration: navLinkOwnsUnderline(style) ? "initial" : hover.decoration
26357
+ };
26358
+ }
26359
+ //#endregion
25709
26360
  //#region ../theme-core/src/site-styles/pageDesignAuthority.ts
25710
26361
  const nonEmptyStringSchema = z.string().min(1);
25711
26362
  const blockContentVersionIdSchema = nonEmptyStringSchema.transform(asBlockContentVersionId);
@@ -27697,6 +28348,28 @@ function createTransformRegistry(definitions) {
27697
28348
  return registry;
27698
28349
  }
27699
28350
  //#endregion
28351
+ //#region ../theme-core/src/footer/effectiveNavLinkStyle.ts
28352
+ function effectiveFooterNavLinkStyle(footer) {
28353
+ if (!footer) return null;
28354
+ if (footer.navLinkStyle) return footer.navLinkStyle;
28355
+ const basePreset = getNavLinkPreset(footer.navStyle ?? "minimal");
28356
+ if (!basePreset) return null;
28357
+ return {
28358
+ ...basePreset,
28359
+ fontWeight: footer.navWeight ?? basePreset.fontWeight,
28360
+ colorToken: footer.navColor?.trim() || basePreset.colorToken
28361
+ };
28362
+ }
28363
+ function footerForegroundCandidates(footer, proseHoverCandidate) {
28364
+ if (!footer) return {};
28365
+ const style = effectiveFooterNavLinkStyle(footer);
28366
+ return {
28367
+ text: footer.background?.textColor,
28368
+ link: style?.colorToken ?? footer.navColor ?? footer.background?.textColor,
28369
+ linkHover: navLinkOwnsHoverForeground(style) ? proseHoverCandidate : navLinkHoverColorCandidate(style)
28370
+ };
28371
+ }
28372
+ //#endregion
27700
28373
  //#region ../blocks/src/system/fields/backgroundContent.ts
27701
28374
  function parseBackgroundContent(value) {
27702
28375
  const result = boxBackgroundSchema.safeParse(value);
@@ -27714,33 +28387,28 @@ function resolveBackgroundColorValue(value, context) {
27714
28387
  //#endregion
27715
28388
  //#region ../blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.ts
27716
28389
  const contextualButtonStylesCache = /* @__PURE__ */ new WeakMap();
27717
- function resolveHeaderLeafTextColor(header) {
27718
- return header?.textColor ?? header?.navColor ?? header?.background?.textColor ?? header?.navLinkStyle?.colorToken ?? "text";
27719
- }
27720
28390
  function resolveHeaderRootForeground(header, palette, isTransparent) {
27721
- if (isTransparent) return { kind: "unknown" };
28391
+ if (isTransparent) return readOpeningForegroundProjection(header) ?? { kind: "unknown" };
27722
28392
  const background = header?.background;
27723
28393
  return resolveSurfaceForeground(background ?? {
27724
28394
  type: "color",
27725
28395
  color: "surface"
27726
- }, palette, {
27727
- text: header?.textColor ?? background?.textColor,
27728
- link: header?.navLinkStyle?.colorToken ?? header?.navColor ?? header?.textColor
27729
- });
28396
+ }, palette, headerForegroundCandidates(header));
28397
+ }
28398
+ function resolveFooterRootForeground(footer, palette, proseHoverCandidate) {
28399
+ return resolveSurfaceForeground(footer?.background ?? {
28400
+ type: "color",
28401
+ color: "surface"
28402
+ }, palette, footerForegroundCandidates(footer, proseHoverCandidate), { compositeBase: "background" });
27730
28403
  }
27731
28404
  function resolveSurfaceForegroundStyles(value, context, options) {
27732
28405
  const input = parseBackgroundContent(value);
27733
- const foreground = input ? resolveSurfaceForeground(input, context.theme.palette, {}, { compositeBase: options?.fallbackToken }) : { kind: "unknown" };
28406
+ const foreground = input ? resolveSurfaceForeground(input, context.theme.palette, { linkHover: context.proseHoverCandidate }, { compositeBase: options?.fallbackToken }) : { kind: "unknown" };
27734
28407
  const buttonStyles = resolveContextualButtonStyles(input, foreground, context, options);
27735
28408
  if (foreground.kind === "unknown") return buttonStyles;
27736
28409
  return {
27737
28410
  ...buttonStyles,
27738
- ...surfaceForegroundStyle({
27739
- text: resolveBackgroundColorValue(foreground.roles.text, context),
27740
- heading: resolveBackgroundColorValue(foreground.roles.heading, context),
27741
- link: resolveBackgroundColorValue(foreground.roles.link, context),
27742
- supporting: resolveBackgroundColorValue(foreground.roles.supporting, context)
27743
- })
28411
+ ...surfaceForegroundStyle(surfaceForegroundInputFromResolved(foreground, (token) => resolveBackgroundColorValue(token, context)))
27744
28412
  };
27745
28413
  }
27746
28414
  function resolveContextualButtonStyles(background, foreground, context, options) {
@@ -33589,10 +34257,7 @@ function resolveBackgroundVisualStyles(backgroundColor, defaultToken = "surface"
33589
34257
  };
33590
34258
  }
33591
34259
  function resolveHeaderVisualStyles(header) {
33592
- const navContainerType = header?.navContainer?.type ?? "none";
33593
- const hasContainedNav = navContainerType === "glass" || navContainerType === "pill";
33594
- const hasOverlayVariant = header?.variant === "floating";
33595
- if (hasContainedNav || hasOverlayVariant) return {
34260
+ if (headerRootPaint(header) !== "own-surface") return {
33596
34261
  backgroundToken: "transparent",
33597
34262
  isTransparent: true
33598
34263
  };
@@ -33603,23 +34268,7 @@ function resolveHeaderVisualStyles(header) {
33603
34268
  }
33604
34269
  function resolvedForegroundStyle(foreground) {
33605
34270
  if (foreground.kind === "unknown") return void 0;
33606
- const { roles } = foreground;
33607
- return surfaceForegroundStyle({
33608
- text: rgbColorValue(roles.text),
33609
- heading: rgbColorValue(roles.heading),
33610
- link: rgbColorValue(roles.link),
33611
- supporting: rgbColorValue(roles.supporting)
33612
- });
33613
- }
33614
- function resolveFooterRootForeground(footer, palette) {
33615
- const background = footer?.background;
33616
- return resolveSurfaceForeground(background ?? {
33617
- type: "color",
33618
- color: "surface"
33619
- }, palette, {
33620
- text: background?.textColor,
33621
- link: footer?.navLinkStyle?.colorToken ?? footer?.navColor ?? background?.textColor
33622
- });
34271
+ return surfaceForegroundStyle(surfaceForegroundInputFromResolved(foreground, rgbColorValue));
33623
34272
  }
33624
34273
  function footerBottomBarBorderWidthStyle(width) {
33625
34274
  if (!width) return void 0;
@@ -33646,8 +34295,7 @@ const headerRootClassTransform = {
33646
34295
  const placement = planSiteChromePlacement(parseHeaderPositioning(content.positioning));
33647
34296
  const header = asPartialObject(value);
33648
34297
  const visuals = resolveHeaderVisualStyles(header);
33649
- const navContainerType = header?.navContainer?.type ?? "none";
33650
- const hasContainedNav = navContainerType === "glass" || navContainerType === "pill";
34298
+ const hasContainedNav = headerRootPaint(header) === "contained-nav";
33651
34299
  const backgroundClass = visuals.isTransparent || hasContainedNav ? "rb-bg-transparent" : null;
33652
34300
  const classes = [config.base, backgroundClass];
33653
34301
  if (!hasContainedNav) {
@@ -33690,7 +34338,7 @@ const headerRootStyleTransform = {
33690
34338
  run: (value, _options, context) => {
33691
34339
  const header = asPartialObject(value);
33692
34340
  const visuals = resolveHeaderVisualStyles(header);
33693
- return mergeStyles(resolvedForegroundStyle(resolveHeaderRootForeground(header, context.theme.palette, visuals.isTransparent)) ?? { color: rgbColorValue(resolveHeaderLeafTextColor(header)) }, borderColorStyle(header?.border?.colorToken ?? "border"));
34341
+ 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"));
33694
34342
  }
33695
34343
  };
33696
34344
  const headerSectionBackgroundTransform = {
@@ -33698,9 +34346,7 @@ const headerSectionBackgroundTransform = {
33698
34346
  kind: "string",
33699
34347
  summary: "Resolve the inner site-header section background token",
33700
34348
  run: (value) => {
33701
- const header = asPartialObject(value);
33702
- const navContainerType = header?.navContainer?.type ?? "none";
33703
- return header?.variant === "floating" || navContainerType === "glass" || navContainerType === "pill" ? "raw:transparent" : "background";
34349
+ return headerRootPaint(asPartialObject(value)) !== "own-surface" ? "raw:transparent" : "background";
33704
34350
  }
33705
34351
  };
33706
34352
  const footerRootStyleTransform = {
@@ -33718,7 +34364,7 @@ const footerRootStyleTransform = {
33718
34364
  styleParts.push(backgroundColorStyle(token));
33719
34365
  }
33720
34366
  }
33721
- styleParts.push(resolvedForegroundStyle(resolveFooterRootForeground(footer, context.theme.palette)));
34367
+ styleParts.push(resolvedForegroundStyle(resolveFooterRootForeground(footer, context.theme.palette, context.proseHoverCandidate)));
33722
34368
  styleParts.push(borderColorStyle("border"));
33723
34369
  return mergeStyles(...styleParts);
33724
34370
  }
@@ -33780,22 +34426,28 @@ const footerBottomBarStyleTransform = {
33780
34426
  run: (value, _options, context) => {
33781
34427
  const footer = asPartialObject(value);
33782
34428
  const bottomBar = footer?.bottomBar;
33783
- const styleParts = [];
33784
- const background = bottomBar?.background;
33785
- if (background?.type === "color") styleParts.push(backgroundColorStyle(background.color ?? "surface"));
33786
- styleParts.push(borderColorStyle(bottomBar?.borderTop?.colorToken ?? "border"), footerBottomBarBorderWidthStyle(bottomBar?.borderTop?.width));
33787
- const foreground = resolveSurfaceForeground(background?.type === "color" ? background : {
33788
- type: "color",
33789
- color: "transparent"
33790
- }, context.theme.palette, {
33791
- text: bottomBar?.textColor,
33792
- link: footer?.bottomTextLinkStyle?.colorToken ?? bottomBar?.textColor
33793
- });
33794
- if (background?.type === "color") styleParts.push(resolvedForegroundStyle(foreground));
33795
- else if (bottomBar?.textColor) styleParts.push(textColorStyle(bottomBar.textColor));
33796
- return mergeStyles(...styleParts);
34429
+ 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));
33797
34430
  }
33798
34431
  };
34432
+ function footerBottomBarForegroundStyle(footer, palette) {
34433
+ if (!footer?.bottomBar) return void 0;
34434
+ const bar = footer.bottomBar;
34435
+ if (bar.background?.type !== "color") return backgroundlessBottomBarForegroundStyle(footer);
34436
+ return resolvedForegroundStyle(resolveSurfaceForeground(bar.background, palette, {
34437
+ text: bar.textColor,
34438
+ link: footer.bottomTextLinkStyle?.colorToken ?? bar.textColor,
34439
+ linkHover: footer.bottomTextLinkStyle?.hoverColorToken
34440
+ }, { compositeBase: measuredFooterBackdrop(footer, palette) }));
34441
+ }
34442
+ function backgroundlessBottomBarForegroundStyle(footer) {
34443
+ if (footer.background?.contentOwner === "site-chrome-editor") return;
34444
+ const textColor = footer.bottomBar?.textColor;
34445
+ return textColor ? textColorStyle(textColor) : void 0;
34446
+ }
34447
+ function measuredFooterBackdrop(footer, palette) {
34448
+ const foreground = resolveFooterRootForeground(footer, palette);
34449
+ return foreground.kind === "known" && foreground.provenance.kind === "measured" ? foreground.provenance.backdropHex : null;
34450
+ }
33799
34451
  const footerSplitMainClassTransform = {
33800
34452
  id: "layout.footerSplitMainClass",
33801
34453
  kind: "string",
@@ -33891,7 +34543,7 @@ function chromeSurfaceTextToken(surface, theme, palette) {
33891
34543
  case "header-root": {
33892
34544
  const header = theme.header;
33893
34545
  const foreground = resolveHeaderRootForeground(header, palette, resolveHeaderVisualStyles(header).isTransparent);
33894
- return foreground.kind === "known" ? foreground.roles.text : resolveHeaderLeafTextColor(header);
34546
+ return foreground.kind === "known" ? foreground.roles.text : headerLeafTextColor(header);
33895
34547
  }
33896
34548
  case "header-mobile-panel": return theme.header?.dropdownStyle?.textColor ?? "text";
33897
34549
  case "footer-root": {
@@ -35967,13 +36619,19 @@ const bookingDescription = richText({}, bind("content.description"), when("conte
35967
36619
  * that hydration never rewrites.
35968
36620
  */
35969
36621
  const bookingWizard = bookingForm(withApiBindings({
36622
+ demoEmailSuppressed: { $bind: {
36623
+ from: "$root.demoEmailSuppressed",
36624
+ fallback: false
36625
+ } },
35970
36626
  portalToken: { $bind: {
35971
36627
  from: "$root.portalToken",
35972
36628
  fallback: null
35973
36629
  } },
35974
36630
  formId: { $bind: { from: "content.formId" } },
35975
36631
  form: { $bind: { from: "data.form" } },
35976
- services: { $bind: { from: "data.services" } }
36632
+ services: { $bind: { from: "data.services" } },
36633
+ mailingList: { $bind: { from: "$root.mailingList" } },
36634
+ siteName: { $bind: { from: "$root.siteName" } }
35977
36635
  }));
35978
36636
  /** Both variants sit in the same section shell; only the inner layout differs. */
35979
36637
  function bookingSection(children) {
@@ -36691,7 +37349,6 @@ const publicEventBaseSchema = z.object({
36691
37349
  description: z.string().nullable(),
36692
37350
  content: z.object({ body: RichTextDocSchema.nullable().optional() }).optional(),
36693
37351
  presentation: z.object({
36694
- cardTitleOverride: z.string().nullable().optional(),
36695
37352
  summary: z.string().nullable().optional(),
36696
37353
  image: mediaSchema.nullable().optional()
36697
37354
  }).optional(),
@@ -36724,6 +37381,7 @@ const publicEventBaseSchema = z.object({
36724
37381
  "archived"
36725
37382
  ]).optional(),
36726
37383
  timeZone: z.string(),
37384
+ siteTimeZone: z.string().optional(),
36727
37385
  pricing: publicEventPricingSchema,
36728
37386
  paymentTerms: blockBookingPaymentTermsSchema,
36729
37387
  cancellationPolicy: z.object({ refunds: z.object({
@@ -37387,6 +38045,7 @@ const EVENT_REGISTRATION_SHELL_STEP_LABELS = [
37387
38045
  ];
37388
38046
  const eventRegistrationPublicEventSchema = z.preprocess(normalizeEventRegistrationEventInput, publicEventSchema);
37389
38047
  const eventRegistrationHydrationSchemaShape = {
38048
+ demoEmailSuppressed: z.boolean().optional(),
37390
38049
  occurrenceContext: occurrenceContextSchema.optional(),
37391
38050
  subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
37392
38051
  maxTickets: z.string().optional(),
@@ -37398,7 +38057,13 @@ const eventRegistrationHydrationSchemaShape = {
37398
38057
  spamProtectionEnabled: z.boolean().optional(),
37399
38058
  supportEmail: z.string().optional(),
37400
38059
  sitePasses: publicPassProductCollectionSchema.nullable().optional(),
37401
- siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
38060
+ siteMemberships: publicMembershipProductCollectionSchema.nullable().optional(),
38061
+ mailingList: z.unknown().transform((value) => {
38062
+ if (value === void 0) return void 0;
38063
+ const parsed = parseMailingListRuntimeContext(value);
38064
+ return parsed.ok ? parsed.value : void 0;
38065
+ }),
38066
+ siteName: z.string().optional()
37402
38067
  };
37403
38068
  const eventRegistrationEventSourceSchema = z.discriminatedUnion("kind", [z.object({
37404
38069
  kind: z.literal("loaded"),
@@ -37561,6 +38226,7 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
37561
38226
  ...eventSource,
37562
38227
  events: [...scopedSourceEvents]
37563
38228
  } : eventSource,
38229
+ demoEmailSuppressed: source.demoEmailSuppressed,
37564
38230
  maxTickets: source.maxTickets ?? void 0,
37565
38231
  showVenue: source.showVenue,
37566
38232
  showCapacity: source.showCapacity,
@@ -37570,7 +38236,9 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
37570
38236
  spamProtectionEnabled: source.spamProtectionEnabled,
37571
38237
  supportEmail: source.supportEmail,
37572
38238
  sitePasses: source.sitePasses ?? null,
37573
- siteMemberships: source.siteMemberships ?? null
38239
+ siteMemberships: source.siteMemberships ?? null,
38240
+ mailingList: source.mailingList,
38241
+ siteName: source.siteName
37574
38242
  }
37575
38243
  };
37576
38244
  }
@@ -37687,8 +38355,8 @@ const eventRegistrationBlockDefinition = {
37687
38355
  description: "Message shown after successful registration",
37688
38356
  required: false,
37689
38357
  multiline: true,
37690
- defaultValue: "Thank you for registering! Check your email for confirmation details.",
37691
- maxLength: 500
38358
+ maxLength: 500,
38359
+ ui: { placeholder: "Thank you for registering! Check your email for confirmation details." }
37692
38360
  },
37693
38361
  {
37694
38362
  id: "buttonText",
@@ -37709,6 +38377,10 @@ const eventRegistrationBlockDefinition = {
37709
38377
  text({ as: "h2" }, bind("content.heading"), when("content.heading")),
37710
38378
  richText({ className: "rb-prose rb-max-w-none" }, bind("content.description"), when("content.description")),
37711
38379
  eventRegistration(withApiBindings({
38380
+ demoEmailSuppressed: { $bind: {
38381
+ from: "$root.demoEmailSuppressed",
38382
+ fallback: false
38383
+ } },
37712
38384
  readAuthority: { $bind: { from: "$root.readAuthority" } },
37713
38385
  occurrenceContext: { $bind: { from: "$root.occurrenceContext" } },
37714
38386
  subject: { $bind: { from: "$root.subject" } },
@@ -37738,6 +38410,8 @@ const eventRegistrationBlockDefinition = {
37738
38410
  events: { $bind: { from: "data.events" } },
37739
38411
  wholeSeriesRunEvents: { $bind: { from: "data.wholeSeriesRunEvents" } },
37740
38412
  loaderFailures: { $bind: { from: "$root.loaderFailures" } },
38413
+ mailingList: { $bind: { from: "$root.mailingList" } },
38414
+ siteName: { $bind: { from: "$root.siteName" } },
37741
38415
  sitePasses: { $bind: { from: "data.sitePasses" } },
37742
38416
  siteMemberships: { $bind: { from: "data.siteMemberships" } },
37743
38417
  stage: { $bind: {
@@ -43160,6 +43834,7 @@ const shopSourceSchema = z.object({
43160
43834
  memberships: z.array(publicMembershipProductSchema).nullable().optional(),
43161
43835
  products: z.array(publicProductSchema).nullable().optional(),
43162
43836
  siteId: z.string().optional(),
43837
+ demoEmailSuppressed: z.boolean().optional(),
43163
43838
  apiBaseUrl: z.string().optional(),
43164
43839
  readAuthority: browserReadAuthoritySchema.optional(),
43165
43840
  stage: previewStageSchema.optional()
@@ -43279,7 +43954,8 @@ const checkoutDisplaySchema = z.object({
43279
43954
  const passesMembershipsHydrationSchema = z.object({
43280
43955
  memberships: z.array(publicMembershipProductSchema),
43281
43956
  passPurchaseMode: z.enum(["add_to_cart", "buy_now"]),
43282
- buttonVariant: blockButtonRoleSchema
43957
+ buttonVariant: blockButtonRoleSchema,
43958
+ demoEmailSuppressed: z.boolean().optional()
43283
43959
  });
43284
43960
  const productListHydrationSchema = z.object({
43285
43961
  products: z.array(publicProductSchema),
@@ -43301,7 +43977,8 @@ const cartHydrationSchema = z.object({
43301
43977
  });
43302
43978
  const checkoutHydrationSchema = z.object({
43303
43979
  emptyStateText: z.string(),
43304
- submitButtonText: z.string()
43980
+ submitButtonText: z.string(),
43981
+ demoEmailSuppressed: z.boolean().optional()
43305
43982
  });
43306
43983
  const passesMembershipsRenderSchema = z.object({
43307
43984
  display: passesMembershipsDisplaySchema,
@@ -43360,7 +44037,8 @@ const shopBlockRuntime = defineProgressiveBlockRuntime({
43360
44037
  hydration: {
43361
44038
  memberships: source.showMemberships === false ? [] : source.memberships ?? [],
43362
44039
  passPurchaseMode,
43363
- buttonVariant: source.buttonVariant ?? "primary"
44040
+ buttonVariant: source.buttonVariant ?? "primary",
44041
+ demoEmailSuppressed: source.demoEmailSuppressed
43364
44042
  }
43365
44043
  };
43366
44044
  }
@@ -43453,7 +44131,8 @@ const checkoutBlockRuntime = defineClientOwnedBlockRuntime({
43453
44131
  }),
43454
44132
  hydration: {
43455
44133
  emptyStateText: source.emptyStateText ?? "Add something to your cart to continue.",
43456
- submitButtonText: source.submitButtonText ?? "Checkout"
44134
+ submitButtonText: source.submitButtonText ?? "Checkout",
44135
+ demoEmailSuppressed: source.demoEmailSuppressed
43457
44136
  }
43458
44137
  })
43459
44138
  });
@@ -43671,6 +44350,10 @@ const shopBlockDefinition = {
43671
44350
  spacing: "spacious",
43672
44351
  children: sectionContainer([shop(withApiBindings({
43673
44352
  readAuthority: { $bind: { from: "$root.readAuthority" } },
44353
+ demoEmailSuppressed: { $bind: {
44354
+ from: "$root.demoEmailSuppressed",
44355
+ fallback: false
44356
+ } },
43674
44357
  mode: "passes-memberships",
43675
44358
  showPasses: { $bind: {
43676
44359
  from: "content.showPasses",
@@ -44213,6 +44896,10 @@ const checkoutBlockDefinition = {
44213
44896
  baseClass: "",
44214
44897
  spacing: "spacious",
44215
44898
  children: sectionContainer([checkout(withApiBindings({
44899
+ demoEmailSuppressed: { $bind: {
44900
+ from: "$root.demoEmailSuppressed",
44901
+ fallback: false
44902
+ } },
44216
44903
  readAuthority: { $bind: { from: "$root.readAuthority" } },
44217
44904
  mode: "checkout",
44218
44905
  heading: { $bind: {
@@ -44903,18 +45590,11 @@ const newsletterSignupManifest = createBlockManifest({
44903
45590
  ],
44904
45591
  icon: "Mail"
44905
45592
  });
45593
+ const newsletterPublicFieldIds = [...(newsletterSignupManifest.fields ?? []).map((field) => field.id), "_containerStyles"];
44906
45594
  function sanitizeNewsletterSignupPublicContent(content) {
44907
45595
  if (typeof content !== "object" || content === null || Array.isArray(content)) return content;
44908
45596
  const value = content;
44909
- return {
44910
- title: value.title,
44911
- subtitle: value.subtitle,
44912
- targeting: value.targeting,
44913
- buttonVariant: value.buttonVariant,
44914
- mailingListSource: value.mailingListSource,
44915
- mailingListSourceToken: value.mailingListSourceToken,
44916
- _sectionStyles: value._sectionStyles
44917
- };
45597
+ return Object.fromEntries(newsletterPublicFieldIds.map((id) => [id, value[id]]));
44918
45598
  }
44919
45599
  const newsletterSignupBlockDefinition = {
44920
45600
  manifest: newsletterSignupManifest,
@@ -49925,17 +50605,6 @@ const navigationLinkInputSchemaOptions = [
49925
50605
  ];
49926
50606
  z.discriminatedUnion("kind", navigationLinkInputSchemaOptions);
49927
50607
  //#endregion
49928
- //#region ../blocks/src/pageRenderAdmission.ts
49929
- /** Pair a published version with the content it authorises at the render boundary. */
49930
- function readPublishedBlockPlacement(id, content) {
49931
- if (id == null && content == null) return null;
49932
- if (id == null || content == null) throw new Error("Published block placement requires both an ID and content");
49933
- return {
49934
- id,
49935
- content
49936
- };
49937
- }
49938
- //#endregion
49939
50608
  //#region ../api/src/sdkConfig/contracts.ts
49940
50609
  /**
49941
50610
  * Canonical SDK config Zod contracts.
@@ -51401,9 +52070,17 @@ function readBlockContentId(value, name) {
51401
52070
  function readTransportedBlockIdentity(block, kind, stage) {
51402
52071
  return {
51403
52072
  draftContentId: readBlockContentId(block.draftContentId, "draft content id"),
51404
- publishedPlacement: stage === "preview" ? readPublishedBlockPlacement(readBlockContentId(block.publishedContentId, "published content id"), sanitizeNullableSdkRuntimeBlockContent(kind, readNestedContentRecord(block.publishedContent))) : null
52073
+ publishedPlacement: stage === "preview" ? readSdkPreviewPublishedPlacement(block, kind) : null
51405
52074
  };
51406
52075
  }
52076
+ /** Pair SDK preview publication data whether it is transported or already admitted. */
52077
+ function readSdkPreviewPublishedPlacement(block, kind) {
52078
+ if (block.publishedPlacement !== void 0 && block.publishedPlacement !== null) {
52079
+ if (!isRecord$1(block.publishedPlacement)) throw new Error("Invalid published placement in page");
52080
+ return readPublishedBlockPlacement(readBlockContentId(block.publishedPlacement.id, "published content id"), sanitizeNullableSdkRuntimeBlockContent(kind, readContentRecord(block.publishedPlacement.content) ?? null));
52081
+ }
52082
+ return readPublishedBlockPlacement(readBlockContentId(block.publishedContentId, "published content id"), sanitizeNullableSdkRuntimeBlockContent(kind, readSdkPublishedContentRecord(block.publishedContent)));
52083
+ }
51407
52084
  function convertPageResponseBlock(block, stage) {
51408
52085
  if (!isRecord$1(block)) throw new Error("Invalid block format in page API response");
51409
52086
  const header = readTransportedBlockHeader(block);
@@ -51512,6 +52189,10 @@ function readNestedContentRecord(value) {
51512
52189
  if (!isRecord$1(value)) return null;
51513
52190
  return readContentRecord(value.data) ?? null;
51514
52191
  }
52192
+ function readSdkPublishedContentRecord(value) {
52193
+ if (!isRecord$1(value)) return null;
52194
+ return "data" in value ? readContentRecord(value.data) ?? null : value;
52195
+ }
51515
52196
  function sanitizeSdkRuntimeBlockContent(blockKind, content) {
51516
52197
  if (blockKind !== "block.newsletter-signup") return content;
51517
52198
  const sanitized = sanitizeNewsletterSignupPublicContent(content);
@@ -51603,15 +52284,14 @@ async function loadPageWithDeps(deps, params) {
51603
52284
  const { client, siteId, path, pageId, preview = false, dataLoaderOverrides, searchParams, forceSite } = params;
51604
52285
  const [site, pageResponse] = await Promise.all([client.getSite({
51605
52286
  id: siteId,
52287
+ currentPath: path,
51606
52288
  ...forceSite ? { force: true } : {}
51607
52289
  }), client.getPage({
51608
52290
  siteId,
51609
52291
  path,
51610
52292
  preview
51611
52293
  })]);
51612
- if ("entry" in pageResponse) throw new Error("This path resolves to a content entry, not a page. Use loadContent() instead, which handles both pages and entries. For entries, loadContent() returns the raw entry data for custom rendering.");
51613
- if ("pageSurface" in pageResponse) throw new Error("This path resolves to a page surface, not a page. Use loadContent() instead, which handles pages, entries, and page surfaces.");
51614
- const { page: pageData } = pageResponse;
52294
+ const pageData = requirePageRecord(pageResponse);
51615
52295
  const support = buildSiteRenderSupport(site, collectMediaAssetSidecar(pageResponse.mediaAssets));
51616
52296
  const previewStage = preview ? "preview" : "published";
51617
52297
  const pageOutline = buildRenderablePageOutline({
@@ -51641,8 +52321,11 @@ async function loadPageWithDeps(deps, params) {
51641
52321
  theme: requireSdkTheme(support.theme, siteId),
51642
52322
  sdkConfig: support.sdkConfig,
51643
52323
  siteId,
52324
+ dataContext: {
52325
+ siteName: support.site.title,
52326
+ previewStage
52327
+ },
51644
52328
  resolvedData,
51645
- dataContext: { previewStage },
51646
52329
  bookingOfferingPresets: support.bookingOfferingPresets,
51647
52330
  mailingList: support.mailingList,
51648
52331
  bookingTimeZone: support.bookingTimeZone,
@@ -51654,6 +52337,11 @@ async function loadPageWithDeps(deps, params) {
51654
52337
  entriesByIdentifier: support.entriesByIdentifier
51655
52338
  };
51656
52339
  }
52340
+ function requirePageRecord(response) {
52341
+ if ("entry" in response) throw new Error("This path resolves to a content entry, not a page. Use loadContent() instead, which handles both pages and entries. For entries, loadContent() returns the raw entry data for custom rendering.");
52342
+ if ("pageSurface" in response) throw new Error("This path resolves to a page surface, not a page. Use loadContent() instead, which handles pages, entries, and page surfaces.");
52343
+ return response.page;
52344
+ }
51657
52345
  //#endregion
51658
52346
  //#region ../content-model/src/entry-slots/types.ts
51659
52347
  function ok(value) {
@@ -52077,6 +52765,7 @@ function resolveTemplateBlock(block, bindingContext, customBlocks) {
52077
52765
  id: block.id,
52078
52766
  kind: block.blockKind,
52079
52767
  purpose: block.scope === "template" ? "template-layout" : "entry-content",
52768
+ publishedPlacement: null,
52080
52769
  ...isRecord(block.bindings) ? { bindings: block.bindings } : {}
52081
52770
  };
52082
52771
  const manifest = resolveSdkBlockManifest(block.blockKind, customBlocks);
@@ -52242,6 +52931,7 @@ async function loadContentWithDeps(deps, params) {
52242
52931
  const { client, siteId, path, preview = false, forceSite, dataLoaderOverrides, searchParams } = params;
52243
52932
  const [siteResult, contentResult] = await Promise.allSettled([client.getSite({
52244
52933
  id: siteId,
52934
+ currentPath: path,
52245
52935
  ...forceSite ? { force: true } : {}
52246
52936
  }), client.getPage({
52247
52937
  siteId,