@riverbankcms/sdk 0.127.0 → 0.128.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 (152) hide show
  1. package/dist/{PreviewEditorSidebar-BXtfF7tp.mjs → PreviewEditorSidebar-Dbvb7GIr.mjs} +9 -33
  2. package/dist/{PreviewEditorUI-Dou73Q0K.mjs → PreviewEditorUI-e9O9l20X.mjs} +3 -3
  3. package/dist/{PreviewQueryProvider-DgFDIwvK.mjs → PreviewQueryProvider-B1kbhaJD.mjs} +1 -1
  4. package/dist/SdkPreviewModeRuntime-BZHt6e9w.mjs +11006 -0
  5. package/dist/{SiteChromeCustomizeContext-DZiDBAYu.mjs → SiteChromeCustomizeContext-CvuGbHJX.mjs} +31619 -1483
  6. package/dist/_dts/ai/src/contracts/proposals.d.ts +288 -36
  7. package/dist/_dts/api/src/bookingClosures.d.ts +19 -3
  8. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +4 -3
  9. package/dist/_dts/api/src/bookingRecords.d.ts +0 -13
  10. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +2 -2
  11. package/dist/_dts/api/src/communications.d.ts +2 -1
  12. package/dist/_dts/api/src/contactFormSummary.d.ts +15 -0
  13. package/dist/_dts/api/src/contentRuntime.d.ts +2 -5
  14. package/dist/_dts/api/src/endpoints.d.ts +1 -1
  15. package/dist/_dts/api/src/footerSettings.d.ts +11 -0
  16. package/dist/_dts/api/src/index.d.ts +2 -1
  17. package/dist/_dts/api/src/occurrenceScheduling.d.ts +48 -0
  18. package/dist/_dts/api/src/participantMessaging.d.ts +5 -3
  19. package/dist/_dts/api/src/publicExperience/siteEndpoints.d.ts +7 -0
  20. package/dist/_dts/api/src/sdkContracts.d.ts +7 -5
  21. package/dist/_dts/api/src/siteOperations.d.ts +12 -3
  22. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +3 -2
  23. package/dist/_dts/blocks/src/client/form.d.ts +1 -0
  24. package/dist/_dts/blocks/src/client/newsletter-form.d.ts +1 -0
  25. package/dist/_dts/blocks/src/client/site-chrome.d.ts +1 -0
  26. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -8
  27. package/dist/_dts/blocks/src/rendering/server.d.ts +1 -1
  28. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +41 -0
  29. package/dist/_dts/blocks/src/system/blocks/newsletter-signup-destination.d.ts +14 -23
  30. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +1 -1
  31. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +109 -23
  32. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  33. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +42 -108
  34. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +21 -54
  35. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/logic.d.ts +1 -1
  36. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationSurface.d.ts +26 -0
  37. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +8 -0
  38. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +21 -0
  39. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +29 -78
  40. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.server.d.ts +1 -1
  41. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +3 -6
  42. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +27 -8
  43. package/dist/_dts/content-editor/src/FooterComposerOverview.d.ts +21 -0
  44. package/dist/_dts/content-editor/src/FooterComposerPanel.d.ts +3 -1
  45. package/dist/_dts/content-editor/src/FooterEngagementEditorFields.d.ts +31 -0
  46. package/dist/_dts/content-editor/src/FooterEngagementEditorPanel.d.ts +17 -0
  47. package/dist/_dts/content-editor/src/footerComposer.d.ts +3 -0
  48. package/dist/_dts/content-editor/src/footerEngagementDraft.d.ts +57 -0
  49. package/dist/_dts/content-editor/src/footerEngagementEditor.d.ts +11 -0
  50. package/dist/_dts/content-editor/src/footerPreviewRuntime.d.ts +13 -0
  51. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  52. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +35 -0
  53. package/dist/_dts/core/src/footer-arrangement.d.ts +2 -0
  54. package/dist/_dts/core/src/footer-composition-types.d.ts +118 -0
  55. package/dist/_dts/core/src/footer-composition.d.ts +7 -116
  56. package/dist/_dts/core/src/footer-engagement.d.ts +30 -0
  57. package/dist/_dts/core/src/index.d.ts +4 -0
  58. package/dist/_dts/core/src/newsletter-signup-destination.d.ts +38 -0
  59. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +59 -6
  60. package/dist/_dts/db/src/index.d.ts +1 -0
  61. package/dist/_dts/db/src/schemas/forms.d.ts +72 -2
  62. package/dist/_dts/db/src/schemas/standard-contact.d.ts +114 -0
  63. package/dist/_dts/preview-next/src/client/blocks/previewBatchLoaderParams.d.ts +6 -0
  64. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -5
  65. package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -5
  66. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -5
  67. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -4
  68. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +1 -1
  69. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +2 -4
  70. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +6 -5
  71. package/dist/_dts/sdk/src/cli/commands/push/execute/footer.d.ts +9 -0
  72. package/dist/_dts/sdk/src/cli/content/footerFile.d.ts +10 -0
  73. package/dist/_dts/sdk/src/cli/content/reader.d.ts +3 -5
  74. package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +15 -3
  75. package/dist/_dts/sdk/src/client/combineAbortSignals.d.ts +2 -0
  76. package/dist/_dts/sdk/src/client/management/types.d.ts +6 -15
  77. package/dist/_dts/sdk/src/client/types.d.ts +10 -2
  78. package/dist/_dts/sdk/src/client/wholeSeriesReadOperations.d.ts +11 -0
  79. package/dist/_dts/sdk/src/config/types.d.ts +1 -1
  80. package/dist/_dts/sdk/src/config/validation.d.ts +3 -0
  81. package/dist/_dts/sdk/src/contracts/event-registration-content.d.ts +16 -0
  82. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +4 -15
  83. package/dist/_dts/sdk/src/public-api/contracts.d.ts +4 -18
  84. package/dist/_dts/sdk/src/public-api/teamMemberContracts.d.ts +17 -0
  85. package/dist/_dts/sdk/src/public-api/wholeSeriesContracts.d.ts +2 -0
  86. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +7 -0
  87. package/dist/_dts/sdk/src/rendering/index.d.ts +5 -3
  88. package/dist/_dts/sdk/src/rendering/mediaAssets.d.ts +8 -2
  89. package/dist/_dts/sdk/src/version.d.ts +1 -1
  90. package/dist/_dts/site-commands/src/commandContract.d.ts +8 -1
  91. package/dist/_dts/site-commands/src/commands.d.ts +16 -2
  92. package/dist/_dts/theme-core/src/header/paintTargets.d.ts +10 -4
  93. package/dist/_dts/theme-core/src/header/surfaceRules.d.ts +2 -3
  94. package/dist/cli/index.mjs +5302 -4628
  95. package/dist/client/{courseRegistration-DTEYWL6Z.mjs → CourseRegistrationWizard-xRmA7REV.mjs} +329 -49
  96. package/dist/client/{DiscountCodeDisclosure-BDFRp8Y7.mjs → DiscountCodeDisclosure-B9vriL5C.mjs} +1 -1
  97. package/dist/client/{EventCombined.client-DJgF1_lf.mjs → EventCombined.client-BgVnVTlz.mjs} +2 -2
  98. package/dist/client/{EventListing.client-CnWGNjOr.mjs → EventListing.client-CqdsO7jO.mjs} +2 -2
  99. package/dist/client/{LeafletStaticMap-BISs9Bl7.mjs → LeafletStaticMap-CKPxot9M.mjs} +1 -1
  100. package/dist/client/{StepIndicator-D8gVYkK-.mjs → StepIndicator-DGCYuBJ1.mjs} +2 -2
  101. package/dist/client/{accordion-DFDajgDz.mjs → accordion-BfN5Eqd-.mjs} +1 -1
  102. package/dist/client/{bookingForm-Bdqj9-52.mjs → bookingForm-DOvCpBFP.mjs} +5 -5
  103. package/dist/client/{carousel-Cvqf-kN8.mjs → carousel-DPNmiH0f.mjs} +1 -1
  104. package/dist/client/{cart-CuH2TJXP.mjs → cart--egVXlrR.mjs} +3 -3
  105. package/dist/client/{checkout-CMNPpejZ.mjs → checkout-DywWtMcq.mjs} +3 -3
  106. package/dist/client/client.mjs +4912 -4613
  107. package/dist/client/courseRegistration-Dk9qFVwt.mjs +46 -0
  108. package/dist/client/{eventCalendar-BW-XoxZ0.mjs → eventCalendar-Bkz2HjlS.mjs} +4 -4
  109. package/dist/client/{eventCombined-Bpn7s0y9.mjs → eventCombined-D4kipYWg.mjs} +2 -2
  110. package/dist/client/{eventDetails-D2uUSTMH.mjs → eventDetails-Dz_5ix2Q.mjs} +56 -35
  111. package/dist/client/{eventListing-CVr1c094.mjs → eventListing-D0vm-zST.mjs} +2 -2
  112. package/dist/client/{eventRegistration-Dv4AvkMw.mjs → eventRegistration-Cw1E4Q4p.mjs} +58 -6
  113. package/dist/client/{form-DxdKf9fs.mjs → form-C2Zf1n3K.mjs} +1 -1
  114. package/dist/client/{headerSection-BaXI5Sro.mjs → headerSection-CP05gzdc.mjs} +2 -2
  115. package/dist/client/hooks.mjs +212 -61
  116. package/dist/client/{locationMap-BEtW2fKz.mjs → locationMap-Cl3x9PYJ.mjs} +2 -2
  117. package/dist/client/{newsletterForm-BKKs0S4R.mjs → newsletterForm-DyEJoClm.mjs} +26 -20
  118. package/dist/client/{pricing-ClkqcElA.mjs → pricing-DGuNR1W4.mjs} +1 -1
  119. package/dist/client/{productDetail-H-ru8dyy.mjs → productDetail-Cq-HrGew.mjs} +3 -3
  120. package/dist/client/{productList-Buyi5c0C.mjs → productList-DbB3jwqd.mjs} +3 -3
  121. package/dist/client/{propsDecoder-BF7i6Ijg.mjs → propsDecoder-CiTuhUwY.mjs} +130 -87
  122. package/dist/client/rendering/client.mjs +416 -208
  123. package/dist/client/rendering/islands.mjs +18 -18
  124. package/dist/client/rendering.mjs +5522 -5237
  125. package/dist/client/{scrollToBlock-D_7t8yWb.mjs → scrollToBlock-CShkRqab.mjs} +1 -1
  126. package/dist/client/{shop-CF7SZQNX.mjs → shop-Cu4Ib-ZA.mjs} +5 -5
  127. package/dist/client/{shop-commerce-DA7_Rq5p.mjs → shop-commerce-BzpsOdh7.mjs} +4 -4
  128. package/dist/client/{shop-commerce-store-BmLqW7Gh.mjs → shop-commerce-store-DaE7Fhj8.mjs} +1 -1
  129. package/dist/client/{shopShared-WL-E1znM.mjs → shopShared-cF0c20vB.mjs} +2 -2
  130. package/dist/client/{useEventFilters-rc8VLeLV.mjs → useEventFilters-QZ3HMgaJ.mjs} +2 -2
  131. package/dist/client/{usePolling-1ncrfd4S.mjs → usePolling-BKf0GcE-.mjs} +2 -2
  132. package/dist/preview-next/before-render.mjs +1 -1
  133. package/dist/preview-next/client/runtime.mjs +4 -4
  134. package/dist/preview-next/middleware.mjs +1 -1
  135. package/dist/{previewAuthStore-Dev9CdG9.mjs → previewAuthStore-BesgU5Xu.mjs} +1 -1
  136. package/dist/{sdk-runtime-BnrCCFJq.mjs → sdk-runtime-Cn_QSCOg.mjs} +2 -2
  137. package/dist/{separator-CFvBx2yl.mjs → separator-CEoGABRc.mjs} +1 -1
  138. package/dist/server/components.mjs +473 -289
  139. package/dist/server/config-validation.mjs +209 -61
  140. package/dist/server/config.mjs +209 -61
  141. package/dist/server/data.mjs +212 -61
  142. package/dist/server/index.mjs +40 -16
  143. package/dist/server/next.mjs +513 -307
  144. package/dist/server/page-converter.mjs +211 -64
  145. package/dist/server/prebuild.mjs +1 -1
  146. package/dist/server/rendering/server.mjs +475 -282
  147. package/dist/server/rendering.mjs +482 -290
  148. package/dist/server/routing.mjs +254 -80
  149. package/dist/server/server.mjs +252 -77
  150. package/package.json +1 -1
  151. package/dist/SdkPreviewModeRuntime-B0HPXr-l.mjs +0 -39546
  152. package/dist/client/MagicLinkForm-b5E_HoG9.mjs +0 -327
@@ -7318,7 +7318,7 @@ const API_ENDPOINTS$1 = {
7318
7318
  path: "/sites/{siteId}/shop/orders/{orderId}/digital-fulfillment",
7319
7319
  method: "POST",
7320
7320
  auth: "user",
7321
- responseKind: "void",
7321
+ responseKind: "json",
7322
7322
  errors: [
7323
7323
  "resource:not_found",
7324
7324
  "validation:invalid_input",
@@ -7942,7 +7942,7 @@ var SimpleCache = class {
7942
7942
  * 1. This constant
7943
7943
  * 2. The "version" field in package.json
7944
7944
  */
7945
- const SDK_VERSION = "0.127.0";
7945
+ const SDK_VERSION = "0.128.0";
7946
7946
  //#endregion
7947
7947
  //#region src/client/error.ts
7948
7948
  let _Symbol$for;
@@ -8698,6 +8698,39 @@ function createContentReadOperations(input) {
8698
8698
  };
8699
8699
  }
8700
8700
  //#endregion
8701
+ //#region src/client/wholeSeriesReadOperations.ts
8702
+ function createWholeSeriesReadOperations(deps) {
8703
+ return { async getPublicWholeSeriesOffering(params) {
8704
+ const { siteId, eventSeriesId, stage, signal } = params;
8705
+ if (!siteId) throw new Error("getPublicWholeSeriesOffering() requires siteId");
8706
+ if (!eventSeriesId) throw new Error("getPublicWholeSeriesOffering() requires eventSeriesId");
8707
+ const cacheKey = `public-whole-series-offering:${siteId}:${eventSeriesId}:${stage ?? ""}`;
8708
+ return deps.resilientFetchData(cacheKey, (requestSignal) => deps.apiClient({
8709
+ endpoint: "getPublicWholeSeriesOffering",
8710
+ params: {
8711
+ siteId,
8712
+ eventSeriesId,
8713
+ ...stage && { stage }
8714
+ },
8715
+ options: { signal: requestSignal }
8716
+ }), { signal });
8717
+ } };
8718
+ }
8719
+ //#endregion
8720
+ //#region src/client/combineAbortSignals.ts
8721
+ /** Combine signals into one that aborts when any input aborts. */
8722
+ function combineAbortSignals(...signals) {
8723
+ const controller = new AbortController();
8724
+ for (const signal of signals) {
8725
+ if (signal.aborted) {
8726
+ controller.abort(signal.reason);
8727
+ break;
8728
+ }
8729
+ signal.addEventListener("abort", () => controller.abort(signal.reason), { once: true });
8730
+ }
8731
+ return controller.signal;
8732
+ }
8733
+ //#endregion
8701
8734
  //#region src/client/resilience.ts
8702
8735
  const DEFAULT_RETRY_CONFIG = {
8703
8736
  maxAttempts: 3,
@@ -9485,25 +9518,15 @@ function createRiverbankClientWithDeps(deps, config) {
9485
9518
  async function resilientFetchData(cacheKey, fetcher, options) {
9486
9519
  return (await resilientFetch(cacheKey, fetcher, options)).data;
9487
9520
  }
9488
- /**
9489
- * Combine multiple AbortSignals into one that aborts when any input aborts
9490
- */
9491
- function combineAbortSignals(...signals) {
9492
- const controller = new AbortController();
9493
- for (const signal of signals) {
9494
- if (signal.aborted) {
9495
- controller.abort(signal.reason);
9496
- break;
9497
- }
9498
- signal.addEventListener("abort", () => controller.abort(signal.reason), { once: true });
9499
- }
9500
- return controller.signal;
9501
- }
9502
9521
  const contentReads = createContentReadOperations({
9503
9522
  apiClient,
9504
9523
  resilientFetch,
9505
9524
  prebuildLoader
9506
9525
  });
9526
+ const wholeSeriesReads = createWholeSeriesReadOperations({
9527
+ apiClient,
9528
+ resilientFetchData
9529
+ });
9507
9530
  async function getEntriesInternal(params) {
9508
9531
  const { siteId, contentType, limit, offset, order, preview = false, mode, entryIds, includeMeta, signal } = params;
9509
9532
  const entryIdsCacheKey = mode === "manual" && entryIds?.length ? entryIds.join(",") : "";
@@ -9537,6 +9560,7 @@ function createRiverbankClientWithDeps(deps, config) {
9537
9560
  });
9538
9561
  }
9539
9562
  return {
9563
+ ...wholeSeriesReads,
9540
9564
  async getSite(params) {
9541
9565
  return (await contentReads.getSiteWithResilience(params)).data;
9542
9566
  },
@@ -10629,6 +10653,11 @@ function toLocationCoordinates(value) {
10629
10653
  lng: value.lng
10630
10654
  };
10631
10655
  }
10656
+ //#endregion
10657
+ //#region ../core/src/newsletter-signup-destination.ts
10658
+ function parseNewsletterSignupDestinationProvider(value) {
10659
+ return value === "riverbank" || value === "mailchimp" ? value : null;
10660
+ }
10632
10661
  z$1.object({
10633
10662
  formulaVersion: z$1.literal("managed-domain-overage-v1"),
10634
10663
  conversionRule: z$1.literal("usd-to-gbp-1-to-1-v1"),
@@ -28328,6 +28357,7 @@ const newsletterFormFragment = defineFragment({
28328
28357
  }
28329
28358
  ],
28330
28359
  layout: [el("newsletter-form", withApiBindings({
28360
+ source: "block",
28331
28361
  destinationProvider: { $bind: { from: "destinationProvider" } },
28332
28362
  listId: { $bind: { from: "listId" } },
28333
28363
  preset: { $bind: { from: "preset" } },
@@ -30447,6 +30477,7 @@ const contactNewsletterLayout = styledSection({
30447
30477
  as: "h2",
30448
30478
  className: "newsletter-copy-title"
30449
30479
  }, when("newsletterTitle"), bind("newsletterTitle")), richText({ className: "newsletter-copy-subtitle rb-prose rb-max-w-none" }, when("newsletterSubtitle"), bind("newsletterSubtitle"))]), el("newsletter-form", withApiBindings({
30480
+ source: "block",
30450
30481
  listId: { $bind: { from: "listId" } },
30451
30482
  preset: { $bind: { from: "preset" } },
30452
30483
  includePhone: { $bind: { from: "includePhone" } },
@@ -32381,6 +32412,22 @@ const footerNavGroupsLayout = stack({
32381
32412
  }, [text({ as: "span" }, bind("entry.label"))], repeat("group.children", "entry"))])], repeat("footerMenu.groups", "group"))], whenCollectionHasItems("footerMenu.groups"));
32382
32413
  //#endregion
32383
32414
  //#region ../blocks/src/system/blocks/site-footer.ts
32415
+ const footerStandardContactBindings = {
32416
+ value: { $bind: { from: "module.engagement.runtime.value" } },
32417
+ submitLabel: { $bind: { from: "module.engagement.runtime.submitLabel" } },
32418
+ successMessage: { $bind: { from: "module.engagement.runtime.successMessage" } }
32419
+ };
32420
+ const footerMailingListBindings = {
32421
+ source: { $bind: { from: "module.engagement.runtime.source" } },
32422
+ destinationRef: { $bind: { from: "module.engagement.runtime.destinationRef" } },
32423
+ listId: { $bind: { from: "module.engagement.runtime.listId" } },
32424
+ preset: { $bind: { from: "module.engagement.runtime.preset" } },
32425
+ includePhone: { $bind: { from: "module.engagement.runtime.includePhone" } },
32426
+ buttonLabel: { $bind: { from: "module.engagement.runtime.buttonLabel" } },
32427
+ successMessage: { $bind: { from: "module.engagement.runtime.successMessage" } },
32428
+ privacyNote: { $bind: { from: "module.engagement.runtime.privacyNote" } }
32429
+ };
32430
+ const footerSpamProtectionBinding = { spamProtectionEnabled: { $bind: { from: "$root.spamProtectionEnabled" } } };
32384
32431
  const brandLogo = link({
32385
32432
  href: "/",
32386
32433
  className: { $bind: {
@@ -32458,6 +32505,23 @@ const authoredCopy = richText({
32458
32505
  id: "content.interpolateRichTextTokens",
32459
32506
  options: { tokens: ["year", "site_name"] }
32460
32507
  }] }));
32508
+ const footerEngagement = stack({
32509
+ gap: "md",
32510
+ className: "rb-w-full"
32511
+ }, [
32512
+ text({
32513
+ as: "p",
32514
+ className: "rb-body rb-opacity-80"
32515
+ }, bind("module.engagement.intro"), when("module.engagement.intro")),
32516
+ form(withApiBindings({
32517
+ ...footerStandardContactBindings,
32518
+ ...footerSpamProtectionBinding
32519
+ }), [], when("module.engagement.kind", { equals: "standard-contact" })),
32520
+ el("newsletter-form", withApiBindings({
32521
+ ...footerMailingListBindings,
32522
+ ...footerSpamProtectionBinding
32523
+ }), [], when("module.engagement.kind", { equals: "mailing-list" }))
32524
+ ], when("module.kind", { equals: "engagement" }));
32461
32525
  const footerGroup = stack({
32462
32526
  gap: "md",
32463
32527
  align: "stretch",
@@ -32483,6 +32547,7 @@ const footerGroup = stack({
32483
32547
  contact,
32484
32548
  hours,
32485
32549
  socials,
32550
+ footerEngagement,
32486
32551
  stack({ className: "rb-w-full" }, [authoredCopy], when("module.kind", { equals: "supporting-text" })),
32487
32552
  stack({ className: "rb-w-full rb-lg-col-span-3" }, [authoredCopy], when("module.kind", { equals: "legal" }))
32488
32553
  ], repeat("group.modules", "module"))], repeat("region.groups", "group"));
@@ -32490,6 +32555,10 @@ const footerMainRegion = stack({
32490
32555
  className: { $bind: { from: "region.className" } },
32491
32556
  "data-footer-region": { $bind: { from: "region.kind" } }
32492
32557
  }, [footerGroup], when("region.kind", { equals: "main" }), repeat("content.footerRuntime.regions", "region"));
32558
+ const footerEngagementRegion = stack({
32559
+ className: { $bind: { from: "region.className" } },
32560
+ "data-footer-region": "engagement-row"
32561
+ }, [footerGroup], when("region.kind", { equals: "engagement-row" }), repeat("content.footerRuntime.regions", "region"));
32493
32562
  const footerBottomRegion = stack({ className: { $bind: {
32494
32563
  from: "$root.theme.footer",
32495
32564
  transforms: [{ id: "layout.footerBottomBarContainerClass" }],
@@ -32525,7 +32594,11 @@ const siteFooterBlockDefinition = { manifest: createBlockManifest({
32525
32594
  fallback: mergeStyles(backgroundColorStyle("surface"), surfaceForegroundStyle({ text: "rgb(var(--tb-text))" }), borderColorStyle("border"))
32526
32595
  } },
32527
32596
  "data-footer-membership": { $bind: { from: "content.footerRuntime.membershipKey" } }
32528
- }, [footerMainRegion, footerBottomRegion]),
32597
+ }, [
32598
+ footerEngagementRegion,
32599
+ footerMainRegion,
32600
+ footerBottomRegion
32601
+ ]),
32529
32602
  description: "Site-wide composed footer with canonical shared details.",
32530
32603
  styleTokens: { spacing: "md" },
32531
32604
  paletteHidden: true
@@ -35231,7 +35304,7 @@ const publicMembershipProductCollectionSchema = z$1.object({ memberships: z$1.ar
35231
35304
  * Kept in a shared module so the block definition and runtime contracts can
35232
35305
  * depend on the same schema without creating an initialization cycle.
35233
35306
  */
35234
- const occurrenceContextSchema$1 = z$1.object({
35307
+ const occurrenceContextSchema = z$1.object({
35235
35308
  id: z$1.string(),
35236
35309
  seriesId: z$1.string(),
35237
35310
  startsAt: z$1.string(),
@@ -35612,28 +35685,37 @@ const EVENT_REGISTRATION_SHELL_STEP_LABELS = [
35612
35685
  "Payment"
35613
35686
  ];
35614
35687
  const eventRegistrationPublicEventSchema = z$1.preprocess(normalizeEventRegistrationEventInput, publicEventSchema);
35615
- const eventRegistrationSourceSchema = z$1.object({
35616
- siteId: z$1.string().optional(),
35617
- apiBaseUrl: z$1.string().optional(),
35618
- portalToken: z$1.string().nullable().optional(),
35619
- previewToken: z$1.string().nullable().optional(),
35620
- occurrenceContext: occurrenceContextSchema$1.optional(),
35688
+ const eventRegistrationHydrationSchemaShape = {
35689
+ occurrenceContext: occurrenceContextSchema.optional(),
35621
35690
  subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
35622
35691
  events: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
35623
- className: z$1.string().nullable().optional(),
35624
- buttonText: z$1.string().nullable().optional(),
35625
- maxTickets: z$1.string().nullable().optional(),
35692
+ wholeSeriesOfferings: publicCoursesArraySchema.nullable().optional(),
35693
+ wholeSeriesOffering: publicCourseSchema.nullable().optional(),
35694
+ maxTickets: z$1.string().optional(),
35626
35695
  showVenue: z$1.boolean().optional(),
35627
35696
  showCapacity: z$1.boolean().optional(),
35697
+ showSessions: z$1.boolean().optional(),
35698
+ showPrice: z$1.boolean().optional(),
35628
35699
  successMessage: z$1.string().optional(),
35629
35700
  waitlistMessage: z$1.string().optional(),
35701
+ membershipMessage: z$1.string().optional(),
35630
35702
  buttonVariant: registrationButtonVariantSchema.optional(),
35631
35703
  overlayEnabled: z$1.boolean().optional(),
35632
35704
  spamProtectionEnabled: z$1.boolean().optional(),
35633
- stage: previewStageSchema.optional(),
35634
35705
  supportEmail: z$1.string().optional(),
35635
35706
  sitePasses: publicPassProductCollectionSchema.nullable().optional(),
35636
35707
  siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
35708
+ };
35709
+ const eventRegistrationSourceSchema = z$1.object({
35710
+ siteId: z$1.string().optional(),
35711
+ apiBaseUrl: z$1.string().optional(),
35712
+ portalToken: z$1.string().nullable().optional(),
35713
+ previewToken: z$1.string().nullable().optional(),
35714
+ ...eventRegistrationHydrationSchemaShape,
35715
+ className: z$1.string().nullable().optional(),
35716
+ buttonText: z$1.string().nullable().optional(),
35717
+ maxTickets: z$1.string().nullable().optional(),
35718
+ stage: previewStageSchema.optional()
35637
35719
  });
35638
35720
  const eventRegistrationDisplaySchema = z$1.object({
35639
35721
  kind: z$1.literal("event-registration"),
@@ -35644,22 +35726,7 @@ const eventRegistrationDisplaySchema = z$1.object({
35644
35726
  stepLabels: z$1.array(z$1.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
35645
35727
  summaryButtonText: z$1.string()
35646
35728
  });
35647
- const eventRegistrationHydrationSchema = z$1.object({
35648
- occurrenceContext: occurrenceContextSchema$1.optional(),
35649
- subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
35650
- events: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
35651
- maxTickets: z$1.string().optional(),
35652
- showVenue: z$1.boolean().optional(),
35653
- showCapacity: z$1.boolean().optional(),
35654
- successMessage: z$1.string().optional(),
35655
- waitlistMessage: z$1.string().optional(),
35656
- buttonVariant: registrationButtonVariantSchema.optional(),
35657
- overlayEnabled: z$1.boolean().optional(),
35658
- spamProtectionEnabled: z$1.boolean().optional(),
35659
- supportEmail: z$1.string().optional(),
35660
- sitePasses: publicPassProductCollectionSchema.nullable().optional(),
35661
- siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
35662
- });
35729
+ const eventRegistrationHydrationSchema = z$1.object(eventRegistrationHydrationSchemaShape);
35663
35730
  const eventRegistrationRenderSchema = z$1.object({
35664
35731
  display: eventRegistrationDisplaySchema,
35665
35732
  hydration: eventRegistrationHydrationSchema
@@ -35739,11 +35806,16 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
35739
35806
  occurrenceContext: source.occurrenceContext ?? null,
35740
35807
  subject: source.subject ?? null,
35741
35808
  events: source.events ?? null,
35809
+ wholeSeriesOfferings: source.wholeSeriesOfferings ?? null,
35810
+ wholeSeriesOffering: source.wholeSeriesOffering ?? null,
35742
35811
  maxTickets: source.maxTickets ?? void 0,
35743
35812
  showVenue: source.showVenue,
35744
35813
  showCapacity: source.showCapacity,
35814
+ showSessions: source.showSessions,
35815
+ showPrice: source.showPrice,
35745
35816
  successMessage: source.successMessage,
35746
35817
  waitlistMessage: source.waitlistMessage,
35818
+ membershipMessage: source.membershipMessage,
35747
35819
  buttonVariant: source.buttonVariant,
35748
35820
  overlayEnabled: source.overlayEnabled,
35749
35821
  spamProtectionEnabled: source.spamProtectionEnabled,
@@ -35859,6 +35931,24 @@ const eventRegistrationBlockDefinition = {
35859
35931
  defaultValue: true,
35860
35932
  ui: { intent: "display" }
35861
35933
  },
35934
+ {
35935
+ id: "showSessions",
35936
+ type: "boolean",
35937
+ label: "Show complete schedule",
35938
+ description: "Display every session for whole-series registrations",
35939
+ required: false,
35940
+ defaultValue: true,
35941
+ ui: { intent: "display" }
35942
+ },
35943
+ {
35944
+ id: "showPrice",
35945
+ type: "boolean",
35946
+ label: "Show price",
35947
+ description: "Display the whole-series price",
35948
+ required: false,
35949
+ defaultValue: true,
35950
+ ui: { intent: "display" }
35951
+ },
35862
35952
  {
35863
35953
  id: "successMessage",
35864
35954
  type: "text",
@@ -35869,6 +35959,26 @@ const eventRegistrationBlockDefinition = {
35869
35959
  defaultValue: "Thank you for registering! Check your email for confirmation details.",
35870
35960
  maxLength: 500
35871
35961
  },
35962
+ {
35963
+ id: "waitlistMessage",
35964
+ type: "text",
35965
+ label: "Waitlist message",
35966
+ description: "Message shown after joining a whole-series waitlist",
35967
+ required: false,
35968
+ multiline: true,
35969
+ defaultValue: "You've been added to the waitlist. We'll email you if a place becomes available.",
35970
+ maxLength: 500
35971
+ },
35972
+ {
35973
+ id: "membershipMessage",
35974
+ type: "text",
35975
+ label: "Membership registration message",
35976
+ description: "Message shown when a whole-series place is covered by membership",
35977
+ required: false,
35978
+ multiline: true,
35979
+ defaultValue: "Registered using your membership. Check your email for session details.",
35980
+ maxLength: 500
35981
+ },
35872
35982
  {
35873
35983
  id: "buttonText",
35874
35984
  type: "text",
@@ -35900,8 +36010,11 @@ const eventRegistrationBlockDefinition = {
35900
36010
  } },
35901
36011
  showVenue: { $bind: { from: "content.showVenue" } },
35902
36012
  showCapacity: { $bind: { from: "content.showCapacity" } },
36013
+ showSessions: { $bind: { from: "content.showSessions" } },
36014
+ showPrice: { $bind: { from: "content.showPrice" } },
35903
36015
  successMessage: { $bind: { from: "content.successMessage" } },
35904
36016
  waitlistMessage: { $bind: { from: "content.waitlistMessage" } },
36017
+ membershipMessage: { $bind: { from: "content.membershipMessage" } },
35905
36018
  buttonText: { $bind: {
35906
36019
  from: "content.buttonText",
35907
36020
  fallback: "Complete Registration"
@@ -35915,6 +36028,7 @@ const eventRegistrationBlockDefinition = {
35915
36028
  fallback: false
35916
36029
  } },
35917
36030
  events: { $bind: { from: "data.events" } },
36031
+ wholeSeriesOffering: { $bind: { from: "data.wholeSeriesOffering.offering" } },
35918
36032
  sitePasses: { $bind: { from: "data.sitePasses" } },
35919
36033
  siteMemberships: { $bind: { from: "data.siteMemberships" } },
35920
36034
  stage: { $bind: {
@@ -35928,9 +36042,10 @@ const eventRegistrationBlockDefinition = {
35928
36042
  runtime: eventRegistrationBlockRuntime,
35929
36043
  dataSchemas: {
35930
36044
  events: publicEventsArraySchema.optional(),
36045
+ wholeSeriesOffering: z$1.object({ offering: publicCourseSchema }).optional(),
35931
36046
  sitePasses: publicPassProductCollectionSchema.optional(),
35932
36047
  siteMemberships: publicMembershipProductCollectionSchema.optional(),
35933
- occurrenceContext: occurrenceContextSchema$1.optional()
36048
+ occurrenceContext: occurrenceContextSchema.optional()
35934
36049
  },
35935
36050
  dataLoaders: {
35936
36051
  events: {
@@ -35943,11 +36058,23 @@ const eventRegistrationBlockDefinition = {
35943
36058
  fallback: "published"
35944
36059
  } },
35945
36060
  readProfile: "registration",
35946
- seriesId: { $bind: { from: "$root.occurrenceContext.seriesId" } },
36061
+ seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
35947
36062
  includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
35948
36063
  },
35949
36064
  mode: "server"
35950
36065
  },
36066
+ wholeSeriesOffering: {
36067
+ endpoint: "getPublicWholeSeriesOffering",
36068
+ params: {
36069
+ siteId: { $bind: { from: "$root.siteId" } },
36070
+ eventSeriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
36071
+ stage: { $bind: {
36072
+ from: "$root.previewStage",
36073
+ fallback: "published"
36074
+ } }
36075
+ },
36076
+ mode: "server"
36077
+ },
35951
36078
  sitePasses: {
35952
36079
  endpoint: "listPublicPasses",
35953
36080
  params: { siteId: { $bind: { from: "$root.siteId" } } },
@@ -36382,15 +36509,6 @@ const eventDetailsManifest = createBlockManifest({
36382
36509
  })], { gap: "lg" })
36383
36510
  })]
36384
36511
  });
36385
- const occurrenceContextSchema = z$1.object({
36386
- id: z$1.string(),
36387
- seriesId: z$1.string(),
36388
- startsAt: z$1.string(),
36389
- endsAt: z$1.string(),
36390
- timeZone: z$1.string(),
36391
- capacityOverride: z$1.number().nullable().optional(),
36392
- overrides: z$1.record(z$1.string(), z$1.unknown()).nullable().optional()
36393
- }).nullable();
36394
36512
  const eventAutoApplyDiscountPreviewBaseSchema = z$1.object({
36395
36513
  id: z$1.string(),
36396
36514
  publicLabel: z$1.string(),
@@ -36425,8 +36543,9 @@ const eventDetailsBlockDefinition = {
36425
36543
  from: "$root.previewStage",
36426
36544
  fallback: "published"
36427
36545
  } },
36428
- limit: "25",
36429
- seriesId: { $bind: { from: "$root.occurrenceContext.seriesId" } },
36546
+ limit: "100",
36547
+ readProfile: "details",
36548
+ seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
36430
36549
  includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
36431
36550
  },
36432
36551
  mode: "server"
@@ -42568,9 +42687,6 @@ function parseSignedNewsletterDestinationRef(value) {
42568
42687
  const trimmed = parseTrimmedString(value);
42569
42688
  return trimmed && SIGNED_DESTINATION_REF_PATTERN.test(trimmed) ? trimmed : null;
42570
42689
  }
42571
- function parseNewsletterSignupDestinationProvider(value) {
42572
- return value === "riverbank" || value === "mailchimp" ? value : null;
42573
- }
42574
42690
  function buildNewsletterSignupBlockRef(blockId) {
42575
42691
  const parsed = parseNewsletterSignupBlockId(blockId);
42576
42692
  return parsed ? {
@@ -42737,19 +42853,9 @@ const newsletterFieldSchema = z$1.object({
42737
42853
  });
42738
42854
  const newsletterSignupBlockIdSchema = z$1.string().trim().min(1).transform(parseRequiredNewsletterSignupBlockId);
42739
42855
  const signedNewsletterDestinationRefSchema = z$1.string().trim().min(1).transform(parseRequiredSignedNewsletterDestinationRef);
42740
- const newsletterPublicDestinationRefSchema = z$1.discriminatedUnion("tag", [z$1.object({
42741
- tag: z$1.literal("block_ref"),
42742
- blockId: newsletterSignupBlockIdSchema
42743
- }), z$1.object({
42744
- tag: z$1.literal("signed_destination_ref"),
42745
- token: signedNewsletterDestinationRefSchema
42746
- })]);
42747
- const newsletterSourceSchema = z$1.object({
42748
- blockId: z$1.string().nullable().optional(),
42856
+ const newsletterSourceCommonSchema = z$1.object({
42749
42857
  siteId: z$1.string().optional(),
42750
42858
  apiBaseUrl: z$1.string().optional(),
42751
- listId: z$1.string().nullable().optional(),
42752
- destinationProvider: newsletterDestinationProviderSchema.nullable().optional(),
42753
42859
  preset: newsletterPresetSchema.optional(),
42754
42860
  includePhone: z$1.boolean().optional(),
42755
42861
  buttonLabel: z$1.string().nullable().optional(),
@@ -42760,6 +42866,25 @@ const newsletterSourceSchema = z$1.object({
42760
42866
  spamProtectionEnabled: z$1.boolean().optional(),
42761
42867
  className: z$1.string().nullable().optional()
42762
42868
  });
42869
+ const newsletterSourceSchema = z$1.discriminatedUnion("source", [
42870
+ newsletterSourceCommonSchema.extend({
42871
+ source: z$1.literal("block"),
42872
+ blockId: z$1.string().nullable().optional(),
42873
+ listId: z$1.string().nullable().optional(),
42874
+ destinationProvider: newsletterDestinationProviderSchema.nullable().optional()
42875
+ }),
42876
+ newsletterSourceCommonSchema.extend({
42877
+ source: z$1.literal("signed-footer"),
42878
+ destinationRef: z$1.object({
42879
+ tag: z$1.literal("signed_destination_ref"),
42880
+ token: signedNewsletterDestinationRefSchema
42881
+ })
42882
+ }),
42883
+ newsletterSourceCommonSchema.extend({
42884
+ source: z$1.literal("legacy-direct-list"),
42885
+ listId: z$1.string().nullable()
42886
+ })
42887
+ ]);
42763
42888
  const newsletterDisplaySchema = z$1.object({
42764
42889
  kind: z$1.literal("newsletter-form"),
42765
42890
  className: z$1.string().nullable(),
@@ -42770,8 +42895,26 @@ const newsletterDisplaySchema = z$1.object({
42770
42895
  fields: z$1.array(newsletterFieldSchema)
42771
42896
  });
42772
42897
  const newsletterHydrationSchema = z$1.object({
42773
- destinationRef: newsletterPublicDestinationRefSchema.nullable().optional(),
42774
- listId: z$1.string().nullable().optional(),
42898
+ target: z$1.discriminatedUnion("tag", [
42899
+ z$1.object({
42900
+ tag: z$1.literal("block-source"),
42901
+ destinationRef: z$1.object({
42902
+ tag: z$1.literal("block_ref"),
42903
+ blockId: newsletterSignupBlockIdSchema
42904
+ }).nullable()
42905
+ }),
42906
+ z$1.object({
42907
+ tag: z$1.literal("signed-footer-source"),
42908
+ destinationRef: z$1.object({
42909
+ tag: z$1.literal("signed_destination_ref"),
42910
+ token: signedNewsletterDestinationRefSchema
42911
+ })
42912
+ }),
42913
+ z$1.object({
42914
+ tag: z$1.literal("legacy-direct-list"),
42915
+ listId: z$1.string().nullable()
42916
+ })
42917
+ ]),
42775
42918
  preset: newsletterPresetSchema,
42776
42919
  includePhone: z$1.boolean(),
42777
42920
  tags: z$1.string().nullable().optional(),
@@ -42805,20 +42948,43 @@ const newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
42805
42948
  render: createZodCodec(newsletterRenderSchema)
42806
42949
  },
42807
42950
  buildRender: (source) => {
42808
- const runtimeSource = deriveNewsletterSignupRuntimeSource(source);
42951
+ const runtimeSource = source.source === "block" ? deriveNewsletterSignupRuntimeSource(source) : null;
42809
42952
  return {
42810
42953
  display: buildNewsletterDisplay(source),
42811
42954
  hydration: {
42812
- destinationRef: buildNewsletterSignupBlockRef(source.blockId),
42813
- listId: runtimeSource.listId,
42955
+ target: projectNewsletterFormHydrationTarget(source),
42814
42956
  preset: source.preset ?? "emailOnly",
42815
42957
  includePhone: source.includePhone ?? false,
42816
- tags: runtimeSource.tags,
42958
+ tags: runtimeSource ? runtimeSource.tags : source.tags,
42817
42959
  spamProtectionEnabled: source.spamProtectionEnabled
42818
42960
  }
42819
42961
  };
42820
42962
  }
42821
42963
  });
42964
+ function projectNewsletterFormHydrationTarget(source) {
42965
+ switch (source.source) {
42966
+ case "block": {
42967
+ const destinationRef = buildNewsletterSignupBlockRef(source.blockId);
42968
+ if (destinationRef?.tag === "block_ref") return {
42969
+ tag: "block-source",
42970
+ destinationRef
42971
+ };
42972
+ return {
42973
+ tag: "legacy-direct-list",
42974
+ listId: source.listId ?? null
42975
+ };
42976
+ }
42977
+ case "signed-footer": return {
42978
+ tag: "signed-footer-source",
42979
+ destinationRef: source.destinationRef
42980
+ };
42981
+ case "legacy-direct-list": return {
42982
+ tag: "legacy-direct-list",
42983
+ listId: source.listId
42984
+ };
42985
+ default: return assertNever$3(source);
42986
+ }
42987
+ }
42822
42988
  function parseRequiredNewsletterSignupBlockId(value) {
42823
42989
  const parsed = parseNewsletterSignupBlockId(value);
42824
42990
  if (!parsed) throw new Error("Newsletter signup block destination ref requires blockId");
@@ -45348,6 +45514,7 @@ const SUPPORTED_LOADER_ENDPOINTS$1 = [
45348
45514
  "listPublicRecurringSchedule",
45349
45515
  "getPublicEventDetails",
45350
45516
  "listPublicWholeSeriesOfferings",
45517
+ "getPublicWholeSeriesOffering",
45351
45518
  "listPublicRouteCandidates",
45352
45519
  "listPublicTeamMembers",
45353
45520
  "listPublicProducts",
@@ -46368,6 +46535,7 @@ const loaderAdapters = {
46368
46535
  listPublicEvents,
46369
46536
  listPublicRecurringSchedule,
46370
46537
  getPublicEventDetails,
46538
+ getPublicWholeSeriesOffering,
46371
46539
  listPublicRouteCandidates,
46372
46540
  listPublicTeamMembers,
46373
46541
  listPublicProducts,
@@ -46462,6 +46630,13 @@ async function listPublicEvents({ client, params }) {
46462
46630
  async function listPublicRecurringSchedule(input) {
46463
46631
  return projectRecurringSchedule(await listPublicEvents(input));
46464
46632
  }
46633
+ async function getPublicWholeSeriesOffering({ client, params }) {
46634
+ return await client.getPublicWholeSeriesOffering({
46635
+ siteId: requireStringParam(params, "siteId", "getPublicWholeSeriesOffering"),
46636
+ eventSeriesId: requireStringParam(params, "eventSeriesId", "getPublicWholeSeriesOffering"),
46637
+ stage: readStringParam(params, "stage")
46638
+ });
46639
+ }
46465
46640
  async function getPublicEventDetails({ client, params }) {
46466
46641
  return await client.getPublicEventDetails({
46467
46642
  siteId: requireStringParam(params, "siteId", "getPublicEventDetails"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riverbankcms/sdk",
3
- "version": "0.127.0",
3
+ "version": "0.128.0",
4
4
  "description": "Riverbank CMS SDK for headless content consumption",
5
5
  "main": "./dist/server/index.mjs",
6
6
  "module": "./dist/server/index.mjs",