@riverbankcms/sdk 0.138.0 → 0.139.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 (208) hide show
  1. package/README.md +11 -15
  2. package/dist/{PreviewEditorSidebar-BVPur_CU.mjs → PreviewEditorSidebar-BDeenhi3.mjs} +4 -4
  3. package/dist/{PreviewEditorUI-DLhWX8oh.mjs → PreviewEditorUI-DSRhgjF5.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BguJY1SW.mjs → PreviewQueryProvider-D2K8GLUG.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-Tda6qw4z.mjs → SdkPreviewModeRuntime-CL7wSnYu.mjs} +47 -27
  6. package/dist/{SiteChromeCustomizeContext-BHFgMjde.mjs → SiteChromeCustomizeContext-BhDn-5ir.mjs} +7771 -5863
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +99 -330
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +9 -30
  9. package/dist/_dts/api/src/billing.d.ts +10 -3
  10. package/dist/_dts/api/src/contentRuntime.d.ts +8 -1
  11. package/dist/_dts/api/src/endpoints.d.ts +182 -103
  12. package/dist/_dts/api/src/footerSettings.d.ts +2 -5
  13. package/dist/_dts/api/src/index.d.ts +11 -9
  14. package/dist/_dts/api/src/mailchimpIntegration.d.ts +2 -59
  15. package/dist/_dts/api/src/mailingListIntegration.d.ts +117 -0
  16. package/dist/_dts/api/src/navigation/locations.d.ts +1 -0
  17. package/dist/_dts/api/src/navigation.d.ts +1 -26
  18. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +109 -2
  19. package/dist/_dts/api/src/onboarding/surfaceData.d.ts +185 -0
  20. package/dist/_dts/api/src/privacyPolicy.d.ts +74 -2
  21. package/dist/_dts/api/src/publicBookingAvailabilityEndpointDefinitions.d.ts +6 -6
  22. package/dist/_dts/api/src/publicEventEndpointDefinitions.d.ts +1 -1
  23. package/dist/_dts/api/src/publicExperience/newsletterEndpoints.d.ts +2 -4
  24. package/dist/_dts/api/src/publicExperience/sharedTypes.d.ts +10 -24
  25. package/dist/_dts/api/src/publicReadEndpointDefinitions.d.ts +73 -0
  26. package/dist/_dts/api/src/schemas/site-api-keys.d.ts +1 -1
  27. package/dist/_dts/api/src/sdkContracts.d.ts +2 -10
  28. package/dist/_dts/api/src/sdkThemeWire.d.ts +2 -2
  29. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +0 -29
  30. package/dist/_dts/api/src/siteOnboarding.d.ts +91 -228
  31. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -9
  32. package/dist/_dts/api/src/siteSettings.d.ts +20 -1
  33. package/dist/_dts/api/src/types.d.ts +5 -4
  34. package/dist/_dts/billing/src/membership/index.d.ts +14 -7
  35. package/dist/_dts/billing/src/plans/display.d.ts +15 -0
  36. package/dist/_dts/billing/src/plans/registry.d.ts +2 -0
  37. package/dist/_dts/billing/src/plans/standing.d.ts +19 -0
  38. package/dist/_dts/billing/src/plans/types.d.ts +1 -7
  39. package/dist/_dts/billing/src/subscriptions/evidence.d.ts +12 -0
  40. package/dist/_dts/billing/src/subscriptions/standingEvidence.d.ts +31 -0
  41. package/dist/_dts/billing/src/subscriptions/store.d.ts +23 -5
  42. package/dist/_dts/blocks/src/PageRenderer.d.ts +6 -15
  43. package/dist/_dts/blocks/src/client.d.ts +1 -1
  44. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +32 -16
  45. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +4 -0
  46. package/dist/_dts/blocks/src/pageRenderingMode.d.ts +12 -6
  47. package/dist/_dts/blocks/src/system/blocks/appointment-services.d.ts +11 -0
  48. package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +39 -66
  49. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +39 -114
  50. package/dist/_dts/blocks/src/system/blocks/offerings-preview/catalogue.d.ts +18 -0
  51. package/dist/_dts/blocks/src/system/blocks/offerings-preview/fields.d.ts +2 -0
  52. package/dist/_dts/blocks/src/system/blocks/offerings-preview/index.d.ts +4 -0
  53. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +7 -13
  54. package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
  55. package/dist/_dts/blocks/src/system/data/index.d.ts +2 -2
  56. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  57. package/dist/_dts/blocks/src/system/data/publicLoaderCachePolicy.d.ts +2 -74
  58. package/dist/_dts/blocks/src/system/fragments/library/newsletterForm.d.ts +33 -100
  59. package/dist/_dts/blocks/src/system/runtime/api/types/newsletter.d.ts +5 -15
  60. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +48 -24
  61. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +24 -12
  62. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.d.ts +3 -0
  63. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +1 -1
  64. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarToday.d.ts +22 -0
  65. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +51 -0
  66. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +2 -0
  67. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +0 -1
  68. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +28 -0
  69. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/bookability.d.ts +9 -0
  70. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +14 -0
  71. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/duration.d.ts +2 -0
  72. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/index.d.ts +4 -0
  73. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/location.d.ts +2 -0
  74. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/quickDates.d.ts +16 -0
  75. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/AgendaEventCard.d.ts +9 -1
  76. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarDayCell.d.ts +2 -0
  77. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarDayHeaders.d.ts +4 -0
  78. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/DayEventsModal.d.ts +2 -1
  79. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +5 -0
  80. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventModals.d.ts +2 -1
  81. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventQuickDates.d.ts +15 -0
  82. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekAgendaView.d.ts +7 -3
  83. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekTimetableView.d.ts +1 -0
  84. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/index.d.ts +2 -0
  85. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/timetableModel.d.ts +1 -0
  86. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/useHydrationReady.d.ts +6 -0
  87. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.state.d.ts +3 -0
  88. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +56 -33
  89. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +3 -3
  90. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +13 -31
  91. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview-catalogue.d.ts +14 -0
  92. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview-content.d.ts +23 -0
  93. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview.d.ts +4 -2
  94. package/dist/_dts/blocks/src/system/transforms/registry/formatting.d.ts +5 -0
  95. package/dist/_dts/commerce/src/purchase/index.d.ts +1 -0
  96. package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +5 -12
  97. package/dist/_dts/commerce/src/purchase/stripeCommissionMetadata.d.ts +34 -0
  98. package/dist/_dts/content-editor/src/footerEngagementDraft.d.ts +6 -24
  99. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +1 -2
  100. package/dist/_dts/core/src/footer-engagement.d.ts +2 -6
  101. package/dist/_dts/core/src/index.d.ts +9 -1
  102. package/dist/_dts/core/src/mailing-list-identifiers.d.ts +21 -0
  103. package/dist/_dts/core/src/mailing-list-runtime.d.ts +42 -0
  104. package/dist/_dts/core/src/mailing-list-setup-parser.d.ts +14 -0
  105. package/dist/_dts/core/src/mailing-list-setup.d.ts +129 -0
  106. package/dist/_dts/core/src/mailing-list-submission.d.ts +244 -0
  107. package/dist/_dts/core/src/mailing-list-targeting-parser.d.ts +12 -0
  108. package/dist/_dts/core/src/mailing-list-targeting.d.ts +93 -0
  109. package/dist/_dts/core/src/navigation-locations.d.ts +28 -0
  110. package/dist/_dts/core/src/public-profile.d.ts +9 -1
  111. package/dist/_dts/core/src/public-read-cache-contract.d.ts +45 -0
  112. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +529 -373
  113. package/dist/_dts/editor-blocks/src/widgets/index.d.ts +1 -0
  114. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListTargetingField.d.ts +11 -0
  115. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/context.d.ts +13 -0
  116. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/index.d.ts +3 -0
  117. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +6 -0
  118. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +1 -0
  119. package/dist/_dts/sdk/src/client/publicAppointmentReadOperations.d.ts +12 -0
  120. package/dist/_dts/sdk/src/client/publicEventReadOperations.d.ts +2 -1
  121. package/dist/_dts/sdk/src/client/publicLoaderCacheAccess.d.ts +11 -4
  122. package/dist/_dts/sdk/src/config/content-types.d.ts +3 -13
  123. package/dist/_dts/sdk/src/config/content-validation.d.ts +5 -8
  124. package/dist/_dts/sdk/src/constants.d.ts +3 -3
  125. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  126. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +12 -31
  127. package/dist/_dts/sdk/src/navigation/index.d.ts +11 -29
  128. package/dist/_dts/sdk/src/next/index.d.ts +4 -4
  129. package/dist/_dts/sdk/src/prebuild/types.d.ts +1 -5
  130. package/dist/_dts/sdk/src/public-api/contracts.d.ts +33 -16
  131. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +3 -0
  132. package/dist/_dts/sdk/src/rendering/client.d.ts +3 -20
  133. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +3 -0
  134. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +4 -0
  135. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +1 -0
  136. package/dist/_dts/sdk/src/rendering/index.d.ts +1 -1
  137. package/dist/_dts/sdk/src/types/block-kinds.d.ts +1 -1
  138. package/dist/_dts/sdk/src/version.d.ts +1 -1
  139. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  140. package/dist/_dts/theme-core/src/hosted-booking-appearance.d.ts +41 -0
  141. package/dist/_dts/theme-core/src/index.d.ts +1 -0
  142. package/dist/_dts/theme-core/src/runtime/buildThemeRuntime.d.ts +0 -1
  143. package/dist/_dts/theme-core/src/tokens/tokens.d.ts +7 -0
  144. package/dist/_dts/ui/src/badge.d.ts +1 -1
  145. package/dist/_dts/ui/src/callout.d.ts +1 -1
  146. package/dist/client/{BookingConsentAgreement-DQUik1Mx.mjs → BookingConsentAgreement-CZvTDtsK.mjs} +2 -2
  147. package/dist/client/{DiscountCodeDisclosure-CU67Q4vH.mjs → DiscountCodeDisclosure-D-DsLCMU.mjs} +1 -1
  148. package/dist/client/{EventCombined.client-a02TXUgg.mjs → EventCombined.client-dWqgd5ZO.mjs} +443 -199
  149. package/dist/client/{EventListing.client-99qx7jFl.mjs → EventListing.client-BMRa9IYp.mjs} +2 -2
  150. package/dist/client/{LeafletStaticMap-CWzcq73L.mjs → LeafletStaticMap-D21W9kBZ.mjs} +1 -1
  151. package/dist/client/{accordion-D1nb3-Oj.mjs → accordion-FxF_ta47.mjs} +1 -1
  152. package/dist/client/{bookingForm-BGrmLhaO.mjs → bookingForm-YnwW4TGw.mjs} +5 -5
  153. package/dist/client/bookings.mjs +43 -2
  154. package/dist/client/{carousel-DSmOx3ad.mjs → carousel-vng7fFT5.mjs} +1 -1
  155. package/dist/client/{cart-COWeOIUk.mjs → cart-DEPDsjNk.mjs} +3 -3
  156. package/dist/client/{checkout-CeysaIJK.mjs → checkout-CZRWu9rW.mjs} +3 -3
  157. package/dist/client/client.mjs +3331 -1407
  158. package/dist/client/{context-DBzX85Xc.mjs → context-DvU_WUmd.mjs} +4 -3
  159. package/dist/client/{dates-DCYhZBlW.mjs → dates-wnPMiRl5.mjs} +21 -3
  160. package/dist/client/{eventCalendar-BgsN73Ul.mjs → eventCalendar-BA3Q5L15.mjs} +80 -78
  161. package/dist/client/{eventCombined-DcZQAMQP.mjs → eventCombined-51wgR-1R.mjs} +3 -3
  162. package/dist/client/{eventDetails-BWwGJ54l.mjs → eventDetails-modaetpm.mjs} +4 -4
  163. package/dist/client/{eventListing-DqYqV8vp.mjs → eventListing-D8t2J3Kv.mjs} +3 -3
  164. package/dist/client/{eventRegistration-DQGDgu_e.mjs → eventRegistration-CYqtkCE_.mjs} +49 -9
  165. package/dist/client/{form-ClfpasVT.mjs → form-CBKXN5In.mjs} +2 -2
  166. package/dist/client/{headerSection-BuOMe98N.mjs → headerSection-DylDqNrs.mjs} +2 -2
  167. package/dist/client/hooks.mjs +1259 -555
  168. package/dist/client/{locationMap-CEqu_sfa.mjs → locationMap-CvWrG0vZ.mjs} +2 -2
  169. package/dist/client/{newsletterForm-IbrHjMxy.mjs → newsletterForm-Btwk70zw.mjs} +117 -38
  170. package/dist/client/{pricing-xj7MPZlK.mjs → pricing-Uzw-GQ6Y.mjs} +1 -1
  171. package/dist/client/{productDetail-vxqTt5Xj.mjs → productDetail-JLcUYKnd.mjs} +3 -3
  172. package/dist/client/{productList-OTdZu8sb.mjs → productList-FM0cbUzj.mjs} +3 -3
  173. package/dist/client/{propsDecoder-CY9gGEF7.mjs → propsDecoder-DYzafZb2.mjs} +592 -152
  174. package/dist/client/rendering/client.mjs +2259 -835
  175. package/dist/client/rendering/islands.mjs +17 -17
  176. package/dist/client/rendering.mjs +3308 -1236
  177. package/dist/client/{scrollToBlock--BFV6kl-.mjs → scrollToBlock-CvXszexS.mjs} +1 -1
  178. package/dist/client/{shop-CP4YbDL9.mjs → shop-BIcjvy5a.mjs} +6 -6
  179. package/dist/client/{shop-commerce-APs4XBXE.mjs → shop-commerce-BZQsy7xw.mjs} +5 -5
  180. package/dist/client/{shop-commerce-store-CAVLxLFr.mjs → shop-commerce-store-D5V7XAb5.mjs} +1 -1
  181. package/dist/client/{shopShared-BnSRrwXI.mjs → shopShared-DowkXevB.mjs} +3 -3
  182. package/dist/client/{useEventFilters-1a1by4c8.mjs → useEventFilters-oMoTw_JE.mjs} +56 -9
  183. package/dist/preview-next/before-render.mjs +238 -111
  184. package/dist/preview-next/client/runtime.mjs +4 -4
  185. package/dist/preview-next/keepAlive.mjs +238 -111
  186. package/dist/preview-next/middleware.mjs +238 -111
  187. package/dist/{previewAuthStore-BkEgnYPP.mjs → previewAuthStore-COUyAKaX.mjs} +238 -111
  188. package/dist/{sdk-runtime-DwGfsT0S.mjs → sdk-runtime-D4k2LSGF.mjs} +2 -2
  189. package/dist/{separator-BeqDLneQ.mjs → separator-UGtpag4Z.mjs} +1 -1
  190. package/dist/server/components.mjs +2697 -1023
  191. package/dist/server/config-validation.mjs +2424 -1720
  192. package/dist/server/config.mjs +2429 -1724
  193. package/dist/server/data.mjs +1164 -454
  194. package/dist/server/index.mjs +364 -280
  195. package/dist/server/navigation.mjs +16 -47
  196. package/dist/server/next.mjs +2915 -1380
  197. package/dist/server/page-converter.mjs +969 -522
  198. package/dist/server/prebuild.mjs +2 -3
  199. package/dist/server/rendering/server.mjs +2704 -1030
  200. package/dist/server/rendering.mjs +2742 -1063
  201. package/dist/server/routing.mjs +1386 -595
  202. package/dist/server/server.mjs +2878 -2324
  203. package/dist/server/theme-bridge.mjs +292 -24
  204. package/dist/styles/index.css +289 -25
  205. package/package.json +1 -1
  206. package/dist/_dts/api/src/navigation/identity.d.ts +0 -59
  207. package/dist/_dts/blocks/src/system/blocks/newsletter-signup-destination.d.ts +0 -291
  208. package/dist/_dts/core/src/newsletter-signup-destination.d.ts +0 -38
@@ -1,7 +1,7 @@
1
1
  import { i as textColorStyle } from "./colorStyles-CrxJrPjJ.mjs";
2
- import { t as defineIslandPropsDecoder, ut as themeButtonClassName } from "./propsDecoder-CY9gGEF7.mjs";
2
+ import { t as defineIslandPropsDecoder, ut as themeButtonClassName } from "./propsDecoder-DYzafZb2.mjs";
3
3
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
4
- import { t as LeafletStaticMap } from "./LeafletStaticMap-CWzcq73L.mjs";
4
+ import { t as LeafletStaticMap } from "./LeafletStaticMap-D21W9kBZ.mjs";
5
5
  import "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  //#region ../core/src/location.ts
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { D as clsx } from "./colorStyles-CrxJrPjJ.mjs";
3
- import { Nt as assertNever, dn as assertNever$1, t as defineIslandPropsDecoder, ut as themeButtonClassName } from "./propsDecoder-CY9gGEF7.mjs";
4
- import { n as useBlockApi, t as BlockApiProvider } from "./context-DBzX85Xc.mjs";
3
+ import { Ht as parseMailingListVisitorSelection, Nt as assertNever, pn as assertNever$1, t as defineIslandPropsDecoder, ut as themeButtonClassName } from "./propsDecoder-DYzafZb2.mjs";
4
+ import { n as useBlockApi, t as BlockApiProvider } from "./context-DvU_WUmd.mjs";
5
5
  import { n as isSpamProtectionEnabled, r as AltchaWidget, t as getChallengeUrl } from "./src-B833rYRr.mjs";
6
6
  import { t as FeedbackMessage } from "./FeedbackMessage-CtLvvS_d.mjs";
7
7
  import { n as getFieldValidationControlProps, t as FieldValidationMessage } from "./FieldValidationMessage-AYanWFb-.mjs";
@@ -21,7 +21,10 @@ function newsletterFormSubmissionReducer(state, action) {
21
21
  tag: "error",
22
22
  error: action.error
23
23
  };
24
- case "succeeded": return { tag: "success" };
24
+ case "succeeded": return {
25
+ tag: "success",
26
+ outcome: action.outcome
27
+ };
25
28
  default: return assertNever(action);
26
29
  }
27
30
  }
@@ -50,6 +53,9 @@ function isNewsletterFormSubmitting(state) {
50
53
  function isNewsletterFormSuccess(state) {
51
54
  return state.tag === "success";
52
55
  }
56
+ function getNewsletterSuccessOutcome(state) {
57
+ return state.tag === "success" ? state.outcome : null;
58
+ }
53
59
  function getNewsletterSubmissionFieldError(state, fieldId) {
54
60
  return state.tag === "error" ? getNewsletterFieldError(state.error, fieldId) : null;
55
61
  }
@@ -71,34 +77,22 @@ function mapNewsletterFormFieldsToSubscriberInput(fields) {
71
77
  }
72
78
  function resolveNewsletterSubmitTarget(input) {
73
79
  switch (input.tag) {
74
- case "block-source": return input.destinationRef ? publishedDestinationTarget(input.destinationRef) : {
80
+ case "block-source": return input.sourceRef ? publishedSourceTarget(input.sourceRef) : {
81
+ tag: "unavailable",
82
+ reason: "missing_block_source"
83
+ };
84
+ case "signed-footer-source": return publishedSourceTarget(input.sourceRef);
85
+ case "preview": return {
75
86
  tag: "unavailable",
76
87
  reason: "missing_block_source"
77
88
  };
78
- case "signed-footer-source": return publishedDestinationTarget(input.destinationRef);
79
- case "legacy-direct-list": {
80
- const listId = input.listId?.trim();
81
- return listId ? {
82
- tag: "ready",
83
- target: {
84
- tag: "legacy_riverbank_list",
85
- listId
86
- }
87
- } : {
88
- tag: "unavailable",
89
- reason: "missing_legacy_list"
90
- };
91
- }
92
89
  default: return assertNever$1(input);
93
90
  }
94
91
  }
95
- function publishedDestinationTarget(destinationRef) {
92
+ function publishedSourceTarget(sourceRef) {
96
93
  return {
97
94
  tag: "ready",
98
- target: {
99
- tag: "published_block_ref",
100
- destinationRef
101
- }
95
+ sourceRef
102
96
  };
103
97
  }
104
98
  function readOptionalSubmittedText(value) {
@@ -116,7 +110,6 @@ function NewsletterFormClient({ render }) {
116
110
  const [altchaSolution, setAltchaSolution] = useState(null);
117
111
  const showSpamProtection = render.hydration.spamProtectionEnabled ?? isSpamProtectionEnabled();
118
112
  const fields = render.display.fields;
119
- const parsedTags = typeof render.hydration.tags === "string" ? render.hydration.tags.split(/[;,]/g).map((t) => t.trim()).filter(Boolean) : [];
120
113
  const handleSubmit = async (e) => {
121
114
  e.preventDefault();
122
115
  const formData = new FormData(e.currentTarget);
@@ -130,7 +123,10 @@ function NewsletterFormClient({ render }) {
130
123
  website: formData.get("website")
131
124
  });
132
125
  if (submittedFields.honeypot) {
133
- dispatchSubmission({ type: "succeeded" });
126
+ dispatchSubmission({
127
+ type: "succeeded",
128
+ outcome: "subscribed"
129
+ });
134
130
  return;
135
131
  }
136
132
  if (!submittedFields.email) {
@@ -148,23 +144,46 @@ function NewsletterFormClient({ render }) {
148
144
  });
149
145
  return;
150
146
  }
147
+ if (render.hydration.setupRevision === null || render.display.availability === "unavailable") {
148
+ dispatchSubmission({
149
+ type: "failed",
150
+ error: newsletterFormError("Mailing-list signup is not available right now.")
151
+ });
152
+ return;
153
+ }
154
+ const visitorSelection = readVisitorSelection(formData, render.hydration);
155
+ if (visitorSelection === null) {
156
+ dispatchSubmission({
157
+ type: "failed",
158
+ error: newsletterFormError("Choose at least one email topic.")
159
+ });
160
+ return;
161
+ }
151
162
  dispatchSubmission({ type: "submitted" });
152
163
  try {
153
- await api.subscribeNewsletter({
164
+ const result = await api.subscribeNewsletter({
154
165
  email: submittedFields.email,
155
166
  firstName: submittedFields.firstName,
156
167
  lastName: submittedFields.lastName,
157
168
  name: submittedFields.name,
158
169
  company: submittedFields.company,
159
170
  phone: submittedFields.phone,
160
- target: submitTarget.target,
161
- tags: parsedTags.length > 0 ? parsedTags : void 0,
171
+ sourceRef: submitTarget.sourceRef,
172
+ setupRevision: render.hydration.setupRevision,
173
+ ...visitorSelection ? { visitorSelection } : {},
162
174
  meta: {
163
175
  honeypot: submittedFields.honeypot,
164
176
  altchaSolution
165
177
  }
166
178
  });
167
- dispatchSubmission({ type: "succeeded" });
179
+ if (result.tag === "subscribed" || result.tag === "confirmation_required") dispatchSubmission({
180
+ type: "succeeded",
181
+ outcome: result.tag
182
+ });
183
+ else dispatchSubmission({
184
+ type: "failed",
185
+ error: newsletterFormError(publicSignupError(result))
186
+ });
168
187
  } catch (err) {
169
188
  dispatchSubmission({
170
189
  type: "failed",
@@ -212,15 +231,19 @@ function NewsletterFormClient({ render }) {
212
231
  }, field.id);
213
232
  };
214
233
  const formError = getNewsletterSubmissionFormError(submissionState);
215
- if (isNewsletterFormSuccess(submissionState)) return /* @__PURE__ */ jsx("div", {
216
- className: clsx("newsletter-form", "newsletter-success", render.display.className ?? void 0),
217
- children: /* @__PURE__ */ jsx(FeedbackMessage, {
218
- tone: "success",
219
- className: "fb-success",
220
- role: "status",
221
- children: render.display.successMessage?.trim() || "Thanks for subscribing!"
222
- })
223
- });
234
+ if (isNewsletterFormSuccess(submissionState)) {
235
+ const outcome = getNewsletterSuccessOutcome(submissionState);
236
+ return /* @__PURE__ */ jsx("div", {
237
+ className: clsx("newsletter-form", "newsletter-success", render.display.className ?? void 0),
238
+ children: /* @__PURE__ */ jsx(FeedbackMessage, {
239
+ tone: "success",
240
+ className: "fb-success",
241
+ role: "status",
242
+ children: outcome === "confirmation_required" ? "Please check your inbox to confirm your signup." : "Thanks — you’re on the list."
243
+ })
244
+ });
245
+ }
246
+ if (render.display.availability === "unavailable") return /* @__PURE__ */ jsx(UnavailableNewsletterForm, { className: render.display.className });
224
247
  return /* @__PURE__ */ jsxs("div", {
225
248
  className: clsx("newsletter-form", render.display.className ?? void 0),
226
249
  children: [formError && /* @__PURE__ */ jsx(FeedbackMessage, {
@@ -244,6 +267,18 @@ function NewsletterFormClient({ render }) {
244
267
  className: "newsletter-form-fields",
245
268
  children: [
246
269
  fields.map(renderField),
270
+ render.hydration.choicePresentation === "visitor_choice" ? /* @__PURE__ */ jsxs("fieldset", {
271
+ className: "newsletter-topics",
272
+ children: [/* @__PURE__ */ jsx("legend", { children: "What would you like to hear about?" }), render.display.choices.map((choice) => /* @__PURE__ */ jsxs("label", {
273
+ className: "newsletter-topic-choice",
274
+ children: [/* @__PURE__ */ jsx("input", {
275
+ type: "checkbox",
276
+ name: "mailingListChoice",
277
+ value: choice.id,
278
+ disabled: isNewsletterFormSubmitting(submissionState)
279
+ }), choice.label]
280
+ }, choice.id))]
281
+ }) : null,
247
282
  showSpamProtection && /* @__PURE__ */ jsx("div", {
248
283
  className: "newsletter-altcha",
249
284
  children: /* @__PURE__ */ jsx(AltchaWidget, {
@@ -273,6 +308,50 @@ function NewsletterFormClient({ render }) {
273
308
  })]
274
309
  });
275
310
  }
311
+ function UnavailableNewsletterForm({ className }) {
312
+ return /* @__PURE__ */ jsx("div", {
313
+ className: clsx("newsletter-form", className ?? void 0),
314
+ children: /* @__PURE__ */ jsx(FeedbackMessage, {
315
+ tone: "error",
316
+ className: "fb-error",
317
+ role: "status",
318
+ children: "Mailing-list signup is not available right now."
319
+ })
320
+ });
321
+ }
322
+ function readVisitorSelection(formData, hydration) {
323
+ if (hydration.choicePresentation !== "visitor_choice") return void 0;
324
+ const ids = formData.getAll("mailingListChoice").flatMap((value) => typeof value === "string" ? [value] : []);
325
+ if (ids.length === 0) return null;
326
+ const raw = hydration.choiceProvider === "native" ? {
327
+ provider: "native",
328
+ topicIds: ids
329
+ } : hydration.choiceProvider === "brevo" ? {
330
+ provider: "brevo",
331
+ listIds: ids.map((id) => /^\d+$/.test(id) ? Number(id) : id)
332
+ } : hydration.choiceProvider === "mailchimp" ? {
333
+ provider: "mailchimp",
334
+ interestIds: ids
335
+ } : null;
336
+ if (raw === null) return null;
337
+ const parsed = parseMailingListVisitorSelection(raw);
338
+ return parsed.ok ? parsed.value : null;
339
+ }
340
+ function publicSignupError(outcome) {
341
+ switch (outcome.tag) {
342
+ case "invalid_input": return "Please check your details and try again.";
343
+ case "unavailable": switch (outcome.reason) {
344
+ case "configuration_unavailable":
345
+ case "authentication_failed":
346
+ case "target_unavailable": return "Mailing-list signup is not available right now.";
347
+ case "stale_configuration": return "This signup form has changed. Refresh the page, then try again.";
348
+ case "subscriber_suppressed": return "This address cannot be added. Please contact the site if you would like help.";
349
+ case "rate_limited": return "There have been too many signup attempts. Please wait a moment and try again.";
350
+ case "temporarily_unavailable": return "We could not sign you up just now. Please try again shortly.";
351
+ }
352
+ case "uncertain": return "We could not confirm whether your signup completed. Please wait a moment, then try again.";
353
+ }
354
+ }
276
355
  //#endregion
277
356
  //#region src/rendering/islands/enhancers/newsletterForm.tsx
278
357
  const decode = defineIslandPropsDecoder("newsletter-form");
@@ -1,4 +1,4 @@
1
- import { nn as formatBookingPriceDisplay, on as publicEventPricingDisplay, rn as formatEventPricing } from "./propsDecoder-CY9gGEF7.mjs";
1
+ import { in as formatEventPricing, rn as formatBookingPriceDisplay, sn as publicEventPricingDisplay } from "./propsDecoder-DYzafZb2.mjs";
2
2
  //#region ../blocks/src/system/runtime/nodes/events/domain/capacity.ts
3
3
  /**
4
4
  * Compute remaining spots for an event from `availableSpots` with a fallback
@@ -1,6 +1,6 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-CY9gGEF7.mjs";
2
- import { r as ProductDetailController } from "./shop-commerce-APs4XBXE.mjs";
3
- import { t as mountShopBlockIsland } from "./shopShared-BnSRrwXI.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-DYzafZb2.mjs";
2
+ import { r as ProductDetailController } from "./shop-commerce-BZQsy7xw.mjs";
3
+ import { t as mountShopBlockIsland } from "./shopShared-DowkXevB.mjs";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region ../blocks/src/system/runtime/nodes/product-detail.client.tsx
@@ -1,6 +1,6 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-CY9gGEF7.mjs";
2
- import { i as ProductListController } from "./shop-commerce-APs4XBXE.mjs";
3
- import { t as mountShopBlockIsland } from "./shopShared-BnSRrwXI.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-DYzafZb2.mjs";
2
+ import { i as ProductListController } from "./shop-commerce-BZQsy7xw.mjs";
3
+ import { t as mountShopBlockIsland } from "./shopShared-DowkXevB.mjs";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region ../blocks/src/system/runtime/nodes/product-list.client.tsx