@riverbankcms/sdk 0.144.0 → 0.146.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 (228) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/{PreviewEditorSidebar-CQZNnFiM.mjs → PreviewEditorSidebar-kg2r2Fyi.mjs} +4 -4
  3. package/dist/{PreviewEditorUI-DCNxnmI0.mjs → PreviewEditorUI-sWMLp5dT.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BCYICImX.mjs → PreviewQueryProvider-Cg51xq1w.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-BJolUbr1.mjs → SdkPreviewModeRuntime-h2ti3Hch.mjs} +688 -519
  6. package/dist/{SiteChromeCustomizeContext-CKgEpoxi.mjs → SiteChromeCustomizeContext-DEACFH9m.mjs} +3381 -2017
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +5643 -66
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +513 -6
  9. package/dist/_dts/api/src/appointmentEndpointDefinitions.d.ts +49 -0
  10. package/dist/_dts/api/src/appointmentServiceCategoryEndpoints.d.ts +75 -0
  11. package/dist/_dts/api/src/appointmentServiceContracts.d.ts +80 -0
  12. package/dist/_dts/api/src/appointmentSetup.d.ts +8 -1
  13. package/dist/_dts/api/src/bookingConfig.d.ts +8 -1
  14. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +10 -26
  15. package/dist/_dts/api/src/bookingManagementEventEndpointTypes.d.ts +45 -1
  16. package/dist/_dts/api/src/clientErrorReporting.d.ts +50 -0
  17. package/dist/_dts/api/src/communications.d.ts +32 -24
  18. package/dist/_dts/api/src/contentRuntime.d.ts +3 -5
  19. package/dist/_dts/api/src/endpoints.d.ts +316 -134
  20. package/dist/_dts/api/src/event-visibility.d.ts +20 -0
  21. package/dist/_dts/api/src/eventManagementContracts.d.ts +56 -3
  22. package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +24 -0
  23. package/dist/_dts/api/src/eventPageWords.d.ts +19 -0
  24. package/dist/_dts/api/src/eventSeriesRegistrationEndpointDefinitions.d.ts +14 -0
  25. package/dist/_dts/api/src/index.d.ts +7 -1
  26. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  27. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  28. package/dist/_dts/api/src/launchReadiness.d.ts +22 -2
  29. package/dist/_dts/api/src/launchRequirementPriority.d.ts +3 -0
  30. package/dist/_dts/api/src/newsletterCampaignCommandEndpoints.d.ts +13 -0
  31. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +30 -11
  32. package/dist/_dts/api/src/occurrenceScheduling.d.ts +10 -0
  33. package/dist/_dts/api/src/onboarding/confirmationResend.d.ts +3 -0
  34. package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +44 -0
  35. package/dist/_dts/api/src/participantMessaging.d.ts +11 -1
  36. package/dist/_dts/api/src/publicBookingService.d.ts +35 -1
  37. package/dist/_dts/api/src/publicExperience/newsletterEndpoints.d.ts +13 -0
  38. package/dist/_dts/api/src/publicNewsletterEndpointDefinitions.d.ts +58 -0
  39. package/dist/_dts/api/src/schemas/admin-observability-logs.d.ts +3 -3
  40. package/dist/_dts/api/src/sdk-event-upsert.d.ts +40 -1
  41. package/dist/_dts/api/src/sdkContracts.d.ts +3 -42
  42. package/dist/_dts/api/src/sdkCourseBooking.d.ts +30 -0
  43. package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +76 -0
  44. package/dist/_dts/api/src/sdkEventLifecycle.d.ts +37 -0
  45. package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +18 -0
  46. package/dist/_dts/api/src/sdkPageDesign.d.ts +388 -0
  47. package/dist/_dts/api/src/sdkPageDesignEndpointDefinitions.d.ts +22 -0
  48. package/dist/_dts/api/src/sdkPullEventContracts.d.ts +46 -0
  49. package/dist/_dts/api/src/siteAddressEndpoints.d.ts +29 -0
  50. package/dist/_dts/api/src/siteManagementEndpointDefinitions.d.ts +49 -0
  51. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +4 -38
  52. package/dist/_dts/api/src/siteOnboarding.d.ts +75 -9
  53. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -1
  54. package/dist/_dts/api/src/types.d.ts +8 -1
  55. package/dist/_dts/api/src/wholeSeriesRuns.d.ts +14 -0
  56. package/dist/_dts/blocks/src/PageRenderer.d.ts +4 -4
  57. package/dist/_dts/blocks/src/bindings/index.d.ts +2 -2
  58. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +24 -0
  59. package/dist/_dts/blocks/src/index.d.ts +3 -1
  60. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +10 -0
  61. package/dist/_dts/blocks/src/pageRenderJoins.d.ts +68 -0
  62. package/dist/_dts/blocks/src/pageRenderPlan.d.ts +8 -27
  63. package/dist/_dts/blocks/src/pageRenderPreparation.d.ts +7 -4
  64. package/dist/_dts/blocks/src/pageRendererBoundaries.d.ts +40 -23
  65. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +3 -1
  66. package/dist/_dts/blocks/src/server.d.ts +1 -1
  67. package/dist/_dts/blocks/src/system/blocks/appointment-services.d.ts +2 -0
  68. package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +2 -2
  69. package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +1 -1
  70. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +27 -5
  71. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +14 -1
  72. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
  73. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -47
  74. package/dist/_dts/blocks/src/system/icons/social.d.ts +1 -1
  75. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +29 -3
  76. package/dist/_dts/blocks/src/system/registry.d.ts +1 -1
  77. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +8 -1
  78. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +22 -2
  79. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +3 -1
  80. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +57 -2
  81. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.service-categories.d.ts +29 -0
  82. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.service-choices.d.ts +13 -0
  83. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +3 -3
  84. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +13 -1
  85. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +2 -1
  86. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +23 -7
  87. package/dist/_dts/blocks/src/system/runtime/nodes/form.fields.d.ts +5 -0
  88. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.block-submission.d.ts +36 -0
  89. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.d.ts +1 -1
  90. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +6 -1
  91. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.parts.d.ts +46 -0
  92. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +20 -1
  93. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +2 -1
  94. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +2 -1
  95. package/dist/_dts/blocks/src/system/runtime/shared/components/CheckboxChoice.d.ts +18 -0
  96. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
  97. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  98. package/dist/_dts/content-editor/src/primitives/previewEditableOutline.d.ts +2 -0
  99. package/dist/_dts/content-editor/src/ui/editorBlockEquality.d.ts +3 -0
  100. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +3 -3
  101. package/dist/_dts/content-model/src/content-types/schema.d.ts +1 -1
  102. package/dist/_dts/core/src/appointment-service-categories.d.ts +108 -0
  103. package/dist/_dts/core/src/block-content-identity.d.ts +5 -0
  104. package/dist/_dts/core/src/editor-state.d.ts +2 -1
  105. package/dist/_dts/core/src/index.d.ts +2 -0
  106. package/dist/_dts/core/src/mailing-list-submission.d.ts +3 -1
  107. package/dist/_dts/core/src/public-event-booking-availability.d.ts +20 -1
  108. package/dist/_dts/core/src/public-profile.d.ts +12 -1
  109. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +711 -242
  110. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +3 -0
  111. package/dist/_dts/editor-blocks/src/block-editor/EmptyState.d.ts +13 -1
  112. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +2 -2
  113. package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
  114. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +16 -1
  115. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/types.d.ts +13 -0
  116. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/utils.d.ts +29 -0
  117. package/dist/_dts/preview-next/src/client/blocks/BoundaryControl.d.ts +7 -2
  118. package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +1 -1
  119. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +3 -3
  120. package/dist/_dts/preview-next/src/client/blocks/previewProjection/applyPreviewProjections.d.ts +1 -3
  121. package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -2
  122. package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +2 -2
  123. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -1
  124. package/dist/_dts/sdk/src/client/runtimeCacheKeys.d.ts +8 -0
  125. package/dist/_dts/sdk/src/client/types.d.ts +1 -1
  126. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  127. package/dist/_dts/sdk/src/contracts/page.d.ts +7 -2
  128. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +5 -0
  129. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +2 -2
  130. package/dist/_dts/sdk/src/next/renderSdkContent.d.ts +0 -1
  131. package/dist/_dts/sdk/src/public-api/contracts.d.ts +6 -8
  132. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +4 -4
  133. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +4 -4
  134. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +7 -2
  135. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +5 -2
  136. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +6 -1
  137. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +2 -0
  138. package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +6 -2
  139. package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +5 -1
  140. package/dist/_dts/sdk/src/version.d.ts +1 -1
  141. package/dist/_dts/surfaces/src/index.d.ts +10 -0
  142. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  143. package/dist/_dts/theme-core/src/inputs/checkable.d.ts +42 -0
  144. package/dist/_dts/theme-core/src/inputs/inputGroup.d.ts +19 -0
  145. package/dist/_dts/theme-core/src/layout/boundaryCss.d.ts +3 -0
  146. package/dist/_dts/theme-core/src/site-styles/compositionBudget.d.ts +8 -0
  147. package/dist/_dts/theme-core/src/site-styles/contentTemplateRuntimeCompiler.d.ts +3 -2
  148. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +1 -3
  149. package/dist/_dts/theme-core/src/site-styles/generatedDesignPipeline.d.ts +3 -0
  150. package/dist/_dts/theme-core/src/site-styles/index.d.ts +3 -0
  151. package/dist/_dts/theme-core/src/site-styles/joinTreatment.d.ts +132 -0
  152. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorBoundaries.d.ts +31 -0
  153. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +33 -29
  154. package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +4 -4
  155. package/dist/_dts/theme-core/src/site-styles/pageFlowPresets.d.ts +36 -0
  156. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +4 -10
  157. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +17 -4
  158. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +20 -74
  159. package/dist/_dts/theme-core/src/site-styles/sectionBoundaryComposition.d.ts +95 -0
  160. package/dist/_dts/theme-core/src/site-styles/sectionTransitions.d.ts +80 -518
  161. package/dist/_dts/theme-core/src/site-styles/siteStyleBlockPolicies.d.ts +9 -4
  162. package/dist/_dts/theme-core/src/site-styles/transitionCatalogue.d.ts +320 -0
  163. package/dist/_dts/theme-core/src/site-styles/types.d.ts +3 -18
  164. package/dist/_dts/ui/src/navigation-tabs.d.ts +2 -1
  165. package/dist/client/{BookingConsentAgreement-DoAILrkN.mjs → BookingConsentAgreement-BQKL045f.mjs} +2 -2
  166. package/dist/client/CheckboxChoice--W2n6yKs.mjs +24 -0
  167. package/dist/client/{DiscountCodeDisclosure-X528hUTf.mjs → DiscountCodeDisclosure-CsOtjFY7.mjs} +1 -1
  168. package/dist/client/{EventCombined.client-DSBVwq5m.mjs → EventCombined.client-BdRjVbhH.mjs} +6 -6
  169. package/dist/client/{EventListing.client-DmFAX7Vb.mjs → EventListing.client-DBxC6xOU.mjs} +2 -2
  170. package/dist/client/{LeafletStaticMap-BAqXdfhq.mjs → LeafletStaticMap-mHEJKrTs.mjs} +1 -1
  171. package/dist/client/{ThemedButton-BwNFVwi4.mjs → ThemedButton-CE5KYT6z.mjs} +1 -1
  172. package/dist/client/{accordion-DRhMdkbd.mjs → accordion-BEQNSptH.mjs} +1 -1
  173. package/dist/client/{bookingForm-iJ_nCsNF.mjs → bookingForm-AMr-s5vw.mjs} +168 -95
  174. package/dist/client/bookings.mjs +239 -110
  175. package/dist/client/{carousel-D8zuffZr.mjs → carousel-Bbt_QgJy.mjs} +1 -1
  176. package/dist/client/{cart-DeMGJViN.mjs → cart-CnWi30zJ.mjs} +3 -3
  177. package/dist/client/{checkout-DXc06Km2.mjs → checkout-f3nkWgd4.mjs} +3 -3
  178. package/dist/client/client.mjs +3222 -1612
  179. package/dist/client/{context-CDLCfDep.mjs → context-Bc8T6pCe.mjs} +1 -1
  180. package/dist/client/{dates-ClFx7Epy.mjs → dates-DUsCEzLb.mjs} +2 -3
  181. package/dist/client/{eventCalendar-BaGpnOGN.mjs → eventCalendar-CKwgXui5.mjs} +9 -9
  182. package/dist/client/{eventCombined-ywONOx2m.mjs → eventCombined-CBAOSTGR.mjs} +4 -4
  183. package/dist/client/{eventDetails-B2LlOTYY.mjs → eventDetails-Dh-_WiBD.mjs} +4 -4
  184. package/dist/client/{eventListing-CMgxWpqP.mjs → eventListing-CA3frIH5.mjs} +4 -4
  185. package/dist/client/{eventRegistration-BarLDNHR.mjs → eventRegistration-BHtsgdcg.mjs} +21 -22
  186. package/dist/client/{form-BjqKaBJ7.mjs → form-C2h3YAcg.mjs} +135 -104
  187. package/dist/client/{headerSection-CP4XDwz1.mjs → headerSection-lwMuMTH9.mjs} +3 -3
  188. package/dist/client/hooks.mjs +1023 -148
  189. package/dist/client/{locationMap-C5gW-d-w.mjs → locationMap-DJ2bLODV.mjs} +3 -3
  190. package/dist/client/{newsletterForm-afXlVSA0.mjs → newsletterForm-8Pu5K32g.mjs} +225 -102
  191. package/dist/client/{pricing-Bl1CAl28.mjs → pricing-HHx3IgBz.mjs} +1 -1
  192. package/dist/client/{productDetail-CvQ3jWQe.mjs → productDetail-C_1odnAf.mjs} +3 -3
  193. package/dist/client/{productList-U874PGO7.mjs → productList-CtCv-Nmx.mjs} +3 -3
  194. package/dist/client/{propsDecoder-DPXtCZWP.mjs → propsDecoder-Dcgsncxb.mjs} +111 -55
  195. package/dist/client/rendering/client.mjs +1389 -722
  196. package/dist/client/rendering/islands.mjs +17 -17
  197. package/dist/client/rendering.mjs +3136 -1400
  198. package/dist/client/{routeIslandApiConfig-NGYiUWXu.mjs → routeIslandApiConfig-CWLP7wu3.mjs} +1 -1
  199. package/dist/client/{scrollToBlock-0-C3DVhK.mjs → scrollToBlock-BNgaEUpo.mjs} +1 -1
  200. package/dist/client/{shop-BXjXhM9P.mjs → shop-DQXrQ8kJ.mjs} +7 -7
  201. package/dist/client/{shop-commerce-BZ6UlWJ7.mjs → shop-commerce-B88zmWWo.mjs} +6 -6
  202. package/dist/client/{shop-commerce-store-DlSBXb3D.mjs → shop-commerce-store-DtSfkKuX.mjs} +1 -1
  203. package/dist/client/{shopShared-kkEOiLPA.mjs → shopShared-cuaONpkJ.mjs} +4 -4
  204. package/dist/client/{useEventFilters-zvnnE1ro.mjs → useEventFilters-Bukew6Gb.mjs} +6 -6
  205. package/dist/preview-next/before-render.mjs +500 -165
  206. package/dist/preview-next/client/runtime.mjs +4 -4
  207. package/dist/preview-next/editor-base.css +11 -0
  208. package/dist/preview-next/keepAlive.mjs +460 -165
  209. package/dist/preview-next/middleware.mjs +461 -165
  210. package/dist/{previewAuthStore-JA6-I_sL.mjs → previewAuthStore-h5IgbSp4.mjs} +485 -165
  211. package/dist/{sdk-runtime-DFJlQt3q.mjs → sdk-runtime-DTc1uIXn.mjs} +2 -2
  212. package/dist/{separator-o8GHb1xh.mjs → separator-BpHS1KZK.mjs} +1 -1
  213. package/dist/server/components.mjs +3088 -1307
  214. package/dist/server/config-validation.mjs +927 -109
  215. package/dist/server/config.mjs +927 -109
  216. package/dist/server/data.mjs +939 -110
  217. package/dist/server/index.mjs +513 -169
  218. package/dist/server/next.mjs +2874 -1195
  219. package/dist/server/page-converter.mjs +420 -79
  220. package/dist/server/prebuild.mjs +1 -1
  221. package/dist/server/rendering/server.mjs +3071 -1289
  222. package/dist/server/rendering.mjs +3169 -1350
  223. package/dist/server/routing.mjs +1085 -159
  224. package/dist/server/server.mjs +1042 -291
  225. package/dist/server/theme-bridge.mjs +1658 -137
  226. package/dist/server/theme.mjs +6 -4
  227. package/dist/styles/index.css +186 -65
  228. package/package.json +2 -1
@@ -5,6 +5,7 @@ import { type Theme } from '../../blocks/src/index';
5
5
  import type { PageDesignEditorReadModel } from '../../theme-core/src/site-styles/index';
6
6
  import { type EditorStructuralCommand } from '../../core/src/index';
7
7
  import { type CustomBlockRegistryEntry, type SdkConfigForBlockPicker } from './block-editor/sdkBlockMerger';
8
+ import { type BlockCreationCopy } from './block-editor/EmptyState';
8
9
  import { type BlockActionPresentation } from './block-editor/actionPresentation';
9
10
  import { type ReorderControlMode } from './block-editor/reorderControlMode';
10
11
  import { type BlockEditorOwner } from './block-editor/owner';
@@ -70,6 +71,8 @@ export type BlockEditorProps = {
70
71
  customBlocks?: readonly CustomBlockRegistryEntry[];
71
72
  allowedBlockKinds?: readonly string[] | null;
72
73
  emptyUnavailableMessage?: string;
74
+ /** The empty state's words and the add button's label. */
75
+ creationCopy?: BlockCreationCopy;
73
76
  initialCollapsed?: boolean;
74
77
  reorderControlMode?: ReorderControlMode;
75
78
  actionPresentation?: BlockActionPresentation;
@@ -1,3 +1,15 @@
1
- export declare const EmptyState: ({ onAdd }: {
1
+ /**
2
+ * The words the editor uses for adding. A host that calls blocks something
3
+ * else, such as an event page's extra sections, passes its own.
4
+ */
5
+ export type BlockCreationCopy = Readonly<{
6
+ emptyTitle: string;
7
+ emptyDescription: string;
8
+ addLabel: string;
9
+ }>;
10
+ export declare const DEFAULT_BLOCK_CREATION_COPY: BlockCreationCopy;
11
+ export declare function addBlockLabel(copy?: BlockCreationCopy): string;
12
+ export declare const EmptyState: ({ onAdd, copy, }: {
2
13
  onAdd: () => void;
14
+ copy?: BlockCreationCopy;
3
15
  }) => import("react").JSX.Element;
@@ -1,5 +1,5 @@
1
- import type { EditorBlockId, EditorBlockBaselineInput, EditorDraftBlockBaselineUpdateMetaInput, EditorDraftBlockInitMetaInput, EditorStructuralDraftSnapshot } from '../../../core/src/index';
2
- export type BlockItem = {
1
+ import type { EditorBlockId, EditorBlockBaselineInput, EditorDraftBlockBaselineUpdateMetaInput, EditorDraftBlockInitMetaInput, EditorStructuralDraftSnapshot, BlockContentIdentity } from '../../../core/src/index';
2
+ export type BlockItem = Partial<BlockContentIdentity> & {
3
3
  id?: string | null;
4
4
  kind: string;
5
5
  content?: Record<string, unknown> | null;
@@ -1,6 +1,7 @@
1
1
  export { BlockEditor } from './BlockEditor';
2
2
  export type { BlockEditorProps } from './BlockEditor';
3
3
  export type { BlockEditorOwner } from './block-editor/owner';
4
+ export type { BlockCreationCopy } from './block-editor/EmptyState';
4
5
  export { createCustomBlockRegistry, mergeBlockDescriptorsWithRegistry, mergeBlockDescriptors, getBlockManifestFromSdkConfig, transformSdkBlockToManifest, transformSdkBlockToDefinition, transformToBlockDescriptor, } from './block-editor/sdkBlockMerger';
5
6
  export type { CustomBlockManifestSource, CustomBlockRegistry, CustomBlockRegistryEntry, ResolvedCustomBlockManifest, SdkCustomBlock, SdkConfigForBlockPicker, } from './block-editor/sdkBlockMerger';
6
7
  export type { BlockEditorHandle, BlockFocusRequest, BlockFocusTarget, BlockItem, } from './block-editor/types';
@@ -1,9 +1,10 @@
1
1
  import type { GetEndpoint, ApiClient } from '../../../../api/src/index';
2
2
  import type { SiteOptionSource } from '../../../../blocks/src/index';
3
- import type { SiteOptionWidgetAdapter, SiteOptionWidgetAdapters, SiteOptionWidgetItem } from './types';
3
+ import type { SiteOptionSingleSelectionConfig, SiteOptionWidgetAdapter, SiteOptionWidgetAdapters, SiteOptionWidgetItem } from './types';
4
4
  type ListEventCategoriesResponse = NonNullable<GetEndpoint<'listEventCategories'>['response']>;
5
5
  type ListVenuesResponse = NonNullable<GetEndpoint<'listVenues'>['response']>;
6
6
  type ListAppointmentResourcesResponse = NonNullable<GetEndpoint<'listAppointmentResources'>['response']>;
7
+ type ListAppointmentServiceCategoriesResponse = NonNullable<GetEndpoint<'listAppointmentServiceCategories'>['response']>;
7
8
  export type SiteOptionLoadItemsArgs = Readonly<{
8
9
  siteId: string;
9
10
  source: SiteOptionSource;
@@ -36,12 +37,19 @@ export declare const siteOptionWidgetLabels: {
36
37
  readonly empty: "No staff yet";
37
38
  readonly emptySelection: "Choose a staff member to restrict this block.";
38
39
  };
40
+ readonly appointmentServiceCategories: {
41
+ readonly loading: "Loading categories...";
42
+ readonly select: "All categories";
43
+ readonly empty: "No categories yet";
44
+ readonly emptySelection: "All categories";
45
+ };
39
46
  };
40
47
  export declare const siteOptionLoadFailureMessages: {
41
48
  readonly eventSeries: "We couldn't load your events. Please try again.";
42
49
  readonly eventCategories: "Failed to load event categories";
43
50
  readonly venues: "Failed to load venues";
44
51
  readonly staffMembers: "Failed to load staff members";
52
+ readonly appointmentServiceCategories: "Failed to load service categories";
45
53
  };
46
54
  export declare function mapEventCategoriesToSiteOptionItems(payload: ListEventCategoriesResponse): SiteOptionWidgetItem[];
47
55
  export declare function mapEventsToSiteOptionItems(events: readonly Readonly<{
@@ -65,6 +73,13 @@ export declare function mapEventsToSiteOptionItems(events: readonly Readonly<{
65
73
  }>[]): SiteOptionWidgetItem[];
66
74
  export declare function mapVenuesToSiteOptionItems(payload: ListVenuesResponse): SiteOptionWidgetItem[];
67
75
  export declare function mapStaffMembersToSiteOptionItems(payload: ListAppointmentResourcesResponse): SiteOptionWidgetItem[];
76
+ export declare function mapAppointmentServiceCategoriesToSiteOptionItems(payload: ListAppointmentServiceCategoriesResponse): SiteOptionWidgetItem[];
77
+ /**
78
+ * Sources whose single selection has an explicit default option and can go
79
+ * stale (issue 1403). Only appointment-service categories opt in: the event
80
+ * calendar pickers keep their existing behaviour.
81
+ */
82
+ export declare const siteOptionSingleSelection: Partial<Readonly<Record<SiteOptionSource, SiteOptionSingleSelectionConfig>>>;
68
83
  export declare function loadSiteOptionItemsFromApi({ apiClient, siteId, source }: SiteOptionLoadItemsArgs & Readonly<{
69
84
  apiClient: ApiClient;
70
85
  }>): Promise<SiteOptionWidgetItem[]>;
@@ -11,10 +11,23 @@ export type SiteOptionWidgetSelectionLabelArgs = {
11
11
  items: readonly SiteOptionWidgetItem[];
12
12
  };
13
13
  export type SiteOptionWidgetAdapterLabels = PickerLabels;
14
+ /**
15
+ * Opt-in behaviour for a single-select source. The empty value is offered as
16
+ * a named default option, and a stored value missing from the loaded options
17
+ * (it was deleted) shows `missingSelection.label` with its warning.
18
+ */
19
+ export type SiteOptionSingleSelectionConfig = Readonly<{
20
+ defaultOptionLabel: string;
21
+ missingSelection: Readonly<{
22
+ label: string;
23
+ warning: string;
24
+ }>;
25
+ }>;
14
26
  export type SiteOptionWidgetAdapter = {
15
27
  loadItems: (args: SiteOptionWidgetAdapterArgs) => Promise<SiteOptionWidgetItem[]>;
16
28
  renderManageLink?: (args: SiteOptionWidgetAdapterArgs) => ReactNode;
17
29
  formatSelectionLabel?: (args: SiteOptionWidgetSelectionLabelArgs) => string;
18
30
  labels?: SiteOptionWidgetAdapterLabels;
31
+ singleSelection?: SiteOptionSingleSelectionConfig;
19
32
  };
20
33
  export type SiteOptionWidgetAdapters = Record<SiteOptionSource, SiteOptionWidgetAdapter>;
@@ -2,4 +2,33 @@ import { type SiteOptionSource } from '../../../../blocks/src/index';
2
2
  import type { SelectFieldConfig } from '../../../../block-form/src/index';
3
3
  export type SiteOptionValue = string | string[] | null | undefined;
4
4
  export declare function normalizeSiteOptionMultiValue(value: SiteOptionValue): string[];
5
+ /**
6
+ * A single selection read against the loaded options.
7
+ *
8
+ * - `default`: nothing stored, so the source's default option applies.
9
+ * - `selected`: the stored value is one of the options.
10
+ * - `unresolved`: the options haven't loaded (or failed), so a stored value
11
+ * can't be judged yet. It must not be reported as deleted.
12
+ * - `missing`: the options loaded and the stored value isn't among them, so
13
+ * whatever it pointed at has been deleted.
14
+ */
15
+ export type SiteOptionSingleSelectionState = Readonly<{
16
+ kind: 'default';
17
+ }> | Readonly<{
18
+ kind: 'selected';
19
+ value: string;
20
+ }> | Readonly<{
21
+ kind: 'unresolved';
22
+ value: string;
23
+ }> | Readonly<{
24
+ kind: 'missing';
25
+ value: string;
26
+ }>;
27
+ export declare function resolveSiteOptionSingleSelection(input: Readonly<{
28
+ value: SiteOptionValue;
29
+ items: readonly Readonly<{
30
+ value: string;
31
+ }>[];
32
+ loaded: boolean;
33
+ }>): SiteOptionSingleSelectionState;
5
34
  export declare function getSiteOptionSource(config: SelectFieldConfig): SiteOptionSource | null;
@@ -1,10 +1,15 @@
1
1
  import React from 'react';
2
- import { type DesignBlockId } from '../../../../theme-core/src/site-styles/index';
2
+ import { type BoundaryOutcome, type DesignBlockId } from '../../../../theme-core/src/site-styles/index';
3
3
  type BoundaryControlProps = Readonly<{
4
4
  previousBlockId: DesignBlockId;
5
5
  nextBlockId: DesignBlockId;
6
6
  previousBlockKind: string;
7
7
  nextBlockKind: string;
8
+ /**
9
+ * What the renderer composed for this join, or null when the pair has no
10
+ * break. Informational only: it never changes the controls or the choice.
11
+ */
12
+ outcome: BoundaryOutcome | null;
8
13
  }>;
9
- export declare function BoundaryControl({ previousBlockId, nextBlockId, previousBlockKind, nextBlockKind, }: BoundaryControlProps): React.JSX.Element | null;
14
+ export declare function BoundaryControl({ previousBlockId, nextBlockId, previousBlockKind, nextBlockKind, outcome, }: BoundaryControlProps): React.JSX.Element | null;
10
15
  export {};
@@ -4,4 +4,4 @@ import type { DraftSnapshot, EditorDraftInspectorStore, EnrichedBlock } from './
4
4
  import { type PreviewProjection } from '../previewProjection';
5
5
  import { type LinkedEntryRenderOverlay } from '../linkedEntryRenderOverlay';
6
6
  export declare function getDraftSnapshots(uiStore: EditorDraftInspectorStore): Map<EditorBlockId, DraftSnapshot>;
7
- export declare function mergeBlockWithDraft(block: BlockItem, draftMap: Map<EditorBlockId, DraftSnapshot>, index: number, projections?: readonly PreviewProjection[], linkedEntryOverlays?: LinkedEntryRenderOverlay, nextBlock?: BlockItem | null): EnrichedBlock;
7
+ export declare function mergeBlockWithDraft(block: BlockItem, draftMap: Map<EditorBlockId, DraftSnapshot>, index: number, projections?: readonly PreviewProjection[], linkedEntryOverlays?: LinkedEntryRenderOverlay): EnrichedBlock;
@@ -1,10 +1,10 @@
1
1
  import type { PageOutline } from '../../../../../blocks/src/index';
2
2
  import type { EditorPreviewInspectorStore } from '../../../../../content-editor/src/index';
3
- import type { EditorBlockId } from '../../../../../core/src/index';
3
+ import type { BlockContentIdentity, EditorBlockId } from '../../../../../core/src/index';
4
4
  import type { BlockItem } from '../../../../../editor-blocks/src/index';
5
5
  import type { CanonicalBlockContent, PreviewProjection, PreviewRenderContent } from '../previewProjection';
6
6
  import type { LinkedEntryRenderOverlay } from '../linkedEntryRenderOverlay';
7
- export type BlockWithContent = {
7
+ export type BlockWithContent = Partial<BlockContentIdentity> & {
8
8
  [key: string]: unknown;
9
9
  id: string | null;
10
10
  kind: string;
@@ -19,7 +19,7 @@ export type DraftSnapshot = {
19
19
  baseline: CanonicalBlockContent | null;
20
20
  current: CanonicalBlockContent | null;
21
21
  };
22
- export type EnrichedBlock = {
22
+ export type EnrichedBlock = BlockContentIdentity & {
23
23
  id: string | null;
24
24
  kind: string;
25
25
  purpose: string;
@@ -3,7 +3,5 @@ import type { BlockItem } from '../../../../../editor-blocks/src/index';
3
3
  import type { CanonicalBlockContent, PreviewProjection, PreviewRenderContent } from './types';
4
4
  export declare function applyPreviewStructureProjections(blockItems: readonly BlockItem[], projections: readonly PreviewProjection[]): BlockItem[];
5
5
  export declare function applyPreviewContentFieldProjections(blockId: EditorBlockId, content: CanonicalBlockContent | null, projections: readonly PreviewProjection[]): CanonicalBlockContent | PreviewRenderContent | null;
6
- export declare function applyPreviewRuntimeContentProjections(block: BlockItem, content: CanonicalBlockContent | PreviewRenderContent | null, projections: readonly PreviewProjection[], adjacency?: Readonly<{
7
- nextContent: Record<string, unknown> | null | undefined;
8
- }>): CanonicalBlockContent | PreviewRenderContent | null;
6
+ export declare function applyPreviewRuntimeContentProjections(block: BlockItem, content: CanonicalBlockContent | PreviewRenderContent | null, projections: readonly PreviewProjection[]): CanonicalBlockContent | PreviewRenderContent | null;
9
7
  export declare function blockHasPreviewContentFieldProjection(blockId: EditorBlockId, projections: readonly PreviewProjection[]): boolean;
@@ -1,6 +1,6 @@
1
1
  import type { BlockItem } from '../../../../../editor-blocks/src/index';
2
- import { type DesignRuntimeRules, type PageDesignEditorReadModel, type RuntimeContentAdjacency, type SurfaceResolutionContext } from '../../../../../theme-core/src/site-styles/previewCompiler';
2
+ import { type DesignRuntimeRules, type PageDesignEditorReadModel, type SurfaceResolutionContext } from '../../../../../theme-core/src/site-styles/previewCompiler';
3
3
  import type { CanonicalBlockContent, PreviewRenderContent, RuntimeContentDecorationProjection } from './types';
4
4
  import type { ComponentRuntimeRules } from '../../../../../theme-core/src/site-styles/previewCompiler';
5
5
  export declare function runtimeContentDecorationProjectionFromEditorModel(editorModel: PageDesignEditorReadModel, surfaceResolutionContext: SurfaceResolutionContext, designRules?: DesignRuntimeRules, componentRules?: ComponentRuntimeRules): RuntimeContentDecorationProjection;
6
- export declare function applyRuntimeContentDecorationProjection(block: BlockItem, content: CanonicalBlockContent | PreviewRenderContent | null, projection: RuntimeContentDecorationProjection, adjacency?: Pick<RuntimeContentAdjacency, 'nextContent'>): PreviewRenderContent;
6
+ export declare function applyRuntimeContentDecorationProjection(block: BlockItem, content: CanonicalBlockContent | PreviewRenderContent | null, projection: RuntimeContentDecorationProjection): PreviewRenderContent;
@@ -1,6 +1,6 @@
1
1
  import type { EditorBlockId } from '../../../../../core/src/index';
2
2
  import type { BlockItem } from '../../../../../editor-blocks/src/index';
3
- import type { CompiledBlockRuntimeFields, CompiledBoundaryRuntime, DesignBlockId } from '../../../../../theme-core/src/site-styles/previewCompiler';
3
+ import type { CompiledBlockRuntimeFields, DesignBlockId, PageRuntimeJoin } from '../../../../../theme-core/src/site-styles/previewCompiler';
4
4
  export type CanonicalBlockContent = Record<string, unknown> & {
5
5
  readonly __contentAuthority?: 'canonical-block-content';
6
6
  };
@@ -55,7 +55,7 @@ export type PreviewProjection = Readonly<{
55
55
  kind: 'runtime-content-decoration';
56
56
  source: 'page-design';
57
57
  fieldsByBlockId: ReadonlyMap<DesignBlockId, CompiledBlockRuntimeFields>;
58
- boundaries: readonly CompiledBoundaryRuntime<DesignBlockId>[];
58
+ joins: readonly PageRuntimeJoin<DesignBlockId>[];
59
59
  }>;
60
60
  export type StructureProjection = Extract<PreviewProjection, {
61
61
  kind: 'structure-overlay';
@@ -11,7 +11,7 @@ export type PreviewBlock = {
11
11
  publishedContent?: Record<string, unknown> | null;
12
12
  bindings?: Record<string, unknown> | null;
13
13
  optimisticHash?: string | null;
14
- };
14
+ } & Partial<import('../../../../core/src/index').BlockContentIdentity>;
15
15
  export type PreviewPageMetadata = {
16
16
  draftTitle: string;
17
17
  draftPath: string;
@@ -7,6 +7,14 @@ export type PublishedRuntimeCacheKey = string & {
7
7
  export type PublishedRuntimeCachePayloadSchemaVersion = number & {
8
8
  readonly [publishedRuntimeCachePayloadSchemaVersionBrand]: 'PublishedRuntimeCachePayloadSchemaVersion';
9
9
  };
10
+ /**
11
+ * Bump when a cached payload's shape changes incompatibly, so readers skip
12
+ * entries written in the old shape until publish or a live success rewrites
13
+ * them.
14
+ *
15
+ * - 2: pages carry intent-only `runtimeJoins` in place of compiled
16
+ * `runtimeBoundaries` (issue 1422).
17
+ */
10
18
  export declare const DEFAULT_PUBLISHED_RUNTIME_CACHE_PAYLOAD_SCHEMA_VERSION: PublishedRuntimeCachePayloadSchemaVersion;
11
19
  export type GetSiteRuntimeCacheParams = Readonly<Pick<GetSiteParams, 'id' | 'slug' | 'domain' | 'currentPath' | 'force'>>;
12
20
  export type GetContentByPathRuntimeCacheParams = Readonly<Pick<GetPageParams, 'siteId' | 'path' | 'preview'>>;
@@ -2,7 +2,7 @@ import type { CalendarWindowRequest, CalendarWindowPage } from '../../../blocks/
2
2
  import type { CheckRedirectResponse, EntriesResponse, EntryResponse, PageResponse, PublicBookingServicesResponse, PublicWeeklySlotAvailabilityResponse, PublicFormResponse, PublicFormsResponse, PublicProductsResponse, PublicTeamMembersResponse, PublicMembershipsResponse, PublicPassesResponse, PublicEventDetailsResponse, PublicEventsResponse, ResolveEventOccurrenceResponse, ResolveEventRunResponse, RouteDecisionResponse, RouteOutcomeResponse, RoutableContentResponse, SiteResponse, SitemapRoutesResponse, PublicProductCategorySelector } from '../public-api/contracts';
3
3
  import type { PublishedRuntimeCacheAdapter, PublishedRuntimeCacheAdapterErrorKind } from './runtimeCachePolicy';
4
4
  import type { EventPageSurfaceSubjectRefWire } from '../../../core/src/index';
5
- export type { CheckRedirectResponse, EntriesResponse, EntryResponse, PageResponse, PublicBookingServicesResponse, PublicWeeklySlotAvailabilityResponse, PublicEventsResponse, PublicFormResponse, PublicFormsResponse, PublicProductsResponse, PublicTeamMembersResponse, PublicMembershipsResponse, PublicPassesResponse, PublicEventDetailsResponse, ResolveEventOccurrenceResponse, ResolveEventRunResponse, RouteDecisionResponse, RouteOutcomeResponse, RoutableContentResponse, SiteResponse, SitemapRoutesResponse, } from '../public-api/contracts';
5
+ export type { CheckRedirectResponse, EntriesResponse, EntryResponse, PageResponse, PublicBookingServiceCatalogueItem, PublicBookingServicesResponse, PublicServiceCategorySummary, PublicWeeklySlotAvailabilityResponse, PublicEventsResponse, PublicFormResponse, PublicFormsResponse, PublicProductsResponse, PublicTeamMembersResponse, PublicMembershipsResponse, PublicPassesResponse, PublicEventDetailsResponse, ResolveEventOccurrenceResponse, ResolveEventRunResponse, RouteDecisionResponse, RouteOutcomeResponse, RoutableContentResponse, SiteResponse, SitemapRoutesResponse, } from '../public-api/contracts';
6
6
  /**
7
7
  * Pagination metadata returned when `includeMeta: true`
8
8
  */
@@ -1,6 +1,6 @@
1
1
  export type { TipTapNode, TipTapMark, RichTextDoc, InlineText, InlineTextAccentTone, InlineTextHighlightTone, InlineTextMark, InlineTextRun, Media, LinkValue, InternalRouteOnlyLinkValue, InternalResolvedLinkValue, InternalLinkValue, ExternalLinkValue, CustomLinkValue, PageLinkValue, EntryLinkValue, RichTextPrimitiveProps, RichTextVariant, } from './content';
2
2
  export type { AppointmentBookingContent, BlogListingContent, BlogPostContent, BodyTextAlignment, BodyTextContent, ButtonVariant, CalendarTabViews, CartContent, CardRole, CardStylesContent, CheckoutContent, CollectionContent, ColumnsContent, ColumnOption, ContainerStylesContent, ContentFrameIntent, CtaFullContent, DisplayMode, EmbedContent, EventCalendarContent, EventDetailsContent, EventLayout, EventListingContent, EventRegistrationContent, EventSpotlightContent, FaqContent, FaqItem, FeatureCardLegacySurfaceRole, FeatureCardSurfaceRole, FilterAutoShow, FormBlockContent, GiftingContent, HeroContent, HeroCta, HeroCtaInput, HeroMedia, ImageColSize, ImageGalleryContent, IntroContent, LocationMapContent, LayoutAlign, LayoutWidth, MediaTextAlignment, MediaTextAspectRatio, MediaTextContent, MediaTextImagePosition, NewsletterSignupContent, OfferingsPreviewContent, ProductDetailContent, ProductListContent, RecurringScheduleContent, SectionStylesContent, SemanticIconId, SemanticSpacing, ShopContent, SingleButtonContent, SiteFooterContent, SiteHeaderContent, StackContentAlignment, StackImagePosition, SystemBlockContentByFullKind, SystemBlockContentByKind, SystemBlockContentFor, SystemBlockShortKind, TeamMembersContent, TestimonialEntryContent, TestimonialsBlockContent, ThumbnailPadding, ThumbnailShape, VideoGridContent, WeekStart, BlockIconValue, FeatureCardIconTreatment, } from './system-block-content';
3
- export type { PageOutline, PageRuntimeBoundary, BlockOutline, RouteMap, RouteMapEntry, OccurrenceContextData, EntrySubrouteContextData, } from './page';
3
+ export type { PageOutline, PageRuntimeJoin, BlockOutline, RouteMap, RouteMapEntry, OccurrenceContextData, EntrySubrouteContextData, } from './page';
4
4
  export type { Theme, ThemeTokens } from './theme';
5
5
  export type { CustomCssDeclarationsInput, CustomCssRuleInput, CustomCssNestedRuleInput, CustomCssAtRuleInput, KeyframesAtRuleInput, FontFaceAtRuleInput, MediaAtRuleInput, SupportsAtRuleInput, RawAtRuleInput, } from './custom-css';
6
6
  export type { BindingSource, BindingTransformName, BindingDescriptor, BindingInput, BindingMap, BindingContext, } from './bindings';
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Keep these types structurally compatible with the API responses.
5
5
  */
6
- import type { CompiledBoundaryRuntime } from '../../../theme-core/src/site-styles/index';
6
+ import type { PageRuntimeJoin as ThemeCorePageRuntimeJoin } from '../../../theme-core/src/site-styles/index';
7
7
  export type BlockOutline = {
8
8
  id: string | null;
9
9
  kind: string;
@@ -19,7 +19,12 @@ export type PageOutline = {
19
19
  purpose: string;
20
20
  blocks: BlockOutline[];
21
21
  };
22
- export type PageRuntimeBoundary = CompiledBoundaryRuntime<string>;
22
+ /**
23
+ * A section break between two adjacent blocks, sent as intent only. The
24
+ * renderer composes placement, paint and reserves from the blocks' final
25
+ * content; the boundary id derives from the two block ids.
26
+ */
27
+ export type PageRuntimeJoin = ThemeCorePageRuntimeJoin<string>;
23
28
  export type RouteMapEntry = string | {
24
29
  path?: string | null;
25
30
  href?: string | null;
@@ -559,6 +559,11 @@ export type AppointmentBookingContent = {
559
559
  export type AppointmentServicesContent = {
560
560
  heading?: string | null;
561
561
  description?: unknown;
562
+ /**
563
+ * Show one appointment-service category, with its heading and intro. Unset
564
+ * shows every category grouped; a deleted category falls back to that.
565
+ */
566
+ categoryId?: string | null;
562
567
  _sectionStyles?: SectionStylesContent;
563
568
  };
564
569
  export type WeeklySlotAvailabilityContent = {
@@ -19,10 +19,10 @@ export declare const fieldTypeEnum: z.ZodEnum<{
19
19
  boolean: "boolean";
20
20
  link: "link";
21
21
  text: "text";
22
+ group: "group";
22
23
  select: "select";
23
24
  media: "media";
24
25
  repeater: "repeater";
25
- group: "group";
26
26
  richText: "richText";
27
27
  }>;
28
28
  /**
@@ -167,8 +167,8 @@ export declare const pass1OutputSchema: z.ZodObject<{
167
167
  blockDescription: z.ZodNullable<z.ZodString>;
168
168
  category: z.ZodEnum<{
169
169
  content: "content";
170
- media: "media";
171
170
  layout: "layout";
171
+ media: "media";
172
172
  marketing: "marketing";
173
173
  blog: "blog";
174
174
  interactive: "interactive";
@@ -11,7 +11,6 @@ type CommonRenderInput = Readonly<{
11
11
  content: LoadContentResult;
12
12
  entrySubrouteContext: ReturnType<typeof toEntrySubrouteContext>;
13
13
  portalToken: string | null;
14
- preview: boolean;
15
14
  }>;
16
15
  export type SdkContentRenderInput = CommonRenderInput & (Readonly<{
17
16
  kind: 'themed';
@@ -1,8 +1,8 @@
1
1
  import type { AddressedLocationValue, BusinessAddress } from '../../../core/src/index';
2
2
  import type { ResolvedInternalLinkEntityType } from '../../../blocks/src/index';
3
- import type { APIEndpoints, PublicBookingService as ApiPublicBookingService, RoutableContentItem as ApiRoutableContentItem, SdkRuntimePageSurfaceSubject as ApiSdkRuntimePageSurfaceSubject, SiteBySlugResponse as ApiSiteBySlugResponse, SiteBookingOfferingPresetSummary as ApiSiteBookingOfferingPresetSummary, SdkBlockContentAdmission } from '../../../api/src/index';
3
+ import type { APIEndpoints, PublicBookingService as ApiPublicBookingService, PublicBookingServiceCatalogueItem as ApiPublicBookingServiceCatalogueItem, PublicBookingServicesResponse as ApiPublicBookingServicesResponse, PublicServiceCategorySummary as ApiPublicServiceCategorySummary, RoutableContentItem as ApiRoutableContentItem, SdkRuntimePageSurfaceSubject as ApiSdkRuntimePageSurfaceSubject, SiteBySlugResponse as ApiSiteBySlugResponse, SiteBookingOfferingPresetSummary as ApiSiteBookingOfferingPresetSummary, SdkBlockContentAdmission } from '../../../api/src/index';
4
4
  import type { MediaAssetIndexItem, SiteFooterContent, SiteHeaderContent } from '../contracts';
5
- import type { CompiledBoundaryRuntime } from '../../../theme-core/src/site-styles/index';
5
+ import type { PageRuntimeJoin } from '../../../theme-core/src/site-styles/index';
6
6
  import type { BlockFieldConfig as SdkBlockFieldConfig, BlockFieldOptionsMap as SdkBlockFieldOptionsMap, ContentConfig as SdkContentConfig, ContainerOptionsConfig as SdkContainerOptionsConfig, FieldSelectOption as SdkFieldSelectOption, SdkCustomBlock, SdkThemeConfig, SdkThemePalette, SectionBackground as SdkSectionBackground, SectionOptionsConfig as SdkSectionOptionsConfig, SiteStyleConfig as SdkSiteStyleConfig } from '../config/types';
7
7
  import type { PublicTeamMemberBlockItem } from './teamMemberContracts';
8
8
  import type { ResolveEventSubrouteResponse } from './eventSubrouteContracts';
@@ -370,7 +370,7 @@ export type SdkRuntimePage = {
370
370
  content: Record<string, unknown>;
371
371
  admission?: SdkBlockContentAdmission;
372
372
  }>;
373
- runtimeBoundaries?: readonly CompiledBoundaryRuntime<string>[];
373
+ runtimeJoins?: readonly PageRuntimeJoin<string>[];
374
374
  };
375
375
  export type SdkTemplate = {
376
376
  id: string;
@@ -562,11 +562,9 @@ export type PublicFormsResponse = {
562
562
  forms: FormRecord[];
563
563
  };
564
564
  export type PublicBookingService = ApiPublicBookingService;
565
- export type PublicBookingServicesResponse = {
566
- services: Array<Omit<PublicBookingService, 'description'> & {
567
- description?: string;
568
- }>;
569
- };
565
+ export type PublicServiceCategorySummary = ApiPublicServiceCategorySummary;
566
+ export type PublicBookingServiceCatalogueItem = ApiPublicBookingServiceCatalogueItem;
567
+ export type PublicBookingServicesResponse = ApiPublicBookingServicesResponse;
570
568
  export type PublicWeeklySlotAvailabilityOption = {
571
569
  id: string;
572
570
  resourceId: string;
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import type { BlockLoaderFailures } from '../../../blocks/src/system/data/index';
3
3
  import type { RenderablePageOutline as BlocksRenderablePageOutline } from '../../../blocks/src/index';
4
- import type { EntrySubrouteContextData, MediaAssetIndexItem, OccurrenceContextData, PageOutline, PageRuntimeBoundary, ResolveImageUrlContextInput, RouteMap, Theme, ThemeTokens } from '../contracts';
4
+ import type { EntrySubrouteContextData, MediaAssetIndexItem, OccurrenceContextData, PageOutline, PageRuntimeJoin, ResolveImageUrlContextInput, RouteMap, Theme, ThemeTokens } from '../contracts';
5
5
  import type { SdkCustomBlock } from '../config/types';
6
6
  import type { BlockOverrides } from './overrides';
7
7
  import type { SiteBookingOfferingPresetSummary } from '../public-api/contracts';
@@ -28,7 +28,7 @@ export type PageRendererDataContext = {
28
28
  bookingOfferingPresets?: readonly SiteBookingOfferingPresetSummary[];
29
29
  mailingList?: import('../../../core/src/index').MailingListRuntimeContext;
30
30
  bookingTimeZone?: string;
31
- previewStage?: 'published' | 'preview';
31
+ previewStage: 'published' | 'preview';
32
32
  routes?: RouteMap;
33
33
  pagesByIdentifier?: Record<string, string>;
34
34
  entriesByIdentifier?: Record<string, Record<string, string>>;
@@ -56,8 +56,8 @@ export type SdkConfigForRenderer = {
56
56
  };
57
57
  type PageRendererCommonProps<TPage> = {
58
58
  page: TPage | null;
59
- runtimeBoundaries?: readonly PageRuntimeBoundary[];
60
- dataContext?: PageRendererDataContext;
59
+ runtimeJoins?: readonly PageRuntimeJoin[];
60
+ dataContext: PageRendererDataContext;
61
61
  routeMap?: RouteMap;
62
62
  wrapBlock?: (blockId: string, rendered: React.ReactNode) => React.ReactNode;
63
63
  registry?: ComponentRegistry;
@@ -1,5 +1,5 @@
1
1
  import type { ReactElement } from 'react';
2
- import type { EntrySubrouteContextData, MediaAssetIndexItem, OccurrenceContextData, PageRuntimeBoundary, RouteMap, Theme, ThemeTokens } from '../../contracts';
2
+ import type { EntrySubrouteContextData, MediaAssetIndexItem, OccurrenceContextData, PageRuntimeJoin, RouteMap, Theme, ThemeTokens } from '../../contracts';
3
3
  import type { ResolvedBlockData } from '../../data';
4
4
  import type { SiteBookingOfferingPresetSummary } from '../../public-api/contracts';
5
5
  import type { RuntimeSdkConfig } from '../helpers/loadPage';
@@ -10,7 +10,7 @@ import type { SdkCustomBlock } from '../../config/types';
10
10
  import type { SdkRenderingMode } from '../renderingMode';
11
11
  type PageCommonProps = {
12
12
  page: RenderablePageOutline;
13
- runtimeBoundaries?: readonly PageRuntimeBoundary[];
13
+ runtimeJoins?: readonly PageRuntimeJoin[];
14
14
  siteId: string;
15
15
  resolvedData?: ResolvedBlockData;
16
16
  bookingOfferingPresets?: readonly SiteBookingOfferingPresetSummary[];
@@ -60,7 +60,7 @@ type PageCommonProps = {
60
60
  * Additional context data for content entry pages.
61
61
  * Used to pass occurrence context and content entry data to blocks.
62
62
  */
63
- dataContext?: {
63
+ dataContext: {
64
64
  readAuthority?: import('../../../../blocks/src/api').BrowserReadAuthority;
65
65
  /** Mailing-list runtime projected for the placements on this page. */
66
66
  mailingList?: import('../../../../core/src/index').MailingListRuntimeContext;
@@ -77,7 +77,7 @@ type PageCommonProps = {
77
77
  /** Editable route metadata keys for template-page inline editing */
78
78
  editableRouteMetadataFieldIds?: ReadonlyArray<string> | null;
79
79
  /** Preview stage: 'preview' for draft content, 'published' for live content */
80
- previewStage?: 'preview' | 'published';
80
+ previewStage: 'preview' | 'published';
81
81
  /** Canonical request pathname used by blocks when resolving same-site destinations. */
82
82
  pathname?: string;
83
83
  };
@@ -11,7 +11,7 @@ import type { MailingListRuntimeContext } from '../../../../core/src/index';
11
11
  import type { PageProps } from '../components/Page';
12
12
  import type { ResolvedBlockData } from '../../data/prefetchBlockData';
13
13
  import { type ResolveBlockDataDeps } from '../../data/resolveBlockData';
14
- import type { DataLoaderOverrides, DataLoaderSearchParams } from '../../data/types';
14
+ import type { DataLoaderOverrides, DataLoaderPreviewStage, DataLoaderSearchParams } from '../../data/types';
15
15
  import type { SdkCustomBlock } from '../../config/types';
16
16
  import { type RuntimeSdkConfig } from './pageRuntimeSupport';
17
17
  /**
@@ -93,6 +93,9 @@ export type PagePreviewMetadata = {
93
93
  */
94
94
  export type PageContentResult = {
95
95
  type: 'page';
96
+ dataContext: {
97
+ previewStage: DataLoaderPreviewStage;
98
+ };
96
99
  /** Page UUID (required for preview editing / block mutations) */
97
100
  pageId: string;
98
101
  /** Route UUID for this page (used by preview mode metadata editing) */
@@ -101,7 +104,7 @@ export type PageContentResult = {
101
104
  pageMetadata: PagePreviewMetadata;
102
105
  /** Page outline ready for rendering with <Page> component */
103
106
  page: PageProps['page'];
104
- runtimeBoundaries?: PageProps['runtimeBoundaries'];
107
+ runtimeJoins?: PageProps['runtimeJoins'];
105
108
  /** Site theme for styling */
106
109
  theme: Theme | null;
107
110
  /** Site ID */
@@ -153,6 +156,7 @@ export type EntryContentResult = {
153
156
  bookingTimeZone?: string;
154
157
  /** Data context for template blocks (includes entry content for bindings) */
155
158
  dataContext: {
159
+ previewStage: DataLoaderPreviewStage;
156
160
  contentEntry: Record<string, unknown>;
157
161
  };
158
162
  /** Site theme for styling (useful if rendering with SDK components) */
@@ -217,6 +221,7 @@ export type PageSurfaceContentResult = {
217
221
  mailingList?: MailingListRuntimeContext;
218
222
  bookingTimeZone?: string;
219
223
  dataContext: {
224
+ previewStage: DataLoaderPreviewStage;
220
225
  pageSurface: Record<string, unknown>;
221
226
  subject: PageSurfaceContentData['subject'];
222
227
  };
@@ -6,7 +6,7 @@
6
6
  import type { RiverbankClient } from '../../client/types';
7
7
  import type { PageProps } from '../components/Page';
8
8
  import { type ResolveBlockDataDeps } from '../../data/resolveBlockData';
9
- import type { DataLoaderOverrides, DataLoaderSearchParams } from '../../data/types';
9
+ import type { DataLoaderOverrides, DataLoaderPreviewStage, DataLoaderSearchParams } from '../../data/types';
10
10
  import { type RuntimeSdkConfig } from './pageRuntimeSupport';
11
11
  /**
12
12
  * SDK config from API response (without siteId which is stripped at storage).
@@ -79,7 +79,10 @@ export type LoadPageParams = {
79
79
  */
80
80
  searchParams?: DataLoaderSearchParams;
81
81
  };
82
- export type LoadPageResult = Omit<PageProps, 'registry' | 'wrapBlock' | 'blockOverrides' | 'sdkConfig'> & {
82
+ export type LoadPageResult = Omit<PageProps, 'registry' | 'wrapBlock' | 'blockOverrides' | 'sdkConfig' | 'dataContext'> & {
83
+ dataContext: {
84
+ previewStage: DataLoaderPreviewStage;
85
+ };
83
86
  /**
84
87
  * SDK site configuration, if available.
85
88
  * Contains SDK-defined theme palette, section backgrounds, and style options.
@@ -2,7 +2,8 @@ import type { MediaAssetIndexItem, PageOutline, RouteMap, Theme } from '../../co
2
2
  import type { SiteBookingOfferingPresetSummary } from '../../public-api/contracts';
3
3
  import type { SiteResponse } from '../../client/types';
4
4
  import type { SdkCustomBlock } from '../../config/types';
5
- import { type BlockManifest, type FieldDefinition, type PageBlockRenderAdmissionError, type RenderablePageBlock, type RenderablePageOutline } from '../../../../blocks/src/index';
5
+ import { type BlockManifest, type FieldDefinition, type PageBlockRenderAdmissionError, type PublishedBlockPlacement, type RenderablePageBlock, type RenderablePageOutline } from '../../../../blocks/src/index';
6
+ import type { DataLoaderPreviewStage } from '../../data/types';
6
7
  export type RuntimeSdkConfig = NonNullable<SiteResponse['sdkConfig']>;
7
8
  export type SiteData = SiteResponse['site'];
8
9
  export type SiteRenderSupport = Readonly<{
@@ -40,6 +41,8 @@ export declare function buildSiteRenderSupport(site: SiteResponse, mediaAssets:
40
41
  export declare function collectMediaAssetSidecar(mediaAssets: readonly MediaAssetIndexItem[] | null | undefined): readonly MediaAssetIndexItem[] | undefined;
41
42
  type TransportedPageBlock = PageOutline['blocks'][number] & Readonly<{
42
43
  contentVersionId?: string | null;
44
+ draftContentId: string | null;
45
+ publishedPlacement: PublishedBlockPlacement | null;
43
46
  }>;
44
47
  export declare function readInvalidBlockAdmission(value: unknown): Readonly<{
45
48
  kind: 'invalid';
@@ -51,6 +54,7 @@ export declare function buildPageOutline(input: Readonly<{
51
54
  fallbackPath: string;
52
55
  purpose: string;
53
56
  blocks: readonly unknown[];
57
+ previewStage: DataLoaderPreviewStage;
54
58
  }>): Omit<PageOutline, 'blocks'> & Readonly<{
55
59
  blocks: TransportedPageBlock[];
56
60
  }>;
@@ -60,6 +64,7 @@ export declare function buildRenderablePageOutline(input: Readonly<{
60
64
  fallbackPath: string;
61
65
  purpose: string;
62
66
  blocks: readonly unknown[];
67
+ previewStage: DataLoaderPreviewStage;
63
68
  customBlocks?: readonly SdkCustomBlock[];
64
69
  }>): RenderablePageOutline;
65
70
  export declare function projectRenderablePageOutline(page: RenderablePageOutline): PageOutline;
@@ -22,6 +22,8 @@ type EntrySlotBlock = {
22
22
  id: string;
23
23
  blockId?: string;
24
24
  contentVersionId: string;
25
+ draftContentId?: string | null;
26
+ publishedContentId?: string | null;
25
27
  kind: string;
26
28
  purpose: string;
27
29
  content: Record<string, unknown> | null;
@@ -8,6 +8,7 @@ import type { MediaAssetIndexItem, Theme } from '../../contracts';
8
8
  import type { RiverbankClient } from '../../client/types';
9
9
  import type { PageProps } from '../components/Page';
10
10
  import type { ResolvedBlockData } from '../../data/prefetchBlockData';
11
+ import type { DataLoaderPreviewStage } from '../../data/types';
11
12
  import type { ContentEntryData } from '../helpers/loadContent';
12
13
  export type UseContentParams = {
13
14
  client: RiverbankClient;
@@ -56,11 +57,14 @@ type PageSuccessState = {
56
57
  error: null;
57
58
  type: 'page';
58
59
  page: PageProps['page'];
59
- runtimeBoundaries?: PageProps['runtimeBoundaries'];
60
+ runtimeJoins?: PageProps['runtimeJoins'];
60
61
  entry: null;
61
62
  theme: Theme | null;
62
63
  siteId: string;
63
64
  resolvedData: ResolvedBlockData;
65
+ dataContext: {
66
+ previewStage: DataLoaderPreviewStage;
67
+ };
64
68
  supabaseUrl?: string;
65
69
  mediaAssets?: readonly MediaAssetIndexItem[];
66
70
  };
@@ -117,7 +121,7 @@ export declare function isEntryContentResult(result: UseContentResult): result i
117
121
  *
118
122
  * if (isPageContentResult(content)) {
119
123
  * if (!content.theme) return <div>This site needs a theme before it can be displayed.</div>;
120
- * return <Page page={content.page} theme={content.theme} siteId={content.siteId} resolvedData={content.resolvedData} />;
124
+ * return <Page page={content.page} theme={content.theme} siteId={content.siteId} resolvedData={content.resolvedData} dataContext={content.dataContext} />;
121
125
  * }
122
126
  *
123
127
  * // Render entry with custom UI