@riverbankcms/sdk 0.127.0 → 0.129.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 (178) hide show
  1. package/README.md +33 -0
  2. package/dist/{PreviewEditorSidebar-BXtfF7tp.mjs → PreviewEditorSidebar-B43CJ0g_.mjs} +9 -33
  3. package/dist/{PreviewEditorUI-Dou73Q0K.mjs → PreviewEditorUI-DHirVkeM.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-DgFDIwvK.mjs → PreviewQueryProvider-B1kbhaJD.mjs} +1 -1
  5. package/dist/SdkPreviewModeRuntime-BJumZy1B.mjs +11209 -0
  6. package/dist/{SiteChromeCustomizeContext-DZiDBAYu.mjs → SiteChromeCustomizeContext-D9SlpwEj.mjs} +31757 -1621
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +288 -36
  8. package/dist/_dts/api/src/bookingClosures.d.ts +19 -3
  9. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +4 -3
  10. package/dist/_dts/api/src/bookingRecords.d.ts +0 -13
  11. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +2 -2
  12. package/dist/_dts/api/src/communications.d.ts +2 -1
  13. package/dist/_dts/api/src/contactFormSummary.d.ts +15 -0
  14. package/dist/_dts/api/src/contentRuntime.d.ts +2 -5
  15. package/dist/_dts/api/src/endpoints.d.ts +1 -1
  16. package/dist/_dts/api/src/footerSettings.d.ts +11 -0
  17. package/dist/_dts/api/src/index.d.ts +2 -1
  18. package/dist/_dts/api/src/occurrenceScheduling.d.ts +48 -0
  19. package/dist/_dts/api/src/participantMessaging.d.ts +5 -3
  20. package/dist/_dts/api/src/publicExperience/siteEndpoints.d.ts +7 -0
  21. package/dist/_dts/api/src/sdkContracts.d.ts +7 -5
  22. package/dist/_dts/api/src/siteOperations.d.ts +12 -3
  23. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +3 -2
  24. package/dist/_dts/blocks/src/PageRenderer.d.ts +20 -10
  25. package/dist/_dts/blocks/src/client/form.d.ts +1 -0
  26. package/dist/_dts/blocks/src/client/newsletter-form.d.ts +1 -0
  27. package/dist/_dts/blocks/src/client/site-chrome.d.ts +1 -0
  28. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -8
  29. package/dist/_dts/blocks/src/index.d.ts +2 -1
  30. package/dist/_dts/blocks/src/pageRendererBoundaries.d.ts +30 -0
  31. package/dist/_dts/blocks/src/pageRenderingMode.d.ts +37 -0
  32. package/dist/_dts/blocks/src/rendering/server.d.ts +1 -1
  33. package/dist/_dts/blocks/src/server.d.ts +1 -1
  34. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +41 -0
  35. package/dist/_dts/blocks/src/system/blocks/newsletter-signup-destination.d.ts +14 -23
  36. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +1 -1
  37. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +109 -23
  38. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  39. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +42 -108
  40. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +21 -54
  41. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/logic.d.ts +1 -1
  42. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationSurface.d.ts +26 -0
  43. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +8 -0
  44. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +21 -0
  45. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +29 -78
  46. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.server.d.ts +1 -1
  47. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +3 -6
  48. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +27 -8
  49. package/dist/_dts/content-editor/src/FooterComposerOverview.d.ts +21 -0
  50. package/dist/_dts/content-editor/src/FooterComposerPanel.d.ts +3 -1
  51. package/dist/_dts/content-editor/src/FooterEngagementEditorFields.d.ts +31 -0
  52. package/dist/_dts/content-editor/src/FooterEngagementEditorPanel.d.ts +17 -0
  53. package/dist/_dts/content-editor/src/footerComposer.d.ts +3 -0
  54. package/dist/_dts/content-editor/src/footerEngagementDraft.d.ts +57 -0
  55. package/dist/_dts/content-editor/src/footerEngagementEditor.d.ts +11 -0
  56. package/dist/_dts/content-editor/src/footerPreviewRuntime.d.ts +13 -0
  57. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  58. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +35 -0
  59. package/dist/_dts/core/src/footer-arrangement.d.ts +2 -0
  60. package/dist/_dts/core/src/footer-composition-types.d.ts +118 -0
  61. package/dist/_dts/core/src/footer-composition.d.ts +7 -116
  62. package/dist/_dts/core/src/footer-engagement.d.ts +30 -0
  63. package/dist/_dts/core/src/index.d.ts +4 -0
  64. package/dist/_dts/core/src/newsletter-signup-destination.d.ts +38 -0
  65. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +73 -6
  66. package/dist/_dts/db/src/index.d.ts +1 -0
  67. package/dist/_dts/db/src/schemas/forms.d.ts +72 -2
  68. package/dist/_dts/db/src/schemas/standard-contact.d.ts +114 -0
  69. package/dist/_dts/preview-next/src/client/blocks/pageDesignRuntimePreview.d.ts +2 -0
  70. package/dist/_dts/preview-next/src/client/blocks/previewBatchLoaderParams.d.ts +6 -0
  71. package/dist/_dts/preview-next/src/client/index.d.ts +47 -47
  72. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -5
  73. package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -5
  74. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -5
  75. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -4
  76. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +19 -7
  77. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +30 -23
  78. package/dist/_dts/preview-next/src/client/preview/PreviewThemedSiteDocument.d.ts +18 -5
  79. package/dist/_dts/preview-next/src/client/preview/themeRuntime.d.ts +9 -0
  80. package/dist/_dts/preview-next/src/client/sdk/SdkPreviewMode.d.ts +21 -6
  81. package/dist/_dts/preview-next/src/client/sdk-runtime.d.ts +8 -8
  82. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +6 -5
  83. package/dist/_dts/sdk/src/cli/commands/push/execute/footer.d.ts +9 -0
  84. package/dist/_dts/sdk/src/cli/content/footerFile.d.ts +10 -0
  85. package/dist/_dts/sdk/src/cli/content/reader.d.ts +3 -5
  86. package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +15 -3
  87. package/dist/_dts/sdk/src/client/combineAbortSignals.d.ts +2 -0
  88. package/dist/_dts/sdk/src/client/management/types.d.ts +6 -15
  89. package/dist/_dts/sdk/src/client/types.d.ts +10 -2
  90. package/dist/_dts/sdk/src/client/wholeSeriesReadOperations.d.ts +11 -0
  91. package/dist/_dts/sdk/src/config/types.d.ts +1 -1
  92. package/dist/_dts/sdk/src/config/validation.d.ts +3 -0
  93. package/dist/_dts/sdk/src/contracts/event-registration-content.d.ts +16 -0
  94. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +4 -15
  95. package/dist/_dts/sdk/src/next/catch-all.d.ts +6 -0
  96. package/dist/_dts/sdk/src/next/index.d.ts +2 -1
  97. package/dist/_dts/sdk/src/next/renderSdkContent.d.ts +33 -0
  98. package/dist/_dts/sdk/src/next/types.d.ts +23 -9
  99. package/dist/_dts/sdk/src/preview-next/before-render.d.ts +4 -6
  100. package/dist/_dts/sdk/src/preview-next/client/index.d.ts +3 -3
  101. package/dist/_dts/sdk/src/preview-next/client/runtime.d.ts +1 -1
  102. package/dist/_dts/sdk/src/public-api/contracts.d.ts +4 -18
  103. package/dist/_dts/sdk/src/public-api/teamMemberContracts.d.ts +17 -0
  104. package/dist/_dts/sdk/src/public-api/wholeSeriesContracts.d.ts +2 -0
  105. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +32 -3
  106. package/dist/_dts/sdk/src/rendering/components/Block.shared.d.ts +13 -2
  107. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +31 -18
  108. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +20 -9
  109. package/dist/_dts/sdk/src/rendering/index.d.ts +8 -4
  110. package/dist/_dts/sdk/src/rendering/mediaAssets.d.ts +8 -2
  111. package/dist/_dts/sdk/src/rendering/renderingMode.d.ts +23 -0
  112. package/dist/_dts/sdk/src/rendering/server.d.ts +5 -3
  113. package/dist/_dts/sdk/src/rendering/themeRuntime.d.ts +6 -0
  114. package/dist/_dts/sdk/src/version.d.ts +1 -1
  115. package/dist/_dts/site-commands/src/commandContract.d.ts +8 -1
  116. package/dist/_dts/site-commands/src/commands.d.ts +16 -2
  117. package/dist/_dts/theme-core/src/header/paintTargets.d.ts +10 -4
  118. package/dist/_dts/theme-core/src/header/surfaceRules.d.ts +2 -3
  119. package/dist/cli/index.mjs +5535 -4835
  120. package/dist/cli/init-docs/content/workflow-preview-mode.md +24 -11
  121. package/dist/client/{courseRegistration-DTEYWL6Z.mjs → CourseRegistrationWizard-xRmA7REV.mjs} +329 -49
  122. package/dist/client/{DiscountCodeDisclosure-BDFRp8Y7.mjs → DiscountCodeDisclosure-B9vriL5C.mjs} +1 -1
  123. package/dist/client/{EventCombined.client-DJgF1_lf.mjs → EventCombined.client-BgVnVTlz.mjs} +2 -2
  124. package/dist/client/{EventListing.client-CnWGNjOr.mjs → EventListing.client-CqdsO7jO.mjs} +2 -2
  125. package/dist/client/{LeafletStaticMap-BISs9Bl7.mjs → LeafletStaticMap-CKPxot9M.mjs} +1 -1
  126. package/dist/client/{StepIndicator-D8gVYkK-.mjs → StepIndicator-DGCYuBJ1.mjs} +2 -2
  127. package/dist/client/{accordion-DFDajgDz.mjs → accordion-BfN5Eqd-.mjs} +1 -1
  128. package/dist/client/{bookingForm-Bdqj9-52.mjs → bookingForm-DOvCpBFP.mjs} +5 -5
  129. package/dist/client/{carousel-Cvqf-kN8.mjs → carousel-DPNmiH0f.mjs} +1 -1
  130. package/dist/client/{cart-CuH2TJXP.mjs → cart--egVXlrR.mjs} +3 -3
  131. package/dist/client/{checkout-CMNPpejZ.mjs → checkout-DywWtMcq.mjs} +3 -3
  132. package/dist/client/client.mjs +5324 -4942
  133. package/dist/client/courseRegistration-Dk9qFVwt.mjs +46 -0
  134. package/dist/client/{eventCalendar-BW-XoxZ0.mjs → eventCalendar-Bkz2HjlS.mjs} +4 -4
  135. package/dist/client/{eventCombined-Bpn7s0y9.mjs → eventCombined-D4kipYWg.mjs} +2 -2
  136. package/dist/client/{eventDetails-D2uUSTMH.mjs → eventDetails-Dz_5ix2Q.mjs} +56 -35
  137. package/dist/client/{eventListing-CVr1c094.mjs → eventListing-D0vm-zST.mjs} +2 -2
  138. package/dist/client/{eventRegistration-Dv4AvkMw.mjs → eventRegistration-Cw1E4Q4p.mjs} +58 -6
  139. package/dist/client/{form-DxdKf9fs.mjs → form-C2Zf1n3K.mjs} +1 -1
  140. package/dist/client/{headerSection-BaXI5Sro.mjs → headerSection-CP05gzdc.mjs} +2 -2
  141. package/dist/client/hooks.mjs +212 -61
  142. package/dist/client/{locationMap-BEtW2fKz.mjs → locationMap-Cl3x9PYJ.mjs} +2 -2
  143. package/dist/client/{newsletterForm-BKKs0S4R.mjs → newsletterForm-DyEJoClm.mjs} +26 -20
  144. package/dist/client/{pricing-ClkqcElA.mjs → pricing-DGuNR1W4.mjs} +1 -1
  145. package/dist/client/{productDetail-H-ru8dyy.mjs → productDetail-Cq-HrGew.mjs} +3 -3
  146. package/dist/client/{productList-Buyi5c0C.mjs → productList-DbB3jwqd.mjs} +3 -3
  147. package/dist/client/{propsDecoder-BF7i6Ijg.mjs → propsDecoder-CiTuhUwY.mjs} +130 -87
  148. package/dist/client/rendering/client.mjs +416 -208
  149. package/dist/client/rendering/islands.mjs +18 -18
  150. package/dist/client/rendering.mjs +6026 -5596
  151. package/dist/client/{scrollToBlock-D_7t8yWb.mjs → scrollToBlock-CShkRqab.mjs} +1 -1
  152. package/dist/client/{shop-CF7SZQNX.mjs → shop-Cu4Ib-ZA.mjs} +5 -5
  153. package/dist/client/{shop-commerce-DA7_Rq5p.mjs → shop-commerce-BzpsOdh7.mjs} +4 -4
  154. package/dist/client/{shop-commerce-store-BmLqW7Gh.mjs → shop-commerce-store-DaE7Fhj8.mjs} +1 -1
  155. package/dist/client/{shopShared-WL-E1znM.mjs → shopShared-cF0c20vB.mjs} +2 -2
  156. package/dist/client/{useEventFilters-rc8VLeLV.mjs → useEventFilters-QZ3HMgaJ.mjs} +2 -2
  157. package/dist/client/{usePolling-1ncrfd4S.mjs → usePolling-BKf0GcE-.mjs} +2 -2
  158. package/dist/preview-next/before-render.mjs +11 -4
  159. package/dist/preview-next/client/runtime.mjs +4 -4
  160. package/dist/preview-next/middleware.mjs +1 -1
  161. package/dist/{previewAuthStore-Dev9CdG9.mjs → previewAuthStore-BesgU5Xu.mjs} +1 -1
  162. package/dist/{sdk-runtime-BnrCCFJq.mjs → sdk-runtime-CfZd5pAm.mjs} +2 -2
  163. package/dist/{separator-CFvBx2yl.mjs → separator-DkTe68HE.mjs} +1 -1
  164. package/dist/server/components.mjs +950 -639
  165. package/dist/server/config-validation.mjs +209 -61
  166. package/dist/server/config.mjs +209 -61
  167. package/dist/server/data.mjs +212 -61
  168. package/dist/server/index.mjs +40 -16
  169. package/dist/server/next.mjs +1181 -835
  170. package/dist/server/page-converter.mjs +211 -64
  171. package/dist/server/prebuild.mjs +1 -1
  172. package/dist/server/rendering/server.mjs +974 -637
  173. package/dist/server/rendering.mjs +980 -644
  174. package/dist/server/routing.mjs +254 -80
  175. package/dist/server/server.mjs +252 -77
  176. package/package.json +1 -1
  177. package/dist/SdkPreviewModeRuntime-B0HPXr-l.mjs +0 -39546
  178. package/dist/client/MagicLinkForm-b5E_HoG9.mjs +0 -327
@@ -5642,7 +5642,7 @@ function asDesignSystemTemplateId(value) {
5642
5642
  function makeBoundaryId(previousBlockId, nextBlockId) {
5643
5643
  return asDesignBoundaryId(`boundary:${encodeURIComponent(previousBlockId)}:${encodeURIComponent(nextBlockId)}`);
5644
5644
  }
5645
- function assertNever$1(value, message = "Unhandled Theme V2 variant") {
5645
+ function assertNever$2(value, message = "Unhandled Theme V2 variant") {
5646
5646
  throw new Error(`${message}: ${String(value)}`);
5647
5647
  }
5648
5648
  function brandNonEmptyString(value, label) {
@@ -8172,7 +8172,7 @@ function applyNavTypography(style, typography) {
8172
8172
  textSize: "sm",
8173
8173
  letterSpacing: "wider"
8174
8174
  };
8175
- default: return assertNever$1(typography, "Unhandled header nav typography");
8175
+ default: return assertNever$2(typography, "Unhandled header nav typography");
8176
8176
  }
8177
8177
  }
8178
8178
  function underlineNavLinkStyle(colorToken, underlineColorToken, typography = "plain") {
@@ -8201,7 +8201,7 @@ function themedHeaderShadow(theme) {
8201
8201
  case "low": return { elevation: "sm" };
8202
8202
  case "medium": return { elevation: "md" };
8203
8203
  case "high": return { elevation: "lg" };
8204
- default: return assertNever$1(theme.shadow.elevation, "Unhandled theme shadow elevation");
8204
+ default: return assertNever$2(theme.shadow.elevation, "Unhandled theme shadow elevation");
8205
8205
  }
8206
8206
  }
8207
8207
  function solidBrandHeader(theme) {
@@ -12233,6 +12233,11 @@ const unsafeAsEventSeriesId = (id) => id;
12233
12233
  const parseEventOfferingId = (value) => parseUuidBrand(value, unsafeAsEventOfferingId);
12234
12234
  const parseEventSeriesId = (value) => parseUuidBrand(value, unsafeAsEventSeriesId);
12235
12235
  //#endregion
12236
+ //#region ../core/src/assert-never.ts
12237
+ function assertNever$1(value, message = "Unexpected variant") {
12238
+ throw new Error(`${message}: ${String(value)}`);
12239
+ }
12240
+ //#endregion
12236
12241
  //#region ../core/src/currency-format.ts
12237
12242
  const CURRENCY_LOCALE_BY_CODE = {
12238
12243
  USD: "en-US",
@@ -12507,6 +12512,11 @@ function toLocationCoordinates(value) {
12507
12512
  };
12508
12513
  }
12509
12514
  //#endregion
12515
+ //#region ../core/src/newsletter-signup-destination.ts
12516
+ function parseNewsletterSignupDestinationProvider(value) {
12517
+ return value === "riverbank" || value === "mailchimp" ? value : null;
12518
+ }
12519
+ //#endregion
12510
12520
  //#region ../media-core/src/aspectTransforms.ts
12511
12521
  function parseAspectRatioValue(value) {
12512
12522
  if (typeof value === "number") return Number.isFinite(value) && value > 0 ? value : void 0;
@@ -17024,6 +17034,7 @@ const newsletterFormFragment = defineFragment({
17024
17034
  }
17025
17035
  ],
17026
17036
  layout: [el("newsletter-form", withApiBindings({
17037
+ source: "block",
17027
17038
  destinationProvider: { $bind: { from: "destinationProvider" } },
17028
17039
  listId: { $bind: { from: "listId" } },
17029
17040
  preset: { $bind: { from: "preset" } },
@@ -19143,6 +19154,7 @@ const contactNewsletterLayout = styledSection({
19143
19154
  as: "h2",
19144
19155
  className: "newsletter-copy-title"
19145
19156
  }, when("newsletterTitle"), bind("newsletterTitle")), richText({ className: "newsletter-copy-subtitle rb-prose rb-max-w-none" }, when("newsletterSubtitle"), bind("newsletterSubtitle"))]), el("newsletter-form", withApiBindings({
19157
+ source: "block",
19146
19158
  listId: { $bind: { from: "listId" } },
19147
19159
  preset: { $bind: { from: "preset" } },
19148
19160
  includePhone: { $bind: { from: "includePhone" } },
@@ -19780,6 +19792,22 @@ const footerNavGroupsLayout = stack({
19780
19792
  }, [text({ as: "span" }, bind("entry.label"))], repeat("group.children", "entry"))])], repeat("footerMenu.groups", "group"))], whenCollectionHasItems("footerMenu.groups"));
19781
19793
  //#endregion
19782
19794
  //#region ../blocks/src/system/blocks/site-footer.ts
19795
+ const footerStandardContactBindings = {
19796
+ value: { $bind: { from: "module.engagement.runtime.value" } },
19797
+ submitLabel: { $bind: { from: "module.engagement.runtime.submitLabel" } },
19798
+ successMessage: { $bind: { from: "module.engagement.runtime.successMessage" } }
19799
+ };
19800
+ const footerMailingListBindings = {
19801
+ source: { $bind: { from: "module.engagement.runtime.source" } },
19802
+ destinationRef: { $bind: { from: "module.engagement.runtime.destinationRef" } },
19803
+ listId: { $bind: { from: "module.engagement.runtime.listId" } },
19804
+ preset: { $bind: { from: "module.engagement.runtime.preset" } },
19805
+ includePhone: { $bind: { from: "module.engagement.runtime.includePhone" } },
19806
+ buttonLabel: { $bind: { from: "module.engagement.runtime.buttonLabel" } },
19807
+ successMessage: { $bind: { from: "module.engagement.runtime.successMessage" } },
19808
+ privacyNote: { $bind: { from: "module.engagement.runtime.privacyNote" } }
19809
+ };
19810
+ const footerSpamProtectionBinding = { spamProtectionEnabled: { $bind: { from: "$root.spamProtectionEnabled" } } };
19783
19811
  const brandLogo = link({
19784
19812
  href: "/",
19785
19813
  className: { $bind: {
@@ -19857,6 +19885,23 @@ const authoredCopy = richText({
19857
19885
  id: "content.interpolateRichTextTokens",
19858
19886
  options: { tokens: ["year", "site_name"] }
19859
19887
  }] }));
19888
+ const footerEngagement = stack({
19889
+ gap: "md",
19890
+ className: "rb-w-full"
19891
+ }, [
19892
+ text({
19893
+ as: "p",
19894
+ className: "rb-body rb-opacity-80"
19895
+ }, bind("module.engagement.intro"), when("module.engagement.intro")),
19896
+ form(withApiBindings({
19897
+ ...footerStandardContactBindings,
19898
+ ...footerSpamProtectionBinding
19899
+ }), [], when("module.engagement.kind", { equals: "standard-contact" })),
19900
+ el("newsletter-form", withApiBindings({
19901
+ ...footerMailingListBindings,
19902
+ ...footerSpamProtectionBinding
19903
+ }), [], when("module.engagement.kind", { equals: "mailing-list" }))
19904
+ ], when("module.kind", { equals: "engagement" }));
19860
19905
  const footerGroup = stack({
19861
19906
  gap: "md",
19862
19907
  align: "stretch",
@@ -19882,6 +19927,7 @@ const footerGroup = stack({
19882
19927
  contact,
19883
19928
  hours,
19884
19929
  socials,
19930
+ footerEngagement,
19885
19931
  stack({ className: "rb-w-full" }, [authoredCopy], when("module.kind", { equals: "supporting-text" })),
19886
19932
  stack({ className: "rb-w-full rb-lg-col-span-3" }, [authoredCopy], when("module.kind", { equals: "legal" }))
19887
19933
  ], repeat("group.modules", "module"))], repeat("region.groups", "group"));
@@ -19889,6 +19935,10 @@ const footerMainRegion = stack({
19889
19935
  className: { $bind: { from: "region.className" } },
19890
19936
  "data-footer-region": { $bind: { from: "region.kind" } }
19891
19937
  }, [footerGroup], when("region.kind", { equals: "main" }), repeat("content.footerRuntime.regions", "region"));
19938
+ const footerEngagementRegion = stack({
19939
+ className: { $bind: { from: "region.className" } },
19940
+ "data-footer-region": "engagement-row"
19941
+ }, [footerGroup], when("region.kind", { equals: "engagement-row" }), repeat("content.footerRuntime.regions", "region"));
19892
19942
  const footerBottomRegion = stack({ className: { $bind: {
19893
19943
  from: "$root.theme.footer",
19894
19944
  transforms: [{ id: "layout.footerBottomBarContainerClass" }],
@@ -19924,7 +19974,11 @@ const siteFooterBlockDefinition = { manifest: createBlockManifest({
19924
19974
  fallback: mergeStyles(backgroundColorStyle("surface"), surfaceForegroundStyle({ text: "rgb(var(--tb-text))" }), borderColorStyle("border"))
19925
19975
  } },
19926
19976
  "data-footer-membership": { $bind: { from: "content.footerRuntime.membershipKey" } }
19927
- }, [footerMainRegion, footerBottomRegion]),
19977
+ }, [
19978
+ footerEngagementRegion,
19979
+ footerMainRegion,
19980
+ footerBottomRegion
19981
+ ]),
19928
19982
  description: "Site-wide composed footer with canonical shared details.",
19929
19983
  styleTokens: { spacing: "md" },
19930
19984
  paletteHidden: true
@@ -22690,7 +22744,7 @@ const publicMembershipProductCollectionSchema = z$1.object({ memberships: z$1.ar
22690
22744
  * Kept in a shared module so the block definition and runtime contracts can
22691
22745
  * depend on the same schema without creating an initialization cycle.
22692
22746
  */
22693
- const occurrenceContextSchema$1 = z$1.object({
22747
+ const occurrenceContextSchema = z$1.object({
22694
22748
  id: z$1.string(),
22695
22749
  seriesId: z$1.string(),
22696
22750
  startsAt: z$1.string(),
@@ -23071,28 +23125,37 @@ const EVENT_REGISTRATION_SHELL_STEP_LABELS = [
23071
23125
  "Payment"
23072
23126
  ];
23073
23127
  const eventRegistrationPublicEventSchema = z$1.preprocess(normalizeEventRegistrationEventInput, publicEventSchema);
23074
- const eventRegistrationSourceSchema = z$1.object({
23075
- siteId: z$1.string().optional(),
23076
- apiBaseUrl: z$1.string().optional(),
23077
- portalToken: z$1.string().nullable().optional(),
23078
- previewToken: z$1.string().nullable().optional(),
23079
- occurrenceContext: occurrenceContextSchema$1.optional(),
23128
+ const eventRegistrationHydrationSchemaShape = {
23129
+ occurrenceContext: occurrenceContextSchema.optional(),
23080
23130
  subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
23081
23131
  events: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
23082
- className: z$1.string().nullable().optional(),
23083
- buttonText: z$1.string().nullable().optional(),
23084
- maxTickets: z$1.string().nullable().optional(),
23132
+ wholeSeriesOfferings: publicCoursesArraySchema.nullable().optional(),
23133
+ wholeSeriesOffering: publicCourseSchema.nullable().optional(),
23134
+ maxTickets: z$1.string().optional(),
23085
23135
  showVenue: z$1.boolean().optional(),
23086
23136
  showCapacity: z$1.boolean().optional(),
23137
+ showSessions: z$1.boolean().optional(),
23138
+ showPrice: z$1.boolean().optional(),
23087
23139
  successMessage: z$1.string().optional(),
23088
23140
  waitlistMessage: z$1.string().optional(),
23141
+ membershipMessage: z$1.string().optional(),
23089
23142
  buttonVariant: registrationButtonVariantSchema.optional(),
23090
23143
  overlayEnabled: z$1.boolean().optional(),
23091
23144
  spamProtectionEnabled: z$1.boolean().optional(),
23092
- stage: previewStageSchema.optional(),
23093
23145
  supportEmail: z$1.string().optional(),
23094
23146
  sitePasses: publicPassProductCollectionSchema.nullable().optional(),
23095
23147
  siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
23148
+ };
23149
+ const eventRegistrationSourceSchema = z$1.object({
23150
+ siteId: z$1.string().optional(),
23151
+ apiBaseUrl: z$1.string().optional(),
23152
+ portalToken: z$1.string().nullable().optional(),
23153
+ previewToken: z$1.string().nullable().optional(),
23154
+ ...eventRegistrationHydrationSchemaShape,
23155
+ className: z$1.string().nullable().optional(),
23156
+ buttonText: z$1.string().nullable().optional(),
23157
+ maxTickets: z$1.string().nullable().optional(),
23158
+ stage: previewStageSchema.optional()
23096
23159
  });
23097
23160
  const eventRegistrationDisplaySchema = z$1.object({
23098
23161
  kind: z$1.literal("event-registration"),
@@ -23103,22 +23166,7 @@ const eventRegistrationDisplaySchema = z$1.object({
23103
23166
  stepLabels: z$1.array(z$1.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
23104
23167
  summaryButtonText: z$1.string()
23105
23168
  });
23106
- const eventRegistrationHydrationSchema = z$1.object({
23107
- occurrenceContext: occurrenceContextSchema$1.optional(),
23108
- subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
23109
- events: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
23110
- maxTickets: z$1.string().optional(),
23111
- showVenue: z$1.boolean().optional(),
23112
- showCapacity: z$1.boolean().optional(),
23113
- successMessage: z$1.string().optional(),
23114
- waitlistMessage: z$1.string().optional(),
23115
- buttonVariant: registrationButtonVariantSchema.optional(),
23116
- overlayEnabled: z$1.boolean().optional(),
23117
- spamProtectionEnabled: z$1.boolean().optional(),
23118
- supportEmail: z$1.string().optional(),
23119
- sitePasses: publicPassProductCollectionSchema.nullable().optional(),
23120
- siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
23121
- });
23169
+ const eventRegistrationHydrationSchema = z$1.object(eventRegistrationHydrationSchemaShape);
23122
23170
  const eventRegistrationRenderSchema = z$1.object({
23123
23171
  display: eventRegistrationDisplaySchema,
23124
23172
  hydration: eventRegistrationHydrationSchema
@@ -23198,11 +23246,16 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
23198
23246
  occurrenceContext: source.occurrenceContext ?? null,
23199
23247
  subject: source.subject ?? null,
23200
23248
  events: source.events ?? null,
23249
+ wholeSeriesOfferings: source.wholeSeriesOfferings ?? null,
23250
+ wholeSeriesOffering: source.wholeSeriesOffering ?? null,
23201
23251
  maxTickets: source.maxTickets ?? void 0,
23202
23252
  showVenue: source.showVenue,
23203
23253
  showCapacity: source.showCapacity,
23254
+ showSessions: source.showSessions,
23255
+ showPrice: source.showPrice,
23204
23256
  successMessage: source.successMessage,
23205
23257
  waitlistMessage: source.waitlistMessage,
23258
+ membershipMessage: source.membershipMessage,
23206
23259
  buttonVariant: source.buttonVariant,
23207
23260
  overlayEnabled: source.overlayEnabled,
23208
23261
  spamProtectionEnabled: source.spamProtectionEnabled,
@@ -23318,6 +23371,24 @@ const eventRegistrationBlockDefinition = {
23318
23371
  defaultValue: true,
23319
23372
  ui: { intent: "display" }
23320
23373
  },
23374
+ {
23375
+ id: "showSessions",
23376
+ type: "boolean",
23377
+ label: "Show complete schedule",
23378
+ description: "Display every session for whole-series registrations",
23379
+ required: false,
23380
+ defaultValue: true,
23381
+ ui: { intent: "display" }
23382
+ },
23383
+ {
23384
+ id: "showPrice",
23385
+ type: "boolean",
23386
+ label: "Show price",
23387
+ description: "Display the whole-series price",
23388
+ required: false,
23389
+ defaultValue: true,
23390
+ ui: { intent: "display" }
23391
+ },
23321
23392
  {
23322
23393
  id: "successMessage",
23323
23394
  type: "text",
@@ -23328,6 +23399,26 @@ const eventRegistrationBlockDefinition = {
23328
23399
  defaultValue: "Thank you for registering! Check your email for confirmation details.",
23329
23400
  maxLength: 500
23330
23401
  },
23402
+ {
23403
+ id: "waitlistMessage",
23404
+ type: "text",
23405
+ label: "Waitlist message",
23406
+ description: "Message shown after joining a whole-series waitlist",
23407
+ required: false,
23408
+ multiline: true,
23409
+ defaultValue: "You've been added to the waitlist. We'll email you if a place becomes available.",
23410
+ maxLength: 500
23411
+ },
23412
+ {
23413
+ id: "membershipMessage",
23414
+ type: "text",
23415
+ label: "Membership registration message",
23416
+ description: "Message shown when a whole-series place is covered by membership",
23417
+ required: false,
23418
+ multiline: true,
23419
+ defaultValue: "Registered using your membership. Check your email for session details.",
23420
+ maxLength: 500
23421
+ },
23331
23422
  {
23332
23423
  id: "buttonText",
23333
23424
  type: "text",
@@ -23359,8 +23450,11 @@ const eventRegistrationBlockDefinition = {
23359
23450
  } },
23360
23451
  showVenue: { $bind: { from: "content.showVenue" } },
23361
23452
  showCapacity: { $bind: { from: "content.showCapacity" } },
23453
+ showSessions: { $bind: { from: "content.showSessions" } },
23454
+ showPrice: { $bind: { from: "content.showPrice" } },
23362
23455
  successMessage: { $bind: { from: "content.successMessage" } },
23363
23456
  waitlistMessage: { $bind: { from: "content.waitlistMessage" } },
23457
+ membershipMessage: { $bind: { from: "content.membershipMessage" } },
23364
23458
  buttonText: { $bind: {
23365
23459
  from: "content.buttonText",
23366
23460
  fallback: "Complete Registration"
@@ -23374,6 +23468,7 @@ const eventRegistrationBlockDefinition = {
23374
23468
  fallback: false
23375
23469
  } },
23376
23470
  events: { $bind: { from: "data.events" } },
23471
+ wholeSeriesOffering: { $bind: { from: "data.wholeSeriesOffering.offering" } },
23377
23472
  sitePasses: { $bind: { from: "data.sitePasses" } },
23378
23473
  siteMemberships: { $bind: { from: "data.siteMemberships" } },
23379
23474
  stage: { $bind: {
@@ -23387,9 +23482,10 @@ const eventRegistrationBlockDefinition = {
23387
23482
  runtime: eventRegistrationBlockRuntime,
23388
23483
  dataSchemas: {
23389
23484
  events: publicEventsArraySchema.optional(),
23485
+ wholeSeriesOffering: z$1.object({ offering: publicCourseSchema }).optional(),
23390
23486
  sitePasses: publicPassProductCollectionSchema.optional(),
23391
23487
  siteMemberships: publicMembershipProductCollectionSchema.optional(),
23392
- occurrenceContext: occurrenceContextSchema$1.optional()
23488
+ occurrenceContext: occurrenceContextSchema.optional()
23393
23489
  },
23394
23490
  dataLoaders: {
23395
23491
  events: {
@@ -23402,11 +23498,23 @@ const eventRegistrationBlockDefinition = {
23402
23498
  fallback: "published"
23403
23499
  } },
23404
23500
  readProfile: "registration",
23405
- seriesId: { $bind: { from: "$root.occurrenceContext.seriesId" } },
23501
+ seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
23406
23502
  includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
23407
23503
  },
23408
23504
  mode: "server"
23409
23505
  },
23506
+ wholeSeriesOffering: {
23507
+ endpoint: "getPublicWholeSeriesOffering",
23508
+ params: {
23509
+ siteId: { $bind: { from: "$root.siteId" } },
23510
+ eventSeriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
23511
+ stage: { $bind: {
23512
+ from: "$root.previewStage",
23513
+ fallback: "published"
23514
+ } }
23515
+ },
23516
+ mode: "server"
23517
+ },
23410
23518
  sitePasses: {
23411
23519
  endpoint: "listPublicPasses",
23412
23520
  params: { siteId: { $bind: { from: "$root.siteId" } } },
@@ -23841,15 +23949,6 @@ const eventDetailsManifest = createBlockManifest({
23841
23949
  })], { gap: "lg" })
23842
23950
  })]
23843
23951
  });
23844
- const occurrenceContextSchema = z$1.object({
23845
- id: z$1.string(),
23846
- seriesId: z$1.string(),
23847
- startsAt: z$1.string(),
23848
- endsAt: z$1.string(),
23849
- timeZone: z$1.string(),
23850
- capacityOverride: z$1.number().nullable().optional(),
23851
- overrides: z$1.record(z$1.string(), z$1.unknown()).nullable().optional()
23852
- }).nullable();
23853
23952
  const eventAutoApplyDiscountPreviewBaseSchema = z$1.object({
23854
23953
  id: z$1.string(),
23855
23954
  publicLabel: z$1.string(),
@@ -23884,8 +23983,9 @@ const eventDetailsBlockDefinition = {
23884
23983
  from: "$root.previewStage",
23885
23984
  fallback: "published"
23886
23985
  } },
23887
- limit: "25",
23888
- seriesId: { $bind: { from: "$root.occurrenceContext.seriesId" } },
23986
+ limit: "100",
23987
+ readProfile: "details",
23988
+ seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
23889
23989
  includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
23890
23990
  },
23891
23991
  mode: "server"
@@ -29803,9 +29903,6 @@ function parseSignedNewsletterDestinationRef(value) {
29803
29903
  const trimmed = parseTrimmedString(value);
29804
29904
  return trimmed && SIGNED_DESTINATION_REF_PATTERN.test(trimmed) ? trimmed : null;
29805
29905
  }
29806
- function parseNewsletterSignupDestinationProvider(value) {
29807
- return value === "riverbank" || value === "mailchimp" ? value : null;
29808
- }
29809
29906
  function buildNewsletterSignupBlockRef(blockId) {
29810
29907
  const parsed = parseNewsletterSignupBlockId(blockId);
29811
29908
  return parsed ? {
@@ -29952,19 +30049,9 @@ const newsletterFieldSchema = z$1.object({
29952
30049
  });
29953
30050
  const newsletterSignupBlockIdSchema = z$1.string().trim().min(1).transform(parseRequiredNewsletterSignupBlockId);
29954
30051
  const signedNewsletterDestinationRefSchema = z$1.string().trim().min(1).transform(parseRequiredSignedNewsletterDestinationRef);
29955
- const newsletterPublicDestinationRefSchema = z$1.discriminatedUnion("tag", [z$1.object({
29956
- tag: z$1.literal("block_ref"),
29957
- blockId: newsletterSignupBlockIdSchema
29958
- }), z$1.object({
29959
- tag: z$1.literal("signed_destination_ref"),
29960
- token: signedNewsletterDestinationRefSchema
29961
- })]);
29962
- const newsletterSourceSchema = z$1.object({
29963
- blockId: z$1.string().nullable().optional(),
30052
+ const newsletterSourceCommonSchema = z$1.object({
29964
30053
  siteId: z$1.string().optional(),
29965
30054
  apiBaseUrl: z$1.string().optional(),
29966
- listId: z$1.string().nullable().optional(),
29967
- destinationProvider: newsletterDestinationProviderSchema.nullable().optional(),
29968
30055
  preset: newsletterPresetSchema.optional(),
29969
30056
  includePhone: z$1.boolean().optional(),
29970
30057
  buttonLabel: z$1.string().nullable().optional(),
@@ -29975,6 +30062,25 @@ const newsletterSourceSchema = z$1.object({
29975
30062
  spamProtectionEnabled: z$1.boolean().optional(),
29976
30063
  className: z$1.string().nullable().optional()
29977
30064
  });
30065
+ const newsletterSourceSchema = z$1.discriminatedUnion("source", [
30066
+ newsletterSourceCommonSchema.extend({
30067
+ source: z$1.literal("block"),
30068
+ blockId: z$1.string().nullable().optional(),
30069
+ listId: z$1.string().nullable().optional(),
30070
+ destinationProvider: newsletterDestinationProviderSchema.nullable().optional()
30071
+ }),
30072
+ newsletterSourceCommonSchema.extend({
30073
+ source: z$1.literal("signed-footer"),
30074
+ destinationRef: z$1.object({
30075
+ tag: z$1.literal("signed_destination_ref"),
30076
+ token: signedNewsletterDestinationRefSchema
30077
+ })
30078
+ }),
30079
+ newsletterSourceCommonSchema.extend({
30080
+ source: z$1.literal("legacy-direct-list"),
30081
+ listId: z$1.string().nullable()
30082
+ })
30083
+ ]);
29978
30084
  const newsletterDisplaySchema = z$1.object({
29979
30085
  kind: z$1.literal("newsletter-form"),
29980
30086
  className: z$1.string().nullable(),
@@ -29985,8 +30091,26 @@ const newsletterDisplaySchema = z$1.object({
29985
30091
  fields: z$1.array(newsletterFieldSchema)
29986
30092
  });
29987
30093
  const newsletterHydrationSchema = z$1.object({
29988
- destinationRef: newsletterPublicDestinationRefSchema.nullable().optional(),
29989
- listId: z$1.string().nullable().optional(),
30094
+ target: z$1.discriminatedUnion("tag", [
30095
+ z$1.object({
30096
+ tag: z$1.literal("block-source"),
30097
+ destinationRef: z$1.object({
30098
+ tag: z$1.literal("block_ref"),
30099
+ blockId: newsletterSignupBlockIdSchema
30100
+ }).nullable()
30101
+ }),
30102
+ z$1.object({
30103
+ tag: z$1.literal("signed-footer-source"),
30104
+ destinationRef: z$1.object({
30105
+ tag: z$1.literal("signed_destination_ref"),
30106
+ token: signedNewsletterDestinationRefSchema
30107
+ })
30108
+ }),
30109
+ z$1.object({
30110
+ tag: z$1.literal("legacy-direct-list"),
30111
+ listId: z$1.string().nullable()
30112
+ })
30113
+ ]),
29990
30114
  preset: newsletterPresetSchema,
29991
30115
  includePhone: z$1.boolean(),
29992
30116
  tags: z$1.string().nullable().optional(),
@@ -30020,20 +30144,43 @@ const newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
30020
30144
  render: createZodCodec(newsletterRenderSchema)
30021
30145
  },
30022
30146
  buildRender: (source) => {
30023
- const runtimeSource = deriveNewsletterSignupRuntimeSource(source);
30147
+ const runtimeSource = source.source === "block" ? deriveNewsletterSignupRuntimeSource(source) : null;
30024
30148
  return {
30025
30149
  display: buildNewsletterDisplay(source),
30026
30150
  hydration: {
30027
- destinationRef: buildNewsletterSignupBlockRef(source.blockId),
30028
- listId: runtimeSource.listId,
30151
+ target: projectNewsletterFormHydrationTarget(source),
30029
30152
  preset: source.preset ?? "emailOnly",
30030
30153
  includePhone: source.includePhone ?? false,
30031
- tags: runtimeSource.tags,
30154
+ tags: runtimeSource ? runtimeSource.tags : source.tags,
30032
30155
  spamProtectionEnabled: source.spamProtectionEnabled
30033
30156
  }
30034
30157
  };
30035
30158
  }
30036
30159
  });
30160
+ function projectNewsletterFormHydrationTarget(source) {
30161
+ switch (source.source) {
30162
+ case "block": {
30163
+ const destinationRef = buildNewsletterSignupBlockRef(source.blockId);
30164
+ if (destinationRef?.tag === "block_ref") return {
30165
+ tag: "block-source",
30166
+ destinationRef
30167
+ };
30168
+ return {
30169
+ tag: "legacy-direct-list",
30170
+ listId: source.listId ?? null
30171
+ };
30172
+ }
30173
+ case "signed-footer": return {
30174
+ tag: "signed-footer-source",
30175
+ destinationRef: source.destinationRef
30176
+ };
30177
+ case "legacy-direct-list": return {
30178
+ tag: "legacy-direct-list",
30179
+ listId: source.listId
30180
+ };
30181
+ default: return assertNever$1(source);
30182
+ }
30183
+ }
30037
30184
  function parseRequiredNewsletterSignupBlockId(value) {
30038
30185
  const parsed = parseNewsletterSignupBlockId(value);
30039
30186
  if (!parsed) throw new Error("Newsletter signup block destination ref requires blockId");
@@ -12,7 +12,7 @@ import * as crypto from "crypto";
12
12
  * 1. This constant
13
13
  * 2. The "version" field in package.json
14
14
  */
15
- const SDK_VERSION = "0.127.0";
15
+ const SDK_VERSION = "0.129.0";
16
16
  //#endregion
17
17
  //#region src/constants.ts
18
18
  /**