@riverbankcms/sdk 0.139.0 → 0.140.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 (196) hide show
  1. package/README.md +1 -1
  2. package/dist/{PreviewEditorSidebar-BDeenhi3.mjs → PreviewEditorSidebar-CUyTzd5z.mjs} +4 -4
  3. package/dist/{PreviewEditorUI-DSRhgjF5.mjs → PreviewEditorUI-Agkw4v5i.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-D2K8GLUG.mjs → PreviewQueryProvider-CN0ewic5.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-CL7wSnYu.mjs → SdkPreviewModeRuntime-DdbeAdS8.mjs} +22 -8
  6. package/dist/{SiteChromeCustomizeContext-BhDn-5ir.mjs → SiteChromeCustomizeContext-CqGOz-Kv.mjs} +2053 -1110
  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 +8 -3
  20. package/dist/_dts/api/src/endpoints.d.ts +93 -64
  21. package/dist/_dts/api/src/event-destination-policy.d.ts +2 -1
  22. package/dist/_dts/api/src/footerSettings.d.ts +9 -6
  23. package/dist/_dts/api/src/index.d.ts +5 -6
  24. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  25. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  26. package/dist/_dts/api/src/mailingListIntegration.d.ts +8 -2
  27. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +1 -1
  28. package/dist/_dts/api/src/navigation/types.d.ts +1 -1
  29. package/dist/_dts/api/src/onboarding/confirmationResend.d.ts +25 -0
  30. package/dist/_dts/api/src/onboarding/surfaceData.d.ts +32 -32
  31. package/dist/_dts/api/src/publicBookingAvailabilityEndpointDefinitions.d.ts +8 -0
  32. package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +1 -0
  33. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +11 -3
  34. package/dist/_dts/api/src/publicExperience/sharedTypes.d.ts +3 -29
  35. package/dist/_dts/api/src/publicOnboardingAttemptEndpointDefinitions.d.ts +65 -0
  36. package/dist/_dts/api/src/saveOutcome.d.ts +20 -0
  37. package/dist/_dts/api/src/sdkContracts.d.ts +3 -22
  38. package/dist/_dts/api/src/sdkPushContracts.d.ts +18 -0
  39. package/dist/_dts/api/src/sdkThemeWire.d.ts +44 -44
  40. package/dist/_dts/api/src/settings/permissions.d.ts +12 -0
  41. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +9 -5
  42. package/dist/_dts/api/src/siteOnboarding.d.ts +2 -9
  43. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +2 -4
  44. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +3 -1
  45. package/dist/_dts/api/src/siteSettings.d.ts +20 -7
  46. package/dist/_dts/api/src/types.d.ts +77 -77
  47. package/dist/_dts/api/src/wholeSeriesRuns.d.ts +2 -37
  48. package/dist/_dts/billing/src/membership/index.d.ts +3 -0
  49. package/dist/_dts/billing/src/plans/types.d.ts +3 -0
  50. package/dist/_dts/billing/src/site-arrangements.d.ts +14 -3
  51. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +16 -4
  52. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +2 -0
  53. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +5 -0
  54. package/dist/_dts/blocks/src/portal/types.d.ts +2 -4
  55. package/dist/_dts/blocks/src/portal/waitlist-types.d.ts +35 -0
  56. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +2 -0
  57. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +42 -0
  58. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -0
  59. package/dist/_dts/blocks/src/system/data/index.d.ts +2 -2
  60. package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +2 -1
  61. package/dist/_dts/blocks/src/system/data/types.d.ts +9 -0
  62. package/dist/_dts/blocks/src/system/registry.d.ts +1 -0
  63. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +0 -28
  64. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  65. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +7 -3
  66. package/dist/_dts/blocks/src/system/runtime/api/types/portal.d.ts +1 -1
  67. package/dist/_dts/blocks/src/system/runtime/api/types/waitlist-claims.d.ts +7 -2
  68. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +30 -6
  69. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +15 -3
  70. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +43 -0
  71. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +1 -2
  72. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/TicketSelectionStep.d.ts +2 -0
  73. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/checkoutRecovery.d.ts +14 -0
  74. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +56 -0
  75. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +6 -8
  76. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useCheckoutRecovery.d.ts +8 -0
  77. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +8 -7
  78. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +10 -2
  79. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventSourceRecovery.d.ts +18 -0
  80. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.client.d.ts +1 -1
  81. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +24 -6
  82. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.server.d.ts +4 -2
  83. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +6 -0
  84. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +1 -0
  85. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +1 -0
  86. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -6
  87. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  88. package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.d.ts +2 -0
  89. package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +4 -0
  90. package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +27 -4
  91. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +2 -1
  92. package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +3 -1
  93. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +3 -0
  94. package/dist/_dts/core/src/branded.d.ts +0 -8
  95. package/dist/_dts/core/src/index.d.ts +1 -0
  96. package/dist/_dts/core/src/mailing-list-setup-parser.d.ts +1 -1
  97. package/dist/_dts/core/src/mailing-list-setup.d.ts +14 -1
  98. package/dist/_dts/core/src/mailing-list-submission.d.ts +7 -27
  99. package/dist/_dts/core/src/participants.d.ts +2 -29
  100. package/dist/_dts/core/src/public-experience.d.ts +4 -0
  101. package/dist/_dts/core/src/public-profile.d.ts +27 -1
  102. package/dist/_dts/core/src/site-route-target.d.ts +9 -2
  103. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +293 -606
  104. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListGlobalSettingsSummary.d.ts +10 -0
  105. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListTargetingField.d.ts +3 -2
  106. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/context.d.ts +3 -2
  107. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +3 -2
  108. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/targetingState.d.ts +19 -0
  109. package/dist/_dts/sdk/src/public-api/contracts.d.ts +14 -20
  110. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -0
  111. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +2 -0
  112. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +7 -1
  113. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +1 -0
  114. package/dist/_dts/sdk/src/version.d.ts +1 -1
  115. package/dist/_dts/theme-core/src/accordions/types.d.ts +3 -3
  116. package/dist/_dts/theme-core/src/cards/types.d.ts +21 -21
  117. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  118. package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +8 -2
  119. package/dist/_dts/theme-core/src/header/legacyHeaderVariant.d.ts +2 -2
  120. package/dist/_dts/theme-core/src/inputs/types.d.ts +2 -2
  121. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +54 -54
  122. package/dist/_dts/theme-core/src/runtime/buildThemeRuntimeFromBridge.d.ts +1 -4
  123. package/dist/_dts/theme-core/src/schema.d.ts +84 -84
  124. package/dist/_dts/theme-core/src/shared/componentStyles.d.ts +1 -1
  125. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  126. package/dist/_dts/theme-core/src/surfaces/foregroundInteraction.d.ts +77 -0
  127. package/dist/_dts/theme-core/src/surfaces/index.d.ts +1 -0
  128. package/dist/_dts/theme-core/src/typography/generateTypographyCss.d.ts +2 -2
  129. package/dist/_dts/ui/src/lib/use-delayed-flag.d.ts +9 -0
  130. package/dist/_dts/ui/src/pending-button.d.ts +10 -0
  131. package/dist/client/{BookingConsentAgreement-CZvTDtsK.mjs → BookingConsentAgreement-CuKa82V4.mjs} +4 -4
  132. package/dist/client/{DiscountCodeDisclosure-D-DsLCMU.mjs → DiscountCodeDisclosure-BbYieKWB.mjs} +1 -1
  133. package/dist/client/{EventCombined.client-dWqgd5ZO.mjs → EventCombined.client-LTfR1Aby.mjs} +6 -6
  134. package/dist/client/{EventListing.client-BMRa9IYp.mjs → EventListing.client-DUHpYSuo.mjs} +2 -2
  135. package/dist/client/{LeafletStaticMap-D21W9kBZ.mjs → LeafletStaticMap-CHRupL6m.mjs} +1 -1
  136. package/dist/client/{accordion-FxF_ta47.mjs → accordion-6HiIFxNL.mjs} +1 -1
  137. package/dist/client/{bookingForm-YnwW4TGw.mjs → bookingForm-Dlmid43H.mjs} +7 -7
  138. package/dist/client/bookings.mjs +325 -140
  139. package/dist/client/{carousel-vng7fFT5.mjs → carousel-DmkZRRq_.mjs} +2 -2
  140. package/dist/client/{carousel.client-59G_WMr4.mjs → carousel.client-DQTjCVQT.mjs} +1 -1
  141. package/dist/client/{cart-DEPDsjNk.mjs → cart-CIC24330.mjs} +3 -3
  142. package/dist/client/{checkout-CZRWu9rW.mjs → checkout-D1Zw9imo.mjs} +3 -3
  143. package/dist/client/{checkoutUrls-BuseL0dw.mjs → checkoutUrls-FL6lRkrt.mjs} +1 -1
  144. package/dist/client/client.mjs +1717 -882
  145. package/dist/client/{colorStyles-CrxJrPjJ.mjs → colorStyles-3013aRAY.mjs} +3 -1
  146. package/dist/client/{context-DvU_WUmd.mjs → context-Cy1OayHx.mjs} +6 -19
  147. package/dist/client/{dates-wnPMiRl5.mjs → dates-aDcfoLHr.mjs} +2 -2
  148. package/dist/client/{eventCalendar-BA3Q5L15.mjs → eventCalendar-FQxMPAjf.mjs} +8 -8
  149. package/dist/client/{eventCombined-51wgR-1R.mjs → eventCombined-Dr3ac6Hb.mjs} +3 -3
  150. package/dist/client/{eventDetails-modaetpm.mjs → eventDetails-D-AzUHFQ.mjs} +4 -4
  151. package/dist/client/{eventListing-D8t2J3Kv.mjs → eventListing-B3XxBf3i.mjs} +3 -3
  152. package/dist/client/{eventRegistration-CYqtkCE_.mjs → eventRegistration-I6EaokFD.mjs} +500 -152
  153. package/dist/client/{form-CBKXN5In.mjs → form-BbWckVWY.mjs} +3 -3
  154. package/dist/client/{headerSection-DylDqNrs.mjs → headerSection-C9qU4Y7x.mjs} +2 -2
  155. package/dist/client/hooks.mjs +445 -180
  156. package/dist/client/{locationMap-CvWrG0vZ.mjs → locationMap-CLCShvlG.mjs} +3 -3
  157. package/dist/client/{media-BOHuueS5.mjs → media-DHpfFwd3.mjs} +1 -1
  158. package/dist/client/{newsletterForm-Btwk70zw.mjs → newsletterForm-Briukxzi.mjs} +130 -87
  159. package/dist/client/{pricing-Uzw-GQ6Y.mjs → pricing-Copadu-2.mjs} +1 -1
  160. package/dist/client/{productDetail-JLcUYKnd.mjs → productDetail-oujlRd-r.mjs} +3 -3
  161. package/dist/client/{productList-FM0cbUzj.mjs → productList-BRiIRUcd.mjs} +3 -3
  162. package/dist/client/{propsDecoder-DYzafZb2.mjs → propsDecoder-CB2KS_ko.mjs} +130 -24
  163. package/dist/client/rendering/client.mjs +911 -400
  164. package/dist/client/rendering/islands.mjs +19 -19
  165. package/dist/client/rendering.mjs +1696 -818
  166. package/dist/client/{scrollToBlock-CvXszexS.mjs → scrollToBlock-B1IS1_ua.mjs} +1 -1
  167. package/dist/client/{shop-BIcjvy5a.mjs → shop-Vn6yNFED.mjs} +6 -6
  168. package/dist/client/{shop-commerce-BZQsy7xw.mjs → shop-commerce-BVTqipYp.mjs} +7 -7
  169. package/dist/client/{shop-commerce-store-D5V7XAb5.mjs → shop-commerce-store-BVnJVy7v.mjs} +1 -1
  170. package/dist/client/{shopShared-DowkXevB.mjs → shopShared-COIeK77T.mjs} +4 -4
  171. package/dist/client/{useEventFilters-oMoTw_JE.mjs → useEventFilters-DzIUcS9n.mjs} +7 -7
  172. package/dist/preview-next/before-render.mjs +119 -64
  173. package/dist/preview-next/client/runtime.mjs +4 -4
  174. package/dist/preview-next/keepAlive.mjs +119 -64
  175. package/dist/preview-next/middleware.mjs +119 -64
  176. package/dist/{previewAuthStore-COUyAKaX.mjs → previewAuthStore-Gjb6r6vz.mjs} +119 -64
  177. package/dist/{sdk-runtime-D4k2LSGF.mjs → sdk-runtime-CnCLvZRv.mjs} +2 -2
  178. package/dist/{separator-UGtpag4Z.mjs → separator-DKDRJ1oH.mjs} +1 -1
  179. package/dist/server/components.mjs +787 -323
  180. package/dist/server/config-validation.mjs +328 -79
  181. package/dist/server/config.mjs +332 -83
  182. package/dist/server/data.mjs +441 -180
  183. package/dist/server/index.mjs +126 -66
  184. package/dist/server/next.mjs +1031 -595
  185. package/dist/server/page-converter.mjs +183 -74
  186. package/dist/server/prebuild.mjs +1 -1
  187. package/dist/server/rendering/server.mjs +1068 -592
  188. package/dist/server/rendering.mjs +802 -324
  189. package/dist/server/routing.mjs +506 -214
  190. package/dist/server/server.mjs +468 -244
  191. package/dist/server/theme-bridge.mjs +433 -100
  192. package/dist/server/theme.mjs +8 -2
  193. package/dist/styles/index.css +237 -43
  194. package/package.json +1 -1
  195. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionCompactRow.d.ts +0 -29
  196. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionList.d.ts +0 -13
@@ -1314,10 +1314,12 @@ const unsafeAsApiKeyId = (id) => id;
1314
1314
  const unsafeAsEventOfferingId = (id) => id;
1315
1315
  const unsafeAsEventSeriesId = (id) => id;
1316
1316
  const unsafeAsUserId = (id) => id;
1317
+ const unsafeAsContentVersionId = (id) => id;
1317
1318
  const parseSiteId = (value) => parseUuidBrand(value, unsafeAsSiteId);
1318
1319
  const parseApiKeyId = (value) => parseUuidBrand(value, unsafeAsApiKeyId);
1319
1320
  const parseEventOfferingId = (value) => parseUuidBrand(value, unsafeAsEventOfferingId);
1320
1321
  const parseUserId = (value) => parseUuidBrand(value, unsafeAsUserId);
1322
+ const parseContentVersionId = (value) => parseUuidBrand(value, unsafeAsContentVersionId);
1321
1323
  const parseEventSeriesId = (value) => parseUuidBrand(value, unsafeAsEventSeriesId);
1322
1324
  //#endregion
1323
1325
  //#region ../core/src/assert-never.ts
@@ -1551,7 +1553,7 @@ function parseEventPageSurfaceDestinationMode(value) {
1551
1553
  return value === "cms-managed" || value === "system-managed" ? value : void 0;
1552
1554
  }
1553
1555
  function parseEventPageSurfaceSubject(value) {
1554
- if (!isRecord$10(value)) return err({ kind: "notObject" });
1556
+ if (!isRecord$11(value)) return err({ kind: "notObject" });
1555
1557
  switch (value.kind) {
1556
1558
  case "eventSeries": {
1557
1559
  const eventSeriesId = parseEventSeriesId(value.eventSeriesId);
@@ -1606,7 +1608,7 @@ function parseEventSeriesIdList(values) {
1606
1608
  }
1607
1609
  return ok(parsed);
1608
1610
  }
1609
- function isRecord$10(value) {
1611
+ function isRecord$11(value) {
1610
1612
  return typeof value === "object" && value !== null && !Array.isArray(value);
1611
1613
  }
1612
1614
  //#endregion
@@ -1790,16 +1792,47 @@ function parsePositiveInteger(value) {
1790
1792
  function parseNewsletterListId(value) {
1791
1793
  return parseTrimmedMatchingString(value, UUID_PATTERN);
1792
1794
  }
1795
+ function parseMailchimpAccountId(value) {
1796
+ return parseTrimmedMatchingString(value, OPAQUE_ID_PATTERN);
1797
+ }
1793
1798
  function parseMailchimpAudienceId(value) {
1794
1799
  return parseTrimmedMatchingString(value, OPAQUE_ID_PATTERN);
1795
1800
  }
1796
1801
  function parseMailchimpInterestId(value) {
1797
1802
  return parseTrimmedMatchingString(value, OPAQUE_ID_PATTERN);
1798
1803
  }
1804
+ function parseBrevoAccountId(value) {
1805
+ return parseTrimmedMatchingString(value, OPAQUE_ID_PATTERN);
1806
+ }
1799
1807
  function parseBrevoListId(value) {
1800
1808
  return parsePositiveInteger(value);
1801
1809
  }
1802
1810
  //#endregion
1811
+ //#region ../core/src/mailing-list-setup.ts
1812
+ function isRecord$10(value) {
1813
+ return typeof value === "object" && value !== null && !Array.isArray(value);
1814
+ }
1815
+ const DEFAULT_MAILING_LIST_SUCCESS_MESSAGE = "Thanks — you're on the list.";
1816
+ function parseMailingListProviderScope(value) {
1817
+ if (!isRecord$10(value)) return err("invalid_mailing_list_provider_scope");
1818
+ if (value.provider === "native") return ok({ provider: "native" });
1819
+ if (value.provider === "brevo") {
1820
+ const accountId = parseBrevoAccountId(value.accountId);
1821
+ return accountId !== null ? ok({
1822
+ provider: "brevo",
1823
+ accountId
1824
+ }) : err("invalid_mailing_list_provider_scope");
1825
+ }
1826
+ if (value.provider === "mailchimp") {
1827
+ const accountId = parseMailchimpAccountId(value.accountId);
1828
+ return accountId !== null ? ok({
1829
+ provider: "mailchimp",
1830
+ accountId
1831
+ }) : err("invalid_mailing_list_provider_scope");
1832
+ }
1833
+ return err("invalid_mailing_list_provider_scope");
1834
+ }
1835
+ //#endregion
1803
1836
  //#region ../core/src/mailing-list-setup-parser.ts
1804
1837
  function parseMailingListGlobalForm(value) {
1805
1838
  if (!isRecord$9(value)) return formError("shape");
@@ -1808,12 +1841,15 @@ function parseMailingListGlobalForm(value) {
1808
1841
  if (typeof value.includeOptionalPhone !== "boolean") return formError("includeOptionalPhone");
1809
1842
  const buttonLabel = parseRequiredString(value.buttonLabel);
1810
1843
  if (buttonLabel === null) return formError("buttonLabel");
1844
+ const successMessage = parseRequiredString(value.successMessage);
1845
+ if (successMessage === null) return formError("successMessage");
1811
1846
  const privacyNote = parseOptionalString(value.privacyNote);
1812
1847
  if (privacyNote === void 0) return formError("privacyNote");
1813
1848
  return ok({
1814
1849
  fields,
1815
1850
  includeOptionalPhone: value.includeOptionalPhone,
1816
1851
  buttonLabel,
1852
+ successMessage,
1817
1853
  privacyNote
1818
1854
  });
1819
1855
  }
@@ -2143,11 +2179,17 @@ function parseMailingListSignedSourceToken(value) {
2143
2179
  const parsed = typeof value === "string" ? value.trim() : "";
2144
2180
  return /^[A-Za-z0-9._~-]{16,1000}$/u.test(parsed) ? parsed : null;
2145
2181
  }
2146
- function buildMailingListSignupBlockSourceRef(blockId) {
2147
- const parsed = parseMailingListBlockId(blockId);
2148
- return parsed !== null ? {
2182
+ function parseMailingListContentVersionId(value) {
2183
+ const parsed = parseContentVersionId(value);
2184
+ return parsed.ok ? parsed.value : null;
2185
+ }
2186
+ function buildMailingListSignupBlockSourceRef(blockId, contentVersionId) {
2187
+ const parsedBlockId = parseMailingListBlockId(blockId);
2188
+ const parsedContentVersionId = parseMailingListContentVersionId(contentVersionId);
2189
+ return parsedBlockId !== null && parsedContentVersionId !== null ? {
2149
2190
  tag: "block_ref",
2150
- blockId: parsed
2191
+ blockId: parsedBlockId,
2192
+ contentVersionId: parsedContentVersionId
2151
2193
  } : null;
2152
2194
  }
2153
2195
  //#endregion
@@ -2652,6 +2694,14 @@ const PUBLIC_BOOKING_AVAILABILITY_ENDPOINT_DEFINITIONS = defineEndpointDefinitio
2652
2694
  auth: "public",
2653
2695
  responseKind: "json"
2654
2696
  },
2697
+ getPublicBookingServiceBySlug: {
2698
+ path: "/public/bookings/services/by-slug/{slug}",
2699
+ method: "GET",
2700
+ revalidate: publicReadFreshnessSeconds("getPublicBookingService"),
2701
+ tags: [TAG_TEMPLATES.publicBookingServices],
2702
+ auth: "public",
2703
+ responseKind: "json"
2704
+ },
2655
2705
  getPublicBookingResourcesReference: {
2656
2706
  path: "/public/bookings/resources/reference",
2657
2707
  method: "GET",
@@ -3204,16 +3254,110 @@ const PUBLIC_READ_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
3204
3254
  responseKind: "json"
3205
3255
  }
3206
3256
  });
3257
+ //#endregion
3258
+ //#region ../api/src/publicOnboardingAttemptEndpointDefinitions.ts
3259
+ /**
3260
+ * The anonymous onboarding attempt, addressed by its opaque resume token.
3261
+ *
3262
+ * Every route here is reached before there is an account, so none of them can
3263
+ * be scoped to a site or a user: the token is the whole credential. They are
3264
+ * kept together so that stays obvious.
3265
+ */
3266
+ const PUBLIC_ONBOARDING_ATTEMPT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
3267
+ createPublicOnboardingAttempt: {
3268
+ path: "/public/onboarding/attempts",
3269
+ method: "POST",
3270
+ auth: "public",
3271
+ errors: [],
3272
+ responseKind: "json"
3273
+ },
3274
+ createPublicOnboardingLogoUploadUrl: {
3275
+ path: "/public/onboarding/attempts/{attemptToken}/logo-upload-url",
3276
+ method: "POST",
3277
+ auth: "public",
3278
+ errors: [],
3279
+ responseKind: "json"
3280
+ },
3281
+ uploadPublicOnboardingLogo: {
3282
+ path: "/public/onboarding/attempts/{attemptToken}/logo",
3283
+ method: "POST",
3284
+ auth: "public",
3285
+ errors: [],
3286
+ responseKind: "json"
3287
+ },
3288
+ getPublicOnboardingAttempt: {
3289
+ path: "/public/onboarding/attempts/{attemptToken}",
3290
+ method: "GET",
3291
+ auth: "public",
3292
+ errors: [],
3293
+ responseKind: "json"
3294
+ },
3295
+ getPublicOnboardingAttemptProgress: {
3296
+ path: "/public/onboarding/attempts/{attemptToken}/status",
3297
+ method: "GET",
3298
+ auth: "public",
3299
+ errors: [],
3300
+ responseKind: "json"
3301
+ },
3302
+ updatePublicOnboardingAttempt: {
3303
+ path: "/public/onboarding/attempts/{attemptToken}",
3304
+ method: "PATCH",
3305
+ auth: "public",
3306
+ errors: [],
3307
+ responseKind: "json"
3308
+ },
3309
+ runPublicOnboardingAttempt: {
3310
+ path: "/public/onboarding/attempts/{attemptToken}/run",
3311
+ method: "POST",
3312
+ auth: "public",
3313
+ errors: [],
3314
+ responseKind: "json"
3315
+ },
3316
+ resendPublicOnboardingAttemptConfirmation: {
3317
+ path: "/public/onboarding/attempts/{attemptToken}/resend-confirmation",
3318
+ method: "POST",
3319
+ auth: "public",
3320
+ errors: [],
3321
+ responseKind: "json"
3322
+ }
3323
+ });
3324
+ //#endregion
3325
+ //#region ../api/src/billingEndpointDefinitions.ts
3326
+ const BILLING_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
3327
+ adminChangePlan: {
3328
+ path: "/admin/billing/plan",
3329
+ method: "POST",
3330
+ tags: ["admin", "billing"],
3331
+ auth: "admin",
3332
+ responseKind: "json"
3333
+ },
3334
+ changePlan: {
3335
+ path: "/billing/plan/change",
3336
+ method: "POST",
3337
+ tags: ["billing"],
3338
+ auth: "user",
3339
+ responseKind: "json"
3340
+ },
3341
+ createBillingPortalSession: {
3342
+ path: "/billing/portal/session",
3343
+ method: "POST",
3344
+ tags: ["billing"],
3345
+ auth: "user",
3346
+ responseKind: "json"
3347
+ }
3348
+ });
3207
3349
  ({
3208
3350
  ...ACCOUNT_ENDPOINT_DEFINITIONS,
3351
+ ...PUBLIC_ONBOARDING_ATTEMPT_ENDPOINT_DEFINITIONS,
3209
3352
  ...PUBLIC_EVENT_ENDPOINT_DEFINITIONS,
3210
3353
  ...GIFTING_ENDPOINT_DEFINITIONS,
3211
- ...PUBLIC_READ_ENDPOINT_DEFINITIONS
3354
+ ...PUBLIC_READ_ENDPOINT_DEFINITIONS,
3355
+ ...BILLING_ENDPOINT_DEFINITIONS
3212
3356
  }), TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, { ...SITE_API_KEY_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.site, TAG_TEMPLATES.siteBookingSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteBookingSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, {
3213
3357
  ...NEWSLETTER_ENDPOINT_DEFINITIONS,
3214
3358
  ...APPOINTMENT_ENDPOINT_DEFINITIONS,
3215
3359
  ...EVENT_SERIES_REGISTRATION_ENDPOINT_DEFINITIONS
3216
- }, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteById, TAG_TEMPLATES.siteBySlug, TAG_TEMPLATES.siteByDomain, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteById, TAG_TEMPLATES.siteBySlug, TAG_TEMPLATES.siteByDomain, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.workflowRunById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.routeById, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.navigationItemById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.navigationItemById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRedirects, TAG_TEMPLATES.siteRouteOutcomes, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRedirects, TAG_TEMPLATES.siteRouteOutcomes, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, { ...PUBLIC_BOOKING_AVAILABILITY_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicEventFilters, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicShop, TAG_TEMPLATES.publicCheckout, TAG_TEMPLATES.siteRoutableContent, { ...PUBLIC_EVENT_CHECKOUT_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, { ...EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS }, { ...SDK_MEDIA_ENDPOINT_DEFINITIONS }, { ...SDK_ENDPOINT_DEFINITIONS }, { ...SDK_ENTRY_READ_ENDPOINTS };
3360
+ }, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteById, TAG_TEMPLATES.siteBySlug, TAG_TEMPLATES.siteByDomain, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteById, TAG_TEMPLATES.siteBySlug, TAG_TEMPLATES.siteByDomain, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.workflowRunById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.routeById, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.navigationItemById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.navigationItemById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicBookingServices, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRedirects, TAG_TEMPLATES.siteRouteOutcomes, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRedirects, TAG_TEMPLATES.siteRouteOutcomes, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, { ...PUBLIC_BOOKING_AVAILABILITY_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicEventFilters, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicShop, TAG_TEMPLATES.publicCheckout, TAG_TEMPLATES.siteRoutableContent, { ...PUBLIC_EVENT_CHECKOUT_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, { ...EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS }, { ...SDK_MEDIA_ENDPOINT_DEFINITIONS }, { ...SDK_ENDPOINT_DEFINITIONS }, { ...SDK_ENTRY_READ_ENDPOINTS };
3217
3361
  z.object({ refreshToken: z.string().min(1).max(4096) }).strict();
3218
3362
  z.object({
3219
3363
  accessToken: z.string().min(1).max(4096),
@@ -6379,59 +6523,6 @@ function interpolateHex(startHex, endHex, position) {
6379
6523
  const channel = (from, to) => Math.round(from + (to - from) * position).toString(16).padStart(2, "0");
6380
6524
  return `#${channel(start.r, end.r)}${channel(start.g, end.g)}${channel(start.b, end.b)}`;
6381
6525
  }
6382
- shadeBackgroundEffect({
6383
- id: "darken-background",
6384
- name: "Darken on Hover",
6385
- description: "Darkens the background color on hover",
6386
- label: "Darken Amount (shade step)",
6387
- shadeDirection: 1
6388
- });
6389
- shadeBackgroundEffect({
6390
- id: "lighten-background",
6391
- name: "Lighten on Hover",
6392
- description: "Lightens the background color on hover",
6393
- label: "Lighten Amount (shade step)",
6394
- shadeDirection: -1
6395
- });
6396
- function shadeBackgroundEffect(config) {
6397
- return {
6398
- id: config.id,
6399
- name: config.name,
6400
- description: config.description,
6401
- category: "background",
6402
- pseudoElement: "none",
6403
- applicableTo: ["button"],
6404
- customizableOption: {
6405
- name: "amount",
6406
- type: "select",
6407
- label: config.label,
6408
- default: 100,
6409
- options: [
6410
- 0,
6411
- 100,
6412
- 200,
6413
- 300,
6414
- 400,
6415
- 500,
6416
- 600,
6417
- 700,
6418
- 800,
6419
- 900
6420
- ]
6421
- },
6422
- isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
6423
- generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
6424
- if (buttonConfig.background.type !== "solid") return "";
6425
- const amount = (options.amount || 100) * config.shadeDirection;
6426
- const baseToken = buttonConfig.background.colorToken ?? "primary-500";
6427
- return `
6428
- :where([data-theme-scope="${themeId}"]) .${variantId}:hover {
6429
- background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
6430
- }
6431
- `;
6432
- }
6433
- };
6434
- }
6435
6526
  //#endregion
6436
6527
  //#region ../theme-core/src/palette/utils/opaqueSurfaceColor.ts
6437
6528
  /** Resolve an opaque colour, compositing alpha against an explicit underlay. */
@@ -6716,6 +6807,59 @@ function mergeStyles(...styles) {
6716
6807
  }
6717
6808
  return Object.keys(merged).length ? merged : void 0;
6718
6809
  }
6810
+ shadeBackgroundEffect({
6811
+ id: "darken-background",
6812
+ name: "Darken on Hover",
6813
+ description: "Darkens the background color on hover",
6814
+ label: "Darken Amount (shade step)",
6815
+ shadeDirection: 1
6816
+ });
6817
+ shadeBackgroundEffect({
6818
+ id: "lighten-background",
6819
+ name: "Lighten on Hover",
6820
+ description: "Lightens the background color on hover",
6821
+ label: "Lighten Amount (shade step)",
6822
+ shadeDirection: -1
6823
+ });
6824
+ function shadeBackgroundEffect(config) {
6825
+ return {
6826
+ id: config.id,
6827
+ name: config.name,
6828
+ description: config.description,
6829
+ category: "background",
6830
+ pseudoElement: "none",
6831
+ applicableTo: ["button"],
6832
+ customizableOption: {
6833
+ name: "amount",
6834
+ type: "select",
6835
+ label: config.label,
6836
+ default: 100,
6837
+ options: [
6838
+ 0,
6839
+ 100,
6840
+ 200,
6841
+ 300,
6842
+ 400,
6843
+ 500,
6844
+ 600,
6845
+ 700,
6846
+ 800,
6847
+ 900
6848
+ ]
6849
+ },
6850
+ isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
6851
+ generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
6852
+ if (buttonConfig.background.type !== "solid") return "";
6853
+ const amount = (options.amount || 100) * config.shadeDirection;
6854
+ const baseToken = buttonConfig.background.colorToken ?? "primary-500";
6855
+ return `
6856
+ :where([data-theme-scope="${themeId}"]) .${variantId}:hover {
6857
+ background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
6858
+ }
6859
+ `;
6860
+ }
6861
+ };
6862
+ }
6719
6863
  //#endregion
6720
6864
  //#region ../theme-core/src/utils/tokenOrColor.ts
6721
6865
  /**
@@ -10138,8 +10282,14 @@ const headerInteractionPillPaletteValues = [
10138
10282
  "accent"
10139
10283
  ];
10140
10284
  /**
10141
- * "No pill": the nav link keeps whatever hover treatment its recipe compiled,
10142
- * and the palette step writes nothing at all (#1318 Phase 4c decision 2).
10285
+ * "No pill": a colour change on hover rather than a filled background.
10286
+ *
10287
+ * The palette step writes nothing (#1318 Phase 4c decision 2), but on a
10288
+ * foreground-adaptive style that is not the end of the story: the hover colour
10289
+ * is derived from the resolved opening foreground at render time, paired with
10290
+ * the resting colour, so `quiet` resolves to a definite colour rather than to
10291
+ * whatever brand token the recipe happened to name. See
10292
+ * `applyOpeningForeground`.
10143
10293
  *
10144
10294
  * It exists because "a colour change on hover, no filled background" was not
10145
10295
  * expressible in the vocabulary, and it is what
@@ -27439,6 +27589,28 @@ const bookingRequirementConsentFieldSchema = z.object({
27439
27589
  z.union([blockBookingConsentSchema, bookingRequirementConsentFieldSchema]);
27440
27590
  //#endregion
27441
27591
  //#region ../blocks/src/system/blocks/events/shared/schemas.ts
27592
+ const publicEventLoaderQuerySchemaShape = {
27593
+ limit: z.string().optional(),
27594
+ from: z.string().optional(),
27595
+ to: z.string().optional(),
27596
+ afterStartsAt: z.string().optional(),
27597
+ afterId: z.string().optional(),
27598
+ categoryIds: z.string().optional(),
27599
+ venueId: z.string().optional(),
27600
+ staffMemberId: z.string().optional(),
27601
+ eventSurface: z.string().optional(),
27602
+ eventPresets: z.string().optional(),
27603
+ scheduleScope: z.string().optional(),
27604
+ seriesId: z.string().optional(),
27605
+ seriesIds: z.string().optional(),
27606
+ runSeriesId: z.string().optional(),
27607
+ seriesSlug: z.string().optional(),
27608
+ includeOccurrenceId: z.string().optional(),
27609
+ readIntent: z.string().optional(),
27610
+ detailLevel: z.string().optional(),
27611
+ readProfile: z.string().optional()
27612
+ };
27613
+ z.object(publicEventLoaderQuerySchemaShape);
27442
27614
  const eventPresetSchema = z.enum([
27443
27615
  "event",
27444
27616
  "class",
@@ -28241,6 +28413,44 @@ function toWholeSeriesRegistrationEvents(events) {
28241
28413
  return groupPublicEventsByRun(events).map(toWholeSeriesRegistrationEvent).filter((event) => event !== null);
28242
28414
  }
28243
28415
  //#endregion
28416
+ //#region ../blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.ts
28417
+ const { limit: _rawLimit, eventSurface: _rawEventSurface, scheduleScope: _rawScheduleScope, detailLevel: _rawDetailLevel, ...stringEventQueryShape } = publicEventLoaderQuerySchemaShape;
28418
+ const eventRecoveryRequestSchema = z.object({
28419
+ ...stringEventQueryShape,
28420
+ limit: z.coerce.number().int().positive().optional(),
28421
+ eventSurface: z.enum(eventSurfaceScopeValues).optional(),
28422
+ scheduleScope: z.enum(eventScheduleScopeValues).optional(),
28423
+ detailLevel: z.enum(["full", "listing"]).optional(),
28424
+ stage: z.enum(["preview", "published"]).optional()
28425
+ });
28426
+ function resolveEventRegistrationEventSource(input) {
28427
+ if (input.wholeSeriesRunEvents != null) return {
28428
+ kind: "loaded",
28429
+ events: input.wholeSeriesRunEvents
28430
+ };
28431
+ if (input.events != null) return {
28432
+ kind: "loaded",
28433
+ events: input.events
28434
+ };
28435
+ return {
28436
+ kind: "unresolved",
28437
+ request: parseEventLoaderRecoveryRequest(input.failures?.wholeSeriesRunEvents ?? input.failures?.events)
28438
+ };
28439
+ }
28440
+ const eventLoaderFailureSchema = z.object({
28441
+ endpoint: z.literal("listPublicEvents"),
28442
+ params: eventRecoveryRequestSchema.extend({ siteId: z.string().optional() })
28443
+ });
28444
+ function parseEventLoaderRecoveryRequest(value) {
28445
+ const parsed = eventLoaderFailureSchema.safeParse(value);
28446
+ if (!parsed.success) return null;
28447
+ const { siteId: _siteId, stage, ...params } = parsed.data.params;
28448
+ return {
28449
+ ...params,
28450
+ stage: stage ?? "published"
28451
+ };
28452
+ }
28453
+ //#endregion
28244
28454
  //#region ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
28245
28455
  const EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS = [
28246
28456
  "Date",
@@ -28258,8 +28468,6 @@ const eventRegistrationPublicEventSchema = z.preprocess(normalizeEventRegistrati
28258
28468
  const eventRegistrationHydrationSchemaShape = {
28259
28469
  occurrenceContext: occurrenceContextSchema.optional(),
28260
28470
  subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
28261
- events: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
28262
- wholeSeriesRunEvents: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
28263
28471
  maxTickets: z.string().optional(),
28264
28472
  showVenue: z.boolean().optional(),
28265
28473
  showCapacity: z.boolean().optional(),
@@ -28271,12 +28479,22 @@ const eventRegistrationHydrationSchemaShape = {
28271
28479
  sitePasses: publicPassProductCollectionSchema.nullable().optional(),
28272
28480
  siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
28273
28481
  };
28482
+ const eventRegistrationEventSourceSchema = z.discriminatedUnion("kind", [z.object({
28483
+ kind: z.literal("loaded"),
28484
+ events: z.array(eventRegistrationPublicEventSchema)
28485
+ }), z.object({
28486
+ kind: z.literal("unresolved"),
28487
+ request: eventRecoveryRequestSchema.nullable()
28488
+ })]);
28274
28489
  const eventRegistrationSourceSchema = z.object({
28275
28490
  siteId: z.string().optional(),
28276
28491
  apiBaseUrl: z.string().optional(),
28277
28492
  portalToken: z.string().nullable().optional(),
28278
28493
  previewToken: z.string().nullable().optional(),
28279
28494
  ...eventRegistrationHydrationSchemaShape,
28495
+ events: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
28496
+ wholeSeriesRunEvents: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
28497
+ eventLoaderFailures: z.record(z.string(), z.unknown()).nullable().optional(),
28280
28498
  className: z.string().nullable().optional(),
28281
28499
  buttonText: z.string().nullable().optional(),
28282
28500
  maxTickets: z.string().nullable().optional(),
@@ -28297,7 +28515,10 @@ const eventRegistrationDisplaySchema = z.discriminatedUnion("state", [z.object({
28297
28515
  titleText: z.string(),
28298
28516
  bodyText: z.string()
28299
28517
  })]);
28300
- const eventRegistrationHydrationSchema = z.object(eventRegistrationHydrationSchemaShape);
28518
+ const eventRegistrationHydrationSchema = z.object({
28519
+ ...eventRegistrationHydrationSchemaShape,
28520
+ eventSource: eventRegistrationEventSourceSchema
28521
+ });
28301
28522
  const eventRegistrationRenderSchema = z.object({
28302
28523
  display: eventRegistrationDisplaySchema,
28303
28524
  hydration: eventRegistrationHydrationSchema
@@ -28356,16 +28577,12 @@ function buildEventRegistrationShellStepLabels(source, scopedSourceEvents) {
28356
28577
  function toScopedEventRegistrationEvents(scopedSourceEvents) {
28357
28578
  return [...toRegistrationEvents(scopedSourceEvents), ...toWholeSeriesRegistrationEvents(scopedSourceEvents)];
28358
28579
  }
28359
- function scopeEventRegistrationSourceEvents(source) {
28360
- return resolveEventRegistrationScopedEvents(source.wholeSeriesRunEvents ?? source.events ?? [], {
28580
+ function scopeEventRegistrationSourceEvents(source, eventSource) {
28581
+ return resolveEventRegistrationScopedEvents(eventSource.kind === "loaded" ? eventSource.events : [], {
28361
28582
  occurrenceContext: source.occurrenceContext,
28362
28583
  subject: source.subject
28363
28584
  });
28364
28585
  }
28365
- function resolveLoadedEventRegistrationSourceEvents(source, scopedSourceEvents) {
28366
- if (source.events == null && source.wholeSeriesRunEvents == null) return null;
28367
- return [...scopedSourceEvents];
28368
- }
28369
28586
  /**
28370
28587
  * The one run this surface is registering for, when the scoped events describe
28371
28588
  * exactly one. More than one run means the visitor still has to choose.
@@ -28405,14 +28622,21 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
28405
28622
  render: createZodCodec(eventRegistrationRenderSchema)
28406
28623
  },
28407
28624
  buildRender: (source) => {
28408
- const scopedSourceEvents = scopeEventRegistrationSourceEvents(source);
28409
- const events = resolveLoadedEventRegistrationSourceEvents(source, scopedSourceEvents);
28625
+ const eventSource = resolveEventRegistrationEventSource({
28626
+ events: source.events,
28627
+ wholeSeriesRunEvents: source.wholeSeriesRunEvents,
28628
+ failures: source.eventLoaderFailures
28629
+ });
28630
+ const scopedSourceEvents = scopeEventRegistrationSourceEvents(source, eventSource);
28410
28631
  return {
28411
28632
  display: buildEventRegistrationDisplayFromScopedEvents(source, scopedSourceEvents),
28412
28633
  hydration: {
28413
28634
  occurrenceContext: source.occurrenceContext ?? null,
28414
28635
  subject: source.subject ?? null,
28415
- events,
28636
+ eventSource: eventSource.kind === "loaded" ? {
28637
+ ...eventSource,
28638
+ events: [...scopedSourceEvents]
28639
+ } : eventSource,
28416
28640
  maxTickets: source.maxTickets ?? void 0,
28417
28641
  showVenue: source.showVenue,
28418
28642
  showCapacity: source.showCapacity,
@@ -28588,6 +28812,7 @@ const eventRegistrationBlockDefinition = {
28588
28812
  } },
28589
28813
  events: { $bind: { from: "data.events" } },
28590
28814
  wholeSeriesRunEvents: { $bind: { from: "data.wholeSeriesRunEvents" } },
28815
+ loaderFailures: { $bind: { from: "$root.loaderFailures" } },
28591
28816
  sitePasses: { $bind: { from: "data.sitePasses" } },
28592
28817
  siteMemberships: { $bind: { from: "data.siteMemberships" } },
28593
28818
  stage: { $bind: {
@@ -35010,6 +35235,15 @@ const newsletterFieldSchema = z.object({
35010
35235
  placeholder: z.string().optional()
35011
35236
  });
35012
35237
  const mailingListSignupBlockIdSchema = z.string().trim().min(1).transform(parseRequiredMailingListSignupBlockId);
35238
+ const mailingListContentVersionIdSchema = z.string().transform((value, ctx) => {
35239
+ const parsed = parseMailingListContentVersionId(value);
35240
+ if (parsed) return parsed;
35241
+ ctx.addIssue({
35242
+ code: z.ZodIssueCode.custom,
35243
+ message: "Invalid mailing-list content version ID"
35244
+ });
35245
+ return z.NEVER;
35246
+ });
35013
35247
  const signedMailingListSourceTokenSchema = z.string().trim().min(1).transform(parseRequiredMailingListSignedSourceToken);
35014
35248
  const newsletterSourceCommonSchema = z.object({
35015
35249
  siteId: z.string().optional(),
@@ -35023,7 +35257,8 @@ const newsletterSourceCommonSchema = z.object({
35023
35257
  const newsletterSourceSchema = z.discriminatedUnion("source", [
35024
35258
  newsletterSourceCommonSchema.extend({
35025
35259
  source: z.literal("block"),
35026
- blockId: z.string().nullable().optional()
35260
+ blockId: z.string().nullable().optional(),
35261
+ contentVersionId: z.string().nullable().optional()
35027
35262
  }),
35028
35263
  newsletterSourceCommonSchema.extend({
35029
35264
  source: z.literal("signed-footer"),
@@ -35039,6 +35274,7 @@ const newsletterDisplaySchema = z.object({
35039
35274
  availability: z.enum(["ready", "unavailable"]),
35040
35275
  className: z.string().nullable(),
35041
35276
  buttonLabel: z.string(),
35277
+ successMessage: z.string(),
35042
35278
  buttonVariant: newsletterButtonVariantSchema,
35043
35279
  privacyNote: z.string().nullable(),
35044
35280
  fields: z.array(newsletterFieldSchema),
@@ -35053,7 +35289,8 @@ const newsletterHydrationSchema = z.object({
35053
35289
  tag: z.literal("block-source"),
35054
35290
  sourceRef: z.object({
35055
35291
  tag: z.literal("block_ref"),
35056
- blockId: mailingListSignupBlockIdSchema
35292
+ blockId: mailingListSignupBlockIdSchema,
35293
+ contentVersionId: mailingListContentVersionIdSchema
35057
35294
  }).nullable()
35058
35295
  }),
35059
35296
  z.object({
@@ -35092,6 +35329,7 @@ function buildNewsletterDisplay(source) {
35092
35329
  fields: { preset: "emailOnly" },
35093
35330
  includeOptionalPhone: false,
35094
35331
  buttonLabel: "Subscribe",
35332
+ successMessage: DEFAULT_MAILING_LIST_SUCCESS_MESSAGE,
35095
35333
  privacyNote: null
35096
35334
  };
35097
35335
  const targeting = source.targeting ?? { mode: "default" };
@@ -35101,6 +35339,7 @@ function buildNewsletterDisplay(source) {
35101
35339
  availability: runtimeTargetingIsAvailable(context, targeting, choices) ? "ready" : "unavailable",
35102
35340
  className: source.className ?? null,
35103
35341
  buttonLabel: form.buttonLabel,
35342
+ successMessage: form.successMessage,
35104
35343
  buttonVariant: source.buttonVariant ?? "primary",
35105
35344
  privacyNote: form.privacyNote,
35106
35345
  fields: getGlobalFormFields(form),
@@ -35131,7 +35370,7 @@ const newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
35131
35370
  function projectNewsletterFormHydrationTarget(source) {
35132
35371
  switch (source.source) {
35133
35372
  case "block": {
35134
- const sourceRef = buildMailingListSignupBlockSourceRef(source.blockId);
35373
+ const sourceRef = buildMailingListSignupBlockSourceRef(source.blockId, source.contentVersionId);
35135
35374
  if (sourceRef?.tag === "block_ref") return {
35136
35375
  tag: "block-source",
35137
35376
  sourceRef
@@ -37622,7 +37861,17 @@ const riverbankSiteConfigInputSchema = z.object({
37622
37861
  z.object({
37623
37862
  config: riverbankSiteConfigInputSchema,
37624
37863
  forceContentTypes: z.boolean().optional(),
37625
- mode: z.enum(["apply", "preview"]).optional()
37864
+ mode: z.enum(["apply", "preview"]).optional(),
37865
+ expectedMailingListProviderScope: z.unknown().transform((value, ctx) => {
37866
+ if (value === void 0) return void 0;
37867
+ const parsed = parseMailingListProviderScope(value);
37868
+ if (parsed.ok) return parsed.value;
37869
+ ctx.addIssue({
37870
+ code: "custom",
37871
+ message: "Invalid mailing-list provider scope"
37872
+ });
37873
+ return z.NEVER;
37874
+ }).optional()
37626
37875
  }).strict();
37627
37876
  //#endregion
37628
37877
  //#region ../api/src/sdkThemeWire.ts