@riverbankcms/sdk 0.144.0 → 0.146.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 (228) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/{PreviewEditorSidebar-CQZNnFiM.mjs → PreviewEditorSidebar-kg2r2Fyi.mjs} +4 -4
  3. package/dist/{PreviewEditorUI-DCNxnmI0.mjs → PreviewEditorUI-sWMLp5dT.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BCYICImX.mjs → PreviewQueryProvider-Cg51xq1w.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-BJolUbr1.mjs → SdkPreviewModeRuntime-h2ti3Hch.mjs} +688 -519
  6. package/dist/{SiteChromeCustomizeContext-CKgEpoxi.mjs → SiteChromeCustomizeContext-DEACFH9m.mjs} +3381 -2017
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +5643 -66
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +513 -6
  9. package/dist/_dts/api/src/appointmentEndpointDefinitions.d.ts +49 -0
  10. package/dist/_dts/api/src/appointmentServiceCategoryEndpoints.d.ts +75 -0
  11. package/dist/_dts/api/src/appointmentServiceContracts.d.ts +80 -0
  12. package/dist/_dts/api/src/appointmentSetup.d.ts +8 -1
  13. package/dist/_dts/api/src/bookingConfig.d.ts +8 -1
  14. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +10 -26
  15. package/dist/_dts/api/src/bookingManagementEventEndpointTypes.d.ts +45 -1
  16. package/dist/_dts/api/src/clientErrorReporting.d.ts +50 -0
  17. package/dist/_dts/api/src/communications.d.ts +32 -24
  18. package/dist/_dts/api/src/contentRuntime.d.ts +3 -5
  19. package/dist/_dts/api/src/endpoints.d.ts +316 -134
  20. package/dist/_dts/api/src/event-visibility.d.ts +20 -0
  21. package/dist/_dts/api/src/eventManagementContracts.d.ts +56 -3
  22. package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +24 -0
  23. package/dist/_dts/api/src/eventPageWords.d.ts +19 -0
  24. package/dist/_dts/api/src/eventSeriesRegistrationEndpointDefinitions.d.ts +14 -0
  25. package/dist/_dts/api/src/index.d.ts +7 -1
  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 +22 -2
  29. package/dist/_dts/api/src/launchRequirementPriority.d.ts +3 -0
  30. package/dist/_dts/api/src/newsletterCampaignCommandEndpoints.d.ts +13 -0
  31. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +30 -11
  32. package/dist/_dts/api/src/occurrenceScheduling.d.ts +10 -0
  33. package/dist/_dts/api/src/onboarding/confirmationResend.d.ts +3 -0
  34. package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +44 -0
  35. package/dist/_dts/api/src/participantMessaging.d.ts +11 -1
  36. package/dist/_dts/api/src/publicBookingService.d.ts +35 -1
  37. package/dist/_dts/api/src/publicExperience/newsletterEndpoints.d.ts +13 -0
  38. package/dist/_dts/api/src/publicNewsletterEndpointDefinitions.d.ts +58 -0
  39. package/dist/_dts/api/src/schemas/admin-observability-logs.d.ts +3 -3
  40. package/dist/_dts/api/src/sdk-event-upsert.d.ts +40 -1
  41. package/dist/_dts/api/src/sdkContracts.d.ts +3 -42
  42. package/dist/_dts/api/src/sdkCourseBooking.d.ts +30 -0
  43. package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +76 -0
  44. package/dist/_dts/api/src/sdkEventLifecycle.d.ts +37 -0
  45. package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +18 -0
  46. package/dist/_dts/api/src/sdkPageDesign.d.ts +388 -0
  47. package/dist/_dts/api/src/sdkPageDesignEndpointDefinitions.d.ts +22 -0
  48. package/dist/_dts/api/src/sdkPullEventContracts.d.ts +46 -0
  49. package/dist/_dts/api/src/siteAddressEndpoints.d.ts +29 -0
  50. package/dist/_dts/api/src/siteManagementEndpointDefinitions.d.ts +49 -0
  51. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +4 -38
  52. package/dist/_dts/api/src/siteOnboarding.d.ts +75 -9
  53. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -1
  54. package/dist/_dts/api/src/types.d.ts +8 -1
  55. package/dist/_dts/api/src/wholeSeriesRuns.d.ts +14 -0
  56. package/dist/_dts/blocks/src/PageRenderer.d.ts +4 -4
  57. package/dist/_dts/blocks/src/bindings/index.d.ts +2 -2
  58. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +24 -0
  59. package/dist/_dts/blocks/src/index.d.ts +3 -1
  60. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +10 -0
  61. package/dist/_dts/blocks/src/pageRenderJoins.d.ts +68 -0
  62. package/dist/_dts/blocks/src/pageRenderPlan.d.ts +8 -27
  63. package/dist/_dts/blocks/src/pageRenderPreparation.d.ts +7 -4
  64. package/dist/_dts/blocks/src/pageRendererBoundaries.d.ts +40 -23
  65. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +3 -1
  66. package/dist/_dts/blocks/src/server.d.ts +1 -1
  67. package/dist/_dts/blocks/src/system/blocks/appointment-services.d.ts +2 -0
  68. package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +2 -2
  69. package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +1 -1
  70. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +27 -5
  71. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +14 -1
  72. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
  73. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -47
  74. package/dist/_dts/blocks/src/system/icons/social.d.ts +1 -1
  75. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +29 -3
  76. package/dist/_dts/blocks/src/system/registry.d.ts +1 -1
  77. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +8 -1
  78. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +22 -2
  79. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +3 -1
  80. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +57 -2
  81. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.service-categories.d.ts +29 -0
  82. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.service-choices.d.ts +13 -0
  83. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +3 -3
  84. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +13 -1
  85. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +2 -1
  86. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +23 -7
  87. package/dist/_dts/blocks/src/system/runtime/nodes/form.fields.d.ts +5 -0
  88. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.block-submission.d.ts +36 -0
  89. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.d.ts +1 -1
  90. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +6 -1
  91. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.parts.d.ts +46 -0
  92. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +20 -1
  93. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +2 -1
  94. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +2 -1
  95. package/dist/_dts/blocks/src/system/runtime/shared/components/CheckboxChoice.d.ts +18 -0
  96. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
  97. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  98. package/dist/_dts/content-editor/src/primitives/previewEditableOutline.d.ts +2 -0
  99. package/dist/_dts/content-editor/src/ui/editorBlockEquality.d.ts +3 -0
  100. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +3 -3
  101. package/dist/_dts/content-model/src/content-types/schema.d.ts +1 -1
  102. package/dist/_dts/core/src/appointment-service-categories.d.ts +108 -0
  103. package/dist/_dts/core/src/block-content-identity.d.ts +5 -0
  104. package/dist/_dts/core/src/editor-state.d.ts +2 -1
  105. package/dist/_dts/core/src/index.d.ts +2 -0
  106. package/dist/_dts/core/src/mailing-list-submission.d.ts +3 -1
  107. package/dist/_dts/core/src/public-event-booking-availability.d.ts +20 -1
  108. package/dist/_dts/core/src/public-profile.d.ts +12 -1
  109. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +711 -242
  110. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +3 -0
  111. package/dist/_dts/editor-blocks/src/block-editor/EmptyState.d.ts +13 -1
  112. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +2 -2
  113. package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
  114. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +16 -1
  115. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/types.d.ts +13 -0
  116. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/utils.d.ts +29 -0
  117. package/dist/_dts/preview-next/src/client/blocks/BoundaryControl.d.ts +7 -2
  118. package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +1 -1
  119. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +3 -3
  120. package/dist/_dts/preview-next/src/client/blocks/previewProjection/applyPreviewProjections.d.ts +1 -3
  121. package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -2
  122. package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +2 -2
  123. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -1
  124. package/dist/_dts/sdk/src/client/runtimeCacheKeys.d.ts +8 -0
  125. package/dist/_dts/sdk/src/client/types.d.ts +1 -1
  126. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  127. package/dist/_dts/sdk/src/contracts/page.d.ts +7 -2
  128. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +5 -0
  129. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +2 -2
  130. package/dist/_dts/sdk/src/next/renderSdkContent.d.ts +0 -1
  131. package/dist/_dts/sdk/src/public-api/contracts.d.ts +6 -8
  132. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +4 -4
  133. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +4 -4
  134. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +7 -2
  135. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +5 -2
  136. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +6 -1
  137. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +2 -0
  138. package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +6 -2
  139. package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +5 -1
  140. package/dist/_dts/sdk/src/version.d.ts +1 -1
  141. package/dist/_dts/surfaces/src/index.d.ts +10 -0
  142. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  143. package/dist/_dts/theme-core/src/inputs/checkable.d.ts +42 -0
  144. package/dist/_dts/theme-core/src/inputs/inputGroup.d.ts +19 -0
  145. package/dist/_dts/theme-core/src/layout/boundaryCss.d.ts +3 -0
  146. package/dist/_dts/theme-core/src/site-styles/compositionBudget.d.ts +8 -0
  147. package/dist/_dts/theme-core/src/site-styles/contentTemplateRuntimeCompiler.d.ts +3 -2
  148. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +1 -3
  149. package/dist/_dts/theme-core/src/site-styles/generatedDesignPipeline.d.ts +3 -0
  150. package/dist/_dts/theme-core/src/site-styles/index.d.ts +3 -0
  151. package/dist/_dts/theme-core/src/site-styles/joinTreatment.d.ts +132 -0
  152. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorBoundaries.d.ts +31 -0
  153. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +33 -29
  154. package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +4 -4
  155. package/dist/_dts/theme-core/src/site-styles/pageFlowPresets.d.ts +36 -0
  156. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +4 -10
  157. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +17 -4
  158. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +20 -74
  159. package/dist/_dts/theme-core/src/site-styles/sectionBoundaryComposition.d.ts +95 -0
  160. package/dist/_dts/theme-core/src/site-styles/sectionTransitions.d.ts +80 -518
  161. package/dist/_dts/theme-core/src/site-styles/siteStyleBlockPolicies.d.ts +9 -4
  162. package/dist/_dts/theme-core/src/site-styles/transitionCatalogue.d.ts +320 -0
  163. package/dist/_dts/theme-core/src/site-styles/types.d.ts +3 -18
  164. package/dist/_dts/ui/src/navigation-tabs.d.ts +2 -1
  165. package/dist/client/{BookingConsentAgreement-DoAILrkN.mjs → BookingConsentAgreement-BQKL045f.mjs} +2 -2
  166. package/dist/client/CheckboxChoice--W2n6yKs.mjs +24 -0
  167. package/dist/client/{DiscountCodeDisclosure-X528hUTf.mjs → DiscountCodeDisclosure-CsOtjFY7.mjs} +1 -1
  168. package/dist/client/{EventCombined.client-DSBVwq5m.mjs → EventCombined.client-BdRjVbhH.mjs} +6 -6
  169. package/dist/client/{EventListing.client-DmFAX7Vb.mjs → EventListing.client-DBxC6xOU.mjs} +2 -2
  170. package/dist/client/{LeafletStaticMap-BAqXdfhq.mjs → LeafletStaticMap-mHEJKrTs.mjs} +1 -1
  171. package/dist/client/{ThemedButton-BwNFVwi4.mjs → ThemedButton-CE5KYT6z.mjs} +1 -1
  172. package/dist/client/{accordion-DRhMdkbd.mjs → accordion-BEQNSptH.mjs} +1 -1
  173. package/dist/client/{bookingForm-iJ_nCsNF.mjs → bookingForm-AMr-s5vw.mjs} +168 -95
  174. package/dist/client/bookings.mjs +239 -110
  175. package/dist/client/{carousel-D8zuffZr.mjs → carousel-Bbt_QgJy.mjs} +1 -1
  176. package/dist/client/{cart-DeMGJViN.mjs → cart-CnWi30zJ.mjs} +3 -3
  177. package/dist/client/{checkout-DXc06Km2.mjs → checkout-f3nkWgd4.mjs} +3 -3
  178. package/dist/client/client.mjs +3222 -1612
  179. package/dist/client/{context-CDLCfDep.mjs → context-Bc8T6pCe.mjs} +1 -1
  180. package/dist/client/{dates-ClFx7Epy.mjs → dates-DUsCEzLb.mjs} +2 -3
  181. package/dist/client/{eventCalendar-BaGpnOGN.mjs → eventCalendar-CKwgXui5.mjs} +9 -9
  182. package/dist/client/{eventCombined-ywONOx2m.mjs → eventCombined-CBAOSTGR.mjs} +4 -4
  183. package/dist/client/{eventDetails-B2LlOTYY.mjs → eventDetails-Dh-_WiBD.mjs} +4 -4
  184. package/dist/client/{eventListing-CMgxWpqP.mjs → eventListing-CA3frIH5.mjs} +4 -4
  185. package/dist/client/{eventRegistration-BarLDNHR.mjs → eventRegistration-BHtsgdcg.mjs} +21 -22
  186. package/dist/client/{form-BjqKaBJ7.mjs → form-C2h3YAcg.mjs} +135 -104
  187. package/dist/client/{headerSection-CP4XDwz1.mjs → headerSection-lwMuMTH9.mjs} +3 -3
  188. package/dist/client/hooks.mjs +1023 -148
  189. package/dist/client/{locationMap-C5gW-d-w.mjs → locationMap-DJ2bLODV.mjs} +3 -3
  190. package/dist/client/{newsletterForm-afXlVSA0.mjs → newsletterForm-8Pu5K32g.mjs} +225 -102
  191. package/dist/client/{pricing-Bl1CAl28.mjs → pricing-HHx3IgBz.mjs} +1 -1
  192. package/dist/client/{productDetail-CvQ3jWQe.mjs → productDetail-C_1odnAf.mjs} +3 -3
  193. package/dist/client/{productList-U874PGO7.mjs → productList-CtCv-Nmx.mjs} +3 -3
  194. package/dist/client/{propsDecoder-DPXtCZWP.mjs → propsDecoder-Dcgsncxb.mjs} +111 -55
  195. package/dist/client/rendering/client.mjs +1389 -722
  196. package/dist/client/rendering/islands.mjs +17 -17
  197. package/dist/client/rendering.mjs +3136 -1400
  198. package/dist/client/{routeIslandApiConfig-NGYiUWXu.mjs → routeIslandApiConfig-CWLP7wu3.mjs} +1 -1
  199. package/dist/client/{scrollToBlock-0-C3DVhK.mjs → scrollToBlock-BNgaEUpo.mjs} +1 -1
  200. package/dist/client/{shop-BXjXhM9P.mjs → shop-DQXrQ8kJ.mjs} +7 -7
  201. package/dist/client/{shop-commerce-BZ6UlWJ7.mjs → shop-commerce-B88zmWWo.mjs} +6 -6
  202. package/dist/client/{shop-commerce-store-DlSBXb3D.mjs → shop-commerce-store-DtSfkKuX.mjs} +1 -1
  203. package/dist/client/{shopShared-kkEOiLPA.mjs → shopShared-cuaONpkJ.mjs} +4 -4
  204. package/dist/client/{useEventFilters-zvnnE1ro.mjs → useEventFilters-Bukew6Gb.mjs} +6 -6
  205. package/dist/preview-next/before-render.mjs +500 -165
  206. package/dist/preview-next/client/runtime.mjs +4 -4
  207. package/dist/preview-next/editor-base.css +11 -0
  208. package/dist/preview-next/keepAlive.mjs +460 -165
  209. package/dist/preview-next/middleware.mjs +461 -165
  210. package/dist/{previewAuthStore-JA6-I_sL.mjs → previewAuthStore-h5IgbSp4.mjs} +485 -165
  211. package/dist/{sdk-runtime-DFJlQt3q.mjs → sdk-runtime-DTc1uIXn.mjs} +2 -2
  212. package/dist/{separator-o8GHb1xh.mjs → separator-BpHS1KZK.mjs} +1 -1
  213. package/dist/server/components.mjs +3088 -1307
  214. package/dist/server/config-validation.mjs +927 -109
  215. package/dist/server/config.mjs +927 -109
  216. package/dist/server/data.mjs +939 -110
  217. package/dist/server/index.mjs +513 -169
  218. package/dist/server/next.mjs +2874 -1195
  219. package/dist/server/page-converter.mjs +420 -79
  220. package/dist/server/prebuild.mjs +1 -1
  221. package/dist/server/rendering/server.mjs +3071 -1289
  222. package/dist/server/rendering.mjs +3169 -1350
  223. package/dist/server/routing.mjs +1085 -159
  224. package/dist/server/server.mjs +1042 -291
  225. package/dist/server/theme-bridge.mjs +1658 -137
  226. package/dist/server/theme.mjs +6 -4
  227. package/dist/styles/index.css +186 -65
  228. package/package.json +2 -1
@@ -1,8 +1,8 @@
1
1
  import { i as textColorStyle } from "./colorStyles-CuJBiS-1.mjs";
2
- import { t as defineIslandPropsDecoder } from "./propsDecoder-DPXtCZWP.mjs";
3
- import { n as ThemedButtonLink } from "./ThemedButton-BwNFVwi4.mjs";
2
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-Dcgsncxb.mjs";
3
+ import { n as ThemedButtonLink } from "./ThemedButton-CE5KYT6z.mjs";
4
4
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
5
- import { t as LeafletStaticMap } from "./LeafletStaticMap-BAqXdfhq.mjs";
5
+ import { t as LeafletStaticMap } from "./LeafletStaticMap-mHEJKrTs.mjs";
6
6
  import "react";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
  //#region ../core/src/location.ts
@@ -1,14 +1,159 @@
1
1
  "use client";
2
2
  import { O as clsx } from "./colorStyles-CuJBiS-1.mjs";
3
- import { Jt as parseMailingListVisitorSelection, t as defineIslandPropsDecoder, yn as assertNever$1, zt as assertNever } from "./propsDecoder-DPXtCZWP.mjs";
4
- import { n as useBlockApi, r as BlockApiError, t as BlockApiProvider } from "./context-CDLCfDep.mjs";
3
+ import { Vt as assertNever, Xt as parseMailingListVisitorSelection, g as newsletterBlockSubmissionMessage, h as NEWSLETTER_SIGNUPS_PAUSED_MESSAGE, t as defineIslandPropsDecoder, xn as assertNever$1 } from "./propsDecoder-Dcgsncxb.mjs";
4
+ import { n as useBlockApi, r as BlockApiError, t as BlockApiProvider } from "./context-Bc8T6pCe.mjs";
5
5
  import { n as isSpamProtectionEnabled, r as AltchaWidget, t as getChallengeUrl } from "./src-B833rYRr.mjs";
6
- import { t as ThemedButton } from "./ThemedButton-BwNFVwi4.mjs";
6
+ import { t as ThemedButton } from "./ThemedButton-CE5KYT6z.mjs";
7
7
  import { t as FeedbackMessage } from "./FeedbackMessage-CtLvvS_d.mjs";
8
8
  import { n as getFieldValidationControlProps, t as FieldValidationMessage } from "./FieldValidationMessage-AYanWFb-.mjs";
9
9
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
10
10
  import { useEffect, useReducer, useRef, useState } from "react";
11
11
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
12
+ //#region ../blocks/src/system/runtime/nodes/newsletter-form.parts.tsx
13
+ /**
14
+ * Newsletter form pieces shared by the SSR render and the hydrated island, so
15
+ * both produce the same markup.
16
+ *
17
+ * Labels are visually hidden: every field has a placeholder, and a visible
18
+ * "Email *" label over a single field reads like a generic form. Screen
19
+ * readers still get the label.
20
+ */
21
+ const TOPIC_CHOICE_FIELD_ID = "mailingListChoice";
22
+ const inputIdFor = (field) => `newsletter_${field.id}`;
23
+ /** Splits the preset's fields into the email (joined with the button) and the rest. */
24
+ function partitionNewsletterFields(fields) {
25
+ const email = fields.find((field) => field.type === "email") ?? null;
26
+ return {
27
+ email,
28
+ extra: fields.filter((field) => field !== email)
29
+ };
30
+ }
31
+ function NewsletterExtraField({ field, disabled, error }) {
32
+ const inputId = inputIdFor(field);
33
+ const errorId = `${inputId}-error`;
34
+ return /* @__PURE__ */ jsxs("div", {
35
+ className: "fb-field newsletter-field",
36
+ children: [
37
+ /* @__PURE__ */ jsx("label", {
38
+ htmlFor: inputId,
39
+ className: "rb-sr-only",
40
+ children: field.label
41
+ }),
42
+ /* @__PURE__ */ jsx("input", {
43
+ id: inputId,
44
+ name: field.id,
45
+ type: field.type,
46
+ required: field.required,
47
+ placeholder: field.placeholder ?? field.label,
48
+ className: "form-input",
49
+ disabled,
50
+ ...getFieldValidationControlProps({
51
+ message: error,
52
+ messageId: errorId
53
+ })
54
+ }),
55
+ error ? /* @__PURE__ */ jsx(FieldValidationMessage, {
56
+ id: errorId,
57
+ className: "fb-error",
58
+ children: error
59
+ }) : null
60
+ ]
61
+ });
62
+ }
63
+ /** The email field and submit button sharing one input-styled shell. */
64
+ function NewsletterEmailEntry({ field, buttonVariant, buttonLabel, disabled, error }) {
65
+ const inputId = inputIdFor(field);
66
+ const errorId = `${inputId}-error`;
67
+ return /* @__PURE__ */ jsxs("div", {
68
+ className: "newsletter-entry",
69
+ children: [/* @__PURE__ */ jsxs("div", {
70
+ className: "form-input-group newsletter-entry-group",
71
+ children: [
72
+ /* @__PURE__ */ jsx("label", {
73
+ htmlFor: inputId,
74
+ className: "rb-sr-only",
75
+ children: field.label
76
+ }),
77
+ /* @__PURE__ */ jsx("input", {
78
+ id: inputId,
79
+ name: field.id,
80
+ type: "email",
81
+ required: field.required,
82
+ placeholder: field.placeholder ?? field.label,
83
+ className: "form-input-group-field",
84
+ autoComplete: "email",
85
+ disabled,
86
+ ...getFieldValidationControlProps({
87
+ message: error,
88
+ messageId: errorId
89
+ })
90
+ }),
91
+ /* @__PURE__ */ jsx(ThemedButton, {
92
+ type: "submit",
93
+ variant: buttonVariant,
94
+ size: "md",
95
+ disabled,
96
+ label: buttonLabel
97
+ })
98
+ ]
99
+ }), error ? /* @__PURE__ */ jsx(FieldValidationMessage, {
100
+ id: errorId,
101
+ className: "fb-error",
102
+ children: error
103
+ }) : null]
104
+ });
105
+ }
106
+ /**
107
+ * The submit action: joined to the email field when the preset has one
108
+ * (every current preset does), otherwise a plain themed button.
109
+ */
110
+ function NewsletterSubmitRow({ emailField, buttonVariant, buttonLabel, disabled, error }) {
111
+ if (emailField) return /* @__PURE__ */ jsx(NewsletterEmailEntry, {
112
+ field: emailField,
113
+ buttonVariant,
114
+ buttonLabel,
115
+ disabled,
116
+ error
117
+ });
118
+ return /* @__PURE__ */ jsx("div", {
119
+ className: "newsletter-submit",
120
+ children: /* @__PURE__ */ jsx(ThemedButton, {
121
+ type: "submit",
122
+ variant: buttonVariant,
123
+ size: "md",
124
+ disabled,
125
+ label: buttonLabel
126
+ })
127
+ });
128
+ }
129
+ /** Visitor-chosen topics as toggle chips. Real checkboxes underneath. */
130
+ function NewsletterTopicChips({ choices, disabled, error }) {
131
+ const errorId = `newsletter_${TOPIC_CHOICE_FIELD_ID}-error`;
132
+ return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("fieldset", {
133
+ className: "newsletter-topics",
134
+ "aria-describedby": error ? errorId : void 0,
135
+ children: [/* @__PURE__ */ jsx("legend", {
136
+ className: "newsletter-topics-legend",
137
+ children: "What would you like to hear about?"
138
+ }), /* @__PURE__ */ jsx("div", {
139
+ className: "newsletter-topic-chips",
140
+ children: choices.map((choice) => /* @__PURE__ */ jsxs("label", {
141
+ className: "newsletter-topic-chip",
142
+ children: [/* @__PURE__ */ jsx("input", {
143
+ type: "checkbox",
144
+ name: TOPIC_CHOICE_FIELD_ID,
145
+ value: choice.id,
146
+ disabled
147
+ }), /* @__PURE__ */ jsx("span", { children: choice.label })]
148
+ }, choice.id))
149
+ })]
150
+ }), error ? /* @__PURE__ */ jsx(FieldValidationMessage, {
151
+ id: errorId,
152
+ className: "fb-error",
153
+ children: error
154
+ }) : null] });
155
+ }
156
+ //#endregion
12
157
  //#region ../blocks/src/system/runtime/nodes/newsletter-form.client.state.ts
13
158
  const initialNewsletterFormSubmissionState = { tag: "idle" };
14
159
  function newsletterFormSubmissionReducer(state, action) {
@@ -65,6 +210,16 @@ function getNewsletterSubmissionFormError(state) {
65
210
  }
66
211
  //#endregion
67
212
  //#region ../blocks/src/system/runtime/nodes/newsletter-form.submission.ts
213
+ /**
214
+ * Logs a refusal with its reason so a QA session can tell the cases apart in
215
+ * the console, since the visitor-facing copy deliberately does not.
216
+ */
217
+ function reportNewsletterSignupRefusal(reason, detail = {}) {
218
+ console.warn("[newsletter-form] Signup refused before sending", {
219
+ reason,
220
+ ...detail
221
+ });
222
+ }
68
223
  function mapNewsletterFormFieldsToSubscriberInput(fields) {
69
224
  return {
70
225
  email: readSubmittedText(fields.email),
@@ -85,7 +240,11 @@ function resolveNewsletterSubmitTarget(input) {
85
240
  case "signed-footer-source": return publishedSourceTarget(input.sourceRef);
86
241
  case "preview": return {
87
242
  tag: "unavailable",
88
- reason: "missing_block_source"
243
+ reason: "preview_only_source"
244
+ };
245
+ case "unpublished-preview": return {
246
+ tag: "unavailable",
247
+ reason: "preview_only_source"
89
248
  };
90
249
  default: return assertNever$1(input);
91
250
  }
@@ -106,6 +265,7 @@ function readSubmittedText(value) {
106
265
  //#endregion
107
266
  //#region ../blocks/src/system/runtime/nodes/newsletter-form.client.tsx
108
267
  function NewsletterFormClient({ render }) {
268
+ const submissionMessage = newsletterBlockSubmissionMessage(render.hydration.target);
109
269
  const api = useBlockApi();
110
270
  const [submissionState, dispatchSubmission] = useReducer(newsletterFormSubmissionReducer, initialNewsletterFormSubmissionState);
111
271
  const [altchaSolution, setAltchaSolution] = useState(null);
@@ -115,7 +275,6 @@ function NewsletterFormClient({ render }) {
115
275
  if (succeeded) successRef.current?.focus();
116
276
  }, [succeeded]);
117
277
  const showSpamProtection = render.hydration.spamProtectionEnabled ?? isSpamProtectionEnabled();
118
- const fields = render.display.fields;
119
278
  const handleSubmit = async (e) => {
120
279
  e.preventDefault();
121
280
  const formData = new FormData(e.currentTarget);
@@ -144,22 +303,33 @@ function NewsletterFormClient({ render }) {
144
303
  }
145
304
  const submitTarget = resolveNewsletterSubmitTarget(render.hydration.target);
146
305
  if (submitTarget.tag === "unavailable") {
306
+ reportNewsletterSignupRefusal(submitTarget.reason, { target: render.hydration.target });
307
+ dispatchSubmission({
308
+ type: "failed",
309
+ error: newsletterFormError(NEWSLETTER_SIGNUPS_PAUSED_MESSAGE)
310
+ });
311
+ return;
312
+ }
313
+ if (render.hydration.setupRevision === null) {
314
+ reportNewsletterSignupRefusal("setup_not_configured");
147
315
  dispatchSubmission({
148
316
  type: "failed",
149
- error: newsletterFormError(SIGNUPS_PAUSED_MESSAGE)
317
+ error: newsletterFormError(NEWSLETTER_SIGNUPS_PAUSED_MESSAGE)
150
318
  });
151
319
  return;
152
320
  }
153
- if (render.hydration.setupRevision === null || render.display.availability === "unavailable") {
321
+ if (render.display.availability === "unavailable") {
322
+ reportNewsletterSignupRefusal("destination_unavailable", { setupRevision: render.hydration.setupRevision });
154
323
  dispatchSubmission({
155
324
  type: "failed",
156
- error: newsletterFormError(SIGNUPS_PAUSED_MESSAGE)
325
+ error: newsletterFormError(NEWSLETTER_SIGNUPS_PAUSED_MESSAGE)
157
326
  });
158
327
  return;
159
328
  }
160
329
  const selection = readVisitorSelection(formData, render.hydration);
161
330
  const selectionError = visitorSelectionError(selection);
162
331
  if (selectionError) {
332
+ if (selection.tag === "unusable") reportNewsletterSignupRefusal("choices_unusable", { choiceProvider: render.hydration.choiceProvider });
163
333
  dispatchSubmission({
164
334
  type: "failed",
165
335
  error: selectionError
@@ -227,43 +397,14 @@ function NewsletterFormClient({ render }) {
227
397
  autoComplete: "off",
228
398
  "aria-hidden": "true"
229
399
  }),
230
- /* @__PURE__ */ jsxs("div", {
231
- className: "newsletter-form-fields",
232
- children: [
233
- fields.map((field) => /* @__PURE__ */ jsx(NewsletterField, {
234
- field,
235
- submitting,
236
- error: getNewsletterSubmissionFieldError(submissionState, field.id)
237
- }, field.id)),
238
- render.hydration.choicePresentation === "visitor_choice" ? /* @__PURE__ */ jsx(NewsletterTopicChoices, {
239
- choices: render.display.choices,
240
- submitting,
241
- error: getNewsletterSubmissionFieldError(submissionState, TOPIC_CHOICE_FIELD_ID)
242
- }) : null,
243
- showSpamProtection && /* @__PURE__ */ jsx("div", {
244
- className: "newsletter-altcha",
245
- children: /* @__PURE__ */ jsx(AltchaWidget, {
246
- challengeUrl: getChallengeUrl(),
247
- onSolutionChange: setAltchaSolution
248
- })
249
- }),
250
- formError && /* @__PURE__ */ jsx(FeedbackMessage, {
251
- tone: "error",
252
- className: "fb-error",
253
- role: "alert",
254
- children: formError
255
- }),
256
- /* @__PURE__ */ jsx("div", {
257
- className: "newsletter-submit",
258
- children: /* @__PURE__ */ jsx(ThemedButton, {
259
- type: "submit",
260
- variant: render.display.buttonVariant,
261
- size: "md",
262
- disabled: submitting,
263
- label: submitting ? "Subscribing..." : render.display.buttonLabel
264
- })
265
- })
266
- ]
400
+ /* @__PURE__ */ jsx(NewsletterFormFields, {
401
+ render,
402
+ submissionState,
403
+ submitting,
404
+ submissionMessage,
405
+ formError,
406
+ showSpamProtection,
407
+ onAltchaSolution: setAltchaSolution
267
408
  }),
268
409
  render.display.privacyNote && /* @__PURE__ */ jsx("p", {
269
410
  className: "newsletter-privacy-note",
@@ -273,67 +414,52 @@ function NewsletterFormClient({ render }) {
273
414
  })
274
415
  });
275
416
  }
276
- function NewsletterField({ field, submitting, error }) {
277
- const inputId = `newsletter_${field.id}`;
278
- const errorId = `${inputId}-error`;
417
+ function NewsletterFormFields({ render, submissionState, submitting, submissionMessage, formError, showSpamProtection, onAltchaSolution }) {
418
+ const { email: emailField, extra: extraFields } = partitionNewsletterFields(render.display.fields);
419
+ const fieldError = (id) => getNewsletterSubmissionFieldError(submissionState, id);
279
420
  return /* @__PURE__ */ jsxs("div", {
280
- className: "fb-field newsletter-field",
421
+ className: "newsletter-form-fields",
281
422
  children: [
282
- /* @__PURE__ */ jsxs("label", {
283
- htmlFor: inputId,
284
- className: "form-label",
285
- children: [field.label, field.required && /* @__PURE__ */ jsx("span", {
286
- className: "newsletter-required",
287
- "aria-hidden": "true",
288
- children: "*"
289
- })]
290
- }),
291
- /* @__PURE__ */ jsx("input", {
292
- id: inputId,
293
- name: field.id,
294
- type: field.type,
295
- required: field.required,
296
- placeholder: field.placeholder,
297
- className: "form-input",
298
- autoComplete: field.type === "email" ? "email" : void 0,
423
+ render.hydration.choicePresentation === "visitor_choice" ? /* @__PURE__ */ jsx(NewsletterTopicChips, {
424
+ choices: render.display.choices,
299
425
  disabled: submitting,
300
- ...getFieldValidationControlProps({
301
- message: error,
302
- messageId: errorId
426
+ error: fieldError(TOPIC_CHOICE_FIELD_ID)
427
+ }) : null,
428
+ extraFields.length > 0 ? /* @__PURE__ */ jsx("div", {
429
+ className: "newsletter-extra-fields",
430
+ children: extraFields.map((field) => /* @__PURE__ */ jsx(NewsletterExtraField, {
431
+ field,
432
+ disabled: submitting,
433
+ error: fieldError(field.id)
434
+ }, field.id))
435
+ }) : null,
436
+ showSpamProtection && /* @__PURE__ */ jsx("div", {
437
+ className: "newsletter-altcha",
438
+ children: /* @__PURE__ */ jsx(AltchaWidget, {
439
+ challengeUrl: getChallengeUrl(),
440
+ onSolutionChange: onAltchaSolution
303
441
  })
304
442
  }),
305
- error && /* @__PURE__ */ jsx(FieldValidationMessage, {
306
- id: errorId,
443
+ formError && /* @__PURE__ */ jsx(FeedbackMessage, {
444
+ tone: "error",
307
445
  className: "fb-error",
308
- children: error
446
+ role: "alert",
447
+ children: formError
448
+ }),
449
+ /* @__PURE__ */ jsx(NewsletterSubmitRow, {
450
+ emailField,
451
+ buttonVariant: render.display.buttonVariant,
452
+ buttonLabel: submitting ? "Subscribing..." : render.display.buttonLabel,
453
+ disabled: submitting || submissionMessage !== null,
454
+ error: emailField ? fieldError(emailField.id) : null
455
+ }),
456
+ submissionMessage && /* @__PURE__ */ jsx("p", {
457
+ role: "status",
458
+ children: submissionMessage
309
459
  })
310
460
  ]
311
461
  });
312
462
  }
313
- function NewsletterTopicChoices({ choices, submitting, error }) {
314
- const errorId = `newsletter_${TOPIC_CHOICE_FIELD_ID}-error`;
315
- return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("fieldset", {
316
- className: "fb-fieldset newsletter-topics",
317
- "aria-describedby": error ? errorId : void 0,
318
- children: [/* @__PURE__ */ jsx("legend", {
319
- className: "form-label",
320
- children: "What would you like to hear about?"
321
- }), choices.map((choice) => /* @__PURE__ */ jsxs("label", {
322
- className: "fb-inline form-label newsletter-topic-choice",
323
- children: [/* @__PURE__ */ jsx("input", {
324
- type: "checkbox",
325
- name: TOPIC_CHOICE_FIELD_ID,
326
- value: choice.id,
327
- className: "form-checkbox",
328
- disabled: submitting
329
- }), /* @__PURE__ */ jsx("span", { children: choice.label })]
330
- }, choice.id))]
331
- }), error && /* @__PURE__ */ jsx(FieldValidationMessage, {
332
- id: errorId,
333
- className: "fb-error",
334
- children: error
335
- })] });
336
- }
337
463
  function UnavailableNewsletterForm({ className }) {
338
464
  return /* @__PURE__ */ jsx("div", {
339
465
  className: clsx("newsletter-form", className ?? void 0),
@@ -341,13 +467,10 @@ function UnavailableNewsletterForm({ className }) {
341
467
  tone: "error",
342
468
  className: "fb-error",
343
469
  role: "status",
344
- children: SIGNUPS_PAUSED_MESSAGE
470
+ children: NEWSLETTER_SIGNUPS_PAUSED_MESSAGE
345
471
  })
346
472
  });
347
473
  }
348
- const TOPIC_CHOICE_FIELD_ID = "mailingListChoice";
349
- /** The site's setup is broken or missing: nothing the visitor does will help. */
350
- const SIGNUPS_PAUSED_MESSAGE = "We can’t accept signups right now. Please try again later.";
351
474
  /** The provider did not answer in time or at all: worth another go shortly. */
352
475
  const RETRY_SHORTLY_MESSAGE = "We couldn’t confirm your signup. Please try again in a little while.";
353
476
  const TOO_MANY_ATTEMPTS_MESSAGE = "There have been too many signup attempts. Please wait a moment and try again.";
@@ -367,7 +490,7 @@ function transportFailureMessage(err) {
367
490
  function visitorSelectionError(selection) {
368
491
  switch (selection.tag) {
369
492
  case "nothing_chosen": return newsletterFieldError(TOPIC_CHOICE_FIELD_ID, "Choose at least one email topic.");
370
- case "unusable": return newsletterFormError(SIGNUPS_PAUSED_MESSAGE);
493
+ case "unusable": return newsletterFormError(NEWSLETTER_SIGNUPS_PAUSED_MESSAGE);
371
494
  case "not_offered":
372
495
  case "chosen": return null;
373
496
  }
@@ -399,7 +522,7 @@ function publicSignupError(outcome) {
399
522
  case "unavailable": switch (outcome.reason) {
400
523
  case "configuration_unavailable":
401
524
  case "authentication_failed":
402
- case "target_unavailable": return SIGNUPS_PAUSED_MESSAGE;
525
+ case "target_unavailable": return NEWSLETTER_SIGNUPS_PAUSED_MESSAGE;
403
526
  case "stale_configuration": return "This signup form has changed. Refresh the page, then try again.";
404
527
  case "rate_limited": return TOO_MANY_ATTEMPTS_MESSAGE;
405
528
  case "temporarily_unavailable": return RETRY_SHORTLY_MESSAGE;
@@ -1,4 +1,4 @@
1
- import { ln as formatBookingPriceDisplay, pn as publicEventPricingDisplay, un as formatEventPricing } from "./propsDecoder-DPXtCZWP.mjs";
1
+ import { dn as formatBookingPriceDisplay, fn as formatEventPricing, hn as publicEventPricingDisplay } from "./propsDecoder-Dcgsncxb.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-DPXtCZWP.mjs";
2
- import { r as ProductDetailController } from "./shop-commerce-BZ6UlWJ7.mjs";
3
- import { t as mountShopBlockIsland } from "./shopShared-kkEOiLPA.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-Dcgsncxb.mjs";
2
+ import { r as ProductDetailController } from "./shop-commerce-B88zmWWo.mjs";
3
+ import { t as mountShopBlockIsland } from "./shopShared-cuaONpkJ.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-DPXtCZWP.mjs";
2
- import { i as ProductListController } from "./shop-commerce-BZ6UlWJ7.mjs";
3
- import { t as mountShopBlockIsland } from "./shopShared-kkEOiLPA.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-Dcgsncxb.mjs";
2
+ import { i as ProductListController } from "./shop-commerce-B88zmWWo.mjs";
3
+ import { t as mountShopBlockIsland } from "./shopShared-cuaONpkJ.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