@riverbankcms/sdk 0.138.0 → 0.139.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 (208) hide show
  1. package/README.md +11 -15
  2. package/dist/{PreviewEditorSidebar-BVPur_CU.mjs → PreviewEditorSidebar-BDeenhi3.mjs} +4 -4
  3. package/dist/{PreviewEditorUI-DLhWX8oh.mjs → PreviewEditorUI-DSRhgjF5.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BguJY1SW.mjs → PreviewQueryProvider-D2K8GLUG.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-Tda6qw4z.mjs → SdkPreviewModeRuntime-CL7wSnYu.mjs} +47 -27
  6. package/dist/{SiteChromeCustomizeContext-BHFgMjde.mjs → SiteChromeCustomizeContext-BhDn-5ir.mjs} +7771 -5863
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +99 -330
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +9 -30
  9. package/dist/_dts/api/src/billing.d.ts +10 -3
  10. package/dist/_dts/api/src/contentRuntime.d.ts +8 -1
  11. package/dist/_dts/api/src/endpoints.d.ts +182 -103
  12. package/dist/_dts/api/src/footerSettings.d.ts +2 -5
  13. package/dist/_dts/api/src/index.d.ts +11 -9
  14. package/dist/_dts/api/src/mailchimpIntegration.d.ts +2 -59
  15. package/dist/_dts/api/src/mailingListIntegration.d.ts +117 -0
  16. package/dist/_dts/api/src/navigation/locations.d.ts +1 -0
  17. package/dist/_dts/api/src/navigation.d.ts +1 -26
  18. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +109 -2
  19. package/dist/_dts/api/src/onboarding/surfaceData.d.ts +185 -0
  20. package/dist/_dts/api/src/privacyPolicy.d.ts +74 -2
  21. package/dist/_dts/api/src/publicBookingAvailabilityEndpointDefinitions.d.ts +6 -6
  22. package/dist/_dts/api/src/publicEventEndpointDefinitions.d.ts +1 -1
  23. package/dist/_dts/api/src/publicExperience/newsletterEndpoints.d.ts +2 -4
  24. package/dist/_dts/api/src/publicExperience/sharedTypes.d.ts +10 -24
  25. package/dist/_dts/api/src/publicReadEndpointDefinitions.d.ts +73 -0
  26. package/dist/_dts/api/src/schemas/site-api-keys.d.ts +1 -1
  27. package/dist/_dts/api/src/sdkContracts.d.ts +2 -10
  28. package/dist/_dts/api/src/sdkThemeWire.d.ts +2 -2
  29. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +0 -29
  30. package/dist/_dts/api/src/siteOnboarding.d.ts +91 -228
  31. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -9
  32. package/dist/_dts/api/src/siteSettings.d.ts +20 -1
  33. package/dist/_dts/api/src/types.d.ts +5 -4
  34. package/dist/_dts/billing/src/membership/index.d.ts +14 -7
  35. package/dist/_dts/billing/src/plans/display.d.ts +15 -0
  36. package/dist/_dts/billing/src/plans/registry.d.ts +2 -0
  37. package/dist/_dts/billing/src/plans/standing.d.ts +19 -0
  38. package/dist/_dts/billing/src/plans/types.d.ts +1 -7
  39. package/dist/_dts/billing/src/subscriptions/evidence.d.ts +12 -0
  40. package/dist/_dts/billing/src/subscriptions/standingEvidence.d.ts +31 -0
  41. package/dist/_dts/billing/src/subscriptions/store.d.ts +23 -5
  42. package/dist/_dts/blocks/src/PageRenderer.d.ts +6 -15
  43. package/dist/_dts/blocks/src/client.d.ts +1 -1
  44. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +32 -16
  45. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +4 -0
  46. package/dist/_dts/blocks/src/pageRenderingMode.d.ts +12 -6
  47. package/dist/_dts/blocks/src/system/blocks/appointment-services.d.ts +11 -0
  48. package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +39 -66
  49. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +39 -114
  50. package/dist/_dts/blocks/src/system/blocks/offerings-preview/catalogue.d.ts +18 -0
  51. package/dist/_dts/blocks/src/system/blocks/offerings-preview/fields.d.ts +2 -0
  52. package/dist/_dts/blocks/src/system/blocks/offerings-preview/index.d.ts +4 -0
  53. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +7 -13
  54. package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
  55. package/dist/_dts/blocks/src/system/data/index.d.ts +2 -2
  56. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  57. package/dist/_dts/blocks/src/system/data/publicLoaderCachePolicy.d.ts +2 -74
  58. package/dist/_dts/blocks/src/system/fragments/library/newsletterForm.d.ts +33 -100
  59. package/dist/_dts/blocks/src/system/runtime/api/types/newsletter.d.ts +5 -15
  60. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +48 -24
  61. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +24 -12
  62. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.d.ts +3 -0
  63. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +1 -1
  64. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarToday.d.ts +22 -0
  65. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +51 -0
  66. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +2 -0
  67. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +0 -1
  68. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +28 -0
  69. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/bookability.d.ts +9 -0
  70. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +14 -0
  71. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/duration.d.ts +2 -0
  72. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/index.d.ts +4 -0
  73. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/location.d.ts +2 -0
  74. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/quickDates.d.ts +16 -0
  75. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/AgendaEventCard.d.ts +9 -1
  76. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarDayCell.d.ts +2 -0
  77. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarDayHeaders.d.ts +4 -0
  78. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/DayEventsModal.d.ts +2 -1
  79. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +5 -0
  80. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventModals.d.ts +2 -1
  81. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventQuickDates.d.ts +15 -0
  82. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekAgendaView.d.ts +7 -3
  83. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekTimetableView.d.ts +1 -0
  84. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/index.d.ts +2 -0
  85. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/timetableModel.d.ts +1 -0
  86. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/useHydrationReady.d.ts +6 -0
  87. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.state.d.ts +3 -0
  88. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +56 -33
  89. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +3 -3
  90. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +13 -31
  91. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview-catalogue.d.ts +14 -0
  92. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview-content.d.ts +23 -0
  93. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview.d.ts +4 -2
  94. package/dist/_dts/blocks/src/system/transforms/registry/formatting.d.ts +5 -0
  95. package/dist/_dts/commerce/src/purchase/index.d.ts +1 -0
  96. package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +5 -12
  97. package/dist/_dts/commerce/src/purchase/stripeCommissionMetadata.d.ts +34 -0
  98. package/dist/_dts/content-editor/src/footerEngagementDraft.d.ts +6 -24
  99. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +1 -2
  100. package/dist/_dts/core/src/footer-engagement.d.ts +2 -6
  101. package/dist/_dts/core/src/index.d.ts +9 -1
  102. package/dist/_dts/core/src/mailing-list-identifiers.d.ts +21 -0
  103. package/dist/_dts/core/src/mailing-list-runtime.d.ts +42 -0
  104. package/dist/_dts/core/src/mailing-list-setup-parser.d.ts +14 -0
  105. package/dist/_dts/core/src/mailing-list-setup.d.ts +129 -0
  106. package/dist/_dts/core/src/mailing-list-submission.d.ts +244 -0
  107. package/dist/_dts/core/src/mailing-list-targeting-parser.d.ts +12 -0
  108. package/dist/_dts/core/src/mailing-list-targeting.d.ts +93 -0
  109. package/dist/_dts/core/src/navigation-locations.d.ts +28 -0
  110. package/dist/_dts/core/src/public-profile.d.ts +9 -1
  111. package/dist/_dts/core/src/public-read-cache-contract.d.ts +45 -0
  112. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +529 -373
  113. package/dist/_dts/editor-blocks/src/widgets/index.d.ts +1 -0
  114. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListTargetingField.d.ts +11 -0
  115. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/context.d.ts +13 -0
  116. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/index.d.ts +3 -0
  117. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +6 -0
  118. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +1 -0
  119. package/dist/_dts/sdk/src/client/publicAppointmentReadOperations.d.ts +12 -0
  120. package/dist/_dts/sdk/src/client/publicEventReadOperations.d.ts +2 -1
  121. package/dist/_dts/sdk/src/client/publicLoaderCacheAccess.d.ts +11 -4
  122. package/dist/_dts/sdk/src/config/content-types.d.ts +3 -13
  123. package/dist/_dts/sdk/src/config/content-validation.d.ts +5 -8
  124. package/dist/_dts/sdk/src/constants.d.ts +3 -3
  125. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  126. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +12 -31
  127. package/dist/_dts/sdk/src/navigation/index.d.ts +11 -29
  128. package/dist/_dts/sdk/src/next/index.d.ts +4 -4
  129. package/dist/_dts/sdk/src/prebuild/types.d.ts +1 -5
  130. package/dist/_dts/sdk/src/public-api/contracts.d.ts +33 -16
  131. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +3 -0
  132. package/dist/_dts/sdk/src/rendering/client.d.ts +3 -20
  133. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +3 -0
  134. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +4 -0
  135. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +1 -0
  136. package/dist/_dts/sdk/src/rendering/index.d.ts +1 -1
  137. package/dist/_dts/sdk/src/types/block-kinds.d.ts +1 -1
  138. package/dist/_dts/sdk/src/version.d.ts +1 -1
  139. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  140. package/dist/_dts/theme-core/src/hosted-booking-appearance.d.ts +41 -0
  141. package/dist/_dts/theme-core/src/index.d.ts +1 -0
  142. package/dist/_dts/theme-core/src/runtime/buildThemeRuntime.d.ts +0 -1
  143. package/dist/_dts/theme-core/src/tokens/tokens.d.ts +7 -0
  144. package/dist/_dts/ui/src/badge.d.ts +1 -1
  145. package/dist/_dts/ui/src/callout.d.ts +1 -1
  146. package/dist/client/{BookingConsentAgreement-DQUik1Mx.mjs → BookingConsentAgreement-CZvTDtsK.mjs} +2 -2
  147. package/dist/client/{DiscountCodeDisclosure-CU67Q4vH.mjs → DiscountCodeDisclosure-D-DsLCMU.mjs} +1 -1
  148. package/dist/client/{EventCombined.client-a02TXUgg.mjs → EventCombined.client-dWqgd5ZO.mjs} +443 -199
  149. package/dist/client/{EventListing.client-99qx7jFl.mjs → EventListing.client-BMRa9IYp.mjs} +2 -2
  150. package/dist/client/{LeafletStaticMap-CWzcq73L.mjs → LeafletStaticMap-D21W9kBZ.mjs} +1 -1
  151. package/dist/client/{accordion-D1nb3-Oj.mjs → accordion-FxF_ta47.mjs} +1 -1
  152. package/dist/client/{bookingForm-BGrmLhaO.mjs → bookingForm-YnwW4TGw.mjs} +5 -5
  153. package/dist/client/bookings.mjs +43 -2
  154. package/dist/client/{carousel-DSmOx3ad.mjs → carousel-vng7fFT5.mjs} +1 -1
  155. package/dist/client/{cart-COWeOIUk.mjs → cart-DEPDsjNk.mjs} +3 -3
  156. package/dist/client/{checkout-CeysaIJK.mjs → checkout-CZRWu9rW.mjs} +3 -3
  157. package/dist/client/client.mjs +3331 -1407
  158. package/dist/client/{context-DBzX85Xc.mjs → context-DvU_WUmd.mjs} +4 -3
  159. package/dist/client/{dates-DCYhZBlW.mjs → dates-wnPMiRl5.mjs} +21 -3
  160. package/dist/client/{eventCalendar-BgsN73Ul.mjs → eventCalendar-BA3Q5L15.mjs} +80 -78
  161. package/dist/client/{eventCombined-DcZQAMQP.mjs → eventCombined-51wgR-1R.mjs} +3 -3
  162. package/dist/client/{eventDetails-BWwGJ54l.mjs → eventDetails-modaetpm.mjs} +4 -4
  163. package/dist/client/{eventListing-DqYqV8vp.mjs → eventListing-D8t2J3Kv.mjs} +3 -3
  164. package/dist/client/{eventRegistration-DQGDgu_e.mjs → eventRegistration-CYqtkCE_.mjs} +49 -9
  165. package/dist/client/{form-ClfpasVT.mjs → form-CBKXN5In.mjs} +2 -2
  166. package/dist/client/{headerSection-BuOMe98N.mjs → headerSection-DylDqNrs.mjs} +2 -2
  167. package/dist/client/hooks.mjs +1259 -555
  168. package/dist/client/{locationMap-CEqu_sfa.mjs → locationMap-CvWrG0vZ.mjs} +2 -2
  169. package/dist/client/{newsletterForm-IbrHjMxy.mjs → newsletterForm-Btwk70zw.mjs} +117 -38
  170. package/dist/client/{pricing-xj7MPZlK.mjs → pricing-Uzw-GQ6Y.mjs} +1 -1
  171. package/dist/client/{productDetail-vxqTt5Xj.mjs → productDetail-JLcUYKnd.mjs} +3 -3
  172. package/dist/client/{productList-OTdZu8sb.mjs → productList-FM0cbUzj.mjs} +3 -3
  173. package/dist/client/{propsDecoder-CY9gGEF7.mjs → propsDecoder-DYzafZb2.mjs} +592 -152
  174. package/dist/client/rendering/client.mjs +2259 -835
  175. package/dist/client/rendering/islands.mjs +17 -17
  176. package/dist/client/rendering.mjs +3308 -1236
  177. package/dist/client/{scrollToBlock--BFV6kl-.mjs → scrollToBlock-CvXszexS.mjs} +1 -1
  178. package/dist/client/{shop-CP4YbDL9.mjs → shop-BIcjvy5a.mjs} +6 -6
  179. package/dist/client/{shop-commerce-APs4XBXE.mjs → shop-commerce-BZQsy7xw.mjs} +5 -5
  180. package/dist/client/{shop-commerce-store-CAVLxLFr.mjs → shop-commerce-store-D5V7XAb5.mjs} +1 -1
  181. package/dist/client/{shopShared-BnSRrwXI.mjs → shopShared-DowkXevB.mjs} +3 -3
  182. package/dist/client/{useEventFilters-1a1by4c8.mjs → useEventFilters-oMoTw_JE.mjs} +56 -9
  183. package/dist/preview-next/before-render.mjs +238 -111
  184. package/dist/preview-next/client/runtime.mjs +4 -4
  185. package/dist/preview-next/keepAlive.mjs +238 -111
  186. package/dist/preview-next/middleware.mjs +238 -111
  187. package/dist/{previewAuthStore-BkEgnYPP.mjs → previewAuthStore-COUyAKaX.mjs} +238 -111
  188. package/dist/{sdk-runtime-DwGfsT0S.mjs → sdk-runtime-D4k2LSGF.mjs} +2 -2
  189. package/dist/{separator-BeqDLneQ.mjs → separator-UGtpag4Z.mjs} +1 -1
  190. package/dist/server/components.mjs +2697 -1023
  191. package/dist/server/config-validation.mjs +2424 -1720
  192. package/dist/server/config.mjs +2429 -1724
  193. package/dist/server/data.mjs +1164 -454
  194. package/dist/server/index.mjs +364 -280
  195. package/dist/server/navigation.mjs +16 -47
  196. package/dist/server/next.mjs +2915 -1380
  197. package/dist/server/page-converter.mjs +969 -522
  198. package/dist/server/prebuild.mjs +2 -3
  199. package/dist/server/rendering/server.mjs +2704 -1030
  200. package/dist/server/rendering.mjs +2742 -1063
  201. package/dist/server/routing.mjs +1386 -595
  202. package/dist/server/server.mjs +2878 -2324
  203. package/dist/server/theme-bridge.mjs +292 -24
  204. package/dist/styles/index.css +289 -25
  205. package/package.json +1 -1
  206. package/dist/_dts/api/src/navigation/identity.d.ts +0 -59
  207. package/dist/_dts/blocks/src/system/blocks/newsletter-signup-destination.d.ts +0 -291
  208. package/dist/_dts/core/src/newsletter-signup-destination.d.ts +0 -38
@@ -4,6 +4,7 @@ export * from './entry-picker/index';
4
4
  export * from './icon-picker/index';
5
5
  export * from './inline-text/index';
6
6
  export * from './link/index';
7
+ export * from './mailing-list-targeting/index';
7
8
  export * from './offerings-preview/index';
8
9
  export * from './reference/index';
9
10
  export * from './rich-text/index';
@@ -0,0 +1,11 @@
1
+ import type { FieldWidgetProps, GroupFieldConfig } from '../../../../block-form/src/index';
2
+ import { type MailingListPlacementTargeting, type MailingListRuntimeContext } from '../../../../core/src/index';
3
+ export declare function MailingListTargetingField({ path, backend, config }: FieldWidgetProps<MailingListPlacementTargeting, GroupFieldConfig>): import("react").JSX.Element;
4
+ export declare function MailingListTargetingControl({ context, targeting, onChange, name }: Readonly<{
5
+ context: Extract<MailingListRuntimeContext, {
6
+ tag: 'configured';
7
+ }>;
8
+ targeting: MailingListPlacementTargeting;
9
+ onChange: (value: MailingListPlacementTargeting) => void;
10
+ name: string;
11
+ }>): import("react").JSX.Element;
@@ -0,0 +1,13 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { MailingListRuntimeContext, SiteId } from '../../../../core/src/index';
3
+ export type MailingListAuthoringContextLoader = (siteId: SiteId) => Promise<MailingListRuntimeContext>;
4
+ type Value = Readonly<{
5
+ siteId: SiteId;
6
+ load: MailingListAuthoringContextLoader;
7
+ manageHref?: string;
8
+ }>;
9
+ export declare function MailingListTargetingProvider({ children, load, manageHref, siteId, }: Value & Readonly<{
10
+ children: ReactNode;
11
+ }>): import("react").JSX.Element;
12
+ export declare function useMailingListTargetingContext(): Value;
13
+ export {};
@@ -0,0 +1,3 @@
1
+ export * from './context';
2
+ export * from './loaders';
3
+ export * from './MailingListTargetingField';
@@ -0,0 +1,6 @@
1
+ import type { ApiClient } from '../../../../api/src/request';
2
+ import type { MailingListRuntimeContext, SiteId } from '../../../../core/src/index';
3
+ export declare function loadMailingListAuthoringContext(input: Readonly<{
4
+ apiClient: ApiClient;
5
+ siteId: SiteId;
6
+ }>): Promise<MailingListRuntimeContext>;
@@ -30,6 +30,7 @@ export declare const previewWidgetOverrides: {
30
30
  readonly buttonVariant: FieldWidgetComponent;
31
31
  readonly offeringGroupOrder: FieldWidgetComponent;
32
32
  readonly siteOptionPicker: FieldWidgetComponent;
33
+ readonly mailingListTargeting: FieldWidgetComponent;
33
34
  };
34
35
  export type { FieldWidgetComponent };
35
36
  export { __testUtils, createPreviewEntryPickerAdapter, createPreviewLinkAdapters, createPreviewReferenceAdapters, createPreviewSiteOptionAdapters, };
@@ -0,0 +1,12 @@
1
+ import type { ApiClient, ApiResult } from '../../../api/src/public/index';
2
+ import type { PublicReadEndpoint } from '../../../blocks/src/system/data/index';
3
+ import type { RiverbankClient } from './types';
4
+ type PublicAppointmentReadDeps = Readonly<{
5
+ apiClient: ApiClient;
6
+ resilientFetchData: <T>(policyEndpoint: PublicReadEndpoint, cacheKey: string, fetcher: (signal: AbortSignal) => Promise<ApiResult<T>>, options: Readonly<{
7
+ signal?: AbortSignal;
8
+ }>) => Promise<T>;
9
+ }>;
10
+ export type PublicAppointmentReadOperations = Pick<RiverbankClient, 'getPublicBookingServices' | 'getPublicWeeklySlotAvailability'>;
11
+ export declare function createPublicAppointmentReadOperations(deps: PublicAppointmentReadDeps): PublicAppointmentReadOperations;
12
+ export {};
@@ -1,8 +1,9 @@
1
1
  import type { ApiClient, ApiResult } from '../../../api/src/public/index';
2
+ import type { PublicReadEndpoint } from '../../../blocks/src/system/data/index';
2
3
  import type { RiverbankClient } from './types';
3
4
  type PublicEventReadDeps = Readonly<{
4
5
  apiClient: ApiClient;
5
- resilientFetchData: <T>(cacheKey: string, fetcher: (signal: AbortSignal) => Promise<ApiResult<T>>, options: Readonly<{
6
+ resilientFetchData: <T>(policyEndpoint: PublicReadEndpoint, cacheKey: string, fetcher: (signal: AbortSignal) => Promise<ApiResult<T>>, options: Readonly<{
6
7
  signal?: AbortSignal;
7
8
  force?: boolean;
8
9
  }>) => Promise<T>;
@@ -1,6 +1,13 @@
1
- import { type SupportedLoaderEndpoint } from '../../../blocks/src/system/data/index';
2
1
  export declare function shouldWrite(cacheEnabled: boolean, force: boolean | undefined): boolean;
3
- export declare function liveLoaderOptions(endpoint: SupportedLoaderEndpoint, signal: AbortSignal | undefined): Readonly<{
4
- force: boolean;
5
- signal: AbortSignal | undefined;
2
+ /**
3
+ * Applies the canonical block-loader freshness policy at the SDK fetch seam.
4
+ *
5
+ * Callers provide the endpoint identity, but do not opt into live behavior.
6
+ * This makes a newly-live endpoint bypass memory and fallback caches without a
7
+ * second method-level wiring change.
8
+ */
9
+ export declare function applyPublicLoaderCachePolicy<TOptions extends Readonly<{
10
+ force?: boolean;
11
+ }>>(endpoint: string, options: TOptions): TOptions & Readonly<{
12
+ force?: boolean;
6
13
  }>;
@@ -281,9 +281,7 @@ export type NavigationItemConfig = NavigationConfigItemInput;
281
281
  * @example
282
282
  * ```typescript
283
283
  * {
284
- * identifier: 'main',
285
- * name: 'Main Navigation',
286
- * isPrimary: true,
284
+ * location: 'main',
287
285
  * items: [
288
286
  * { label: 'Home', link: { kind: 'page', identifier: 'home' } },
289
287
  * { label: 'About', link: { kind: 'page', identifier: 'about' } },
@@ -292,16 +290,8 @@ export type NavigationItemConfig = NavigationConfigItemInput;
292
290
  * ```
293
291
  */
294
292
  export interface NavigationMenuConfig {
295
- /** Unique identifier for this menu */
296
- identifier: string;
297
- /** Menu display name */
298
- name: string;
299
- /** Is this the primary/main menu? */
300
- isPrimary?: boolean;
301
- /** Is this the footer menu? */
302
- isFooter?: boolean;
303
- /** Named footer destination. Prefer this for new configurations. */
304
- footerRole?: 'main' | 'legal-policy' | null;
293
+ /** Fixed site destination. */
294
+ location: 'main' | 'footer' | 'legal';
305
295
  /** Menu items */
306
296
  items: NavigationItemConfig[];
307
297
  }
@@ -93,14 +93,11 @@ export declare const entryConfigSchema: z.ZodObject<{
93
93
  }, z.core.$strip>;
94
94
  export declare const navigationItemConfigSchema: z.ZodType<NavigationConfigItemInput>;
95
95
  export declare const navigationMenuConfigSchema: z.ZodObject<{
96
- identifier: z.ZodString;
97
- name: z.ZodString;
98
- isPrimary: z.ZodOptional<z.ZodBoolean>;
99
- isFooter: z.ZodOptional<z.ZodBoolean>;
100
- footerRole: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
96
+ location: z.ZodEnum<{
101
97
  main: "main";
102
- "legal-policy": "legal-policy";
103
- }>>>;
98
+ legal: "legal";
99
+ footer: "footer";
100
+ }>;
104
101
  items: z.ZodArray<z.ZodType<Readonly<{
105
102
  label: string;
106
103
  link: import("../../../api/src/index").NavigationAuthoringLinkInput;
@@ -112,7 +109,7 @@ export declare const navigationMenuConfigSchema: z.ZodObject<{
112
109
  isCta?: boolean;
113
110
  children?: readonly NavigationConfigItemInput[];
114
111
  }>, unknown>>>;
115
- }, z.core.$strip>;
112
+ }, z.core.$strict>;
116
113
  export declare const siteSettingsConfigSchema: z.ZodObject<{
117
114
  homepagePath: z.ZodOptional<z.ZodString>;
118
115
  siteTitle: z.ZodOptional<z.ZodString>;
@@ -10,14 +10,14 @@
10
10
  export declare const PREBUILD_PAGE_SIZE = 50;
11
11
  /**
12
12
  * Default ISR revalidation interval in seconds.
13
- * 5 minutes provides a good balance between freshness and performance.
13
+ * Public pages can contain availability, whose freshness contract is 60 seconds.
14
14
  */
15
- export declare const ISR_REVALIDATE_SECONDS = 300;
15
+ export declare const ISR_REVALIDATE_SECONDS = 60;
16
16
  /**
17
17
  * Default cache TTL in seconds.
18
18
  * Matches ISR_REVALIDATE_SECONDS for consistency.
19
19
  */
20
- export declare const CACHE_TTL_SECONDS = 300;
20
+ export declare const CACHE_TTL_SECONDS = 60;
21
21
  /**
22
22
  * Default maximum age for prebuild cache in seconds.
23
23
  * 24 hours - older prebuilds are rejected.
@@ -1,5 +1,5 @@
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
- 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, NewsletterSignupPreset, 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';
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
3
  export type { PageOutline, PageRuntimeBoundary, 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';
@@ -9,6 +9,8 @@ import type { EventRegistrationContent } from './event-registration-content';
9
9
  export type { EventRegistrationContent } from './event-registration-content';
10
10
  import type { Brand, EventCategoryId, RichTextDoc, VenueId } from '../../../core/src/index';
11
11
  import type { SiteFooterContent as BlocksSiteFooterContent } from '../../../blocks/src/system/blocks/site-footer';
12
+ import type { NewsletterSignupContent as BlocksNewsletterSignupContent } from '../../../blocks/src/system/blocks/newsletter-signup';
13
+ import type { ContactNewsletterContent as BlocksContactNewsletterContent } from '../../../blocks/src/system/blocks/contact-newsletter';
12
14
  import type { EventDetailsContent as BlocksEventDetailsContent } from '../../../blocks/src/system/blocks/event-details';
13
15
  import type { EventCalendarContent as BlocksEventCalendarContent } from '../../../blocks/src/system/blocks/events/event-calendar';
14
16
  import type { CalendarTabViews as BlocksCalendarTabViews, CalendarView as BlocksCalendarView, ColumnOption as BlocksColumnOption, DisplayMode as BlocksDisplayMode, EventLayout as BlocksEventLayout, FilterAutoShow as BlocksFilterAutoShow, WeekStart as BlocksWeekStart } from '../../../blocks/src/system/blocks/events/shared/types';
@@ -230,6 +232,8 @@ export type OfferingsPreviewGroupOverride = {
230
232
  };
231
233
  export type OfferingsPreviewGroupOrder = readonly OfferingsPreviewSourceKey[];
232
234
  export type OfferingsPreviewContent = {
235
+ /** Internal system composition; not exposed as an editor control. */
236
+ displayMode?: 'preview' | 'catalogue';
233
237
  heading?: string | null;
234
238
  description?: unknown;
235
239
  itemLimit?: '1' | '2' | '3' | '4' | '5' | '6' | null;
@@ -380,20 +384,7 @@ export type MediaTextContent = {
380
384
  /** Compiler-owned: the frame a Look asks for around the block's content. */
381
385
  _frameStyles?: ContentFrameIntent | null;
382
386
  };
383
- export type NewsletterSignupPreset = 'emailOnly' | 'emailName' | 'emailFirstLast' | 'emailNameCompany';
384
- export type NewsletterSignupContent = {
385
- title?: string | null;
386
- subtitle?: RichTextDoc | null;
387
- listId?: string | null;
388
- preset: NewsletterSignupPreset;
389
- includePhone?: boolean | null;
390
- buttonLabel?: string | null;
391
- buttonVariant?: ButtonVariant | null;
392
- successMessage?: string | null;
393
- privacyNote?: string | null;
394
- tags?: string | null;
395
- _sectionStyles?: SectionStylesContent;
396
- };
387
+ export type NewsletterSignupContent = BlocksNewsletterSignupContent;
397
388
  export type RecurringScheduleContent = {
398
389
  eyebrow?: string | null;
399
390
  heading?: string | null;
@@ -407,23 +398,7 @@ export type RecurringScheduleContent = {
407
398
  emptyMessage?: string | null;
408
399
  _sectionStyles?: SectionStylesContent;
409
400
  };
410
- export type ContactNewsletterContent = {
411
- newsletterTitle?: string | null;
412
- newsletterSubtitle?: RichTextDoc | null;
413
- listId?: string | null;
414
- preset?: NewsletterSignupPreset;
415
- includePhone?: boolean;
416
- newsletterButtonLabel?: string | null;
417
- newsletterSuccessMessage?: string | null;
418
- newsletterPrivacyNote?: string | null;
419
- newsletterTags?: string | null;
420
- contactTitle?: string | null;
421
- contactIntro?: RichTextDoc | null;
422
- formSlug: string;
423
- contactSubmitLabel?: string | null;
424
- contactSuccessMessage?: string | null;
425
- _sectionStyles?: SectionStylesContent;
426
- };
401
+ export type ContactNewsletterContent = BlocksContactNewsletterContent;
427
402
  export type ShopContent = {
428
403
  showPasses?: boolean | null;
429
404
  showMemberships?: boolean | null;
@@ -581,6 +556,11 @@ export type AppointmentBookingContent = {
581
556
  description?: unknown;
582
557
  _sectionStyles?: SectionStylesContent;
583
558
  };
559
+ export type AppointmentServicesContent = {
560
+ heading?: string | null;
561
+ description?: unknown;
562
+ _sectionStyles?: SectionStylesContent;
563
+ };
584
564
  export type WeeklySlotAvailabilityContent = {
585
565
  serviceId: string;
586
566
  resourceId?: string | null;
@@ -659,6 +639,7 @@ export type SystemBlockContentByFullKind = {
659
639
  'block.form': FormBlockContent;
660
640
  'block.contact-newsletter': ContactNewsletterContent;
661
641
  'block.appointment-booking': AppointmentBookingContent;
642
+ 'block.appointment-services': AppointmentServicesContent;
662
643
  'block.weekly-slot-availability': WeeklySlotAvailabilityContent;
663
644
  'block.event-registration': EventRegistrationContent;
664
645
  'block.event-details': EventDetailsContent;
@@ -259,39 +259,36 @@ export type SimpleMenuViewModel = Menu;
259
259
  /** @deprecated Use `Logo` instead */
260
260
  export type SimpleLogo = Logo;
261
261
  /**
262
- * Get the primary navigation menu object.
263
- * Returns menu marked as isPrimary, or first menu if none marked.
262
+ * Get the fixed main navigation menu object.
263
+ * Returns null when the runtime payload is incomplete.
264
264
  *
265
265
  * @example
266
266
  * ```ts
267
267
  * const menu = getPrimaryNavigation(siteData.navigation);
268
- * console.log(menu?.name); // "main"
268
+ * console.log(menu?.location); // "main"
269
269
  * ```
270
270
  */
271
271
  export declare function getPrimaryNavigation(navigation: NavigationMenuWithItems[] | null | undefined): NavigationMenuWithItems | null;
272
272
  /**
273
- * Get the footer navigation menu object.
274
- * Returns menu marked as isFooter, or null if none marked.
273
+ * Get the fixed footer navigation menu object.
275
274
  *
276
275
  * @example
277
276
  * ```ts
278
277
  * const menu = getFooterNavigation(siteData.navigation);
279
- * console.log(menu?.name); // "Footer menu"
278
+ * console.log(menu?.location); // "footer"
280
279
  * ```
281
280
  */
282
281
  export declare function getFooterNavigation(navigation: NavigationMenuWithItems[] | null | undefined): NavigationMenuWithItems | null;
283
282
  export declare function getFooterNavigationByRole(navigation: NavigationMenuWithItems[] | null | undefined, role: 'main' | 'legal-policy'): NavigationMenuWithItems | null;
284
283
  /**
285
- * Get a navigation menu by name/slug.
286
- *
287
- * @example
288
- * ```ts
289
- * const footerMenu = getNavigationBySlug(siteData.navigation, 'footer');
290
- * ```
284
+ * Select one of the three fixed navigation destinations.
285
+ * A canonical payload has exactly one menu for each location; returning null
286
+ * keeps malformed or incomplete payloads visible to the caller rather than
287
+ * borrowing a different location's links.
291
288
  */
292
- export declare function getNavigationBySlug(navigation: NavigationMenuWithItems[] | null | undefined, slug: string): NavigationMenuWithItems | null;
289
+ export declare function getNavigationByLocation(navigation: NavigationMenuWithItems[] | null | undefined, location: 'main' | 'footer' | 'legal'): NavigationMenuWithItems | null;
293
290
  /**
294
- * Get nav items from the primary menu (marked isPrimary, or first menu).
291
+ * Get nav items from the fixed main menu.
295
292
  * Returns nested structure supporting both links and dropdowns.
296
293
  * For canonical links (`kind: 'page' | 'entry'`), pass `routes` + identifier maps in options.
297
294
  *
@@ -310,21 +307,6 @@ export declare function getNavigationBySlug(navigation: NavigationMenuWithItems[
310
307
  * ```
311
308
  */
312
309
  export declare function getPrimaryNavItems(navigation: NavigationMenuWithItems[], options?: NavigationRenderOptions): NavItem[];
313
- /**
314
- * Get nav items from a specific menu by slug.
315
- * Returns nested structure supporting both links and dropdowns.
316
- * For canonical links (`kind: 'page' | 'entry'`), pass `routes` + identifier maps in options.
317
- *
318
- * @example
319
- * ```ts
320
- * const footerNav = getNavItemsBySlug(siteData.navigation, 'footer', {
321
- * routes: siteData.routes,
322
- * pagesByIdentifier: siteData.pagesByIdentifier,
323
- * entriesByIdentifier: siteData.entriesByIdentifier,
324
- * });
325
- * ```
326
- */
327
- export declare function getNavItemsBySlug(navigation: NavigationMenuWithItems[], slug: string, options?: NavigationRenderOptions): NavItem[];
328
310
  /**
329
311
  * Transform a menu into NavItem array.
330
312
  * Builds nested structure from flat items, supporting dropdowns with children.
@@ -49,14 +49,14 @@ export { createSitemap, type CreateSitemapOptions, type SitemapGenerator, } from
49
49
  export { createRobots, type CreateRobotsOptions } from './robots';
50
50
  /**
51
51
  * ISR revalidation duration in seconds for production mode.
52
- * 5 minutes provides a good balance between freshness and performance.
52
+ * Public pages can contain availability, whose freshness contract is 60 seconds.
53
53
  */
54
- export declare const ISR_REVALIDATE_SECONDS = 300;
54
+ export declare const ISR_REVALIDATE_SECONDS = 60;
55
55
  export interface ISRConfig {
56
56
  /**
57
57
  * Revalidation interval in seconds.
58
58
  * - 0: Dynamic rendering (no caching) - used in preview mode
59
- * - 300: 5 minute ISR - used in production mode
59
+ * - 60: one minute ISR - used in production mode
60
60
  */
61
61
  revalidate: number | false;
62
62
  /**
@@ -70,7 +70,7 @@ export interface ISRConfig {
70
70
  *
71
71
  * Do not use the returned value directly in a Next.js route-segment config
72
72
  * export. Next statically analyzes those exports and requires a literal such as
73
- * `export const revalidate = 300`.
73
+ * `export const revalidate = 60`.
74
74
  *
75
75
  * @deprecated Next.js route-segment config must be statically analyzable, which
76
76
  * was this helper's intended use. Export a literal `revalidate` value and use
@@ -138,12 +138,8 @@ export interface EntriesCacheFile {
138
138
  export interface NavigationCacheFile {
139
139
  /** Navigation menu data */
140
140
  menus: Array<{
141
- /** Menu identifier (used as lookup key) */
142
- identifier: string | null;
143
- /** Menu ID (fallback if no identifier) */
144
141
  id: string;
145
- /** Menu display name */
146
- name: string;
142
+ location: 'main' | 'footer' | 'legal';
147
143
  /** Navigation items in this menu */
148
144
  items: NavigationItemRecord[];
149
145
  }>;
@@ -1,6 +1,6 @@
1
- import type { AddressedLocationValue, BookingConsent, BusinessAddress } from '../../../core/src/index';
1
+ import type { AddressedLocationValue, BusinessAddress } from '../../../core/src/index';
2
2
  import type { ResolvedInternalLinkEntityType } from '../../../blocks/src/index';
3
- import type { APIEndpoints, RoutableContentItem as ApiRoutableContentItem, SdkRuntimePageSurfaceSubject as ApiSdkRuntimePageSurfaceSubject, SiteBySlugResponse as ApiSiteBySlugResponse, SiteBookingOfferingPresetSummary as ApiSiteBookingOfferingPresetSummary, SdkBlockContentAdmission } from '../../../api/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';
4
4
  import type { MediaAssetIndexItem, SiteFooterContent, SiteHeaderContent } from '../contracts';
5
5
  import type { CompiledBoundaryRuntime } 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';
@@ -169,11 +169,7 @@ export interface NavigationItemRecord {
169
169
  }
170
170
  export interface NavigationMenuRecord {
171
171
  id: string;
172
- identifier: string | null;
173
- name: string;
174
- isPrimary: boolean;
175
- isFooter: boolean;
176
- footerRole: 'main' | 'legal-policy' | null;
172
+ location: 'main' | 'footer' | 'legal';
177
173
  createdAt?: string | null;
178
174
  updatedAt?: string | null;
179
175
  }
@@ -226,10 +222,33 @@ export type SitePrivacyPolicyDocument = {
226
222
  sections: SitePrivacyPolicySection[];
227
223
  };
228
224
  export type SiteLegalJurisdiction = 'UK' | 'US' | 'EU' | 'CA' | 'AU' | 'OTHER';
225
+ /** Mirrors `SiteLegalIdentitySource` in `@riverbankcms/api`. */
226
+ export type SiteLegalIdentitySource = 'public' | 'custom';
229
227
  export type SiteLegalProfilePayload = {
230
228
  legalEntityName: string | null;
231
229
  privacyContactEmail: string | null;
232
230
  jurisdiction: SiteLegalJurisdiction;
231
+ legalEntityNameSource: SiteLegalIdentitySource;
232
+ privacyContactEmailSource: SiteLegalIdentitySource;
233
+ privacyPolicyPublished: boolean;
234
+ };
235
+ /** Mirrors `SiteRuntimeBusinessDetails` in `@riverbankcms/api`. */
236
+ export type SiteRuntimeBusinessDetails = {
237
+ tagline: string | null;
238
+ contact: {
239
+ kind: 'phone';
240
+ phone: string;
241
+ email: null;
242
+ } | {
243
+ kind: 'email';
244
+ phone: null;
245
+ email: string;
246
+ } | {
247
+ kind: 'phone-and-email';
248
+ phone: string;
249
+ email: string;
250
+ } | null;
251
+ addressVisibility: 'shown' | 'hidden';
233
252
  };
234
253
  export type SiteRuntimePrivacyPolicy = {
235
254
  path: string;
@@ -295,9 +314,11 @@ export type SiteResponse = SiteSelectionResponse & {
295
314
  portalEnabled?: boolean;
296
315
  commerceEnabled?: boolean;
297
316
  bookingOfferingPresets?: readonly SiteBookingOfferingPresetSummary[];
317
+ mailingList?: import('../../../core/src/index').MailingListRuntimeContext;
298
318
  bookingTimeZone?: string;
299
319
  analytics?: SiteAnalyticsSettingsPayload;
300
320
  privacyPolicy?: SiteRuntimePrivacyPolicy;
321
+ businessDetails?: SiteRuntimeBusinessDetails;
301
322
  routes: Record<string, SiteRouteRecord>;
302
323
  layout: SiteLayoutResolvedPayload;
303
324
  customDomain: string | null;
@@ -534,16 +555,12 @@ export type PublicFormResponse = {
534
555
  export type PublicFormsResponse = {
535
556
  forms: FormRecord[];
536
557
  };
537
- export type PublicBookingService = {
538
- id: string;
539
- siteId: string;
540
- title: string;
541
- description: string | null;
542
- durationMinutes: number;
543
- consent?: BookingConsent;
544
- };
558
+ /** Visitor-facing appointment service, shared with the API redaction boundary. */
559
+ export type PublicBookingService = ApiPublicBookingService;
545
560
  export type PublicBookingServicesResponse = {
546
- services: PublicBookingService[];
561
+ services: Array<Omit<PublicBookingService, 'description'> & {
562
+ description?: string;
563
+ }>;
547
564
  };
548
565
  export type PublicWeeklySlotAvailabilityOption = {
549
566
  id: string;
@@ -20,8 +20,11 @@ export declare const MissingBlockOverrideError: MissingBlockOverrideErrorConstru
20
20
  export type PageRendererDataContext = {
21
21
  siteId?: string;
22
22
  pageId?: string;
23
+ /** Canonical request pathname used by blocks when resolving same-site destinations. */
24
+ pathname?: string;
23
25
  resolvedData?: Record<string, Record<string, unknown>>;
24
26
  bookingOfferingPresets?: readonly SiteBookingOfferingPresetSummary[];
27
+ mailingList?: import('../../../core/src/index').MailingListRuntimeContext;
25
28
  bookingTimeZone?: string;
26
29
  previewStage?: 'published' | 'preview';
27
30
  routes?: RouteMap;
@@ -1,4 +1,5 @@
1
1
  import { type ReactElement, type ReactNode } from 'react';
2
+ import { type BlockApiClient } from '../../../blocks/src/client';
2
3
  export type BlockApiAuth = Readonly<{
3
4
  type: 'api-key';
4
5
  key: string;
@@ -14,26 +15,8 @@ export type BlockApiConfig = Readonly<{
14
15
  siteId?: string;
15
16
  isPreview?: boolean;
16
17
  }>;
17
- export type NewsletterSubscribeInput = Readonly<{
18
- email: string;
19
- firstName?: string;
20
- lastName?: string;
21
- name?: string;
22
- company?: string;
23
- phone?: string;
24
- target: Readonly<{
25
- tag: 'published_block_ref';
26
- destinationRef: Readonly<{
27
- tag: 'block_ref';
28
- blockId: string;
29
- }>;
30
- }>;
31
- tags?: string[];
32
- }>;
33
- export type NewsletterSubscribeResult = Readonly<{
34
- subscribed: boolean;
35
- requiresConfirmation?: boolean;
36
- }>;
18
+ export type NewsletterSubscribeInput = Parameters<BlockApiClient['subscribeNewsletter']>[0];
19
+ export type NewsletterSubscribeResult = Awaited<ReturnType<BlockApiClient['subscribeNewsletter']>>;
37
20
  export declare function BlockApiProvider({ config, children, }: Readonly<{
38
21
  config: BlockApiConfig;
39
22
  children: ReactNode;
@@ -14,6 +14,7 @@ type PageCommonProps = {
14
14
  siteId: string;
15
15
  resolvedData?: ResolvedBlockData;
16
16
  bookingOfferingPresets?: readonly SiteBookingOfferingPresetSummary[];
17
+ mailingList?: import('../../../../core/src/index').MailingListRuntimeContext;
17
18
  bookingTimeZone?: string;
18
19
  routeMap?: RouteMap;
19
20
  /** Page identifier to routeId lookup for { kind: 'page' } CTA links */
@@ -73,6 +74,8 @@ type PageCommonProps = {
73
74
  editableRouteMetadataFieldIds?: ReadonlyArray<string> | null;
74
75
  /** Preview stage: 'preview' for draft content, 'published' for live content */
75
76
  previewStage?: 'preview' | 'published';
77
+ /** Canonical request pathname used by blocks when resolving same-site destinations. */
78
+ pathname?: string;
76
79
  };
77
80
  wrapBlock?: (blockId: string, rendered: React.ReactNode) => React.ReactNode;
78
81
  registry?: ComponentRegistry;
@@ -7,6 +7,7 @@
7
7
  import type { MediaAssetIndexItem, RouteMap, Theme } from '../../contracts';
8
8
  import type { RiverbankClient, PageResponse, SiteResponse } from '../../client/types';
9
9
  import type { SdkRuntimePageSurfaceSubject } from '../../public-api/contracts';
10
+ import type { MailingListRuntimeContext } from '../../../../core/src/index';
10
11
  import type { PageProps } from '../components/Page';
11
12
  import type { ResolvedBlockData } from '../../data/prefetchBlockData';
12
13
  import { type ResolveBlockDataDeps } from '../../data/resolveBlockData';
@@ -111,6 +112,7 @@ export type PageContentResult = {
111
112
  resolvedData: ResolvedBlockData;
112
113
  /** Selected booking offering presets exposed to SSR blocks. */
113
114
  bookingOfferingPresets?: PageProps['bookingOfferingPresets'];
115
+ mailingList?: MailingListRuntimeContext;
114
116
  bookingTimeZone?: string;
115
117
  /** Site data for metadata generation */
116
118
  site: SiteData;
@@ -147,6 +149,7 @@ export type EntryContentResult = {
147
149
  resolvedData: ResolvedBlockData;
148
150
  /** Selected booking offering presets exposed to SSR blocks. */
149
151
  bookingOfferingPresets?: PageProps['bookingOfferingPresets'];
152
+ mailingList?: MailingListRuntimeContext;
150
153
  bookingTimeZone?: string;
151
154
  /** Data context for template blocks (includes entry content for bindings) */
152
155
  dataContext: {
@@ -211,6 +214,7 @@ export type PageSurfaceContentResult = {
211
214
  templatePage: PageProps['page'] | null;
212
215
  resolvedData: ResolvedBlockData;
213
216
  bookingOfferingPresets?: PageProps['bookingOfferingPresets'];
217
+ mailingList?: MailingListRuntimeContext;
214
218
  bookingTimeZone?: string;
215
219
  dataContext: {
216
220
  pageSurface: Record<string, unknown>;
@@ -10,6 +10,7 @@ export type SiteRenderSupport = Readonly<{
10
10
  site: SiteData;
11
11
  sdkConfig: RuntimeSdkConfig | null;
12
12
  bookingOfferingPresets: readonly SiteBookingOfferingPresetSummary[];
13
+ mailingList?: import('../../../../core/src/index').MailingListRuntimeContext;
13
14
  bookingTimeZone: string;
14
15
  customBlocks?: SdkCustomBlock[];
15
16
  supabaseUrl?: string;
@@ -21,7 +21,7 @@ export { loadContent, isPageContent, isEntryContent, isPageSurfaceContent, } fro
21
21
  export type { LoadContentParams, LoadContentResult, ContentEntryData, PagePreviewMetadata, SiteData, } from './helpers/loadContent';
22
22
  export { buildFooterRenderablePageOutline } from './helpers/footerPageOutline';
23
23
  export type { BlockLoaderMap, DataLoaderContext, DataLoaderFn, DataLoaderOverrides, DataLoaderPreviewStage, DataLoaderRenderTarget, DataLoaderSearchParams, DataLoaderValue, } from '../data/types';
24
- export type { AppointmentBookingContent, BlogListingContent, BlogPostContent, BodyTextAlignment, BodyTextContent, ButtonVariant, CalendarTabViews, CardStylesContent, CollectionContent, ColumnsContent, ColumnOption, ContainerStylesContent, ContentFrameIntent, CtaFullContent, DisplayMode, EmbedContent, EventCalendarContent, EventDetailsContent, EventLayout, EventListingContent, EventRegistrationContent, EventSpotlightContent, FaqContent, FaqItem, CardRole, FeatureCardLegacySurfaceRole, FeatureCardSurfaceRole, FilterAutoShow, FormBlockContent, GiftingContent, HeroContent, HeroCta, HeroCtaInput, HeroMedia, ImageColSize, ImageGalleryContent, IntroContent, LayoutAlign, LayoutWidth, Media, MediaTextAlignment, MediaTextAspectRatio, MediaTextContent, MediaTextImagePosition, NewsletterSignupContent, NewsletterSignupPreset, OfferingsPreviewContent, RichTextDoc, TipTapNode, TipTapMark, LinkValue, InternalLinkValue, ExternalLinkValue, CustomLinkValue, PageLinkValue, EntryLinkValue, RichTextPrimitiveProps, RichTextVariant, PageOutline, BlockOutline, RouteMap, RouteMapEntry, OccurrenceContextData, EntrySubrouteContextData, Theme, ThemeTokens, SectionStylesContent, SemanticSpacing, ShopContent, SingleButtonContent, SiteFooterContent, SiteHeaderContent, StackContentAlignment, StackImagePosition, SystemBlockContentByFullKind, SystemBlockContentByKind, SystemBlockContentFor, SystemBlockShortKind, TeamMembersContent, TestimonialEntryContent, TestimonialsBlockContent, ThumbnailPadding, ThumbnailShape, VideoGridContent, WeekStart, MediaAssetIndexItem, ImageOptions, ResolveImageUrlContext, ResolveImageUrlContextInput, ResolveImageSourceSetOptions, ResolvedImageSourceSet, } from '../contracts';
24
+ export type { AppointmentBookingContent, BlogListingContent, BlogPostContent, BodyTextAlignment, BodyTextContent, ButtonVariant, CalendarTabViews, CardStylesContent, CollectionContent, ColumnsContent, ColumnOption, ContainerStylesContent, ContentFrameIntent, CtaFullContent, DisplayMode, EmbedContent, EventCalendarContent, EventDetailsContent, EventLayout, EventListingContent, EventRegistrationContent, EventSpotlightContent, FaqContent, FaqItem, CardRole, FeatureCardLegacySurfaceRole, FeatureCardSurfaceRole, FilterAutoShow, FormBlockContent, GiftingContent, HeroContent, HeroCta, HeroCtaInput, HeroMedia, ImageColSize, ImageGalleryContent, IntroContent, LayoutAlign, LayoutWidth, Media, MediaTextAlignment, MediaTextAspectRatio, MediaTextContent, MediaTextImagePosition, NewsletterSignupContent, OfferingsPreviewContent, RichTextDoc, TipTapNode, TipTapMark, LinkValue, InternalLinkValue, ExternalLinkValue, CustomLinkValue, PageLinkValue, EntryLinkValue, RichTextPrimitiveProps, RichTextVariant, PageOutline, BlockOutline, RouteMap, RouteMapEntry, OccurrenceContextData, EntrySubrouteContextData, Theme, ThemeTokens, SectionStylesContent, SemanticSpacing, ShopContent, SingleButtonContent, SiteFooterContent, SiteHeaderContent, StackContentAlignment, StackImagePosition, SystemBlockContentByFullKind, SystemBlockContentByKind, SystemBlockContentFor, SystemBlockShortKind, TeamMembersContent, TestimonialEntryContent, TestimonialsBlockContent, ThumbnailPadding, ThumbnailShape, VideoGridContent, WeekStart, MediaAssetIndexItem, ImageOptions, ResolveImageUrlContext, ResolveImageUrlContextInput, ResolveImageSourceSetOptions, ResolvedImageSourceSet, } from '../contracts';
25
25
  export { ImagePresets } from '../contracts';
26
26
  export { RichText } from './primitives/RichText';
27
27
  export { resolveImageUrl, resolveImageUrlWithContext, resolveImageSourceSetWithContext, } from './image';
@@ -7,7 +7,7 @@
7
7
  * `@riverbankcms/blocks` (which is not a public dependency). This list is a
8
8
  * stable public contract; keep it in sync with the internal blocks runtime.
9
9
  */
10
- export declare const SYSTEM_BLOCK_KINDS: readonly ["block.hero", "block.intro", "block.columns", "block.collection", "block.feature-cards", "block.media-text", "block.cta-full", "block.single-button", "block.body-text", "block.location-map", "block.faq", "block.testimonials", "block.team-members", "block.embed", "block.blog-post", "block.blog-listing", "block.site-header", "block.site-footer", "block.form", "block.contact-newsletter", "block.appointment-booking", "block.weekly-slot-availability", "block.event-registration", "block.event-details", "block.event-spotlight", "block.event-listing", "block.event-calendar", "block.recurring-schedule", "block.offerings-preview", "block.shop", "block.product-list", "block.product-detail", "block.cart", "block.checkout", "block.gifting", "block.newsletter-signup", "block.image-gallery", "block.video-grid", "block.audio-player", "block.file-download"];
10
+ export declare const SYSTEM_BLOCK_KINDS: readonly ["block.hero", "block.intro", "block.columns", "block.collection", "block.feature-cards", "block.media-text", "block.cta-full", "block.single-button", "block.body-text", "block.location-map", "block.faq", "block.testimonials", "block.team-members", "block.embed", "block.blog-post", "block.blog-listing", "block.site-header", "block.site-footer", "block.form", "block.contact-newsletter", "block.appointment-booking", "block.appointment-services", "block.weekly-slot-availability", "block.event-registration", "block.event-details", "block.event-spotlight", "block.event-listing", "block.event-calendar", "block.recurring-schedule", "block.offerings-preview", "block.shop", "block.product-list", "block.product-detail", "block.cart", "block.checkout", "block.gifting", "block.newsletter-signup", "block.image-gallery", "block.video-grid", "block.audio-player", "block.file-download"];
11
11
  export type SystemBlockKind = (typeof SYSTEM_BLOCK_KINDS)[number];
12
12
  export type CustomBlockKind = `custom.${string}`;
13
13
  export type BlockKind = SystemBlockKind | CustomBlockKind;
@@ -8,4 +8,4 @@
8
8
  * 1. This constant
9
9
  * 2. The "version" field in package.json
10
10
  */
11
- export declare const SDK_VERSION = "0.138.0";
11
+ export declare const SDK_VERSION = "0.139.0";