@riverbankcms/sdk 0.126.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 (212) hide show
  1. package/dist/{PreviewEditorSidebar-DcYJxTgc.mjs → PreviewEditorSidebar-Dbvb7GIr.mjs} +64 -68
  2. package/dist/{PreviewEditorUI-Ctt1yTJr.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-C87qlKWw.mjs → SiteChromeCustomizeContext-CvuGbHJX.mjs} +51247 -20733
  6. package/dist/_dts/ai/src/contracts/proposals.d.ts +486 -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 +3 -10
  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/block-form/src/backend/store-backend.d.ts +2 -1
  24. package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +1 -0
  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 +3 -2
  30. package/dist/_dts/blocks/src/lib/media.d.ts +267 -0
  31. package/dist/_dts/blocks/src/rendering/server.d.ts +1 -1
  32. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +41 -0
  33. package/dist/_dts/blocks/src/system/blocks/newsletter-signup-destination.d.ts +14 -23
  34. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +1 -1
  35. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +109 -23
  36. package/dist/_dts/blocks/src/system/constants/buttonRoles.d.ts +0 -13
  37. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  38. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +42 -108
  39. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +21 -54
  40. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/logic.d.ts +1 -1
  41. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationSurface.d.ts +26 -0
  42. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +8 -0
  43. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +21 -0
  44. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +4 -4
  45. package/dist/_dts/blocks/src/system/runtime/nodes/mergeResolveImageUrlContexts.d.ts +7 -0
  46. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +29 -78
  47. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.server.d.ts +1 -1
  48. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +3 -6
  49. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +27 -8
  50. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +2 -2
  51. package/dist/_dts/content-editor/src/FooterComposerOverview.d.ts +21 -0
  52. package/dist/_dts/content-editor/src/FooterComposerPanel.d.ts +3 -1
  53. package/dist/_dts/content-editor/src/FooterEngagementEditorFields.d.ts +31 -0
  54. package/dist/_dts/content-editor/src/FooterEngagementEditorPanel.d.ts +17 -0
  55. package/dist/_dts/content-editor/src/footerComposer.d.ts +3 -0
  56. package/dist/_dts/content-editor/src/footerEngagementDraft.d.ts +57 -0
  57. package/dist/_dts/content-editor/src/footerEngagementEditor.d.ts +11 -0
  58. package/dist/_dts/content-editor/src/footerPreviewRuntime.d.ts +13 -0
  59. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  60. package/dist/_dts/content-editor/src/ui/blockValidationManifestRegistry.d.ts +17 -0
  61. package/dist/_dts/content-editor/src/ui/blockValidationView.d.ts +1 -1
  62. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +4 -0
  63. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +35 -0
  64. package/dist/_dts/core/src/footer-arrangement.d.ts +2 -0
  65. package/dist/_dts/core/src/footer-composition-types.d.ts +118 -0
  66. package/dist/_dts/core/src/footer-composition.d.ts +7 -116
  67. package/dist/_dts/core/src/footer-engagement.d.ts +30 -0
  68. package/dist/_dts/core/src/index.d.ts +4 -0
  69. package/dist/_dts/core/src/newsletter-signup-destination.d.ts +38 -0
  70. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +200 -159
  71. package/dist/_dts/db/src/index.d.ts +1 -0
  72. package/dist/_dts/db/src/schemas/forms.d.ts +72 -2
  73. package/dist/_dts/db/src/schemas/standard-contact.d.ts +114 -0
  74. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +4 -0
  75. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockValidationManifests.d.ts +26 -0
  76. package/dist/_dts/editor-blocks/src/widgets/rich-text/imageInsert.d.ts +3 -3
  77. package/dist/_dts/media-editor/src/MediaEditor.d.ts +2 -2
  78. package/dist/_dts/media-editor/src/context.d.ts +1 -2
  79. package/dist/_dts/media-editor/src/index.d.ts +3 -1
  80. package/dist/_dts/media-editor/src/mediaSelection.d.ts +32 -0
  81. package/dist/_dts/media-editor/src/types.d.ts +3 -1
  82. package/dist/_dts/media-editor/src/useMediaSelection.d.ts +26 -0
  83. package/dist/_dts/preview-next/src/client/blocks/previewBatchLoaderParams.d.ts +6 -0
  84. package/dist/_dts/preview-next/src/client/index.d.ts +2 -0
  85. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -5
  86. package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -5
  87. package/dist/_dts/preview-next/src/client/preview/HeaderMenuControls.d.ts +12 -0
  88. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -5
  89. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -4
  90. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +13 -2
  91. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +8 -4
  92. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -49
  93. package/dist/_dts/preview-next/src/client/preview/headerInteractionPaletteSurfaceState.d.ts +8 -0
  94. package/dist/_dts/preview-next/src/client/preview/previewThemeRoles.d.ts +15 -0
  95. package/dist/_dts/preview-next/src/client/preview/siteChromeCustomizeTypes.d.ts +54 -0
  96. package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +13 -3
  97. package/dist/_dts/preview-next/src/client/preview/siteChromeNavQuickControlHistory.d.ts +3 -0
  98. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +6 -3
  99. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +6 -5
  100. package/dist/_dts/sdk/src/cli/commands/push/execute/footer.d.ts +9 -0
  101. package/dist/_dts/sdk/src/cli/content/footerFile.d.ts +10 -0
  102. package/dist/_dts/sdk/src/cli/content/reader.d.ts +3 -5
  103. package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +15 -3
  104. package/dist/_dts/sdk/src/client/combineAbortSignals.d.ts +2 -0
  105. package/dist/_dts/sdk/src/client/management/types.d.ts +6 -15
  106. package/dist/_dts/sdk/src/client/types.d.ts +10 -2
  107. package/dist/_dts/sdk/src/client/wholeSeriesReadOperations.d.ts +11 -0
  108. package/dist/_dts/sdk/src/config/types.d.ts +1 -1
  109. package/dist/_dts/sdk/src/config/validation.d.ts +3 -0
  110. package/dist/_dts/sdk/src/contracts/event-registration-content.d.ts +16 -0
  111. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +4 -15
  112. package/dist/_dts/sdk/src/public-api/contracts.d.ts +4 -18
  113. package/dist/_dts/sdk/src/public-api/teamMemberContracts.d.ts +17 -0
  114. package/dist/_dts/sdk/src/public-api/wholeSeriesContracts.d.ts +2 -0
  115. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +7 -0
  116. package/dist/_dts/sdk/src/rendering/index.d.ts +5 -3
  117. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -2
  118. package/dist/_dts/sdk/src/rendering/mediaAssets.d.ts +8 -2
  119. package/dist/_dts/sdk/src/version.d.ts +1 -1
  120. package/dist/_dts/site-commands/src/commandContract.d.ts +8 -1
  121. package/dist/_dts/site-commands/src/commands.d.ts +16 -2
  122. package/dist/_dts/theme-core/src/buttons/effects/presets/background.d.ts +1 -1
  123. package/dist/_dts/theme-core/src/buttons/styles/registry.d.ts +0 -18
  124. package/dist/_dts/theme-core/src/buttons/types.d.ts +1 -3
  125. package/dist/_dts/theme-core/src/header/containerSchema.d.ts +20 -0
  126. package/dist/_dts/theme-core/src/header/generateHeaderCss.d.ts +1 -1
  127. package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +14 -0
  128. package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +3 -0
  129. package/dist/_dts/theme-core/src/header/paintTargets.d.ts +31 -0
  130. package/dist/_dts/theme-core/src/header/scrollTreatment.d.ts +11 -0
  131. package/dist/_dts/theme-core/src/header/surfaceRules.d.ts +8 -0
  132. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +15 -0
  133. package/dist/_dts/theme-core/src/palette/colors.d.ts +1 -1
  134. package/dist/_dts/theme-core/src/schema.d.ts +67 -19
  135. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +3 -51
  136. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +4 -11
  137. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +3 -51
  138. package/dist/_dts/theme-core/src/site-styles/headerInteractionPalette.d.ts +32 -0
  139. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +19 -106
  140. package/dist/_dts/theme-core/src/site-styles/headerOpeningForeground.d.ts +22 -0
  141. package/dist/_dts/theme-core/src/site-styles/headerOpeningSection.d.ts +2 -0
  142. package/dist/_dts/theme-core/src/site-styles/headerStyleParts.d.ts +4 -0
  143. package/dist/_dts/theme-core/src/site-styles/index.d.ts +3 -0
  144. package/dist/_dts/theme-core/src/site-styles/lookOptionGroups.d.ts +24 -0
  145. package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +1 -2
  146. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +4 -22
  147. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorOptions.d.ts +21 -0
  148. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
  149. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +4 -1
  150. package/dist/cli/index.mjs +6272 -5706
  151. package/dist/client/{courseRegistration-BcemLAdN.mjs → CourseRegistrationWizard-xRmA7REV.mjs} +329 -49
  152. package/dist/client/{DiscountCodeDisclosure-DS0AuFWW.mjs → DiscountCodeDisclosure-B9vriL5C.mjs} +1 -1
  153. package/dist/client/{EventCombined.client-DtMxLr7q.mjs → EventCombined.client-BgVnVTlz.mjs} +2 -2
  154. package/dist/client/{EventListing.client-BdLSRNg1.mjs → EventListing.client-CqdsO7jO.mjs} +2 -2
  155. package/dist/client/{LeafletStaticMap-BrpC6vsT.mjs → LeafletStaticMap-CKPxot9M.mjs} +1 -1
  156. package/dist/client/{StepIndicator-CBYPFVoy.mjs → StepIndicator-DGCYuBJ1.mjs} +2 -2
  157. package/dist/client/{accordion-BqqwPJWM.mjs → accordion-BfN5Eqd-.mjs} +1 -1
  158. package/dist/client/{bookingForm-SneP3yxC.mjs → bookingForm-DOvCpBFP.mjs} +5 -5
  159. package/dist/client/bookings.mjs +126 -23
  160. package/dist/client/{carousel-BTIR9L3I.mjs → carousel-DPNmiH0f.mjs} +1 -1
  161. package/dist/client/{cart-bqiqd8SX.mjs → cart--egVXlrR.mjs} +3 -3
  162. package/dist/client/{checkout-WbTFV5v4.mjs → checkout-DywWtMcq.mjs} +3 -3
  163. package/dist/client/client.mjs +6111 -5794
  164. package/dist/client/courseRegistration-Dk9qFVwt.mjs +46 -0
  165. package/dist/client/{eventCalendar-CsxIw0V_.mjs → eventCalendar-Bkz2HjlS.mjs} +4 -4
  166. package/dist/client/{eventCombined-B6XMoHfa.mjs → eventCombined-D4kipYWg.mjs} +2 -2
  167. package/dist/client/{eventDetails-BJaoPPfo.mjs → eventDetails-Dz_5ix2Q.mjs} +56 -35
  168. package/dist/client/{eventListing-DgwdYHRT.mjs → eventListing-D0vm-zST.mjs} +2 -2
  169. package/dist/client/{eventRegistration-C0O3folu.mjs → eventRegistration-Cw1E4Q4p.mjs} +58 -6
  170. package/dist/client/{form-Bk9txGFt.mjs → form-C2Zf1n3K.mjs} +1 -1
  171. package/dist/client/{headerSection-yIBt0yTv.mjs → headerSection-CP05gzdc.mjs} +2 -2
  172. package/dist/client/hooks.mjs +1013 -935
  173. package/dist/client/{locationMap-C-3KIpv-.mjs → locationMap-Cl3x9PYJ.mjs} +2 -2
  174. package/dist/client/{newsletterForm-CzB8g8h2.mjs → newsletterForm-DyEJoClm.mjs} +26 -20
  175. package/dist/client/{pricing-C1QeDes_.mjs → pricing-DGuNR1W4.mjs} +1 -1
  176. package/dist/client/{productDetail-w7SBp5uc.mjs → productDetail-Cq-HrGew.mjs} +3 -3
  177. package/dist/client/{productList-D0tGKHGf.mjs → productList-DbB3jwqd.mjs} +3 -3
  178. package/dist/client/{propsDecoder-Bcin2DB3.mjs → propsDecoder-CiTuhUwY.mjs} +257 -142
  179. package/dist/client/rendering/client.mjs +1342 -1122
  180. package/dist/client/rendering/islands.mjs +18 -18
  181. package/dist/client/rendering.mjs +6622 -6321
  182. package/dist/client/{scrollToBlock-h-o_STf_.mjs → scrollToBlock-CShkRqab.mjs} +1 -1
  183. package/dist/client/{shop-BGzmL8O_.mjs → shop-Cu4Ib-ZA.mjs} +5 -5
  184. package/dist/client/{shop-commerce-lX8QxjX-.mjs → shop-commerce-BzpsOdh7.mjs} +4 -4
  185. package/dist/client/{shop-commerce-store-CEurARtu.mjs → shop-commerce-store-DaE7Fhj8.mjs} +1 -1
  186. package/dist/client/{shopShared-DXxH8xxw.mjs → shopShared-cF0c20vB.mjs} +2 -2
  187. package/dist/client/{useEventFilters-B591g9vd.mjs → useEventFilters-QZ3HMgaJ.mjs} +2 -2
  188. package/dist/client/{usePolling-BvnChV4m.mjs → usePolling-BKf0GcE-.mjs} +2 -2
  189. package/dist/preview-next/before-render.mjs +1 -1
  190. package/dist/preview-next/client/runtime.mjs +4 -4
  191. package/dist/preview-next/middleware.mjs +1 -1
  192. package/dist/{previewAuthStore-Dev9CdG9.mjs → previewAuthStore-BesgU5Xu.mjs} +1 -1
  193. package/dist/{sdk-runtime-M__i3Jce.mjs → sdk-runtime-Cn_QSCOg.mjs} +2 -2
  194. package/dist/{separator-VSlnI9bc.mjs → separator-CEoGABRc.mjs} +1 -1
  195. package/dist/server/components.mjs +1750 -1614
  196. package/dist/server/config-validation.mjs +1010 -935
  197. package/dist/server/config.mjs +1010 -935
  198. package/dist/server/data.mjs +1013 -935
  199. package/dist/server/index.mjs +40 -16
  200. package/dist/server/next.mjs +1790 -1632
  201. package/dist/server/page-converter.mjs +1012 -938
  202. package/dist/server/prebuild.mjs +1 -1
  203. package/dist/server/rendering/server.mjs +1746 -1601
  204. package/dist/server/rendering.mjs +1759 -1615
  205. package/dist/server/routing.mjs +1123 -975
  206. package/dist/server/server.mjs +1053 -951
  207. package/dist/server/theme-bridge.mjs +151 -118
  208. package/dist/server/theme.mjs +111 -23
  209. package/package.json +1 -1
  210. package/dist/SdkPreviewModeRuntime-CvW1vdQ4.mjs +0 -39468
  211. package/dist/_dts/editor-blocks/src/widgets/rich-text/ensureRichTextImageAssetIdentifier.d.ts +0 -8
  212. package/dist/client/MagicLinkForm-Bt3IuLMy.mjs +0 -327
@@ -454,6 +454,11 @@ function addLocalScheduleDays(date, days) {
454
454
  };
455
455
  }
456
456
  //#endregion
457
+ //#region ../core/src/newsletter-signup-destination.ts
458
+ function parseNewsletterSignupDestinationProvider(value) {
459
+ return value === "riverbank" || value === "mailchimp" ? value : null;
460
+ }
461
+ //#endregion
457
462
  //#region ../blocks/src/contracts/runtime.ts
458
463
  function decodeSuccess(value) {
459
464
  return {
@@ -1448,7 +1453,7 @@ const publicWholeSeriesOfferingSchema = z$1.object({
1448
1453
  });
1449
1454
  /** Deployed course blocks retain this schema alias for stored content. */
1450
1455
  const publicCourseSchema = publicWholeSeriesOfferingSchema;
1451
- z$1.array(publicWholeSeriesOfferingSchema);
1456
+ const publicCoursesArraySchema = z$1.array(publicWholeSeriesOfferingSchema);
1452
1457
  //#endregion
1453
1458
  //#region ../blocks/src/system/constants/events.ts
1454
1459
  const eventCalendarDisplayModeValues = [
@@ -1576,8 +1581,6 @@ const VARIANT_ROLES = [
1576
1581
  "secondary",
1577
1582
  "outline",
1578
1583
  "ghost",
1579
- "link",
1580
- "tertiary",
1581
1584
  "accent"
1582
1585
  ];
1583
1586
  /**
@@ -1586,7 +1589,7 @@ const VARIANT_ROLES = [
1586
1589
  * IDs become class selectors, so keep the contract deliberately narrower than
1587
1590
  * an arbitrary string and shared with every authoring/runtime boundary.
1588
1591
  */
1589
- const buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only");
1592
+ const buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only").refine((value) => value !== "link" && value !== "tertiary", { message: "Retired button role IDs are not valid variant IDs" });
1590
1593
  function parseOpaqueButtonColourToken(value) {
1591
1594
  const token = parseThemeColorToken(value);
1592
1595
  if (token === null) return null;
@@ -2101,7 +2104,7 @@ function canonicalPaletteHashInput(colors, mode) {
2101
2104
  return `${mode}|${paletteColorFingerprint(colors)}`;
2102
2105
  }
2103
2106
  /**
2104
- * The shared TypeScript/SQL protocol. Do not reorder roles: the order comes
2107
+ * Stable curated-catalogue identity. Do not reorder roles: the order comes
2105
2108
  * from PALETTE_TOKEN_NAMES through canonicalPaletteHashInput.
2106
2109
  */
2107
2110
  function paletteValueKey(colors, mode) {
@@ -3203,6 +3206,60 @@ function resolveOnColorForThemeToken(token) {
3203
3206
  if (!shade) return rgbColorValue(`on${normalizedRole.charAt(0).toUpperCase() + normalizedRole.slice(1)}`);
3204
3207
  return shade <= 400 ? "#000000" : "#FFFFFF";
3205
3208
  }
3209
+ const BREAKPOINT_LG = 1024;
3210
+ const BREAKPOINT_XL = 1280;
3211
+ const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
3212
+ function mqUp(px) {
3213
+ return `(min-width: ${px}px)`;
3214
+ }
3215
+ function mqDown(px) {
3216
+ return `(max-width: ${px}px)`;
3217
+ }
3218
+ function mqBetween(minPx, maxPx) {
3219
+ return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
3220
+ }
3221
+ mqUp(640);
3222
+ mqUp(768);
3223
+ mqUp(BREAKPOINT_LG);
3224
+ mqUp(BREAKPOINT_XL);
3225
+ mqDown(639);
3226
+ mqDown(767);
3227
+ mqDown(BREAKPOINT_LG_DOWN);
3228
+ mqBetween(640, BREAKPOINT_LG_DOWN);
3229
+ mqDown(640);
3230
+ mqDown(768);
3231
+ //#endregion
3232
+ //#region ../theme-core/src/header/scrollTreatment.ts
3233
+ const headerScrollTreatmentSchema = z$1.discriminatedUnion("kind", [z$1.object({
3234
+ kind: z$1.literal("contrast-glass"),
3235
+ backgroundTone: z$1.enum(["light", "dark"])
3236
+ })]).optional();
3237
+ //#endregion
3238
+ //#region ../theme-core/src/header/containerSchema.ts
3239
+ const headerContainerSchema = z$1.object({
3240
+ rounded: z$1.enum([
3241
+ "none",
3242
+ "sm",
3243
+ "md",
3244
+ "lg",
3245
+ "xl",
3246
+ "2xl"
3247
+ ]).default("xl"),
3248
+ border: z$1.boolean().default(true),
3249
+ shadow: z$1.boolean().default(true),
3250
+ padding: z$1.enum([
3251
+ "sm",
3252
+ "md",
3253
+ "lg"
3254
+ ]).default("md"),
3255
+ tint: z$1.string().nullable().optional(),
3256
+ opacity: z$1.number().min(0).max(1).default(.12)
3257
+ }).optional();
3258
+ const headerInteractionPaletteSchema = z$1.enum([
3259
+ "primary",
3260
+ "secondary",
3261
+ "accent"
3262
+ ]);
3206
3263
  //#endregion
3207
3264
  //#region ../theme-core/src/schema.ts
3208
3265
  const axesSchema = z$1.object({
@@ -3612,25 +3669,6 @@ const navFontWeight = z$1.enum([
3612
3669
  ]);
3613
3670
  const headerMaxWidth = z$1.enum(["container", "full"]);
3614
3671
  const headerBarFrame = z$1.enum(["full-bleed", "inset-shell"]);
3615
- const headerContainerSchema = z$1.object({
3616
- rounded: z$1.enum([
3617
- "none",
3618
- "sm",
3619
- "md",
3620
- "lg",
3621
- "xl",
3622
- "2xl"
3623
- ]).default("xl"),
3624
- border: z$1.boolean().default(true),
3625
- shadow: z$1.boolean().default(true),
3626
- padding: z$1.enum([
3627
- "sm",
3628
- "md",
3629
- "lg"
3630
- ]).default("md"),
3631
- tint: z$1.string().nullable().optional(),
3632
- opacity: z$1.number().min(0).max(1).default(.12)
3633
- }).optional();
3634
3672
  const headerBorderSchema = componentBorderSchema.extend({ position: z$1.enum([
3635
3673
  "bottom",
3636
3674
  "top",
@@ -3757,6 +3795,7 @@ const headerSchema = z$1.object({
3757
3795
  shrinkOnScroll: z$1.boolean(),
3758
3796
  maxWidth: headerMaxWidth,
3759
3797
  barFrame: headerBarFrame.optional(),
3798
+ scrollTreatment: headerScrollTreatmentSchema,
3760
3799
  logoOverride: mediaSchema$1.nullable().optional(),
3761
3800
  background: headerBackgroundSchema.default({
3762
3801
  type: "color",
@@ -3769,6 +3808,7 @@ const headerSchema = z$1.object({
3769
3808
  navFontRole: z$1.enum(["body", "heading"]).optional(),
3770
3809
  navTypography: z$1.enum(["body", "heading"]).optional(),
3771
3810
  navTextSize: navLinkStyleSchema.shape.textSize,
3811
+ interactionPalette: headerInteractionPaletteSchema.optional(),
3772
3812
  navPlacement: z$1.enum(["end", "center"]).optional(),
3773
3813
  container: headerContainerSchema,
3774
3814
  border: headerBorderSchema,
@@ -4099,6 +4139,59 @@ function themeButtonClassName(spec) {
4099
4139
  spec.extraClassName
4100
4140
  ].filter(Boolean).join(" ");
4101
4141
  }
4142
+ shadeBackgroundEffect({
4143
+ id: "darken-background",
4144
+ name: "Darken on Hover",
4145
+ description: "Darkens the background color on hover",
4146
+ label: "Darken Amount (shade step)",
4147
+ shadeDirection: 1
4148
+ });
4149
+ shadeBackgroundEffect({
4150
+ id: "lighten-background",
4151
+ name: "Lighten on Hover",
4152
+ description: "Lightens the background color on hover",
4153
+ label: "Lighten Amount (shade step)",
4154
+ shadeDirection: -1
4155
+ });
4156
+ function shadeBackgroundEffect(config) {
4157
+ return {
4158
+ id: config.id,
4159
+ name: config.name,
4160
+ description: config.description,
4161
+ category: "background",
4162
+ pseudoElement: "none",
4163
+ applicableTo: ["button"],
4164
+ customizableOption: {
4165
+ name: "amount",
4166
+ type: "select",
4167
+ label: config.label,
4168
+ default: 100,
4169
+ options: [
4170
+ 0,
4171
+ 100,
4172
+ 200,
4173
+ 300,
4174
+ 400,
4175
+ 500,
4176
+ 600,
4177
+ 700,
4178
+ 800,
4179
+ 900
4180
+ ]
4181
+ },
4182
+ isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
4183
+ generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
4184
+ if (buttonConfig.background.type !== "solid") return "";
4185
+ const amount = (options.amount || 100) * config.shadeDirection;
4186
+ const baseToken = buttonConfig.background.colorToken ?? "primary-500";
4187
+ return `
4188
+ :where([data-theme-scope="${themeId}"]) .${variantId}:hover {
4189
+ background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
4190
+ }
4191
+ `;
4192
+ }
4193
+ };
4194
+ }
4102
4195
  buttonSizeNameSchema.options;
4103
4196
  //#endregion
4104
4197
  //#region ../theme-core/src/buttons/styles/domain.ts
@@ -5727,15 +5820,6 @@ function presetCategory(recipe) {
5727
5820
  */
5728
5821
  const BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
5729
5822
  const blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
5730
- /**
5731
- * Temporary rollout boundary for persisted content written before issue #1220.
5732
- * Authoring remains strict through `blockButtonRoleSchema`; this parser exists
5733
- * only until the post-deploy role rewrite has been audited in production.
5734
- */
5735
- function canonicalizePersistedBlockButtonRole(value) {
5736
- return value === "link" || value === "tertiary" ? "ghost" : value;
5737
- }
5738
- const persistedBlockButtonRoleSchema = z$1.preprocess((value) => typeof value === "string" ? canonicalizePersistedBlockButtonRole(value) : value, blockButtonRoleSchema);
5739
5823
  const BLOCK_BUTTON_ROLE_LABELS = {
5740
5824
  primary: "Primary",
5741
5825
  secondary: "Secondary",
@@ -5751,7 +5835,7 @@ BLOCK_BUTTON_ROLES.map((value) => ({
5751
5835
  //#region ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
5752
5836
  const previewStageSchema = z$1.enum(["preview", "published"]);
5753
5837
  const registrationButtonVariantSchema = blockButtonRoleSchema;
5754
- const eventButtonVariantSchema = persistedBlockButtonRoleSchema;
5838
+ const eventButtonVariantSchema = blockButtonRoleSchema;
5755
5839
  const eventLayoutSchema = z$1.enum(eventCalendarListLayoutValues);
5756
5840
  const eventCalendarDisplayModeSchema = z$1.enum(eventCalendarDisplayModeValues);
5757
5841
  const eventCalendarDefaultViewSchema = z$1.enum(eventCalendarDefaultViewValues);
@@ -5976,6 +6060,12 @@ const mediaBaseSchema = z.object({
5976
6060
  poster: mediaPosterSchema.optional(),
5977
6061
  transform: transformSchema.optional()
5978
6062
  });
6063
+ /**
6064
+ * Canonical identifier carried by media values that are safe to persist.
6065
+ * Parsing trims boundary input so downstream writers cannot retain whitespace-only
6066
+ * identifiers or independently disagree about normalization.
6067
+ */
6068
+ const mediaIdentifierSchema = z.string().trim().min(1).brand();
5979
6069
  const imageMediaSchema = mediaBaseSchema.extend({ type: z.literal("image") });
5980
6070
  const videoMediaSchema = mediaBaseSchema.extend({ type: z.literal("video") });
5981
6071
  const audioMediaSchema = mediaBaseSchema.extend({ type: z.literal("audio") });
@@ -5990,6 +6080,15 @@ const mediaSchema = z.discriminatedUnion("type", [
5990
6080
  spreadsheetMediaSchema,
5991
6081
  archiveMediaSchema
5992
6082
  ]);
6083
+ const persistableMediaBaseSchema = mediaBaseSchema.extend({ identifier: mediaIdentifierSchema });
6084
+ z.discriminatedUnion("type", [
6085
+ persistableMediaBaseSchema.extend({ type: z.literal("image") }),
6086
+ persistableMediaBaseSchema.extend({ type: z.literal("video") }),
6087
+ persistableMediaBaseSchema.extend({ type: z.literal("audio") }),
6088
+ persistableMediaBaseSchema.extend({ type: z.literal("document") }),
6089
+ persistableMediaBaseSchema.extend({ type: z.literal("spreadsheet") }),
6090
+ persistableMediaBaseSchema.extend({ type: z.literal("archive") })
6091
+ ]);
5993
6092
  //#endregion
5994
6093
  //#region ../blocks/src/lib/typeGuards.ts
5995
6094
  /**
@@ -7870,28 +7969,6 @@ function sectionContainer(children, opts) {
7870
7969
  ...align ? { align } : {}
7871
7970
  }, children);
7872
7971
  }
7873
- const BREAKPOINT_LG = 1024;
7874
- const BREAKPOINT_XL = 1280;
7875
- const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
7876
- function mqUp(px) {
7877
- return `(min-width: ${px}px)`;
7878
- }
7879
- function mqDown(px) {
7880
- return `(max-width: ${px}px)`;
7881
- }
7882
- function mqBetween(minPx, maxPx) {
7883
- return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
7884
- }
7885
- mqUp(640);
7886
- mqUp(768);
7887
- mqUp(BREAKPOINT_LG);
7888
- mqUp(BREAKPOINT_XL);
7889
- mqDown(639);
7890
- mqDown(767);
7891
- mqDown(BREAKPOINT_LG_DOWN);
7892
- mqBetween(640, BREAKPOINT_LG_DOWN);
7893
- mqDown(640);
7894
- mqDown(768);
7895
7972
  //#endregion
7896
7973
  //#region ../blocks/src/system/layout/repeaterGrid.ts
7897
7974
  const DEFAULT_REPEATER_GRID_SPAN_FIELD_ID = "gridSpan";
@@ -9619,6 +9696,22 @@ function normalizeBlockLayout(layout) {
9619
9696
  function deriveComponentName(id) {
9620
9697
  return `${id.replace(/^block\./, "").replace(/-/g, ".").replace(/([a-z])([A-Z])/g, "$1.$2").toLowerCase()}.default`;
9621
9698
  }
9699
+ //#endregion
9700
+ //#region ../blocks/src/system/blocks/event-registration.shared.ts
9701
+ /**
9702
+ * Flat occurrence context passed from `PageRenderer.$root.occurrenceContext`.
9703
+ * Kept in a shared module so the block definition and runtime contracts can
9704
+ * depend on the same schema without creating an initialization cycle.
9705
+ */
9706
+ const occurrenceContextSchema = z$1.object({
9707
+ id: z$1.string(),
9708
+ seriesId: z$1.string(),
9709
+ startsAt: z$1.string(),
9710
+ endsAt: z$1.string(),
9711
+ timeZone: z$1.string(),
9712
+ capacityOverride: z$1.number().nullable().optional(),
9713
+ overrides: z$1.record(z$1.string(), z$1.unknown()).nullable().optional()
9714
+ }).nullable();
9622
9715
  createBlockManifest({
9623
9716
  id: "block.event-details",
9624
9717
  version: "1.0.0",
@@ -9773,15 +9866,6 @@ createBlockManifest({
9773
9866
  })], { gap: "lg" })
9774
9867
  })]
9775
9868
  });
9776
- const occurrenceContextSchema$1 = z$1.object({
9777
- id: z$1.string(),
9778
- seriesId: z$1.string(),
9779
- startsAt: z$1.string(),
9780
- endsAt: z$1.string(),
9781
- timeZone: z$1.string(),
9782
- capacityOverride: z$1.number().nullable().optional(),
9783
- overrides: z$1.record(z$1.string(), z$1.unknown()).nullable().optional()
9784
- }).nullable();
9785
9869
  const eventAutoApplyDiscountPreviewBaseSchema = z$1.object({
9786
9870
  id: z$1.string(),
9787
9871
  publicLabel: z$1.string(),
@@ -9802,7 +9886,7 @@ z$1.object({
9802
9886
  sitePasses: publicPassProductCollectionSchema,
9803
9887
  siteMemberships: publicMembershipProductCollectionSchema,
9804
9888
  autoApplyDiscount: eventAutoApplyDiscountPreviewSchema.nullable().optional().default(null)
9805
- }).optional(), occurrenceContextSchema$1.optional();
9889
+ }).optional(), occurrenceContextSchema.optional();
9806
9890
  //#endregion
9807
9891
  //#region ../blocks/src/contracts/non-block-islands.ts
9808
9892
  const accordionIslandSchema = z$1.object({
@@ -10041,22 +10125,6 @@ const eventCombinedInteractiveIslandPropsCodec = createInteractiveIslandCodec({
10041
10125
  })
10042
10126
  });
10043
10127
  //#endregion
10044
- //#region ../blocks/src/system/blocks/event-registration.shared.ts
10045
- /**
10046
- * Flat occurrence context passed from `PageRenderer.$root.occurrenceContext`.
10047
- * Kept in a shared module so the block definition and runtime contracts can
10048
- * depend on the same schema without creating an initialization cycle.
10049
- */
10050
- const occurrenceContextSchema = z$1.object({
10051
- id: z$1.string(),
10052
- seriesId: z$1.string(),
10053
- startsAt: z$1.string(),
10054
- endsAt: z$1.string(),
10055
- timeZone: z$1.string(),
10056
- capacityOverride: z$1.number().nullable().optional(),
10057
- overrides: z$1.record(z$1.string(), z$1.unknown()).nullable().optional()
10058
- }).nullable();
10059
- //#endregion
10060
10128
  //#region ../blocks/src/system/runtime/nodes/event-registration/wizardSteps.ts
10061
10129
  /**
10062
10130
  * Steps that are part of the main wizard and should show the step indicator
@@ -10173,28 +10241,37 @@ const EVENT_REGISTRATION_SHELL_STEP_LABELS = [
10173
10241
  "Payment"
10174
10242
  ];
10175
10243
  const eventRegistrationPublicEventSchema = z$1.preprocess(normalizeEventRegistrationEventInput, publicEventSchema);
10176
- const eventRegistrationSourceSchema = z$1.object({
10177
- siteId: z$1.string().optional(),
10178
- apiBaseUrl: z$1.string().optional(),
10179
- portalToken: z$1.string().nullable().optional(),
10180
- previewToken: z$1.string().nullable().optional(),
10244
+ const eventRegistrationHydrationSchemaShape = {
10181
10245
  occurrenceContext: occurrenceContextSchema.optional(),
10182
10246
  subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
10183
10247
  events: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
10184
- className: z$1.string().nullable().optional(),
10185
- buttonText: z$1.string().nullable().optional(),
10186
- maxTickets: z$1.string().nullable().optional(),
10248
+ wholeSeriesOfferings: publicCoursesArraySchema.nullable().optional(),
10249
+ wholeSeriesOffering: publicCourseSchema.nullable().optional(),
10250
+ maxTickets: z$1.string().optional(),
10187
10251
  showVenue: z$1.boolean().optional(),
10188
10252
  showCapacity: z$1.boolean().optional(),
10253
+ showSessions: z$1.boolean().optional(),
10254
+ showPrice: z$1.boolean().optional(),
10189
10255
  successMessage: z$1.string().optional(),
10190
10256
  waitlistMessage: z$1.string().optional(),
10257
+ membershipMessage: z$1.string().optional(),
10191
10258
  buttonVariant: registrationButtonVariantSchema.optional(),
10192
10259
  overlayEnabled: z$1.boolean().optional(),
10193
10260
  spamProtectionEnabled: z$1.boolean().optional(),
10194
- stage: previewStageSchema.optional(),
10195
10261
  supportEmail: z$1.string().optional(),
10196
10262
  sitePasses: publicPassProductCollectionSchema.nullable().optional(),
10197
10263
  siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
10264
+ };
10265
+ const eventRegistrationSourceSchema = z$1.object({
10266
+ siteId: z$1.string().optional(),
10267
+ apiBaseUrl: z$1.string().optional(),
10268
+ portalToken: z$1.string().nullable().optional(),
10269
+ previewToken: z$1.string().nullable().optional(),
10270
+ ...eventRegistrationHydrationSchemaShape,
10271
+ className: z$1.string().nullable().optional(),
10272
+ buttonText: z$1.string().nullable().optional(),
10273
+ maxTickets: z$1.string().nullable().optional(),
10274
+ stage: previewStageSchema.optional()
10198
10275
  });
10199
10276
  const eventRegistrationDisplaySchema = z$1.object({
10200
10277
  kind: z$1.literal("event-registration"),
@@ -10205,22 +10282,7 @@ const eventRegistrationDisplaySchema = z$1.object({
10205
10282
  stepLabels: z$1.array(z$1.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
10206
10283
  summaryButtonText: z$1.string()
10207
10284
  });
10208
- const eventRegistrationHydrationSchema = z$1.object({
10209
- occurrenceContext: occurrenceContextSchema.optional(),
10210
- subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
10211
- events: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
10212
- maxTickets: z$1.string().optional(),
10213
- showVenue: z$1.boolean().optional(),
10214
- showCapacity: z$1.boolean().optional(),
10215
- successMessage: z$1.string().optional(),
10216
- waitlistMessage: z$1.string().optional(),
10217
- buttonVariant: registrationButtonVariantSchema.optional(),
10218
- overlayEnabled: z$1.boolean().optional(),
10219
- spamProtectionEnabled: z$1.boolean().optional(),
10220
- supportEmail: z$1.string().optional(),
10221
- sitePasses: publicPassProductCollectionSchema.nullable().optional(),
10222
- siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
10223
- });
10285
+ const eventRegistrationHydrationSchema = z$1.object(eventRegistrationHydrationSchemaShape);
10224
10286
  const eventRegistrationRenderSchema = z$1.object({
10225
10287
  display: eventRegistrationDisplaySchema,
10226
10288
  hydration: eventRegistrationHydrationSchema
@@ -10301,11 +10363,16 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
10301
10363
  occurrenceContext: source.occurrenceContext ?? null,
10302
10364
  subject: source.subject ?? null,
10303
10365
  events: source.events ?? null,
10366
+ wholeSeriesOfferings: source.wholeSeriesOfferings ?? null,
10367
+ wholeSeriesOffering: source.wholeSeriesOffering ?? null,
10304
10368
  maxTickets: source.maxTickets ?? void 0,
10305
10369
  showVenue: source.showVenue,
10306
10370
  showCapacity: source.showCapacity,
10371
+ showSessions: source.showSessions,
10372
+ showPrice: source.showPrice,
10307
10373
  successMessage: source.successMessage,
10308
10374
  waitlistMessage: source.waitlistMessage,
10375
+ membershipMessage: source.membershipMessage,
10309
10376
  buttonVariant: source.buttonVariant,
10310
10377
  overlayEnabled: source.overlayEnabled,
10311
10378
  spamProtectionEnabled: source.spamProtectionEnabled,
@@ -10583,9 +10650,6 @@ function parseSignedNewsletterDestinationRef(value) {
10583
10650
  const trimmed = parseTrimmedString(value);
10584
10651
  return trimmed && SIGNED_DESTINATION_REF_PATTERN.test(trimmed) ? trimmed : null;
10585
10652
  }
10586
- function parseNewsletterSignupDestinationProvider(value) {
10587
- return value === "riverbank" || value === "mailchimp" ? value : null;
10588
- }
10589
10653
  function buildNewsletterSignupBlockRef(blockId) {
10590
10654
  const parsed = parseNewsletterSignupBlockId(blockId);
10591
10655
  return parsed ? {
@@ -10732,19 +10796,9 @@ const newsletterFieldSchema = z$1.object({
10732
10796
  });
10733
10797
  const newsletterSignupBlockIdSchema = z$1.string().trim().min(1).transform(parseRequiredNewsletterSignupBlockId);
10734
10798
  const signedNewsletterDestinationRefSchema = z$1.string().trim().min(1).transform(parseRequiredSignedNewsletterDestinationRef);
10735
- const newsletterPublicDestinationRefSchema = z$1.discriminatedUnion("tag", [z$1.object({
10736
- tag: z$1.literal("block_ref"),
10737
- blockId: newsletterSignupBlockIdSchema
10738
- }), z$1.object({
10739
- tag: z$1.literal("signed_destination_ref"),
10740
- token: signedNewsletterDestinationRefSchema
10741
- })]);
10742
- const newsletterSourceSchema = z$1.object({
10743
- blockId: z$1.string().nullable().optional(),
10799
+ const newsletterSourceCommonSchema = z$1.object({
10744
10800
  siteId: z$1.string().optional(),
10745
10801
  apiBaseUrl: z$1.string().optional(),
10746
- listId: z$1.string().nullable().optional(),
10747
- destinationProvider: newsletterDestinationProviderSchema.nullable().optional(),
10748
10802
  preset: newsletterPresetSchema.optional(),
10749
10803
  includePhone: z$1.boolean().optional(),
10750
10804
  buttonLabel: z$1.string().nullable().optional(),
@@ -10755,6 +10809,25 @@ const newsletterSourceSchema = z$1.object({
10755
10809
  spamProtectionEnabled: z$1.boolean().optional(),
10756
10810
  className: z$1.string().nullable().optional()
10757
10811
  });
10812
+ const newsletterSourceSchema = z$1.discriminatedUnion("source", [
10813
+ newsletterSourceCommonSchema.extend({
10814
+ source: z$1.literal("block"),
10815
+ blockId: z$1.string().nullable().optional(),
10816
+ listId: z$1.string().nullable().optional(),
10817
+ destinationProvider: newsletterDestinationProviderSchema.nullable().optional()
10818
+ }),
10819
+ newsletterSourceCommonSchema.extend({
10820
+ source: z$1.literal("signed-footer"),
10821
+ destinationRef: z$1.object({
10822
+ tag: z$1.literal("signed_destination_ref"),
10823
+ token: signedNewsletterDestinationRefSchema
10824
+ })
10825
+ }),
10826
+ newsletterSourceCommonSchema.extend({
10827
+ source: z$1.literal("legacy-direct-list"),
10828
+ listId: z$1.string().nullable()
10829
+ })
10830
+ ]);
10758
10831
  const newsletterDisplaySchema = z$1.object({
10759
10832
  kind: z$1.literal("newsletter-form"),
10760
10833
  className: z$1.string().nullable(),
@@ -10765,8 +10838,26 @@ const newsletterDisplaySchema = z$1.object({
10765
10838
  fields: z$1.array(newsletterFieldSchema)
10766
10839
  });
10767
10840
  const newsletterHydrationSchema = z$1.object({
10768
- destinationRef: newsletterPublicDestinationRefSchema.nullable().optional(),
10769
- listId: z$1.string().nullable().optional(),
10841
+ target: z$1.discriminatedUnion("tag", [
10842
+ z$1.object({
10843
+ tag: z$1.literal("block-source"),
10844
+ destinationRef: z$1.object({
10845
+ tag: z$1.literal("block_ref"),
10846
+ blockId: newsletterSignupBlockIdSchema
10847
+ }).nullable()
10848
+ }),
10849
+ z$1.object({
10850
+ tag: z$1.literal("signed-footer-source"),
10851
+ destinationRef: z$1.object({
10852
+ tag: z$1.literal("signed_destination_ref"),
10853
+ token: signedNewsletterDestinationRefSchema
10854
+ })
10855
+ }),
10856
+ z$1.object({
10857
+ tag: z$1.literal("legacy-direct-list"),
10858
+ listId: z$1.string().nullable()
10859
+ })
10860
+ ]),
10770
10861
  preset: newsletterPresetSchema,
10771
10862
  includePhone: z$1.boolean(),
10772
10863
  tags: z$1.string().nullable().optional(),
@@ -10794,28 +10885,52 @@ function buildNewsletterDisplay(source) {
10794
10885
  fields: getPresetFields(preset, { includePhone })
10795
10886
  };
10796
10887
  }
10797
- const newsletterFormInteractiveIslandPropsCodec = createInteractiveIslandCodec({
10798
- runtime: defineProgressiveBlockRuntime({
10799
- kind: "progressive",
10800
- contracts: {
10801
- source: createZodCodec(newsletterSourceSchema),
10802
- render: createZodCodec(newsletterRenderSchema)
10803
- },
10804
- buildRender: (source) => {
10805
- const runtimeSource = deriveNewsletterSignupRuntimeSource(source);
10888
+ const newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
10889
+ kind: "progressive",
10890
+ contracts: {
10891
+ source: createZodCodec(newsletterSourceSchema),
10892
+ render: createZodCodec(newsletterRenderSchema)
10893
+ },
10894
+ buildRender: (source) => {
10895
+ const runtimeSource = source.source === "block" ? deriveNewsletterSignupRuntimeSource(source) : null;
10896
+ return {
10897
+ display: buildNewsletterDisplay(source),
10898
+ hydration: {
10899
+ target: projectNewsletterFormHydrationTarget(source),
10900
+ preset: source.preset ?? "emailOnly",
10901
+ includePhone: source.includePhone ?? false,
10902
+ tags: runtimeSource ? runtimeSource.tags : source.tags,
10903
+ spamProtectionEnabled: source.spamProtectionEnabled
10904
+ }
10905
+ };
10906
+ }
10907
+ });
10908
+ function projectNewsletterFormHydrationTarget(source) {
10909
+ switch (source.source) {
10910
+ case "block": {
10911
+ const destinationRef = buildNewsletterSignupBlockRef(source.blockId);
10912
+ if (destinationRef?.tag === "block_ref") return {
10913
+ tag: "block-source",
10914
+ destinationRef
10915
+ };
10806
10916
  return {
10807
- display: buildNewsletterDisplay(source),
10808
- hydration: {
10809
- destinationRef: buildNewsletterSignupBlockRef(source.blockId),
10810
- listId: runtimeSource.listId,
10811
- preset: source.preset ?? "emailOnly",
10812
- includePhone: source.includePhone ?? false,
10813
- tags: runtimeSource.tags,
10814
- spamProtectionEnabled: source.spamProtectionEnabled
10815
- }
10917
+ tag: "legacy-direct-list",
10918
+ listId: source.listId ?? null
10816
10919
  };
10817
10920
  }
10818
- }),
10921
+ case "signed-footer": return {
10922
+ tag: "signed-footer-source",
10923
+ destinationRef: source.destinationRef
10924
+ };
10925
+ case "legacy-direct-list": return {
10926
+ tag: "legacy-direct-list",
10927
+ listId: source.listId
10928
+ };
10929
+ default: return assertNever$2(source);
10930
+ }
10931
+ }
10932
+ const newsletterFormInteractiveIslandPropsCodec = createInteractiveIslandCodec({
10933
+ runtime: newsletterFormBlockRuntime,
10819
10934
  mode: "newsletter-form",
10820
10935
  meta: newsletterIslandMetaCodec,
10821
10936
  metaKeys: newsletterIslandMetaKeys,