@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
@@ -183,6 +183,10 @@ const EVENTS = {
183
183
  registrationStatus: {
184
184
  path: "/public/sites/{siteId}/events/registration-status",
185
185
  method: "GET"
186
+ },
187
+ checkoutReturn: {
188
+ path: "/public/sites/{siteId}/events/checkout-return",
189
+ method: "POST"
186
190
  }
187
191
  };
188
192
  const WHOLE_SERIES = {
@@ -452,10 +456,11 @@ function encodePublicProductCategorySelector(selector) {
452
456
  * Error thrown when an API request fails
453
457
  */
454
458
  var BlockApiError = class extends Error {
455
- constructor(message, status, code) {
459
+ constructor(message, status, code, tag) {
456
460
  super(message);
457
461
  this.status = status;
458
462
  this.code = code;
463
+ this.tag = tag;
459
464
  this.name = "BlockApiError";
460
465
  }
461
466
  };
@@ -487,7 +492,8 @@ function getBlockApiErrorDetails(data) {
487
492
  const nestedError = isRecord(data.error) ? data.error : void 0;
488
493
  return {
489
494
  message: typeof nestedError?.message === "string" ? nestedError.message : typeof data.message === "string" ? data.message : void 0,
490
- code: typeof nestedError?.code === "string" ? nestedError.code : typeof data.code === "string" ? data.code : void 0
495
+ code: typeof nestedError?.code === "string" ? nestedError.code : typeof data.code === "string" ? data.code : void 0,
496
+ tag: typeof nestedError?.tag === "string" ? nestedError.tag : void 0
491
497
  };
492
498
  }
493
499
  function buildUnexpectedJsonResponseMessage(parseResult) {
@@ -506,7 +512,8 @@ async function extractErrorDetails(response) {
506
512
  const details = getBlockApiErrorDetails(parseResult.value);
507
513
  return {
508
514
  message: details.message ?? fallbackMessage,
509
- code: details.code
515
+ code: details.code,
516
+ tag: details.tag
510
517
  };
511
518
  }
512
519
  case "invalid-json": return { message: `${fallbackMessage} (received invalid JSON)` };
@@ -603,7 +610,7 @@ function createBlockApi(config) {
603
610
  const response = await fetch(url, fetchOptions);
604
611
  if (!response.ok) {
605
612
  const details = await extractErrorDetails(response);
606
- throw new BlockApiError(details.message, response.status, details.code);
613
+ throw new BlockApiError(details.message, response.status, details.code, details.tag);
607
614
  }
608
615
  const json = await parseJsonApiResponse(response);
609
616
  if (isApiSuccessResponse(json)) return json.data;
@@ -779,6 +786,14 @@ function createBlockApi(config) {
779
786
  skipDedup: true
780
787
  });
781
788
  },
789
+ async resolveEventCheckoutReturn(data) {
790
+ const sid = requireSiteId();
791
+ const path = buildPath(EVENTS.checkoutReturn.path, { siteId: sid });
792
+ return request(EVENTS.checkoutReturn, {
793
+ path,
794
+ body: data
795
+ });
796
+ },
782
797
  async resolveWaitlistClaim(data) {
783
798
  const sid = requireSiteId();
784
799
  const path = buildPath(WHOLE_SERIES.waitlistClaimResolve.path, { siteId: sid });
@@ -1102,4 +1117,4 @@ function useBlockApi() {
1102
1117
  return client;
1103
1118
  }
1104
1119
  //#endregion
1105
- export { useBlockApi as n, BlockApiProvider as t };
1120
+ export { useBlockApi as n, BlockApiError as r, BlockApiProvider as t };
@@ -0,0 +1,264 @@
1
+ import { Bt as toScheduledBookingDateTime, H as resolveRuntimeEventDestination, Mt as formatBookingTime, Ot as formatBookingDate, Rt as toBookingTimeZone, kt as formatBookingDateParts, qt as assertNever, zt as toScheduledBookingDateRange } from "./propsDecoder-pYvx_Srl.mjs";
2
+ import { n as canJoinEventWaitlistOnAnyMode, u as isEventFull } from "./capacity-BW00PO7s.mjs";
3
+ //#region ../blocks/src/system/runtime/nodes/events/domain/cta.ts
4
+ /**
5
+ * Booking call-to-action resolution for events: where an event links to and
6
+ * what the button says. Sold-out and waitlist decisions come from capacity.ts
7
+ * so cards, rows and the wizard never disagree.
8
+ */
9
+ function closedEventBookingLabel(reason) {
10
+ switch (reason) {
11
+ case "occurrence_cancelled":
12
+ case "series_cancelled": return "Cancelled";
13
+ case "occurrence_completed":
14
+ case "series_completed": return "Completed";
15
+ case "series_draft":
16
+ case "series_archived":
17
+ case "parent_archived":
18
+ case "parent_inconsistent":
19
+ case "not_public":
20
+ case "already_started":
21
+ case "enrollment_closed": return "Registration closed";
22
+ default: return assertNever(reason);
23
+ }
24
+ }
25
+ function resolveEventHref(event) {
26
+ const destination = resolveRuntimeEventDestination(event);
27
+ return destination.kind === "external" ? destination.url : destination.path;
28
+ }
29
+ function resolveEventLinkProps(event) {
30
+ const href = resolveEventHref(event);
31
+ return resolveRuntimeEventDestination(event).kind === "external" ? {
32
+ href,
33
+ target: "_blank",
34
+ rel: "noopener noreferrer"
35
+ } : { href };
36
+ }
37
+ /**
38
+ * Resolve the CTA state for an event.
39
+ * Shared by EventCard and EventCompactRow to keep sold-out, registration-closed,
40
+ * and course-specific defaults consistent.
41
+ */
42
+ function resolveEventCta(event, buttonText) {
43
+ const isSoldOut = isEventFull(event);
44
+ const destination = resolveRuntimeEventDestination(event);
45
+ const isExternal = destination.kind === "external";
46
+ const defaultButtonText = isExternal ? destination.label : event.bookingScope === "whole_series" ? "Book course" : "Book";
47
+ const effectiveButtonText = buttonText ?? defaultButtonText;
48
+ const href = resolveEventHref(event);
49
+ if (event.bookingAvailability.kind === "closed") {
50
+ const linksToClosedWholeSeriesDetails = event.bookingAvailability.reason === "enrollment_closed" && !isExternal;
51
+ return {
52
+ label: closedEventBookingLabel(event.bookingAvailability.reason),
53
+ href,
54
+ external: isExternal,
55
+ hidden: !linksToClosedWholeSeriesDetails
56
+ };
57
+ }
58
+ if (!isExternal && isSoldOut) {
59
+ if (canJoinEventWaitlistOnAnyMode(event)) return {
60
+ label: "Join waitlist",
61
+ href,
62
+ external: false,
63
+ hidden: false
64
+ };
65
+ return {
66
+ label: "Sold out",
67
+ href,
68
+ external: false,
69
+ hidden: true
70
+ };
71
+ }
72
+ return {
73
+ label: effectiveButtonText,
74
+ href,
75
+ external: isExternal,
76
+ hidden: false
77
+ };
78
+ }
79
+ //#endregion
80
+ //#region ../calendar/src/timezone.ts
81
+ /**
82
+ * Timezone boundary helpers — internal.
83
+ *
84
+ * Both functions read an ISO instant in a given IANA timezone and project it
85
+ * onto the wall clock of that zone. They use Intl.DateTimeFormat with
86
+ * hourCycle: 'h23' to avoid 12/24-hour ambiguity. Used internally by the
87
+ * timetable model and `groupItemsByDate`; not exported from the package's
88
+ * public surface.
89
+ */
90
+ const MINUTES_PER_HOUR = 60;
91
+ /**
92
+ * Local minute-of-day [0, 24*60) for an ISO instant in the given zone.
93
+ * Returns NaN if the inputs cannot be parsed (caller should drop the item).
94
+ */
95
+ function getLocalMinuteOfDay(isoTimestamp, timeZone) {
96
+ const date = new Date(isoTimestamp);
97
+ if (Number.isNaN(date.getTime())) return NaN;
98
+ if (!isValidTimeZone(timeZone)) return NaN;
99
+ const parts = new Intl.DateTimeFormat("en-GB", {
100
+ timeZone,
101
+ hour: "2-digit",
102
+ minute: "2-digit",
103
+ hourCycle: "h23"
104
+ }).formatToParts(date);
105
+ const hourPart = Number(parts.find((part) => part.type === "hour")?.value);
106
+ const minute = Number(parts.find((part) => part.type === "minute")?.value);
107
+ const hour = hourPart === 24 ? 0 : hourPart;
108
+ if (Number.isNaN(hour) || Number.isNaN(minute)) return NaN;
109
+ return hour * MINUTES_PER_HOUR + minute;
110
+ }
111
+ /**
112
+ * Local YYYY-MM-DD for an ISO instant in the given zone.
113
+ * Returns null if the inputs cannot be parsed.
114
+ */
115
+ function getLocalDateKey(isoTimestamp, timeZone) {
116
+ const date = new Date(isoTimestamp);
117
+ if (Number.isNaN(date.getTime())) return null;
118
+ if (!isValidTimeZone(timeZone)) return null;
119
+ const parts = new Intl.DateTimeFormat("en-CA", {
120
+ timeZone,
121
+ year: "numeric",
122
+ month: "2-digit",
123
+ day: "2-digit"
124
+ }).formatToParts(date);
125
+ const year = parts.find((part) => part.type === "year")?.value;
126
+ const month = parts.find((part) => part.type === "month")?.value;
127
+ const day = parts.find((part) => part.type === "day")?.value;
128
+ if (year === void 0 || year.length === 0) return null;
129
+ if (month === void 0 || month.length === 0) return null;
130
+ if (day === void 0 || day.length === 0) return null;
131
+ return `${year}-${month}-${day}`;
132
+ }
133
+ const validTimeZoneCache = /* @__PURE__ */ new Map();
134
+ function isValidTimeZone(timeZone) {
135
+ if (typeof timeZone !== "string" || timeZone.length === 0) return false;
136
+ const cached = validTimeZoneCache.get(timeZone);
137
+ if (cached !== void 0) return cached;
138
+ try {
139
+ new Intl.DateTimeFormat("en-US", { timeZone });
140
+ validTimeZoneCache.set(timeZone, true);
141
+ return true;
142
+ } catch {
143
+ validTimeZoneCache.set(timeZone, false);
144
+ return false;
145
+ }
146
+ }
147
+ //#endregion
148
+ //#region ../calendar/src/group.ts
149
+ /**
150
+ * Group items by their local date (YYYY-MM-DD in the item's own timezone).
151
+ *
152
+ * Generic over `T`. Items with un-parseable startsAt or invalid timezone are
153
+ * silently dropped — call sites that need diagnostics should validate upstream.
154
+ *
155
+ * The output map preserves insertion order of dates (ES2015 spec) and the
156
+ * relative order of items within each date matches input order.
157
+ */
158
+ function groupItemsByDate(items, accessors) {
159
+ const grouped = /* @__PURE__ */ new Map();
160
+ for (const item of items) {
161
+ const dateKey = getLocalDateKey(accessors.getStartsAt(item), accessors.getTimeZone(item));
162
+ if (dateKey == null) continue;
163
+ const existing = grouped.get(dateKey);
164
+ if (existing !== void 0) existing.push(item);
165
+ else grouped.set(dateKey, [item]);
166
+ }
167
+ return grouped;
168
+ }
169
+ //#endregion
170
+ //#region ../blocks/src/system/runtime/nodes/events/domain/dates.ts
171
+ /**
172
+ * Date and time presentation for events: the single place an event's
173
+ * timestamps become strings or date buckets. Calendar-grid primitives are
174
+ * re-exported from @riverbankcms/calendar so block code has one import.
175
+ */
176
+ /**
177
+ * Format date for display.
178
+ * Returns: "Monday, January 15, 2025"
179
+ */
180
+ function formatDate(isoTimestamp, options) {
181
+ return formatBookingDate(toScheduledBookingDateTime({
182
+ startsAt: isoTimestamp,
183
+ timeZone: toBookingTimeZone(options?.timeZone ?? "UTC"),
184
+ locale: options?.locale ?? "en-US"
185
+ }), {
186
+ weekday: "long",
187
+ year: "numeric",
188
+ month: "long",
189
+ day: "numeric"
190
+ });
191
+ }
192
+ /**
193
+ * Format time for display.
194
+ * Returns: "10:00 AM"
195
+ */
196
+ function formatTime(isoTimestamp, options) {
197
+ return formatBookingTime(toScheduledBookingDateTime({
198
+ startsAt: isoTimestamp,
199
+ timeZone: toBookingTimeZone(options?.timeZone ?? "UTC"),
200
+ locale: options?.locale ?? "en-US"
201
+ }), {
202
+ hour: "numeric",
203
+ minute: "2-digit",
204
+ hour12: true
205
+ });
206
+ }
207
+ function formatEventDateParts(args) {
208
+ const scheduledRange = toScheduledBookingDateRange({
209
+ startsAt: args.startsAt,
210
+ endsAt: args.endsAt,
211
+ timeZone: toBookingTimeZone(args.timeZone ?? "UTC"),
212
+ locale: args.locale ?? "en-US"
213
+ });
214
+ const { date, time: start } = formatBookingDateParts(scheduledRange, { dateFormat: {
215
+ weekday: "long",
216
+ year: "numeric",
217
+ month: "long",
218
+ day: "numeric"
219
+ } });
220
+ return {
221
+ date,
222
+ timeRange: `${start} – ${formatBookingTime(toScheduledBookingDateTime({
223
+ startsAt: args.endsAt,
224
+ timeZone: scheduledRange.timeZone,
225
+ locale: args.locale ?? "en-US"
226
+ }))}`
227
+ };
228
+ }
229
+ function formatEventCompactDateRail(isoTimestamp, options) {
230
+ const dateTime = toScheduledBookingDateTime({
231
+ startsAt: isoTimestamp,
232
+ timeZone: toBookingTimeZone(options?.timeZone ?? "UTC"),
233
+ locale: options?.locale ?? "en-US"
234
+ });
235
+ const weekday = formatBookingDate(dateTime, { weekday: "short" }).toLocaleUpperCase(options?.locale ?? "en-US");
236
+ const month = formatBookingDate(dateTime, { month: "short" }).toLocaleUpperCase(options?.locale ?? "en-US");
237
+ return {
238
+ weekday,
239
+ day: formatBookingDate(dateTime, { day: "numeric" }),
240
+ month,
241
+ label: formatBookingDate(dateTime, {
242
+ weekday: "long",
243
+ year: "numeric",
244
+ month: "long",
245
+ day: "numeric"
246
+ })
247
+ };
248
+ }
249
+ /**
250
+ * Group events by their local date (YYYY-MM-DD key in each event's own
251
+ * timezone). Thin domain wrapper over `groupItemsByDate` from the calendar
252
+ * package; preserves the historical `Map<string, PublicEvent[]>` shape.
253
+ */
254
+ function groupEventsByDate(events, calendarTimeZone) {
255
+ const grouped = groupItemsByDate(events, {
256
+ getStartsAt: (event) => event.startsAt,
257
+ getTimeZone: () => calendarTimeZone
258
+ });
259
+ const map = /* @__PURE__ */ new Map();
260
+ for (const [dateKey, bucket] of grouped) map.set(dateKey, [...bucket]);
261
+ return map;
262
+ }
263
+ //#endregion
264
+ export { groupEventsByDate as a, resolveEventCta as c, formatTime as i, resolveEventLinkProps as l, formatEventCompactDateRail as n, getLocalDateKey as o, formatEventDateParts as r, getLocalMinuteOfDay as s, formatDate as t };