@riverbankcms/sdk 0.139.0 → 0.141.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 (232) hide show
  1. package/README.md +1 -1
  2. package/dist/{PreviewEditorSidebar-BDeenhi3.mjs → PreviewEditorSidebar-Q-fy9GYw.mjs} +4 -4
  3. package/dist/{PreviewEditorUI-DSRhgjF5.mjs → PreviewEditorUI-LYGzgk85.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-D2K8GLUG.mjs → PreviewQueryProvider-CN0ewic5.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-CL7wSnYu.mjs → SdkPreviewModeRuntime-CoPYI5Jq.mjs} +90 -50
  6. package/dist/{SiteChromeCustomizeContext-BhDn-5ir.mjs → SiteChromeCustomizeContext-D8LePX8x.mjs} +2731 -1303
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +165 -165
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +212 -212
  9. package/dist/_dts/api/src/accessAdmin.d.ts +74 -104
  10. package/dist/_dts/api/src/aiEndpoints.d.ts +5 -1
  11. package/dist/_dts/api/src/authSubmission.d.ts +46 -0
  12. package/dist/_dts/api/src/billing.d.ts +8 -4
  13. package/dist/_dts/api/src/billingEndpointDefinitions.d.ts +23 -0
  14. package/dist/_dts/api/src/billingEndpointTypes.d.ts +26 -0
  15. package/dist/_dts/api/src/blocks.d.ts +2 -0
  16. package/dist/_dts/api/src/bookingRecords.d.ts +1 -2
  17. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +8 -1
  18. package/dist/_dts/api/src/communications.d.ts +0 -1
  19. package/dist/_dts/api/src/contentRuntime.d.ts +17 -31
  20. package/dist/_dts/api/src/domainConnection.d.ts +4 -0
  21. package/dist/_dts/api/src/endpoints.d.ts +93 -64
  22. package/dist/_dts/api/src/event-destination-policy.d.ts +2 -1
  23. package/dist/_dts/api/src/footerCompositionContracts.d.ts +25 -0
  24. package/dist/_dts/api/src/footerSettings.d.ts +9 -6
  25. package/dist/_dts/api/src/index.d.ts +6 -7
  26. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  27. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  28. package/dist/_dts/api/src/launchReadiness.d.ts +1 -0
  29. package/dist/_dts/api/src/mailingListIntegration.d.ts +8 -2
  30. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +1 -1
  31. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +2 -1
  32. package/dist/_dts/api/src/navigation/types.d.ts +1 -1
  33. package/dist/_dts/api/src/onboarding/confirmationResend.d.ts +25 -0
  34. package/dist/_dts/api/src/onboarding/surfaceData.d.ts +32 -32
  35. package/dist/_dts/api/src/publicBookingAvailabilityEndpointDefinitions.d.ts +8 -0
  36. package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +1 -0
  37. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +11 -3
  38. package/dist/_dts/api/src/publicExperience/sharedTypes.d.ts +3 -29
  39. package/dist/_dts/api/src/publicOnboardingAttemptEndpointDefinitions.d.ts +65 -0
  40. package/dist/_dts/api/src/saveOutcome.d.ts +20 -0
  41. package/dist/_dts/api/src/sdkContracts.d.ts +3 -22
  42. package/dist/_dts/api/src/sdkPushContracts.d.ts +18 -0
  43. package/dist/_dts/api/src/sdkThemeWire.d.ts +44 -44
  44. package/dist/_dts/api/src/settings/permissions.d.ts +12 -0
  45. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +10 -29
  46. package/dist/_dts/api/src/siteOnboarding.d.ts +9 -9
  47. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +2 -4
  48. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +3 -1
  49. package/dist/_dts/api/src/siteSettings.d.ts +20 -7
  50. package/dist/_dts/api/src/types.d.ts +77 -77
  51. package/dist/_dts/api/src/wholeSeriesRuns.d.ts +2 -37
  52. package/dist/_dts/billing/src/membership/index.d.ts +3 -0
  53. package/dist/_dts/billing/src/plans/types.d.ts +3 -0
  54. package/dist/_dts/billing/src/site-arrangements.d.ts +23 -3
  55. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +20 -4
  56. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +2 -0
  57. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +7 -0
  58. package/dist/_dts/blocks/src/portal/types.d.ts +2 -4
  59. package/dist/_dts/blocks/src/portal/waitlist-types.d.ts +35 -0
  60. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +2 -0
  61. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +2 -0
  62. package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +122 -0
  63. package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +2 -1
  64. package/dist/_dts/blocks/src/system/blocks/events/shared/eventSelection.d.ts +11 -0
  65. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +42 -0
  66. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -0
  67. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
  68. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -47
  69. package/dist/_dts/blocks/src/system/data/index.d.ts +2 -2
  70. package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +7 -1
  71. package/dist/_dts/blocks/src/system/data/types.d.ts +9 -0
  72. package/dist/_dts/blocks/src/system/data/utils.d.ts +1 -1
  73. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +27 -1
  74. package/dist/_dts/blocks/src/system/registry.d.ts +1 -0
  75. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +0 -28
  76. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  77. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +7 -3
  78. package/dist/_dts/blocks/src/system/runtime/api/types/portal.d.ts +1 -1
  79. package/dist/_dts/blocks/src/system/runtime/api/types/waitlist-claims.d.ts +7 -2
  80. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +42 -186
  81. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +21 -93
  82. package/dist/_dts/blocks/src/system/runtime/hooks/useEventFilters.d.ts +2 -1
  83. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +48 -1
  84. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +1 -2
  85. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/TicketSelectionStep.d.ts +2 -0
  86. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/checkoutRecovery.d.ts +14 -0
  87. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +56 -0
  88. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +4 -0
  89. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.state.d.ts +5 -0
  90. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +6 -8
  91. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useCheckoutRecovery.d.ts +8 -0
  92. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.d.ts +3 -0
  93. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.state.d.ts +10 -3
  94. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventCheckoutHandoffRestore.d.ts +9 -0
  95. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +8 -7
  96. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +14 -7
  97. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventSourceRecovery.d.ts +18 -0
  98. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useSettledCommerceView.d.ts +37 -0
  99. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.client.d.ts +1 -1
  100. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +24 -6
  101. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.server.d.ts +4 -2
  102. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +4 -3
  103. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +3 -0
  104. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +11 -101
  105. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +7 -2
  106. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/listOptions.d.ts +2 -0
  107. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +6 -0
  108. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +1 -0
  109. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +1 -0
  110. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -6
  111. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  112. package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.d.ts +2 -0
  113. package/dist/_dts/blocks/src/system/transforms/registry/eventCalendar.d.ts +12 -0
  114. package/dist/_dts/commerce/src/purchase/bookingInstalmentSchedule.d.ts +4 -0
  115. package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +4 -0
  116. package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +27 -4
  117. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +2 -1
  118. package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +3 -1
  119. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +3 -0
  120. package/dist/_dts/core/src/branded.d.ts +0 -8
  121. package/dist/_dts/core/src/index.d.ts +1 -0
  122. package/dist/_dts/core/src/mailing-list-setup-parser.d.ts +1 -1
  123. package/dist/_dts/core/src/mailing-list-setup.d.ts +14 -1
  124. package/dist/_dts/core/src/mailing-list-submission.d.ts +7 -27
  125. package/dist/_dts/core/src/participants.d.ts +2 -29
  126. package/dist/_dts/core/src/public-experience.d.ts +4 -0
  127. package/dist/_dts/core/src/public-profile.d.ts +27 -1
  128. package/dist/_dts/core/src/site-route-target.d.ts +9 -2
  129. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +296 -606
  130. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListGlobalSettingsSummary.d.ts +10 -0
  131. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListTargetingField.d.ts +3 -2
  132. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/context.d.ts +3 -2
  133. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +3 -2
  134. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/targetingState.d.ts +19 -0
  135. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +27 -1
  136. package/dist/_dts/sdk/src/public-api/contracts.d.ts +14 -20
  137. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -0
  138. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +2 -0
  139. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +7 -1
  140. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +1 -0
  141. package/dist/_dts/sdk/src/version.d.ts +1 -1
  142. package/dist/_dts/theme-core/src/ThemeFontLoader.d.ts +17 -1
  143. package/dist/_dts/theme-core/src/accordions/types.d.ts +3 -3
  144. package/dist/_dts/theme-core/src/buttons/affordanceSuppression.d.ts +17 -0
  145. package/dist/_dts/theme-core/src/buttons/buttonColourContract.d.ts +1 -1
  146. package/dist/_dts/theme-core/src/buttons/classNames.d.ts +16 -0
  147. package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +0 -6
  148. package/dist/_dts/theme-core/src/buttons/resolvedButtonCss.d.ts +4 -4
  149. package/dist/_dts/theme-core/src/cards/types.d.ts +21 -21
  150. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  151. package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +8 -2
  152. package/dist/_dts/theme-core/src/header/legacyHeaderVariant.d.ts +2 -2
  153. package/dist/_dts/theme-core/src/hosted-booking-appearance.d.ts +54 -12
  154. package/dist/_dts/theme-core/src/index.d.ts +1 -1
  155. package/dist/_dts/theme-core/src/inputs/types.d.ts +2 -2
  156. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +54 -54
  157. package/dist/_dts/theme-core/src/runtime/buildThemeRuntimeFromBridge.d.ts +1 -4
  158. package/dist/_dts/theme-core/src/schema.d.ts +84 -84
  159. package/dist/_dts/theme-core/src/shared/componentStyles.d.ts +1 -1
  160. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  161. package/dist/_dts/theme-core/src/surfaces/foregroundInteraction.d.ts +77 -0
  162. package/dist/_dts/theme-core/src/surfaces/index.d.ts +1 -0
  163. package/dist/_dts/theme-core/src/typography/generateTypographyCss.d.ts +2 -2
  164. package/dist/_dts/ui/src/lib/use-delayed-flag.d.ts +9 -0
  165. package/dist/_dts/ui/src/pending-button.d.ts +10 -0
  166. package/dist/client/{BookingConsentAgreement-CZvTDtsK.mjs → BookingConsentAgreement-xJeYNdnb.mjs} +4 -4
  167. package/dist/client/{DiscountCodeDisclosure-D-DsLCMU.mjs → DiscountCodeDisclosure-DdT6uzl9.mjs} +1 -1
  168. package/dist/client/{EventCombined.client-dWqgd5ZO.mjs → EventCombined.client-Cp28uYuM.mjs} +12 -16
  169. package/dist/client/{EventListing.client-BMRa9IYp.mjs → EventListing.client-CD6AJsMr.mjs} +4 -17
  170. package/dist/client/{LeafletStaticMap-D21W9kBZ.mjs → LeafletStaticMap-DBsAi9-e.mjs} +1 -1
  171. package/dist/client/{accordion-FxF_ta47.mjs → accordion-6dwbOKYR.mjs} +1 -1
  172. package/dist/client/{bookingForm-YnwW4TGw.mjs → bookingForm-CZE9_qPQ.mjs} +7 -7
  173. package/dist/client/bookings.mjs +500 -233
  174. package/dist/client/{carousel-vng7fFT5.mjs → carousel-7VHGQARz.mjs} +2 -2
  175. package/dist/client/{carousel.client-59G_WMr4.mjs → carousel.client-DQTjCVQT.mjs} +1 -1
  176. package/dist/client/{cart-DEPDsjNk.mjs → cart-Qg_mvQhh.mjs} +3 -3
  177. package/dist/client/{checkout-CZRWu9rW.mjs → checkout-D84rpgdr.mjs} +3 -3
  178. package/dist/client/{checkoutUrls-BuseL0dw.mjs → checkoutUrls-FL6lRkrt.mjs} +1 -1
  179. package/dist/client/client.mjs +2315 -1017
  180. package/dist/client/{colorStyles-CrxJrPjJ.mjs → colorStyles-3013aRAY.mjs} +3 -1
  181. package/dist/client/{context-DvU_WUmd.mjs → context-Ctp3T0Wr.mjs} +6 -19
  182. package/dist/client/{dates-wnPMiRl5.mjs → dates-DJKFcI_N.mjs} +2 -2
  183. package/dist/client/{eventCalendar-BA3Q5L15.mjs → eventCalendar-CK31z3vs.mjs} +12 -8
  184. package/dist/client/{eventCombined-51wgR-1R.mjs → eventCombined-DiXd-ewn.mjs} +3 -3
  185. package/dist/client/{eventDetails-modaetpm.mjs → eventDetails-CTRgt2DK.mjs} +4 -4
  186. package/dist/client/{eventListing-D8t2J3Kv.mjs → eventListing-Dy9vi_j_.mjs} +3 -3
  187. package/dist/client/{eventRegistration-CYqtkCE_.mjs → eventRegistration-CnalYMr2.mjs} +618 -177
  188. package/dist/client/{form-CBKXN5In.mjs → form-eUiMveTT.mjs} +3 -3
  189. package/dist/client/{headerSection-DylDqNrs.mjs → headerSection-Dy9kQpB1.mjs} +2 -2
  190. package/dist/client/hooks.mjs +692 -212
  191. package/dist/client/{locationMap-CvWrG0vZ.mjs → locationMap-DalCmWU0.mjs} +3 -3
  192. package/dist/client/{media-BOHuueS5.mjs → media-DHpfFwd3.mjs} +1 -1
  193. package/dist/client/{newsletterForm-Btwk70zw.mjs → newsletterForm-SDDPvhS0.mjs} +150 -94
  194. package/dist/client/{pricing-Uzw-GQ6Y.mjs → pricing-OcMz4SnX.mjs} +1 -1
  195. package/dist/client/{productDetail-JLcUYKnd.mjs → productDetail-BQrgHElM.mjs} +3 -3
  196. package/dist/client/{productList-FM0cbUzj.mjs → productList-OnPn_UJj.mjs} +3 -3
  197. package/dist/client/{propsDecoder-DYzafZb2.mjs → propsDecoder-zBdsnS-N.mjs} +168 -32
  198. package/dist/client/rendering/client.mjs +1355 -519
  199. package/dist/client/rendering/islands.mjs +19 -19
  200. package/dist/client/rendering.mjs +2294 -953
  201. package/dist/client/{scrollToBlock-CvXszexS.mjs → scrollToBlock-BNM4Ob2Y.mjs} +28 -11
  202. package/dist/client/{shop-BIcjvy5a.mjs → shop-Bv1fPTwQ.mjs} +6 -6
  203. package/dist/client/{shop-commerce-BZQsy7xw.mjs → shop-commerce-D4KNGaW8.mjs} +7 -7
  204. package/dist/client/{shop-commerce-store-D5V7XAb5.mjs → shop-commerce-store-2N5EV0Rc.mjs} +1 -1
  205. package/dist/client/{shopShared-DowkXevB.mjs → shopShared-DvJGdHTV.mjs} +4 -4
  206. package/dist/client/{useEventFilters-oMoTw_JE.mjs → useEventFilters-BBBvGDHQ.mjs} +19 -13
  207. package/dist/preview-next/before-render.mjs +119 -64
  208. package/dist/preview-next/client/runtime.mjs +4 -4
  209. package/dist/preview-next/editor-chrome.css +4 -8
  210. package/dist/preview-next/keepAlive.mjs +119 -64
  211. package/dist/preview-next/middleware.mjs +119 -64
  212. package/dist/{previewAuthStore-COUyAKaX.mjs → previewAuthStore-Gjb6r6vz.mjs} +119 -64
  213. package/dist/{sdk-runtime-D4k2LSGF.mjs → sdk-runtime-Defnbfzw.mjs} +2 -2
  214. package/dist/{separator-UGtpag4Z.mjs → separator-CZXO3Sb0.mjs} +1 -1
  215. package/dist/server/components.mjs +1170 -384
  216. package/dist/server/config-validation.mjs +560 -105
  217. package/dist/server/config.mjs +564 -109
  218. package/dist/server/data.mjs +688 -212
  219. package/dist/server/index.mjs +126 -66
  220. package/dist/server/next.mjs +1429 -662
  221. package/dist/server/page-converter.mjs +372 -99
  222. package/dist/server/prebuild.mjs +1 -1
  223. package/dist/server/rendering/server.mjs +1624 -817
  224. package/dist/server/rendering.mjs +1200 -391
  225. package/dist/server/routing.mjs +767 -247
  226. package/dist/server/server.mjs +715 -276
  227. package/dist/server/theme-bridge.mjs +475 -110
  228. package/dist/server/theme.mjs +9 -3
  229. package/dist/styles/index.css +265 -45
  230. package/package.json +1 -1
  231. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionCompactRow.d.ts +0 -29
  232. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionList.d.ts +0 -13
@@ -2178,59 +2178,6 @@ function surfaceForegroundStyle(input) {
2178
2178
  [SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting
2179
2179
  };
2180
2180
  }
2181
- shadeBackgroundEffect({
2182
- id: "darken-background",
2183
- name: "Darken on Hover",
2184
- description: "Darkens the background color on hover",
2185
- label: "Darken Amount (shade step)",
2186
- shadeDirection: 1
2187
- });
2188
- shadeBackgroundEffect({
2189
- id: "lighten-background",
2190
- name: "Lighten on Hover",
2191
- description: "Lightens the background color on hover",
2192
- label: "Lighten Amount (shade step)",
2193
- shadeDirection: -1
2194
- });
2195
- function shadeBackgroundEffect(config) {
2196
- return {
2197
- id: config.id,
2198
- name: config.name,
2199
- description: config.description,
2200
- category: "background",
2201
- pseudoElement: "none",
2202
- applicableTo: ["button"],
2203
- customizableOption: {
2204
- name: "amount",
2205
- type: "select",
2206
- label: config.label,
2207
- default: 100,
2208
- options: [
2209
- 0,
2210
- 100,
2211
- 200,
2212
- 300,
2213
- 400,
2214
- 500,
2215
- 600,
2216
- 700,
2217
- 800,
2218
- 900
2219
- ]
2220
- },
2221
- isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
2222
- generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
2223
- if (buttonConfig.background.type !== "solid") return "";
2224
- const amount = (options.amount || 100) * config.shadeDirection;
2225
- const baseToken = buttonConfig.background.colorToken ?? "primary-500";
2226
- return `
2227
- :where([data-theme-scope="${themeId}"]) .${variantId}:hover {
2228
- background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
2229
- }
2230
- `;
2231
- }
2232
- };
2233
- }
2234
2181
  //#endregion
2235
2182
  //#region ../theme-core/src/utils/colorStyles.ts
2236
2183
  const COLOR_VAR_PREFIX = "--tb-";
@@ -2327,6 +2274,59 @@ function mergeStyles(...styles) {
2327
2274
  }
2328
2275
  return Object.keys(merged).length ? merged : void 0;
2329
2276
  }
2277
+ shadeBackgroundEffect({
2278
+ id: "darken-background",
2279
+ name: "Darken on Hover",
2280
+ description: "Darkens the background color on hover",
2281
+ label: "Darken Amount (shade step)",
2282
+ shadeDirection: 1
2283
+ });
2284
+ shadeBackgroundEffect({
2285
+ id: "lighten-background",
2286
+ name: "Lighten on Hover",
2287
+ description: "Lightens the background color on hover",
2288
+ label: "Lighten Amount (shade step)",
2289
+ shadeDirection: -1
2290
+ });
2291
+ function shadeBackgroundEffect(config) {
2292
+ return {
2293
+ id: config.id,
2294
+ name: config.name,
2295
+ description: config.description,
2296
+ category: "background",
2297
+ pseudoElement: "none",
2298
+ applicableTo: ["button"],
2299
+ customizableOption: {
2300
+ name: "amount",
2301
+ type: "select",
2302
+ label: config.label,
2303
+ default: 100,
2304
+ options: [
2305
+ 0,
2306
+ 100,
2307
+ 200,
2308
+ 300,
2309
+ 400,
2310
+ 500,
2311
+ 600,
2312
+ 700,
2313
+ 800,
2314
+ 900
2315
+ ]
2316
+ },
2317
+ isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
2318
+ generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
2319
+ if (buttonConfig.background.type !== "solid") return "";
2320
+ const amount = (options.amount || 100) * config.shadeDirection;
2321
+ const baseToken = buttonConfig.background.colorToken ?? "primary-500";
2322
+ return `
2323
+ :where([data-theme-scope="${themeId}"]) .${variantId}:hover {
2324
+ background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
2325
+ }
2326
+ `;
2327
+ }
2328
+ };
2329
+ }
2330
2330
  //#endregion
2331
2331
  //#region ../theme-core/src/utils/tokenOrColor.ts
2332
2332
  /**
@@ -5335,8 +5335,14 @@ const headerInteractionPillPaletteValues = [
5335
5335
  "accent"
5336
5336
  ];
5337
5337
  /**
5338
- * "No pill": the nav link keeps whatever hover treatment its recipe compiled,
5339
- * and the palette step writes nothing at all (#1318 Phase 4c decision 2).
5338
+ * "No pill": a colour change on hover rather than a filled background.
5339
+ *
5340
+ * The palette step writes nothing (#1318 Phase 4c decision 2), but on a
5341
+ * foreground-adaptive style that is not the end of the story: the hover colour
5342
+ * is derived from the resolved opening foreground at render time, paired with
5343
+ * the resting colour, so `quiet` resolves to a definite colour rather than to
5344
+ * whatever brand token the recipe happened to name. See
5345
+ * `applyOpeningForeground`.
5340
5346
  *
5341
5347
  * It exists because "a colour change on hover, no filled background" was not
5342
5348
  * expressible in the vocabulary, and it is what
@@ -10983,7 +10989,9 @@ function parseUuidBrand(value, unsafeConstructor) {
10983
10989
  }
10984
10990
  const unsafeAsEventOfferingId = (id) => id;
10985
10991
  const unsafeAsEventSeriesId = (id) => id;
10992
+ const unsafeAsContentVersionId = (id) => id;
10986
10993
  const parseEventOfferingId = (value) => parseUuidBrand(value, unsafeAsEventOfferingId);
10994
+ const parseContentVersionId = (value) => parseUuidBrand(value, unsafeAsContentVersionId);
10987
10995
  const parseEventSeriesId = (value) => parseUuidBrand(value, unsafeAsEventSeriesId);
10988
10996
  //#endregion
10989
10997
  //#region ../core/src/assert-never.ts
@@ -11466,6 +11474,9 @@ function parseBrevoListId(value) {
11466
11474
  return parsePositiveInteger(value);
11467
11475
  }
11468
11476
  //#endregion
11477
+ //#region ../core/src/mailing-list-setup.ts
11478
+ const DEFAULT_MAILING_LIST_SUCCESS_MESSAGE = "Thanks — you're on the list.";
11479
+ //#endregion
11469
11480
  //#region ../core/src/mailing-list-setup-parser.ts
11470
11481
  function parseMailingListGlobalForm(value) {
11471
11482
  if (!isRecord$7(value)) return formError("shape");
@@ -11474,12 +11485,15 @@ function parseMailingListGlobalForm(value) {
11474
11485
  if (typeof value.includeOptionalPhone !== "boolean") return formError("includeOptionalPhone");
11475
11486
  const buttonLabel = parseRequiredString(value.buttonLabel);
11476
11487
  if (buttonLabel === null) return formError("buttonLabel");
11488
+ const successMessage = parseRequiredString(value.successMessage);
11489
+ if (successMessage === null) return formError("successMessage");
11477
11490
  const privacyNote = parseOptionalString(value.privacyNote);
11478
11491
  if (privacyNote === void 0) return formError("privacyNote");
11479
11492
  return ok({
11480
11493
  fields,
11481
11494
  includeOptionalPhone: value.includeOptionalPhone,
11482
11495
  buttonLabel,
11496
+ successMessage,
11483
11497
  privacyNote
11484
11498
  });
11485
11499
  }
@@ -11809,11 +11823,17 @@ function parseMailingListSignedSourceToken(value) {
11809
11823
  const parsed = typeof value === "string" ? value.trim() : "";
11810
11824
  return /^[A-Za-z0-9._~-]{16,1000}$/u.test(parsed) ? parsed : null;
11811
11825
  }
11812
- function buildMailingListSignupBlockSourceRef(blockId) {
11813
- const parsed = parseMailingListBlockId(blockId);
11814
- return parsed !== null ? {
11826
+ function parseMailingListContentVersionId(value) {
11827
+ const parsed = parseContentVersionId(value);
11828
+ return parsed.ok ? parsed.value : null;
11829
+ }
11830
+ function buildMailingListSignupBlockSourceRef(blockId, contentVersionId) {
11831
+ const parsedBlockId = parseMailingListBlockId(blockId);
11832
+ const parsedContentVersionId = parseMailingListContentVersionId(contentVersionId);
11833
+ return parsedBlockId !== null && parsedContentVersionId !== null ? {
11815
11834
  tag: "block_ref",
11816
- blockId: parsed
11835
+ blockId: parsedBlockId,
11836
+ contentVersionId: parsedContentVersionId
11817
11837
  } : null;
11818
11838
  }
11819
11839
  function sessionStartMs(session) {
@@ -12131,6 +12151,7 @@ function isDisplayMediaKind(kind) {
12131
12151
  }
12132
12152
  const siteOptionSources = [
12133
12153
  "eventCategories",
12154
+ "eventSeries",
12134
12155
  "venues",
12135
12156
  "staffMembers"
12136
12157
  ];
@@ -21232,7 +21253,8 @@ const appointmentServicesBlockDefinition = {
21232
21253
  el("appointment-services", {
21233
21254
  sectionHeading: { $bind: { from: "content.heading" } },
21234
21255
  services: { $bind: { from: "data.services" } },
21235
- pathname: { $bind: { from: "$root.pathname" } }
21256
+ pathname: { $bind: { from: "$root.pathname" } },
21257
+ servicePathPrefix: { $bind: { from: "$root.appointmentServicePathPrefix" } }
21236
21258
  })
21237
21259
  ], { gap: "lg" })
21238
21260
  })]
@@ -21682,6 +21704,28 @@ const bookingRequirementConsentFieldSchema = z.object({
21682
21704
  z.union([blockBookingConsentSchema, bookingRequirementConsentFieldSchema]);
21683
21705
  //#endregion
21684
21706
  //#region ../blocks/src/system/blocks/events/shared/schemas.ts
21707
+ const publicEventLoaderQuerySchemaShape = {
21708
+ limit: z.string().optional(),
21709
+ from: z.string().optional(),
21710
+ to: z.string().optional(),
21711
+ afterStartsAt: z.string().optional(),
21712
+ afterId: z.string().optional(),
21713
+ categoryIds: z.string().optional(),
21714
+ venueId: z.string().optional(),
21715
+ staffMemberId: z.string().optional(),
21716
+ eventSurface: z.string().optional(),
21717
+ eventPresets: z.string().optional(),
21718
+ scheduleScope: z.string().optional(),
21719
+ seriesId: z.string().optional(),
21720
+ seriesIds: z.string().optional(),
21721
+ runSeriesId: z.string().optional(),
21722
+ seriesSlug: z.string().optional(),
21723
+ includeOccurrenceId: z.string().optional(),
21724
+ readIntent: z.string().optional(),
21725
+ detailLevel: z.string().optional(),
21726
+ readProfile: z.string().optional()
21727
+ };
21728
+ z.object(publicEventLoaderQuerySchemaShape);
21685
21729
  const eventPresetSchema = z.enum([
21686
21730
  "event",
21687
21731
  "class",
@@ -22484,6 +22528,44 @@ function toWholeSeriesRegistrationEvents(events) {
22484
22528
  return groupPublicEventsByRun(events).map(toWholeSeriesRegistrationEvent).filter((event) => event !== null);
22485
22529
  }
22486
22530
  //#endregion
22531
+ //#region ../blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.ts
22532
+ const { limit: _rawLimit, eventSurface: _rawEventSurface, scheduleScope: _rawScheduleScope, detailLevel: _rawDetailLevel, ...stringEventQueryShape } = publicEventLoaderQuerySchemaShape;
22533
+ const eventRecoveryRequestSchema = z.object({
22534
+ ...stringEventQueryShape,
22535
+ limit: z.coerce.number().int().positive().optional(),
22536
+ eventSurface: z.enum(eventSurfaceScopeValues).optional(),
22537
+ scheduleScope: z.enum(eventScheduleScopeValues).optional(),
22538
+ detailLevel: z.enum(["full", "listing"]).optional(),
22539
+ stage: z.enum(["preview", "published"]).optional()
22540
+ });
22541
+ function resolveEventRegistrationEventSource(input) {
22542
+ if (input.wholeSeriesRunEvents != null) return {
22543
+ kind: "loaded",
22544
+ events: input.wholeSeriesRunEvents
22545
+ };
22546
+ if (input.events != null) return {
22547
+ kind: "loaded",
22548
+ events: input.events
22549
+ };
22550
+ return {
22551
+ kind: "unresolved",
22552
+ request: parseEventLoaderRecoveryRequest(input.failures?.wholeSeriesRunEvents ?? input.failures?.events)
22553
+ };
22554
+ }
22555
+ const eventLoaderFailureSchema = z.object({
22556
+ endpoint: z.literal("listPublicEvents"),
22557
+ params: eventRecoveryRequestSchema.extend({ siteId: z.string().optional() })
22558
+ });
22559
+ function parseEventLoaderRecoveryRequest(value) {
22560
+ const parsed = eventLoaderFailureSchema.safeParse(value);
22561
+ if (!parsed.success) return null;
22562
+ const { siteId: _siteId, stage, ...params } = parsed.data.params;
22563
+ return {
22564
+ ...params,
22565
+ stage: stage ?? "published"
22566
+ };
22567
+ }
22568
+ //#endregion
22487
22569
  //#region ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
22488
22570
  const EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS = [
22489
22571
  "Date",
@@ -22501,8 +22583,6 @@ const eventRegistrationPublicEventSchema = z.preprocess(normalizeEventRegistrati
22501
22583
  const eventRegistrationHydrationSchemaShape = {
22502
22584
  occurrenceContext: occurrenceContextSchema.optional(),
22503
22585
  subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
22504
- events: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
22505
- wholeSeriesRunEvents: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
22506
22586
  maxTickets: z.string().optional(),
22507
22587
  showVenue: z.boolean().optional(),
22508
22588
  showCapacity: z.boolean().optional(),
@@ -22514,12 +22594,22 @@ const eventRegistrationHydrationSchemaShape = {
22514
22594
  sitePasses: publicPassProductCollectionSchema.nullable().optional(),
22515
22595
  siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
22516
22596
  };
22597
+ const eventRegistrationEventSourceSchema = z.discriminatedUnion("kind", [z.object({
22598
+ kind: z.literal("loaded"),
22599
+ events: z.array(eventRegistrationPublicEventSchema)
22600
+ }), z.object({
22601
+ kind: z.literal("unresolved"),
22602
+ request: eventRecoveryRequestSchema.nullable()
22603
+ })]);
22517
22604
  const eventRegistrationSourceSchema = z.object({
22518
22605
  siteId: z.string().optional(),
22519
22606
  apiBaseUrl: z.string().optional(),
22520
22607
  portalToken: z.string().nullable().optional(),
22521
22608
  previewToken: z.string().nullable().optional(),
22522
22609
  ...eventRegistrationHydrationSchemaShape,
22610
+ events: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
22611
+ wholeSeriesRunEvents: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
22612
+ eventLoaderFailures: z.record(z.string(), z.unknown()).nullable().optional(),
22523
22613
  className: z.string().nullable().optional(),
22524
22614
  buttonText: z.string().nullable().optional(),
22525
22615
  maxTickets: z.string().nullable().optional(),
@@ -22540,7 +22630,10 @@ const eventRegistrationDisplaySchema = z.discriminatedUnion("state", [z.object({
22540
22630
  titleText: z.string(),
22541
22631
  bodyText: z.string()
22542
22632
  })]);
22543
- const eventRegistrationHydrationSchema = z.object(eventRegistrationHydrationSchemaShape);
22633
+ const eventRegistrationHydrationSchema = z.object({
22634
+ ...eventRegistrationHydrationSchemaShape,
22635
+ eventSource: eventRegistrationEventSourceSchema
22636
+ });
22544
22637
  const eventRegistrationRenderSchema = z.object({
22545
22638
  display: eventRegistrationDisplaySchema,
22546
22639
  hydration: eventRegistrationHydrationSchema
@@ -22599,16 +22692,12 @@ function buildEventRegistrationShellStepLabels(source, scopedSourceEvents) {
22599
22692
  function toScopedEventRegistrationEvents(scopedSourceEvents) {
22600
22693
  return [...toRegistrationEvents(scopedSourceEvents), ...toWholeSeriesRegistrationEvents(scopedSourceEvents)];
22601
22694
  }
22602
- function scopeEventRegistrationSourceEvents(source) {
22603
- return resolveEventRegistrationScopedEvents(source.wholeSeriesRunEvents ?? source.events ?? [], {
22695
+ function scopeEventRegistrationSourceEvents(source, eventSource) {
22696
+ return resolveEventRegistrationScopedEvents(eventSource.kind === "loaded" ? eventSource.events : [], {
22604
22697
  occurrenceContext: source.occurrenceContext,
22605
22698
  subject: source.subject
22606
22699
  });
22607
22700
  }
22608
- function resolveLoadedEventRegistrationSourceEvents(source, scopedSourceEvents) {
22609
- if (source.events == null && source.wholeSeriesRunEvents == null) return null;
22610
- return [...scopedSourceEvents];
22611
- }
22612
22701
  /**
22613
22702
  * The one run this surface is registering for, when the scoped events describe
22614
22703
  * exactly one. More than one run means the visitor still has to choose.
@@ -22648,14 +22737,21 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
22648
22737
  render: createZodCodec(eventRegistrationRenderSchema)
22649
22738
  },
22650
22739
  buildRender: (source) => {
22651
- const scopedSourceEvents = scopeEventRegistrationSourceEvents(source);
22652
- const events = resolveLoadedEventRegistrationSourceEvents(source, scopedSourceEvents);
22740
+ const eventSource = resolveEventRegistrationEventSource({
22741
+ events: source.events,
22742
+ wholeSeriesRunEvents: source.wholeSeriesRunEvents,
22743
+ failures: source.eventLoaderFailures
22744
+ });
22745
+ const scopedSourceEvents = scopeEventRegistrationSourceEvents(source, eventSource);
22653
22746
  return {
22654
22747
  display: buildEventRegistrationDisplayFromScopedEvents(source, scopedSourceEvents),
22655
22748
  hydration: {
22656
22749
  occurrenceContext: source.occurrenceContext ?? null,
22657
22750
  subject: source.subject ?? null,
22658
- events,
22751
+ eventSource: eventSource.kind === "loaded" ? {
22752
+ ...eventSource,
22753
+ events: [...scopedSourceEvents]
22754
+ } : eventSource,
22659
22755
  maxTickets: source.maxTickets ?? void 0,
22660
22756
  showVenue: source.showVenue,
22661
22757
  showCapacity: source.showCapacity,
@@ -22831,6 +22927,7 @@ const eventRegistrationBlockDefinition = {
22831
22927
  } },
22832
22928
  events: { $bind: { from: "data.events" } },
22833
22929
  wholeSeriesRunEvents: { $bind: { from: "data.wholeSeriesRunEvents" } },
22930
+ loaderFailures: { $bind: { from: "$root.loaderFailures" } },
22834
22931
  sitePasses: { $bind: { from: "data.sitePasses" } },
22835
22932
  siteMemberships: { $bind: { from: "data.siteMemberships" } },
22836
22933
  stage: { $bind: {
@@ -23316,6 +23413,13 @@ const eventSpotlightBlockDefinition = {
23316
23413
  } }
23317
23414
  };
23318
23415
  //#endregion
23416
+ //#region ../blocks/src/system/blocks/events/shared/eventSelection.ts
23417
+ /** Undefined means discovery; an empty string is an explicitly empty selection. */
23418
+ function eventSeriesScopeCsv(value) {
23419
+ if (value == null) return void 0;
23420
+ return typeof value === "string" ? value : value.join(",");
23421
+ }
23422
+ //#endregion
23319
23423
  //#region ../blocks/src/system/runtime/nodes/events/shared/listingLayout.ts
23320
23424
  /**
23321
23425
  * Layout classes for event listing containers and cards. Presentation
@@ -23440,6 +23544,7 @@ z.object({
23440
23544
  eventSurface: z.enum(eventSurfaceScopeValues).optional(),
23441
23545
  eventPresets: z.string().optional(),
23442
23546
  scheduleScope: z.enum(eventScheduleScopeValues).optional(),
23547
+ seriesIds: z.string().optional(),
23443
23548
  categoryIds: z.string().optional(),
23444
23549
  venueId: z.string().transform(normalizeCalendarFilterId).optional(),
23445
23550
  staffMemberId: z.string().transform(normalizeCalendarFilterId).optional()
@@ -23502,6 +23607,7 @@ const eventCollectionFilterSourceSchemaShape = {
23502
23607
  eventSurface: eventSurfaceScopeSchema$1.nullable().optional(),
23503
23608
  filterEventPresets: z.union([z.string(), z.array(z.string())]).nullable().optional(),
23504
23609
  scheduleScope: eventScheduleScopeSchema$1.nullable().optional(),
23610
+ seriesIds: z.union([z.string(), z.array(z.string())]).nullable().optional(),
23505
23611
  filterCategoryIds: z.union([z.string(), z.array(z.string())]).nullable().optional(),
23506
23612
  filterStaffMemberId: z.string().nullable().optional(),
23507
23613
  filterVenueId: z.string().nullable().optional()
@@ -23548,6 +23654,7 @@ const eventCollectionDisplaySchemaShape = {
23548
23654
  eventSurface: eventSurfaceScopeSchema$1,
23549
23655
  filterEventPresets: z.string().nullable(),
23550
23656
  scheduleScope: eventScheduleScopeSchema$1,
23657
+ seriesIds: z.string().nullable().optional(),
23551
23658
  filterCategoryIds: z.string().nullable(),
23552
23659
  filterStaffMemberId: z.string().nullable(),
23553
23660
  filterVenueId: z.string().nullable(),
@@ -23595,11 +23702,15 @@ function buildEventCollectionDisplay(source) {
23595
23702
  };
23596
23703
  }
23597
23704
  function buildEventCollectionFilterDisplay(source) {
23598
- return {
23599
- showFilters: source.showFilters ?? true,
23600
- showCategoryFilter: source.showCategoryFilter ?? "auto",
23601
- showVenueFilter: source.showVenueFilter ?? false,
23602
- showStaffFilter: source.showStaffFilter ?? true,
23705
+ const selected = source.seriesIds != null;
23706
+ const matchingFilters = selected ? {
23707
+ eventSurface: "all",
23708
+ filterEventPresets: null,
23709
+ scheduleScope: "any",
23710
+ filterCategoryIds: null,
23711
+ filterStaffMemberId: null,
23712
+ filterVenueId: null
23713
+ } : {
23603
23714
  eventSurface: normalizeEventSurfaceScope(source.eventSurface),
23604
23715
  filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
23605
23716
  scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
@@ -23607,6 +23718,14 @@ function buildEventCollectionFilterDisplay(source) {
23607
23718
  filterStaffMemberId: normalizeEventStaffMemberId(source.filterStaffMemberId),
23608
23719
  filterVenueId: normalizeEventVenueId(source.filterVenueId)
23609
23720
  };
23721
+ return {
23722
+ seriesIds: eventSeriesScopeCsv(source.seriesIds),
23723
+ showFilters: selected ? false : source.showFilters ?? true,
23724
+ showCategoryFilter: source.showCategoryFilter ?? "auto",
23725
+ showVenueFilter: source.showVenueFilter ?? false,
23726
+ showStaffFilter: source.showStaffFilter ?? true,
23727
+ ...matchingFilters
23728
+ };
23610
23729
  }
23611
23730
  function buildEventCollectionPresentationDisplay(source) {
23612
23731
  return {
@@ -23621,14 +23740,15 @@ function buildEventCollectionPresentationDisplay(source) {
23621
23740
  }
23622
23741
  function buildEventCollectionHydration(source, now = /* @__PURE__ */ new Date()) {
23623
23742
  const timeZone = source.calendarWindow?.scope.timeZone ?? toBookingTimeZone(source.bookingTimeZone);
23743
+ const selected = source.seriesIds != null;
23624
23744
  return {
23625
23745
  calendarWindow: source.calendarWindow ?? void 0,
23626
23746
  siteId: source.siteId,
23627
23747
  stage: source.stage,
23628
23748
  prefetchedEvents: source.events != null,
23629
- eventSurface: normalizeEventSurfaceScope(source.eventSurface),
23630
- filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
23631
- scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
23749
+ eventSurface: selected ? "all" : normalizeEventSurfaceScope(source.eventSurface),
23750
+ filterEventPresets: selected ? null : normalizeEventSurfacePresetsCsv(source.filterEventPresets),
23751
+ scheduleScope: selected ? "any" : normalizeEventScheduleScope(source.scheduleScope),
23632
23752
  calendarContext: {
23633
23753
  timeZone,
23634
23754
  initialToday: source.calendarWindow?.initialToday ?? getLocalScheduleDate(now, timeZone)
@@ -23694,6 +23814,7 @@ const eventListingHydrationSchema = z.object({
23694
23814
  eventSurface: eventSurfaceScopeSchema,
23695
23815
  filterEventPresets: z.string().nullable(),
23696
23816
  scheduleScope: eventScheduleScopeSchema,
23817
+ seriesIds: z.string().nullable().optional(),
23697
23818
  filterCategoryIds: z.string().nullable().optional(),
23698
23819
  filterStaffMemberId: z.string().nullable().optional(),
23699
23820
  filterVenueId: z.string().nullable().optional(),
@@ -23754,6 +23875,7 @@ const eventListingBlockRuntime = defineProgressiveBlockRuntime({
23754
23875
  eventSurface: normalizeEventSurfaceScope(source.eventSurface),
23755
23876
  filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
23756
23877
  scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
23878
+ seriesIds: eventSeriesScopeCsv(source.seriesIds),
23757
23879
  filterCategoryIds: normalizeEventCategoryIdsCsv(source.filterCategoryIds),
23758
23880
  filterStaffMemberId: normalizeEventStaffMemberId(source.filterStaffMemberId),
23759
23881
  filterVenueId: normalizeEventVenueId(source.filterVenueId),
@@ -24127,6 +24249,65 @@ const eventListingBlockDefinition = {
24127
24249
  } }
24128
24250
  };
24129
24251
  //#endregion
24252
+ //#region ../blocks/src/system/blocks/events/eventSelectionFields.ts
24253
+ const eventSelectionFields = [{
24254
+ id: "eventSelection",
24255
+ type: "select",
24256
+ label: "Events to show",
24257
+ required: false,
24258
+ multiple: false,
24259
+ defaultValue: "matching",
24260
+ options: [{
24261
+ value: "matching",
24262
+ label: "All matching events"
24263
+ }, {
24264
+ value: "selected",
24265
+ label: "Selected events"
24266
+ }],
24267
+ ui: { intent: "behavior" }
24268
+ }, createSiteOptionSelectField({
24269
+ id: "selectedEventSeriesIds",
24270
+ label: "Selected events",
24271
+ description: "Show upcoming dates for these events. Other event filters do not apply.",
24272
+ required: false,
24273
+ multiple: true,
24274
+ defaultValue: [],
24275
+ optionSource: "eventSeries",
24276
+ ui: {
24277
+ intent: "behavior",
24278
+ searchThreshold: 1,
24279
+ visibleWhen: {
24280
+ field: "eventSelection",
24281
+ equals: "selected"
24282
+ }
24283
+ }
24284
+ })];
24285
+ function withEventSelectionVisibility(field) {
24286
+ if (![
24287
+ "eventSurface",
24288
+ "filterEventPresets",
24289
+ "scheduleScope",
24290
+ "filterCategoryIds",
24291
+ "filterStaffMemberId",
24292
+ "filterVenueId",
24293
+ "showFilters",
24294
+ "showCategoryFilter",
24295
+ "showVenueFilter",
24296
+ "showStaffFilter"
24297
+ ].includes(field.id)) return field;
24298
+ const visibleWhen = field.ui?.visibleWhen;
24299
+ return {
24300
+ ...field,
24301
+ ui: {
24302
+ ...field.ui,
24303
+ visibleWhen: { allOf: [{
24304
+ field: "eventSelection",
24305
+ notEquals: "selected"
24306
+ }, ...visibleWhen ? [visibleWhen] : []] }
24307
+ }
24308
+ };
24309
+ }
24310
+ //#endregion
24130
24311
  //#region ../blocks/src/system/runtime/nodes/events/EventCalendar.interactive.ts
24131
24312
  const eventCalendarSourceSchema = z.object({
24132
24313
  ...eventCollectionSourceSchemaShape,
@@ -24209,19 +24390,59 @@ const eventCalendarBlockRuntime = defineProgressiveBlockRuntime({
24209
24390
  //#region ../blocks/src/system/blocks/events/eventCalendarDataLoaders.ts
24210
24391
  const scopeParams = {
24211
24392
  siteId: { $bind: { from: "$root.siteId" } },
24393
+ seriesIds: { $bind: {
24394
+ from: "content",
24395
+ transforms: [{
24396
+ id: "events.calendarSelectionParam",
24397
+ options: { key: "seriesIds" }
24398
+ }]
24399
+ } },
24212
24400
  stage: { $bind: {
24213
24401
  from: "$root.previewStage",
24214
24402
  fallback: "published"
24215
24403
  } },
24216
- eventSurface: { $bind: { from: "content.eventSurface" } },
24404
+ eventSurface: { $bind: {
24405
+ from: "content",
24406
+ transforms: [{
24407
+ id: "events.calendarSelectionParam",
24408
+ options: { key: "eventSurface" }
24409
+ }, { id: "value.csv" }]
24410
+ } },
24217
24411
  eventPresets: { $bind: {
24218
- from: "content.filterEventPresets",
24219
- transforms: [{ id: "value.csv" }]
24412
+ from: "content",
24413
+ transforms: [{
24414
+ id: "events.calendarSelectionParam",
24415
+ options: { key: "filterEventPresets" }
24416
+ }, { id: "value.csv" }]
24220
24417
  } },
24221
- scheduleScope: { $bind: { from: "content.scheduleScope" } },
24222
- categoryIds: { $bind: { from: "content.filterCategoryIds" } },
24223
- staffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
24224
- venueId: { $bind: { from: "content.filterVenueId" } }
24418
+ scheduleScope: { $bind: {
24419
+ from: "content",
24420
+ transforms: [{
24421
+ id: "events.calendarSelectionParam",
24422
+ options: { key: "scheduleScope" }
24423
+ }, { id: "value.csv" }]
24424
+ } },
24425
+ categoryIds: { $bind: {
24426
+ from: "content",
24427
+ transforms: [{
24428
+ id: "events.calendarSelectionParam",
24429
+ options: { key: "filterCategoryIds" }
24430
+ }, { id: "value.csv" }]
24431
+ } },
24432
+ staffMemberId: { $bind: {
24433
+ from: "content",
24434
+ transforms: [{
24435
+ id: "events.calendarSelectionParam",
24436
+ options: { key: "filterStaffMemberId" }
24437
+ }, { id: "value.csv" }]
24438
+ } },
24439
+ venueId: { $bind: {
24440
+ from: "content",
24441
+ transforms: [{
24442
+ id: "events.calendarSelectionParam",
24443
+ options: { key: "filterVenueId" }
24444
+ }, { id: "value.csv" }]
24445
+ } }
24225
24446
  };
24226
24447
  /** Combined renders two jobs; calendar-only variants never pay for the list seed. */
24227
24448
  const eventCalendarDataLoaders = {
@@ -24351,6 +24572,13 @@ const eventCalendarLayout = [styledSection({
24351
24572
  from: "content.defaultCalendarView",
24352
24573
  fallback: "month"
24353
24574
  } },
24575
+ seriesIds: { $bind: {
24576
+ from: "content",
24577
+ transforms: [{
24578
+ id: "events.calendarSelectionParam",
24579
+ options: { key: "seriesIds" }
24580
+ }]
24581
+ } },
24354
24582
  showFilters: { $bind: {
24355
24583
  from: "content.showFilters",
24356
24584
  fallback: true
@@ -24372,17 +24600,47 @@ const eventCalendarLayout = [styledSection({
24372
24600
  fallback: true
24373
24601
  } },
24374
24602
  eventSurface: { $bind: {
24375
- from: "content.eventSurface",
24376
- fallback: "all"
24603
+ from: "content",
24604
+ transforms: [{
24605
+ id: "events.calendarSelectionParam",
24606
+ options: { key: "eventSurface" }
24607
+ }]
24608
+ } },
24609
+ filterEventPresets: { $bind: {
24610
+ from: "content",
24611
+ transforms: [{
24612
+ id: "events.calendarSelectionParam",
24613
+ options: { key: "filterEventPresets" }
24614
+ }]
24377
24615
  } },
24378
- filterEventPresets: { $bind: { from: "content.filterEventPresets" } },
24379
24616
  scheduleScope: { $bind: {
24380
- from: "content.scheduleScope",
24381
- fallback: "any"
24617
+ from: "content",
24618
+ transforms: [{
24619
+ id: "events.calendarSelectionParam",
24620
+ options: { key: "scheduleScope" }
24621
+ }]
24622
+ } },
24623
+ filterCategoryIds: { $bind: {
24624
+ from: "content",
24625
+ transforms: [{
24626
+ id: "events.calendarSelectionParam",
24627
+ options: { key: "filterCategoryIds" }
24628
+ }]
24629
+ } },
24630
+ filterStaffMemberId: { $bind: {
24631
+ from: "content",
24632
+ transforms: [{
24633
+ id: "events.calendarSelectionParam",
24634
+ options: { key: "filterStaffMemberId" }
24635
+ }]
24636
+ } },
24637
+ filterVenueId: { $bind: {
24638
+ from: "content",
24639
+ transforms: [{
24640
+ id: "events.calendarSelectionParam",
24641
+ options: { key: "filterVenueId" }
24642
+ }]
24382
24643
  } },
24383
- filterCategoryIds: { $bind: { from: "content.filterCategoryIds" } },
24384
- filterStaffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
24385
- filterVenueId: { $bind: { from: "content.filterVenueId" } },
24386
24644
  cardRole: { $bind: {
24387
24645
  from: "content._cardStyles.role",
24388
24646
  fallback: "default"
@@ -24886,6 +25144,7 @@ const eventCalendarAdditionalFields = [
24886
25144
  }
24887
25145
  }
24888
25146
  },
25147
+ ...eventSelectionFields,
24889
25148
  {
24890
25149
  id: "eventSurface",
24891
25150
  type: "select",
@@ -25095,7 +25354,7 @@ const eventCalendarBlockDefinition = {
25095
25354
  titleSource: "heading",
25096
25355
  description: "Display events with calendar, list, or combined views with filtering",
25097
25356
  skipSectionStyles: true,
25098
- additionalFields: eventCalendarAdditionalFields,
25357
+ additionalFields: eventCalendarAdditionalFields.map(withEventSelectionVisibility),
25099
25358
  styleTokens: {
25100
25359
  background: "surface",
25101
25360
  typography: "body",
@@ -29311,6 +29570,15 @@ const newsletterFieldSchema = z.object({
29311
29570
  placeholder: z.string().optional()
29312
29571
  });
29313
29572
  const mailingListSignupBlockIdSchema = z.string().trim().min(1).transform(parseRequiredMailingListSignupBlockId);
29573
+ const mailingListContentVersionIdSchema = z.string().transform((value, ctx) => {
29574
+ const parsed = parseMailingListContentVersionId(value);
29575
+ if (parsed) return parsed;
29576
+ ctx.addIssue({
29577
+ code: z.ZodIssueCode.custom,
29578
+ message: "Invalid mailing-list content version ID"
29579
+ });
29580
+ return z.NEVER;
29581
+ });
29314
29582
  const signedMailingListSourceTokenSchema = z.string().trim().min(1).transform(parseRequiredMailingListSignedSourceToken);
29315
29583
  const newsletterSourceCommonSchema = z.object({
29316
29584
  siteId: z.string().optional(),
@@ -29324,7 +29592,8 @@ const newsletterSourceCommonSchema = z.object({
29324
29592
  const newsletterSourceSchema = z.discriminatedUnion("source", [
29325
29593
  newsletterSourceCommonSchema.extend({
29326
29594
  source: z.literal("block"),
29327
- blockId: z.string().nullable().optional()
29595
+ blockId: z.string().nullable().optional(),
29596
+ contentVersionId: z.string().nullable().optional()
29328
29597
  }),
29329
29598
  newsletterSourceCommonSchema.extend({
29330
29599
  source: z.literal("signed-footer"),
@@ -29340,6 +29609,7 @@ const newsletterDisplaySchema = z.object({
29340
29609
  availability: z.enum(["ready", "unavailable"]),
29341
29610
  className: z.string().nullable(),
29342
29611
  buttonLabel: z.string(),
29612
+ successMessage: z.string(),
29343
29613
  buttonVariant: newsletterButtonVariantSchema,
29344
29614
  privacyNote: z.string().nullable(),
29345
29615
  fields: z.array(newsletterFieldSchema),
@@ -29354,7 +29624,8 @@ const newsletterHydrationSchema = z.object({
29354
29624
  tag: z.literal("block-source"),
29355
29625
  sourceRef: z.object({
29356
29626
  tag: z.literal("block_ref"),
29357
- blockId: mailingListSignupBlockIdSchema
29627
+ blockId: mailingListSignupBlockIdSchema,
29628
+ contentVersionId: mailingListContentVersionIdSchema
29358
29629
  }).nullable()
29359
29630
  }),
29360
29631
  z.object({
@@ -29393,6 +29664,7 @@ function buildNewsletterDisplay(source) {
29393
29664
  fields: { preset: "emailOnly" },
29394
29665
  includeOptionalPhone: false,
29395
29666
  buttonLabel: "Subscribe",
29667
+ successMessage: DEFAULT_MAILING_LIST_SUCCESS_MESSAGE,
29396
29668
  privacyNote: null
29397
29669
  };
29398
29670
  const targeting = source.targeting ?? { mode: "default" };
@@ -29402,6 +29674,7 @@ function buildNewsletterDisplay(source) {
29402
29674
  availability: runtimeTargetingIsAvailable(context, targeting, choices) ? "ready" : "unavailable",
29403
29675
  className: source.className ?? null,
29404
29676
  buttonLabel: form.buttonLabel,
29677
+ successMessage: form.successMessage,
29405
29678
  buttonVariant: source.buttonVariant ?? "primary",
29406
29679
  privacyNote: form.privacyNote,
29407
29680
  fields: getGlobalFormFields(form),
@@ -29432,7 +29705,7 @@ const newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
29432
29705
  function projectNewsletterFormHydrationTarget(source) {
29433
29706
  switch (source.source) {
29434
29707
  case "block": {
29435
- const sourceRef = buildMailingListSignupBlockSourceRef(source.blockId);
29708
+ const sourceRef = buildMailingListSignupBlockSourceRef(source.blockId, source.contentVersionId);
29436
29709
  if (sourceRef?.tag === "block_ref") return {
29437
29710
  tag: "block-source",
29438
29711
  sourceRef