@riverbankcms/sdk 0.148.0 → 0.150.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 (250) hide show
  1. package/README.md +1 -1
  2. package/dist/EventEmbeddedCheckoutStep-D00Kc8Zj.mjs +285 -0
  3. package/dist/{PreviewEditorSidebar-DvEPG3Z2.mjs → PreviewEditorSidebar-7ZhmmnBB.mjs} +103 -66
  4. package/dist/{PreviewEditorUI-D6eb6fkx.mjs → PreviewEditorUI-BIJucTRd.mjs} +3 -6
  5. package/dist/{PreviewQueryProvider-5znTyJuz.mjs → PreviewQueryProvider-C0mndwHB.mjs} +3 -3
  6. package/dist/{SdkPreviewModeRuntime-DJ6utQ_R.mjs → SdkPreviewModeRuntime-tj45gmCX.mjs} +96 -67
  7. package/dist/{SiteChromeCustomizeContext-CFJYh6vo.mjs → SiteChromeCustomizeContext-BFOt0ss-.mjs} +4804 -4161
  8. package/dist/_dts/ai/src/contracts/proposals.d.ts +660 -0
  9. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +510 -0
  10. package/dist/_dts/api/src/billing.d.ts +2 -2
  11. package/dist/_dts/api/src/bookingConfig.d.ts +33 -48
  12. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +2 -6
  13. package/dist/_dts/api/src/bookingOperations.d.ts +5 -7
  14. package/dist/_dts/api/src/bookingRecords.d.ts +15 -11
  15. package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +5 -5
  16. package/dist/_dts/api/src/clientErrorReporting.d.ts +11 -0
  17. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +0 -2
  18. package/dist/_dts/api/src/common/cancellation.d.ts +23 -0
  19. package/dist/_dts/api/src/contentRuntime.d.ts +5 -1
  20. package/dist/_dts/api/src/customerMembershipOutcomes.d.ts +1 -1
  21. package/dist/_dts/api/src/endpoints.d.ts +2 -10
  22. package/dist/_dts/api/src/eventManagementContracts.d.ts +4 -7
  23. package/dist/_dts/api/src/footerCompositionContracts.d.ts +9 -0
  24. package/dist/_dts/api/src/footerSettings.d.ts +3 -3
  25. package/dist/_dts/api/src/index.d.ts +4 -4
  26. package/dist/_dts/api/src/navigation/bookingPortalLink.d.ts +13 -0
  27. package/dist/_dts/api/src/navigation.d.ts +1 -0
  28. package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +2 -2
  29. package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +2 -29
  30. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +9 -173
  31. package/dist/_dts/api/src/request.d.ts +1 -1
  32. package/dist/_dts/api/src/sdk-event-upsert.d.ts +1 -1
  33. package/dist/_dts/api/src/sdkPullEventContracts.d.ts +1 -1
  34. package/dist/_dts/api/src/sdkThemeWire.d.ts +12 -0
  35. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +3 -3
  36. package/dist/_dts/api/src/siteOperations.d.ts +6 -2
  37. package/dist/_dts/api/src/siteSettings.d.ts +2 -0
  38. package/dist/_dts/blocks/src/client/site-chrome.d.ts +1 -1
  39. package/dist/_dts/blocks/src/client.d.ts +2 -1
  40. package/dist/_dts/blocks/src/contracts/index.d.ts +1 -1
  41. package/dist/_dts/blocks/src/contracts/non-block-islands.d.ts +2 -2
  42. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +38 -10
  43. package/dist/_dts/blocks/src/portal/types.d.ts +9 -6
  44. package/dist/_dts/blocks/src/rendering/server.d.ts +1 -1
  45. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +24 -24
  46. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +1 -1
  47. package/dist/_dts/blocks/src/system/blocks/shared/bookingPaymentTerms.d.ts +84 -160
  48. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +2 -2
  49. package/dist/_dts/blocks/src/system/blocks/shop.shared.d.ts +31 -4
  50. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +30 -3
  51. package/dist/_dts/blocks/src/system/designCapabilities.d.ts +10 -1
  52. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  53. package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +2 -2
  54. package/dist/_dts/blocks/src/system/runtime/api/types/core.d.ts +3 -1
  55. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +38 -18
  56. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +48 -6
  57. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +24 -3
  58. package/dist/_dts/blocks/src/system/runtime/hooks/useBookingNowIso.d.ts +8 -0
  59. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +1 -1
  60. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.server.d.ts +6 -0
  61. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +2 -1
  62. package/dist/_dts/blocks/src/system/runtime/nodes/commerce/shared/display.d.ts +9 -2
  63. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/presentation.d.ts +14 -2
  64. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventEmbeddedCheckoutStep.d.ts +13 -0
  65. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationPayment.d.ts +15 -0
  66. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizardActions.d.ts +0 -1
  67. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/FullyBookedStep.d.ts +6 -0
  68. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PaymentBlockingPanel.d.ts +3 -0
  69. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PaymentSelectionStep.d.ts +4 -0
  70. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +15 -5
  71. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.planning.d.ts +4 -2
  72. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventPaymentOptions.d.ts +3 -3
  73. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/paymentLocation.d.ts +3 -0
  74. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/paymentResponse.d.ts +72 -0
  75. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationCompletion.d.ts +66 -5
  76. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationErrorRecovery.d.ts +1 -4
  77. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationStateMachine.d.ts +13 -5
  78. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/sessionStorage.d.ts +11 -52
  79. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +19 -2
  80. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +7 -42
  81. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +7 -8
  82. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +94 -24
  83. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useGuestRegistrationRecovery.d.ts +30 -0
  84. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/usePaymentStatusRecovery.d.ts +24 -12
  85. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useRegistrationAdmission.d.ts +18 -0
  86. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/wizardSteps.d.ts +6 -1
  87. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +1 -1
  88. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +24 -24
  89. package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +41 -6
  90. package/dist/_dts/blocks/src/system/runtime/shared/bookingPaymentOptions.d.ts +7 -2
  91. package/dist/_dts/blocks/src/system/runtime/shared/stripe/browserStripe.d.ts +8 -0
  92. package/dist/_dts/blocks/src/system/transforms/registry/eventCalendar.d.ts +8 -0
  93. package/dist/_dts/commerce/src/purchase/bookingPaymentSelection.d.ts +54 -0
  94. package/dist/_dts/commerce/src/purchase/checkoutCommitPlan.d.ts +58 -13
  95. package/dist/_dts/commerce/src/purchase/checkoutCopy.d.ts +10 -0
  96. package/dist/_dts/commerce/src/purchase/checkoutErrorCodes.d.ts +1 -1
  97. package/dist/_dts/commerce/src/purchase/checkoutPaymentPlanPlanning.d.ts +16 -21
  98. package/dist/_dts/commerce/src/purchase/checkoutPaymentTerms.d.ts +23 -40
  99. package/dist/_dts/commerce/src/purchase/checkoutPresentation.d.ts +49 -0
  100. package/dist/_dts/commerce/src/purchase/checkoutSessionMetadata.d.ts +6 -6
  101. package/dist/_dts/commerce/src/purchase/checkoutStripeFinalizationPlanning.d.ts +5 -1
  102. package/dist/_dts/commerce/src/purchase/checkoutStripeSessionPlanning.d.ts +5 -4
  103. package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +9 -0
  104. package/dist/_dts/commerce/src/purchase/index.d.ts +3 -3
  105. package/dist/_dts/commerce/src/purchase/membershipOrderItemMetadata.d.ts +4 -0
  106. package/dist/_dts/commerce/src/purchase/oneTimeCheckoutPlanning.d.ts +9 -4
  107. package/dist/_dts/commerce/src/purchase/orderInstalmentClosure.d.ts +13 -1
  108. package/dist/_dts/commerce/src/purchase/orderInstalmentLifecycle.d.ts +5 -0
  109. package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +4 -1
  110. package/dist/_dts/commerce/src/purchase/orderTypes.d.ts +7 -1
  111. package/dist/_dts/commerce/src/purchase/refundRailSplit.d.ts +1 -1
  112. package/dist/_dts/commerce/src/purchase/stateTransitions.d.ts +2 -2
  113. package/dist/_dts/commerce/src/purchase/stripeCheckoutReturnUrl.d.ts +9 -2
  114. package/dist/_dts/commerce/src/purchase/stripeMinimumCharge.d.ts +6 -0
  115. package/dist/_dts/commerce/src/purchase/types.d.ts +7 -7
  116. package/dist/_dts/content-editor/src/FooterComposerOverview.d.ts +3 -2
  117. package/dist/_dts/content-editor/src/controller/editLeaseHandover.d.ts +30 -0
  118. package/dist/_dts/content-editor/src/footerPreviewRuntime.d.ts +6 -1
  119. package/dist/_dts/content-editor/src/lib/browserStorage.d.ts +5 -0
  120. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +7 -0
  121. package/dist/_dts/core/src/booking-flexible-balance.d.ts +2 -2
  122. package/dist/_dts/core/src/booking-instalment-deposit.d.ts +20 -0
  123. package/dist/_dts/core/src/booking-live-payment-terms.d.ts +72 -0
  124. package/dist/_dts/core/src/booking-payment-options.d.ts +24 -0
  125. package/dist/_dts/core/src/booking-payment-schemas.d.ts +522 -0
  126. package/dist/_dts/core/src/branded.d.ts +3 -0
  127. package/dist/_dts/core/src/edit-lease.d.ts +5 -0
  128. package/dist/_dts/core/src/index.d.ts +4 -0
  129. package/dist/_dts/core/src/patch/index.d.ts +30 -0
  130. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +326 -36
  131. package/dist/_dts/media-editor/src/MediaPickerDialog.d.ts +3 -1
  132. package/dist/_dts/media-editor/src/MediaPickerMiniDialog.d.ts +10 -0
  133. package/dist/_dts/media-editor/src/index.d.ts +2 -0
  134. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +0 -1
  135. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +1 -1
  136. package/dist/_dts/preview-next/src/client/previewAuthStore.d.ts +7 -0
  137. package/dist/_dts/preview-next/src/constants.d.ts +4 -0
  138. package/dist/_dts/preview-next/src/keepAlive.d.ts +1 -0
  139. package/dist/_dts/sdk/src/bookings/index.d.ts +2 -1
  140. package/dist/_dts/sdk/src/bookings/types.d.ts +1 -1
  141. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -12
  142. package/dist/_dts/sdk/src/version.d.ts +1 -1
  143. package/dist/_dts/theme-core/src/blocks/index.d.ts +1 -0
  144. package/dist/_dts/theme-core/src/blocks/opaquePanels.d.ts +147 -0
  145. package/dist/_dts/theme-core/src/boxBackgroundSchema.d.ts +22 -0
  146. package/dist/_dts/theme-core/src/buttons/buttonSurfaceContext.d.ts +22 -0
  147. package/dist/_dts/theme-core/src/cards/roles.d.ts +12 -0
  148. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  149. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +198 -0
  150. package/dist/_dts/theme-core/src/palette/utils/index.d.ts +2 -0
  151. package/dist/_dts/theme-core/src/palette/utils/scrimContrast.d.ts +22 -0
  152. package/dist/_dts/theme-core/src/runtime/bridgeColourTokens.d.ts +10 -0
  153. package/dist/_dts/theme-core/src/schema.d.ts +330 -0
  154. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +0 -51
  155. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +0 -51
  156. package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +11 -0
  157. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorCapabilities.d.ts +7 -1
  158. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +7 -1
  159. package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +0 -5
  160. package/dist/_dts/theme-core/src/site-styles/previewRuntimeCapabilities.d.ts +12 -6
  161. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +7 -4
  162. package/dist/_dts/theme-core/src/site-styles/sectionSurfaceBackgrounds.d.ts +65 -0
  163. package/dist/_dts/theme-core/src/site-styles/types.d.ts +17 -0
  164. package/dist/_dts/theme-core/src/surfaces/opaqueSurface.d.ts +43 -0
  165. package/dist/_dts/ui/src/color-picker.d.ts +1 -1
  166. package/dist/_dts/ui/src/palette/useHexDraft.d.ts +7 -0
  167. package/dist/client/{BookingMailingListNote-CzRt2dF_.mjs → BookingMailingListNote-CYHOufsI.mjs} +33 -124
  168. package/dist/client/{CheckboxChoice-B33MqoUo.mjs → CheckboxChoice-M-3HycLw.mjs} +1 -1
  169. package/dist/client/{DemoBookingPortalAccess-mxqwap3f.mjs → DemoBookingPortalAccess-Cvr9O_ca.mjs} +2 -2
  170. package/dist/client/{EventCombined.client-CDb11igO.mjs → EventCombined.client-m5UZIobP.mjs} +7 -7
  171. package/dist/client/EventEmbeddedCheckoutStep-DL6zFAkA.mjs +289 -0
  172. package/dist/client/{EventListing.client-EgYhzKPa.mjs → EventListing.client-DeMfCM04.mjs} +2 -2
  173. package/dist/client/{LeafletStaticMap-gtmtaA2b.mjs → LeafletStaticMap-CvZ3gOdD.mjs} +1 -1
  174. package/dist/client/{checkoutUrls-CXhko2Rv.mjs → RichText-BtfNvQV6.mjs} +2 -29
  175. package/dist/client/{TerminalPanel-DvNUP5ot.mjs → TerminalPanel-CUCNEwlH.mjs} +2 -18
  176. package/dist/client/{ThemedButton-C7CeUJjW.mjs → ThemedButton-C7WhXuRl.mjs} +2 -2
  177. package/dist/client/{accordion-kjvt49rA.mjs → accordion-cQm5mjqs.mjs} +1 -1
  178. package/dist/client/{bookingForm-pbRZordh.mjs → bookingForm-BVPJE5RQ.mjs} +15 -11
  179. package/dist/client/bookings.mjs +2860 -1222
  180. package/dist/client/{carousel-f4Zbmicv.mjs → carousel-3vgnY7LC.mjs} +2 -2
  181. package/dist/client/{carousel.client-A2lG-9od.mjs → carousel.client-CISsdZvg.mjs} +1 -1
  182. package/dist/client/{cart-DO20An50.mjs → cart-BGK4oOjm.mjs} +3 -3
  183. package/dist/client/{checkout-Du5amDR_.mjs → checkout-GsBLUNJD.mjs} +3 -3
  184. package/dist/client/checkoutUrls-ChxwaNtO.mjs +28 -0
  185. package/dist/client/client.mjs +3324 -2053
  186. package/dist/client/{colorStyles-j5U9v5JA.mjs → colorStyles-D-32xHZh.mjs} +2 -30
  187. package/dist/client/{context-eW97E945.mjs → context-D_8s12Fp.mjs} +1 -1
  188. package/dist/client/{dates-jPCirRea.mjs → dates-DeJQbQ9T.mjs} +2 -2
  189. package/dist/client/{eventCalendar-C2M-iE4j.mjs → eventCalendar-cmucD4NR.mjs} +10 -10
  190. package/dist/client/{eventCombined-W6ns3LHg.mjs → eventCombined-ku3E9FTl.mjs} +4 -4
  191. package/dist/client/{eventDetails-CR-GT0f0.mjs → eventDetails-CyKZ61sF.mjs} +5 -5
  192. package/dist/client/{eventListing-BK8AfYZz.mjs → eventListing-B7yxGIhX.mjs} +4 -4
  193. package/dist/client/{eventRegistration-BJSd4KUu.mjs → eventRegistration-BoXfSFgZ.mjs} +1455 -1184
  194. package/dist/client/{form-BvpfbQaT.mjs → form-CNQOWhJo.mjs} +5 -5
  195. package/dist/client/{headerSection-I5sUQ8x-.mjs → headerSection-DahaBJGQ.mjs} +3 -3
  196. package/dist/client/hooks.mjs +283 -193
  197. package/dist/client/{locationMap-BLvwf9_f.mjs → locationMap-BoDjqYlW.mjs} +4 -4
  198. package/dist/client/{media-Cl38iOMI.mjs → media-BFY0y2rb.mjs} +2 -1
  199. package/dist/client/{newsletterForm-DrQ2weE8.mjs → newsletterForm-DtzXDklw.mjs} +4 -4
  200. package/dist/client/{pricing-BES87mrR.mjs → pricing-DXEh2Lhh.mjs} +1 -1
  201. package/dist/client/{productDetail-Url9jcc5.mjs → productDetail-D7cPa-00.mjs} +3 -3
  202. package/dist/client/{productList-DE7ngEZJ.mjs → productList-D1XMap66.mjs} +3 -3
  203. package/dist/client/{propsDecoder-D1OtGXDV.mjs → propsDecoder-DiIeBopB.mjs} +913 -322
  204. package/dist/client/rendering/client.mjs +3913 -2260
  205. package/dist/client/rendering/islands.mjs +19 -19
  206. package/dist/client/rendering.mjs +3302 -2013
  207. package/dist/client/result-DRW7JWXz.mjs +30 -0
  208. package/dist/client/{routeIslandApiConfig-BG9Y-SHg.mjs → routeIslandApiConfig-wzR4lKAY.mjs} +1 -1
  209. package/dist/client/scrollToBlock-C86BYkyV.mjs +17 -0
  210. package/dist/client/{shop-CJkuySJ3.mjs → shop-CYT5P-S5.mjs} +13 -14
  211. package/dist/client/{shop-commerce-store-Bxm75Pg6.mjs → shop-commerce-store-wKhsJQxI.mjs} +1 -1
  212. package/dist/client/{shop-commerce-4rKj5n9h.mjs → shop-commerce-ypBu_dx4.mjs} +9 -9
  213. package/dist/client/{shopShared-DpoQDWfz.mjs → shopShared-DFGhYrf2.mjs} +52 -6
  214. package/dist/client/{useEventFilters-D8HliSqR.mjs → useEventFilters-blSbN5o7.mjs} +8 -8
  215. package/dist/preview-next/before-render.mjs +15 -22
  216. package/dist/preview-next/client/runtime.mjs +4 -4
  217. package/dist/preview-next/constants.mjs +5 -1
  218. package/dist/preview-next/index.mjs +5 -1
  219. package/dist/preview-next/keepAlive.mjs +149 -82
  220. package/dist/preview-next/middleware.mjs +15 -22
  221. package/dist/{previewAuthStore-BXXF3hhW.mjs → previewAuthStore-BBmV7UsW.mjs} +49 -29
  222. package/dist/{sdk-runtime-C2a05WjL.mjs → sdk-runtime-2p8uQk1V.mjs} +2 -2
  223. package/dist/{separator-CuNhBAhS.mjs → separator-Cvvzk0Oo.mjs} +1 -1
  224. package/dist/server/components.mjs +4041 -3704
  225. package/dist/server/config-validation.mjs +345 -255
  226. package/dist/server/config.mjs +345 -255
  227. package/dist/server/data.mjs +283 -193
  228. package/dist/server/index.mjs +20 -27
  229. package/dist/server/next.mjs +788 -469
  230. package/dist/server/page-converter.mjs +245 -121
  231. package/dist/server/prebuild.mjs +1 -1
  232. package/dist/server/rendering/server.mjs +4018 -3690
  233. package/dist/server/rendering.mjs +4044 -3707
  234. package/dist/server/routing.mjs +314 -190
  235. package/dist/server/server.mjs +290 -218
  236. package/dist/server/theme-bridge.mjs +1122 -310
  237. package/dist/server/theme.mjs +126 -116
  238. package/dist/spinner-CDo6AkDz.mjs +658 -0
  239. package/dist/styles/index.css +75 -212
  240. package/package.json +1 -1
  241. package/dist/_dts/api/src/bookingPaymentTermSchemas.d.ts +0 -123
  242. package/dist/_dts/billing/src/checkout/platform.d.ts +0 -77
  243. package/dist/_dts/billing/src/config/env.d.ts +0 -29
  244. package/dist/_dts/billing/src/stripe/client.d.ts +0 -29
  245. package/dist/_dts/blocks/src/system/runtime/hooks/usePaymentVerification.d.ts +0 -63
  246. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventCheckoutHandoffRestore.d.ts +0 -9
  247. package/dist/_dts/commerce/src/purchase/checkoutPaymentTermPlanning.d.ts +0 -10
  248. package/dist/_dts/commerce/src/purchase/checkoutValidatedItemPlanning.d.ts +0 -55
  249. package/dist/_dts/commerce/src/purchase/orderInstalmentPayoff.d.ts +0 -24
  250. package/dist/client/urlParams-D71VXFGx.mjs +0 -47
@@ -1984,6 +1984,16 @@ function isRecord$11(value) {
1984
1984
  return typeof value === "object" && value !== null && !Array.isArray(value);
1985
1985
  }
1986
1986
  //#endregion
1987
+ //#region ../core/src/booking-payment-options.ts
1988
+ /** Automatic instalments and a flexible balance cannot share one booking offer. */
1989
+ function validateBookingPaymentOptionKinds(kinds) {
1990
+ if (kinds.length === 0) return err("no_options");
1991
+ const uniqueKinds = new Set(kinds);
1992
+ if (uniqueKinds.size !== kinds.length) return err("duplicate_kind");
1993
+ if (uniqueKinds.has("instalment_plan") && uniqueKinds.has("flexible_balance")) return err("incompatible_collection_options");
1994
+ return ok(void 0);
1995
+ }
1996
+ //#endregion
1987
1997
  //#region ../core/src/booking-time-zone.ts
1988
1998
  const TIME_ZONE_VALIDITY_CACHE_LIMIT = 100;
1989
1999
  const timeZoneValidityCache = /* @__PURE__ */ new Map();
@@ -4041,7 +4051,8 @@ const CLIENT_ERROR_REPORT_LIMITS = {
4041
4051
  stack: 8e3,
4042
4052
  digest: 128,
4043
4053
  componentStack: 8e3,
4044
- sourceLocation: 1024
4054
+ sourceLocation: 1024,
4055
+ navigationAgeMs: 6e4
4045
4056
  };
4046
4057
  const clientErrorEventSchema = z.enum([
4047
4058
  "dashboard:route-error",
@@ -4058,7 +4069,17 @@ z.object({
4058
4069
  stack: z.string().max(CLIENT_ERROR_REPORT_LIMITS.stack).nullable(),
4059
4070
  digest: z.string().max(CLIENT_ERROR_REPORT_LIMITS.digest).nullable(),
4060
4071
  componentStack: z.string().max(CLIENT_ERROR_REPORT_LIMITS.componentStack).nullable(),
4061
- sourceLocation: z.string().max(CLIENT_ERROR_REPORT_LIMITS.sourceLocation).nullable()
4072
+ sourceLocation: z.string().max(CLIENT_ERROR_REPORT_LIMITS.sourceLocation).nullable(),
4073
+ navigation: z.object({
4074
+ fromPathname: z.string().regex(/^\/[^?#]*$/).max(CLIENT_ERROR_REPORT_LIMITS.pathname),
4075
+ toPathname: z.string().regex(/^\/[^?#]*$/).max(CLIENT_ERROR_REPORT_LIMITS.pathname),
4076
+ type: z.enum([
4077
+ "push",
4078
+ "replace",
4079
+ "traverse"
4080
+ ]),
4081
+ ageMs: z.number().int().min(0).max(CLIENT_ERROR_REPORT_LIMITS.navigationAgeMs)
4082
+ }).strict().nullable().optional()
4062
4083
  }).strict();
4063
4084
  ({
4064
4085
  ...SITE_LIFECYCLE_ENDPOINT_DEFINITIONS,
@@ -4727,6 +4748,68 @@ const paletteValueKeySchema = z.string().transform((value, ctx) => {
4727
4748
  return z.NEVER;
4728
4749
  });
4729
4750
  //#endregion
4751
+ //#region ../theme-core/src/palette/utils/opaqueSurfaceColor.ts
4752
+ /** Resolve an opaque colour, compositing alpha against an explicit underlay. */
4753
+ function resolveOpaqueSurfaceHex(reference, palette, underlayReference) {
4754
+ const opaque = resolveConcreteColorHex(reference, palette);
4755
+ if (opaque) return opaque;
4756
+ if (!underlayReference) return null;
4757
+ const underlayHex = resolveConcreteColorHex(underlayReference, palette);
4758
+ if (!underlayHex) return null;
4759
+ const parts = parseColorTokenParts(reference);
4760
+ if (parts.kind === "token" && parts.opacityPercent !== null) {
4761
+ const foregroundHex = normalizePaletteHex(palette[parts.token] ?? "");
4762
+ return foregroundHex ? compositeHex(foregroundHex, underlayHex, parts.opacityPercent / 100) : null;
4763
+ }
4764
+ const rgba = parseRgba(parts.kind === "raw" ? parts.value : reference);
4765
+ return rgba ? compositeHex(rgbToHex(rgba.r, rgba.g, rgba.b), underlayHex, rgba.alpha) : null;
4766
+ }
4767
+ /** Resolve a colour reference only when it is already fully opaque. */
4768
+ function resolveConcreteColorHex(reference, palette) {
4769
+ const literalHex = normalizePaletteHex(reference);
4770
+ if (literalHex) return literalHex;
4771
+ const parts = parseColorTokenParts(reference);
4772
+ if (parts.kind === "token") {
4773
+ if (parts.opacityPercent !== null) return null;
4774
+ return normalizePaletteHex(palette[parts.token] ?? "");
4775
+ }
4776
+ const literal = parts.kind === "raw" ? parts.value : reference;
4777
+ if (literal.toLowerCase() === "black") return "#000000";
4778
+ if (literal.toLowerCase() === "white") return "#ffffff";
4779
+ return normalizePaletteHex(literal);
4780
+ }
4781
+ function compositeHex(foregroundHex, underlayHex, alpha) {
4782
+ const foreground = hexToRgb(foregroundHex);
4783
+ const underlay = hexToRgb(underlayHex);
4784
+ const channel = (foregroundValue, underlayValue) => Math.round(foregroundValue * alpha + underlayValue * (1 - alpha));
4785
+ return rgbToHex(channel(foreground.r, underlay.r), channel(foreground.g, underlay.g), channel(foreground.b, underlay.b));
4786
+ }
4787
+ function parseRgba(value) {
4788
+ const match = value.trim().match(/^rgba?\(\s*([\d.]+)(?:\s*,\s*|\s+)([\d.]+)(?:\s*,\s*|\s+)([\d.]+)(?:\s*(?:,|\/)\s*([\d.]+%?))?\s*\)$/i);
4789
+ if (!match) return null;
4790
+ const [, rSource, gSource, bSource] = match;
4791
+ if (!rSource || !gSource || !bSource) return null;
4792
+ const r = Number(rSource);
4793
+ const g = Number(gSource);
4794
+ const b = Number(bSource);
4795
+ const alpha = parseAlpha(match[4]);
4796
+ if (alpha === null || !isRgbChannel(r) || !isRgbChannel(g) || !isRgbChannel(b)) return null;
4797
+ return {
4798
+ r,
4799
+ g,
4800
+ b,
4801
+ alpha
4802
+ };
4803
+ }
4804
+ function parseAlpha(source) {
4805
+ if (!source) return 1;
4806
+ const value = source.endsWith("%") ? Number(source.slice(0, -1)) / 100 : Number(source);
4807
+ return Number.isFinite(value) && value >= 0 && value <= 1 ? value : null;
4808
+ }
4809
+ function isRgbChannel(value) {
4810
+ return Number.isFinite(value) && value >= 0 && value <= 255;
4811
+ }
4812
+ //#endregion
4730
4813
  //#region ../theme-core/src/site-styles/styleTags.ts
4731
4814
  /**
4732
4815
  * Descriptive style-axis metadata for button personalities and palette
@@ -7335,68 +7418,6 @@ function interpolateHex(startHex, endHex, position) {
7335
7418
  const channel = (from, to) => Math.round(from + (to - from) * position).toString(16).padStart(2, "0");
7336
7419
  return `#${channel(start.r, end.r)}${channel(start.g, end.g)}${channel(start.b, end.b)}`;
7337
7420
  }
7338
- //#endregion
7339
- //#region ../theme-core/src/palette/utils/opaqueSurfaceColor.ts
7340
- /** Resolve an opaque colour, compositing alpha against an explicit underlay. */
7341
- function resolveOpaqueSurfaceHex(reference, palette, underlayReference) {
7342
- const opaque = resolveConcreteColorHex(reference, palette);
7343
- if (opaque) return opaque;
7344
- if (!underlayReference) return null;
7345
- const underlayHex = resolveConcreteColorHex(underlayReference, palette);
7346
- if (!underlayHex) return null;
7347
- const parts = parseColorTokenParts(reference);
7348
- if (parts.kind === "token" && parts.opacityPercent !== null) {
7349
- const foregroundHex = normalizePaletteHex(palette[parts.token] ?? "");
7350
- return foregroundHex ? compositeHex(foregroundHex, underlayHex, parts.opacityPercent / 100) : null;
7351
- }
7352
- const rgba = parseRgba(parts.kind === "raw" ? parts.value : reference);
7353
- return rgba ? compositeHex(rgbToHex(rgba.r, rgba.g, rgba.b), underlayHex, rgba.alpha) : null;
7354
- }
7355
- /** Resolve a colour reference only when it is already fully opaque. */
7356
- function resolveConcreteColorHex(reference, palette) {
7357
- const literalHex = normalizePaletteHex(reference);
7358
- if (literalHex) return literalHex;
7359
- const parts = parseColorTokenParts(reference);
7360
- if (parts.kind === "token") {
7361
- if (parts.opacityPercent !== null) return null;
7362
- return normalizePaletteHex(palette[parts.token] ?? "");
7363
- }
7364
- const literal = parts.kind === "raw" ? parts.value : reference;
7365
- if (literal.toLowerCase() === "black") return "#000000";
7366
- if (literal.toLowerCase() === "white") return "#ffffff";
7367
- return normalizePaletteHex(literal);
7368
- }
7369
- function compositeHex(foregroundHex, underlayHex, alpha) {
7370
- const foreground = hexToRgb(foregroundHex);
7371
- const underlay = hexToRgb(underlayHex);
7372
- const channel = (foregroundValue, underlayValue) => Math.round(foregroundValue * alpha + underlayValue * (1 - alpha));
7373
- return rgbToHex(channel(foreground.r, underlay.r), channel(foreground.g, underlay.g), channel(foreground.b, underlay.b));
7374
- }
7375
- function parseRgba(value) {
7376
- const match = value.trim().match(/^rgba?\(\s*([\d.]+)(?:\s*,\s*|\s+)([\d.]+)(?:\s*,\s*|\s+)([\d.]+)(?:\s*(?:,|\/)\s*([\d.]+%?))?\s*\)$/i);
7377
- if (!match) return null;
7378
- const [, rSource, gSource, bSource] = match;
7379
- if (!rSource || !gSource || !bSource) return null;
7380
- const r = Number(rSource);
7381
- const g = Number(gSource);
7382
- const b = Number(bSource);
7383
- const alpha = parseAlpha(match[4]);
7384
- if (alpha === null || !isRgbChannel(r) || !isRgbChannel(g) || !isRgbChannel(b)) return null;
7385
- return {
7386
- r,
7387
- g,
7388
- b,
7389
- alpha
7390
- };
7391
- }
7392
- function parseAlpha(source) {
7393
- if (!source) return 1;
7394
- const value = source.endsWith("%") ? Number(source.slice(0, -1)) / 100 : Number(source);
7395
- return Number.isFinite(value) && value >= 0 && value <= 1 ? value : null;
7396
- }
7397
- function isRgbChannel(value) {
7398
- return Number.isFinite(value) && value >= 0 && value <= 255;
7399
- }
7400
7421
  /**
7401
7422
  * Derive the hover foreground that belongs with a resolved resting foreground.
7402
7423
  *
@@ -7962,6 +7983,15 @@ function fallbackBackground(fallbackToken, palette) {
7962
7983
  reason: "unresolvable-colour"
7963
7984
  };
7964
7985
  }
7986
+ /** Every role's contextual styles against one proven solid surface. */
7987
+ function knownSurfaceButtonContextStyles(input) {
7988
+ return Object.fromEntries(VARIANT_ROLES.flatMap((role) => Object.entries(contextualButtonSurfaceStyles(resolveContextualButtonRole({
7989
+ role,
7990
+ buttonSystem: input.buttonSystem,
7991
+ palette: input.palette,
7992
+ surface: input.surface
7993
+ })))));
7994
+ }
7965
7995
  function resolveContextualButtonRole(input) {
7966
7996
  const requested = findVariant(input.buttonSystem, input.role);
7967
7997
  if (!requested) return {
@@ -10961,6 +10991,18 @@ function brandNonEmptyString(value, label) {
10961
10991
  if (value.length === 0) throw new Error(`${label} must be a non-empty string.`);
10962
10992
  return value;
10963
10993
  }
10994
+ /**
10995
+ * What a block's own section background field admits, read from its manifest.
10996
+ * A site style's surface rule may paint a gradient or a photo; a block whose
10997
+ * `_sectionStyles.background` refuses that paint would be dropped at render
10998
+ * admission, so the runtime compiler paints the surface's colour equivalent
10999
+ * instead (see `compileSectionBackground`).
11000
+ */
11001
+ const sectionBackgroundPaintValues = [
11002
+ "color",
11003
+ "gradient",
11004
+ "image"
11005
+ ];
10964
11006
  const plainFrame = { kind: "plain" };
10965
11007
  function panelFrame(treatment) {
10966
11008
  return {
@@ -11045,6 +11087,7 @@ function defineBlockDesignCapability(capability) {
11045
11087
  ...capability,
11046
11088
  kind: "designed",
11047
11089
  looks: capability.looks ?? "not-applicable",
11090
+ sectionBackgroundPaints: admittedSectionBackgroundPaints(capability.sectionBackgroundPaints),
11048
11091
  sectionHeights: capability.sectionHeights ?? ["default"],
11049
11092
  imageSurfaceTreatments: capability.imageSurfaceTreatments ?? ["none"],
11050
11093
  imageSurfaceMotions: capability.imageSurfaceMotions ?? ["static"],
@@ -11057,6 +11100,10 @@ function defineBlockDesignCapability(capability) {
11057
11100
  ...capability.accordionIconSets ? { accordionIconSets: capability.accordionIconSets } : {}
11058
11101
  };
11059
11102
  }
11103
+ /** Absent means the block admits every section background paint. */
11104
+ function admittedSectionBackgroundPaints(paints) {
11105
+ return paints ?? sectionBackgroundPaintValues;
11106
+ }
11060
11107
  //#endregion
11061
11108
  //#region ../theme-core/src/site-styles/logoBranding.ts
11062
11109
  const logoTextConfidenceValues = [
@@ -11335,12 +11382,22 @@ const mediaPresentationSchema = commonSchema.extend({
11335
11382
  const boxBackgroundSchema = z.discriminatedUnion("type", [
11336
11383
  commonSchema.extend({
11337
11384
  type: z.literal("color"),
11338
- color: tokenOrCssColorValueSchema.nullable().optional()
11385
+ color: tokenOrCssColorValueSchema.nullable().optional(),
11386
+ /**
11387
+ * Compiler-owned. The scrim a site-style colour surface lays over media
11388
+ * that replaces it (a Look's band meeting an authored photo), sized so the
11389
+ * surface's foreground stays legible over any pixel. A colour background
11390
+ * never draws it itself; `resolveSectionBackground` moves it onto the
11391
+ * merged media background as its overlay.
11392
+ */
11393
+ mediaScrim: boxBackgroundOverlaySchema.nullable().optional()
11339
11394
  }),
11340
11395
  commonSchema.extend({
11341
11396
  type: z.literal("gradient"),
11342
11397
  gradient: z.string().nullable().optional(),
11343
- gradientPresetId: z.string().min(1).nullable().optional()
11398
+ gradientPresetId: z.string().min(1).nullable().optional(),
11399
+ /** Compiler-owned; see the colour branch. */
11400
+ mediaScrim: boxBackgroundOverlaySchema.nullable().optional()
11344
11401
  }),
11345
11402
  mediaPresentationSchema.extend({
11346
11403
  type: z.literal("image"),
@@ -12138,6 +12195,17 @@ function defineBlockAppearancePreset(preset) {
12138
12195
  * (`defineBlockAppearancePreset` defaults it to `none`) — the block's own
12139
12196
  * composition still governs how its items look. The per-Look rationale for the card-bearing ones lives
12140
12197
  * in `.project/plans/1297-card-role-contract-site-styles-own-card-surfaces/mapping-table.md`.
12198
+ *
12199
+ * A Look asking for the `alternative` or `open` role is offered only where the
12200
+ * site style defines that role (`siteStyleSupportsLookDesign`), so two Looks
12201
+ * that differ only in role are distinct wherever both are offered.
12202
+ *
12203
+ * Retiring a Look is removing its entry. A stored pin to a retired id reads as
12204
+ * an unsupported pin in the page design editor model and renders the block's
12205
+ * auto Look, the same path an unavailable Look takes. Duplicates retired in
12206
+ * the 2026-09 Look audit: `feature-cards-soft-panels`,
12207
+ * `feature-cards-photo-tiles`, `feature-cards-editorial-pathways`,
12208
+ * `testimonials-default-cards`.
12141
12209
  */
12142
12210
  const brandScrimOptionGroups = [{
12143
12211
  id: "image-surface-treatment",
@@ -12522,16 +12590,6 @@ defineBlockAppearancePreset({
12522
12590
  treatment: "framed-programme"
12523
12591
  }
12524
12592
  }
12525
- }), defineBlockAppearancePreset({
12526
- id: "feature-cards-soft-panels",
12527
- target: "feature-cards",
12528
- label: "Soft tinted panels",
12529
- blockKinds: ["block.feature-cards"],
12530
- design: {
12531
- sectionSurface: "base",
12532
- contentFrame: plainFrame,
12533
- cardRole: "alternative"
12534
- }
12535
12593
  }), defineBlockAppearancePreset({
12536
12594
  id: "feature-cards-editorial-diptych",
12537
12595
  target: "feature-cards",
@@ -12543,27 +12601,6 @@ defineBlockAppearancePreset({
12543
12601
  contentFrame: plainFrame,
12544
12602
  cardRole: "default"
12545
12603
  }
12546
- }), defineBlockAppearancePreset({
12547
- id: "feature-cards-editorial-pathways",
12548
- target: "feature-cards",
12549
- label: "Editorial pathways",
12550
- blockKinds: ["block.feature-cards"],
12551
- constraints: { layoutVariantKeys: ["editorial-pathways"] },
12552
- design: {
12553
- sectionSurface: "base",
12554
- contentFrame: plainFrame,
12555
- cardRole: "default"
12556
- }
12557
- }), defineBlockAppearancePreset({
12558
- id: "feature-cards-photo-tiles",
12559
- target: "feature-cards",
12560
- label: "Photo tiles",
12561
- blockKinds: ["block.feature-cards"],
12562
- design: {
12563
- sectionSurface: "base",
12564
- contentFrame: plainFrame,
12565
- cardRole: "default"
12566
- }
12567
12604
  }), defineBlockAppearancePreset({
12568
12605
  id: "events-lined-panel",
12569
12606
  target: "events",
@@ -12652,16 +12689,6 @@ defineBlockAppearancePreset({
12652
12689
  contentFrame: panelFrame("raised"),
12653
12690
  cardRole: "default"
12654
12691
  }
12655
- }), defineBlockAppearancePreset({
12656
- id: "testimonials-default-cards",
12657
- target: "testimonials",
12658
- label: "Default cards",
12659
- blockKinds: ["block.testimonials"],
12660
- design: {
12661
- sectionSurface: "base",
12662
- contentFrame: plainFrame,
12663
- cardRole: "default"
12664
- }
12665
12692
  }), defineBlockAppearancePreset({
12666
12693
  id: "testimonials-statement-cards",
12667
12694
  target: "testimonials",
@@ -16143,9 +16170,7 @@ const curatedSiteStyles = [
16143
16170
  recommendedAppearancePresetIds: [
16144
16171
  "hero-split-editorial",
16145
16172
  "intro-portrait-bio",
16146
- "feature-cards-soft-panels",
16147
- "feature-cards-editorial-columns",
16148
- "feature-cards-photo-tiles",
16173
+ "feature-cards-bold-colors",
16149
16174
  "testimonials-non-carded",
16150
16175
  "faq-contained-help",
16151
16176
  "contact-form-panel"
@@ -16789,8 +16814,7 @@ const curatedSiteStyles = [
16789
16814
  "intro-portrait-bio",
16790
16815
  "feature-cards-editorial-columns",
16791
16816
  "feature-cards-editorial-diptych",
16792
- "feature-cards-editorial-pathways",
16793
- "feature-cards-soft-panels",
16817
+ "feature-cards-bold-colors",
16794
16818
  "events-lined-panel",
16795
16819
  "testimonials-non-carded",
16796
16820
  "faq-base-accordion",
@@ -18596,6 +18620,34 @@ function withLookCapability(declaration) {
18596
18620
  }
18597
18621
  };
18598
18622
  }
18623
+ /**
18624
+ * The section background paints a block's own `_sectionStyles.background`
18625
+ * field admits, read from its manifest so the design capability cannot drift
18626
+ * from what render admission accepts. A block without the field admits none.
18627
+ */
18628
+ function sectionBackgroundPaintsOfFields(fields) {
18629
+ const sectionStyles = fields.find((field) => field.id === "_sectionStyles");
18630
+ if (!sectionStyles || sectionStyles.type !== "modal") return [];
18631
+ const background = sectionStyles.schema.fields.find((field) => field.id === "background");
18632
+ if (!background || background.type !== "tabGroup") return [];
18633
+ const tabIds = new Set(background.tabs.map((tab) => tab.id));
18634
+ return [
18635
+ "color",
18636
+ "gradient",
18637
+ "image"
18638
+ ].filter((paint) => tabIds.has(paint));
18639
+ }
18640
+ /** Pins a designed capability's section background paints to the block's manifest. */
18641
+ function withManifestSectionBackgroundPaints(declaration, fields) {
18642
+ if (declaration.kind !== "capability") return declaration;
18643
+ return {
18644
+ kind: "capability",
18645
+ capability: {
18646
+ ...declaration.capability,
18647
+ sectionBackgroundPaints: sectionBackgroundPaintsOfFields(fields)
18648
+ }
18649
+ };
18650
+ }
18599
18651
  function declareNoBlockDesignCapability(reason) {
18600
18652
  return {
18601
18653
  kind: "none",
@@ -20458,15 +20510,11 @@ function resolveContextualButtonStyles(background, foreground, context, options)
20458
20510
  if (!paletteCache.has(palette)) paletteCache.set(palette, surfaceCache);
20459
20511
  const cached = surfaceCache.get(cacheKey);
20460
20512
  if (cached) return cached;
20461
- const styles = Object.fromEntries(VARIANT_ROLES.flatMap((role) => {
20462
- const resolution = resolveContextualButtonRole({
20463
- role,
20464
- buttonSystem,
20465
- palette,
20466
- surface: surface.surface
20467
- });
20468
- return Object.entries(contextualButtonSurfaceStyles(resolution));
20469
- }));
20513
+ const styles = knownSurfaceButtonContextStyles({
20514
+ surface: surface.surface,
20515
+ palette,
20516
+ buttonSystem
20517
+ });
20470
20518
  surfaceCache.set(cacheKey, styles);
20471
20519
  return styles;
20472
20520
  }
@@ -27154,6 +27202,20 @@ const footerEngagement = stack({
27154
27202
  ...footerSpamProtectionBinding
27155
27203
  }), [], when("module.engagement.kind", { equals: "mailing-list" }))
27156
27204
  ], when("module.kind", { equals: "engagement" }));
27205
+ const platformAttribution = el("div", {
27206
+ className: "rb-caption",
27207
+ "data-site-attribution": "macadamia"
27208
+ }, [
27209
+ text({ as: "span" }, bind("module.lead")),
27210
+ text({
27211
+ as: "span",
27212
+ value: " "
27213
+ }),
27214
+ link({
27215
+ href: { $bind: { from: "module.link.href" } },
27216
+ className: "footer-nav-link rb-caption transition-theme-standard"
27217
+ }, [text({ as: "span" }, bind("module.link.label"))])
27218
+ ], when("module.kind", { equals: "attribution" }));
27157
27219
  const footerGroup = stack({
27158
27220
  gap: "md",
27159
27221
  align: "stretch",
@@ -27183,6 +27245,7 @@ const footerGroup = stack({
27183
27245
  hours,
27184
27246
  socials,
27185
27247
  footerEngagement,
27248
+ platformAttribution,
27186
27249
  stack({ className: "rb-w-full" }, [authoredCopy], when("module.kind", { equals: "supporting-text" })),
27187
27250
  stack({ className: "rb-w-full rb-lg-col-span-3" }, [authoredCopy], when("module.kind", { equals: "legal" }))
27188
27251
  ], repeat("group.modules", "module"))], repeat("region.groups", "group"));
@@ -29121,68 +29184,115 @@ const RichTextDocSchema = z.object({
29121
29184
  content: z.array(TipTapNodeSchema)
29122
29185
  }).strict();
29123
29186
  //#endregion
29124
- //#region ../blocks/src/system/blocks/shared/bookingPaymentTerms.ts
29125
- const bookingDepositRefundPolicySchema$1 = z.enum(["refundable", "non_refundable"]);
29126
- const bookingInstalmentPlanSchema$1 = z.union([
29127
- z.object({
29128
- kind: z.literal("deposit_plus_one_remainder"),
29129
- depositAmountCents: z.number().int().min(0),
29130
- depositRefundability: bookingDepositRefundPolicySchema$1,
29131
- remainderDueCount: z.number().int().positive(),
29132
- intervalUnit: z.enum([
29133
- "day",
29134
- "week",
29135
- "month"
29136
- ])
29137
- }),
29138
- z.object({
29139
- kind: z.literal("deposit_plus_scheduled_instalments"),
29140
- depositAmountCents: z.number().int().min(0),
29141
- depositRefundability: bookingDepositRefundPolicySchema$1,
29142
- instalmentCount: z.number().int().positive(),
29143
- intervalCount: z.number().int().positive(),
29144
- intervalUnit: z.enum([
29145
- "day",
29146
- "week",
29147
- "month"
29148
- ])
29149
- }),
29150
- z.object({
29151
- kind: z.literal("equal_scheduled_instalments"),
29152
- instalmentCount: z.number().int().positive(),
29153
- intervalCount: z.number().int().positive(),
29154
- intervalUnit: z.enum([
29155
- "day",
29156
- "week",
29157
- "month"
29158
- ])
29159
- })
29187
+ //#region ../core/src/booking-payment-schemas.ts
29188
+ const stripObject = (shape) => z.object(shape);
29189
+ const strictObject = (shape) => z.strictObject(shape);
29190
+ const depositRefundPolicySchema = z.enum(["refundable", "non_refundable"]);
29191
+ const intervalUnitSchema = z.enum([
29192
+ "day",
29193
+ "week",
29194
+ "month"
29160
29195
  ]);
29161
- const bookingFlexibleBalanceDueDateRuleSchema$1 = z.union([z.object({
29162
- kind: z.literal("relative_to_start_date"),
29163
- daysBeforeStart: z.number().int().positive()
29164
- }), z.object({
29165
- kind: z.literal("fixed_calendar_date"),
29166
- dueAt: z.string().datetime()
29167
- })]);
29168
- const bookingFlexibleBalanceConfigSchema$1 = z.object({
29169
- upfrontAmountCents: z.number().int().min(0),
29170
- dueDateRule: bookingFlexibleBalanceDueDateRuleSchema$1,
29171
- depositRefundability: bookingDepositRefundPolicySchema$1
29172
- });
29173
- const blockBookingPaymentCollectionOptionSchema = z.union([
29174
- z.object({ kind: z.literal("upfront") }),
29175
- z.object({ kind: z.literal("deferred_manual") }),
29176
- z.object({
29177
- kind: z.literal("instalment_plan"),
29178
- plan: bookingInstalmentPlanSchema$1
29179
- }),
29180
- z.object({
29181
- kind: z.literal("flexible_balance"),
29182
- config: bookingFlexibleBalanceConfigSchema$1
29183
- })
29184
- ]);
29185
- const blockBookingPaymentTermsSchema = z.object({ allowedOptions: z.array(blockBookingPaymentCollectionOptionSchema).min(1) });
29196
+ const nonNegativeIntegerSchema = z.number().int().nonnegative();
29197
+ const positiveIntegerSchema = z.number().int().positive();
29198
+ function createInstalmentPlanSchema(object) {
29199
+ return z.discriminatedUnion("kind", [
29200
+ object({
29201
+ kind: z.literal("deposit_plus_one_remainder"),
29202
+ depositAmountCents: nonNegativeIntegerSchema,
29203
+ depositRefundability: depositRefundPolicySchema,
29204
+ remainderDueCount: positiveIntegerSchema,
29205
+ intervalUnit: intervalUnitSchema
29206
+ }),
29207
+ object({
29208
+ kind: z.literal("deposit_plus_scheduled_instalments"),
29209
+ depositAmountCents: nonNegativeIntegerSchema,
29210
+ depositRefundability: depositRefundPolicySchema,
29211
+ instalmentCount: positiveIntegerSchema,
29212
+ intervalCount: positiveIntegerSchema,
29213
+ intervalUnit: intervalUnitSchema
29214
+ }),
29215
+ object({
29216
+ kind: z.literal("equal_scheduled_instalments"),
29217
+ instalmentCount: positiveIntegerSchema,
29218
+ intervalCount: positiveIntegerSchema,
29219
+ intervalUnit: intervalUnitSchema
29220
+ })
29221
+ ]);
29222
+ }
29223
+ function createFlexibleBalanceSchemas(object) {
29224
+ const dueDateRule = z.discriminatedUnion("kind", [object({
29225
+ kind: z.literal("relative_to_start_date"),
29226
+ daysBeforeStart: positiveIntegerSchema
29227
+ }), object({
29228
+ kind: z.literal("fixed_calendar_date"),
29229
+ dueAt: z.string().datetime()
29230
+ })]);
29231
+ return {
29232
+ dueDateRule,
29233
+ config: object({
29234
+ upfrontAmountCents: nonNegativeIntegerSchema,
29235
+ dueDateRule,
29236
+ depositRefundability: depositRefundPolicySchema
29237
+ })
29238
+ };
29239
+ }
29240
+ const paymentOptionKindsMessages = {
29241
+ no_options: "Choose at least one way for customers to pay.",
29242
+ duplicate_kind: "Choose each payment option only once.",
29243
+ incompatible_collection_options: "Offer instalments or a deposit with the rest paid later, but not both."
29244
+ };
29245
+ function buildBookingPaymentOptionSchemas(object) {
29246
+ const instalmentPlan = createInstalmentPlanSchema(object);
29247
+ const flexibleBalance = createFlexibleBalanceSchemas(object);
29248
+ const paymentCollectionOption = z.discriminatedUnion("kind", [
29249
+ object({ kind: z.literal("upfront") }),
29250
+ object({ kind: z.literal("deferred_manual") }),
29251
+ object({
29252
+ kind: z.literal("instalment_plan"),
29253
+ plan: instalmentPlan
29254
+ }),
29255
+ object({
29256
+ kind: z.literal("flexible_balance"),
29257
+ config: flexibleBalance.config
29258
+ })
29259
+ ]);
29260
+ const paymentTerms = object({ allowedOptions: z.array(paymentCollectionOption) }).superRefine(({ allowedOptions }, ctx) => {
29261
+ const result = validateBookingPaymentOptionKinds(allowedOptions.map(({ kind }) => kind));
29262
+ if (!result.ok) ctx.addIssue({
29263
+ code: "custom",
29264
+ path: ["allowedOptions"],
29265
+ message: paymentOptionKindsMessages[result.error]
29266
+ });
29267
+ });
29268
+ const paymentOptionsChoice = z.discriminatedUnion("source", [z.strictObject({ source: z.literal("default") }), z.strictObject({
29269
+ source: z.literal("custom"),
29270
+ paymentTerms
29271
+ })]);
29272
+ return {
29273
+ depositRefundPolicy: depositRefundPolicySchema,
29274
+ instalmentPlan,
29275
+ flexibleBalanceDueDateRule: flexibleBalance.dueDateRule,
29276
+ flexibleBalanceConfig: flexibleBalance.config,
29277
+ paymentCollectionOption,
29278
+ paymentTerms,
29279
+ paymentOptionsChoice
29280
+ };
29281
+ }
29282
+ function createBookingPaymentOptionSchemas(mode) {
29283
+ return mode === "strict" ? buildBookingPaymentOptionSchemas(strictObject) : buildBookingPaymentOptionSchemas(stripObject);
29284
+ }
29285
+ const bookingPaymentOptionSchemas = createBookingPaymentOptionSchemas("strip");
29286
+ bookingPaymentOptionSchemas.depositRefundPolicy;
29287
+ bookingPaymentOptionSchemas.instalmentPlan;
29288
+ bookingPaymentOptionSchemas.flexibleBalanceDueDateRule;
29289
+ bookingPaymentOptionSchemas.flexibleBalanceConfig;
29290
+ bookingPaymentOptionSchemas.paymentCollectionOption;
29291
+ const bookingPaymentTermsSchema = bookingPaymentOptionSchemas.paymentTerms;
29292
+ bookingPaymentOptionSchemas.paymentOptionsChoice;
29293
+ //#endregion
29294
+ //#region ../blocks/src/system/blocks/shared/bookingPaymentTerms.ts
29295
+ const blockBookingPaymentTermsSchema = bookingPaymentTermsSchema;
29186
29296
  //#endregion
29187
29297
  //#region ../blocks/src/system/blocks/shared/bookingConsent.ts
29188
29298
  const blockBookingConsentSchema = z.object({
@@ -29784,7 +29894,7 @@ const publicPassProductCollectionSchema = z.object({ passes: z.array(publicPassP
29784
29894
  /**
29785
29895
  * Public membership product for shop display
29786
29896
  */
29787
- const publicMembershipProductSchema = z.object({
29897
+ const publicMembershipProductFields = {
29788
29898
  id: z.string(),
29789
29899
  name: z.string(),
29790
29900
  description: z.string().nullable(),
@@ -29793,7 +29903,16 @@ const publicMembershipProductSchema = z.object({
29793
29903
  billingInterval: z.enum(["month", "year"]),
29794
29904
  eligibleCategoryIds: z.array(z.string()),
29795
29905
  eligibleCategoryNames: z.array(z.string())
29906
+ };
29907
+ const purchasablePublicMembershipProductSchema = z.object({
29908
+ ...publicMembershipProductFields,
29909
+ purchaseAvailability: z.literal("purchasable")
29796
29910
  });
29911
+ const publicMembershipProductSchema = z.discriminatedUnion("purchaseAvailability", [purchasablePublicMembershipProductSchema, z.object({
29912
+ ...publicMembershipProductFields,
29913
+ purchaseAvailability: z.literal("display_only"),
29914
+ unavailabilityReason: z.literal("online_payments_unavailable")
29915
+ })]);
29797
29916
  const publicMembershipProductCollectionSchema = z.object({ memberships: z.array(publicMembershipProductSchema) });
29798
29917
  //#endregion
29799
29918
  //#region ../blocks/src/system/blocks/event-registration.shared.ts
@@ -29993,14 +30112,18 @@ const calendarTabViewsSchema = z.enum([
29993
30112
  * @param needsPaymentStep - Whether user must complete payment method selection
29994
30113
  * @returns Array of wizard steps to display
29995
30114
  */
29996
- function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep) {
30115
+ function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep, paymentActive = false) {
29997
30116
  const baseSteps = hasPreSelectedContext ? ["select-tickets", "enter-details"] : [
29998
30117
  "select-event",
29999
30118
  "select-tickets",
30000
30119
  "enter-details"
30001
30120
  ];
30002
30121
  if (!needsPaymentStep) return baseSteps;
30003
- return [...baseSteps, "select-payment"];
30122
+ return paymentActive ? [
30123
+ ...baseSteps,
30124
+ "select-payment",
30125
+ "payment"
30126
+ ] : [...baseSteps, "select-payment"];
30004
30127
  }
30005
30128
  //#endregion
30006
30129
  //#region ../blocks/src/system/runtime/nodes/event-registration/registrationDerivations.ts
@@ -30119,6 +30242,7 @@ const EVENT_REGISTRATION_SHELL_STEP_LABELS = [
30119
30242
  "Date",
30120
30243
  "Tickets",
30121
30244
  "Details",
30245
+ "Payment options",
30122
30246
  "Payment"
30123
30247
  ];
30124
30248
  const eventRegistrationPublicEventSchema = z.preprocess(normalizeEventRegistrationEventInput, publicEventSchema);
@@ -30261,12 +30385,13 @@ function shellLabelForRegistrationStep(step, events) {
30261
30385
  switch (step) {
30262
30386
  case "select-event": return isDateSelection(events) ? "Date" : "Event";
30263
30387
  case "select-tickets": return "Tickets";
30388
+ case "fully-booked":
30264
30389
  case "enter-details": return "Details";
30265
- case "select-payment": return "Payment";
30390
+ case "select-payment": return "Payment options";
30391
+ case "payment": return "Payment";
30266
30392
  case "error":
30267
30393
  case "success":
30268
30394
  case "submitting":
30269
- case "redirecting":
30270
30395
  case "verifying-payment":
30271
30396
  case "verifying-timeout":
30272
30397
  case "payment-status":
@@ -30278,7 +30403,7 @@ function isDateSelection(events) {
30278
30403
  return Boolean(events.length > 1 && firstSeriesId && events.every((event) => event.seriesId === firstSeriesId));
30279
30404
  }
30280
30405
  function buildEventRegistrationShellBodyText(stepLabels) {
30281
- if (stepLabels.includes("Payment")) return "Preparing tickets, details, and payment options.";
30406
+ if (stepLabels.includes("Payment options")) return "Preparing tickets, details, and payment options.";
30282
30407
  if (stepLabels[0] === "Tickets") return "Preparing tickets and booking details.";
30283
30408
  return "Preparing dates, tickets, and booking details.";
30284
30409
  }
@@ -32253,7 +32378,8 @@ const eventCalendarLayout = [styledSection({
32253
32378
  fallback: false
32254
32379
  } },
32255
32380
  banded: { $bind: {
32256
- from: "content.banded",
32381
+ from: "content",
32382
+ transforms: [{ id: "events.calendarBanded" }],
32257
32383
  fallback: false
32258
32384
  } }
32259
32385
  }))]
@@ -35526,7 +35652,7 @@ function buildPassesMembershipsDisplay(options) {
35526
35652
  product: pass
35527
35653
  } : {
35528
35654
  kind: "unavailable",
35529
- label: "Online purchasing coming soon."
35655
+ label: "Online purchasing is unavailable."
35530
35656
  }
35531
35657
  };
35532
35658
  });
@@ -35536,7 +35662,14 @@ function buildPassesMembershipsDisplay(options) {
35536
35662
  description: options.showDescriptions ? membership.description : null,
35537
35663
  priceLabel: formatCommercePrice(membership.price, membership.currency),
35538
35664
  intervalLabel: formatInterval(membership.billingInterval),
35539
- actionLabel: options.membershipActionLabel
35665
+ action: membership.purchaseAvailability === "purchasable" ? {
35666
+ kind: "purchase",
35667
+ label: options.membershipActionLabel,
35668
+ product: membership
35669
+ } : {
35670
+ kind: "unavailable",
35671
+ label: "Online purchasing is unavailable."
35672
+ }
35540
35673
  }));
35541
35674
  return {
35542
35675
  kind: "passes-memberships",
@@ -35756,7 +35889,14 @@ const membershipCardDisplaySchema = z.object({
35756
35889
  description: z.string().nullable(),
35757
35890
  priceLabel: z.string(),
35758
35891
  intervalLabel: z.string(),
35759
- actionLabel: z.string()
35892
+ action: z.discriminatedUnion("kind", [z.object({
35893
+ kind: z.literal("purchase"),
35894
+ label: z.string(),
35895
+ product: purchasablePublicMembershipProductSchema
35896
+ }), z.object({
35897
+ kind: z.literal("unavailable"),
35898
+ label: z.string()
35899
+ })])
35760
35900
  });
35761
35901
  const passesMembershipsDisplaySchema = z.object({
35762
35902
  kind: z.literal("passes-memberships"),
@@ -38394,7 +38534,7 @@ function withDesignCapability(blockKind, definition, designCapability, designMet
38394
38534
  if (definition.manifest.name !== blockKind) throw new Error(`System block kind mismatch: expected ${blockKind}, received ${definition.manifest.name}.`);
38395
38535
  return {
38396
38536
  ...definition,
38397
- designCapability,
38537
+ designCapability: withManifestSectionBackgroundPaints(designCapability, definition.manifest.fields),
38398
38538
  designMetadata,
38399
38539
  manifest: {
38400
38540
  ...definition.manifest,
@@ -39447,6 +39587,16 @@ const builtinTransformDefinitions = [
39447
39587
  return resolveCalendarReadProfile(asPartialObject(value) ?? {});
39448
39588
  }
39449
39589
  },
39590
+ {
39591
+ id: "events.calendarBanded",
39592
+ kind: "formatter",
39593
+ summary: "Paint the week-board band only on a section with no background of its own",
39594
+ run(value) {
39595
+ const content = asPartialObject(value) ?? {};
39596
+ const sectionStyles = asPartialObject(content._sectionStyles);
39597
+ return content.banded === true && parseBackgroundContent(sectionStyles?.background) === null;
39598
+ }
39599
+ },
39450
39600
  ...formattingTransforms,
39451
39601
  ...layoutTransforms,
39452
39602
  ...chromeLogoTransforms,
@@ -40103,6 +40253,7 @@ const CANONICAL_REFUND_PLANNER_ERROR_CODES = [
40103
40253
  "refund_failed"
40104
40254
  ];
40105
40255
  const CANONICAL_ADMIN_REFUND_FAILURE_CODES = [
40256
+ "refund_blocked_by_live_payment_terms",
40106
40257
  ...CANONICAL_REFUND_PLANNER_ERROR_CODES,
40107
40258
  "payment_intent_not_found",
40108
40259
  "stripe_error",
@@ -40118,6 +40269,7 @@ const CANONICAL_ADMIN_REFUND_FAILURE_CODES = [
40118
40269
  //#endregion
40119
40270
  //#region ../api/src/bookingRefundOutcomes.ts
40120
40271
  const STANDARD_LINE_ITEM_REFUND_INVALID_CODES = [
40272
+ "refund_blocked_by_live_payment_terms",
40121
40273
  "missing_amount",
40122
40274
  "invalid_amount",
40123
40275
  "amount_exceeds_remaining",
@@ -40480,68 +40632,6 @@ function collectText(node) {
40480
40632
  }
40481
40633
  z.enum(["public", "unlisted"], { error: "visibility must be 'public' or 'unlisted'" });
40482
40634
  //#endregion
40483
- //#region ../api/src/bookingPaymentTermSchemas.ts
40484
- const bookingDepositRefundPolicySchema = z.enum(["refundable", "non_refundable"]);
40485
- const bookingInstalmentPlanSchema = z.discriminatedUnion("kind", [
40486
- z.object({
40487
- kind: z.literal("deposit_plus_one_remainder"),
40488
- depositAmountCents: z.number().int().nonnegative(),
40489
- depositRefundability: bookingDepositRefundPolicySchema,
40490
- remainderDueCount: z.number().int().positive(),
40491
- intervalUnit: z.enum([
40492
- "day",
40493
- "week",
40494
- "month"
40495
- ])
40496
- }),
40497
- z.object({
40498
- kind: z.literal("deposit_plus_scheduled_instalments"),
40499
- depositAmountCents: z.number().int().nonnegative(),
40500
- depositRefundability: bookingDepositRefundPolicySchema,
40501
- instalmentCount: z.number().int().positive(),
40502
- intervalCount: z.number().int().positive(),
40503
- intervalUnit: z.enum([
40504
- "day",
40505
- "week",
40506
- "month"
40507
- ])
40508
- }),
40509
- z.object({
40510
- kind: z.literal("equal_scheduled_instalments"),
40511
- instalmentCount: z.number().int().positive(),
40512
- intervalCount: z.number().int().positive(),
40513
- intervalUnit: z.enum([
40514
- "day",
40515
- "week",
40516
- "month"
40517
- ])
40518
- })
40519
- ]);
40520
- const bookingFlexibleBalanceDueDateRuleSchema = z.discriminatedUnion("kind", [z.object({
40521
- kind: z.literal("relative_to_start_date"),
40522
- daysBeforeStart: z.number().int().positive()
40523
- }), z.object({
40524
- kind: z.literal("fixed_calendar_date"),
40525
- dueAt: z.string().datetime()
40526
- })]);
40527
- const bookingFlexibleBalanceConfigSchema = z.object({
40528
- upfrontAmountCents: z.number().int().nonnegative(),
40529
- dueDateRule: bookingFlexibleBalanceDueDateRuleSchema,
40530
- depositRefundability: bookingDepositRefundPolicySchema
40531
- });
40532
- z.discriminatedUnion("kind", [
40533
- z.object({ kind: z.literal("upfront") }),
40534
- z.object({ kind: z.literal("deferred_manual") }),
40535
- z.object({
40536
- kind: z.literal("instalment_plan"),
40537
- plan: bookingInstalmentPlanSchema
40538
- }),
40539
- z.object({
40540
- kind: z.literal("flexible_balance"),
40541
- config: bookingFlexibleBalanceConfigSchema
40542
- })
40543
- ]);
40544
- //#endregion
40545
40635
  //#region ../api/src/navigationMenuValidation.ts
40546
40636
  function hasChildren(item) {
40547
40637
  return Array.isArray(item.children) && item.children.length > 0;