@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
@@ -1320,6 +1320,11 @@ const unsafeAsEventSeriesId = (id) => id;
1320
1320
  const parseEventOfferingId = (value) => parseUuidBrand(value, unsafeAsEventOfferingId);
1321
1321
  const parseEventSeriesId = (value) => parseUuidBrand(value, unsafeAsEventSeriesId);
1322
1322
  //#endregion
1323
+ //#region ../core/src/assert-never.ts
1324
+ function assertNever$2(value, message = "Unexpected variant") {
1325
+ throw new Error(`${message}: ${String(value)}`);
1326
+ }
1327
+ //#endregion
1323
1328
  //#region ../core/src/currency-format.ts
1324
1329
  const CURRENCY_LOCALE_BY_CODE = {
1325
1330
  USD: "en-US",
@@ -1593,6 +1598,11 @@ function toLocationCoordinates(value) {
1593
1598
  lng: value.lng
1594
1599
  };
1595
1600
  }
1601
+ //#endregion
1602
+ //#region ../core/src/newsletter-signup-destination.ts
1603
+ function parseNewsletterSignupDestinationProvider(value) {
1604
+ return value === "riverbank" || value === "mailchimp" ? value : null;
1605
+ }
1596
1606
  z$1.object({
1597
1607
  formulaVersion: z$1.literal("managed-domain-overage-v1"),
1598
1608
  conversionRule: z$1.literal("usd-to-gbp-1-to-1-v1"),
@@ -19301,6 +19311,7 @@ const newsletterFormFragment = defineFragment({
19301
19311
  }
19302
19312
  ],
19303
19313
  layout: [el("newsletter-form", withApiBindings({
19314
+ source: "block",
19304
19315
  destinationProvider: { $bind: { from: "destinationProvider" } },
19305
19316
  listId: { $bind: { from: "listId" } },
19306
19317
  preset: { $bind: { from: "preset" } },
@@ -21420,6 +21431,7 @@ const contactNewsletterLayout = styledSection({
21420
21431
  as: "h2",
21421
21432
  className: "newsletter-copy-title"
21422
21433
  }, when("newsletterTitle"), bind("newsletterTitle")), richText({ className: "newsletter-copy-subtitle rb-prose rb-max-w-none" }, when("newsletterSubtitle"), bind("newsletterSubtitle"))]), el("newsletter-form", withApiBindings({
21434
+ source: "block",
21423
21435
  listId: { $bind: { from: "listId" } },
21424
21436
  preset: { $bind: { from: "preset" } },
21425
21437
  includePhone: { $bind: { from: "includePhone" } },
@@ -23344,6 +23356,22 @@ const footerNavGroupsLayout = stack({
23344
23356
  }, [text({ as: "span" }, bind("entry.label"))], repeat("group.children", "entry"))])], repeat("footerMenu.groups", "group"))], whenCollectionHasItems("footerMenu.groups"));
23345
23357
  //#endregion
23346
23358
  //#region ../blocks/src/system/blocks/site-footer.ts
23359
+ const footerStandardContactBindings = {
23360
+ value: { $bind: { from: "module.engagement.runtime.value" } },
23361
+ submitLabel: { $bind: { from: "module.engagement.runtime.submitLabel" } },
23362
+ successMessage: { $bind: { from: "module.engagement.runtime.successMessage" } }
23363
+ };
23364
+ const footerMailingListBindings = {
23365
+ source: { $bind: { from: "module.engagement.runtime.source" } },
23366
+ destinationRef: { $bind: { from: "module.engagement.runtime.destinationRef" } },
23367
+ listId: { $bind: { from: "module.engagement.runtime.listId" } },
23368
+ preset: { $bind: { from: "module.engagement.runtime.preset" } },
23369
+ includePhone: { $bind: { from: "module.engagement.runtime.includePhone" } },
23370
+ buttonLabel: { $bind: { from: "module.engagement.runtime.buttonLabel" } },
23371
+ successMessage: { $bind: { from: "module.engagement.runtime.successMessage" } },
23372
+ privacyNote: { $bind: { from: "module.engagement.runtime.privacyNote" } }
23373
+ };
23374
+ const footerSpamProtectionBinding = { spamProtectionEnabled: { $bind: { from: "$root.spamProtectionEnabled" } } };
23347
23375
  const brandLogo = link({
23348
23376
  href: "/",
23349
23377
  className: { $bind: {
@@ -23421,6 +23449,23 @@ const authoredCopy = richText({
23421
23449
  id: "content.interpolateRichTextTokens",
23422
23450
  options: { tokens: ["year", "site_name"] }
23423
23451
  }] }));
23452
+ const footerEngagement = stack({
23453
+ gap: "md",
23454
+ className: "rb-w-full"
23455
+ }, [
23456
+ text({
23457
+ as: "p",
23458
+ className: "rb-body rb-opacity-80"
23459
+ }, bind("module.engagement.intro"), when("module.engagement.intro")),
23460
+ form(withApiBindings({
23461
+ ...footerStandardContactBindings,
23462
+ ...footerSpamProtectionBinding
23463
+ }), [], when("module.engagement.kind", { equals: "standard-contact" })),
23464
+ el("newsletter-form", withApiBindings({
23465
+ ...footerMailingListBindings,
23466
+ ...footerSpamProtectionBinding
23467
+ }), [], when("module.engagement.kind", { equals: "mailing-list" }))
23468
+ ], when("module.kind", { equals: "engagement" }));
23424
23469
  const footerGroup = stack({
23425
23470
  gap: "md",
23426
23471
  align: "stretch",
@@ -23446,6 +23491,7 @@ const footerGroup = stack({
23446
23491
  contact,
23447
23492
  hours,
23448
23493
  socials,
23494
+ footerEngagement,
23449
23495
  stack({ className: "rb-w-full" }, [authoredCopy], when("module.kind", { equals: "supporting-text" })),
23450
23496
  stack({ className: "rb-w-full rb-lg-col-span-3" }, [authoredCopy], when("module.kind", { equals: "legal" }))
23451
23497
  ], repeat("group.modules", "module"))], repeat("region.groups", "group"));
@@ -23453,6 +23499,10 @@ const footerMainRegion = stack({
23453
23499
  className: { $bind: { from: "region.className" } },
23454
23500
  "data-footer-region": { $bind: { from: "region.kind" } }
23455
23501
  }, [footerGroup], when("region.kind", { equals: "main" }), repeat("content.footerRuntime.regions", "region"));
23502
+ const footerEngagementRegion = stack({
23503
+ className: { $bind: { from: "region.className" } },
23504
+ "data-footer-region": "engagement-row"
23505
+ }, [footerGroup], when("region.kind", { equals: "engagement-row" }), repeat("content.footerRuntime.regions", "region"));
23456
23506
  const footerBottomRegion = stack({ className: { $bind: {
23457
23507
  from: "$root.theme.footer",
23458
23508
  transforms: [{ id: "layout.footerBottomBarContainerClass" }],
@@ -23488,7 +23538,11 @@ const siteFooterBlockDefinition = { manifest: createBlockManifest({
23488
23538
  fallback: mergeStyles(backgroundColorStyle("surface"), surfaceForegroundStyle({ text: "rgb(var(--tb-text))" }), borderColorStyle("border"))
23489
23539
  } },
23490
23540
  "data-footer-membership": { $bind: { from: "content.footerRuntime.membershipKey" } }
23491
- }, [footerMainRegion, footerBottomRegion]),
23541
+ }, [
23542
+ footerEngagementRegion,
23543
+ footerMainRegion,
23544
+ footerBottomRegion
23545
+ ]),
23492
23546
  description: "Site-wide composed footer with canonical shared details.",
23493
23547
  styleTokens: { spacing: "md" },
23494
23548
  paletteHidden: true
@@ -26184,7 +26238,7 @@ const publicMembershipProductCollectionSchema = z$1.object({ memberships: z$1.ar
26184
26238
  * Kept in a shared module so the block definition and runtime contracts can
26185
26239
  * depend on the same schema without creating an initialization cycle.
26186
26240
  */
26187
- const occurrenceContextSchema$1 = z$1.object({
26241
+ const occurrenceContextSchema = z$1.object({
26188
26242
  id: z$1.string(),
26189
26243
  seriesId: z$1.string(),
26190
26244
  startsAt: z$1.string(),
@@ -26565,28 +26619,37 @@ const EVENT_REGISTRATION_SHELL_STEP_LABELS = [
26565
26619
  "Payment"
26566
26620
  ];
26567
26621
  const eventRegistrationPublicEventSchema = z$1.preprocess(normalizeEventRegistrationEventInput, publicEventSchema);
26568
- const eventRegistrationSourceSchema = z$1.object({
26569
- siteId: z$1.string().optional(),
26570
- apiBaseUrl: z$1.string().optional(),
26571
- portalToken: z$1.string().nullable().optional(),
26572
- previewToken: z$1.string().nullable().optional(),
26573
- occurrenceContext: occurrenceContextSchema$1.optional(),
26622
+ const eventRegistrationHydrationSchemaShape = {
26623
+ occurrenceContext: occurrenceContextSchema.optional(),
26574
26624
  subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
26575
26625
  events: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
26576
- className: z$1.string().nullable().optional(),
26577
- buttonText: z$1.string().nullable().optional(),
26578
- maxTickets: z$1.string().nullable().optional(),
26626
+ wholeSeriesOfferings: publicCoursesArraySchema.nullable().optional(),
26627
+ wholeSeriesOffering: publicCourseSchema.nullable().optional(),
26628
+ maxTickets: z$1.string().optional(),
26579
26629
  showVenue: z$1.boolean().optional(),
26580
26630
  showCapacity: z$1.boolean().optional(),
26631
+ showSessions: z$1.boolean().optional(),
26632
+ showPrice: z$1.boolean().optional(),
26581
26633
  successMessage: z$1.string().optional(),
26582
26634
  waitlistMessage: z$1.string().optional(),
26635
+ membershipMessage: z$1.string().optional(),
26583
26636
  buttonVariant: registrationButtonVariantSchema.optional(),
26584
26637
  overlayEnabled: z$1.boolean().optional(),
26585
26638
  spamProtectionEnabled: z$1.boolean().optional(),
26586
- stage: previewStageSchema.optional(),
26587
26639
  supportEmail: z$1.string().optional(),
26588
26640
  sitePasses: publicPassProductCollectionSchema.nullable().optional(),
26589
26641
  siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
26642
+ };
26643
+ const eventRegistrationSourceSchema = z$1.object({
26644
+ siteId: z$1.string().optional(),
26645
+ apiBaseUrl: z$1.string().optional(),
26646
+ portalToken: z$1.string().nullable().optional(),
26647
+ previewToken: z$1.string().nullable().optional(),
26648
+ ...eventRegistrationHydrationSchemaShape,
26649
+ className: z$1.string().nullable().optional(),
26650
+ buttonText: z$1.string().nullable().optional(),
26651
+ maxTickets: z$1.string().nullable().optional(),
26652
+ stage: previewStageSchema.optional()
26590
26653
  });
26591
26654
  const eventRegistrationDisplaySchema = z$1.object({
26592
26655
  kind: z$1.literal("event-registration"),
@@ -26597,22 +26660,7 @@ const eventRegistrationDisplaySchema = z$1.object({
26597
26660
  stepLabels: z$1.array(z$1.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
26598
26661
  summaryButtonText: z$1.string()
26599
26662
  });
26600
- const eventRegistrationHydrationSchema = z$1.object({
26601
- occurrenceContext: occurrenceContextSchema$1.optional(),
26602
- subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
26603
- events: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
26604
- maxTickets: z$1.string().optional(),
26605
- showVenue: z$1.boolean().optional(),
26606
- showCapacity: z$1.boolean().optional(),
26607
- successMessage: z$1.string().optional(),
26608
- waitlistMessage: z$1.string().optional(),
26609
- buttonVariant: registrationButtonVariantSchema.optional(),
26610
- overlayEnabled: z$1.boolean().optional(),
26611
- spamProtectionEnabled: z$1.boolean().optional(),
26612
- supportEmail: z$1.string().optional(),
26613
- sitePasses: publicPassProductCollectionSchema.nullable().optional(),
26614
- siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
26615
- });
26663
+ const eventRegistrationHydrationSchema = z$1.object(eventRegistrationHydrationSchemaShape);
26616
26664
  const eventRegistrationRenderSchema = z$1.object({
26617
26665
  display: eventRegistrationDisplaySchema,
26618
26666
  hydration: eventRegistrationHydrationSchema
@@ -26692,11 +26740,16 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
26692
26740
  occurrenceContext: source.occurrenceContext ?? null,
26693
26741
  subject: source.subject ?? null,
26694
26742
  events: source.events ?? null,
26743
+ wholeSeriesOfferings: source.wholeSeriesOfferings ?? null,
26744
+ wholeSeriesOffering: source.wholeSeriesOffering ?? null,
26695
26745
  maxTickets: source.maxTickets ?? void 0,
26696
26746
  showVenue: source.showVenue,
26697
26747
  showCapacity: source.showCapacity,
26748
+ showSessions: source.showSessions,
26749
+ showPrice: source.showPrice,
26698
26750
  successMessage: source.successMessage,
26699
26751
  waitlistMessage: source.waitlistMessage,
26752
+ membershipMessage: source.membershipMessage,
26700
26753
  buttonVariant: source.buttonVariant,
26701
26754
  overlayEnabled: source.overlayEnabled,
26702
26755
  spamProtectionEnabled: source.spamProtectionEnabled,
@@ -26812,6 +26865,24 @@ const eventRegistrationBlockDefinition = {
26812
26865
  defaultValue: true,
26813
26866
  ui: { intent: "display" }
26814
26867
  },
26868
+ {
26869
+ id: "showSessions",
26870
+ type: "boolean",
26871
+ label: "Show complete schedule",
26872
+ description: "Display every session for whole-series registrations",
26873
+ required: false,
26874
+ defaultValue: true,
26875
+ ui: { intent: "display" }
26876
+ },
26877
+ {
26878
+ id: "showPrice",
26879
+ type: "boolean",
26880
+ label: "Show price",
26881
+ description: "Display the whole-series price",
26882
+ required: false,
26883
+ defaultValue: true,
26884
+ ui: { intent: "display" }
26885
+ },
26815
26886
  {
26816
26887
  id: "successMessage",
26817
26888
  type: "text",
@@ -26822,6 +26893,26 @@ const eventRegistrationBlockDefinition = {
26822
26893
  defaultValue: "Thank you for registering! Check your email for confirmation details.",
26823
26894
  maxLength: 500
26824
26895
  },
26896
+ {
26897
+ id: "waitlistMessage",
26898
+ type: "text",
26899
+ label: "Waitlist message",
26900
+ description: "Message shown after joining a whole-series waitlist",
26901
+ required: false,
26902
+ multiline: true,
26903
+ defaultValue: "You've been added to the waitlist. We'll email you if a place becomes available.",
26904
+ maxLength: 500
26905
+ },
26906
+ {
26907
+ id: "membershipMessage",
26908
+ type: "text",
26909
+ label: "Membership registration message",
26910
+ description: "Message shown when a whole-series place is covered by membership",
26911
+ required: false,
26912
+ multiline: true,
26913
+ defaultValue: "Registered using your membership. Check your email for session details.",
26914
+ maxLength: 500
26915
+ },
26825
26916
  {
26826
26917
  id: "buttonText",
26827
26918
  type: "text",
@@ -26853,8 +26944,11 @@ const eventRegistrationBlockDefinition = {
26853
26944
  } },
26854
26945
  showVenue: { $bind: { from: "content.showVenue" } },
26855
26946
  showCapacity: { $bind: { from: "content.showCapacity" } },
26947
+ showSessions: { $bind: { from: "content.showSessions" } },
26948
+ showPrice: { $bind: { from: "content.showPrice" } },
26856
26949
  successMessage: { $bind: { from: "content.successMessage" } },
26857
26950
  waitlistMessage: { $bind: { from: "content.waitlistMessage" } },
26951
+ membershipMessage: { $bind: { from: "content.membershipMessage" } },
26858
26952
  buttonText: { $bind: {
26859
26953
  from: "content.buttonText",
26860
26954
  fallback: "Complete Registration"
@@ -26868,6 +26962,7 @@ const eventRegistrationBlockDefinition = {
26868
26962
  fallback: false
26869
26963
  } },
26870
26964
  events: { $bind: { from: "data.events" } },
26965
+ wholeSeriesOffering: { $bind: { from: "data.wholeSeriesOffering.offering" } },
26871
26966
  sitePasses: { $bind: { from: "data.sitePasses" } },
26872
26967
  siteMemberships: { $bind: { from: "data.siteMemberships" } },
26873
26968
  stage: { $bind: {
@@ -26881,9 +26976,10 @@ const eventRegistrationBlockDefinition = {
26881
26976
  runtime: eventRegistrationBlockRuntime,
26882
26977
  dataSchemas: {
26883
26978
  events: publicEventsArraySchema.optional(),
26979
+ wholeSeriesOffering: z$1.object({ offering: publicCourseSchema }).optional(),
26884
26980
  sitePasses: publicPassProductCollectionSchema.optional(),
26885
26981
  siteMemberships: publicMembershipProductCollectionSchema.optional(),
26886
- occurrenceContext: occurrenceContextSchema$1.optional()
26982
+ occurrenceContext: occurrenceContextSchema.optional()
26887
26983
  },
26888
26984
  dataLoaders: {
26889
26985
  events: {
@@ -26896,11 +26992,23 @@ const eventRegistrationBlockDefinition = {
26896
26992
  fallback: "published"
26897
26993
  } },
26898
26994
  readProfile: "registration",
26899
- seriesId: { $bind: { from: "$root.occurrenceContext.seriesId" } },
26995
+ seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
26900
26996
  includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
26901
26997
  },
26902
26998
  mode: "server"
26903
26999
  },
27000
+ wholeSeriesOffering: {
27001
+ endpoint: "getPublicWholeSeriesOffering",
27002
+ params: {
27003
+ siteId: { $bind: { from: "$root.siteId" } },
27004
+ eventSeriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
27005
+ stage: { $bind: {
27006
+ from: "$root.previewStage",
27007
+ fallback: "published"
27008
+ } }
27009
+ },
27010
+ mode: "server"
27011
+ },
26904
27012
  sitePasses: {
26905
27013
  endpoint: "listPublicPasses",
26906
27014
  params: { siteId: { $bind: { from: "$root.siteId" } } },
@@ -27335,15 +27443,6 @@ const eventDetailsManifest = createBlockManifest({
27335
27443
  })], { gap: "lg" })
27336
27444
  })]
27337
27445
  });
27338
- const occurrenceContextSchema = z$1.object({
27339
- id: z$1.string(),
27340
- seriesId: z$1.string(),
27341
- startsAt: z$1.string(),
27342
- endsAt: z$1.string(),
27343
- timeZone: z$1.string(),
27344
- capacityOverride: z$1.number().nullable().optional(),
27345
- overrides: z$1.record(z$1.string(), z$1.unknown()).nullable().optional()
27346
- }).nullable();
27347
27446
  const eventAutoApplyDiscountPreviewBaseSchema = z$1.object({
27348
27447
  id: z$1.string(),
27349
27448
  publicLabel: z$1.string(),
@@ -27378,8 +27477,9 @@ const eventDetailsBlockDefinition = {
27378
27477
  from: "$root.previewStage",
27379
27478
  fallback: "published"
27380
27479
  } },
27381
- limit: "25",
27382
- seriesId: { $bind: { from: "$root.occurrenceContext.seriesId" } },
27480
+ limit: "100",
27481
+ readProfile: "details",
27482
+ seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
27383
27483
  includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
27384
27484
  },
27385
27485
  mode: "server"
@@ -33297,9 +33397,6 @@ function parseSignedNewsletterDestinationRef(value) {
33297
33397
  const trimmed = parseTrimmedString(value);
33298
33398
  return trimmed && SIGNED_DESTINATION_REF_PATTERN.test(trimmed) ? trimmed : null;
33299
33399
  }
33300
- function parseNewsletterSignupDestinationProvider(value) {
33301
- return value === "riverbank" || value === "mailchimp" ? value : null;
33302
- }
33303
33400
  function buildNewsletterSignupBlockRef(blockId) {
33304
33401
  const parsed = parseNewsletterSignupBlockId(blockId);
33305
33402
  return parsed ? {
@@ -33446,19 +33543,9 @@ const newsletterFieldSchema = z$1.object({
33446
33543
  });
33447
33544
  const newsletterSignupBlockIdSchema = z$1.string().trim().min(1).transform(parseRequiredNewsletterSignupBlockId);
33448
33545
  const signedNewsletterDestinationRefSchema = z$1.string().trim().min(1).transform(parseRequiredSignedNewsletterDestinationRef);
33449
- const newsletterPublicDestinationRefSchema = z$1.discriminatedUnion("tag", [z$1.object({
33450
- tag: z$1.literal("block_ref"),
33451
- blockId: newsletterSignupBlockIdSchema
33452
- }), z$1.object({
33453
- tag: z$1.literal("signed_destination_ref"),
33454
- token: signedNewsletterDestinationRefSchema
33455
- })]);
33456
- const newsletterSourceSchema = z$1.object({
33457
- blockId: z$1.string().nullable().optional(),
33546
+ const newsletterSourceCommonSchema = z$1.object({
33458
33547
  siteId: z$1.string().optional(),
33459
33548
  apiBaseUrl: z$1.string().optional(),
33460
- listId: z$1.string().nullable().optional(),
33461
- destinationProvider: newsletterDestinationProviderSchema.nullable().optional(),
33462
33549
  preset: newsletterPresetSchema.optional(),
33463
33550
  includePhone: z$1.boolean().optional(),
33464
33551
  buttonLabel: z$1.string().nullable().optional(),
@@ -33469,6 +33556,25 @@ const newsletterSourceSchema = z$1.object({
33469
33556
  spamProtectionEnabled: z$1.boolean().optional(),
33470
33557
  className: z$1.string().nullable().optional()
33471
33558
  });
33559
+ const newsletterSourceSchema = z$1.discriminatedUnion("source", [
33560
+ newsletterSourceCommonSchema.extend({
33561
+ source: z$1.literal("block"),
33562
+ blockId: z$1.string().nullable().optional(),
33563
+ listId: z$1.string().nullable().optional(),
33564
+ destinationProvider: newsletterDestinationProviderSchema.nullable().optional()
33565
+ }),
33566
+ newsletterSourceCommonSchema.extend({
33567
+ source: z$1.literal("signed-footer"),
33568
+ destinationRef: z$1.object({
33569
+ tag: z$1.literal("signed_destination_ref"),
33570
+ token: signedNewsletterDestinationRefSchema
33571
+ })
33572
+ }),
33573
+ newsletterSourceCommonSchema.extend({
33574
+ source: z$1.literal("legacy-direct-list"),
33575
+ listId: z$1.string().nullable()
33576
+ })
33577
+ ]);
33472
33578
  const newsletterDisplaySchema = z$1.object({
33473
33579
  kind: z$1.literal("newsletter-form"),
33474
33580
  className: z$1.string().nullable(),
@@ -33479,8 +33585,26 @@ const newsletterDisplaySchema = z$1.object({
33479
33585
  fields: z$1.array(newsletterFieldSchema)
33480
33586
  });
33481
33587
  const newsletterHydrationSchema = z$1.object({
33482
- destinationRef: newsletterPublicDestinationRefSchema.nullable().optional(),
33483
- listId: z$1.string().nullable().optional(),
33588
+ target: z$1.discriminatedUnion("tag", [
33589
+ z$1.object({
33590
+ tag: z$1.literal("block-source"),
33591
+ destinationRef: z$1.object({
33592
+ tag: z$1.literal("block_ref"),
33593
+ blockId: newsletterSignupBlockIdSchema
33594
+ }).nullable()
33595
+ }),
33596
+ z$1.object({
33597
+ tag: z$1.literal("signed-footer-source"),
33598
+ destinationRef: z$1.object({
33599
+ tag: z$1.literal("signed_destination_ref"),
33600
+ token: signedNewsletterDestinationRefSchema
33601
+ })
33602
+ }),
33603
+ z$1.object({
33604
+ tag: z$1.literal("legacy-direct-list"),
33605
+ listId: z$1.string().nullable()
33606
+ })
33607
+ ]),
33484
33608
  preset: newsletterPresetSchema,
33485
33609
  includePhone: z$1.boolean(),
33486
33610
  tags: z$1.string().nullable().optional(),
@@ -33514,20 +33638,43 @@ const newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
33514
33638
  render: createZodCodec(newsletterRenderSchema)
33515
33639
  },
33516
33640
  buildRender: (source) => {
33517
- const runtimeSource = deriveNewsletterSignupRuntimeSource(source);
33641
+ const runtimeSource = source.source === "block" ? deriveNewsletterSignupRuntimeSource(source) : null;
33518
33642
  return {
33519
33643
  display: buildNewsletterDisplay(source),
33520
33644
  hydration: {
33521
- destinationRef: buildNewsletterSignupBlockRef(source.blockId),
33522
- listId: runtimeSource.listId,
33645
+ target: projectNewsletterFormHydrationTarget(source),
33523
33646
  preset: source.preset ?? "emailOnly",
33524
33647
  includePhone: source.includePhone ?? false,
33525
- tags: runtimeSource.tags,
33648
+ tags: runtimeSource ? runtimeSource.tags : source.tags,
33526
33649
  spamProtectionEnabled: source.spamProtectionEnabled
33527
33650
  }
33528
33651
  };
33529
33652
  }
33530
33653
  });
33654
+ function projectNewsletterFormHydrationTarget(source) {
33655
+ switch (source.source) {
33656
+ case "block": {
33657
+ const destinationRef = buildNewsletterSignupBlockRef(source.blockId);
33658
+ if (destinationRef?.tag === "block_ref") return {
33659
+ tag: "block-source",
33660
+ destinationRef
33661
+ };
33662
+ return {
33663
+ tag: "legacy-direct-list",
33664
+ listId: source.listId ?? null
33665
+ };
33666
+ }
33667
+ case "signed-footer": return {
33668
+ tag: "signed-footer-source",
33669
+ destinationRef: source.destinationRef
33670
+ };
33671
+ case "legacy-direct-list": return {
33672
+ tag: "legacy-direct-list",
33673
+ listId: source.listId
33674
+ };
33675
+ default: return assertNever$2(source);
33676
+ }
33677
+ }
33531
33678
  function parseRequiredNewsletterSignupBlockId(value) {
33532
33679
  const parsed = parseNewsletterSignupBlockId(value);
33533
33680
  if (!parsed) throw new Error("Newsletter signup block destination ref requires blockId");
@@ -35629,6 +35776,7 @@ const SUPPORTED_LOADER_ENDPOINTS$1 = [
35629
35776
  "listPublicRecurringSchedule",
35630
35777
  "getPublicEventDetails",
35631
35778
  "listPublicWholeSeriesOfferings",
35779
+ "getPublicWholeSeriesOffering",
35632
35780
  "listPublicRouteCandidates",
35633
35781
  "listPublicTeamMembers",
35634
35782
  "listPublicProducts",