@riverbankcms/sdk 0.139.0 → 0.141.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/README.md +1 -1
  2. package/dist/{PreviewEditorSidebar-BDeenhi3.mjs → PreviewEditorSidebar-Q-fy9GYw.mjs} +4 -4
  3. package/dist/{PreviewEditorUI-DSRhgjF5.mjs → PreviewEditorUI-LYGzgk85.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-D2K8GLUG.mjs → PreviewQueryProvider-CN0ewic5.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-CL7wSnYu.mjs → SdkPreviewModeRuntime-CoPYI5Jq.mjs} +90 -50
  6. package/dist/{SiteChromeCustomizeContext-BhDn-5ir.mjs → SiteChromeCustomizeContext-D8LePX8x.mjs} +2731 -1303
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +165 -165
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +212 -212
  9. package/dist/_dts/api/src/accessAdmin.d.ts +74 -104
  10. package/dist/_dts/api/src/aiEndpoints.d.ts +5 -1
  11. package/dist/_dts/api/src/authSubmission.d.ts +46 -0
  12. package/dist/_dts/api/src/billing.d.ts +8 -4
  13. package/dist/_dts/api/src/billingEndpointDefinitions.d.ts +23 -0
  14. package/dist/_dts/api/src/billingEndpointTypes.d.ts +26 -0
  15. package/dist/_dts/api/src/blocks.d.ts +2 -0
  16. package/dist/_dts/api/src/bookingRecords.d.ts +1 -2
  17. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +8 -1
  18. package/dist/_dts/api/src/communications.d.ts +0 -1
  19. package/dist/_dts/api/src/contentRuntime.d.ts +17 -31
  20. package/dist/_dts/api/src/domainConnection.d.ts +4 -0
  21. package/dist/_dts/api/src/endpoints.d.ts +93 -64
  22. package/dist/_dts/api/src/event-destination-policy.d.ts +2 -1
  23. package/dist/_dts/api/src/footerCompositionContracts.d.ts +25 -0
  24. package/dist/_dts/api/src/footerSettings.d.ts +9 -6
  25. package/dist/_dts/api/src/index.d.ts +6 -7
  26. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  27. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  28. package/dist/_dts/api/src/launchReadiness.d.ts +1 -0
  29. package/dist/_dts/api/src/mailingListIntegration.d.ts +8 -2
  30. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +1 -1
  31. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +2 -1
  32. package/dist/_dts/api/src/navigation/types.d.ts +1 -1
  33. package/dist/_dts/api/src/onboarding/confirmationResend.d.ts +25 -0
  34. package/dist/_dts/api/src/onboarding/surfaceData.d.ts +32 -32
  35. package/dist/_dts/api/src/publicBookingAvailabilityEndpointDefinitions.d.ts +8 -0
  36. package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +1 -0
  37. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +11 -3
  38. package/dist/_dts/api/src/publicExperience/sharedTypes.d.ts +3 -29
  39. package/dist/_dts/api/src/publicOnboardingAttemptEndpointDefinitions.d.ts +65 -0
  40. package/dist/_dts/api/src/saveOutcome.d.ts +20 -0
  41. package/dist/_dts/api/src/sdkContracts.d.ts +3 -22
  42. package/dist/_dts/api/src/sdkPushContracts.d.ts +18 -0
  43. package/dist/_dts/api/src/sdkThemeWire.d.ts +44 -44
  44. package/dist/_dts/api/src/settings/permissions.d.ts +12 -0
  45. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +10 -29
  46. package/dist/_dts/api/src/siteOnboarding.d.ts +9 -9
  47. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +2 -4
  48. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +3 -1
  49. package/dist/_dts/api/src/siteSettings.d.ts +20 -7
  50. package/dist/_dts/api/src/types.d.ts +77 -77
  51. package/dist/_dts/api/src/wholeSeriesRuns.d.ts +2 -37
  52. package/dist/_dts/billing/src/membership/index.d.ts +3 -0
  53. package/dist/_dts/billing/src/plans/types.d.ts +3 -0
  54. package/dist/_dts/billing/src/site-arrangements.d.ts +23 -3
  55. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +20 -4
  56. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +2 -0
  57. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +7 -0
  58. package/dist/_dts/blocks/src/portal/types.d.ts +2 -4
  59. package/dist/_dts/blocks/src/portal/waitlist-types.d.ts +35 -0
  60. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +2 -0
  61. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +2 -0
  62. package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +122 -0
  63. package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +2 -1
  64. package/dist/_dts/blocks/src/system/blocks/events/shared/eventSelection.d.ts +11 -0
  65. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +42 -0
  66. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -0
  67. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
  68. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -47
  69. package/dist/_dts/blocks/src/system/data/index.d.ts +2 -2
  70. package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +7 -1
  71. package/dist/_dts/blocks/src/system/data/types.d.ts +9 -0
  72. package/dist/_dts/blocks/src/system/data/utils.d.ts +1 -1
  73. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +27 -1
  74. package/dist/_dts/blocks/src/system/registry.d.ts +1 -0
  75. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +0 -28
  76. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  77. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +7 -3
  78. package/dist/_dts/blocks/src/system/runtime/api/types/portal.d.ts +1 -1
  79. package/dist/_dts/blocks/src/system/runtime/api/types/waitlist-claims.d.ts +7 -2
  80. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +42 -186
  81. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +21 -93
  82. package/dist/_dts/blocks/src/system/runtime/hooks/useEventFilters.d.ts +2 -1
  83. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +48 -1
  84. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +1 -2
  85. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/TicketSelectionStep.d.ts +2 -0
  86. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/checkoutRecovery.d.ts +14 -0
  87. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +56 -0
  88. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +4 -0
  89. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.state.d.ts +5 -0
  90. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +6 -8
  91. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useCheckoutRecovery.d.ts +8 -0
  92. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.d.ts +3 -0
  93. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.state.d.ts +10 -3
  94. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventCheckoutHandoffRestore.d.ts +9 -0
  95. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +8 -7
  96. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +14 -7
  97. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventSourceRecovery.d.ts +18 -0
  98. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useSettledCommerceView.d.ts +37 -0
  99. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.client.d.ts +1 -1
  100. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +24 -6
  101. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.server.d.ts +4 -2
  102. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +4 -3
  103. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +3 -0
  104. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +11 -101
  105. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +7 -2
  106. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/listOptions.d.ts +2 -0
  107. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +6 -0
  108. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +1 -0
  109. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +1 -0
  110. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -6
  111. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  112. package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.d.ts +2 -0
  113. package/dist/_dts/blocks/src/system/transforms/registry/eventCalendar.d.ts +12 -0
  114. package/dist/_dts/commerce/src/purchase/bookingInstalmentSchedule.d.ts +4 -0
  115. package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +4 -0
  116. package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +27 -4
  117. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +2 -1
  118. package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +3 -1
  119. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +3 -0
  120. package/dist/_dts/core/src/branded.d.ts +0 -8
  121. package/dist/_dts/core/src/index.d.ts +1 -0
  122. package/dist/_dts/core/src/mailing-list-setup-parser.d.ts +1 -1
  123. package/dist/_dts/core/src/mailing-list-setup.d.ts +14 -1
  124. package/dist/_dts/core/src/mailing-list-submission.d.ts +7 -27
  125. package/dist/_dts/core/src/participants.d.ts +2 -29
  126. package/dist/_dts/core/src/public-experience.d.ts +4 -0
  127. package/dist/_dts/core/src/public-profile.d.ts +27 -1
  128. package/dist/_dts/core/src/site-route-target.d.ts +9 -2
  129. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +296 -606
  130. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListGlobalSettingsSummary.d.ts +10 -0
  131. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListTargetingField.d.ts +3 -2
  132. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/context.d.ts +3 -2
  133. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +3 -2
  134. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/targetingState.d.ts +19 -0
  135. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +27 -1
  136. package/dist/_dts/sdk/src/public-api/contracts.d.ts +14 -20
  137. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -0
  138. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +2 -0
  139. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +7 -1
  140. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +1 -0
  141. package/dist/_dts/sdk/src/version.d.ts +1 -1
  142. package/dist/_dts/theme-core/src/ThemeFontLoader.d.ts +17 -1
  143. package/dist/_dts/theme-core/src/accordions/types.d.ts +3 -3
  144. package/dist/_dts/theme-core/src/buttons/affordanceSuppression.d.ts +17 -0
  145. package/dist/_dts/theme-core/src/buttons/buttonColourContract.d.ts +1 -1
  146. package/dist/_dts/theme-core/src/buttons/classNames.d.ts +16 -0
  147. package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +0 -6
  148. package/dist/_dts/theme-core/src/buttons/resolvedButtonCss.d.ts +4 -4
  149. package/dist/_dts/theme-core/src/cards/types.d.ts +21 -21
  150. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  151. package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +8 -2
  152. package/dist/_dts/theme-core/src/header/legacyHeaderVariant.d.ts +2 -2
  153. package/dist/_dts/theme-core/src/hosted-booking-appearance.d.ts +54 -12
  154. package/dist/_dts/theme-core/src/index.d.ts +1 -1
  155. package/dist/_dts/theme-core/src/inputs/types.d.ts +2 -2
  156. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +54 -54
  157. package/dist/_dts/theme-core/src/runtime/buildThemeRuntimeFromBridge.d.ts +1 -4
  158. package/dist/_dts/theme-core/src/schema.d.ts +84 -84
  159. package/dist/_dts/theme-core/src/shared/componentStyles.d.ts +1 -1
  160. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  161. package/dist/_dts/theme-core/src/surfaces/foregroundInteraction.d.ts +77 -0
  162. package/dist/_dts/theme-core/src/surfaces/index.d.ts +1 -0
  163. package/dist/_dts/theme-core/src/typography/generateTypographyCss.d.ts +2 -2
  164. package/dist/_dts/ui/src/lib/use-delayed-flag.d.ts +9 -0
  165. package/dist/_dts/ui/src/pending-button.d.ts +10 -0
  166. package/dist/client/{BookingConsentAgreement-CZvTDtsK.mjs → BookingConsentAgreement-xJeYNdnb.mjs} +4 -4
  167. package/dist/client/{DiscountCodeDisclosure-D-DsLCMU.mjs → DiscountCodeDisclosure-DdT6uzl9.mjs} +1 -1
  168. package/dist/client/{EventCombined.client-dWqgd5ZO.mjs → EventCombined.client-Cp28uYuM.mjs} +12 -16
  169. package/dist/client/{EventListing.client-BMRa9IYp.mjs → EventListing.client-CD6AJsMr.mjs} +4 -17
  170. package/dist/client/{LeafletStaticMap-D21W9kBZ.mjs → LeafletStaticMap-DBsAi9-e.mjs} +1 -1
  171. package/dist/client/{accordion-FxF_ta47.mjs → accordion-6dwbOKYR.mjs} +1 -1
  172. package/dist/client/{bookingForm-YnwW4TGw.mjs → bookingForm-CZE9_qPQ.mjs} +7 -7
  173. package/dist/client/bookings.mjs +500 -233
  174. package/dist/client/{carousel-vng7fFT5.mjs → carousel-7VHGQARz.mjs} +2 -2
  175. package/dist/client/{carousel.client-59G_WMr4.mjs → carousel.client-DQTjCVQT.mjs} +1 -1
  176. package/dist/client/{cart-DEPDsjNk.mjs → cart-Qg_mvQhh.mjs} +3 -3
  177. package/dist/client/{checkout-CZRWu9rW.mjs → checkout-D84rpgdr.mjs} +3 -3
  178. package/dist/client/{checkoutUrls-BuseL0dw.mjs → checkoutUrls-FL6lRkrt.mjs} +1 -1
  179. package/dist/client/client.mjs +2315 -1017
  180. package/dist/client/{colorStyles-CrxJrPjJ.mjs → colorStyles-3013aRAY.mjs} +3 -1
  181. package/dist/client/{context-DvU_WUmd.mjs → context-Ctp3T0Wr.mjs} +6 -19
  182. package/dist/client/{dates-wnPMiRl5.mjs → dates-DJKFcI_N.mjs} +2 -2
  183. package/dist/client/{eventCalendar-BA3Q5L15.mjs → eventCalendar-CK31z3vs.mjs} +12 -8
  184. package/dist/client/{eventCombined-51wgR-1R.mjs → eventCombined-DiXd-ewn.mjs} +3 -3
  185. package/dist/client/{eventDetails-modaetpm.mjs → eventDetails-CTRgt2DK.mjs} +4 -4
  186. package/dist/client/{eventListing-D8t2J3Kv.mjs → eventListing-Dy9vi_j_.mjs} +3 -3
  187. package/dist/client/{eventRegistration-CYqtkCE_.mjs → eventRegistration-CnalYMr2.mjs} +618 -177
  188. package/dist/client/{form-CBKXN5In.mjs → form-eUiMveTT.mjs} +3 -3
  189. package/dist/client/{headerSection-DylDqNrs.mjs → headerSection-Dy9kQpB1.mjs} +2 -2
  190. package/dist/client/hooks.mjs +692 -212
  191. package/dist/client/{locationMap-CvWrG0vZ.mjs → locationMap-DalCmWU0.mjs} +3 -3
  192. package/dist/client/{media-BOHuueS5.mjs → media-DHpfFwd3.mjs} +1 -1
  193. package/dist/client/{newsletterForm-Btwk70zw.mjs → newsletterForm-SDDPvhS0.mjs} +150 -94
  194. package/dist/client/{pricing-Uzw-GQ6Y.mjs → pricing-OcMz4SnX.mjs} +1 -1
  195. package/dist/client/{productDetail-JLcUYKnd.mjs → productDetail-BQrgHElM.mjs} +3 -3
  196. package/dist/client/{productList-FM0cbUzj.mjs → productList-OnPn_UJj.mjs} +3 -3
  197. package/dist/client/{propsDecoder-DYzafZb2.mjs → propsDecoder-zBdsnS-N.mjs} +168 -32
  198. package/dist/client/rendering/client.mjs +1355 -519
  199. package/dist/client/rendering/islands.mjs +19 -19
  200. package/dist/client/rendering.mjs +2294 -953
  201. package/dist/client/{scrollToBlock-CvXszexS.mjs → scrollToBlock-BNM4Ob2Y.mjs} +28 -11
  202. package/dist/client/{shop-BIcjvy5a.mjs → shop-Bv1fPTwQ.mjs} +6 -6
  203. package/dist/client/{shop-commerce-BZQsy7xw.mjs → shop-commerce-D4KNGaW8.mjs} +7 -7
  204. package/dist/client/{shop-commerce-store-D5V7XAb5.mjs → shop-commerce-store-2N5EV0Rc.mjs} +1 -1
  205. package/dist/client/{shopShared-DowkXevB.mjs → shopShared-DvJGdHTV.mjs} +4 -4
  206. package/dist/client/{useEventFilters-oMoTw_JE.mjs → useEventFilters-BBBvGDHQ.mjs} +19 -13
  207. package/dist/preview-next/before-render.mjs +119 -64
  208. package/dist/preview-next/client/runtime.mjs +4 -4
  209. package/dist/preview-next/editor-chrome.css +4 -8
  210. package/dist/preview-next/keepAlive.mjs +119 -64
  211. package/dist/preview-next/middleware.mjs +119 -64
  212. package/dist/{previewAuthStore-COUyAKaX.mjs → previewAuthStore-Gjb6r6vz.mjs} +119 -64
  213. package/dist/{sdk-runtime-D4k2LSGF.mjs → sdk-runtime-Defnbfzw.mjs} +2 -2
  214. package/dist/{separator-UGtpag4Z.mjs → separator-CZXO3Sb0.mjs} +1 -1
  215. package/dist/server/components.mjs +1170 -384
  216. package/dist/server/config-validation.mjs +560 -105
  217. package/dist/server/config.mjs +564 -109
  218. package/dist/server/data.mjs +688 -212
  219. package/dist/server/index.mjs +126 -66
  220. package/dist/server/next.mjs +1429 -662
  221. package/dist/server/page-converter.mjs +372 -99
  222. package/dist/server/prebuild.mjs +1 -1
  223. package/dist/server/rendering/server.mjs +1624 -817
  224. package/dist/server/rendering.mjs +1200 -391
  225. package/dist/server/routing.mjs +767 -247
  226. package/dist/server/server.mjs +715 -276
  227. package/dist/server/theme-bridge.mjs +475 -110
  228. package/dist/server/theme.mjs +9 -3
  229. package/dist/styles/index.css +265 -45
  230. package/package.json +1 -1
  231. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionCompactRow.d.ts +0 -29
  232. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionList.d.ts +0 -13
@@ -1,7 +1,7 @@
1
- import { i as textColorStyle } from "./colorStyles-CrxJrPjJ.mjs";
2
- import { t as defineIslandPropsDecoder, ut as themeButtonClassName } from "./propsDecoder-DYzafZb2.mjs";
1
+ import { i as textColorStyle } from "./colorStyles-3013aRAY.mjs";
2
+ import { dt as themeButtonClassName, t as defineIslandPropsDecoder } from "./propsDecoder-zBdsnS-N.mjs";
3
3
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
4
- import { t as LeafletStaticMap } from "./LeafletStaticMap-D21W9kBZ.mjs";
4
+ import { t as LeafletStaticMap } from "./LeafletStaticMap-DBsAi9-e.mjs";
5
5
  import "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  //#region ../core/src/location.ts
@@ -1,4 +1,4 @@
1
- import { C as unsafeAsStorageBucketName, D as clsx, E as ok$1, T as err, f as isExplicitRectCrop, i as textColorStyle, m as resolveMediaTransformForAspect, n as mergeStyles, p as parseAspectRatioValue, t as backgroundColorStyle, w as unsafeAsStoragePath, x as unsafeAsMediaAssetId } from "./colorStyles-CrxJrPjJ.mjs";
1
+ import { D as ok$1, E as err, O as clsx, S as unsafeAsMediaAssetId, T as unsafeAsStoragePath, f as isExplicitRectCrop, i as textColorStyle, m as resolveMediaTransformForAspect, n as mergeStyles, p as parseAspectRatioValue, t as backgroundColorStyle, w as unsafeAsStorageBucketName } from "./colorStyles-3013aRAY.mjs";
2
2
  import "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  //#region ../media-core/src/fileSafety.ts
@@ -1,13 +1,13 @@
1
1
  "use client";
2
- import { D as clsx } from "./colorStyles-CrxJrPjJ.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";
2
+ import { O as clsx } from "./colorStyles-3013aRAY.mjs";
3
+ import { Pt as assertNever, Ut as parseMailingListVisitorSelection, dt as themeButtonClassName, mn as assertNever$1, t as defineIslandPropsDecoder } from "./propsDecoder-zBdsnS-N.mjs";
4
+ import { n as useBlockApi, r as BlockApiError, t as BlockApiProvider } from "./context-Ctp3T0Wr.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";
8
8
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
9
- import { useReducer, useState } from "react";
10
- import { jsx, jsxs } from "react/jsx-runtime";
9
+ import { useEffect, useReducer, useRef, useState } from "react";
10
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
11
11
  //#region ../blocks/src/system/runtime/nodes/newsletter-form.client.state.ts
12
12
  const initialNewsletterFormSubmissionState = { tag: "idle" };
13
13
  function newsletterFormSubmissionReducer(state, action) {
@@ -108,6 +108,11 @@ function NewsletterFormClient({ render }) {
108
108
  const api = useBlockApi();
109
109
  const [submissionState, dispatchSubmission] = useReducer(newsletterFormSubmissionReducer, initialNewsletterFormSubmissionState);
110
110
  const [altchaSolution, setAltchaSolution] = useState(null);
111
+ const successRef = useRef(null);
112
+ const succeeded = isNewsletterFormSuccess(submissionState);
113
+ useEffect(() => {
114
+ if (succeeded) successRef.current?.focus();
115
+ }, [succeeded]);
111
116
  const showSpamProtection = render.hydration.spamProtectionEnabled ?? isSpamProtectionEnabled();
112
117
  const fields = render.display.fields;
113
118
  const handleSubmit = async (e) => {
@@ -140,25 +145,27 @@ function NewsletterFormClient({ render }) {
140
145
  if (submitTarget.tag === "unavailable") {
141
146
  dispatchSubmission({
142
147
  type: "failed",
143
- error: newsletterFormError("Newsletter list is not configured")
148
+ error: newsletterFormError(SIGNUPS_PAUSED_MESSAGE)
144
149
  });
145
150
  return;
146
151
  }
147
152
  if (render.hydration.setupRevision === null || render.display.availability === "unavailable") {
148
153
  dispatchSubmission({
149
154
  type: "failed",
150
- error: newsletterFormError("Mailing-list signup is not available right now.")
155
+ error: newsletterFormError(SIGNUPS_PAUSED_MESSAGE)
151
156
  });
152
157
  return;
153
158
  }
154
- const visitorSelection = readVisitorSelection(formData, render.hydration);
155
- if (visitorSelection === null) {
159
+ const selection = readVisitorSelection(formData, render.hydration);
160
+ const selectionError = visitorSelectionError(selection);
161
+ if (selectionError) {
156
162
  dispatchSubmission({
157
163
  type: "failed",
158
- error: newsletterFormError("Choose at least one email topic.")
164
+ error: selectionError
159
165
  });
160
166
  return;
161
167
  }
168
+ const visitorSelection = selection.tag === "chosen" ? selection.value : void 0;
162
169
  dispatchSubmission({ type: "submitted" });
163
170
  try {
164
171
  const result = await api.subscribeNewsletter({
@@ -187,71 +194,27 @@ function NewsletterFormClient({ render }) {
187
194
  } catch (err) {
188
195
  dispatchSubmission({
189
196
  type: "failed",
190
- error: newsletterFormError(err instanceof Error ? err.message : "Subscription failed. Please try again.")
197
+ error: newsletterFormError(transportFailureMessage(err))
191
198
  });
192
199
  }
193
200
  };
194
- const renderField = (field) => {
195
- const inputId = `newsletter_${field.id}`;
196
- const fieldError = getNewsletterSubmissionFieldError(submissionState, field.id);
197
- const fieldErrorId = `${inputId}-error`;
198
- const validationProps = getFieldValidationControlProps({
199
- message: fieldError,
200
- messageId: fieldErrorId
201
- });
202
- return /* @__PURE__ */ jsxs("div", {
203
- className: "fb-field newsletter-field",
204
- children: [
205
- /* @__PURE__ */ jsxs("label", {
206
- htmlFor: inputId,
207
- className: "form-label",
208
- children: [field.label, field.required && /* @__PURE__ */ jsx("span", {
209
- className: "newsletter-required",
210
- "aria-hidden": "true",
211
- children: "*"
212
- })]
213
- }),
214
- /* @__PURE__ */ jsx("input", {
215
- id: inputId,
216
- name: field.id,
217
- type: field.type,
218
- required: field.required,
219
- placeholder: field.placeholder,
220
- className: "form-input",
221
- autoComplete: field.type === "email" ? "email" : void 0,
222
- disabled: isNewsletterFormSubmitting(submissionState),
223
- ...validationProps
224
- }),
225
- fieldError && /* @__PURE__ */ jsx(FieldValidationMessage, {
226
- id: fieldErrorId,
227
- className: "fb-error",
228
- children: fieldError
229
- })
230
- ]
231
- }, field.id);
232
- };
201
+ const submitting = isNewsletterFormSubmitting(submissionState);
233
202
  const formError = getNewsletterSubmissionFormError(submissionState);
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
- }
203
+ if (succeeded) return /* @__PURE__ */ jsx("div", {
204
+ ref: successRef,
205
+ tabIndex: -1,
206
+ className: clsx("newsletter-form", "newsletter-success", render.display.className ?? void 0),
207
+ children: /* @__PURE__ */ jsx(FeedbackMessage, {
208
+ tone: "success",
209
+ className: "fb-success",
210
+ role: "status",
211
+ children: getNewsletterSuccessOutcome(submissionState) === "confirmation_required" ? "Please check your inbox to confirm your signup." : render.display.successMessage
212
+ })
213
+ });
246
214
  if (render.display.availability === "unavailable") return /* @__PURE__ */ jsx(UnavailableNewsletterForm, { className: render.display.className });
247
- return /* @__PURE__ */ jsxs("div", {
215
+ return /* @__PURE__ */ jsx("div", {
248
216
  className: clsx("newsletter-form", render.display.className ?? void 0),
249
- children: [formError && /* @__PURE__ */ jsx(FeedbackMessage, {
250
- tone: "error",
251
- className: "fb-error",
252
- role: "alert",
253
- children: formError
254
- }), /* @__PURE__ */ jsxs("form", {
217
+ children: /* @__PURE__ */ jsxs("form", {
255
218
  onSubmit: handleSubmit,
256
219
  className: "fb-form",
257
220
  children: [
@@ -266,18 +229,15 @@ function NewsletterFormClient({ render }) {
266
229
  /* @__PURE__ */ jsxs("div", {
267
230
  className: "newsletter-form-fields",
268
231
  children: [
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))]
232
+ fields.map((field) => /* @__PURE__ */ jsx(NewsletterField, {
233
+ field,
234
+ submitting,
235
+ error: getNewsletterSubmissionFieldError(submissionState, field.id)
236
+ }, field.id)),
237
+ render.hydration.choicePresentation === "visitor_choice" ? /* @__PURE__ */ jsx(NewsletterTopicChoices, {
238
+ choices: render.display.choices,
239
+ submitting,
240
+ error: getNewsletterSubmissionFieldError(submissionState, TOPIC_CHOICE_FIELD_ID)
281
241
  }) : null,
282
242
  showSpamProtection && /* @__PURE__ */ jsx("div", {
283
243
  className: "newsletter-altcha",
@@ -286,6 +246,12 @@ function NewsletterFormClient({ render }) {
286
246
  onSolutionChange: setAltchaSolution
287
247
  })
288
248
  }),
249
+ formError && /* @__PURE__ */ jsx(FeedbackMessage, {
250
+ tone: "error",
251
+ className: "fb-error",
252
+ role: "alert",
253
+ children: formError
254
+ }),
289
255
  /* @__PURE__ */ jsx("div", {
290
256
  className: "newsletter-submit",
291
257
  children: /* @__PURE__ */ jsx("button", {
@@ -294,8 +260,8 @@ function NewsletterFormClient({ render }) {
294
260
  variant: render.display.buttonVariant,
295
261
  size: "md"
296
262
  }),
297
- disabled: isNewsletterFormSubmitting(submissionState),
298
- children: isNewsletterFormSubmitting(submissionState) ? "Subscribing..." : render.display.buttonLabel
263
+ disabled: submitting,
264
+ children: submitting ? "Subscribing..." : render.display.buttonLabel
299
265
  })
300
266
  })
301
267
  ]
@@ -305,9 +271,70 @@ function NewsletterFormClient({ render }) {
305
271
  children: render.display.privacyNote
306
272
  })
307
273
  ]
308
- })]
274
+ })
309
275
  });
310
276
  }
277
+ function NewsletterField({ field, submitting, error }) {
278
+ const inputId = `newsletter_${field.id}`;
279
+ const errorId = `${inputId}-error`;
280
+ return /* @__PURE__ */ jsxs("div", {
281
+ className: "fb-field newsletter-field",
282
+ children: [
283
+ /* @__PURE__ */ jsxs("label", {
284
+ htmlFor: inputId,
285
+ className: "form-label",
286
+ children: [field.label, field.required && /* @__PURE__ */ jsx("span", {
287
+ className: "newsletter-required",
288
+ "aria-hidden": "true",
289
+ children: "*"
290
+ })]
291
+ }),
292
+ /* @__PURE__ */ jsx("input", {
293
+ id: inputId,
294
+ name: field.id,
295
+ type: field.type,
296
+ required: field.required,
297
+ placeholder: field.placeholder,
298
+ className: "form-input",
299
+ autoComplete: field.type === "email" ? "email" : void 0,
300
+ disabled: submitting,
301
+ ...getFieldValidationControlProps({
302
+ message: error,
303
+ messageId: errorId
304
+ })
305
+ }),
306
+ error && /* @__PURE__ */ jsx(FieldValidationMessage, {
307
+ id: errorId,
308
+ className: "fb-error",
309
+ children: error
310
+ })
311
+ ]
312
+ });
313
+ }
314
+ function NewsletterTopicChoices({ choices, submitting, error }) {
315
+ const errorId = `newsletter_${TOPIC_CHOICE_FIELD_ID}-error`;
316
+ return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("fieldset", {
317
+ className: "fb-fieldset newsletter-topics",
318
+ "aria-describedby": error ? errorId : void 0,
319
+ children: [/* @__PURE__ */ jsx("legend", {
320
+ className: "form-label",
321
+ children: "What would you like to hear about?"
322
+ }), choices.map((choice) => /* @__PURE__ */ jsxs("label", {
323
+ className: "fb-inline form-label newsletter-topic-choice",
324
+ children: [/* @__PURE__ */ jsx("input", {
325
+ type: "checkbox",
326
+ name: TOPIC_CHOICE_FIELD_ID,
327
+ value: choice.id,
328
+ className: "form-checkbox",
329
+ disabled: submitting
330
+ }), /* @__PURE__ */ jsx("span", { children: choice.label })]
331
+ }, choice.id))]
332
+ }), error && /* @__PURE__ */ jsx(FieldValidationMessage, {
333
+ id: errorId,
334
+ className: "fb-error",
335
+ children: error
336
+ })] });
337
+ }
311
338
  function UnavailableNewsletterForm({ className }) {
312
339
  return /* @__PURE__ */ jsx("div", {
313
340
  className: clsx("newsletter-form", className ?? void 0),
@@ -315,14 +342,41 @@ function UnavailableNewsletterForm({ className }) {
315
342
  tone: "error",
316
343
  className: "fb-error",
317
344
  role: "status",
318
- children: "Mailing-list signup is not available right now."
345
+ children: SIGNUPS_PAUSED_MESSAGE
319
346
  })
320
347
  });
321
348
  }
349
+ const TOPIC_CHOICE_FIELD_ID = "mailingListChoice";
350
+ /** The site's setup is broken or missing: nothing the visitor does will help. */
351
+ const SIGNUPS_PAUSED_MESSAGE = "We can’t accept signups right now. Please try again later.";
352
+ /** The provider did not answer in time or at all: worth another go shortly. */
353
+ const RETRY_SHORTLY_MESSAGE = "We couldn’t confirm your signup. Please try again in a little while.";
354
+ const TOO_MANY_ATTEMPTS_MESSAGE = "There have been too many signup attempts. Please wait a moment and try again.";
355
+ /**
356
+ * Vetted copy for a request that never produced a signup response. The raw
357
+ * error text ("Failed to fetch", "received invalid JSON") is for logs, not
358
+ * visitors.
359
+ */
360
+ function transportFailureMessage(err) {
361
+ if (err instanceof BlockApiError) {
362
+ if (err.status === 429) return TOO_MANY_ATTEMPTS_MESSAGE;
363
+ if (err.status === 403) return "We couldn’t verify this submission. Please try again.";
364
+ if (err.status === 400 || err.status === 422) return "Please check your details and try again.";
365
+ }
366
+ return RETRY_SHORTLY_MESSAGE;
367
+ }
368
+ function visitorSelectionError(selection) {
369
+ switch (selection.tag) {
370
+ case "nothing_chosen": return newsletterFieldError(TOPIC_CHOICE_FIELD_ID, "Choose at least one email topic.");
371
+ case "unusable": return newsletterFormError(SIGNUPS_PAUSED_MESSAGE);
372
+ case "not_offered":
373
+ case "chosen": return null;
374
+ }
375
+ }
322
376
  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;
377
+ if (hydration.choicePresentation !== "visitor_choice") return { tag: "not_offered" };
378
+ const ids = formData.getAll(TOPIC_CHOICE_FIELD_ID).flatMap((value) => typeof value === "string" ? [value] : []);
379
+ if (ids.length === 0) return { tag: "nothing_chosen" };
326
380
  const raw = hydration.choiceProvider === "native" ? {
327
381
  provider: "native",
328
382
  topicIds: ids
@@ -333,9 +387,12 @@ function readVisitorSelection(formData, hydration) {
333
387
  provider: "mailchimp",
334
388
  interestIds: ids
335
389
  } : null;
336
- if (raw === null) return null;
390
+ if (raw === null) return { tag: "unusable" };
337
391
  const parsed = parseMailingListVisitorSelection(raw);
338
- return parsed.ok ? parsed.value : null;
392
+ return parsed.ok ? {
393
+ tag: "chosen",
394
+ value: parsed.value
395
+ } : { tag: "unusable" };
339
396
  }
340
397
  function publicSignupError(outcome) {
341
398
  switch (outcome.tag) {
@@ -343,11 +400,10 @@ function publicSignupError(outcome) {
343
400
  case "unavailable": switch (outcome.reason) {
344
401
  case "configuration_unavailable":
345
402
  case "authentication_failed":
346
- case "target_unavailable": return "Mailing-list signup is not available right now.";
403
+ case "target_unavailable": return SIGNUPS_PAUSED_MESSAGE;
347
404
  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.";
405
+ case "rate_limited": return TOO_MANY_ATTEMPTS_MESSAGE;
406
+ case "temporarily_unavailable": return RETRY_SHORTLY_MESSAGE;
351
407
  }
352
408
  case "uncertain": return "We could not confirm whether your signup completed. Please wait a moment, then try again.";
353
409
  }
@@ -1,4 +1,4 @@
1
- import { in as formatEventPricing, rn as formatBookingPriceDisplay, sn as publicEventPricingDisplay } from "./propsDecoder-DYzafZb2.mjs";
1
+ import { an as formatEventPricing, cn as publicEventPricingDisplay, in as formatBookingPriceDisplay } from "./propsDecoder-zBdsnS-N.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-DYzafZb2.mjs";
2
- import { r as ProductDetailController } from "./shop-commerce-BZQsy7xw.mjs";
3
- import { t as mountShopBlockIsland } from "./shopShared-DowkXevB.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-zBdsnS-N.mjs";
2
+ import { r as ProductDetailController } from "./shop-commerce-D4KNGaW8.mjs";
3
+ import { t as mountShopBlockIsland } from "./shopShared-DvJGdHTV.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-DYzafZb2.mjs";
2
- import { i as ProductListController } from "./shop-commerce-BZQsy7xw.mjs";
3
- import { t as mountShopBlockIsland } from "./shopShared-DowkXevB.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-zBdsnS-N.mjs";
2
+ import { i as ProductListController } from "./shop-commerce-D4KNGaW8.mjs";
3
+ import { t as mountShopBlockIsland } from "./shopShared-DvJGdHTV.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