@riverbankcms/sdk 0.145.0 → 0.147.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 (254) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/{PreviewEditorSidebar-O-V6Pl5a.mjs → PreviewEditorSidebar-DtpB3_sS.mjs} +51 -33
  3. package/dist/{PreviewEditorUI-1UlX_9cw.mjs → PreviewEditorUI-DxTLgaHo.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BxGwdOCV.mjs → PreviewQueryProvider-Dd4dxOiU.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-DYbA_4iv.mjs → SdkPreviewModeRuntime-DMMNCngt.mjs} +311 -186
  6. package/dist/{SiteChromeCustomizeContext-CNTKQ9nx.mjs → SiteChromeCustomizeContext-DQXZXiqS.mjs} +3808 -2395
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +1122 -0
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +102 -0
  9. package/dist/_dts/api/src/accountApi.d.ts +5 -5
  10. package/dist/_dts/api/src/bookingConfig.d.ts +24 -1
  11. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +11 -26
  12. package/dist/_dts/api/src/bookingManagementEventEndpointTypes.d.ts +45 -1
  13. package/dist/_dts/api/src/bookingOperations.d.ts +2 -44
  14. package/dist/_dts/api/src/bookingPeople.d.ts +92 -0
  15. package/dist/_dts/api/src/bookingPeopleEndpointDefinitions.d.ts +38 -0
  16. package/dist/_dts/api/src/bookingRecords.d.ts +11 -49
  17. package/dist/_dts/api/src/bookingSettingsSections.d.ts +1 -1
  18. package/dist/_dts/api/src/bookings.d.ts +1 -0
  19. package/dist/_dts/api/src/clientErrorReporting.d.ts +50 -0
  20. package/dist/_dts/api/src/communications.d.ts +20 -4
  21. package/dist/_dts/api/src/contentRuntime.d.ts +3 -7
  22. package/dist/_dts/api/src/endpoints.d.ts +816 -655
  23. package/dist/_dts/api/src/event-visibility.d.ts +20 -0
  24. package/dist/_dts/api/src/eventManagementContracts.d.ts +72 -4
  25. package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +24 -0
  26. package/dist/_dts/api/src/eventPageWords.d.ts +19 -0
  27. package/dist/_dts/api/src/eventSeriesRegistrationEndpointDefinitions.d.ts +14 -0
  28. package/dist/_dts/api/src/index.d.ts +9 -2
  29. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  30. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  31. package/dist/_dts/api/src/launchReadiness.d.ts +19 -6
  32. package/dist/_dts/api/src/launchRequirementPriority.d.ts +3 -0
  33. package/dist/_dts/api/src/mailingListIntegration.d.ts +6 -0
  34. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +1 -1
  35. package/dist/_dts/api/src/newsletterCampaignCommandEndpoints.d.ts +13 -0
  36. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +57 -0
  37. package/dist/_dts/api/src/occurrenceScheduling.d.ts +29 -0
  38. package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +44 -0
  39. package/dist/_dts/api/src/participantMessaging.d.ts +11 -1
  40. package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +48 -0
  41. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +7 -0
  42. package/dist/_dts/api/src/sdk-event-upsert.d.ts +55 -1
  43. package/dist/_dts/api/src/sdkContracts.d.ts +3 -42
  44. package/dist/_dts/api/src/sdkCourseBooking.d.ts +30 -0
  45. package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +76 -0
  46. package/dist/_dts/api/src/sdkEventLifecycle.d.ts +37 -0
  47. package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +18 -0
  48. package/dist/_dts/api/src/sdkPageDesign.d.ts +388 -0
  49. package/dist/_dts/api/src/sdkPageDesignEndpointDefinitions.d.ts +22 -0
  50. package/dist/_dts/api/src/sdkPullEventContracts.d.ts +46 -0
  51. package/dist/_dts/api/src/siteAddressEndpoints.d.ts +29 -0
  52. package/dist/_dts/api/src/siteLifecycleEndpoints.d.ts +61 -0
  53. package/dist/_dts/api/src/siteManagementEndpointDefinitions.d.ts +49 -0
  54. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +6 -49
  55. package/dist/_dts/api/src/siteOnboarding.d.ts +72 -18
  56. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -1
  57. package/dist/_dts/api/src/types.d.ts +7 -1
  58. package/dist/_dts/api/src/wholeSeriesRuns.d.ts +14 -0
  59. package/dist/_dts/blocks/src/PageRenderer.d.ts +3 -4
  60. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +8 -0
  61. package/dist/_dts/blocks/src/index.d.ts +2 -0
  62. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +29 -1
  63. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +5 -1
  64. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +27 -5
  65. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +14 -1
  66. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +4 -1
  67. package/dist/_dts/blocks/src/system/icons/social.d.ts +1 -1
  68. package/dist/_dts/blocks/src/system/registry.d.ts +1 -1
  69. package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +4 -0
  70. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +12 -0
  71. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +12 -0
  72. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +6 -0
  73. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +8 -0
  74. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +2 -0
  75. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.completion.d.ts +9 -0
  76. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +9 -0
  77. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +19 -0
  78. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-choice.d.ts +5 -0
  79. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-note.d.ts +3 -0
  80. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-state.d.ts +9 -0
  81. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.reserved-fields.d.ts +1 -1
  82. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.server.d.ts +1 -1
  83. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +2 -0
  84. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-handler.d.ts +8 -0
  85. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-success.d.ts +9 -0
  86. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +3 -0
  87. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/AttendeeDetailsStep.d.ts +3 -0
  88. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SuccessStep.d.ts +3 -0
  89. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +3 -0
  90. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +1 -0
  91. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/sessionStorage.d.ts +2 -0
  92. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +6 -0
  93. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +3 -0
  94. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +8 -0
  95. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +9 -0
  96. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +20 -4
  97. package/dist/_dts/blocks/src/system/runtime/nodes/form.fields.d.ts +5 -0
  98. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.block-submission.d.ts +34 -0
  99. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.d.ts +1 -1
  100. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +6 -1
  101. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.parts.d.ts +46 -0
  102. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +2 -1
  103. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +4 -1
  104. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingMailingListNote.d.ts +6 -0
  105. package/dist/_dts/blocks/src/system/runtime/shared/components/CheckboxChoice.d.ts +18 -0
  106. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
  107. package/dist/_dts/blocks/src/system/runtime/shared/mailingListSignupCopy.d.ts +6 -0
  108. package/dist/_dts/blocks/src/system/runtime/shared/types.d.ts +1 -0
  109. package/dist/_dts/blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.d.ts +3 -2
  110. package/dist/_dts/blocks/src/system/transforms/registry/core.d.ts +2 -0
  111. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +1 -3
  112. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  113. package/dist/_dts/content-editor/src/primitives/previewEditableOutline.d.ts +2 -0
  114. package/dist/_dts/content-editor/src/ui/editorBlockEquality.d.ts +3 -0
  115. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +3 -5
  116. package/dist/_dts/core/src/block-content-identity.d.ts +5 -0
  117. package/dist/_dts/core/src/editor-state.d.ts +2 -7
  118. package/dist/_dts/core/src/index.d.ts +2 -1
  119. package/dist/_dts/core/src/mailing-list-runtime.d.ts +15 -0
  120. package/dist/_dts/core/src/mailing-list-setup.d.ts +2 -0
  121. package/dist/_dts/core/src/mailing-list-submission.d.ts +9 -1
  122. package/dist/_dts/core/src/navigation-portal-labels.d.ts +9 -0
  123. package/dist/_dts/core/src/participants.d.ts +0 -38
  124. package/dist/_dts/core/src/public-event-booking-availability.d.ts +20 -1
  125. package/dist/_dts/core/src/public-profile.d.ts +3 -1
  126. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +151 -24
  127. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +3 -0
  128. package/dist/_dts/editor-blocks/src/block-editor/EmptyState.d.ts +13 -1
  129. package/dist/_dts/editor-blocks/src/block-editor/actionPresentation.d.ts +1 -0
  130. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +2 -8
  131. package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
  132. package/dist/_dts/preview-next/src/client/blocks/EditablePageRenderer.d.ts +7 -1
  133. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +5 -5
  134. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -2
  135. package/dist/_dts/sdk/src/next/renderSdkContent.d.ts +0 -1
  136. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +3 -2
  137. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +3 -2
  138. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +6 -1
  139. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +5 -2
  140. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +6 -1
  141. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +2 -0
  142. package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +5 -1
  143. package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +5 -1
  144. package/dist/_dts/sdk/src/version.d.ts +1 -1
  145. package/dist/_dts/surfaces/src/index.d.ts +9 -0
  146. package/dist/_dts/theme-core/src/buttons/effects/types.d.ts +1 -1
  147. package/dist/_dts/theme-core/src/footer/effectiveNavLinkStyle.d.ts +13 -0
  148. package/dist/_dts/theme-core/src/footer/index.d.ts +1 -0
  149. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  150. package/dist/_dts/theme-core/src/header/effectiveNavLinkStyle.d.ts +17 -0
  151. package/dist/_dts/theme-core/src/header/generateHeaderLogoStyles.d.ts +15 -0
  152. package/dist/_dts/theme-core/src/header/generateHeaderNavLinkStyles.d.ts +4 -0
  153. package/dist/_dts/theme-core/src/header/index.d.ts +3 -0
  154. package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +1 -1
  155. package/dist/_dts/theme-core/src/header/openingForegroundProjection.d.ts +7 -0
  156. package/dist/_dts/theme-core/src/header/rootPaint.d.ts +4 -0
  157. package/dist/_dts/theme-core/src/inputs/checkable.d.ts +42 -0
  158. package/dist/_dts/theme-core/src/inputs/inputGroup.d.ts +19 -0
  159. package/dist/_dts/theme-core/src/navigation/effectPolicy.d.ts +38 -0
  160. package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +4 -0
  161. package/dist/_dts/theme-core/src/navigation/types.d.ts +4 -0
  162. package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +1 -1
  163. package/dist/_dts/theme-core/src/surfaces/foregroundContract.d.ts +7 -0
  164. package/dist/_dts/theme-core/src/surfaces/foregroundInteraction.d.ts +29 -22
  165. package/dist/_dts/theme-core/src/surfaces/foregroundRoles.d.ts +10 -2
  166. package/dist/_dts/theme-core/src/surfaces/resolveSurfaceForeground.d.ts +9 -0
  167. package/dist/_dts/theme-core/src/utils/cssDeclarations.d.ts +2 -0
  168. package/dist/_dts/ui/src/badge.d.ts +2 -1
  169. package/dist/_dts/ui/src/button.d.ts +1 -1
  170. package/dist/_dts/ui/src/combobox-keys.d.ts +23 -0
  171. package/dist/_dts/ui/src/combobox-rows.d.ts +34 -0
  172. package/dist/_dts/ui/src/combobox.d.ts +26 -1
  173. package/dist/_dts/ui/src/date-picker.d.ts +5 -8
  174. package/dist/_dts/ui/src/editor-item-card.d.ts +1 -0
  175. package/dist/_dts/ui/src/field-trigger.d.ts +39 -0
  176. package/dist/_dts/ui/src/fieldControl.d.ts +27 -0
  177. package/dist/_dts/ui/src/index.d.ts +4 -1
  178. package/dist/_dts/ui/src/native-select.d.ts +8 -0
  179. package/dist/_dts/ui/src/navigation-tabs.d.ts +2 -1
  180. package/dist/_dts/ui/src/popover.d.ts +7 -1
  181. package/dist/_dts/ui/src/segmented-control.d.ts +4 -0
  182. package/dist/_dts/ui/src/surface.d.ts +1 -1
  183. package/dist/client/{BookingConsentAgreement-DlVOmpW4.mjs → BookingMailingListNote-1n4Ch_u_.mjs} +15 -4
  184. package/dist/client/CheckboxChoice-B33MqoUo.mjs +24 -0
  185. package/dist/client/{DiscountCodeDisclosure-T9q623PQ.mjs → DiscountCodeDisclosure-CKJtz0mY.mjs} +1 -1
  186. package/dist/client/{EventCombined.client-DnsUeONl.mjs → EventCombined.client-C0pgma9y.mjs} +7 -7
  187. package/dist/client/{EventListing.client-CNBFqJS4.mjs → EventListing.client-4fhLOvHP.mjs} +2 -2
  188. package/dist/client/{LeafletStaticMap-C7higg52.mjs → LeafletStaticMap-DScC4F3w.mjs} +1 -1
  189. package/dist/client/{scrollToBlock-CWs8EIdo.mjs → TerminalPanel-B5ZUsYhe.mjs} +77 -77
  190. package/dist/client/{ThemedButton-LAJTNrS8.mjs → ThemedButton-DoVIV1Ao.mjs} +2 -2
  191. package/dist/client/{accordion-BcNF9TjX.mjs → accordion-CoT5g7zo.mjs} +1 -1
  192. package/dist/client/{bookingForm-BUaQ3S03.mjs → bookingForm-BWxB46xD.mjs} +251 -150
  193. package/dist/client/bookings.mjs +415 -234
  194. package/dist/client/{carousel-CTdF6e0V.mjs → carousel-DtNYWFd3.mjs} +2 -2
  195. package/dist/client/{carousel.client-jahpU9Vz.mjs → carousel.client-A2lG-9od.mjs} +1 -1
  196. package/dist/client/{cart-pGtyf_XU.mjs → cart-z4qZih1Y.mjs} +3 -3
  197. package/dist/client/{checkout-Da9WSn7Y.mjs → checkout-DpL7euFH.mjs} +3 -3
  198. package/dist/client/{checkoutUrls-CW3-78uu.mjs → checkoutUrls-BEfR7kVu.mjs} +1 -1
  199. package/dist/client/client.mjs +3721 -2220
  200. package/dist/client/{colorStyles-CuJBiS-1.mjs → colorStyles-j5U9v5JA.mjs} +5 -1
  201. package/dist/client/{context-BFeY_Wbm.mjs → context-C8TinPJc.mjs} +1 -1
  202. package/dist/client/{dates-BhwVSxDg.mjs → dates-vwwxTeB0.mjs} +2 -3
  203. package/dist/client/{eventCalendar-BAtdnR4s.mjs → eventCalendar-DIbHfJXO.mjs} +10 -10
  204. package/dist/client/{eventCombined-RksA3tRC.mjs → eventCombined-DoGMJ6cg.mjs} +4 -4
  205. package/dist/client/{eventDetails-BB9hB4wR.mjs → eventDetails-BjN9v6a1.mjs} +4 -4
  206. package/dist/client/{eventListing-BpJBkviM.mjs → eventListing-DajjWgOv.mjs} +4 -4
  207. package/dist/client/{eventRegistration-B18jFq_o.mjs → eventRegistration-DMq9gMA-.mjs} +121 -54
  208. package/dist/client/{form-Dodt8Y8t.mjs → form-Qf6qTbos.mjs} +136 -105
  209. package/dist/client/{headerSection-B0qj9ttg.mjs → headerSection-D7qJrqFX.mjs} +3 -3
  210. package/dist/client/hooks.mjs +1148 -179
  211. package/dist/client/{locationMap-gn-iMk7a.mjs → locationMap-CCF9-t_0.mjs} +4 -4
  212. package/dist/client/{FieldValidationMessage-AYanWFb-.mjs → mailingListSignupCopy-DZSHZrm6.mjs} +14 -1
  213. package/dist/client/{media-BtJ37tzS.mjs → media-CwBGetqC.mjs} +1 -1
  214. package/dist/client/{newsletterForm-oByLdFkr.mjs → newsletterForm-DzCLSP4S.mjs} +206 -104
  215. package/dist/client/{pricing-BOU0_Hai.mjs → pricing-Cgxv2KLC.mjs} +1 -1
  216. package/dist/client/{productDetail-D9v1zH2j.mjs → productDetail-ru9w5GHx.mjs} +3 -3
  217. package/dist/client/{productList-D-mItx1n.mjs → productList-zaapKSl-.mjs} +3 -3
  218. package/dist/client/{propsDecoder-C3TP_z4x.mjs → propsDecoder-CwvvNOHx.mjs} +91 -28
  219. package/dist/client/rendering/client.mjs +1441 -826
  220. package/dist/client/rendering/islands.mjs +19 -19
  221. package/dist/client/rendering.mjs +3652 -2005
  222. package/dist/client/{routeIslandApiConfig-DzN1W0sq.mjs → routeIslandApiConfig-BwVFo0Y4.mjs} +1 -1
  223. package/dist/client/{shop-commerce-gklw_hLF.mjs → shop-commerce-De7gEnkA.mjs} +8 -8
  224. package/dist/client/{shop-commerce-store-Sf1eyTaZ.mjs → shop-commerce-store-B3MCxIBW.mjs} +1 -1
  225. package/dist/client/{shop-Dufw7N7o.mjs → shop-mktkXvbV.mjs} +7 -7
  226. package/dist/client/{shopShared-B5nyA41S.mjs → shopShared-TqExh235.mjs} +5 -5
  227. package/dist/client/{useEventFilters-CLL829vy.mjs → useEventFilters-n_OjkIjX.mjs} +8 -8
  228. package/dist/preview-next/before-render.mjs +490 -153
  229. package/dist/preview-next/client/runtime.mjs +4 -4
  230. package/dist/preview-next/editor-base.css +64 -2
  231. package/dist/preview-next/editor-chrome.css +7 -4
  232. package/dist/preview-next/keepAlive.mjs +450 -153
  233. package/dist/preview-next/middleware.mjs +451 -153
  234. package/dist/{previewAuthStore-BxAFlu-j.mjs → previewAuthStore-C_EHQ5XA.mjs} +475 -153
  235. package/dist/{sdk-runtime-D0uZFev7.mjs → sdk-runtime-BIkJg5y1.mjs} +2 -2
  236. package/dist/{separator-EvdCAn4V.mjs → separator-C9qDP95Z.mjs} +1 -1
  237. package/dist/server/components.mjs +4957 -3509
  238. package/dist/server/config-validation.mjs +1115 -189
  239. package/dist/server/config.mjs +1115 -189
  240. package/dist/server/data.mjs +1113 -188
  241. package/dist/server/index.mjs +492 -154
  242. package/dist/server/navigation.mjs +13 -2
  243. package/dist/server/next.mjs +4798 -3462
  244. package/dist/server/page-converter.mjs +143 -89
  245. package/dist/server/prebuild.mjs +1 -1
  246. package/dist/server/rendering/server.mjs +3862 -2414
  247. package/dist/server/rendering.mjs +5648 -4154
  248. package/dist/server/routing.mjs +1223 -329
  249. package/dist/server/server.mjs +1172 -314
  250. package/dist/server/theme-bridge.mjs +533 -128
  251. package/dist/server/theme.mjs +5 -1
  252. package/dist/styles/index.css +218 -69
  253. package/package.json +1 -1
  254. package/dist/_dts/core/src/participant-identity.d.ts +0 -135
@@ -488,11 +488,15 @@ export declare const eventCollectionSourceSchemaShape: {
488
488
  series_archived: "series_archived";
489
489
  parent_archived: "parent_archived";
490
490
  parent_inconsistent: "parent_inconsistent";
491
- not_public: "not_public";
492
491
  already_started: "already_started";
493
492
  enrollment_closed: "enrollment_closed";
494
493
  }>;
495
494
  }, z.core.$strip>], "kind">;
495
+ bookingClosedDetail: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
496
+ kind: z.ZodLiteral<"opensSoon">;
497
+ }, z.core.$strip>, z.ZodObject<{
498
+ kind: z.ZodLiteral<"paused">;
499
+ }, z.core.$strip>], "kind">>;
496
500
  deliveryMode: z.ZodEnum<{
497
501
  in_person: "in_person";
498
502
  online: "online";
@@ -973,11 +977,15 @@ export declare const eventCollectionSourceSchemaShape: {
973
977
  series_archived: "series_archived";
974
978
  parent_archived: "parent_archived";
975
979
  parent_inconsistent: "parent_inconsistent";
976
- not_public: "not_public";
977
980
  already_started: "already_started";
978
981
  enrollment_closed: "enrollment_closed";
979
982
  }>;
980
983
  }, z.core.$strip>], "kind">;
984
+ bookingClosedDetail: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
985
+ kind: z.ZodLiteral<"opensSoon">;
986
+ }, z.core.$strip>, z.ZodObject<{
987
+ kind: z.ZodLiteral<"paused">;
988
+ }, z.core.$strip>], "kind">>;
981
989
  deliveryMode: z.ZodEnum<{
982
990
  in_person: "in_person";
983
991
  online: "online";
@@ -1519,11 +1527,15 @@ export declare const eventCollectionDisplaySchemaShape: {
1519
1527
  series_archived: "series_archived";
1520
1528
  parent_archived: "parent_archived";
1521
1529
  parent_inconsistent: "parent_inconsistent";
1522
- not_public: "not_public";
1523
1530
  already_started: "already_started";
1524
1531
  enrollment_closed: "enrollment_closed";
1525
1532
  }>;
1526
1533
  }, z.core.$strip>], "kind">;
1534
+ bookingClosedDetail: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1535
+ kind: z.ZodLiteral<"opensSoon">;
1536
+ }, z.core.$strip>, z.ZodObject<{
1537
+ kind: z.ZodLiteral<"paused">;
1538
+ }, z.core.$strip>], "kind">>;
1527
1539
  deliveryMode: z.ZodEnum<{
1528
1540
  in_person: "in_person";
1529
1541
  online: "online";
@@ -2004,11 +2016,15 @@ export declare const eventCollectionDisplaySchemaShape: {
2004
2016
  series_archived: "series_archived";
2005
2017
  parent_archived: "parent_archived";
2006
2018
  parent_inconsistent: "parent_inconsistent";
2007
- not_public: "not_public";
2008
2019
  already_started: "already_started";
2009
2020
  enrollment_closed: "enrollment_closed";
2010
2021
  }>;
2011
2022
  }, z.core.$strip>], "kind">;
2023
+ bookingClosedDetail: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2024
+ kind: z.ZodLiteral<"opensSoon">;
2025
+ }, z.core.$strip>, z.ZodObject<{
2026
+ kind: z.ZodLiteral<"paused">;
2027
+ }, z.core.$strip>], "kind">>;
2012
2028
  deliveryMode: z.ZodEnum<{
2013
2029
  in_person: "in_person";
2014
2030
  online: "online";
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { FormFieldDef } from './form.types';
3
+ export declare function FormFieldControl({ field }: Readonly<{
4
+ field: FormFieldDef;
5
+ }>): React.ReactElement;
@@ -0,0 +1,34 @@
1
+ import { type MailingListSignupSourceRef } from '../../../../../core/src/index';
2
+ import type { PublishedBlockPlacementRead } from '../../../pageRenderAdmission';
3
+ export type NewsletterBlockSubmission = Readonly<{
4
+ tag: 'ready';
5
+ sourceRef: Extract<MailingListSignupSourceRef, {
6
+ tag: 'block_ref';
7
+ }>;
8
+ }> | Readonly<{
9
+ tag: 'unpublished-form';
10
+ }> | Readonly<{
11
+ tag: 'unpublished-settings';
12
+ }> | Readonly<{
13
+ tag: 'unavailable';
14
+ }>;
15
+ type BlockPlacement = Readonly<{
16
+ blockId: string | null;
17
+ selectedContentVersionId: string | null;
18
+ publishedPlacement: PublishedBlockPlacementRead;
19
+ renderedContent: Record<string, unknown>;
20
+ stage: 'published' | 'preview' | undefined;
21
+ }>;
22
+ /** Authorise one block source for both public and preview rendering. */
23
+ export declare function planNewsletterBlockSubmission(placement: BlockPlacement): NewsletterBlockSubmission;
24
+ type PreviewPlacement = Readonly<{
25
+ blockId: string | null;
26
+ publishedContentId: string | null;
27
+ renderedContent: Record<string, unknown>;
28
+ publishedContent: Record<string, unknown> | null;
29
+ }>;
30
+ /** Decide whether the visible draft can safely cite the published placement. */
31
+ export declare function planNewsletterPreviewSubmission(placement: PreviewPlacement): Exclude<NewsletterBlockSubmission, {
32
+ tag: 'unavailable';
33
+ }>;
34
+ export {};
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { NewsletterFormInteractiveIslandProps } from './newsletter-form.interactive';
2
+ import { type NewsletterFormInteractiveIslandProps } from './newsletter-form.interactive';
3
3
  /**
4
4
  * Newsletter Form Client Component
5
5
  *
@@ -31,7 +31,12 @@ export type NewsletterFormHydrationTarget = Readonly<{
31
31
  sourceRef: MailingListSignupSignedSourceRef;
32
32
  }> | Readonly<{
33
33
  tag: 'preview';
34
+ }> | Readonly<{
35
+ tag: 'unpublished-preview';
36
+ reason: 'unpublished-form' | 'unpublished-settings';
34
37
  }>;
38
+ export declare const NEWSLETTER_SIGNUPS_PAUSED_MESSAGE = "We can\u2019t accept signups right now. Please try again later.";
39
+ export declare function newsletterBlockSubmissionMessage(target: NewsletterFormHydrationTarget): string | null;
35
40
  type MailingListSignupBlockSourceRef = Extract<MailingListSignupSourceRef, {
36
41
  tag: 'block_ref';
37
42
  }>;
@@ -42,7 +47,7 @@ type NewsletterIslandMeta = Readonly<{
42
47
  siteId?: string;
43
48
  apiBaseUrl?: string;
44
49
  }>;
45
- export declare function buildNewsletterDisplay(source: NewsletterFormSourceProps): NewsletterFormDisplay;
50
+ export declare function buildNewsletterDisplay(source: Pick<NewsletterFormSourceProps, 'source' | 'mailingList' | 'targeting' | 'buttonVariant' | 'className'>): NewsletterFormDisplay;
46
51
  export type NewsletterFormInteractiveIslandProps = InteractiveIslandProps<NewsletterIslandMeta, 'newsletter-form', typeof newsletterFormBlockRuntime>;
47
52
  export declare const newsletterFormBlockRuntime: Readonly<{
48
53
  kind: "progressive";
@@ -0,0 +1,46 @@
1
+ import React from 'react';
2
+ import type { NewsletterButtonVariant, NewsletterFieldDef } from './newsletter-form.types';
3
+ /**
4
+ * Newsletter form pieces shared by the SSR render and the hydrated island, so
5
+ * both produce the same markup.
6
+ *
7
+ * Labels are visually hidden: every field has a placeholder, and a visible
8
+ * "Email *" label over a single field reads like a generic form. Screen
9
+ * readers still get the label.
10
+ */
11
+ export declare const TOPIC_CHOICE_FIELD_ID = "mailingListChoice";
12
+ type FieldState = Readonly<{
13
+ disabled?: boolean;
14
+ error?: string | null;
15
+ }>;
16
+ /** Splits the preset's fields into the email (joined with the button) and the rest. */
17
+ export declare function partitionNewsletterFields(fields: readonly NewsletterFieldDef[]): Readonly<{
18
+ email: NewsletterFieldDef | null;
19
+ extra: readonly NewsletterFieldDef[];
20
+ }>;
21
+ export declare function NewsletterExtraField({ field, disabled, error, }: Readonly<{
22
+ field: NewsletterFieldDef;
23
+ }> & FieldState): React.ReactElement;
24
+ /** The email field and submit button sharing one input-styled shell. */
25
+ export declare function NewsletterEmailEntry({ field, buttonVariant, buttonLabel, disabled, error, }: Readonly<{
26
+ field: NewsletterFieldDef;
27
+ buttonVariant: NewsletterButtonVariant;
28
+ buttonLabel: string;
29
+ }> & FieldState): React.ReactElement;
30
+ /**
31
+ * The submit action: joined to the email field when the preset has one
32
+ * (every current preset does), otherwise a plain themed button.
33
+ */
34
+ export declare function NewsletterSubmitRow({ emailField, buttonVariant, buttonLabel, disabled, error, }: Readonly<{
35
+ emailField: NewsletterFieldDef | null;
36
+ buttonVariant: NewsletterButtonVariant;
37
+ buttonLabel: string;
38
+ }> & FieldState): React.ReactElement;
39
+ /** Visitor-chosen topics as toggle chips. Real checkboxes underneath. */
40
+ export declare function NewsletterTopicChips({ choices, disabled, error, }: Readonly<{
41
+ choices: readonly Readonly<{
42
+ id: string;
43
+ label: string;
44
+ }>[];
45
+ }> & FieldState): React.ReactElement;
46
+ export {};
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import type { MailingListGlobalForm, MailingListPlacementTargeting, MailingListRuntimeContext, MailingListSignupSourceRef } from '../../../../../core/src/index';
7
7
  import type { BlockButtonRole } from '../../constants/buttonRoles';
8
+ import type { NewsletterBlockSubmission } from './newsletter-form.block-submission';
8
9
  export type NewsletterPreset = MailingListGlobalForm['fields']['preset'];
9
10
  export type NewsletterFieldDef = {
10
11
  id: string;
@@ -33,7 +34,7 @@ type NewsletterFormCommonProps = {
33
34
  type BlockNewsletterFormSource = Readonly<{
34
35
  source: 'block';
35
36
  blockId?: string | null;
36
- contentVersionId?: string | null;
37
+ newsletterBlockSubmission: NewsletterBlockSubmission;
37
38
  }>;
38
39
  type SignedFooterNewsletterFormSource = Readonly<{
39
40
  source: 'signed-footer';
@@ -1,9 +1,11 @@
1
1
  import React from "react";
2
+ import type { ThemeColorToken } from '../../../../theme-core/src/tokens/index';
2
3
  import type { ConditionalAuthoringPresence, NodeDefinition } from "../node";
3
4
  import { bindingSchema } from "../node";
4
5
  import { type ThemeTokens } from "../theme";
5
6
  import type { TransformRegistry, RouteMap, PageIdentifierMap, EntryIdentifierMap } from "../transforms";
6
7
  import type { ResolveImageUrlContext } from "./nodes/media";
8
+ import type { NewsletterBlockSubmission } from './nodes/newsletter-form.block-submission';
7
9
  export type ViewModel = Record<string, unknown>;
8
10
  export type ComponentRegistry = Record<string, React.ElementType>;
9
11
  export type PreviewTextFieldConstraints = Readonly<{
@@ -23,6 +25,7 @@ export type ResolverContext = {
23
25
  registry: ComponentRegistry;
24
26
  transforms?: TransformRegistry;
25
27
  theme?: ThemeTokens;
28
+ proseHoverCandidate?: ThemeColorToken;
26
29
  routes?: RouteMap;
27
30
  /** Page identifier -> routeId lookup for { kind: 'page' } links */
28
31
  pagesByIdentifier?: PageIdentifierMap;
@@ -30,7 +33,7 @@ export type ResolverContext = {
30
33
  entriesByIdentifier?: EntryIdentifierMap;
31
34
  pathBase?: string;
32
35
  blockId?: string | null;
33
- contentVersionId?: string | null;
36
+ newsletterBlockSubmission?: NewsletterBlockSubmission;
34
37
  blockKind?: string;
35
38
  blockContent?: unknown;
36
39
  blockBindings?: Record<string, unknown>;
@@ -0,0 +1,6 @@
1
+ import type { BookingMailingListNote as Note } from '../../../../../../core/src/index';
2
+ export declare function BookingMailingListNote(props: Readonly<{
3
+ note: Note;
4
+ context: 'booking' | 'waitlist';
5
+ className?: string;
6
+ }>): import("react").JSX.Element;
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ type CheckboxChoiceProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'className'> & Readonly<{
3
+ label: React.ReactNode;
4
+ /**
5
+ * `row` for options and plain checkbox fields. `tile` for agreements the
6
+ * customer must accept (booking consent, consent fields): a bordered,
7
+ * fully clickable panel that tints when ticked.
8
+ */
9
+ presentation?: 'row' | 'tile';
10
+ className?: string;
11
+ }>;
12
+ /**
13
+ * The customer-facing checkbox every block renders. Styling comes from the
14
+ * theme's input CSS (`.form-check`, `.form-checkbox`), so it follows each
15
+ * site's input colours, borders and corners.
16
+ */
17
+ export declare function CheckboxChoice({ label, presentation, className, ...inputProps }: CheckboxChoiceProps): React.ReactElement;
18
+ export {};
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Shared Components Barrel Export
3
3
  */
4
+ export { CheckboxChoice } from './CheckboxChoice';
4
5
  export { CheckIcon } from './CheckIcon';
5
6
  export { ClockIcon } from './ClockIcon';
6
7
  export { CrossIcon } from './CrossIcon';
@@ -0,0 +1,6 @@
1
+ import type { BookingMailingListNote as BookingSignupNote } from '../../../../../core/src/index';
2
+ export declare const MAILING_LIST_CONFIRMATION_MESSAGE = "Please check your inbox to confirm your signup.";
3
+ export declare function getBookingMailingListNoteCopy(note: BookingSignupNote, context: 'booking' | 'waitlist'): Readonly<{
4
+ title: string;
5
+ detail: string | null;
6
+ }>;
@@ -13,6 +13,7 @@ export type FormData = {
13
13
  phone: string;
14
14
  notes: string;
15
15
  consentAccepted?: boolean;
16
+ mailingListOptIn?: boolean;
16
17
  };
17
18
  /**
18
19
  * Button style variants.
@@ -1,8 +1,9 @@
1
1
  import { resolveSurfaceForeground, type ResolvedSurfaceForeground } from '../../../../../../theme-core/src/surfaces/index';
2
- import type { ThemeHeader } from '../../../../../../theme-core/src/schema';
2
+ import type { ThemeFooter, ThemeHeader } from '../../../../../../theme-core/src/schema';
3
+ import type { ThemeColorToken } from '../../../../../../theme-core/src/tokens/index';
3
4
  import type { TransformContext } from '../core';
4
- export declare function resolveHeaderLeafTextColor(header: Partial<ThemeHeader> | undefined): NonNullable<ThemeHeader['textColor']>;
5
5
  export declare function resolveHeaderRootForeground(header: Partial<ThemeHeader> | undefined, palette: Parameters<typeof resolveSurfaceForeground>[1], isTransparent: boolean): ResolvedSurfaceForeground;
6
+ export declare function resolveFooterRootForeground(footer: Partial<ThemeFooter> | undefined, palette: Parameters<typeof resolveSurfaceForeground>[1], proseHoverCandidate?: ThemeColorToken): ResolvedSurfaceForeground;
6
7
  export declare function resolveSurfaceForegroundStyles(value: unknown, context: TransformContext, options?: Readonly<{
7
8
  fallbackToken?: string;
8
9
  }>): Record<string, string>;
@@ -1,6 +1,7 @@
1
1
  import type { z } from "zod";
2
2
  import type { ThemeTokens } from "../../theme";
3
3
  import type { ButtonSystem } from "../../../../../theme-core/src/buttons/index";
4
+ import type { ThemeColorToken } from "../../../../../theme-core/src/tokens/index";
4
5
  type BivariantCallback<TArgs extends unknown[], TResult> = {
5
6
  bivarianceHack(...args: TArgs): TResult;
6
7
  }["bivarianceHack"];
@@ -20,6 +21,7 @@ export type TransformContext = {
20
21
  theme: ThemeTokens & Readonly<{
21
22
  buttons?: ButtonSystem;
22
23
  }>;
24
+ proseHoverCandidate?: ThemeColorToken;
23
25
  locale?: string;
24
26
  stage?: "preview" | "published";
25
27
  /**
@@ -1,7 +1,6 @@
1
1
  import { z } from 'zod';
2
- import { type ThemeFooter, type ThemeHeader } from '../../../../../theme-core/src/schema';
2
+ import { type ThemeHeader } from '../../../../../theme-core/src/schema';
3
3
  import { type TransformDefinition } from './core';
4
- import { resolveSurfaceForeground, type ResolvedSurfaceForeground } from '../../../../../theme-core/src/surfaces/index';
5
4
  declare const headerLogoClassSchema: z.ZodObject<{
6
5
  base: z.ZodOptional<z.ZodString>;
7
6
  }, z.core.$strip>;
@@ -42,7 +41,6 @@ export declare function resolveHeaderVisualStyles(header: Partial<ThemeHeader> |
42
41
  readonly backgroundToken: "transparent";
43
42
  readonly isTransparent: true;
44
43
  };
45
- export declare function resolveFooterRootForeground(footer: Partial<ThemeFooter> | undefined, palette: Parameters<typeof resolveSurfaceForeground>[1]): ResolvedSurfaceForeground;
46
44
  export declare const headerRootClassTransform: TransformDefinition<HeaderRootOptions>;
47
45
  declare const footerRootClassSchema: z.ZodObject<{
48
46
  base: z.ZodOptional<z.ZodString>;
@@ -21,6 +21,7 @@ export { useUISelector } from './ui/useUISelector';
21
21
  export { EditorUiStoreProvider, useEditorUiStore, useEditorUiStoreInstance, useOptionalEditorUiStoreInstance, createEditorUiStore, } from './ui/editorUiStore';
22
22
  export type { ActivePreviewField, EditorUiStoreInstance, EditorUiState, EditorPreviewInspectorStore, EditorLinkedEntrySnapshot, PreviewDesignRow, PreviewDesignOpenRequest, PreviewEditorOpenIntent, PreviewInspection, PreviewSidebarTab, ViewportMode, ViewportWidth, ViewportState, ZoomLevel, } from './ui/editorUiStore';
23
23
  export { PreviewTextEditor } from './primitives/PreviewTextEditor';
24
+ export { PREVIEW_EDITABLE_OUTLINE, PREVIEW_EDITABLE_OUTLINE_OFFSET, } from './primitives/previewEditableOutline';
24
25
  export { PreviewInlineTextEditor } from './primitives/PreviewInlineTextEditor';
25
26
  export { PreviewRichTextEditor } from './primitives/PreviewRichTextEditor';
26
27
  export { recordsEqual as editorValuesEqual } from './ui/stores/utils';
@@ -0,0 +1,2 @@
1
+ export declare const PREVIEW_EDITABLE_OUTLINE = "1px dashed rgba(156, 163, 175, 0.75)";
2
+ export declare const PREVIEW_EDITABLE_OUTLINE_OFFSET = "2px";
@@ -0,0 +1,3 @@
1
+ import type { NormalizedEditorBlockItem } from './editorSnapshot';
2
+ export declare function normalizedBlockEqual(left: NormalizedEditorBlockItem, right: NormalizedEditorBlockItem): boolean;
3
+ export declare function normalizedBlocksEqual(left: readonly NormalizedEditorBlockItem[], right: readonly NormalizedEditorBlockItem[]): boolean;
@@ -1,4 +1,4 @@
1
- import { unsafeAsEditorBlockId, unsafeAsEditorBlockValues, unsafeAsEditorContentValues, unsafeAsEditorEntryId, unsafeAsEditorMetadataValues, unsafeAsEditorPageId, unsafeAsEditorSiteId, type EditorBlockBaselineInput, type EditorBlockId, type EditorBlockPublishedBaselineInput, type EditorDraftBlockBaselineUpdateMetaInput, type EditorDraftBlockInitMetaInput, type EditorBlockValues, type EditorContentValues, type EditorEntryId, type EditorMetadataValues, type EditorPageId, type EditorPersistedBlock, type EditorSiteId, type EditorStructuralCommand, type EditorStructuralDraftSnapshot, type EditorSyncState, type EditorValueRecord } from '../../../core/src/index';
1
+ import { unsafeAsEditorBlockId, unsafeAsEditorBlockValues, unsafeAsEditorContentValues, unsafeAsEditorEntryId, unsafeAsEditorMetadataValues, unsafeAsEditorPageId, unsafeAsEditorSiteId, type EditorBlockBaselineInput, type EditorBlockId, type EditorBlockPublishedBaselineInput, type EditorDraftBlockBaselineUpdateMetaInput, type EditorDraftBlockInitMetaInput, type EditorBlockValues, type EditorContentValues, type EditorEntryId, type EditorMetadataValues, type EditorPageId, type EditorPersistedBlock, type BlockContentIdentity, type EditorSiteId, type EditorStructuralCommand, type EditorStructuralDraftSnapshot, type EditorSyncState, type EditorValueRecord } from '../../../core/src/index';
2
2
  import { type LinkedContentEntryId, type LinkedContentTypeKey } from '../linkedEntries/domain';
3
3
  export { unsafeAsEditorBlockId, unsafeAsEditorBlockValues, unsafeAsEditorContentValues, unsafeAsEditorEntryId, unsafeAsEditorMetadataValues, unsafeAsEditorPageId, unsafeAsEditorSiteId, type EditorBlockId, type EditorBlockValues, type EditorContentValues, type EditorEntryId, type EditorMetadataValues, type EditorPageId, type EditorSiteId, };
4
4
  export type EditorCommand = {
@@ -119,9 +119,8 @@ export type DraftBlockInitMetaInput = EditorDraftBlockInitMetaInput;
119
119
  export type DraftBlockBaselineUpdateMetaInput = EditorDraftBlockBaselineUpdateMetaInput;
120
120
  export type DraftBlockBaselineInput = EditorBlockBaselineInput;
121
121
  export type BlockPublishedBaselineInput = EditorBlockPublishedBaselineInput;
122
- export type EditorBlockItem = Readonly<{
122
+ export type EditorBlockItem = Partial<BlockContentIdentity> & Readonly<{
123
123
  id?: string | null;
124
- contentVersionId?: string | null;
125
124
  kind: string;
126
125
  content?: EditorValueRecord | null;
127
126
  orderIndex?: number | null;
@@ -131,8 +130,7 @@ export type EditorBlockItem = Readonly<{
131
130
  purpose?: string | null;
132
131
  optimisticHash?: string | null;
133
132
  }>;
134
- type NormalizedEditorBlockBase = Readonly<{
135
- contentVersionId: string | null;
133
+ type NormalizedEditorBlockBase = BlockContentIdentity & Readonly<{
136
134
  kind: string;
137
135
  content: EditorBlockValues | null;
138
136
  orderIndex: number | null;
@@ -0,0 +1,5 @@
1
+ /** A block version ID is meaningful only with its draft or published stage. */
2
+ export type BlockContentIdentity = Readonly<{
3
+ draftContentId: string | null;
4
+ publishedContentId: string | null;
5
+ }>;
@@ -1,4 +1,5 @@
1
1
  import type { Brand } from './branded';
2
+ import type { BlockContentIdentity } from './block-content-identity';
2
3
  export type EditorSiteId = Brand<string, 'EditorSiteId'>;
3
4
  export type EditorPageId = Brand<string, 'EditorPageId'>;
4
5
  export type EditorEntryId = Brand<string, 'EditorEntryId'>;
@@ -61,14 +62,8 @@ export type EditorBlockPublishedBaselineInput = Readonly<{
61
62
  kind?: string;
62
63
  publishedContent?: EditorBlockBaselineInput;
63
64
  }>;
64
- export type EditorPersistedBlock = Readonly<{
65
+ export type EditorPersistedBlock = BlockContentIdentity & Readonly<{
65
66
  id: EditorBlockId;
66
- /**
67
- * The content version the block was loaded with. Runtime blocks that
68
- * submit to the API (newsletter signup) cite it so the server can verify
69
- * the placement, so the editor must carry it rather than strip it.
70
- */
71
- contentVersionId?: string | null;
72
67
  kind: string;
73
68
  content: EditorBlockValues | null;
74
69
  orderIndex: number | null;
@@ -30,10 +30,10 @@ export { tryAsync } from './try-async';
30
30
  export * from './narrow-result';
31
31
  export * from './non-empty-array';
32
32
  export * from './editor-state';
33
+ export * from './block-content-identity';
33
34
  export * from './sensitive-collection';
34
35
  export * from './assertNever';
35
36
  export * from './participants';
36
- export * from './participant-identity';
37
37
  export * from './public-url-validation';
38
38
  export * from './public-profile';
39
39
  export * from './public-experience';
@@ -75,5 +75,6 @@ export * from './public-read-cache-contract';
75
75
  export * from './booking-verticals';
76
76
  export * from './event-series-behaviour';
77
77
  export * from './navigation-locations';
78
+ export * from './navigation-portal-labels';
78
79
  export * from './event-preset-vocabulary';
79
80
  export * from './event-catalogue';
@@ -6,6 +6,7 @@ export type MailingListRuntimeContext = Readonly<{
6
6
  }> | Readonly<{
7
7
  tag: 'configured';
8
8
  revision: MailingListSetupRevision;
9
+ bookingSignup: BookingSignupOffer;
9
10
  form: MailingListGlobalForm;
10
11
  provider: MailingListRuntimeProvider;
11
12
  }>;
@@ -40,3 +41,17 @@ export type MailingListRuntimeContextParseError = Readonly<{
40
41
  tag: 'invalid_mailing_list_runtime_context';
41
42
  }>;
42
43
  export declare function parseMailingListRuntimeContext(value: unknown): Result<MailingListRuntimeContext, MailingListRuntimeContextParseError>;
44
+ export type BookingSignupOffer = Readonly<{
45
+ tag: 'offered';
46
+ }> | Readonly<{
47
+ tag: 'unavailable';
48
+ reason: 'disabled' | 'fields' | 'destination';
49
+ }>;
50
+ /** Destination facts are resolved once by the provider adapter, before projection. */
51
+ export declare function planBookingSignupOffer(setup: Readonly<{
52
+ bookingOptInEnabled: boolean;
53
+ form: MailingListGlobalForm;
54
+ }>, destination: 'available' | 'unavailable'): BookingSignupOffer;
55
+ export declare function resolveBookingSignupOffer(context: MailingListRuntimeContext | undefined, siteName: string | undefined): Readonly<{
56
+ siteName: string;
57
+ }> | null;
@@ -73,6 +73,7 @@ export type MailingListSiteSetup = Readonly<{
73
73
  tag: 'configured';
74
74
  siteId: SiteId;
75
75
  revision: MailingListSetupRevision;
76
+ bookingOptInEnabled: boolean;
76
77
  form: MailingListGlobalForm;
77
78
  provider: ConfiguredMailingListProvider;
78
79
  }>;
@@ -111,6 +112,7 @@ export declare function planMailingListFieldCompatibility(input: Readonly<{
111
112
  form: MailingListGlobalForm;
112
113
  destinations: readonly MailingListDestinationFieldRequirements[];
113
114
  }>): MailingListFieldCompatibilityPlan;
115
+ export declare function resolveRequiredGlobalFields(fields: MailingListGlobalFields): readonly MailingListProfileField[];
114
116
  export type MailingListSetupSwitchPlan = Readonly<{
115
117
  tag: 'activate';
116
118
  affectedPlacementCount: 0;
@@ -29,6 +29,10 @@ export type MailingListSignupSource = Readonly<{
29
29
  tag: 'sdk_footer_block';
30
30
  blockId: MailingListSdkFooterBlockId;
31
31
  contentHash: MailingListSdkContentHash;
32
+ }> | Readonly<{
33
+ tag: 'booking';
34
+ kind: 'event' | 'appointment';
35
+ attemptId: string;
32
36
  }>;
33
37
  /** Public proof of which published placement owns a signup request. */
34
38
  export type MailingListSignupSourceRef = Readonly<{
@@ -49,7 +53,9 @@ export type MailingListSignupTokenSource = Readonly<{
49
53
  blockId: MailingListSdkFooterBlockId;
50
54
  contentHash: MailingListSdkContentHash;
51
55
  }>;
52
- export declare function buildMailingListSignupBlockSourceRef(blockId: unknown, contentVersionId: unknown): MailingListSignupSourceRef | null;
56
+ export declare function buildMailingListSignupBlockSourceRef(blockId: unknown, contentVersionId: unknown): Extract<MailingListSignupSourceRef, {
57
+ tag: 'block_ref';
58
+ }> | null;
53
59
  type MailingListSignupProfileBase = Readonly<{
54
60
  email: NormalizedSubscriberEmail;
55
61
  phone: Readonly<{
@@ -221,4 +227,6 @@ export type ExternalSignupConsentRecord = (ExternalSignupConsentRecordBase & Rea
221
227
  }>;
222
228
  confirmation: BrevoConfirmation;
223
229
  }>);
230
+ /** Absence of a note means booking proceeds without a signup message. */
231
+ export type BookingMailingListNote = 'confirmation_required' | 'not_confirmed';
224
232
  export {};
@@ -0,0 +1,9 @@
1
+ /**
2
+ * What a customer sign-in link in a site's menu says when the site hasn't set
3
+ * its own text. The site renderer falls back to these, and the dashboard's
4
+ * menu editor shows them, so what an editor sees is what visitors get.
5
+ */
6
+ export declare const PORTAL_NAV_DEFAULT_LABELS: {
7
+ readonly loggedOut: "Login";
8
+ readonly loggedIn: "My Account";
9
+ };
@@ -115,30 +115,6 @@ export type ParticipantRosterProjection = Readonly<{
115
115
  slots: readonly ParticipantRosterSlot[];
116
116
  issues: readonly ParticipantRosterReconciliationIssue[];
117
117
  }>;
118
- export type ExistingParticipantByEmail = Readonly<{
119
- participantId: ParticipantId;
120
- email: ParticipantEmail;
121
- }>;
122
- export type ParticipantSubjectResolution = {
123
- kind: 'create_participant';
124
- slotKey: ParticipantSlotKey;
125
- email: ParticipantEmail;
126
- displayName: string | null;
127
- phone: string | null;
128
- } | {
129
- kind: 'reuse_participant_by_site_email';
130
- slotKey: ParticipantSlotKey;
131
- email: ParticipantEmail;
132
- participantId: ParticipantId;
133
- } | {
134
- kind: 'staff_managed_slot';
135
- slotKey: ParticipantSlotKey;
136
- } | {
137
- kind: 'blocked_duplicate_participant_in_booking';
138
- slotKey: ParticipantSlotKey;
139
- email: ParticipantEmail;
140
- conflictingSlotKeys: readonly ParticipantSlotKey[];
141
- };
142
118
  type ParticipantContactInput = Readonly<{
143
119
  name: string | null;
144
120
  email: string | null;
@@ -166,13 +142,6 @@ export type EventSeriesRegistrationParticipantProjectionInput = Readonly<{
166
142
  customerId: CustomerId;
167
143
  };
168
144
  }>;
169
- export type EventSeriesSessionAttendanceParticipantProjectionInput = Readonly<{
170
- attendeeId: AttendeeId;
171
- registrationId: EventSeriesRegistrationId;
172
- enrollmentSlot: ParticipantParticipationLinkSlot<Extract<ParticipantParticipation, {
173
- kind: 'event_series_registration';
174
- }>>;
175
- }>;
176
145
  export type SingleSubjectParticipantRosterTarget = Readonly<{
177
146
  kind: 'appointment';
178
147
  appointmentId: AppointmentId;
@@ -211,16 +180,9 @@ export declare function projectEventSeriesRegistrationParticipantSlot(input: Eve
211
180
  }>>;
212
181
  export declare function projectSingleSubjectParticipantRoster(input: SingleSubjectParticipantRosterProjectionInput): ParticipantRosterProjection;
213
182
  export declare function buildSingleSubjectParticipantPersistenceIntent(input: SingleSubjectParticipantRosterProjectionInput): SingleSubjectParticipantPersistenceIntent;
214
- export declare function projectEventSeriesSessionAttendanceParticipantSlot(input: EventSeriesSessionAttendanceParticipantProjectionInput): ParticipantParticipationLinkSlot<Extract<ParticipantParticipation, {
215
- kind: 'event_series_session_attendance';
216
- }>>;
217
183
  export declare function projectEventRegistrationParticipantRoster(input: EventRegistrationParticipantProjectionInput): ParticipantRosterProjection;
218
184
  export declare function reconcileParticipantRoster(input: {
219
185
  expectedCount: ParticipantCount;
220
186
  slots: readonly ParticipantRosterSlot[];
221
187
  }): readonly ParticipantRosterReconciliationIssue[];
222
- export declare function planParticipantSubjectResolution(input: {
223
- projection: ParticipantRosterProjection;
224
- existingParticipantsByEmail: readonly ExistingParticipantByEmail[];
225
- }): readonly ParticipantSubjectResolution[];
226
188
  export {};
@@ -1,4 +1,4 @@
1
- export type PublicEventBookingClosedReason = 'occurrence_cancelled' | 'occurrence_completed' | 'series_draft' | 'series_cancelled' | 'series_completed' | 'series_archived' | 'parent_archived' | 'parent_inconsistent' | 'not_public' | 'already_started' | 'enrollment_closed';
1
+ export type PublicEventBookingClosedReason = 'occurrence_cancelled' | 'occurrence_completed' | 'series_draft' | 'series_cancelled' | 'series_completed' | 'series_archived' | 'parent_archived' | 'parent_inconsistent' | 'already_started' | 'enrollment_closed';
2
2
  /** Public wire projection; persisted facts remain authoritative. */
3
3
  export type PublicEventBookingAvailability = Readonly<{
4
4
  kind: 'open';
@@ -6,3 +6,22 @@ export type PublicEventBookingAvailability = Readonly<{
6
6
  kind: 'closed';
7
7
  reason: PublicEventBookingClosedReason;
8
8
  }>;
9
+ /**
10
+ * Why an event's own page is up while bookings are shut.
11
+ *
12
+ * `series_draft` is one reason from the booking decision's point of view, but a
13
+ * visitor standing on the page is owed two different sentences: an event that
14
+ * has never opened will open, and one that was open and was taken offline has
15
+ * closed. The difference is whether the unit has ever been live, which is a
16
+ * persisted fact the public wire deliberately does not carry as a timestamp.
17
+ *
18
+ * This refines `bookingAvailability` rather than replacing it. It is only ever
19
+ * present alongside a closed `series_draft`, so nothing that already reads the
20
+ * availability changes its mind because of it, and booking stays refused
21
+ * wherever it is refused today.
22
+ */
23
+ export type PublicEventBookingClosedDetail = Readonly<{
24
+ kind: 'opensSoon';
25
+ }> | Readonly<{
26
+ kind: 'paused';
27
+ }>;
@@ -5,8 +5,10 @@ export type OpeningHoursTime = Brand<string, 'OpeningHoursTime'>;
5
5
  export type PublicSocialLinkId = Brand<string, 'PublicSocialLinkId'>;
6
6
  export declare const publicProfileWeekdays: readonly ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"];
7
7
  export type PublicProfileWeekday = (typeof publicProfileWeekdays)[number];
8
- export declare const knownSocialPlatforms: readonly ["facebook", "instagram", "linkedin", "tiktok", "x", "youtube"];
8
+ export declare const knownSocialPlatforms: readonly ["facebook", "instagram", "linkedin", "tiktok", "whatsapp", "x", "youtube"];
9
9
  export type KnownSocialPlatform = (typeof knownSocialPlatforms)[number];
10
+ /** How each platform is named wherever people see it (settings, composer, footer link labels). */
11
+ export declare const knownSocialPlatformLabels: Readonly<Record<KnownSocialPlatform, string>>;
10
12
  export type PublicContactDetails = Readonly<{
11
13
  kind: 'phone';
12
14
  phone: string;