@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
@@ -1598,6 +1598,11 @@ function toLocationCoordinates(value) {
1598
1598
  lng: value.lng
1599
1599
  };
1600
1600
  }
1601
+ //#endregion
1602
+ //#region ../core/src/newsletter-signup-destination.ts
1603
+ function parseNewsletterSignupDestinationProvider(value) {
1604
+ return value === "riverbank" || value === "mailchimp" ? value : null;
1605
+ }
1601
1606
  z$1.object({
1602
1607
  formulaVersion: z$1.literal("managed-domain-overage-v1"),
1603
1608
  conversionRule: z$1.literal("usd-to-gbp-1-to-1-v1"),
@@ -19297,6 +19302,7 @@ const newsletterFormFragment = defineFragment({
19297
19302
  }
19298
19303
  ],
19299
19304
  layout: [el("newsletter-form", withApiBindings({
19305
+ source: "block",
19300
19306
  destinationProvider: { $bind: { from: "destinationProvider" } },
19301
19307
  listId: { $bind: { from: "listId" } },
19302
19308
  preset: { $bind: { from: "preset" } },
@@ -21416,6 +21422,7 @@ const contactNewsletterLayout = styledSection({
21416
21422
  as: "h2",
21417
21423
  className: "newsletter-copy-title"
21418
21424
  }, when("newsletterTitle"), bind("newsletterTitle")), richText({ className: "newsletter-copy-subtitle rb-prose rb-max-w-none" }, when("newsletterSubtitle"), bind("newsletterSubtitle"))]), el("newsletter-form", withApiBindings({
21425
+ source: "block",
21419
21426
  listId: { $bind: { from: "listId" } },
21420
21427
  preset: { $bind: { from: "preset" } },
21421
21428
  includePhone: { $bind: { from: "includePhone" } },
@@ -23350,6 +23357,22 @@ const footerNavGroupsLayout = stack({
23350
23357
  }, [text({ as: "span" }, bind("entry.label"))], repeat("group.children", "entry"))])], repeat("footerMenu.groups", "group"))], whenCollectionHasItems("footerMenu.groups"));
23351
23358
  //#endregion
23352
23359
  //#region ../blocks/src/system/blocks/site-footer.ts
23360
+ const footerStandardContactBindings = {
23361
+ value: { $bind: { from: "module.engagement.runtime.value" } },
23362
+ submitLabel: { $bind: { from: "module.engagement.runtime.submitLabel" } },
23363
+ successMessage: { $bind: { from: "module.engagement.runtime.successMessage" } }
23364
+ };
23365
+ const footerMailingListBindings = {
23366
+ source: { $bind: { from: "module.engagement.runtime.source" } },
23367
+ destinationRef: { $bind: { from: "module.engagement.runtime.destinationRef" } },
23368
+ listId: { $bind: { from: "module.engagement.runtime.listId" } },
23369
+ preset: { $bind: { from: "module.engagement.runtime.preset" } },
23370
+ includePhone: { $bind: { from: "module.engagement.runtime.includePhone" } },
23371
+ buttonLabel: { $bind: { from: "module.engagement.runtime.buttonLabel" } },
23372
+ successMessage: { $bind: { from: "module.engagement.runtime.successMessage" } },
23373
+ privacyNote: { $bind: { from: "module.engagement.runtime.privacyNote" } }
23374
+ };
23375
+ const footerSpamProtectionBinding = { spamProtectionEnabled: { $bind: { from: "$root.spamProtectionEnabled" } } };
23353
23376
  const brandLogo = link({
23354
23377
  href: "/",
23355
23378
  className: { $bind: {
@@ -23427,6 +23450,23 @@ const authoredCopy = richText({
23427
23450
  id: "content.interpolateRichTextTokens",
23428
23451
  options: { tokens: ["year", "site_name"] }
23429
23452
  }] }));
23453
+ const footerEngagement = stack({
23454
+ gap: "md",
23455
+ className: "rb-w-full"
23456
+ }, [
23457
+ text({
23458
+ as: "p",
23459
+ className: "rb-body rb-opacity-80"
23460
+ }, bind("module.engagement.intro"), when("module.engagement.intro")),
23461
+ form(withApiBindings({
23462
+ ...footerStandardContactBindings,
23463
+ ...footerSpamProtectionBinding
23464
+ }), [], when("module.engagement.kind", { equals: "standard-contact" })),
23465
+ el("newsletter-form", withApiBindings({
23466
+ ...footerMailingListBindings,
23467
+ ...footerSpamProtectionBinding
23468
+ }), [], when("module.engagement.kind", { equals: "mailing-list" }))
23469
+ ], when("module.kind", { equals: "engagement" }));
23430
23470
  const footerGroup = stack({
23431
23471
  gap: "md",
23432
23472
  align: "stretch",
@@ -23452,6 +23492,7 @@ const footerGroup = stack({
23452
23492
  contact,
23453
23493
  hours,
23454
23494
  socials,
23495
+ footerEngagement,
23455
23496
  stack({ className: "rb-w-full" }, [authoredCopy], when("module.kind", { equals: "supporting-text" })),
23456
23497
  stack({ className: "rb-w-full rb-lg-col-span-3" }, [authoredCopy], when("module.kind", { equals: "legal" }))
23457
23498
  ], repeat("group.modules", "module"))], repeat("region.groups", "group"));
@@ -23459,6 +23500,10 @@ const footerMainRegion = stack({
23459
23500
  className: { $bind: { from: "region.className" } },
23460
23501
  "data-footer-region": { $bind: { from: "region.kind" } }
23461
23502
  }, [footerGroup], when("region.kind", { equals: "main" }), repeat("content.footerRuntime.regions", "region"));
23503
+ const footerEngagementRegion = stack({
23504
+ className: { $bind: { from: "region.className" } },
23505
+ "data-footer-region": "engagement-row"
23506
+ }, [footerGroup], when("region.kind", { equals: "engagement-row" }), repeat("content.footerRuntime.regions", "region"));
23462
23507
  const footerBottomRegion = stack({ className: { $bind: {
23463
23508
  from: "$root.theme.footer",
23464
23509
  transforms: [{ id: "layout.footerBottomBarContainerClass" }],
@@ -23494,7 +23539,11 @@ const siteFooterBlockDefinition = { manifest: createBlockManifest({
23494
23539
  fallback: mergeStyles(backgroundColorStyle("surface"), surfaceForegroundStyle({ text: "rgb(var(--tb-text))" }), borderColorStyle("border"))
23495
23540
  } },
23496
23541
  "data-footer-membership": { $bind: { from: "content.footerRuntime.membershipKey" } }
23497
- }, [footerMainRegion, footerBottomRegion]),
23542
+ }, [
23543
+ footerEngagementRegion,
23544
+ footerMainRegion,
23545
+ footerBottomRegion
23546
+ ]),
23498
23547
  description: "Site-wide composed footer with canonical shared details.",
23499
23548
  styleTokens: { spacing: "md" },
23500
23549
  paletteHidden: true
@@ -26190,7 +26239,7 @@ const publicMembershipProductCollectionSchema = z$1.object({ memberships: z$1.ar
26190
26239
  * Kept in a shared module so the block definition and runtime contracts can
26191
26240
  * depend on the same schema without creating an initialization cycle.
26192
26241
  */
26193
- const occurrenceContextSchema$1 = z$1.object({
26242
+ const occurrenceContextSchema = z$1.object({
26194
26243
  id: z$1.string(),
26195
26244
  seriesId: z$1.string(),
26196
26245
  startsAt: z$1.string(),
@@ -26571,28 +26620,37 @@ const EVENT_REGISTRATION_SHELL_STEP_LABELS = [
26571
26620
  "Payment"
26572
26621
  ];
26573
26622
  const eventRegistrationPublicEventSchema = z$1.preprocess(normalizeEventRegistrationEventInput, publicEventSchema);
26574
- const eventRegistrationSourceSchema = z$1.object({
26575
- siteId: z$1.string().optional(),
26576
- apiBaseUrl: z$1.string().optional(),
26577
- portalToken: z$1.string().nullable().optional(),
26578
- previewToken: z$1.string().nullable().optional(),
26579
- occurrenceContext: occurrenceContextSchema$1.optional(),
26623
+ const eventRegistrationHydrationSchemaShape = {
26624
+ occurrenceContext: occurrenceContextSchema.optional(),
26580
26625
  subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
26581
26626
  events: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
26582
- className: z$1.string().nullable().optional(),
26583
- buttonText: z$1.string().nullable().optional(),
26584
- maxTickets: z$1.string().nullable().optional(),
26627
+ wholeSeriesOfferings: publicCoursesArraySchema.nullable().optional(),
26628
+ wholeSeriesOffering: publicCourseSchema.nullable().optional(),
26629
+ maxTickets: z$1.string().optional(),
26585
26630
  showVenue: z$1.boolean().optional(),
26586
26631
  showCapacity: z$1.boolean().optional(),
26632
+ showSessions: z$1.boolean().optional(),
26633
+ showPrice: z$1.boolean().optional(),
26587
26634
  successMessage: z$1.string().optional(),
26588
26635
  waitlistMessage: z$1.string().optional(),
26636
+ membershipMessage: z$1.string().optional(),
26589
26637
  buttonVariant: registrationButtonVariantSchema.optional(),
26590
26638
  overlayEnabled: z$1.boolean().optional(),
26591
26639
  spamProtectionEnabled: z$1.boolean().optional(),
26592
- stage: previewStageSchema.optional(),
26593
26640
  supportEmail: z$1.string().optional(),
26594
26641
  sitePasses: publicPassProductCollectionSchema.nullable().optional(),
26595
26642
  siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
26643
+ };
26644
+ const eventRegistrationSourceSchema = z$1.object({
26645
+ siteId: z$1.string().optional(),
26646
+ apiBaseUrl: z$1.string().optional(),
26647
+ portalToken: z$1.string().nullable().optional(),
26648
+ previewToken: z$1.string().nullable().optional(),
26649
+ ...eventRegistrationHydrationSchemaShape,
26650
+ className: z$1.string().nullable().optional(),
26651
+ buttonText: z$1.string().nullable().optional(),
26652
+ maxTickets: z$1.string().nullable().optional(),
26653
+ stage: previewStageSchema.optional()
26596
26654
  });
26597
26655
  const eventRegistrationDisplaySchema = z$1.object({
26598
26656
  kind: z$1.literal("event-registration"),
@@ -26603,22 +26661,7 @@ const eventRegistrationDisplaySchema = z$1.object({
26603
26661
  stepLabels: z$1.array(z$1.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
26604
26662
  summaryButtonText: z$1.string()
26605
26663
  });
26606
- const eventRegistrationHydrationSchema = z$1.object({
26607
- occurrenceContext: occurrenceContextSchema$1.optional(),
26608
- subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
26609
- events: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
26610
- maxTickets: z$1.string().optional(),
26611
- showVenue: z$1.boolean().optional(),
26612
- showCapacity: z$1.boolean().optional(),
26613
- successMessage: z$1.string().optional(),
26614
- waitlistMessage: z$1.string().optional(),
26615
- buttonVariant: registrationButtonVariantSchema.optional(),
26616
- overlayEnabled: z$1.boolean().optional(),
26617
- spamProtectionEnabled: z$1.boolean().optional(),
26618
- supportEmail: z$1.string().optional(),
26619
- sitePasses: publicPassProductCollectionSchema.nullable().optional(),
26620
- siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
26621
- });
26664
+ const eventRegistrationHydrationSchema = z$1.object(eventRegistrationHydrationSchemaShape);
26622
26665
  const eventRegistrationRenderSchema = z$1.object({
26623
26666
  display: eventRegistrationDisplaySchema,
26624
26667
  hydration: eventRegistrationHydrationSchema
@@ -26698,11 +26741,16 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
26698
26741
  occurrenceContext: source.occurrenceContext ?? null,
26699
26742
  subject: source.subject ?? null,
26700
26743
  events: source.events ?? null,
26744
+ wholeSeriesOfferings: source.wholeSeriesOfferings ?? null,
26745
+ wholeSeriesOffering: source.wholeSeriesOffering ?? null,
26701
26746
  maxTickets: source.maxTickets ?? void 0,
26702
26747
  showVenue: source.showVenue,
26703
26748
  showCapacity: source.showCapacity,
26749
+ showSessions: source.showSessions,
26750
+ showPrice: source.showPrice,
26704
26751
  successMessage: source.successMessage,
26705
26752
  waitlistMessage: source.waitlistMessage,
26753
+ membershipMessage: source.membershipMessage,
26706
26754
  buttonVariant: source.buttonVariant,
26707
26755
  overlayEnabled: source.overlayEnabled,
26708
26756
  spamProtectionEnabled: source.spamProtectionEnabled,
@@ -26818,6 +26866,24 @@ const eventRegistrationBlockDefinition = {
26818
26866
  defaultValue: true,
26819
26867
  ui: { intent: "display" }
26820
26868
  },
26869
+ {
26870
+ id: "showSessions",
26871
+ type: "boolean",
26872
+ label: "Show complete schedule",
26873
+ description: "Display every session for whole-series registrations",
26874
+ required: false,
26875
+ defaultValue: true,
26876
+ ui: { intent: "display" }
26877
+ },
26878
+ {
26879
+ id: "showPrice",
26880
+ type: "boolean",
26881
+ label: "Show price",
26882
+ description: "Display the whole-series price",
26883
+ required: false,
26884
+ defaultValue: true,
26885
+ ui: { intent: "display" }
26886
+ },
26821
26887
  {
26822
26888
  id: "successMessage",
26823
26889
  type: "text",
@@ -26828,6 +26894,26 @@ const eventRegistrationBlockDefinition = {
26828
26894
  defaultValue: "Thank you for registering! Check your email for confirmation details.",
26829
26895
  maxLength: 500
26830
26896
  },
26897
+ {
26898
+ id: "waitlistMessage",
26899
+ type: "text",
26900
+ label: "Waitlist message",
26901
+ description: "Message shown after joining a whole-series waitlist",
26902
+ required: false,
26903
+ multiline: true,
26904
+ defaultValue: "You've been added to the waitlist. We'll email you if a place becomes available.",
26905
+ maxLength: 500
26906
+ },
26907
+ {
26908
+ id: "membershipMessage",
26909
+ type: "text",
26910
+ label: "Membership registration message",
26911
+ description: "Message shown when a whole-series place is covered by membership",
26912
+ required: false,
26913
+ multiline: true,
26914
+ defaultValue: "Registered using your membership. Check your email for session details.",
26915
+ maxLength: 500
26916
+ },
26831
26917
  {
26832
26918
  id: "buttonText",
26833
26919
  type: "text",
@@ -26859,8 +26945,11 @@ const eventRegistrationBlockDefinition = {
26859
26945
  } },
26860
26946
  showVenue: { $bind: { from: "content.showVenue" } },
26861
26947
  showCapacity: { $bind: { from: "content.showCapacity" } },
26948
+ showSessions: { $bind: { from: "content.showSessions" } },
26949
+ showPrice: { $bind: { from: "content.showPrice" } },
26862
26950
  successMessage: { $bind: { from: "content.successMessage" } },
26863
26951
  waitlistMessage: { $bind: { from: "content.waitlistMessage" } },
26952
+ membershipMessage: { $bind: { from: "content.membershipMessage" } },
26864
26953
  buttonText: { $bind: {
26865
26954
  from: "content.buttonText",
26866
26955
  fallback: "Complete Registration"
@@ -26874,6 +26963,7 @@ const eventRegistrationBlockDefinition = {
26874
26963
  fallback: false
26875
26964
  } },
26876
26965
  events: { $bind: { from: "data.events" } },
26966
+ wholeSeriesOffering: { $bind: { from: "data.wholeSeriesOffering.offering" } },
26877
26967
  sitePasses: { $bind: { from: "data.sitePasses" } },
26878
26968
  siteMemberships: { $bind: { from: "data.siteMemberships" } },
26879
26969
  stage: { $bind: {
@@ -26887,9 +26977,10 @@ const eventRegistrationBlockDefinition = {
26887
26977
  runtime: eventRegistrationBlockRuntime,
26888
26978
  dataSchemas: {
26889
26979
  events: publicEventsArraySchema.optional(),
26980
+ wholeSeriesOffering: z$1.object({ offering: publicCourseSchema }).optional(),
26890
26981
  sitePasses: publicPassProductCollectionSchema.optional(),
26891
26982
  siteMemberships: publicMembershipProductCollectionSchema.optional(),
26892
- occurrenceContext: occurrenceContextSchema$1.optional()
26983
+ occurrenceContext: occurrenceContextSchema.optional()
26893
26984
  },
26894
26985
  dataLoaders: {
26895
26986
  events: {
@@ -26902,11 +26993,23 @@ const eventRegistrationBlockDefinition = {
26902
26993
  fallback: "published"
26903
26994
  } },
26904
26995
  readProfile: "registration",
26905
- seriesId: { $bind: { from: "$root.occurrenceContext.seriesId" } },
26996
+ seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
26906
26997
  includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
26907
26998
  },
26908
26999
  mode: "server"
26909
27000
  },
27001
+ wholeSeriesOffering: {
27002
+ endpoint: "getPublicWholeSeriesOffering",
27003
+ params: {
27004
+ siteId: { $bind: { from: "$root.siteId" } },
27005
+ eventSeriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
27006
+ stage: { $bind: {
27007
+ from: "$root.previewStage",
27008
+ fallback: "published"
27009
+ } }
27010
+ },
27011
+ mode: "server"
27012
+ },
26910
27013
  sitePasses: {
26911
27014
  endpoint: "listPublicPasses",
26912
27015
  params: { siteId: { $bind: { from: "$root.siteId" } } },
@@ -27341,15 +27444,6 @@ const eventDetailsManifest = createBlockManifest({
27341
27444
  })], { gap: "lg" })
27342
27445
  })]
27343
27446
  });
27344
- const occurrenceContextSchema = z$1.object({
27345
- id: z$1.string(),
27346
- seriesId: z$1.string(),
27347
- startsAt: z$1.string(),
27348
- endsAt: z$1.string(),
27349
- timeZone: z$1.string(),
27350
- capacityOverride: z$1.number().nullable().optional(),
27351
- overrides: z$1.record(z$1.string(), z$1.unknown()).nullable().optional()
27352
- }).nullable();
27353
27447
  const eventAutoApplyDiscountPreviewBaseSchema = z$1.object({
27354
27448
  id: z$1.string(),
27355
27449
  publicLabel: z$1.string(),
@@ -27384,8 +27478,9 @@ const eventDetailsBlockDefinition = {
27384
27478
  from: "$root.previewStage",
27385
27479
  fallback: "published"
27386
27480
  } },
27387
- limit: "25",
27388
- seriesId: { $bind: { from: "$root.occurrenceContext.seriesId" } },
27481
+ limit: "100",
27482
+ readProfile: "details",
27483
+ seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
27389
27484
  includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
27390
27485
  },
27391
27486
  mode: "server"
@@ -33527,9 +33622,6 @@ function parseSignedNewsletterDestinationRef(value) {
33527
33622
  const trimmed = parseTrimmedString(value);
33528
33623
  return trimmed && SIGNED_DESTINATION_REF_PATTERN.test(trimmed) ? trimmed : null;
33529
33624
  }
33530
- function parseNewsletterSignupDestinationProvider(value) {
33531
- return value === "riverbank" || value === "mailchimp" ? value : null;
33532
- }
33533
33625
  function buildNewsletterSignupBlockRef(blockId) {
33534
33626
  const parsed = parseNewsletterSignupBlockId(blockId);
33535
33627
  return parsed ? {
@@ -33676,19 +33768,9 @@ const newsletterFieldSchema = z$1.object({
33676
33768
  });
33677
33769
  const newsletterSignupBlockIdSchema = z$1.string().trim().min(1).transform(parseRequiredNewsletterSignupBlockId);
33678
33770
  const signedNewsletterDestinationRefSchema = z$1.string().trim().min(1).transform(parseRequiredSignedNewsletterDestinationRef);
33679
- const newsletterPublicDestinationRefSchema = z$1.discriminatedUnion("tag", [z$1.object({
33680
- tag: z$1.literal("block_ref"),
33681
- blockId: newsletterSignupBlockIdSchema
33682
- }), z$1.object({
33683
- tag: z$1.literal("signed_destination_ref"),
33684
- token: signedNewsletterDestinationRefSchema
33685
- })]);
33686
- const newsletterSourceSchema = z$1.object({
33687
- blockId: z$1.string().nullable().optional(),
33771
+ const newsletterSourceCommonSchema = z$1.object({
33688
33772
  siteId: z$1.string().optional(),
33689
33773
  apiBaseUrl: z$1.string().optional(),
33690
- listId: z$1.string().nullable().optional(),
33691
- destinationProvider: newsletterDestinationProviderSchema.nullable().optional(),
33692
33774
  preset: newsletterPresetSchema.optional(),
33693
33775
  includePhone: z$1.boolean().optional(),
33694
33776
  buttonLabel: z$1.string().nullable().optional(),
@@ -33699,6 +33781,25 @@ const newsletterSourceSchema = z$1.object({
33699
33781
  spamProtectionEnabled: z$1.boolean().optional(),
33700
33782
  className: z$1.string().nullable().optional()
33701
33783
  });
33784
+ const newsletterSourceSchema = z$1.discriminatedUnion("source", [
33785
+ newsletterSourceCommonSchema.extend({
33786
+ source: z$1.literal("block"),
33787
+ blockId: z$1.string().nullable().optional(),
33788
+ listId: z$1.string().nullable().optional(),
33789
+ destinationProvider: newsletterDestinationProviderSchema.nullable().optional()
33790
+ }),
33791
+ newsletterSourceCommonSchema.extend({
33792
+ source: z$1.literal("signed-footer"),
33793
+ destinationRef: z$1.object({
33794
+ tag: z$1.literal("signed_destination_ref"),
33795
+ token: signedNewsletterDestinationRefSchema
33796
+ })
33797
+ }),
33798
+ newsletterSourceCommonSchema.extend({
33799
+ source: z$1.literal("legacy-direct-list"),
33800
+ listId: z$1.string().nullable()
33801
+ })
33802
+ ]);
33702
33803
  const newsletterDisplaySchema = z$1.object({
33703
33804
  kind: z$1.literal("newsletter-form"),
33704
33805
  className: z$1.string().nullable(),
@@ -33709,8 +33810,26 @@ const newsletterDisplaySchema = z$1.object({
33709
33810
  fields: z$1.array(newsletterFieldSchema)
33710
33811
  });
33711
33812
  const newsletterHydrationSchema = z$1.object({
33712
- destinationRef: newsletterPublicDestinationRefSchema.nullable().optional(),
33713
- listId: z$1.string().nullable().optional(),
33813
+ target: z$1.discriminatedUnion("tag", [
33814
+ z$1.object({
33815
+ tag: z$1.literal("block-source"),
33816
+ destinationRef: z$1.object({
33817
+ tag: z$1.literal("block_ref"),
33818
+ blockId: newsletterSignupBlockIdSchema
33819
+ }).nullable()
33820
+ }),
33821
+ z$1.object({
33822
+ tag: z$1.literal("signed-footer-source"),
33823
+ destinationRef: z$1.object({
33824
+ tag: z$1.literal("signed_destination_ref"),
33825
+ token: signedNewsletterDestinationRefSchema
33826
+ })
33827
+ }),
33828
+ z$1.object({
33829
+ tag: z$1.literal("legacy-direct-list"),
33830
+ listId: z$1.string().nullable()
33831
+ })
33832
+ ]),
33714
33833
  preset: newsletterPresetSchema,
33715
33834
  includePhone: z$1.boolean(),
33716
33835
  tags: z$1.string().nullable().optional(),
@@ -33744,20 +33863,43 @@ const newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
33744
33863
  render: createZodCodec(newsletterRenderSchema)
33745
33864
  },
33746
33865
  buildRender: (source) => {
33747
- const runtimeSource = deriveNewsletterSignupRuntimeSource(source);
33866
+ const runtimeSource = source.source === "block" ? deriveNewsletterSignupRuntimeSource(source) : null;
33748
33867
  return {
33749
33868
  display: buildNewsletterDisplay(source),
33750
33869
  hydration: {
33751
- destinationRef: buildNewsletterSignupBlockRef(source.blockId),
33752
- listId: runtimeSource.listId,
33870
+ target: projectNewsletterFormHydrationTarget(source),
33753
33871
  preset: source.preset ?? "emailOnly",
33754
33872
  includePhone: source.includePhone ?? false,
33755
- tags: runtimeSource.tags,
33873
+ tags: runtimeSource ? runtimeSource.tags : source.tags,
33756
33874
  spamProtectionEnabled: source.spamProtectionEnabled
33757
33875
  }
33758
33876
  };
33759
33877
  }
33760
33878
  });
33879
+ function projectNewsletterFormHydrationTarget(source) {
33880
+ switch (source.source) {
33881
+ case "block": {
33882
+ const destinationRef = buildNewsletterSignupBlockRef(source.blockId);
33883
+ if (destinationRef?.tag === "block_ref") return {
33884
+ tag: "block-source",
33885
+ destinationRef
33886
+ };
33887
+ return {
33888
+ tag: "legacy-direct-list",
33889
+ listId: source.listId ?? null
33890
+ };
33891
+ }
33892
+ case "signed-footer": return {
33893
+ tag: "signed-footer-source",
33894
+ destinationRef: source.destinationRef
33895
+ };
33896
+ case "legacy-direct-list": return {
33897
+ tag: "legacy-direct-list",
33898
+ listId: source.listId
33899
+ };
33900
+ default: return assertNever$3(source);
33901
+ }
33902
+ }
33761
33903
  function parseRequiredNewsletterSignupBlockId(value) {
33762
33904
  const parsed = parseNewsletterSignupBlockId(value);
33763
33905
  if (!parsed) throw new Error("Newsletter signup block destination ref requires blockId");
@@ -36287,6 +36429,7 @@ const SUPPORTED_LOADER_ENDPOINTS$1 = [
36287
36429
  "listPublicRecurringSchedule",
36288
36430
  "getPublicEventDetails",
36289
36431
  "listPublicWholeSeriesOfferings",
36432
+ "getPublicWholeSeriesOffering",
36290
36433
  "listPublicRouteCandidates",
36291
36434
  "listPublicTeamMembers",
36292
36435
  "listPublicProducts",
@@ -37339,6 +37482,7 @@ const loaderAdapters = {
37339
37482
  listPublicEvents,
37340
37483
  listPublicRecurringSchedule,
37341
37484
  getPublicEventDetails,
37485
+ getPublicWholeSeriesOffering,
37342
37486
  listPublicRouteCandidates,
37343
37487
  listPublicTeamMembers,
37344
37488
  listPublicProducts,
@@ -37433,6 +37577,13 @@ async function listPublicEvents({ client, params }) {
37433
37577
  async function listPublicRecurringSchedule(input) {
37434
37578
  return projectRecurringSchedule(await listPublicEvents(input));
37435
37579
  }
37580
+ async function getPublicWholeSeriesOffering({ client, params }) {
37581
+ return await client.getPublicWholeSeriesOffering({
37582
+ siteId: requireStringParam(params, "siteId", "getPublicWholeSeriesOffering"),
37583
+ eventSeriesId: requireStringParam(params, "eventSeriesId", "getPublicWholeSeriesOffering"),
37584
+ stage: readStringParam(params, "stage")
37585
+ });
37586
+ }
37436
37587
  async function getPublicEventDetails({ client, params }) {
37437
37588
  return await client.getPublicEventDetails({
37438
37589
  siteId: requireStringParam(params, "siteId", "getPublicEventDetails"),
@@ -7293,7 +7293,7 @@ const API_ENDPOINTS$1 = {
7293
7293
  path: "/sites/{siteId}/shop/orders/{orderId}/digital-fulfillment",
7294
7294
  method: "POST",
7295
7295
  auth: "user",
7296
- responseKind: "void",
7296
+ responseKind: "json",
7297
7297
  errors: [
7298
7298
  "resource:not_found",
7299
7299
  "validation:invalid_input",
@@ -7917,7 +7917,7 @@ var SimpleCache = class {
7917
7917
  * 1. This constant
7918
7918
  * 2. The "version" field in package.json
7919
7919
  */
7920
- const SDK_VERSION = "0.127.0";
7920
+ const SDK_VERSION = "0.128.0";
7921
7921
  //#endregion
7922
7922
  //#region src/client/error.ts
7923
7923
  let _Symbol$for;
@@ -8796,6 +8796,39 @@ function createContentReadOperations(input) {
8796
8796
  };
8797
8797
  }
8798
8798
  //#endregion
8799
+ //#region src/client/wholeSeriesReadOperations.ts
8800
+ function createWholeSeriesReadOperations(deps) {
8801
+ return { async getPublicWholeSeriesOffering(params) {
8802
+ const { siteId, eventSeriesId, stage, signal } = params;
8803
+ if (!siteId) throw new Error("getPublicWholeSeriesOffering() requires siteId");
8804
+ if (!eventSeriesId) throw new Error("getPublicWholeSeriesOffering() requires eventSeriesId");
8805
+ const cacheKey = `public-whole-series-offering:${siteId}:${eventSeriesId}:${stage ?? ""}`;
8806
+ return deps.resilientFetchData(cacheKey, (requestSignal) => deps.apiClient({
8807
+ endpoint: "getPublicWholeSeriesOffering",
8808
+ params: {
8809
+ siteId,
8810
+ eventSeriesId,
8811
+ ...stage && { stage }
8812
+ },
8813
+ options: { signal: requestSignal }
8814
+ }), { signal });
8815
+ } };
8816
+ }
8817
+ //#endregion
8818
+ //#region src/client/combineAbortSignals.ts
8819
+ /** Combine signals into one that aborts when any input aborts. */
8820
+ function combineAbortSignals(...signals) {
8821
+ const controller = new AbortController();
8822
+ for (const signal of signals) {
8823
+ if (signal.aborted) {
8824
+ controller.abort(signal.reason);
8825
+ break;
8826
+ }
8827
+ signal.addEventListener("abort", () => controller.abort(signal.reason), { once: true });
8828
+ }
8829
+ return controller.signal;
8830
+ }
8831
+ //#endregion
8799
8832
  //#region src/client/resilience.ts
8800
8833
  const DEFAULT_RETRY_CONFIG = {
8801
8834
  maxAttempts: 3,
@@ -9583,25 +9616,15 @@ function createRiverbankClientWithDeps(deps, config) {
9583
9616
  async function resilientFetchData(cacheKey, fetcher, options) {
9584
9617
  return (await resilientFetch(cacheKey, fetcher, options)).data;
9585
9618
  }
9586
- /**
9587
- * Combine multiple AbortSignals into one that aborts when any input aborts
9588
- */
9589
- function combineAbortSignals(...signals) {
9590
- const controller = new AbortController();
9591
- for (const signal of signals) {
9592
- if (signal.aborted) {
9593
- controller.abort(signal.reason);
9594
- break;
9595
- }
9596
- signal.addEventListener("abort", () => controller.abort(signal.reason), { once: true });
9597
- }
9598
- return controller.signal;
9599
- }
9600
9619
  const contentReads = createContentReadOperations({
9601
9620
  apiClient,
9602
9621
  resilientFetch,
9603
9622
  prebuildLoader
9604
9623
  });
9624
+ const wholeSeriesReads = createWholeSeriesReadOperations({
9625
+ apiClient,
9626
+ resilientFetchData
9627
+ });
9605
9628
  async function getEntriesInternal(params) {
9606
9629
  const { siteId, contentType, limit, offset, order, preview = false, mode, entryIds, includeMeta, signal } = params;
9607
9630
  const entryIdsCacheKey = mode === "manual" && entryIds?.length ? entryIds.join(",") : "";
@@ -9635,6 +9658,7 @@ function createRiverbankClientWithDeps(deps, config) {
9635
9658
  });
9636
9659
  }
9637
9660
  return {
9661
+ ...wholeSeriesReads,
9638
9662
  async getSite(params) {
9639
9663
  return (await contentReads.getSiteWithResilience(params)).data;
9640
9664
  },