@riverbankcms/sdk 0.135.1 → 0.137.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 (220) hide show
  1. package/CHANGELOG.md +114 -0
  2. package/README.md +4 -8
  3. package/dist/{PreviewEditorSidebar-D4p_5TdY.mjs → PreviewEditorSidebar-Bn6cONPa.mjs} +8 -8
  4. package/dist/{PreviewEditorUI-D0cRoTX1.mjs → PreviewEditorUI-LAwXZPSx.mjs} +3 -3
  5. package/dist/{PreviewQueryProvider-DcgaESkm.mjs → PreviewQueryProvider-ztQUdsNo.mjs} +1 -1
  6. package/dist/{SdkPreviewModeRuntime-BKLtM3Nz.mjs → SdkPreviewModeRuntime-BbbGsI_v.mjs} +621 -238
  7. package/dist/{SiteChromeCustomizeContext-61X2m7QV.mjs → SiteChromeCustomizeContext-BbkNSt5a.mjs} +5041 -2407
  8. package/dist/_dts/ai/src/contracts/proposals.d.ts +18 -850
  9. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +412 -2316
  10. package/dist/_dts/ai/src/designer/themePatch.d.ts +5 -10
  11. package/dist/_dts/api/src/accessAdmin.d.ts +1 -9
  12. package/dist/_dts/api/src/accountApi.d.ts +49 -2
  13. package/dist/_dts/api/src/contentRuntime.d.ts +7 -4
  14. package/dist/_dts/api/src/domainConnection.d.ts +41 -0
  15. package/dist/_dts/api/src/endpoints.d.ts +201 -181
  16. package/dist/_dts/api/src/index.d.ts +5 -3
  17. package/dist/_dts/api/src/media.d.ts +19 -2
  18. package/dist/_dts/api/src/publicEventEndpointDefinitions.d.ts +7 -0
  19. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +26 -0
  20. package/dist/_dts/api/src/sdkBlockContentAdmission.d.ts +5 -0
  21. package/dist/_dts/api/src/sdkContracts.d.ts +2 -15
  22. package/dist/_dts/api/src/sdkMediaContracts.d.ts +40 -0
  23. package/dist/_dts/api/src/sdkMediaEndpointDefinitions.d.ts +61 -0
  24. package/dist/_dts/api/src/sdkThemeWire.d.ts +21 -436
  25. package/dist/_dts/api/src/siteInfrastructure.d.ts +17 -23
  26. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +7 -21
  27. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +27 -3
  28. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +37 -17
  29. package/dist/_dts/api/src/types.d.ts +1 -1
  30. package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +2 -3
  31. package/dist/_dts/block-form/src/utils/slug.d.ts +6 -0
  32. package/dist/_dts/blocks/src/PageRenderer.d.ts +13 -7
  33. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +48 -0
  34. package/dist/_dts/blocks/src/definitions.d.ts +14 -0
  35. package/dist/_dts/blocks/src/index.d.ts +4 -3
  36. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +49 -0
  37. package/dist/_dts/blocks/src/pageRendererBlockSupport.d.ts +75 -0
  38. package/dist/_dts/blocks/src/pageRendererBoundaries.d.ts +2 -0
  39. package/dist/_dts/blocks/src/server.d.ts +2 -2
  40. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +1 -1
  41. package/dist/_dts/blocks/src/system/data/index.d.ts +2 -0
  42. package/dist/_dts/blocks/src/system/data/publicLoaderCachePolicy.d.ts +78 -0
  43. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +2 -18
  44. package/dist/_dts/blocks/src/system/manifest/validation.d.ts +103 -16
  45. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
  46. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +4 -2
  47. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -0
  48. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  49. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +19 -0
  50. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +52 -0
  51. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +24 -0
  52. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.d.ts +47 -21
  53. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +38 -9
  54. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/ErrorStep.d.ts +3 -5
  55. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/VerifyingTimeoutStep.d.ts +3 -1
  56. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +2 -0
  57. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.planning.d.ts +1 -1
  58. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +2 -0
  59. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationErrorPresentation.d.ts +5 -0
  60. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationErrorRecovery.d.ts +25 -0
  61. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationWizardContext.d.ts +4 -0
  62. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +8 -3
  63. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +2 -0
  64. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +5 -2
  65. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useWaitlistClaimRestoration.d.ts +2 -0
  66. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.client.d.ts +2 -2
  67. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +40 -0
  68. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +2 -0
  69. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +43 -0
  70. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/capacity.d.ts +164 -0
  71. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/cta.d.ts +29 -0
  72. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +47 -0
  73. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/index.d.ts +14 -0
  74. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/people.d.ts +6 -0
  75. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/pricing.d.ts +31 -0
  76. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarDayCell.d.ts +3 -1
  77. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarNavigationChevron.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/EventModalContext.d.ts +3 -2
  80. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/OfferingTitle.d.ts +11 -0
  81. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekAgendaView.d.ts +4 -1
  82. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekBoardView.d.ts +31 -3
  83. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekTimetableView.d.ts +3 -1
  84. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +9 -1
  85. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/index.d.ts +3 -1
  86. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/listingLayout.d.ts +23 -0
  87. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/timetableModel.d.ts +4 -3
  88. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +0 -1
  89. package/dist/_dts/calendar/src/grid.d.ts +24 -66
  90. package/dist/_dts/calendar/src/index.d.ts +2 -2
  91. package/dist/_dts/calendar/src/timetable.d.ts +5 -9
  92. package/dist/_dts/commerce/src/purchase/allocation.d.ts +11 -0
  93. package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +57 -0
  94. package/dist/_dts/commerce/src/purchase/index.d.ts +3 -0
  95. package/dist/_dts/commerce/src/purchase/settlement.d.ts +33 -0
  96. package/dist/_dts/commerce/src/purchase/stripeCheckoutReturnUrl.d.ts +8 -0
  97. package/dist/_dts/content-model/src/templates/defaults.d.ts +6 -0
  98. package/dist/_dts/core/src/slug.d.ts +20 -5
  99. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +8 -40
  100. package/dist/_dts/db/src/index.d.ts +1 -0
  101. package/dist/_dts/db/src/utils/postgrestFilter.d.ts +2 -0
  102. package/dist/_dts/media-core/src/bulkDeletePlanning.d.ts +4 -0
  103. package/dist/_dts/media-core/src/fileDomain.d.ts +3 -0
  104. package/dist/_dts/preview-next/src/client/blocks/EditablePageRenderer.d.ts +1 -1
  105. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +1 -0
  106. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +1 -0
  107. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +3 -2
  108. package/dist/_dts/preview-next/src/client/preview/headerInteractionPaletteSurfaceState.d.ts +2 -1
  109. package/dist/_dts/preview-next/src/client/preview/siteChromeBrandPreferences.d.ts +1 -1
  110. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +2 -0
  111. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlSaveRequest.d.ts +51 -0
  112. package/dist/_dts/preview-next/src/client/preview/siteChromeSavePlan.d.ts +24 -2
  113. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +23 -1
  114. package/dist/_dts/preview-next/src/client/preview/usePersistedHeaderPreferences.d.ts +8 -0
  115. package/dist/_dts/sdk/src/client/publicLoaderCacheAccess.d.ts +6 -0
  116. package/dist/_dts/sdk/src/public-api/contracts.d.ts +7 -2
  117. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +10 -6
  118. package/dist/_dts/sdk/src/rendering/components/Block.shared.d.ts +0 -1
  119. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +4 -4
  120. package/dist/_dts/sdk/src/rendering/helpers/footerPageOutline.d.ts +3 -0
  121. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +3 -0
  122. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +1 -1
  123. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +17 -0
  124. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +9 -3
  125. package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +1 -1
  126. package/dist/_dts/sdk/src/rendering/index.d.ts +2 -2
  127. package/dist/_dts/sdk/src/rendering/overrideResolution.d.ts +7 -4
  128. package/dist/_dts/sdk/src/version.d.ts +1 -1
  129. package/dist/_dts/theme-core/src/cards/types.d.ts +8 -8
  130. package/dist/_dts/theme-core/src/data.d.ts +12 -0
  131. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  132. package/dist/_dts/theme-core/src/gradients/types.d.ts +5 -0
  133. package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +25 -2
  134. package/dist/_dts/theme-core/src/header/legacyHeaderVariant.d.ts +2 -6
  135. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +9 -810
  136. package/dist/_dts/theme-core/src/schema.d.ts +460 -1285
  137. package/dist/_dts/theme-core/src/site-styles/compilationPlan.d.ts +43 -3
  138. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +223 -1
  139. package/dist/_dts/theme-core/src/site-styles/headerBrandPresentation.d.ts +63 -0
  140. package/dist/_dts/theme-core/src/site-styles/headerBytesComparison.d.ts +30 -0
  141. package/dist/_dts/theme-core/src/site-styles/headerInteractionPalette.d.ts +50 -1
  142. package/dist/_dts/theme-core/src/site-styles/headerLayoutCatalog.d.ts +48 -38
  143. package/dist/_dts/theme-core/src/site-styles/headerLayoutStyles.d.ts +10 -0
  144. package/dist/_dts/theme-core/src/site-styles/headerLayoutTypes.d.ts +8 -5
  145. package/dist/_dts/theme-core/src/site-styles/headerOpeningForeground.d.ts +4 -4
  146. package/dist/_dts/theme-core/src/site-styles/headerPreferences.d.ts +162 -0
  147. package/dist/_dts/theme-core/src/site-styles/headerPreferencesPersistence.d.ts +73 -0
  148. package/dist/_dts/theme-core/src/site-styles/headerRecompile.d.ts +118 -0
  149. package/dist/_dts/theme-core/src/site-styles/headerStyleCompiler.d.ts +25 -2
  150. package/dist/_dts/theme-core/src/site-styles/headerStyleDefaults.d.ts +465 -0
  151. package/dist/_dts/theme-core/src/site-styles/headerStyleRecipe.d.ts +168 -0
  152. package/dist/_dts/theme-core/src/site-styles/index.d.ts +5 -0
  153. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
  154. package/dist/_dts/theme-core/src/site-styles/siteChromeBackgrounds.d.ts +20 -1
  155. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +43 -2
  156. package/dist/client/{BookingConsentAgreement-Bz9znbpn.mjs → BookingConsentAgreement--_fUCZe-.mjs} +2 -2
  157. package/dist/client/{DiscountCodeDisclosure-35Ru8yB9.mjs → DiscountCodeDisclosure-BMipSoDJ.mjs} +1 -1
  158. package/dist/client/{EventCombined.client-BKB0ZxRR.mjs → EventCombined.client-CwJOxn7A.mjs} +274 -278
  159. package/dist/client/{EventListing.client-Dx8I21ok.mjs → EventListing.client-eVwiylPW.mjs} +2 -2
  160. package/dist/client/{LeafletStaticMap-CEWx-Bhe.mjs → LeafletStaticMap-IKenna5u.mjs} +1 -1
  161. package/dist/client/{accordion-KIDsKTwS.mjs → accordion-MGAO3PuE.mjs} +1 -1
  162. package/dist/client/{bookingForm-D96Rmp-5.mjs → bookingForm-CudlQPUu.mjs} +5 -5
  163. package/dist/client/bookings.mjs +476 -98
  164. package/dist/client/capacity-BW00PO7s.mjs +271 -0
  165. package/dist/client/{carousel-YwUgyL66.mjs → carousel-BrbGJ2Jl.mjs} +1 -1
  166. package/dist/client/{cart-BbwuNrUT.mjs → cart-Bq5eU0xZ.mjs} +3 -3
  167. package/dist/client/{checkout-hp1ucmEY.mjs → checkout-BAFVRdrK.mjs} +3 -3
  168. package/dist/client/client.mjs +4641 -2721
  169. package/dist/client/{context-DljQn8L5.mjs → context-DCkiHVdD.mjs} +20 -5
  170. package/dist/client/dates-2RPXHQy4.mjs +264 -0
  171. package/dist/client/{eventCalendar-DU4iNLpo.mjs → eventCalendar-B0O-hPF7.mjs} +261 -126
  172. package/dist/client/{eventCombined-CZuupW8m.mjs → eventCombined-DCkDaoDI.mjs} +3 -3
  173. package/dist/client/{eventDetails-DPQWwCIi.mjs → eventDetails-D8GG2dnD.mjs} +7 -4
  174. package/dist/client/{eventListing-C7oMidwS.mjs → eventListing-3ssV_bxz.mjs} +3 -3
  175. package/dist/client/{eventRegistration-zEiunlUs.mjs → eventRegistration-bPQo3kVw.mjs} +610 -313
  176. package/dist/client/{form-D2KIyCVJ.mjs → form-qMv8RDkk.mjs} +2 -2
  177. package/dist/client/{headerSection-CK5uChUK.mjs → headerSection-CH0Sc5hX.mjs} +2 -2
  178. package/dist/client/hooks.mjs +2514 -308
  179. package/dist/client/{locationMap-DLQNH1ln.mjs → locationMap-0_xlBnNI.mjs} +2 -2
  180. package/dist/client/{newsletterForm-ZuhIG7fZ.mjs → newsletterForm-NUW7m9RI.mjs} +2 -2
  181. package/dist/client/{productDetail-7hIcGeae.mjs → productDetail-FBEOM7jW.mjs} +3 -3
  182. package/dist/client/{productList-T4Cii1ot.mjs → productList-R0OSGhnn.mjs} +3 -3
  183. package/dist/client/{propsDecoder-mB0aC_Fi.mjs → propsDecoder-pYvx_Srl.mjs} +179 -401
  184. package/dist/client/rendering/client.mjs +3496 -2223
  185. package/dist/client/rendering/islands.mjs +17 -17
  186. package/dist/client/rendering.mjs +4400 -2510
  187. package/dist/client/{scrollToBlock-Du5mHgvL.mjs → scrollToBlock-ByQv96M2.mjs} +1 -1
  188. package/dist/client/{shop-B5zAcKZn.mjs → shop-RUG9DmRE.mjs} +6 -6
  189. package/dist/client/{shop-commerce-BKBZB6l5.mjs → shop-commerce-B76Jz23B.mjs} +5 -5
  190. package/dist/client/{shop-commerce-store-Cq4qlNtQ.mjs → shop-commerce-store-QuQNdDsD.mjs} +1 -1
  191. package/dist/client/{shopShared-DYGzEs9D.mjs → shopShared-vXU1omwJ.mjs} +3 -3
  192. package/dist/client/{useEventFilters-Bphkda8m.mjs → useEventFilters-ByuU6HLA.mjs} +33 -18
  193. package/dist/preview-next/before-render.mjs +86 -51
  194. package/dist/preview-next/client/runtime.mjs +4 -4
  195. package/dist/preview-next/keepAlive.mjs +86 -51
  196. package/dist/preview-next/middleware.mjs +86 -51
  197. package/dist/{previewAuthStore-C7ksxt5b.mjs → previewAuthStore-L_cKW8Sb.mjs} +86 -51
  198. package/dist/{sdk-runtime-BbIC8G4J.mjs → sdk-runtime-sUMr5d70.mjs} +2 -2
  199. package/dist/{separator-CadhAtI7.mjs → separator-BIHkie5i.mjs} +1 -1
  200. package/dist/server/components.mjs +4397 -2960
  201. package/dist/server/config-validation.mjs +354 -145
  202. package/dist/server/config.mjs +354 -145
  203. package/dist/server/data.mjs +354 -144
  204. package/dist/server/index.mjs +201 -55
  205. package/dist/server/manifest.mjs +0 -1
  206. package/dist/server/next.mjs +4046 -2611
  207. package/dist/server/page-converter.mjs +225 -122
  208. package/dist/server/prebuild.mjs +1 -1
  209. package/dist/server/rendering/server.mjs +4105 -2636
  210. package/dist/server/rendering.mjs +4522 -3087
  211. package/dist/server/routing.mjs +3289 -1637
  212. package/dist/server/server.mjs +23175 -21079
  213. package/dist/server/theme-bridge.mjs +708 -272
  214. package/dist/server/theme.mjs +29 -25
  215. package/dist/styles/index.css +624 -181
  216. package/package.json +1 -1
  217. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCapacity.d.ts +0 -48
  218. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/pricing.d.ts +0 -17
  219. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +0 -100
  220. /package/dist/_dts/blocks/src/system/runtime/nodes/events/{shared → domain}/destination.d.ts +0 -0
@@ -143,21 +143,6 @@ type BaseIssue<K extends string, Extra extends object = Record<never, never>> =
143
143
  fieldId: string;
144
144
  label: string;
145
145
  }> & Readonly<Extra>;
146
- export type ManifestContentRequiredScope = "topLevel" | "nested";
147
- export type ManifestContentValidationIssue = Readonly<{
148
- kind: FieldValidationIssue["kind"];
149
- field: string;
150
- message: string;
151
- requiredScope: ManifestContentRequiredScope | null;
152
- }>;
153
- export type ManifestContentValidationResult = Readonly<{
154
- kind: 'valid';
155
- issues: readonly [];
156
- data: Readonly<Record<string, unknown>>;
157
- }> | Readonly<{
158
- kind: "invalid";
159
- issues: readonly ManifestContentValidationIssue[];
160
- }>;
161
146
  type PlanBase<K extends string, ValueKind extends string, Constraints extends FieldConstraint> = Readonly<{
162
147
  kind: K;
163
148
  valueKind: ValueKind;
@@ -265,11 +250,10 @@ export declare function validateFieldValue(plan: FieldValidationPlan, value: unk
265
250
  export declare function fieldPlanToZod(plan: FieldValidationPlan, options?: FieldValidationOptions): z.ZodTypeAny;
266
251
  export declare function fieldPresenceForPlan(plan: Pick<FieldValidationPlan, "required">): FieldPresence;
267
252
  export declare function fieldPlanToObjectPropertyZod(plan: FieldValidationPlan, options?: FieldValidationOptions): z.ZodTypeAny;
253
+ /** Validate stored field values without applying editor/write normalization. */
254
+ export declare function fieldPlanToStoredObjectPropertyZod(plan: FieldValidationPlan): z.ZodTypeAny;
268
255
  export declare function resolveFieldValidationDescriptor(plans: readonly FieldValidationPlan[], path: FieldPath): FieldValidationDescriptor | null;
269
256
  export declare function validateManifestValues(fields: readonly FieldDefinition[], values: Record<string, unknown>, options?: FieldValidationOptions): FieldValidationIssue[];
270
- export declare function validateManifestContentForPush(fields: readonly FieldDefinition[], values: Record<string, unknown>, options?: FieldValidationOptions): ManifestContentValidationResult;
271
- export declare function isTopLevelRequiredManifestContentIssue(issue: ManifestContentValidationIssue): boolean;
272
- export declare function formatManifestContentValidationIssue(issue: ManifestContentValidationIssue): string;
273
257
  export declare function isCanonicalEmailValue(value: string): boolean;
274
258
  export declare function isCanonicalPhoneValue(value: string): boolean;
275
259
  export declare function isCanonicalUrlValue(value: string, options?: Readonly<{
@@ -1,6 +1,69 @@
1
- import { z } from "zod";
2
- import type { BlockManifest, FieldDefinition } from "./schema";
1
+ import { z } from 'zod';
2
+ import type { BlockManifest, FieldDefinition } from './schema';
3
+ import { type FieldValidationDescriptor, type FieldValidationPlan } from './fieldValidation';
3
4
  type FieldShape = Record<string, z.ZodTypeAny>;
5
+ declare const manifestContentStage: unique symbol;
6
+ declare const compiledManifestContentContract: unique symbol;
7
+ type CompiledManifestContentContractState = Readonly<{
8
+ plans: readonly FieldValidationPlan[];
9
+ strictStoredSchema: z.ZodType<Record<string, unknown>>;
10
+ writeSchema: z.ZodType<Record<string, unknown>>;
11
+ draftSchema: z.ZodType<Record<string, unknown>>;
12
+ renderSchema: z.ZodType<Record<string, unknown>>;
13
+ findNonPortableMediaPaths: (content: unknown) => readonly string[];
14
+ }>;
15
+ export type CompiledManifestContentContract = Readonly<{
16
+ [compiledManifestContentContract]: CompiledManifestContentContractState;
17
+ }>;
18
+ export type StoredManifestContent = Readonly<Record<string, unknown>> & Readonly<{
19
+ [manifestContentStage]: 'stored';
20
+ }>;
21
+ export type RenderableManifestContent = Readonly<Record<string, unknown>> & Readonly<{
22
+ [manifestContentStage]: 'renderable';
23
+ }>;
24
+ export type ManifestContentAdmissionIssue = Readonly<{
25
+ code: z.core.$ZodIssue['code'];
26
+ path: readonly (string | number)[];
27
+ message: string;
28
+ }>;
29
+ export type ManifestContentAdmissionError = Readonly<{
30
+ kind: 'invalid_shape';
31
+ issues: readonly ManifestContentAdmissionIssue[];
32
+ }> | Readonly<{
33
+ kind: 'non_portable_media';
34
+ paths: readonly string[];
35
+ }>;
36
+ export type ManifestContentAdmissionResult<T> = Readonly<{
37
+ ok: true;
38
+ value: T;
39
+ }> | Readonly<{
40
+ ok: false;
41
+ error: ManifestContentAdmissionError;
42
+ }>;
43
+ export type ManifestDraftValidationResult = Readonly<{
44
+ kind: 'previewable';
45
+ data: Readonly<Record<string, unknown>>;
46
+ issues: readonly [];
47
+ }> | Readonly<{
48
+ kind: 'invalid';
49
+ data: Readonly<Record<string, unknown>>;
50
+ issues: readonly [
51
+ ManifestContentAdmissionIssue,
52
+ ...ManifestContentAdmissionIssue[]
53
+ ];
54
+ }>;
55
+ export type ManifestWriteCandidateValidationResult = Readonly<{
56
+ kind: 'valid';
57
+ data: Readonly<Record<string, unknown>>;
58
+ issues: readonly [];
59
+ }> | Readonly<{
60
+ kind: 'invalid';
61
+ data: Readonly<Record<string, unknown>>;
62
+ issues: readonly [
63
+ ManifestContentAdmissionIssue,
64
+ ...ManifestContentAdmissionIssue[]
65
+ ];
66
+ }>;
4
67
  type ValidatorOptions = {
5
68
  allowNull?: boolean;
6
69
  /**
@@ -8,22 +71,46 @@ type ValidatorOptions = {
8
71
  * Use for autosave scenarios where content may be incomplete.
9
72
  */
10
73
  allowIncomplete?: boolean;
11
- /**
12
- * Validation mode:
13
- * - 'strict' (default): Enforce all required field constraints
14
- * - 'draft': Preprocess empty values to undefined, use allowIncomplete for lenient validation
15
- *
16
- * Use 'draft' mode in preview/editing contexts where users need to temporarily
17
- * have empty fields without validation errors causing blocks to disappear.
18
- */
19
- mode?: "strict" | "draft";
20
74
  };
21
75
  export declare function deriveContentZodFromManifest(manifestOrFields: BlockManifest | FieldDefinition[], options?: ValidatorOptions): z.ZodObject<FieldShape>;
22
- export declare function createManifestValidator(manifestOrFields: BlockManifest | FieldDefinition[], options?: ValidatorOptions): z.ZodType<Record<string, unknown>>;
23
76
  /**
24
- * Validates content at a persistence boundary and returns identifier-only media
25
- * values. Render-time validation intentionally uses createManifestValidator so
26
- * hydrated projection fields remain available to renderers.
77
+ * Compiles editor-facing manifest structure into the presentation-independent
78
+ * validation contract used by every manifest-content trust transition.
79
+ */
80
+ export declare function compileManifestContentContract(manifestOrFields: BlockManifest | FieldDefinition[]): CompiledManifestContentContract;
81
+ export declare function resolveManifestContentFieldDescriptor(contract: CompiledManifestContentContract, path: readonly (string | number)[]): FieldValidationDescriptor | null;
82
+ /**
83
+ * Reports declared media fields carrying environment-specific keys.
84
+ *
85
+ * Split out of stored admission for callers that must prove portability of
86
+ * content whose *shape* is legitimately incomplete — a template block's stored
87
+ * defaults, for instance, where required values only arrive through entry
88
+ * bindings. Returns the offending paths, empty when the content is portable.
89
+ */
90
+ export declare function findNonPortableManifestMediaPaths(contract: CompiledManifestContentContract, content: unknown): readonly string[];
91
+ /** Strictly admits already-persisted content without repairing it. */
92
+ export declare function admitStoredManifestContent(contract: CompiledManifestContentContract, content: unknown): ManifestContentAdmissionResult<StoredManifestContent>;
93
+ /**
94
+ * Admits an effectfully resolved write candidate and canonicalizes declared
95
+ * media to its portable identifier-only representation.
96
+ */
97
+ export declare function admitManifestContentForWrite(contract: CompiledManifestContentContract, content: unknown): ManifestContentAdmissionResult<StoredManifestContent>;
98
+ /** Validates raw editor state without granting a stored-content proof. */
99
+ export declare function validateManifestDraft(contract: CompiledManifestContentContract, data: Readonly<Record<string, unknown>>): ManifestDraftValidationResult;
100
+ /**
101
+ * Checks whether a raw editor candidate is schema-ready for the effectful
102
+ * media-resolution/write boundary without granting a stored proof.
103
+ */
104
+ export declare function validateManifestWriteCandidate(contract: CompiledManifestContentContract, data: Readonly<Record<string, unknown>>): ManifestWriteCandidateValidationResult;
105
+ /**
106
+ * Applies a pure runtime projection to admitted stored content and validates
107
+ * the resulting render shape before granting the renderable proof.
108
+ */
109
+ export declare function deriveRenderableManifestContent(contract: CompiledManifestContentContract, stored: StoredManifestContent, project: (content: StoredManifestContent) => Readonly<Record<string, unknown>>): ManifestContentAdmissionResult<RenderableManifestContent>;
110
+ /**
111
+ * Re-admits renderable content after a transport boundary has erased its
112
+ * compile-time proof. Unlike write admission, this never canonicalizes or
113
+ * grants a stored proof, so hydrated media cannot flow back to persistence.
27
114
  */
28
- export declare function createManifestWriteValidator(manifestOrFields: BlockManifest | FieldDefinition[], options?: ValidatorOptions): z.ZodType<Record<string, unknown>>;
115
+ export declare function admitTransportedRenderableManifestContent(contract: CompiledManifestContentContract, content: unknown): ManifestContentAdmissionResult<RenderableManifestContent>;
29
116
  export {};
@@ -20,7 +20,7 @@ export type AllowedNodeType = (typeof ALLOWED_NODE_TYPES)[number];
20
20
  * $bind.transforms within custom block layouts. Transform IDs
21
21
  * not in this list will be rejected during validation.
22
22
  */
23
- export declare const ALLOWED_TRANSFORM_IDS: readonly ["string.uppercase", "value.fallback", "date.formatShort", "array.length", "value.jsonArray", "value.csv", "array.marqueeLoop", "value.mapToken", "layout.maxWidthClass", "layout.headerRootClass", "layout.footerRootClass", "layout.headerRootStyle", "layout.headerSectionBackground", "layout.classicNavMode", "layout.footerRootStyle", "ui.headerNavLinkClass", "ui.headingClassFromAlignment", "ui.bodyClassFromAlignment", "ui.stackAlignFromAlignment", "ui.sectionStateTone", "ui.heroContentWrapperClass", "ui.heroCtaJustify", "ui.heroStackJustifyFromVerticalAlignment", "ui.heroGridClassFromVerticalAlignment", "ui.conditionalClass", "ui.twoColumnContainerClass", "ui.twoColumnFlexBasis", "ui.imageGalleryFilterClass", "ui.imageGalleryTileClass", "ui.imageGalleryTileStyle", "ui.imageGalleryMarqueeTileStyle", "ui.imageGalleryMarqueeDuration", "ui.imageGalleryMarqueeDirection", "ui.imageFragmentClass", "ui.imageFragmentSize", "media.fromUrl", "background.resolveStyle", "background.resolveColorsStyle", "background.resolveFrameClassName", "background.resolveImageStyle", "background.resolveImageClassName", "background.resolveOverlayStyle", "links.resolve", "links.label", "content.interpolateRichTextTokens", "boxStyles.spacing", "boxStyles.resolveRootClass", "boxStyles.resolveRootStyle", "boxStyles.semanticGap", "boxStyles.semanticGapValue", "containerStyles.resolveBoxClassName"];
23
+ export declare const ALLOWED_TRANSFORM_IDS: readonly ["string.uppercase", "value.fallback", "date.formatShort", "array.length", "value.jsonArray", "value.csv", "array.marqueeLoop", "value.mapToken", "layout.maxWidthClass", "layout.headerRootClass", "layout.footerRootClass", "layout.headerRootStyle", "layout.headerSectionBackground", "layout.footerRootStyle", "ui.headerNavLinkClass", "ui.headingClassFromAlignment", "ui.bodyClassFromAlignment", "ui.stackAlignFromAlignment", "ui.sectionStateTone", "ui.heroContentWrapperClass", "ui.heroCtaJustify", "ui.heroStackJustifyFromVerticalAlignment", "ui.heroGridClassFromVerticalAlignment", "ui.conditionalClass", "ui.twoColumnContainerClass", "ui.twoColumnFlexBasis", "ui.imageGalleryFilterClass", "ui.imageGalleryTileClass", "ui.imageGalleryTileStyle", "ui.imageGalleryMarqueeTileStyle", "ui.imageGalleryMarqueeDuration", "ui.imageGalleryMarqueeDirection", "ui.imageFragmentClass", "ui.imageFragmentSize", "media.fromUrl", "background.resolveStyle", "background.resolveColorsStyle", "background.resolveFrameClassName", "background.resolveImageStyle", "background.resolveImageClassName", "background.resolveOverlayStyle", "links.resolve", "links.label", "content.interpolateRichTextTokens", "boxStyles.spacing", "boxStyles.resolveRootClass", "boxStyles.resolveRootStyle", "boxStyles.semanticGap", "boxStyles.semanticGapValue", "containerStyles.resolveBoxClassName"];
24
24
  export type AllowedTransformId = (typeof ALLOWED_TRANSFORM_IDS)[number];
25
25
  /**
26
26
  * Set for O(1) lookup of allowed node types.
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Factory function for creating a typed API client for block client-side API calls.
5
5
  */
6
- import type { BlockApiConfig, FormSubmitRequest, FormSubmitResponse, FormConfigResponse, BookingSubmitRequest, BookingPackageSubmitRequest, BookingSubmitResponse, EligibleAppointmentPackagesResponse, AppointmentBookingStatusRequest, AppointmentBookingStatusResponse, AvailableSlotsRequest, AvailableSlotsResponse, WeeklySlotAvailabilityRequest, WeeklySlotAvailabilityResponse, AvailableDatesRequest, AvailableDatesResponse, BookingServicesResponse, BookingServiceResponse, BookingResourcesResponse, PublicEventsRequest, PublicEvent, EventFiltersResponse, EventRegisterRequest, EventRegisterResponse, EventCheckoutRequest, EventCheckoutResponse, RegistrationOptionsRequest, RegistrationOptionsResponse, EventRegistrationStatusRequest, EventRegistrationStatusResponse, ResolveWaitlistClaimRequest, ResolveWaitlistClaimResponse, DiscountsAvailableRequest, DiscountsAvailableResponse, DiscountApplyRequest, DiscountApplyResponse, PublicProductsResponse, ShopCheckoutRequest, ShopCheckoutResponse, UnifiedCheckoutRequest, UnifiedCheckoutResponse, PublicGiftingOffersResponse, CreateGiftingCheckoutRequest, CreateGiftingCheckoutResponse, ClaimGiftCardRequest, ClaimGiftCardResponse, PortalMeResponse, CustomerProfile, CustomerOrder, PortalMeUpdateRequest, CustomerPass, CustomerMembership, CustomerEventRegistration, PortalEventTicket, CustomerAppointment, BookingQuestionsTaskDetail, CustomerEventSeriesRegistration, PortalCredit, PortalOrderCheckoutRequest, PortalOrderCheckoutResponse, PortalDigitalProductAccessResponse, PortalDigitalProductDownloadUrlResponse, PortalDigitalProductsResponse, PortalCancelWholeSeriesRegistrationRequest, PortalCancelWholeSeriesRegistrationResult, PortalCancelAppointmentRequest, PortalCancelAppointmentResult, PortalUpdateAppointmentBookingQuestionsRequest, PortalUpdateWholeSeriesBookingQuestionsRequest, PortalUpdateEventBookingQuestionsRequest, PortalCancelEventRegistrationRequest, PortalCancelEventRegistrationResult, PortalTransferEventRegistrationRequest, PortalTransferEventRegistrationResult, PortalRescheduleAppointmentRequest, PortalRescheduleAppointmentResponse, PortalCancelMembershipAtPeriodEndResult, MagicLinkRequest, EventGuest, UpdateEventGuestsRequest, NewsletterSubscribeRequest, NewsletterSubscribeResponse } from './types';
6
+ import type { BlockApiConfig, FormSubmitRequest, FormSubmitResponse, FormConfigResponse, BookingSubmitRequest, BookingPackageSubmitRequest, BookingSubmitResponse, EligibleAppointmentPackagesResponse, AppointmentBookingStatusRequest, AppointmentBookingStatusResponse, AvailableSlotsRequest, AvailableSlotsResponse, WeeklySlotAvailabilityRequest, WeeklySlotAvailabilityResponse, AvailableDatesRequest, AvailableDatesResponse, BookingServicesResponse, BookingServiceResponse, BookingResourcesResponse, PublicEventsRequest, PublicEvent, EventFiltersResponse, EventRegisterRequest, EventRegisterResponse, EventCheckoutRequest, EventCheckoutResponse, RegistrationOptionsRequest, RegistrationOptionsResponse, EventRegistrationStatusRequest, EventRegistrationStatusResponse, EventCheckoutReturnRequest, EventCheckoutReturnResponse, ResolveWaitlistClaimRequest, ResolveWaitlistClaimResponse, DiscountsAvailableRequest, DiscountsAvailableResponse, DiscountApplyRequest, DiscountApplyResponse, PublicProductsResponse, ShopCheckoutRequest, ShopCheckoutResponse, UnifiedCheckoutRequest, UnifiedCheckoutResponse, PublicGiftingOffersResponse, CreateGiftingCheckoutRequest, CreateGiftingCheckoutResponse, ClaimGiftCardRequest, ClaimGiftCardResponse, PortalMeResponse, CustomerProfile, CustomerOrder, PortalMeUpdateRequest, CustomerPass, CustomerMembership, CustomerEventRegistration, PortalEventTicket, CustomerAppointment, BookingQuestionsTaskDetail, CustomerEventSeriesRegistration, PortalCredit, PortalOrderCheckoutRequest, PortalOrderCheckoutResponse, PortalDigitalProductAccessResponse, PortalDigitalProductDownloadUrlResponse, PortalDigitalProductsResponse, PortalCancelWholeSeriesRegistrationRequest, PortalCancelWholeSeriesRegistrationResult, PortalCancelAppointmentRequest, PortalCancelAppointmentResult, PortalUpdateAppointmentBookingQuestionsRequest, PortalUpdateWholeSeriesBookingQuestionsRequest, PortalUpdateEventBookingQuestionsRequest, PortalCancelEventRegistrationRequest, PortalCancelEventRegistrationResult, PortalTransferEventRegistrationRequest, PortalTransferEventRegistrationResult, PortalRescheduleAppointmentRequest, PortalRescheduleAppointmentResponse, PortalCancelMembershipAtPeriodEndResult, MagicLinkRequest, EventGuest, UpdateEventGuestsRequest, NewsletterSubscribeRequest, NewsletterSubscribeResponse } from './types';
7
7
  type WithoutSiteId<T> = T extends unknown ? Omit<T, 'siteId'> : never;
8
8
  type PublicProductCategorySelector = Readonly<{
9
9
  kind: 'category';
@@ -18,7 +18,8 @@ type PublicProductCategorySelector = Readonly<{
18
18
  export declare class BlockApiError extends Error {
19
19
  readonly status: number;
20
20
  readonly code?: string | undefined;
21
- constructor(message: string, status: number, code?: string | undefined);
21
+ readonly tag?: string | undefined;
22
+ constructor(message: string, status: number, code?: string | undefined, tag?: string | undefined);
22
23
  }
23
24
  /**
24
25
  * Block API Client interface
@@ -49,6 +50,7 @@ export interface BlockApiClient {
49
50
  createEventCheckout(data: WithoutSiteId<EventCheckoutRequest>): Promise<EventCheckoutResponse>;
50
51
  getRegistrationOptions(data: Omit<RegistrationOptionsRequest, 'siteId'>): Promise<RegistrationOptionsResponse>;
51
52
  getEventRegistrationStatus(params: WithoutSiteId<EventRegistrationStatusRequest>): Promise<EventRegistrationStatusResponse>;
53
+ resolveEventCheckoutReturn(data: EventCheckoutReturnRequest): Promise<EventCheckoutReturnResponse>;
52
54
  resolveWaitlistClaim(data: Omit<ResolveWaitlistClaimRequest, 'siteId'>): Promise<ResolveWaitlistClaimResponse>;
53
55
  getDiscountsAvailable(data: Omit<DiscountsAvailableRequest, 'siteId'>): Promise<DiscountsAvailableResponse>;
54
56
  applyDiscountCode(data: Omit<DiscountApplyRequest, 'siteId'>): Promise<DiscountApplyResponse>;
@@ -101,6 +101,10 @@ export declare const EVENTS: {
101
101
  path: string;
102
102
  method: "GET";
103
103
  };
104
+ checkoutReturn: {
105
+ path: string;
106
+ method: "POST";
107
+ };
104
108
  };
105
109
  export declare const WHOLE_SERIES: {
106
110
  list: {
@@ -428,6 +432,10 @@ export declare const ENDPOINTS: {
428
432
  path: string;
429
433
  method: "GET";
430
434
  };
435
+ checkoutReturn: {
436
+ path: string;
437
+ method: "POST";
438
+ };
431
439
  };
432
440
  readonly wholeSeries: {
433
441
  list: {
@@ -43,7 +43,7 @@ export { createBlockApi, BlockApiError } from './client';
43
43
  export type { BlockApiClient } from './client';
44
44
  export { BlockApiProvider, useBlockApi, useBlockApiOptional } from './context';
45
45
  export type { BlockApiProviderProps } from './context';
46
- export type { BlockApiConfig, BlockApiAuth, ApiKeyAuth, BearerAuth, NoAuth, ApiResponse, ApiSuccessResponse, ApiErrorResponse, FormSubmitRequest, FormSubmitResponse, FormConfigResponse, FormField, BookingSubmitRequest, BookingSubmitResponse, AppointmentBookingStatusRequest, AppointmentBookingStatusResponse, AvailableSlotsRequest, AvailableSlotsResponse, TimeSlot, AvailableDatesRequest, AvailableDatesResponse, BookingService, BookingServicesRequest, BookingServicesResponse, BookingServiceResponse, BookingResource, BookingResourcesRequest, BookingResourcesResponse, PublicEvent, PublicEventsRequest, PublicEventsResponse, EventVenue, PricingType, AccessRestriction, EventFilterCategory, EventFilterStaffMember, EventFilterVenue, EventFiltersResponse, EventRegisterRequest, EventRegisterResponse, EventCheckoutRequest, EventCheckoutResponse, PaymentMethod, EligiblePass, EligibleMembership, AvailablePass, AvailableMembership, DiscountContext, DiscountsAvailableRequest, DiscountsAvailableResponse, DiscountApplyLine, DiscountApplyRequest, DiscountApplyRejectedReason, DiscountApplyResponse, ShopCheckoutRequest, ShopCheckoutResponse, ShopDuplicateMembershipWarning, CustomerProfile, CustomerOrder, CustomerOrderFilter, CustomerOrderItem, CustomerOrderInstalmentPlan, CustomerOrderInstalmentPlanStatus, CustomerOrderInstalmentRow, CustomerOrderInstalmentStatus, CustomerOrderPaymentState, CustomerOrderRefund, EnabledModules, PortalMeResponse, PortalMeUpdateRequest, CustomerPass, CustomerPassCreditHistoryEntry, CustomerMembership, EventTicketBreakdownLine, CustomerEventRegistration, PortalEventTicket, CustomerAppointment, AppointmentBookingQuestionsTaskDetail, BookingQuestionsTaskDetail, BookingQuestionsAnswerValue, BookingQuestionsField, BookingQuestionsFieldOption, BookingQuestionsSection, BeforeYouComeTaskSummary, CustomerEventSeriesRegistration, EventGuest, PortalCredit, PortalCreditSummary, PortalCreditTransaction, PortalCreditResponse, PortalOrderCheckoutRequest, PortalOrderCheckoutResponse, PortalDigitalProduct, PortalDigitalProductFile, PortalDigitalProductsResponse, PortalDigitalProductAccessResponse, PortalDigitalProductDownloadUrlResponse, PortalAppointmentBookingQuestionsResponse, PortalCreateAppointmentBookingQuestionsUploadUrlRequest, PortalCreateAppointmentBookingQuestionsUploadUrlResponse, PortalFinalizeAppointmentBookingQuestionsUploadRequest, PortalFinalizeAppointmentBookingQuestionsUploadResponse, PortalUpdateAppointmentBookingQuestionsRequest, PortalUpdateAppointmentBookingQuestionsResponse, PortalEventBookingQuestionsResponse, PortalCreateEventBookingQuestionsUploadUrlRequest, PortalCreateEventBookingQuestionsUploadUrlResponse, PortalFinalizeEventBookingQuestionsUploadRequest, PortalFinalizeEventBookingQuestionsUploadResponse, PortalUpdateEventBookingQuestionsRequest, PortalUpdateEventBookingQuestionsResponse, PortalWholeSeriesBookingQuestionsResponse, PortalCreateWholeSeriesBookingQuestionsUploadUrlRequest, PortalCreateWholeSeriesBookingQuestionsUploadUrlResponse, PortalFinalizeWholeSeriesBookingQuestionsUploadRequest, PortalFinalizeWholeSeriesBookingQuestionsUploadResponse, PortalUpdateWholeSeriesBookingQuestionsRequest, PortalUpdateWholeSeriesBookingQuestionsResponse, UpdateEventGuestsRequest, EventGuestsResponse, PortalCancelWholeSeriesRegistrationRequest, PortalCancelWholeSeriesRegistrationResult, PortalCancelAppointmentRequest, PortalCancelAppointmentResult, PortalCancelEventRegistrationRequest, PortalRefundInfo, PortalCancelEventRegistrationResult, PortalTransferEventRegistrationRequest, PortalTransferEventRegistrationResult, PortalRescheduleAppointmentRequest, PortalRescheduleAppointmentResponse, PortalCancelMembershipAtPeriodEndResult, MagicLinkRequest, } from './types';
46
+ export type { BlockApiConfig, BlockApiAuth, ApiKeyAuth, BearerAuth, NoAuth, ApiResponse, ApiSuccessResponse, ApiErrorResponse, FormSubmitRequest, FormSubmitResponse, FormConfigResponse, FormField, BookingSubmitRequest, BookingSubmitResponse, AppointmentBookingStatusRequest, AppointmentBookingStatusResponse, AvailableSlotsRequest, AvailableSlotsResponse, TimeSlot, AvailableDatesRequest, AvailableDatesResponse, BookingService, BookingServicesRequest, BookingServicesResponse, BookingServiceResponse, BookingResource, BookingResourcesRequest, BookingResourcesResponse, PublicEvent, PublicEventsRequest, PublicEventsResponse, EventVenue, PricingType, AccessRestriction, EventFilterCategory, EventFilterStaffMember, EventFilterVenue, EventFiltersResponse, EventRegisterRequest, EventRegisterResponse, EventCheckoutRequest, EventCheckoutResponse, EventCheckoutReturnRequest, EventCheckoutReturnResponse, PaymentMethod, EligiblePass, EligibleMembership, AvailablePass, AvailableMembership, DiscountContext, DiscountsAvailableRequest, DiscountsAvailableResponse, DiscountApplyLine, DiscountApplyRequest, DiscountApplyRejectedReason, DiscountApplyResponse, ShopCheckoutRequest, ShopCheckoutResponse, ShopDuplicateMembershipWarning, CustomerProfile, CustomerOrder, CustomerOrderFilter, CustomerOrderItem, CustomerOrderInstalmentPlan, CustomerOrderInstalmentPlanStatus, CustomerOrderInstalmentRow, CustomerOrderInstalmentStatus, CustomerOrderPaymentState, CustomerOrderRefund, EnabledModules, PortalMeResponse, PortalMeUpdateRequest, CustomerPass, CustomerPassCreditHistoryEntry, CustomerMembership, EventTicketBreakdownLine, CustomerEventRegistration, PortalEventTicket, CustomerAppointment, AppointmentBookingQuestionsTaskDetail, BookingQuestionsTaskDetail, BookingQuestionsAnswerValue, BookingQuestionsField, BookingQuestionsFieldOption, BookingQuestionsSection, BeforeYouComeTaskSummary, CustomerEventSeriesRegistration, EventGuest, PortalCredit, PortalCreditSummary, PortalCreditTransaction, PortalCreditResponse, PortalOrderCheckoutRequest, PortalOrderCheckoutResponse, PortalDigitalProduct, PortalDigitalProductFile, PortalDigitalProductsResponse, PortalDigitalProductAccessResponse, PortalDigitalProductDownloadUrlResponse, PortalAppointmentBookingQuestionsResponse, PortalCreateAppointmentBookingQuestionsUploadUrlRequest, PortalCreateAppointmentBookingQuestionsUploadUrlResponse, PortalFinalizeAppointmentBookingQuestionsUploadRequest, PortalFinalizeAppointmentBookingQuestionsUploadResponse, PortalUpdateAppointmentBookingQuestionsRequest, PortalUpdateAppointmentBookingQuestionsResponse, PortalEventBookingQuestionsResponse, PortalCreateEventBookingQuestionsUploadUrlRequest, PortalCreateEventBookingQuestionsUploadUrlResponse, PortalFinalizeEventBookingQuestionsUploadRequest, PortalFinalizeEventBookingQuestionsUploadResponse, PortalUpdateEventBookingQuestionsRequest, PortalUpdateEventBookingQuestionsResponse, PortalWholeSeriesBookingQuestionsResponse, PortalCreateWholeSeriesBookingQuestionsUploadUrlRequest, PortalCreateWholeSeriesBookingQuestionsUploadUrlResponse, PortalFinalizeWholeSeriesBookingQuestionsUploadRequest, PortalFinalizeWholeSeriesBookingQuestionsUploadResponse, PortalUpdateWholeSeriesBookingQuestionsRequest, PortalUpdateWholeSeriesBookingQuestionsResponse, UpdateEventGuestsRequest, EventGuestsResponse, PortalCancelWholeSeriesRegistrationRequest, PortalCancelWholeSeriesRegistrationResult, PortalCancelAppointmentRequest, PortalCancelAppointmentResult, PortalCancelEventRegistrationRequest, PortalRefundInfo, PortalCancelEventRegistrationResult, PortalTransferEventRegistrationRequest, PortalTransferEventRegistrationResult, PortalRescheduleAppointmentRequest, PortalRescheduleAppointmentResponse, PortalCancelMembershipAtPeriodEndResult, MagicLinkRequest, } from './types';
47
47
  export { discountAvailabilityAllowsManualEntry, discountAvailabilityHasDiscounts, getAutoAppliedDiscountPreview, } from './types';
48
48
  export type { BookingQuestionsDocumentAnswerValue } from '../../../portal/types';
49
49
  export { deriveCreditProductLabels, getCreditProductCreditUnit, getCreditProductTypeLabel, getPortalCreditProductCreditNoun, } from './creditProducts';
@@ -207,6 +207,7 @@ export type EventCheckoutRequest = EventCheckoutRequestCommon & ({
207
207
  altchaSolution?: string | null;
208
208
  guests?: EventRegisterGuest[];
209
209
  claimToken?: string;
210
+ checkoutAttemptId: string;
210
211
  });
211
212
  export type EventCheckoutResponse = {
212
213
  scope: 'occurrence';
@@ -278,4 +279,22 @@ export interface EventRegistrationStatusResponse {
278
279
  attendeeStatus: AttendeeStatus;
279
280
  waitlistPosition: number | null;
280
281
  }
282
+ export type EventCheckoutReturnRequest = {
283
+ kind: 'resolveSuccess';
284
+ checkoutAttemptId: string;
285
+ sessionId: string;
286
+ } | {
287
+ kind: 'abandon';
288
+ checkoutAttemptId: string;
289
+ };
290
+ export type EventCheckoutReturnResponse = {
291
+ kind: 'resolved';
292
+ reference: EventRegistrationStatusReference;
293
+ } | {
294
+ kind: 'abandoned';
295
+ } | {
296
+ kind: 'notFound';
297
+ } | {
298
+ kind: 'reconciliationRequired';
299
+ };
281
300
  export {};
@@ -638,6 +638,14 @@ export declare const runtimeBackedBlockClientEntries: {
638
638
  eventSurface: import("../..").EventSurfaceScope;
639
639
  filterEventPresets: string | null;
640
640
  scheduleScope: import("../..").EventScheduleScope;
641
+ calendarContext: Readonly<{
642
+ timeZone: import("../../../../../core/src/index").BookingTimeZone;
643
+ initialToday: Readonly<{
644
+ year: number;
645
+ month: number;
646
+ day: number;
647
+ }>;
648
+ }>;
641
649
  }>;
642
650
  }>;
643
651
  contracts: Readonly<{
@@ -655,6 +663,14 @@ export declare const runtimeBackedBlockClientEntries: {
655
663
  eventSurface: import("../..").EventSurfaceScope;
656
664
  filterEventPresets: string | null;
657
665
  scheduleScope: import("../..").EventScheduleScope;
666
+ calendarContext: Readonly<{
667
+ timeZone: import("../../../../../core/src/index").BookingTimeZone;
668
+ initialToday: Readonly<{
669
+ year: number;
670
+ month: number;
671
+ day: number;
672
+ }>;
673
+ }>;
658
674
  }>;
659
675
  }>) => unknown;
660
676
  decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<{
@@ -666,6 +682,14 @@ export declare const runtimeBackedBlockClientEntries: {
666
682
  eventSurface: import("../..").EventSurfaceScope;
667
683
  filterEventPresets: string | null;
668
684
  scheduleScope: import("../..").EventScheduleScope;
685
+ calendarContext: Readonly<{
686
+ timeZone: import("../../../../../core/src/index").BookingTimeZone;
687
+ initialToday: Readonly<{
688
+ year: number;
689
+ month: number;
690
+ day: number;
691
+ }>;
692
+ }>;
669
693
  }>;
670
694
  }>>;
671
695
  }>;
@@ -685,6 +709,14 @@ export declare const runtimeBackedBlockClientEntries: {
685
709
  eventSurface: import("../..").EventSurfaceScope;
686
710
  filterEventPresets: string | null;
687
711
  scheduleScope: import("../..").EventScheduleScope;
712
+ calendarContext: Readonly<{
713
+ timeZone: import("../../../../../core/src/index").BookingTimeZone;
714
+ initialToday: Readonly<{
715
+ year: number;
716
+ month: number;
717
+ day: number;
718
+ }>;
719
+ }>;
688
720
  }>;
689
721
  }>;
690
722
  contracts: Readonly<{
@@ -702,6 +734,14 @@ export declare const runtimeBackedBlockClientEntries: {
702
734
  eventSurface: import("../..").EventSurfaceScope;
703
735
  filterEventPresets: string | null;
704
736
  scheduleScope: import("../..").EventScheduleScope;
737
+ calendarContext: Readonly<{
738
+ timeZone: import("../../../../../core/src/index").BookingTimeZone;
739
+ initialToday: Readonly<{
740
+ year: number;
741
+ month: number;
742
+ day: number;
743
+ }>;
744
+ }>;
705
745
  }>;
706
746
  }>) => unknown;
707
747
  decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<{
@@ -713,6 +753,14 @@ export declare const runtimeBackedBlockClientEntries: {
713
753
  eventSurface: import("../..").EventSurfaceScope;
714
754
  filterEventPresets: string | null;
715
755
  scheduleScope: import("../..").EventScheduleScope;
756
+ calendarContext: Readonly<{
757
+ timeZone: import("../../../../../core/src/index").BookingTimeZone;
758
+ initialToday: Readonly<{
759
+ year: number;
760
+ month: number;
761
+ day: number;
762
+ }>;
763
+ }>;
716
764
  }>;
717
765
  }>>;
718
766
  }>;
@@ -2237,6 +2285,10 @@ export declare const clientComponentRegistryEntries: {
2237
2285
  eventSurface: import("../..").EventSurfaceScope;
2238
2286
  filterEventPresets: string | null;
2239
2287
  scheduleScope: import("../..").EventScheduleScope;
2288
+ calendarContext: Readonly<{
2289
+ timeZone: import("../../../../../core/src/index").BookingTimeZone;
2290
+ initialToday: import("../../../../../calendar/src/index").CalendarDate;
2291
+ }>;
2240
2292
  }>;
2241
2293
  }>>;
2242
2294
  }>>;
@@ -327,6 +327,14 @@ export declare const runtimeBackedBlockServerEntries: {
327
327
  eventSurface: import("../..").EventSurfaceScope;
328
328
  filterEventPresets: string | null;
329
329
  scheduleScope: import("../..").EventScheduleScope;
330
+ calendarContext: Readonly<{
331
+ timeZone: import("../../../../../core/src/index").BookingTimeZone;
332
+ initialToday: Readonly<{
333
+ year: number;
334
+ month: number;
335
+ day: number;
336
+ }>;
337
+ }>;
330
338
  }>;
331
339
  }>;
332
340
  contracts: Readonly<{
@@ -344,6 +352,14 @@ export declare const runtimeBackedBlockServerEntries: {
344
352
  eventSurface: import("../..").EventSurfaceScope;
345
353
  filterEventPresets: string | null;
346
354
  scheduleScope: import("../..").EventScheduleScope;
355
+ calendarContext: Readonly<{
356
+ timeZone: import("../../../../../core/src/index").BookingTimeZone;
357
+ initialToday: Readonly<{
358
+ year: number;
359
+ month: number;
360
+ day: number;
361
+ }>;
362
+ }>;
347
363
  }>;
348
364
  }>) => unknown;
349
365
  decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<{
@@ -355,6 +371,14 @@ export declare const runtimeBackedBlockServerEntries: {
355
371
  eventSurface: import("../..").EventSurfaceScope;
356
372
  filterEventPresets: string | null;
357
373
  scheduleScope: import("../..").EventScheduleScope;
374
+ calendarContext: Readonly<{
375
+ timeZone: import("../../../../../core/src/index").BookingTimeZone;
376
+ initialToday: Readonly<{
377
+ year: number;
378
+ month: number;
379
+ day: number;
380
+ }>;
381
+ }>;
358
382
  }>;
359
383
  }>>;
360
384
  }>;
@@ -1,6 +1,13 @@
1
1
  import type { PublicEvent } from '../../blocks/events/shared/types';
2
- import { type CalendarViewport, type CalendarViewportKind, type WeekStart } from '../nodes/events/shared/utils';
2
+ import { type BookingTimeZone } from '../../../../../core/src/index';
3
+ import type { CalendarDate } from '../../../../../calendar/src/index';
4
+ import { type CalendarViewport, type CalendarViewportKind, type WeekStart } from '../nodes/events/domain';
3
5
  import { type EventRuntimeFilters } from '../nodes/events/shared/listOptions';
6
+ import { type CalendarViewLoadState } from './useCalendarEvents.state';
7
+ export type { CalendarViewLoadState } from './useCalendarEvents.state';
8
+ type CalendarViewportFor<Kind extends CalendarViewportKind> = Extract<CalendarViewport, Readonly<{
9
+ kind: Kind;
10
+ }>>;
4
11
  type UseCalendarEventsOptions = {
5
12
  /** @deprecated Site ID is now provided by BlockApiProvider context */
6
13
  siteId?: string;
@@ -16,59 +23,72 @@ type UseCalendarEventsOptions = {
16
23
  filters?: EventRuntimeFilters;
17
24
  /** Fetch stage (preview vs published) */
18
25
  stage?: 'preview' | 'published';
26
+ calendarContext: Readonly<{
27
+ timeZone: BookingTimeZone;
28
+ initialToday: CalendarDate;
29
+ }>;
19
30
  };
20
- type CalendarEventsState = {
31
+ export type CalendarEventsState<Kind extends CalendarViewportKind> = {
21
32
  /** Events visible in the current view */
22
33
  events: PublicEvent[];
23
34
  /** Current view date (anchor of the calendar viewport) */
24
- viewDate: Date;
35
+ viewDate: CalendarDate;
25
36
  /** Derived calendar viewport for the current view date */
26
- viewport: CalendarViewport;
37
+ viewport: CalendarViewportFor<Kind>;
27
38
  /** Whether events are being loaded */
28
- loading: boolean;
29
- /** Error from last fetch */
30
- error: Error | null;
39
+ loadState: CalendarViewLoadState;
31
40
  /** Set the view date */
32
- setViewDate: (date: Date) => void;
41
+ setViewDate: (date: CalendarDate) => void;
33
42
  /** Navigate to previous viewport period */
34
43
  goToPrevious: () => void;
35
44
  /** Navigate to next viewport period */
36
45
  goToNext: () => void;
37
46
  /** Navigate to today */
38
47
  goToToday: () => void;
48
+ /** Retry loading the currently selected viewport without changing its date */
49
+ retryCurrentView: () => void;
39
50
  };
40
51
  type UseCalendarViewportOptions = Readonly<{
41
52
  view?: CalendarViewportKind;
42
53
  startOfWeek?: WeekStart;
43
- initialDate?: Date;
54
+ initialDate: CalendarDate;
44
55
  }>;
45
56
  /**
46
57
  * Owns calendar viewport state only: selected anchor date, derived visible
47
58
  * period, and navigation by the natural unit for the active view.
48
59
  */
49
- export declare function useCalendarViewport({ view, startOfWeek, initialDate, }?: UseCalendarViewportOptions): Readonly<{
50
- viewDate: Date;
51
- viewport: CalendarViewport;
52
- goToDate: (date: Date) => void;
60
+ type CalendarViewportState<Kind extends CalendarViewportKind> = Readonly<{
61
+ viewDate: CalendarDate;
62
+ viewport: CalendarViewportFor<Kind>;
63
+ goToDate: (date: CalendarDate) => void;
53
64
  goToPrevious: () => void;
54
65
  goToNext: () => void;
55
66
  goToToday: () => void;
56
67
  }>;
68
+ type ExplicitCalendarViewportOptions<Kind extends CalendarViewportKind> = Omit<UseCalendarViewportOptions, 'view'> & Readonly<{
69
+ view: Kind;
70
+ }>;
71
+ type DefaultCalendarViewportOptions = Omit<UseCalendarViewportOptions, 'view'> & Readonly<{
72
+ view?: undefined;
73
+ }>;
74
+ export declare function useCalendarViewport(options: DefaultCalendarViewportOptions): CalendarViewportState<'month'>;
75
+ export declare function useCalendarViewport<Kind extends CalendarViewportKind>(options: ExplicitCalendarViewportOptions<Kind>): CalendarViewportState<Kind>;
57
76
  type UseCalendarEventCacheOptions = Readonly<{
58
- viewDate: Date;
77
+ viewDate: CalendarDate;
59
78
  initialEvents?: PublicEvent[];
60
79
  preloadMonths?: number;
61
80
  filters?: EventRuntimeFilters;
62
81
  stage?: 'preview' | 'published';
82
+ timeZone: BookingTimeZone;
63
83
  }>;
64
84
  /**
65
- * Owns event loading and month-window caching for a supplied viewport anchor.
66
- * It does not decide navigation semantics or visible calendar days.
85
+ * The reducer owns month data and request ownership. The hook only performs I/O.
86
+ * Requests for other months remain useful until the query context changes.
67
87
  */
68
- export declare function useCalendarEventCache({ viewDate, initialEvents, preloadMonths, filters, stage, }: UseCalendarEventCacheOptions): Readonly<{
88
+ export declare function useCalendarEventCache({ viewDate, initialEvents, preloadMonths, filters, stage, timeZone, }: UseCalendarEventCacheOptions): Readonly<{
69
89
  events: PublicEvent[];
70
- loading: boolean;
71
- error: Error | null;
90
+ loadState: CalendarViewLoadState;
91
+ retryCurrentView: () => void;
72
92
  }>;
73
93
  /**
74
94
  * Hook for calendar event management with month-based caching.
@@ -84,6 +104,12 @@ export declare function useCalendarEventCache({ viewDate, initialEvents, preload
84
104
  * });
85
105
  * ```
86
106
  */
87
- export declare function useCalendarEvents({ siteId: _siteId, // Deprecated: siteId now comes from BlockApiProvider context
88
- initialEvents, view, startOfWeek, preloadMonths, filters, stage, }: UseCalendarEventsOptions): CalendarEventsState;
107
+ type ExplicitCalendarEventsOptions<Kind extends CalendarViewportKind> = Omit<UseCalendarEventsOptions, 'view'> & Readonly<{
108
+ view: Kind;
109
+ }>;
110
+ type DefaultCalendarEventsOptions = Omit<UseCalendarEventsOptions, 'view'> & Readonly<{
111
+ view?: undefined;
112
+ }>;
113
+ export declare function useCalendarEvents(options: DefaultCalendarEventsOptions): CalendarEventsState<'month'>;
114
+ export declare function useCalendarEvents<Kind extends CalendarViewportKind>(options: ExplicitCalendarEventsOptions<Kind>): CalendarEventsState<Kind>;
89
115
  export default useCalendarEvents;
@@ -1,4 +1,24 @@
1
- export type CalendarEventCacheLoadState = Readonly<{
1
+ import { type BookingTimeZone } from '../../../../../core/src/index';
2
+ import type { CalendarDate } from '../../../../../calendar/src/index';
3
+ import type { PublicEvent } from '../../blocks/events/shared/types';
4
+ type MonthState = Readonly<{
5
+ events: readonly PublicEvent[];
6
+ }> & (Readonly<{
7
+ kind: 'seeded';
8
+ }> | Readonly<{
9
+ kind: 'loading';
10
+ request: CalendarRequest;
11
+ }> | Readonly<{
12
+ kind: 'ready';
13
+ }> | Readonly<{
14
+ kind: 'failed';
15
+ error: Error;
16
+ }>);
17
+ export type CalendarRequest = Readonly<{
18
+ months: readonly string[];
19
+ }>;
20
+ export type CalendarCacheState = ReadonlyMap<string, MonthState>;
21
+ export type CalendarViewLoadState = Readonly<{
2
22
  kind: 'idle';
3
23
  }> | Readonly<{
4
24
  kind: 'loading';
@@ -6,15 +26,24 @@ export type CalendarEventCacheLoadState = Readonly<{
6
26
  kind: 'error';
7
27
  error: Error;
8
28
  }>;
9
- export type CalendarEventCacheLoadAction = Readonly<{
10
- type: 'started';
29
+ export type CalendarCacheAction = Readonly<{
30
+ kind: 'started';
31
+ request: CalendarRequest;
11
32
  }> | Readonly<{
12
- type: 'succeeded';
33
+ kind: 'succeeded';
34
+ request: CalendarRequest;
35
+ events: readonly PublicEvent[];
36
+ timeZone: BookingTimeZone;
13
37
  }> | Readonly<{
14
- type: 'failed';
38
+ kind: 'failed';
39
+ request: CalendarRequest;
15
40
  error: Error;
16
41
  }>;
17
- export declare function calendarEventCacheLoadReducer(_state: CalendarEventCacheLoadState, action: CalendarEventCacheLoadAction): CalendarEventCacheLoadState;
18
- export declare function toCalendarEventCacheLoadError(error: unknown): Error;
19
- export declare function isCalendarEventCacheLoading(state: CalendarEventCacheLoadState): boolean;
20
- export declare function getCalendarEventCacheError(state: CalendarEventCacheLoadState): Error | null;
42
+ export declare function calendarMonthKey(date: CalendarDate): string;
43
+ export declare function calendarWindowMonths(date: CalendarDate, radius: number): readonly string[];
44
+ export declare function seedCalendarCache(events: readonly PublicEvent[], timeZone: BookingTimeZone): CalendarCacheState;
45
+ export declare function planCalendarRequest(state: CalendarCacheState, months: readonly string[], retry: boolean): CalendarRequest | null;
46
+ export declare function calendarCacheReducer(state: CalendarCacheState, action: CalendarCacheAction): CalendarCacheState;
47
+ export declare function selectCalendarEvents(state: CalendarCacheState, months: readonly string[]): PublicEvent[];
48
+ export declare function projectCalendarLoadState(state: CalendarCacheState, months: readonly string[]): CalendarViewLoadState;
49
+ export {};
@@ -1,12 +1,10 @@
1
1
  import React from 'react';
2
+ import type { EventRegistrationErrorAction } from '../../../../../../commerce/src/purchase/index';
2
3
  type ErrorStepProps = {
3
4
  message: string;
4
5
  onRetry: () => void;
6
+ action?: EventRegistrationErrorAction;
7
+ canJoinWaitlist?: boolean;
5
8
  };
6
- /**
7
- * Error Step
8
- *
9
- * Displays an error message with a retry button when registration fails.
10
- */
11
9
  export declare const ErrorStep: React.FC<ErrorStepProps>;
12
10
  export {};