@riverbankcms/sdk 0.138.0 → 0.140.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 (293) hide show
  1. package/README.md +12 -16
  2. package/dist/{PreviewEditorSidebar-BVPur_CU.mjs → PreviewEditorSidebar-CUyTzd5z.mjs} +4 -4
  3. package/dist/{PreviewEditorUI-DLhWX8oh.mjs → PreviewEditorUI-Agkw4v5i.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BguJY1SW.mjs → PreviewQueryProvider-CN0ewic5.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-Tda6qw4z.mjs → SdkPreviewModeRuntime-DdbeAdS8.mjs} +62 -28
  6. package/dist/{SiteChromeCustomizeContext-BHFgMjde.mjs → SiteChromeCustomizeContext-CqGOz-Kv.mjs} +8467 -5616
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +264 -495
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +221 -242
  9. package/dist/_dts/api/src/accessAdmin.d.ts +74 -104
  10. package/dist/_dts/api/src/aiEndpoints.d.ts +5 -1
  11. package/dist/_dts/api/src/authSubmission.d.ts +46 -0
  12. package/dist/_dts/api/src/billing.d.ts +18 -7
  13. package/dist/_dts/api/src/billingEndpointDefinitions.d.ts +23 -0
  14. package/dist/_dts/api/src/billingEndpointTypes.d.ts +26 -0
  15. package/dist/_dts/api/src/blocks.d.ts +2 -0
  16. package/dist/_dts/api/src/bookingRecords.d.ts +1 -2
  17. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +8 -1
  18. package/dist/_dts/api/src/communications.d.ts +0 -1
  19. package/dist/_dts/api/src/contentRuntime.d.ts +16 -4
  20. package/dist/_dts/api/src/endpoints.d.ts +275 -167
  21. package/dist/_dts/api/src/event-destination-policy.d.ts +2 -1
  22. package/dist/_dts/api/src/footerSettings.d.ts +10 -10
  23. package/dist/_dts/api/src/index.d.ts +11 -10
  24. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  25. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  26. package/dist/_dts/api/src/mailchimpIntegration.d.ts +2 -59
  27. package/dist/_dts/api/src/mailingListIntegration.d.ts +123 -0
  28. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +1 -1
  29. package/dist/_dts/api/src/navigation/locations.d.ts +1 -0
  30. package/dist/_dts/api/src/navigation/types.d.ts +1 -1
  31. package/dist/_dts/api/src/navigation.d.ts +1 -26
  32. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +109 -2
  33. package/dist/_dts/api/src/onboarding/confirmationResend.d.ts +25 -0
  34. package/dist/_dts/api/src/onboarding/surfaceData.d.ts +185 -0
  35. package/dist/_dts/api/src/privacyPolicy.d.ts +74 -2
  36. package/dist/_dts/api/src/publicBookingAvailabilityEndpointDefinitions.d.ts +14 -6
  37. package/dist/_dts/api/src/publicEventEndpointDefinitions.d.ts +1 -1
  38. package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +1 -0
  39. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +11 -3
  40. package/dist/_dts/api/src/publicExperience/newsletterEndpoints.d.ts +2 -4
  41. package/dist/_dts/api/src/publicExperience/sharedTypes.d.ts +9 -49
  42. package/dist/_dts/api/src/publicOnboardingAttemptEndpointDefinitions.d.ts +65 -0
  43. package/dist/_dts/api/src/publicReadEndpointDefinitions.d.ts +73 -0
  44. package/dist/_dts/api/src/saveOutcome.d.ts +20 -0
  45. package/dist/_dts/api/src/schemas/site-api-keys.d.ts +1 -1
  46. package/dist/_dts/api/src/sdkContracts.d.ts +5 -32
  47. package/dist/_dts/api/src/sdkPushContracts.d.ts +18 -0
  48. package/dist/_dts/api/src/sdkThemeWire.d.ts +46 -46
  49. package/dist/_dts/api/src/settings/permissions.d.ts +12 -0
  50. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +9 -34
  51. package/dist/_dts/api/src/siteOnboarding.d.ts +84 -228
  52. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +3 -13
  53. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +3 -1
  54. package/dist/_dts/api/src/siteSettings.d.ts +38 -6
  55. package/dist/_dts/api/src/types.d.ts +78 -77
  56. package/dist/_dts/api/src/wholeSeriesRuns.d.ts +2 -37
  57. package/dist/_dts/billing/src/membership/index.d.ts +17 -7
  58. package/dist/_dts/billing/src/plans/display.d.ts +15 -0
  59. package/dist/_dts/billing/src/plans/registry.d.ts +2 -0
  60. package/dist/_dts/billing/src/plans/standing.d.ts +19 -0
  61. package/dist/_dts/billing/src/plans/types.d.ts +4 -7
  62. package/dist/_dts/billing/src/site-arrangements.d.ts +14 -3
  63. package/dist/_dts/billing/src/subscriptions/evidence.d.ts +12 -0
  64. package/dist/_dts/billing/src/subscriptions/standingEvidence.d.ts +31 -0
  65. package/dist/_dts/billing/src/subscriptions/store.d.ts +23 -5
  66. package/dist/_dts/blocks/src/PageRenderer.d.ts +6 -15
  67. package/dist/_dts/blocks/src/client.d.ts +1 -1
  68. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +48 -20
  69. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +2 -0
  70. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +9 -0
  71. package/dist/_dts/blocks/src/pageRenderingMode.d.ts +12 -6
  72. package/dist/_dts/blocks/src/portal/types.d.ts +2 -4
  73. package/dist/_dts/blocks/src/portal/waitlist-types.d.ts +35 -0
  74. package/dist/_dts/blocks/src/system/blocks/appointment-services.d.ts +11 -0
  75. package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +39 -66
  76. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +2 -0
  77. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +42 -0
  78. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -0
  79. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +39 -114
  80. package/dist/_dts/blocks/src/system/blocks/offerings-preview/catalogue.d.ts +18 -0
  81. package/dist/_dts/blocks/src/system/blocks/offerings-preview/fields.d.ts +2 -0
  82. package/dist/_dts/blocks/src/system/blocks/offerings-preview/index.d.ts +4 -0
  83. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +7 -13
  84. package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
  85. package/dist/_dts/blocks/src/system/data/index.d.ts +4 -4
  86. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  87. package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +2 -1
  88. package/dist/_dts/blocks/src/system/data/publicLoaderCachePolicy.d.ts +2 -74
  89. package/dist/_dts/blocks/src/system/data/types.d.ts +9 -0
  90. package/dist/_dts/blocks/src/system/fragments/library/newsletterForm.d.ts +33 -100
  91. package/dist/_dts/blocks/src/system/registry.d.ts +1 -0
  92. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +0 -28
  93. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  94. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +7 -3
  95. package/dist/_dts/blocks/src/system/runtime/api/types/newsletter.d.ts +5 -15
  96. package/dist/_dts/blocks/src/system/runtime/api/types/portal.d.ts +1 -1
  97. package/dist/_dts/blocks/src/system/runtime/api/types/waitlist-claims.d.ts +7 -2
  98. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +78 -30
  99. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +39 -15
  100. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.d.ts +3 -0
  101. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +1 -1
  102. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarToday.d.ts +22 -0
  103. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +94 -0
  104. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +1 -2
  105. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/TicketSelectionStep.d.ts +2 -0
  106. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/checkoutRecovery.d.ts +14 -0
  107. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +56 -0
  108. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +6 -8
  109. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useCheckoutRecovery.d.ts +8 -0
  110. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +8 -7
  111. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +12 -2
  112. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventSourceRecovery.d.ts +18 -0
  113. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.client.d.ts +1 -1
  114. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +24 -7
  115. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.server.d.ts +4 -2
  116. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +28 -0
  117. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/bookability.d.ts +9 -0
  118. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +14 -0
  119. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/duration.d.ts +2 -0
  120. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/index.d.ts +4 -0
  121. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/location.d.ts +2 -0
  122. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/quickDates.d.ts +16 -0
  123. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/AgendaEventCard.d.ts +9 -1
  124. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarDayCell.d.ts +2 -0
  125. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarDayHeaders.d.ts +4 -0
  126. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/DayEventsModal.d.ts +2 -1
  127. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +5 -0
  128. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventModals.d.ts +2 -1
  129. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventQuickDates.d.ts +15 -0
  130. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekAgendaView.d.ts +7 -3
  131. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekTimetableView.d.ts +1 -0
  132. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/index.d.ts +2 -0
  133. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/timetableModel.d.ts +1 -0
  134. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/useHydrationReady.d.ts +6 -0
  135. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.state.d.ts +3 -0
  136. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +62 -33
  137. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +3 -3
  138. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +14 -31
  139. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview-catalogue.d.ts +14 -0
  140. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview-content.d.ts +23 -0
  141. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview.d.ts +4 -2
  142. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +1 -0
  143. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -6
  144. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  145. package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.d.ts +2 -0
  146. package/dist/_dts/blocks/src/system/transforms/registry/formatting.d.ts +5 -0
  147. package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +4 -0
  148. package/dist/_dts/commerce/src/purchase/index.d.ts +1 -0
  149. package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +32 -16
  150. package/dist/_dts/commerce/src/purchase/stripeCommissionMetadata.d.ts +34 -0
  151. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +2 -1
  152. package/dist/_dts/content-editor/src/footerEngagementDraft.d.ts +6 -24
  153. package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +3 -1
  154. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +4 -2
  155. package/dist/_dts/core/src/branded.d.ts +0 -8
  156. package/dist/_dts/core/src/footer-engagement.d.ts +2 -6
  157. package/dist/_dts/core/src/index.d.ts +10 -1
  158. package/dist/_dts/core/src/mailing-list-identifiers.d.ts +21 -0
  159. package/dist/_dts/core/src/mailing-list-runtime.d.ts +42 -0
  160. package/dist/_dts/core/src/mailing-list-setup-parser.d.ts +14 -0
  161. package/dist/_dts/core/src/mailing-list-setup.d.ts +142 -0
  162. package/dist/_dts/core/src/mailing-list-submission.d.ts +224 -0
  163. package/dist/_dts/core/src/mailing-list-targeting-parser.d.ts +12 -0
  164. package/dist/_dts/core/src/mailing-list-targeting.d.ts +93 -0
  165. package/dist/_dts/core/src/navigation-locations.d.ts +28 -0
  166. package/dist/_dts/core/src/participants.d.ts +2 -29
  167. package/dist/_dts/core/src/public-experience.d.ts +4 -0
  168. package/dist/_dts/core/src/public-profile.d.ts +35 -1
  169. package/dist/_dts/core/src/public-read-cache-contract.d.ts +45 -0
  170. package/dist/_dts/core/src/site-route-target.d.ts +9 -2
  171. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +797 -954
  172. package/dist/_dts/editor-blocks/src/widgets/index.d.ts +1 -0
  173. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListGlobalSettingsSummary.d.ts +10 -0
  174. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListTargetingField.d.ts +12 -0
  175. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/context.d.ts +14 -0
  176. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/index.d.ts +3 -0
  177. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +7 -0
  178. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/targetingState.d.ts +19 -0
  179. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +1 -0
  180. package/dist/_dts/sdk/src/client/publicAppointmentReadOperations.d.ts +12 -0
  181. package/dist/_dts/sdk/src/client/publicEventReadOperations.d.ts +2 -1
  182. package/dist/_dts/sdk/src/client/publicLoaderCacheAccess.d.ts +11 -4
  183. package/dist/_dts/sdk/src/config/content-types.d.ts +3 -13
  184. package/dist/_dts/sdk/src/config/content-validation.d.ts +5 -8
  185. package/dist/_dts/sdk/src/constants.d.ts +3 -3
  186. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  187. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +12 -31
  188. package/dist/_dts/sdk/src/navigation/index.d.ts +11 -29
  189. package/dist/_dts/sdk/src/next/index.d.ts +4 -4
  190. package/dist/_dts/sdk/src/prebuild/types.d.ts +1 -5
  191. package/dist/_dts/sdk/src/public-api/contracts.d.ts +44 -33
  192. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +5 -0
  193. package/dist/_dts/sdk/src/rendering/client.d.ts +3 -20
  194. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +5 -0
  195. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +4 -0
  196. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +8 -1
  197. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +1 -0
  198. package/dist/_dts/sdk/src/rendering/index.d.ts +1 -1
  199. package/dist/_dts/sdk/src/types/block-kinds.d.ts +1 -1
  200. package/dist/_dts/sdk/src/version.d.ts +1 -1
  201. package/dist/_dts/theme-core/src/accordions/types.d.ts +3 -3
  202. package/dist/_dts/theme-core/src/cards/types.d.ts +21 -21
  203. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  204. package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +8 -2
  205. package/dist/_dts/theme-core/src/header/legacyHeaderVariant.d.ts +2 -2
  206. package/dist/_dts/theme-core/src/hosted-booking-appearance.d.ts +41 -0
  207. package/dist/_dts/theme-core/src/index.d.ts +1 -0
  208. package/dist/_dts/theme-core/src/inputs/types.d.ts +2 -2
  209. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +54 -54
  210. package/dist/_dts/theme-core/src/runtime/buildThemeRuntime.d.ts +0 -1
  211. package/dist/_dts/theme-core/src/runtime/buildThemeRuntimeFromBridge.d.ts +1 -4
  212. package/dist/_dts/theme-core/src/schema.d.ts +84 -84
  213. package/dist/_dts/theme-core/src/shared/componentStyles.d.ts +1 -1
  214. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  215. package/dist/_dts/theme-core/src/surfaces/foregroundInteraction.d.ts +77 -0
  216. package/dist/_dts/theme-core/src/surfaces/index.d.ts +1 -0
  217. package/dist/_dts/theme-core/src/tokens/tokens.d.ts +7 -0
  218. package/dist/_dts/theme-core/src/typography/generateTypographyCss.d.ts +2 -2
  219. package/dist/_dts/ui/src/badge.d.ts +1 -1
  220. package/dist/_dts/ui/src/callout.d.ts +1 -1
  221. package/dist/_dts/ui/src/lib/use-delayed-flag.d.ts +9 -0
  222. package/dist/_dts/ui/src/pending-button.d.ts +10 -0
  223. package/dist/client/{BookingConsentAgreement-DQUik1Mx.mjs → BookingConsentAgreement-CuKa82V4.mjs} +4 -4
  224. package/dist/client/{DiscountCodeDisclosure-CU67Q4vH.mjs → DiscountCodeDisclosure-BbYieKWB.mjs} +1 -1
  225. package/dist/client/{EventCombined.client-a02TXUgg.mjs → EventCombined.client-LTfR1Aby.mjs} +444 -200
  226. package/dist/client/{EventListing.client-99qx7jFl.mjs → EventListing.client-DUHpYSuo.mjs} +2 -2
  227. package/dist/client/{LeafletStaticMap-CWzcq73L.mjs → LeafletStaticMap-CHRupL6m.mjs} +1 -1
  228. package/dist/client/{accordion-D1nb3-Oj.mjs → accordion-6HiIFxNL.mjs} +1 -1
  229. package/dist/client/{bookingForm-BGrmLhaO.mjs → bookingForm-Dlmid43H.mjs} +7 -7
  230. package/dist/client/bookings.mjs +368 -142
  231. package/dist/client/{carousel-DSmOx3ad.mjs → carousel-DmkZRRq_.mjs} +2 -2
  232. package/dist/client/{carousel.client-59G_WMr4.mjs → carousel.client-DQTjCVQT.mjs} +1 -1
  233. package/dist/client/{cart-COWeOIUk.mjs → cart-CIC24330.mjs} +3 -3
  234. package/dist/client/{checkout-CeysaIJK.mjs → checkout-D1Zw9imo.mjs} +3 -3
  235. package/dist/client/{checkoutUrls-BuseL0dw.mjs → checkoutUrls-FL6lRkrt.mjs} +1 -1
  236. package/dist/client/client.mjs +5017 -2258
  237. package/dist/client/{colorStyles-CrxJrPjJ.mjs → colorStyles-3013aRAY.mjs} +3 -1
  238. package/dist/client/{context-DBzX85Xc.mjs → context-Cy1OayHx.mjs} +9 -21
  239. package/dist/client/{dates-DCYhZBlW.mjs → dates-aDcfoLHr.mjs} +21 -3
  240. package/dist/client/{eventCalendar-BgsN73Ul.mjs → eventCalendar-FQxMPAjf.mjs} +81 -79
  241. package/dist/client/{eventCombined-DcZQAMQP.mjs → eventCombined-Dr3ac6Hb.mjs} +3 -3
  242. package/dist/client/{eventDetails-BWwGJ54l.mjs → eventDetails-D-AzUHFQ.mjs} +4 -4
  243. package/dist/client/{eventListing-DqYqV8vp.mjs → eventListing-B3XxBf3i.mjs} +3 -3
  244. package/dist/client/{eventRegistration-DQGDgu_e.mjs → eventRegistration-I6EaokFD.mjs} +543 -155
  245. package/dist/client/{form-ClfpasVT.mjs → form-BbWckVWY.mjs} +3 -3
  246. package/dist/client/{headerSection-BuOMe98N.mjs → headerSection-C9qU4Y7x.mjs} +2 -2
  247. package/dist/client/hooks.mjs +1685 -716
  248. package/dist/client/{locationMap-CEqu_sfa.mjs → locationMap-CLCShvlG.mjs} +3 -3
  249. package/dist/client/{media-BOHuueS5.mjs → media-DHpfFwd3.mjs} +1 -1
  250. package/dist/client/newsletterForm-Briukxzi.mjs +444 -0
  251. package/dist/client/{pricing-xj7MPZlK.mjs → pricing-Copadu-2.mjs} +1 -1
  252. package/dist/client/{productDetail-vxqTt5Xj.mjs → productDetail-oujlRd-r.mjs} +3 -3
  253. package/dist/client/{productList-OTdZu8sb.mjs → productList-BRiIRUcd.mjs} +3 -3
  254. package/dist/client/{propsDecoder-CY9gGEF7.mjs → propsDecoder-CB2KS_ko.mjs} +706 -160
  255. package/dist/client/rendering/client.mjs +3161 -1226
  256. package/dist/client/rendering/islands.mjs +19 -19
  257. package/dist/client/rendering.mjs +4864 -1914
  258. package/dist/client/{scrollToBlock--BFV6kl-.mjs → scrollToBlock-B1IS1_ua.mjs} +1 -1
  259. package/dist/client/{shop-CP4YbDL9.mjs → shop-Vn6yNFED.mjs} +6 -6
  260. package/dist/client/{shop-commerce-APs4XBXE.mjs → shop-commerce-BVTqipYp.mjs} +7 -7
  261. package/dist/client/{shop-commerce-store-CAVLxLFr.mjs → shop-commerce-store-BVnJVy7v.mjs} +1 -1
  262. package/dist/client/{shopShared-BnSRrwXI.mjs → shopShared-COIeK77T.mjs} +4 -4
  263. package/dist/client/{useEventFilters-1a1by4c8.mjs → useEventFilters-DzIUcS9n.mjs} +58 -11
  264. package/dist/preview-next/before-render.mjs +357 -175
  265. package/dist/preview-next/client/runtime.mjs +4 -4
  266. package/dist/preview-next/keepAlive.mjs +357 -175
  267. package/dist/preview-next/middleware.mjs +357 -175
  268. package/dist/{previewAuthStore-BkEgnYPP.mjs → previewAuthStore-Gjb6r6vz.mjs} +357 -175
  269. package/dist/{sdk-runtime-DwGfsT0S.mjs → sdk-runtime-CnCLvZRv.mjs} +2 -2
  270. package/dist/{separator-BeqDLneQ.mjs → separator-DKDRJ1oH.mjs} +1 -1
  271. package/dist/server/components.mjs +3389 -1251
  272. package/dist/server/config-validation.mjs +2737 -1784
  273. package/dist/server/config.mjs +2742 -1788
  274. package/dist/server/data.mjs +1586 -615
  275. package/dist/server/index.mjs +496 -352
  276. package/dist/server/navigation.mjs +16 -47
  277. package/dist/server/next.mjs +3978 -2007
  278. package/dist/server/page-converter.mjs +1109 -553
  279. package/dist/server/prebuild.mjs +2 -3
  280. package/dist/server/rendering/server.mjs +4101 -1951
  281. package/dist/server/rendering.mjs +3416 -1259
  282. package/dist/server/routing.mjs +1869 -786
  283. package/dist/server/server.mjs +3260 -2482
  284. package/dist/server/theme-bridge.mjs +725 -124
  285. package/dist/server/theme.mjs +8 -2
  286. package/dist/styles/index.css +526 -68
  287. package/package.json +1 -1
  288. package/dist/_dts/api/src/navigation/identity.d.ts +0 -59
  289. package/dist/_dts/blocks/src/system/blocks/newsletter-signup-destination.d.ts +0 -291
  290. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionCompactRow.d.ts +0 -29
  291. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionList.d.ts +0 -13
  292. package/dist/_dts/core/src/newsletter-signup-destination.d.ts +0 -38
  293. package/dist/client/newsletterForm-IbrHjMxy.mjs +0 -322
@@ -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,10 @@
1
+ import type { MailingListAuthoringContext } from '../../../../api/src/index';
2
+ import type { ReactElement } from 'react';
3
+ /**
4
+ * The read-only "what every signup on this site shares" card. Editors only
5
+ * choose targeting; fields, confirmation and copy are set once by an
6
+ * administrator, so this tells them what they are working inside of.
7
+ */
8
+ export declare function MailingListGlobalSettingsSummary({ context }: Readonly<{
9
+ context: MailingListAuthoringContext;
10
+ }>): ReactElement | null;
@@ -0,0 +1,12 @@
1
+ import type { FieldWidgetProps, GroupFieldConfig } from '../../../../block-form/src/index';
2
+ import { type MailingListPlacementTargeting, type MailingListRuntimeContext } from '../../../../core/src/index';
3
+ export { MailingListGlobalSettingsSummary } from './MailingListGlobalSettingsSummary';
4
+ export declare function MailingListTargetingField({ path, backend, config, }: FieldWidgetProps<MailingListPlacementTargeting, GroupFieldConfig>): import("react").JSX.Element;
5
+ export declare function MailingListTargetingControl({ context, targeting, onChange, name, }: Readonly<{
6
+ context: Extract<MailingListRuntimeContext, {
7
+ tag: 'configured';
8
+ }>;
9
+ targeting: MailingListPlacementTargeting;
10
+ onChange: (value: MailingListPlacementTargeting) => void;
11
+ name: string;
12
+ }>): import("react").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { MailingListAuthoringContext } from '../../../../api/src/index';
3
+ import type { SiteId } from '../../../../core/src/index';
4
+ export type MailingListAuthoringContextLoader = (siteId: SiteId) => Promise<MailingListAuthoringContext>;
5
+ type Value = Readonly<{
6
+ siteId: SiteId;
7
+ load: MailingListAuthoringContextLoader;
8
+ manageHref?: string;
9
+ }>;
10
+ export declare function MailingListTargetingProvider({ children, load, manageHref, siteId, }: Value & Readonly<{
11
+ children: ReactNode;
12
+ }>): import("react").JSX.Element;
13
+ export declare function useMailingListTargetingContext(): Value;
14
+ export {};
@@ -0,0 +1,3 @@
1
+ export * from './context';
2
+ export * from './loaders';
3
+ export * from './MailingListTargetingField';
@@ -0,0 +1,7 @@
1
+ import type { MailingListAuthoringContext } from '../../../../api/src/index';
2
+ import type { ApiClient } from '../../../../api/src/request';
3
+ import type { SiteId } from '../../../../core/src/index';
4
+ export declare function loadMailingListAuthoringContext(input: Readonly<{
5
+ apiClient: ApiClient;
6
+ siteId: SiteId;
7
+ }>): Promise<MailingListAuthoringContext>;
@@ -0,0 +1,19 @@
1
+ import { type MailingListPlacementTargeting, type MailingListRuntimeContext } from '../../../../core/src/index';
2
+ type ConfiguredContext = Extract<MailingListRuntimeContext, {
3
+ tag: 'configured';
4
+ }>;
5
+ type CustomTargeting = Exclude<MailingListPlacementTargeting, {
6
+ mode: 'default';
7
+ }>;
8
+ /** The name of the site's default topic/list/audience, or null when it no longer exists. */
9
+ export declare function defaultItemName(context: ConfiguredContext): string | null;
10
+ /** What the editor is choosing between, in the provider's own words. */
11
+ export declare function choiceNoun(context: ConfiguredContext, form?: 'singular' | 'plural'): string;
12
+ export declare function providerDisplayName(context: ConfiguredContext): string;
13
+ export declare function providerDefaultIsAvailable(context: ConfiguredContext): boolean;
14
+ export declare function createInitialCustom(context: ConfiguredContext): CustomTargeting;
15
+ export declare function changeSelectionMode(context: ConfiguredContext, targeting: CustomTargeting, mode: 'fixed' | 'visitor_choice'): CustomTargeting;
16
+ export declare function canOfferVisitorChoice(context: ConfiguredContext, targeting: CustomTargeting): boolean;
17
+ export declare function toggle(values: readonly string[], id: string): string[];
18
+ export declare function toggleRequired(values: readonly string[], id: string): string[];
19
+ export {};
@@ -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,31 @@ export type SitePrivacyPolicyDocument = {
226
222
  sections: SitePrivacyPolicySection[];
227
223
  };
228
224
  export type SiteLegalJurisdiction = 'UK' | 'US' | 'EU' | 'CA' | 'AU' | 'OTHER';
225
+ export type SiteLegalIdentitySource = 'public' | 'custom';
229
226
  export type SiteLegalProfilePayload = {
230
227
  legalEntityName: string | null;
231
228
  privacyContactEmail: string | null;
232
229
  jurisdiction: SiteLegalJurisdiction;
230
+ legalEntityNameSource: SiteLegalIdentitySource;
231
+ privacyContactEmailSource: SiteLegalIdentitySource;
232
+ privacyPolicyPublished: boolean;
233
+ };
234
+ export type SiteRuntimeBusinessDetails = {
235
+ tagline: string | null;
236
+ contact: {
237
+ kind: 'phone';
238
+ phone: string;
239
+ email: null;
240
+ } | {
241
+ kind: 'email';
242
+ phone: null;
243
+ email: string;
244
+ } | {
245
+ kind: 'phone-and-email';
246
+ phone: string;
247
+ email: string;
248
+ } | null;
249
+ addressVisibility: 'shown' | 'hidden';
233
250
  };
234
251
  export type SiteRuntimePrivacyPolicy = {
235
252
  path: string;
@@ -269,10 +286,9 @@ export type SiteRouteRecord = {
269
286
  publishedAt?: string | null;
270
287
  };
271
288
  export type SiteBookingOfferingPresetSummary = ApiSiteBookingOfferingPresetSummary;
272
- /** Keep the SDK's selection metadata aligned with the runtime response. */
273
- type SiteSelectionResponse = Pick<ApiSiteBySlugResponse, 'theme' | 'themeId' | Extract<keyof ApiSiteBySlugResponse, `selection${string}`>>;
289
+ type SiteSelectionResponse = Pick<ApiSiteBySlugResponse, 'theme' | 'themeId' | 'bookingAttribution' | Extract<keyof ApiSiteBySlugResponse, `selection${string}`>>;
274
290
  export type SiteResponse = SiteSelectionResponse & {
275
- site: {
291
+ site: ApiSiteBySlugResponse['site'] & {
276
292
  id: string;
277
293
  title: string;
278
294
  slug: string;
@@ -295,9 +311,11 @@ export type SiteResponse = SiteSelectionResponse & {
295
311
  portalEnabled?: boolean;
296
312
  commerceEnabled?: boolean;
297
313
  bookingOfferingPresets?: readonly SiteBookingOfferingPresetSummary[];
314
+ mailingList?: import('../../../core/src/index').MailingListRuntimeContext;
298
315
  bookingTimeZone?: string;
299
316
  analytics?: SiteAnalyticsSettingsPayload;
300
317
  privacyPolicy?: SiteRuntimePrivacyPolicy;
318
+ businessDetails?: SiteRuntimeBusinessDetails;
301
319
  routes: Record<string, SiteRouteRecord>;
302
320
  layout: SiteLayoutResolvedPayload;
303
321
  customDomain: string | null;
@@ -335,6 +353,7 @@ export type SdkRuntimePage = {
335
353
  canonicalUrl?: string | null;
336
354
  blocks: Array<{
337
355
  id: string;
356
+ contentVersionId: string | null;
338
357
  kind: string;
339
358
  purpose?: string;
340
359
  content: Record<string, unknown>;
@@ -353,37 +372,34 @@ export type SdkTemplate = {
353
372
  bindings: Record<string, unknown> | null;
354
373
  }>;
355
374
  };
375
+ type SdkSlotBlockIdentity = {
376
+ id: string;
377
+ blockId?: string;
378
+ contentVersionId: string;
379
+ kind: string;
380
+ purpose: string;
381
+ orderIndex?: number | null;
382
+ admission?: SdkBlockContentAdmission;
383
+ };
356
384
  export type SdkEntrySlotContent = {
357
385
  entrySlotId: string;
358
386
  slotKey: string;
359
- blocks: Array<{
360
- id: string;
361
- blockId?: string;
362
- kind: string;
363
- purpose: string;
364
- orderIndex?: number | null;
387
+ blocks: Array<SdkSlotBlockIdentity & {
365
388
  content: Record<string, unknown> | null;
366
- admission?: SdkBlockContentAdmission;
367
389
  }>;
368
390
  };
369
391
  export type SdkSurfaceSlotContent = {
370
392
  surfaceSlotId: string;
371
393
  pageSurfaceId: string;
372
394
  slotKey: string;
373
- blocks: Array<{
374
- id: string;
375
- blockId?: string;
395
+ blocks: Array<SdkSlotBlockIdentity & {
376
396
  surfaceSlotId: string;
377
397
  identifier?: string | null;
378
- kind: string;
379
- purpose: string;
380
- orderIndex?: number | null;
381
398
  content: Record<string, unknown>;
382
399
  draftContent?: unknown;
383
400
  publishedContent?: unknown;
384
401
  draftContentId?: string | null;
385
402
  publishedContentId?: string | null;
386
- admission?: SdkBlockContentAdmission;
387
403
  }>;
388
404
  };
389
405
  export type SdkRuntimePageSurfaceSubject = ApiSdkRuntimePageSurfaceSubject;
@@ -534,16 +550,11 @@ export type PublicFormResponse = {
534
550
  export type PublicFormsResponse = {
535
551
  forms: FormRecord[];
536
552
  };
537
- export type PublicBookingService = {
538
- id: string;
539
- siteId: string;
540
- title: string;
541
- description: string | null;
542
- durationMinutes: number;
543
- consent?: BookingConsent;
544
- };
553
+ export type PublicBookingService = ApiPublicBookingService;
545
554
  export type PublicBookingServicesResponse = {
546
- services: PublicBookingService[];
555
+ services: Array<Omit<PublicBookingService, 'description'> & {
556
+ description?: string;
557
+ }>;
547
558
  };
548
559
  export type PublicWeeklySlotAvailabilityOption = {
549
560
  id: string;
@@ -1,4 +1,5 @@
1
1
  import * as React from 'react';
2
+ import type { BlockLoaderFailures } from '../../../blocks/src/system/data/index';
2
3
  import type { RenderablePageOutline as BlocksRenderablePageOutline } from '../../../blocks/src/index';
3
4
  import type { EntrySubrouteContextData, MediaAssetIndexItem, OccurrenceContextData, PageOutline, PageRuntimeBoundary, ResolveImageUrlContextInput, RouteMap, Theme, ThemeTokens } from '../contracts';
4
5
  import type { SdkCustomBlock } from '../config/types';
@@ -20,8 +21,12 @@ export declare const MissingBlockOverrideError: MissingBlockOverrideErrorConstru
20
21
  export type PageRendererDataContext = {
21
22
  siteId?: string;
22
23
  pageId?: string;
24
+ /** Canonical request pathname used by blocks when resolving same-site destinations. */
25
+ pathname?: string;
23
26
  resolvedData?: Record<string, Record<string, unknown>>;
27
+ loaderFailures?: BlockLoaderFailures;
24
28
  bookingOfferingPresets?: readonly SiteBookingOfferingPresetSummary[];
29
+ mailingList?: import('../../../core/src/index').MailingListRuntimeContext;
25
30
  bookingTimeZone?: string;
26
31
  previewStage?: 'published' | 'preview';
27
32
  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;