@riverbankcms/sdk 0.152.0 → 0.154.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 (303) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/{EventEmbeddedCheckoutStep-DVQXWFm6.mjs → EventEmbeddedCheckoutStep-ba9npQtb.mjs} +1 -1
  3. package/dist/{PreviewEditorSidebar-Dr4NJi3Q.mjs → PreviewEditorSidebar-C7FiaxlF.mjs} +194 -22
  4. package/dist/{PreviewEditorUI-DSZXQbyh.mjs → PreviewEditorUI-DFst50q1.mjs} +20 -44
  5. package/dist/{SdkPreviewModeRuntime-Dl4GyMc3.mjs → SdkPreviewModeRuntime-BUNV_YHZ.mjs} +266 -143
  6. package/dist/{SiteChromeCustomizeContext-DgBe-FlM.mjs → SiteChromeCustomizeContext-DEj7qppF.mjs} +5340 -4329
  7. package/dist/{ThemedButton-B8ViBnLK.mjs → ThemedButton-C8kzu0hY.mjs} +610 -116
  8. package/dist/_dts/ai/src/contracts/proposals.d.ts +416 -182
  9. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +3270 -8214
  10. package/dist/_dts/api/src/billing.d.ts +2 -0
  11. package/dist/_dts/api/src/billingEndpointDefinitions.d.ts +78 -0
  12. package/dist/_dts/api/src/bookingAdjustments.d.ts +3 -2
  13. package/dist/_dts/api/src/bookingOperations.d.ts +7 -2
  14. package/dist/_dts/api/src/bookingPeople.d.ts +19 -0
  15. package/dist/_dts/api/src/bookingPeopleEndpointDefinitions.d.ts +8 -0
  16. package/dist/_dts/api/src/bookingRecords.d.ts +4 -106
  17. package/dist/_dts/api/src/bookings.d.ts +2 -3
  18. package/dist/_dts/api/src/communications.d.ts +19 -5
  19. package/dist/_dts/api/src/contentRuntime.d.ts +1 -0
  20. package/dist/_dts/api/src/endpoints.d.ts +88 -43
  21. package/dist/_dts/api/src/index.d.ts +4 -2
  22. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -0
  23. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  24. package/dist/_dts/api/src/moneyPayments.d.ts +116 -0
  25. package/dist/_dts/api/src/onboarding/surfaceData.d.ts +2 -0
  26. package/dist/_dts/api/src/sdk-event-upsert.d.ts +2 -2
  27. package/dist/_dts/api/src/sdkThemeWire.d.ts +348 -1537
  28. package/dist/_dts/api/src/shared-contracts.d.ts +10 -0
  29. package/dist/_dts/api/src/siteInfrastructure.d.ts +2 -1
  30. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +18 -0
  31. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +17 -16
  32. package/dist/_dts/api/src/siteSettings.d.ts +1 -0
  33. package/dist/_dts/api/src/stripeConnectSetup.d.ts +90 -0
  34. package/dist/_dts/api/src/teamMembers.d.ts +2 -27
  35. package/dist/_dts/api/src/types.d.ts +11 -31
  36. package/dist/_dts/api/src/wholeSeriesRuns.d.ts +2 -4
  37. package/dist/_dts/block-form/src/widgets/RepeaterField/components/layoutGridDomain.d.ts +3 -13
  38. package/dist/_dts/blocks/src/client/site-chrome.d.ts +1 -1
  39. package/dist/_dts/blocks/src/contracts/index.d.ts +1 -0
  40. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +8 -96
  41. package/dist/_dts/blocks/src/index.d.ts +1 -0
  42. package/dist/_dts/blocks/src/lib/media.d.ts +1 -0
  43. package/dist/_dts/blocks/src/lib/picsum.d.ts +2 -2
  44. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -1
  45. package/dist/_dts/blocks/src/primitives/content/components/RichText.d.ts +1 -1
  46. package/dist/_dts/blocks/src/primitives/content/primitives.d.ts +4 -1
  47. package/dist/_dts/blocks/src/primitives/layout/Section.d.ts +1 -0
  48. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +1 -1
  49. package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +2 -2
  50. package/dist/_dts/blocks/src/system/blocks/events/shared/fields.d.ts +0 -4
  51. package/dist/_dts/blocks/src/system/blocks/events/shared/index.d.ts +0 -1
  52. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +276 -884
  53. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +2 -2
  54. package/dist/_dts/blocks/src/system/blocks/form.d.ts +10 -0
  55. package/dist/_dts/blocks/src/system/blocks/image-gallery/fields.d.ts +1 -0
  56. package/dist/_dts/blocks/src/system/blocks/image-gallery.d.ts +6 -1
  57. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
  58. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +92 -90
  59. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +12 -0
  60. package/dist/_dts/blocks/src/system/blocks/shared/teamMembers.d.ts +4 -7
  61. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime-layout.d.ts +23 -0
  62. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime-profile.d.ts +20 -0
  63. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +17 -16
  64. package/dist/_dts/blocks/src/system/blocks/site-footer.d.ts +1 -1
  65. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +2 -2
  66. package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +6 -6
  67. package/dist/_dts/blocks/src/system/customize/facets.d.ts +75 -9
  68. package/dist/_dts/blocks/src/system/fields/backgroundContent.d.ts +377 -1
  69. package/dist/_dts/blocks/src/system/helpers/backgroundMedia.d.ts +6 -2
  70. package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +3 -3
  71. package/dist/_dts/blocks/src/system/layout/repeaterGrid.d.ts +12 -5
  72. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +3 -3
  73. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +48 -48
  74. package/dist/_dts/blocks/src/system/manifest/validation.d.ts +2 -0
  75. package/dist/_dts/blocks/src/system/node/fragments/index.d.ts +1 -0
  76. package/dist/_dts/blocks/src/system/node/fragments/lookSlot.d.ts +1 -1
  77. package/dist/_dts/blocks/src/system/node/fragments/responsiveTwoColumn.d.ts +3 -1
  78. package/dist/_dts/blocks/src/system/node/fragments/sectionHead.d.ts +15 -0
  79. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +18 -198
  80. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +9 -99
  81. package/dist/_dts/blocks/src/system/runtime/hooks/useBookingFlowController.d.ts +1 -1
  82. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +2 -0
  83. package/dist/_dts/blocks/src/system/runtime/lookSurfaces.d.ts +18 -6
  84. package/dist/_dts/blocks/src/system/runtime/nodes/ImageResolveContext.d.ts +1 -1
  85. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +50 -202
  86. package/dist/_dts/blocks/src/system/runtime/nodes/basic.d.ts +2 -1
  87. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +28 -1
  88. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/lookPresentation.d.ts +12 -6
  89. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/presentation.d.ts +1 -1
  90. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +1 -1
  91. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CardListItem.d.ts +1 -1
  92. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +289 -885
  93. package/dist/_dts/blocks/src/system/runtime/nodes/file-download.d.ts +3 -2
  94. package/dist/_dts/blocks/src/system/runtime/nodes/form.fields.d.ts +5 -2
  95. package/dist/_dts/blocks/src/system/runtime/nodes/form.interactive.d.ts +11 -79
  96. package/dist/_dts/blocks/src/system/runtime/nodes/form.parts.d.ts +7 -0
  97. package/dist/_dts/blocks/src/system/runtime/nodes/form.server.d.ts +2 -13
  98. package/dist/_dts/blocks/src/system/runtime/nodes/media.d.ts +22 -90
  99. package/dist/_dts/blocks/src/system/runtime/nodes/mediaContext.d.ts +69 -0
  100. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +8 -72
  101. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.parts.d.ts +6 -6
  102. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +3 -2
  103. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +2 -2
  104. package/dist/_dts/blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.d.ts +3 -0
  105. package/dist/_dts/blocks/src/system/transforms/registry/footerArrangement.d.ts +6 -0
  106. package/dist/_dts/blocks/src/system/transforms/registry/index.d.ts +1 -0
  107. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +0 -11
  108. package/dist/_dts/blocks/src/system/transforms/registry/links.d.ts +3 -3
  109. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -10
  110. package/dist/_dts/commerce/src/purchase/orderConfirmationPlanning.d.ts +1 -0
  111. package/dist/_dts/content-editor/src/FooterComposerOverview.d.ts +5 -2
  112. package/dist/_dts/content-editor/src/FooterComposerPanel.d.ts +1 -1
  113. package/dist/_dts/content-editor/src/FooterNavigationLayoutControl.d.ts +6 -3
  114. package/dist/_dts/content-editor/src/controller/editorLeaseParticipation.d.ts +1 -1
  115. package/dist/_dts/content-editor/src/footerComposer.d.ts +2 -1
  116. package/dist/_dts/content-editor/src/footerComposerPanelTypes.d.ts +3 -1
  117. package/dist/_dts/content-editor/src/footerNavigationLayoutState.d.ts +56 -0
  118. package/dist/_dts/content-editor/src/footerPreviewRuntime.d.ts +2 -1
  119. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +3 -4
  120. package/dist/_dts/content-editor/src/useFooterNavigationLayout.d.ts +11 -8
  121. package/dist/_dts/content-model/src/content-types/schema.d.ts +3 -3
  122. package/dist/_dts/core/src/booking-refunds.d.ts +2 -0
  123. package/dist/_dts/core/src/date-display.d.ts +85 -0
  124. package/dist/_dts/core/src/date-time-formatter.d.ts +2 -0
  125. package/dist/_dts/core/src/footer-arrangement.d.ts +8 -1
  126. package/dist/_dts/core/src/footer-composition-types.d.ts +6 -1
  127. package/dist/_dts/core/src/footer-composition.d.ts +1 -1
  128. package/dist/_dts/core/src/footer-navigation-layout.d.ts +3 -0
  129. package/dist/_dts/core/src/index.d.ts +2 -0
  130. package/dist/_dts/core/src/mailing-list-runtime.d.ts +2 -2
  131. package/dist/_dts/core/src/mailing-list-setup-parser.d.ts +9 -1
  132. package/dist/_dts/core/src/mailing-list-setup.d.ts +12 -1
  133. package/dist/_dts/core/src/mailing-list-submission.d.ts +7 -2
  134. package/dist/_dts/core/src/mailing-list-targeting.d.ts +9 -1
  135. package/dist/_dts/core/src/public-profile.d.ts +3 -1
  136. package/dist/_dts/core/src/scheduled-date-time.d.ts +69 -0
  137. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +105 -13
  138. package/dist/_dts/db/src/schemas/forms.d.ts +16 -16
  139. package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
  140. package/dist/_dts/editor-blocks/src/media/MediaField.d.ts +2 -2
  141. package/dist/_dts/editor-blocks/src/media/admitEditorMediaField.d.ts +4 -0
  142. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/targetingState.d.ts +2 -2
  143. package/dist/_dts/media-core/src/assetsInUseSummary.d.ts +6 -0
  144. package/dist/_dts/media-core/src/contentMediaAudit.d.ts +3 -2
  145. package/dist/_dts/media-core/src/index.d.ts +4 -0
  146. package/dist/_dts/media-core/src/media.d.ts +406 -0
  147. package/dist/_dts/media-core/src/mediaIdentifierSchema.d.ts +3 -0
  148. package/dist/_dts/media-core/src/mediaKinds.d.ts +2 -0
  149. package/dist/_dts/media-core/src/mediaUsageProjection.d.ts +13 -1
  150. package/dist/_dts/media-core/src/mediaWriteNormalizer.d.ts +2 -6
  151. package/dist/_dts/media-core/src/portableMediaReferences.d.ts +8 -21
  152. package/dist/_dts/media-core/src/renderableMediaAsset.d.ts +28 -14
  153. package/dist/_dts/media-core/src/renderableMediaAssetAdmission.d.ts +15 -0
  154. package/dist/_dts/media-editor/src/CropDialog.d.ts +6 -3
  155. package/dist/_dts/media-editor/src/MediaEditor.d.ts +2 -1
  156. package/dist/_dts/media-editor/src/MediaPreview.d.ts +3 -3
  157. package/dist/_dts/media-editor/src/cropEditorSource.d.ts +5 -7
  158. package/dist/_dts/media-editor/src/editorMediaState.d.ts +29 -0
  159. package/dist/_dts/media-editor/src/mediaSelection.d.ts +1 -2
  160. package/dist/_dts/media-editor/src/runtimeMediaAssetState.d.ts +4 -5
  161. package/dist/_dts/media-editor/src/types.d.ts +1 -1
  162. package/dist/_dts/media-editor/src/utils.d.ts +0 -1
  163. package/dist/_dts/media-react/src/components/cropChangePolicy.d.ts +4 -1
  164. package/dist/_dts/media-react/src/components/cropGeometry.d.ts +1 -0
  165. package/dist/_dts/media-react/src/components/useImageCropperController.d.ts +1 -0
  166. package/dist/_dts/preview-next/src/client/blocks/ArrangementBlockToolbar.d.ts +2 -1
  167. package/dist/_dts/preview-next/src/client/blocks/BlockBackgroundChooser.d.ts +2 -1
  168. package/dist/_dts/preview-next/src/client/blocks/previewCustomizeSelectedMedia.d.ts +11 -12
  169. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +1 -0
  170. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +1 -0
  171. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -1
  172. package/dist/_dts/preview-next/src/client/preview/siteChromeSavePlan.d.ts +27 -5
  173. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +2 -0
  174. package/dist/_dts/preview-next/src/client/preview/useConfirmedPreferenceRecord.d.ts +12 -0
  175. package/dist/_dts/preview-next/src/client/preview/usePersistedFooterPreferences.d.ts +26 -0
  176. package/dist/_dts/preview-next/src/client/preview/usePersistedHeaderPreferences.d.ts +40 -2
  177. package/dist/_dts/sdk/src/config/validation.d.ts +3 -3
  178. package/dist/_dts/sdk/src/contracts/content.d.ts +2 -45
  179. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  180. package/dist/_dts/sdk/src/contracts/rendering.d.ts +3 -3
  181. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +4 -46
  182. package/dist/_dts/sdk/src/date-time/index.d.ts +2 -68
  183. package/dist/_dts/sdk/src/index.d.ts +1 -0
  184. package/dist/_dts/sdk/src/public-api/contracts.d.ts +1 -0
  185. package/dist/_dts/sdk/src/rendering/image.d.ts +5 -5
  186. package/dist/_dts/sdk/src/rendering/index.d.ts +2 -1
  187. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +1 -1
  188. package/dist/_dts/sdk/src/rendering/link.d.ts +3 -7
  189. package/dist/_dts/sdk/src/rendering/mediaAssets.d.ts +2 -4
  190. package/dist/_dts/sdk/src/version.d.ts +1 -1
  191. package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -1
  192. package/dist/_dts/theme-core/src/boxBackgroundSchema.d.ts +397 -26
  193. package/dist/_dts/theme-core/src/buttons/buttonColourContract.d.ts +2 -0
  194. package/dist/_dts/theme-core/src/buttons/resolveButtonColourStates.d.ts +2 -0
  195. package/dist/_dts/theme-core/src/buttons/styles/recipes/lanternRecipes.d.ts +60 -0
  196. package/dist/_dts/theme-core/src/buttons/styles/registry.d.ts +57 -0
  197. package/dist/_dts/theme-core/src/buttons/styles/selection.d.ts +10 -1
  198. package/dist/_dts/theme-core/src/buttons/types.d.ts +378 -66
  199. package/dist/_dts/theme-core/src/buttons/typography.d.ts +24 -0
  200. package/dist/_dts/theme-core/src/cards/types.d.ts +42 -42
  201. package/dist/_dts/theme-core/src/footer/effectiveNavLinkStyle.d.ts +1 -1
  202. package/dist/_dts/theme-core/src/footer/generateFooterCss.d.ts +4 -1
  203. package/dist/_dts/theme-core/src/footer/mode.d.ts +2 -11
  204. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  205. package/dist/_dts/theme-core/src/inputs/types.d.ts +3 -3
  206. package/dist/_dts/theme-core/src/lib/media.d.ts +2 -616
  207. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +495 -2766
  208. package/dist/_dts/theme-core/src/navigation/types.d.ts +4 -4
  209. package/dist/_dts/theme-core/src/palette/curated/types.d.ts +1 -1
  210. package/dist/_dts/theme-core/src/schema.d.ts +838 -3369
  211. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +23 -7
  212. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  213. package/dist/_dts/theme-core/src/site-styles/compilationPlan.d.ts +4 -6
  214. package/dist/_dts/theme-core/src/site-styles/compileFooterAgainstRow.d.ts +121 -0
  215. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +25 -0
  216. package/dist/_dts/theme-core/src/site-styles/footerLookDefaults.d.ts +45 -0
  217. package/dist/_dts/theme-core/src/site-styles/footerLookRecipe.d.ts +50 -0
  218. package/dist/_dts/theme-core/src/site-styles/footerLooks.d.ts +9 -35
  219. package/dist/_dts/theme-core/src/site-styles/footerPreferences.d.ts +29 -0
  220. package/dist/_dts/theme-core/src/site-styles/headerPreferencesPersistence.d.ts +2 -3
  221. package/dist/_dts/theme-core/src/site-styles/index.d.ts +4 -0
  222. package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +2 -2
  223. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
  224. package/dist/_dts/theme-core/src/site-styles/runtimeBackgroundResolution.d.ts +9 -9
  225. package/dist/_dts/theme-core/src/site-styles/siteChromeBackgrounds.d.ts +8 -0
  226. package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +1 -1
  227. package/dist/_dts/theme-core/src/site-styles/themeParity.d.ts +1 -1
  228. package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +2 -2
  229. package/dist/_dts/theme-core/src/styles/skinTokens.d.ts +2 -2
  230. package/dist/_dts/theme-core/src/typography/schema.d.ts +2 -2
  231. package/dist/_dts/ui/src/card.d.ts +1 -1
  232. package/dist/client/{BookingMailingListNote-CBuMKN0w.mjs → BookingMailingListNote-CNoSqFtf.mjs} +2 -2
  233. package/dist/client/{CardListItem-Dc9XTXhB.mjs → CardListItem-BkTkqBkh.mjs} +5 -4
  234. package/dist/client/{CheckboxChoice-CIqx_o0E.mjs → CheckboxChoice-CHJpsty4.mjs} +1 -1
  235. package/dist/client/{DemoBookingPortalAccess-D3VQ_kLj.mjs → DemoBookingPortalAccess-C7KQKFNt.mjs} +2 -2
  236. package/dist/client/{EventCombined.client-BHGEKise.mjs → EventCombined.client-BgeYMjHJ.mjs} +5 -6
  237. package/dist/client/{EventEmbeddedCheckoutStep-Bo1Cm23R.mjs → EventEmbeddedCheckoutStep-BTc_lTkM.mjs} +2 -2
  238. package/dist/client/{EventListing.client-D5OQgVPr.mjs → EventListing.client-ChRs9Hl2.mjs} +2 -2
  239. package/dist/client/{LeafletStaticMap-CLL5cWrr.mjs → LeafletStaticMap-C_dNQgd0.mjs} +1 -1
  240. package/dist/client/{RichText-BoDmnopf.mjs → RichText-BI9bzbjo.mjs} +106 -60
  241. package/dist/client/{ThemedButton-Ciltp0IK.mjs → ThemedButton-wl3Z3wkH.mjs} +1 -2
  242. package/dist/client/{accordion-DOkRS64-.mjs → accordion-6Yz8Wd83.mjs} +1 -1
  243. package/dist/client/{bookingForm-wlMVwo9h.mjs → bookingForm-i_pKIGiY.mjs} +42 -15
  244. package/dist/client/bookings.mjs +118357 -22833
  245. package/dist/client/{carousel-CGWk-Z0u.mjs → carousel-DNqd_PjC.mjs} +2 -2
  246. package/dist/client/{carousel.client-kX5mN1Eg.mjs → carousel.client-BUgjPbb6.mjs} +1 -1
  247. package/dist/client/{cart-OBBPlaH4.mjs → cart-D8OBHuF4.mjs} +3 -3
  248. package/dist/client/{checkout-Bmw2WjQX.mjs → checkout-F3-9IGLU.mjs} +3 -3
  249. package/dist/client/client.mjs +20785 -19238
  250. package/dist/client/{context-BI77UFAn.mjs → context-Dg4ZrxDD.mjs} +1 -1
  251. package/dist/client/{eventCalendar-qkej2Edn.mjs → eventCalendar-BUc7YIBM.mjs} +8 -9
  252. package/dist/client/{eventCombined-DApKHvat.mjs → eventCombined-BwfShk2a.mjs} +4 -4
  253. package/dist/client/{eventDetails-BQyUDPH0.mjs → eventDetails-BMOVC3go.mjs} +3 -3
  254. package/dist/client/{eventListing-CeAnshlZ.mjs → eventListing-BwE9PM-t.mjs} +4 -4
  255. package/dist/client/{eventRegistration-C3A3NyBO.mjs → eventRegistration-CCWPYDc7.mjs} +10 -10
  256. package/dist/client/{form-DW8rU7jO.mjs → form-CXFr0Gd5.mjs} +115 -52
  257. package/dist/client/{headerSection-CkIhsoNm.mjs → headerSection-BX8qw8kH.mjs} +3 -3
  258. package/dist/client/hooks.mjs +17908 -16797
  259. package/dist/client/{locationMap-D4O8wbli.mjs → locationMap-B3La71m0.mjs} +3 -4
  260. package/dist/client/{media-C5K_0xPd.mjs → media-B1Cbv721.mjs} +183 -362
  261. package/dist/client/mediaContext-CwbbimYB.mjs +135 -0
  262. package/dist/client/{newsletterForm-B7IxSPuz.mjs → newsletterForm-DnGyR0x7.mjs} +51 -15
  263. package/dist/client/{productDetail-Bqxpwy5N.mjs → productDetail-BVgTqvkb.mjs} +3 -3
  264. package/dist/client/{productList-u9Lz8V15.mjs → productList-CcO7kUQw.mjs} +3 -3
  265. package/dist/client/{propsDecoder-Bf1jucUp.mjs → propsDecoder-B1OeWavE.mjs} +2193 -374
  266. package/dist/client/renderableMediaAssetAdmission-CHkXYDC_.mjs +143 -0
  267. package/dist/client/rendering/client.mjs +22424 -21488
  268. package/dist/client/rendering/islands.mjs +20 -23
  269. package/dist/client/rendering.mjs +21025 -19413
  270. package/dist/client/{routeIslandApiConfig-BgP-aPMl.mjs → routeIslandApiConfig-Dl4vglJm.mjs} +1 -1
  271. package/dist/client/{shop-B_eykR-_.mjs → shop-P72nX5Fs.mjs} +7 -7
  272. package/dist/client/{shop-commerce-CT0APkFV.mjs → shop-commerce-Bt7uraDx.mjs} +8 -8
  273. package/dist/client/{shop-commerce-store-DcvZxdEK.mjs → shop-commerce-store-C1-mxSye.mjs} +1 -1
  274. package/dist/client/{shopShared-BVJOiUiJ.mjs → shopShared-Db-cRGu3.mjs} +5 -5
  275. package/dist/client/{useDiscountCodeUi-DPmYDunz.mjs → useDiscountCodeUi-jvAiUoUX.mjs} +1 -1
  276. package/dist/client/{useEventPagination-8-U55vH5.mjs → useEventPagination-BdWpCniq.mjs} +6 -7
  277. package/dist/preview-next/before-render.mjs +222 -55
  278. package/dist/preview-next/client/runtime.mjs +3 -3
  279. package/dist/preview-next/editor-chrome.css +5 -2
  280. package/dist/preview-next/keepAlive.mjs +133 -51
  281. package/dist/preview-next/middleware.mjs +133 -51
  282. package/dist/{sdk-runtime-C5jPdSrk.mjs → sdk-runtime-DLhjF2Nw.mjs} +1 -1
  283. package/dist/server/components.mjs +21541 -20118
  284. package/dist/server/config-validation.mjs +2466 -1403
  285. package/dist/server/config.mjs +2466 -1403
  286. package/dist/server/data.mjs +17842 -16759
  287. package/dist/server/date-time.mjs +258 -116
  288. package/dist/server/index.mjs +360 -53
  289. package/dist/server/next.mjs +21913 -20539
  290. package/dist/server/page-converter.mjs +8121 -7322
  291. package/dist/server/prebuild.mjs +1 -1
  292. package/dist/server/rendering/server.mjs +21196 -19760
  293. package/dist/server/rendering.mjs +21554 -20123
  294. package/dist/server/routing.mjs +19806 -18607
  295. package/dist/server/server.mjs +2907 -1845
  296. package/dist/server/theme-bridge.mjs +991 -160
  297. package/dist/server/theme.mjs +501 -100
  298. package/dist/{spinner-B-ab2rJp.mjs → spinner-MTooKfck.mjs} +1 -1
  299. package/dist/styles/index.css +254 -1
  300. package/package.json +1 -1
  301. package/dist/_dts/blocks/src/system/blocks/events/shared/layout.d.ts +0 -12
  302. package/dist/client/aspectTransforms-D-TnDdq4.mjs +0 -93
  303. package/dist/client/colorStyles-ECDNPE_P.mjs +0 -1253
@@ -1,36 +1,36 @@
1
1
  import type { Ground } from './cardRoleVocabulary';
2
- import { type BoxBackground } from '../boxBackgroundSchema';
2
+ import { type RuntimeBoxBackground } from '../boxBackgroundSchema';
3
3
  import { type ResolvedSurfaceForeground } from '../surfaces';
4
4
  import type { CompiledBlockRuntimeFields } from './runtimeCompiler';
5
5
  type CanonicalRuntimeBackground = Readonly<{
6
6
  kind: 'none';
7
7
  }> | Readonly<{
8
8
  kind: 'block-authored';
9
- background: BoxBackground;
9
+ background: RuntimeBoxBackground;
10
10
  }> | Readonly<{
11
11
  kind: 'page-design-override';
12
- background: BoxBackground;
12
+ background: RuntimeBoxBackground;
13
13
  }>;
14
14
  export type ResolvedSectionBackground = Readonly<{
15
15
  kind: 'override';
16
- background: BoxBackground;
16
+ background: RuntimeBoxBackground;
17
17
  }> | Readonly<{
18
18
  kind: 'authored-media';
19
- background: BoxBackground;
19
+ background: RuntimeBoxBackground;
20
20
  }> | Readonly<{
21
21
  kind: 'look-surface';
22
- background: BoxBackground;
22
+ background: RuntimeBoxBackground;
23
23
  }> | Readonly<{
24
24
  kind: 'authored-colour';
25
- background: BoxBackground;
25
+ background: RuntimeBoxBackground;
26
26
  }> | Readonly<{
27
27
  kind: 'rhythm';
28
- background: BoxBackground;
28
+ background: RuntimeBoxBackground;
29
29
  }> | Readonly<{
30
30
  kind: 'base';
31
31
  }>;
32
32
  export declare function parseCanonicalRuntimeBackground(content: Record<string, unknown>): CanonicalRuntimeBackground;
33
- export declare function resolveSectionBackground(source: CanonicalRuntimeBackground, lookDefault: NonNullable<NonNullable<CompiledBlockRuntimeFields['_sectionStyles']>['background']> | null | undefined, rhythm?: BoxBackground | null, arrangementHeroPhoto?: Readonly<{
33
+ export declare function resolveSectionBackground(source: CanonicalRuntimeBackground, lookDefault: NonNullable<NonNullable<CompiledBlockRuntimeFields['_sectionStyles']>['background']> | null | undefined, rhythm?: RuntimeBoxBackground | null, arrangementHeroPhoto?: Readonly<{
34
34
  paintsGround: boolean;
35
35
  }>): ResolvedSectionBackground;
36
36
  export declare function resolveSectionForeground(background: ResolvedSectionBackground, palette: Readonly<Record<string, string>>): ResolvedSurfaceForeground;
@@ -1,3 +1,4 @@
1
+ import { z } from 'zod';
1
2
  import type { Theme, ThemeFooter, ThemeHeader } from '../schema';
2
3
  import type { ThemeColorToken } from '../tokens';
3
4
  export type SiteChromeSurface = 'header' | 'footer';
@@ -33,6 +34,7 @@ export declare function cycleSiteChromeBackgroundOverride(current: SiteChromeBac
33
34
  * for `readHeaderPreferences`, which needs the header half on its own.
34
35
  */
35
36
  export declare function siteChromeBackgroundOverrideFromHeader(header: ThemeHeader): SiteChromeBackgroundOverride;
37
+ export declare function siteChromeBackgroundOverrideFromFooter(footer: ThemeFooter): SiteChromeBackgroundOverride;
36
38
  /**
37
39
  * Header-only background applier. Exported so the header preference pipeline
38
40
  * can apply the header override without going through
@@ -47,3 +49,9 @@ export declare function applyHeaderBackgroundOverride(theme: Theme, header: Them
47
49
  * (#1318 Correction 20).
48
50
  */
49
51
  export declare function applyFooterBackgroundOverride(theme: Theme, footer: ThemeFooter, override: SiteChromeBackgroundOverride): ThemeFooter;
52
+ export declare const siteChromeBackgroundOverrideSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
53
+ kind: z.ZodLiteral<"default">;
54
+ }, z.core.$strict>, z.ZodObject<{
55
+ kind: z.ZodLiteral<"color">;
56
+ token: z.ZodType<SiteChromeBackgroundColorToken, unknown, z.core.$ZodTypeInternals<SiteChromeBackgroundColorToken, unknown>>;
57
+ }, z.core.$strict>], "kind">;
@@ -22,8 +22,8 @@ export declare const styleTagsSchema: z.ZodObject<{
22
22
  }>>;
23
23
  motion: z.ZodOptional<z.ZodEnum<{
24
24
  standard: "standard";
25
- expressive: "expressive";
26
25
  subtle: "subtle";
26
+ expressive: "expressive";
27
27
  }>>;
28
28
  era: z.ZodOptional<z.ZodEnum<{
29
29
  editorial: "editorial";
@@ -16,6 +16,6 @@ export type ThemeParityDifference = Readonly<{
16
16
  before: CanonicalThemeValue;
17
17
  after: CanonicalThemeValue;
18
18
  }>;
19
- export declare function canonicalizeThemeForParity(theme: Theme): CanonicalThemeValue;
19
+ export declare function canonicalizeThemeForParity(theme: unknown): CanonicalThemeValue;
20
20
  export declare function serializeThemeForParity(theme: Theme): string;
21
21
  export declare function diffThemesForParity(before: Theme, after: Theme): readonly ThemeParityDifference[];
@@ -39,14 +39,14 @@ export declare const themeTokenRecipesSchema: z.ZodObject<{
39
39
  "friendly-sans": "friendly-sans";
40
40
  }>;
41
41
  spacing: z.ZodEnum<{
42
- regular: "regular";
43
42
  compact: "compact";
43
+ regular: "regular";
44
44
  airy: "airy";
45
45
  }>;
46
46
  motion: z.ZodEnum<{
47
47
  none: "none";
48
- expressive: "expressive";
49
48
  subtle: "subtle";
49
+ expressive: "expressive";
50
50
  }>;
51
51
  }, z.core.$strip>;
52
52
  export declare const defaultThemeTokenRecipes: {
@@ -3,6 +3,7 @@ export declare const skinTokenNames: readonly ["radius", "rule", "mark-length",
3
3
  export declare const skinTokensSchema: z.ZodRecord<z.ZodEnum<{
4
4
  main: "main";
5
5
  radius: "radius";
6
+ rotation: "rotation";
6
7
  rule: "rule";
7
8
  "mark-length": "mark-length";
8
9
  "mark-weight": "mark-weight";
@@ -11,7 +12,6 @@ export declare const skinTokensSchema: z.ZodRecord<z.ZodEnum<{
11
12
  "copy-gap": "copy-gap";
12
13
  "stack-gap": "stack-gap";
13
14
  "shadow-offset": "shadow-offset";
14
- rotation: "rotation";
15
15
  wrap: "wrap";
16
16
  margin: "margin";
17
17
  rail: "rail";
@@ -31,6 +31,7 @@ export declare const themeLookMetadataSchema: z.ZodObject<{
31
31
  skinTokens: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
32
32
  main: "main";
33
33
  radius: "radius";
34
+ rotation: "rotation";
34
35
  rule: "rule";
35
36
  "mark-length": "mark-length";
36
37
  "mark-weight": "mark-weight";
@@ -39,7 +40,6 @@ export declare const themeLookMetadataSchema: z.ZodObject<{
39
40
  "copy-gap": "copy-gap";
40
41
  "stack-gap": "stack-gap";
41
42
  "shadow-offset": "shadow-offset";
42
- rotation: "rotation";
43
43
  wrap: "wrap";
44
44
  margin: "margin";
45
45
  rail: "rail";
@@ -89,8 +89,8 @@ export declare const typographySchema: z.ZodObject<{
89
89
  relaxed: "relaxed";
90
90
  }>;
91
91
  case: z.ZodNullable<z.ZodEnum<{
92
- normal: "normal";
93
92
  uppercase: "uppercase";
93
+ normal: "normal";
94
94
  smallCaps: "smallCaps";
95
95
  }>>;
96
96
  italic: z.ZodNullable<z.ZodBoolean>;
@@ -344,8 +344,8 @@ export declare const typographySchema: z.ZodObject<{
344
344
  wide: "wide";
345
345
  }>>;
346
346
  case: z.ZodOptional<z.ZodEnum<{
347
- normal: "normal";
348
347
  uppercase: "uppercase";
348
+ normal: "normal";
349
349
  }>>;
350
350
  }, z.core.$strip>>;
351
351
  }, z.core.$strip>;
@@ -4,7 +4,7 @@ import { surfaceVariants } from './surface';
4
4
  export type CardVariant = VariantProps<typeof surfaceVariants>['variant'];
5
5
  export type CardRadius = VariantProps<typeof surfaceVariants>['radius'];
6
6
  declare const cardLayoutVariants: (props?: ({
7
- size?: "none" | "default" | "compact" | "responsive" | null | undefined;
7
+ size?: "none" | "compact" | "default" | "responsive" | null | undefined;
8
8
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
9
  export type CardSize = VariantProps<typeof cardLayoutVariants>['size'];
10
10
  export type CardProps = React.ComponentProps<'div'> & {
@@ -1,7 +1,7 @@
1
1
  "use client";
2
- import { Lr as assertNever } from "./propsDecoder-Bf1jucUp.mjs";
2
+ import { Rr as assertNever } from "./propsDecoder-B1OeWavE.mjs";
3
3
  import { n as getBookingMailingListNoteCopy } from "./mailingListSignupCopy-DZSHZrm6.mjs";
4
- import { t as RichText } from "./RichText-BoDmnopf.mjs";
4
+ import { t as RichText } from "./RichText-BI9bzbjo.mjs";
5
5
  import { useCallback, useEffect, useId, useReducer, useRef, useState } from "react";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
7
  //#region ../blocks/src/system/runtime/shared/components/StepIndicator.tsx
@@ -1,6 +1,7 @@
1
- import { $n as resolveRuntimeEventDestination, fr as listLookSlot, sr as isEventFull, tr as canJoinEventWaitlistOnAnyMode, yi as assertNever } from "./propsDecoder-Bf1jucUp.mjs";
2
- import { a as getCurrentResolveImageUrlContext, c as renderVideo, i as computeMediaTransformStyle, n as MediaPlaceholder, o as mediaImageHostProps, s as renderAudio, t as ImagePresets, u as resolveMediaNodeResponsiveImage } from "./media-C5K_0xPd.mjs";
3
- import { n as ThemedButtonLink } from "./ThemedButton-Ciltp0IK.mjs";
1
+ import { $n as resolveRuntimeEventDestination, Mi as assertNever, pr as listLookSlot, sr as isEventFull, tr as canJoinEventWaitlistOnAnyMode } from "./propsDecoder-B1OeWavE.mjs";
2
+ import { a as renderAudio, c as resolveMediaNodeResponsiveImage, i as mediaImageHostProps, n as MediaPlaceholder, o as renderVideo, r as computeMediaTransformStyle, t as ImagePresets } from "./media-B1Cbv721.mjs";
3
+ import { n as getCurrentResolveImageUrlContext } from "./mediaContext-CwbbimYB.mjs";
4
+ import { n as ThemedButtonLink } from "./ThemedButton-wl3Z3wkH.mjs";
4
5
  import "react";
5
6
  import { jsx, jsxs } from "react/jsx-runtime";
6
7
  //#region ../blocks/src/system/runtime/nodes/events/domain/cta.ts
@@ -97,7 +98,7 @@ const MediaNodeServer = ({ value, "data-slot": dataSlot, "data-surface": dataSur
97
98
  const computedStyle = computeMediaTransformStyle(value, style, transformAspectRatio, {
98
99
  resolvedTransform,
99
100
  isProxy
100
- });
101
+ }, imageResolveContext);
101
102
  return /* @__PURE__ */ jsx("img", {
102
103
  ...mediaImageHostProps({
103
104
  value,
@@ -1,4 +1,4 @@
1
- import { F as clsx } from "./colorStyles-ECDNPE_P.mjs";
1
+ import { ri as clsx } from "./propsDecoder-B1OeWavE.mjs";
2
2
  import "react";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  //#region ../blocks/src/system/runtime/shared/components/CheckboxChoice.tsx
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { t as ThemedButton } from "./ThemedButton-Ciltp0IK.mjs";
3
- import { n as useBlockApi, r as BlockApiError } from "./context-BI77UFAn.mjs";
2
+ import { t as ThemedButton } from "./ThemedButton-wl3Z3wkH.mjs";
3
+ import { n as useBlockApi, r as BlockApiError } from "./context-Dg4ZrxDD.mjs";
4
4
  import React, { useId } from "react";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region ../blocks/src/system/runtime/shared/components/DiscountCodeDisclosure.tsx
@@ -1,12 +1,11 @@
1
1
  "use client";
2
- import { F as clsx } from "./colorStyles-ECDNPE_P.mjs";
3
- import { En as formatEventPrice, Gn as buildCalendarViewport, Hn as MONTH_NAMES, Jn as getOrderedDayNames, Kn as formatDateKey, Ln as formatTime, Mn as formatDate, Qn as shiftCalendarAnchorDate, Rn as groupEventsByDate, Wn as addMonths, Xn as isSameCalendarDay, Zn as isToday, ai as formatLocalScheduleDate, bn as buildEventRuntimeFilters, cn as eventListingBlockRuntime, dn as calendarPageResponseError, fn as calendarQueryKey, gn as planCalendarMonthRanges, ln as calendarMonthDate, mn as calendarWindowMonths$1, nr as formatEventRemainingPlaces, pn as calendarWindowBounds, qn as getDayOfWeek, si as getLocalScheduleDate, sr as isEventFull, un as calendarMonthKey, xn as getEventRuntimeFiltersKey, yn as getBlockApiReadStage, zn as resolveEventTimeZone } from "./propsDecoder-Bf1jucUp.mjs";
2
+ import { En as formatEventPrice, Gn as buildCalendarViewport, Hn as MONTH_NAMES, Jn as getOrderedDayNames, Kn as formatDateKey, Ln as formatTime, Mn as formatDate, Qn as shiftCalendarAnchorDate, Rn as groupEventsByDate, Wn as addMonths, Xn as isSameCalendarDay, Zn as isToday, bi as getLocalScheduleDate, bn as buildEventRuntimeFilters, cn as eventListingBlockRuntime, dn as calendarPageResponseError, fn as calendarQueryKey, gn as planCalendarMonthRanges, ln as calendarMonthDate, mn as calendarWindowMonths$1, nr as formatEventRemainingPlaces, pn as calendarWindowBounds, qn as getDayOfWeek, ri as clsx, sr as isEventFull, un as calendarMonthKey, vi as formatLocalScheduleDate, xn as getEventRuntimeFiltersKey, yn as getBlockApiReadStage, zn as resolveEventTimeZone } from "./propsDecoder-B1OeWavE.mjs";
4
3
  import { t as formatEventDuration } from "./duration-btE0-px8.mjs";
5
- import { a as toError, i as useEventCollectionFilters, n as EventPaginatedListView, r as EventCardClient, s as formatEventTeacherLine, t as useEventPagination } from "./useEventPagination-8-U55vH5.mjs";
6
- import { n as ThemedButtonLink, t as ThemedButton } from "./ThemedButton-Ciltp0IK.mjs";
7
- import { a as resolveEventLinkProps, i as resolveEventCta } from "./CardListItem-Dc9XTXhB.mjs";
4
+ import { n as ThemedButtonLink, t as ThemedButton } from "./ThemedButton-wl3Z3wkH.mjs";
5
+ import { a as toError, i as useEventCollectionFilters, n as EventPaginatedListView, r as EventCardClient, s as formatEventTeacherLine, t as useEventPagination } from "./useEventPagination-BdWpCniq.mjs";
6
+ import { a as resolveEventLinkProps, i as resolveEventCta } from "./CardListItem-BkTkqBkh.mjs";
8
7
  import { t as createBodyThemePortalRoot } from "./themePortalRoot-DS92SRVZ.mjs";
9
- import { n as useBlockApi } from "./context-BI77UFAn.mjs";
8
+ import { n as useBlockApi } from "./context-Dg4ZrxDD.mjs";
10
9
  import { t as ModalShell } from "./ModalShell-BXzucfR6.mjs";
11
10
  import React, { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
12
11
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { Jr as checkBrowserStripeKey } from "./propsDecoder-Bf1jucUp.mjs";
3
- import { i as SpinnerNode, t as ThemedButton } from "./ThemedButton-Ciltp0IK.mjs";
2
+ import { ii as checkBrowserStripeKey } from "./propsDecoder-B1OeWavE.mjs";
3
+ import { i as SpinnerNode, t as ThemedButton } from "./ThemedButton-wl3Z3wkH.mjs";
4
4
  import { useEffect, useRef, useState } from "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region \0rolldown/runtime.js
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { bn as buildEventRuntimeFilters, fr as listLookSlot } from "./propsDecoder-Bf1jucUp.mjs";
3
- import { i as useEventCollectionFilters, n as EventPaginatedListView, t as useEventPagination } from "./useEventPagination-8-U55vH5.mjs";
2
+ import { bn as buildEventRuntimeFilters, pr as listLookSlot } from "./propsDecoder-B1OeWavE.mjs";
3
+ import { i as useEventCollectionFilters, n as EventPaginatedListView, t as useEventPagination } from "./useEventPagination-BdWpCniq.mjs";
4
4
  import { useMemo } from "react";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region ../blocks/src/system/runtime/nodes/events/shared/EventListWeekNavigation.tsx
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { Ir as isRecord } from "./propsDecoder-Bf1jucUp.mjs";
2
+ import { Lr as isRecord } from "./propsDecoder-B1OeWavE.mjs";
3
3
  import { useEffect, useRef, useState } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  //#region ../blocks/src/system/runtime/nodes/shared/LeafletStaticMap.tsx
@@ -1,5 +1,8 @@
1
1
  "use client";
2
- import { a as getCurrentResolveImageUrlContext, l as resolveImageUrlWithContext, t as ImagePresets } from "./media-C5K_0xPd.mjs";
2
+ import { a as parseCanonicalMediaIdentifier } from "./renderableMediaAssetAdmission-CHkXYDC_.mjs";
3
+ import { fr as listLookControl, pr as listLookSlot } from "./propsDecoder-B1OeWavE.mjs";
4
+ import { s as resolveImageUrlWithContext, t as ImagePresets } from "./media-B1Cbv721.mjs";
5
+ import { n as getCurrentResolveImageUrlContext } from "./mediaContext-CwbbimYB.mjs";
3
6
  import React from "react";
4
7
  import { Fragment, jsx } from "react/jsx-runtime";
5
8
  //#region ../blocks/src/primitives/content/utils/sanitizeHref.ts
@@ -71,7 +74,7 @@ function normalizeRel(target, rel) {
71
74
  tokens.add("noreferrer");
72
75
  return Array.from(tokens).join(" ");
73
76
  }
74
- function renderMarks(text, marks, key, linkTarget) {
77
+ function renderMarks(text, marks, key, context) {
75
78
  if (!marks || marks.length === 0) return text;
76
79
  return marks.reduce((acc, mark) => {
77
80
  switch (mark.type) {
@@ -79,81 +82,124 @@ function renderMarks(text, marks, key, linkTarget) {
79
82
  case "strong": return /* @__PURE__ */ jsx("strong", { children: acc }, `${key}-b`);
80
83
  case "italic":
81
84
  case "em": return /* @__PURE__ */ jsx("em", { children: acc }, `${key}-i`);
82
- case "link": {
83
- if (typeof acc === "string" && acc.length === 0) return acc;
84
- const attrs = mark.attrs ?? {};
85
- const href = sanitizeHref(attrs.href);
86
- if (!href) return acc;
87
- const storedTarget = typeof attrs.target === "string" && attrs.target.trim().length > 0 ? attrs.target.trim() : void 0;
88
- const target = linkTarget === "new-tab" ? "_blank" : storedTarget;
89
- return /* @__PURE__ */ jsx("a", {
90
- href,
91
- target,
92
- rel: normalizeRel(target, typeof attrs.rel === "string" ? attrs.rel : void 0),
93
- children: acc
94
- }, `${key}-l`);
95
- }
85
+ case "link": return renderLinkMark(mark, acc, key, context);
96
86
  default: return acc;
97
87
  }
98
88
  }, text);
99
89
  }
100
- function renderDoc(node, key, imageResolveContext, linkTarget) {
90
+ function richTextLinkAttributes(mark, mode) {
91
+ const attrs = mark.attrs ?? {};
92
+ const href = sanitizeHref(attrs.href);
93
+ if (!href) return null;
94
+ const storedTarget = typeof attrs.target === "string" && attrs.target.trim().length > 0 ? attrs.target.trim() : void 0;
95
+ const target = mode === "new-tab" ? "_blank" : storedTarget;
96
+ return {
97
+ href,
98
+ target,
99
+ rel: normalizeRel(target, typeof attrs.rel === "string" ? attrs.rel : void 0)
100
+ };
101
+ }
102
+ function renderLinkMark(mark, text, key, context) {
103
+ if (typeof text === "string" && text.length === 0) return text;
104
+ const attributes = richTextLinkAttributes(mark, context.linkTarget);
105
+ return attributes ? /* @__PURE__ */ jsx("a", {
106
+ ...attributes,
107
+ ...listLookControl(context, "link"),
108
+ children: text
109
+ }, `${key}-l`) : text;
110
+ }
111
+ function renderDoc(node, key, context) {
101
112
  if (!node || !node.type) return null;
102
- const children = node.content?.map((child, index) => renderDoc(child, `${key}-${index}`, imageResolveContext, linkTarget));
113
+ const children = node.content?.map((child, index) => renderDoc(child, `${key}-${index}`, context));
103
114
  switch (node.type) {
104
115
  case "doc": return /* @__PURE__ */ jsx(Fragment, { children });
105
- case "paragraph":
106
- if (!children && !node.text) return /* @__PURE__ */ jsx("p", {}, key);
107
- return /* @__PURE__ */ jsx("p", { children: children ?? renderMarks(node.text ?? "", node.marks, key, linkTarget) }, key);
108
- case "heading": {
109
- const headingTag = `h${Math.min(Math.max(node.attrs?.level ?? 2, 1), 6)}`;
110
- return React.createElement(headingTag, { key }, children);
111
- }
116
+ case "paragraph": return /* @__PURE__ */ jsx("p", { children: children ?? renderMarks(node.text ?? "", node.marks, key, context) }, key);
117
+ case "heading": return renderHeading(node, key, children, context);
118
+ case "blockquote": return /* @__PURE__ */ jsx("blockquote", {
119
+ ...listLookSlot(context, "quote"),
120
+ children
121
+ }, key);
122
+ case "image": return renderRichTextImage(node, key, context);
123
+ default: return renderSimpleNode(node, key, children, context);
124
+ }
125
+ }
126
+ function renderHeading(node, key, children, context) {
127
+ const level = Math.min(Math.max(Number(node.attrs?.level ?? 2), 1), 6);
128
+ return React.createElement(`h${level}`, {
129
+ key,
130
+ ...level === 2 ? listLookSlot(context, "heading") : {}
131
+ }, children);
132
+ }
133
+ function renderSimpleNode(node, key, children, context) {
134
+ switch (node.type) {
112
135
  case "bulletList": return /* @__PURE__ */ jsx("ul", { children }, key);
113
136
  case "orderedList": return /* @__PURE__ */ jsx("ol", { children }, key);
114
137
  case "listItem": return /* @__PURE__ */ jsx("li", { children }, key);
115
- case "blockquote": return /* @__PURE__ */ jsx("blockquote", { children }, key);
116
138
  case "horizontalRule": return /* @__PURE__ */ jsx("hr", {}, key);
117
139
  case "hardBreak": return /* @__PURE__ */ jsx("br", {}, key);
118
- case "image": {
119
- const attrs = node.attrs ?? {};
120
- const src = typeof attrs.src === "string" ? attrs.src.trim() : "";
121
- const identifier = typeof attrs.identifier === "string" ? attrs.identifier.trim() : "";
122
- const alt = typeof attrs.alt === "string" ? attrs.alt : "";
123
- const title = typeof attrs.title === "string" && attrs.title.trim().length > 0 ? attrs.title : void 0;
124
- const width = parseDimension(attrs.width);
125
- const height = parseDimension(attrs.height);
126
- const resolvedSrc = src || (identifier ? resolveImageUrlWithContext({
127
- type: "image",
128
- identifier
129
- }, width ? {
130
- width,
131
- resize: "contain",
132
- quality: 85
133
- } : height ? {
134
- height,
135
- resize: "contain",
136
- quality: 85
137
- } : ImagePresets.full, imageResolveContext ?? void 0) ?? "" : "");
138
- if (!resolvedSrc) return null;
139
- return /* @__PURE__ */ jsx("img", {
140
- src: resolvedSrc,
141
- alt,
142
- title,
143
- width,
144
- height,
145
- loading: "lazy",
146
- decoding: "async"
147
- }, key);
148
- }
149
- case "text": return renderMarks(node.text ?? "", node.marks, key, linkTarget);
140
+ case "text": return renderMarks(node.text ?? "", node.marks, key, context);
150
141
  default: return null;
151
142
  }
152
143
  }
144
+ function richTextImageOptions(width, height) {
145
+ if (width) return {
146
+ width,
147
+ resize: "contain",
148
+ quality: 85
149
+ };
150
+ if (height) return {
151
+ height,
152
+ resize: "contain",
153
+ quality: 85
154
+ };
155
+ return ImagePresets.full;
156
+ }
157
+ function resolveRichTextImageSource(attrs, width, height, context) {
158
+ if (attrs.identifier !== void 0 && attrs.identifier !== null) {
159
+ const parsed = parseCanonicalMediaIdentifier(attrs.identifier);
160
+ if (!parsed.ok) return void 0;
161
+ if (context?.mediaAssetIndex) return resolveImageUrlWithContext({
162
+ type: "image",
163
+ identifier: parsed.value
164
+ }, richTextImageOptions(width, height), context);
165
+ return typeof attrs.src === "string" ? attrs.src.trim() || void 0 : void 0;
166
+ }
167
+ return typeof attrs.src === "string" ? attrs.src.trim() || void 0 : void 0;
168
+ }
169
+ function renderRichTextImage(node, key, context) {
170
+ const attrs = node.attrs ?? {};
171
+ const width = parseDimension(attrs.width);
172
+ const height = parseDimension(attrs.height);
173
+ const src = resolveRichTextImageSource(attrs, width, height, context.imageResolveContext);
174
+ if (!src) return null;
175
+ return /* @__PURE__ */ jsx("img", {
176
+ src,
177
+ alt: typeof attrs.alt === "string" ? attrs.alt : "",
178
+ title: typeof attrs.title === "string" && attrs.title.trim() ? attrs.title : void 0,
179
+ width,
180
+ height,
181
+ loading: "lazy",
182
+ decoding: "async",
183
+ ...listLookSlot(context, "photo")
184
+ }, key);
185
+ }
186
+ /** Mark meaning in the renderer, rather than choosing ink with a positional CSS rule. */
187
+ function renderRichTextContent(doc, context, leadSlot) {
188
+ if (!leadSlot) return renderDoc(doc, "doc", context);
189
+ const leadIndex = doc.content?.findIndex((node) => node.type === "paragraph");
190
+ return doc.content?.map((node, index) => {
191
+ const rendered = renderDoc(node, `doc-${index}`, context);
192
+ return index === leadIndex && React.isValidElement(rendered) ? React.cloneElement(rendered, { "data-slot": leadSlot }) : rendered;
193
+ });
194
+ }
153
195
  const DEFAULT_RICH_TEXT_CLASS = "rb-prose rb-max-w-none";
154
- function RichText({ as: Comp = "div", className, doc, path, style, "data-slot": dataSlot, "data-surface": dataSurface, linkTarget = "stored" }) {
196
+ function RichText({ as: Comp = "div", className, doc, path, style, "data-slot": dataSlot, "data-surface": dataSurface, linkTarget = "stored", leadParagraphSlot, lookSlots }) {
155
197
  const imageResolveContext = getCurrentResolveImageUrlContext() ?? null;
156
- const content = doc ? renderDoc(doc, "doc", imageResolveContext, linkTarget) : null;
198
+ const content = doc ? renderRichTextContent(doc, {
199
+ imageResolveContext,
200
+ linkTarget,
201
+ lookSlots
202
+ }, leadParagraphSlot) : null;
157
203
  const dataAttributes = path ? { "data-builder-richtext": path } : void 0;
158
204
  const resolvedClassName = className?.trim() || DEFAULT_RICH_TEXT_CLASS;
159
205
  return /* @__PURE__ */ jsx(Comp, {
@@ -1,5 +1,4 @@
1
- import { F as clsx } from "./colorStyles-ECDNPE_P.mjs";
2
- import { Gr as themeButtonVariantClassNames, Wr as themeButtonSizeClassName } from "./propsDecoder-Bf1jucUp.mjs";
1
+ import { Gr as themeButtonSizeClassName, Kr as themeButtonVariantClassNames, ri as clsx } from "./propsDecoder-B1OeWavE.mjs";
3
2
  import "react";
4
3
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
4
  //#region ../blocks/src/system/runtime/nodes/spinner.tsx
@@ -1,4 +1,4 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-Bf1jucUp.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-B1OeWavE.mjs";
2
2
  //#region src/rendering/islands/enhancers/accordion.ts
3
3
  const decode = defineIslandPropsDecoder("accordion");
4
4
  function parseDefaultValues(value) {
@@ -1,19 +1,19 @@
1
1
  "use client";
2
- import { c as unsafeAsAppointmentServiceId, f as unsafeAsPassId, l as unsafeAsCustomerPassId, s as unsafeAsAppointmentResourceId, u as unsafeAsFormId } from "./aspectTransforms-D-TnDdq4.mjs";
3
- import { Ar as toSelectedCollectionOptionKind, At as buildBookingPaymentSelectionViewModel, Cr as parseBookingCurrencyInputToCents, Dr as resolveBookingSiteId, Er as resolveBookingPaymentStep, Hr as reportWorkflowError, Lr as assertNever, Mr as resolveSelectedAppointmentConsent, Mt as paymentChoiceDetails, Nr as BOOKING_FORM_DATA_RESERVED_KEYS, Nt as paymentChoicePrice, Or as resolveDefaultBookingServiceId, Pr as isBookingRequirementConsentFieldId, Rr as clearWorkflowFeedback, Sr as isBookingServiceSlidingAmountInRange, Tr as resolveAppointmentCheckoutVerificationState, Ur as reportWorkflowSuccess, Vr as okWith, _r as getBookingRedirectStateFromLocation, ai as formatLocalScheduleDate, ci as parseBookingLocalDate, gr as formatBookingSubmissionPreparationError, hr as formatBookingCentsAsCurrencyInput, ii as formatBookingInstant, jr as projectSelectedAppointmentConsentIntoForm, jt as buildReviewedBookingPaymentViewModel, kr as selectedBookingCollectionOptionKind, li as resolveBookingTimeZoneId, mr as deriveBookingFormViewState, ni as resolveBookingSignupOffer, pr as logger, ri as addLocalScheduleDays, t as defineIslandPropsDecoder, vi as formatCurrencyAmount, vr as getBookingServiceSlidingScale, wr as prepareBookingSubmission, yr as getBookingSuccessCopy, zr as err } from "./propsDecoder-Bf1jucUp.mjs";
4
- import { i as SpinnerNode, t as ThemedButton } from "./ThemedButton-Ciltp0IK.mjs";
2
+ import { d as unsafeAsCustomerPassId, f as unsafeAsFormId, l as unsafeAsAppointmentResourceId, m as unsafeAsPassId, u as unsafeAsAppointmentServiceId } from "./renderableMediaAssetAdmission-CHkXYDC_.mjs";
3
+ import { Ar as selectedBookingCollectionOptionKind, At as buildBookingPaymentSelectionViewModel, Br as err, Cr as isBookingServiceSlidingAmountInRange, Dr as resolveBookingPaymentStep, Er as resolveAppointmentCheckoutVerificationState, Fr as isBookingRequirementConsentFieldId, Hr as okWith, Mr as projectSelectedAppointmentConsentIntoForm, Mt as paymentChoiceDetails, Nr as resolveSelectedAppointmentConsent, Nt as paymentChoicePrice, Or as resolveBookingSiteId, Pr as BOOKING_FORM_DATA_RESERVED_KEYS, Rr as assertNever, Si as resolveBookingTimeZoneId, Tr as prepareBookingSubmission, Ur as reportWorkflowError, Wr as reportWorkflowSuccess, _i as formatBookingInstant, _r as formatBookingSubmissionPreparationError, br as getBookingSuccessCopy, gi as addLocalScheduleDays, gr as formatBookingCentsAsCurrencyInput, hi as resolveBookingSignupOffer, hr as deriveBookingFormViewState, ji as formatCurrencyAmount, jr as toSelectedCollectionOptionKind, jt as buildReviewedBookingPaymentViewModel, kr as resolveDefaultBookingServiceId, mr as logger, t as defineIslandPropsDecoder, vi as formatLocalScheduleDate, vr as getBookingRedirectStateFromLocation, wr as parseBookingCurrencyInputToCents, xi as parseBookingLocalDate, yr as getBookingServiceSlidingScale, zr as clearWorkflowFeedback } from "./propsDecoder-B1OeWavE.mjs";
4
+ import { i as SpinnerNode, t as ThemedButton } from "./ThemedButton-wl3Z3wkH.mjs";
5
5
  import { t as buildCheckoutReturnUrls } from "./checkoutUrls-ChxwaNtO.mjs";
6
6
  import { n as scrollToBlock, t as CheckIcon } from "./CheckIcon-CpyXr-Kg.mjs";
7
- import { f as storeDemoBookingPassIfAvailable, p as DiscountCodeDisclosure, t as BookingConfirmation } from "./DemoBookingPortalAccess-D3VQ_kLj.mjs";
7
+ import { f as storeDemoBookingPassIfAvailable, p as DiscountCodeDisclosure, t as BookingConfirmation } from "./DemoBookingPortalAccess-C7KQKFNt.mjs";
8
8
  import { t as FeedbackMessage } from "./FeedbackMessage-CtLvvS_d.mjs";
9
- import { n as TerminalPanel, r as StateIcon, t as useDiscountCodeUi } from "./useDiscountCodeUi-DPmYDunz.mjs";
10
- import { a as useBookingNowIso, i as usePolling, n as BookingConsentAgreement, o as StepIndicator, r as PaymentChoiceRows, t as BookingMailingListNote } from "./BookingMailingListNote-CBuMKN0w.mjs";
11
- import { n as useBlockApi, t as BlockApiProvider } from "./context-BI77UFAn.mjs";
9
+ import { n as TerminalPanel, r as StateIcon, t as useDiscountCodeUi } from "./useDiscountCodeUi-jvAiUoUX.mjs";
10
+ import { a as useBookingNowIso, i as usePolling, n as BookingConsentAgreement, o as StepIndicator, r as PaymentChoiceRows, t as BookingMailingListNote } from "./BookingMailingListNote-CNoSqFtf.mjs";
11
+ import { n as useBlockApi, t as BlockApiProvider } from "./context-Dg4ZrxDD.mjs";
12
12
  import { n as isSpamProtectionEnabled, r as AltchaWidget, t as getChallengeUrl } from "./src-B833rYRr.mjs";
13
13
  import { i as getFieldValidationControlProps, r as FieldValidationMessage } from "./mailingListSignupCopy-DZSHZrm6.mjs";
14
- import { t as CheckboxChoice } from "./CheckboxChoice-CIqx_o0E.mjs";
14
+ import { t as CheckboxChoice } from "./CheckboxChoice-CHJpsty4.mjs";
15
15
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
16
- import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-BgP-aPMl.mjs";
16
+ import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-Dl4vglJm.mjs";
17
17
  import React, { useCallback, useEffect, useLayoutEffect, useMemo, useReducer, useRef, useState } from "react";
18
18
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
19
19
  //#region ../core/src/appointment-service-categories.ts
@@ -1231,7 +1231,7 @@ function buildBookingSubmitPlan(input) {
1231
1231
  const invalid = validateBookingSubmissionContact(input);
1232
1232
  if (invalid) return invalid;
1233
1233
  const prepared = prepareBookingSubmission({
1234
- shownTerms: input.state.review?.terms,
1234
+ shownTerms: input.shownTerms,
1235
1235
  promisedDiscountId: input.promisedDiscountId,
1236
1236
  formId: input.formId,
1237
1237
  nowIso: input.nowIso,
@@ -1495,7 +1495,28 @@ function planBookingSubmissionStart(input) {
1495
1495
  },
1496
1496
  events: []
1497
1497
  };
1498
- const plan = buildBookingSubmitPlan(input);
1498
+ if (input.intent.kind === "accept-review" && input.intent.review !== input.state.review) return {
1499
+ kind: "blocked",
1500
+ result: {
1501
+ ok: false,
1502
+ reason: "blocked",
1503
+ message: "booking-review-changed"
1504
+ },
1505
+ events: []
1506
+ };
1507
+ if (input.intent.kind === "submit" && input.state.review) return {
1508
+ kind: "review",
1509
+ result: {
1510
+ ok: false,
1511
+ reason: "review-required",
1512
+ review: input.state.review
1513
+ },
1514
+ events: []
1515
+ };
1516
+ const plan = buildBookingSubmitPlan({
1517
+ ...input,
1518
+ shownTerms: input.intent.kind === "accept-review" ? input.intent.review.terms : void 0
1519
+ });
1499
1520
  return plan.ok ? {
1500
1521
  kind: "submit",
1501
1522
  plan,
@@ -1776,7 +1797,11 @@ function useBookingFlowController(input) {
1776
1797
  navigate("back");
1777
1798
  },
1778
1799
  goToStep: async (stepId) => navigate(stepId),
1779
- submit: submitBooking,
1800
+ submit: (options) => submitBooking({ kind: "submit" }, options),
1801
+ acceptReview: (review, options) => submitBooking({
1802
+ kind: "accept-review",
1803
+ review
1804
+ }, options),
1780
1805
  setDiscountCode: (code) => {
1781
1806
  input.dispatch({
1782
1807
  type: "discount-code-changed",
@@ -1808,10 +1833,11 @@ function useBookingFlowController(input) {
1808
1833
  }
1809
1834
  function useBookingSubmitAction(latestRef) {
1810
1835
  const submittingRef = useRef(false);
1811
- return useCallback(async (options) => {
1836
+ return useCallback(async (intent, options) => {
1812
1837
  const latest = latestRef.current;
1813
1838
  const start = planBookingSubmissionStart({
1814
1839
  ...latest,
1840
+ intent,
1815
1841
  inFlight: submittingRef.current,
1816
1842
  state: {
1817
1843
  ...latest.state,
@@ -3445,11 +3471,12 @@ function appendRebookFlag(url, enabled) {
3445
3471
  function createBookingFormSubmitHandler(input) {
3446
3472
  return async () => {
3447
3473
  const { successUrl, cancelUrl } = buildCheckoutReturnUrls("booking", input.bookingAnchorId);
3448
- const result = await input.booking.actions.submit({
3474
+ const options = {
3449
3475
  redirect: "manual",
3450
3476
  successUrl: appendRebookFlag(successUrl, input.isPortalRebook),
3451
3477
  cancelUrl: appendRebookFlag(cancelUrl, input.isPortalRebook)
3452
- });
3478
+ };
3479
+ const result = input.booking.review ? await input.booking.actions.acceptReview(input.booking.review, options) : await input.booking.actions.submit(options);
3453
3480
  if (!result.ok) return;
3454
3481
  storeDemoBookingPassIfAvailable(result.outcome.customerEmail, result.outcome.demoBookingPass);
3455
3482
  if (result.outcome.kind === "checkout_redirect") {