@riverbankcms/sdk 0.152.0 → 0.153.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 (178) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/{EventEmbeddedCheckoutStep-DVQXWFm6.mjs → EventEmbeddedCheckoutStep-veN-QiAE.mjs} +1 -1
  3. package/dist/{PreviewEditorSidebar-Dr4NJi3Q.mjs → PreviewEditorSidebar-jI_4DTZY.mjs} +4 -4
  4. package/dist/{PreviewEditorUI-DSZXQbyh.mjs → PreviewEditorUI-ORkVZhfu.mjs} +3 -3
  5. package/dist/{SdkPreviewModeRuntime-Dl4GyMc3.mjs → SdkPreviewModeRuntime-DaNqevI1.mjs} +221 -115
  6. package/dist/{SiteChromeCustomizeContext-DgBe-FlM.mjs → SiteChromeCustomizeContext-CgNuBHC0.mjs} +1798 -2024
  7. package/dist/{ThemedButton-B8ViBnLK.mjs → ThemedButton-X2UxhW6F.mjs} +213 -38
  8. package/dist/_dts/ai/src/contracts/proposals.d.ts +52 -52
  9. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +2357 -7859
  10. package/dist/_dts/api/src/communications.d.ts +19 -5
  11. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  12. package/dist/_dts/api/src/sdkThemeWire.d.ts +186 -1434
  13. package/dist/_dts/api/src/shared-contracts.d.ts +10 -0
  14. package/dist/_dts/api/src/siteInfrastructure.d.ts +2 -1
  15. package/dist/_dts/api/src/teamMembers.d.ts +2 -27
  16. package/dist/_dts/block-form/src/widgets/RepeaterField/components/layoutGridDomain.d.ts +3 -13
  17. package/dist/_dts/blocks/src/contracts/index.d.ts +1 -0
  18. package/dist/_dts/blocks/src/index.d.ts +1 -0
  19. package/dist/_dts/blocks/src/lib/media.d.ts +1 -0
  20. package/dist/_dts/blocks/src/lib/picsum.d.ts +2 -2
  21. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -1
  22. package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +1 -1
  23. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +196 -804
  24. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +2 -2
  25. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +1 -1
  26. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +45 -45
  27. package/dist/_dts/blocks/src/system/blocks/shared/teamMembers.d.ts +4 -7
  28. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +2 -2
  29. package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +6 -6
  30. package/dist/_dts/blocks/src/system/fields/backgroundContent.d.ts +377 -1
  31. package/dist/_dts/blocks/src/system/helpers/backgroundMedia.d.ts +6 -2
  32. package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +3 -3
  33. package/dist/_dts/blocks/src/system/layout/repeaterGrid.d.ts +12 -5
  34. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +3 -3
  35. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +24 -24
  36. package/dist/_dts/blocks/src/system/manifest/validation.d.ts +2 -0
  37. package/dist/_dts/blocks/src/system/node/fragments/lookSlot.d.ts +1 -1
  38. package/dist/_dts/blocks/src/system/runtime/hooks/useBookingFlowController.d.ts +1 -1
  39. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +2 -0
  40. package/dist/_dts/blocks/src/system/runtime/lookSurfaces.d.ts +2 -2
  41. package/dist/_dts/blocks/src/system/runtime/nodes/ImageResolveContext.d.ts +1 -1
  42. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +50 -202
  43. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +28 -1
  44. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/lookPresentation.d.ts +2 -2
  45. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/presentation.d.ts +1 -1
  46. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CardListItem.d.ts +1 -1
  47. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +276 -884
  48. package/dist/_dts/blocks/src/system/runtime/nodes/file-download.d.ts +3 -2
  49. package/dist/_dts/blocks/src/system/runtime/nodes/media.d.ts +22 -90
  50. package/dist/_dts/blocks/src/system/runtime/nodes/mediaContext.d.ts +69 -0
  51. package/dist/_dts/blocks/src/system/transforms/registry/index.d.ts +1 -0
  52. package/dist/_dts/blocks/src/system/transforms/registry/links.d.ts +3 -3
  53. package/dist/_dts/content-model/src/content-types/schema.d.ts +3 -3
  54. package/dist/_dts/core/src/mailing-list-runtime.d.ts +2 -2
  55. package/dist/_dts/core/src/mailing-list-setup-parser.d.ts +9 -1
  56. package/dist/_dts/core/src/mailing-list-setup.d.ts +9 -1
  57. package/dist/_dts/core/src/mailing-list-submission.d.ts +1 -1
  58. package/dist/_dts/core/src/mailing-list-targeting.d.ts +9 -1
  59. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +55 -4
  60. package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
  61. package/dist/_dts/editor-blocks/src/media/MediaField.d.ts +2 -2
  62. package/dist/_dts/editor-blocks/src/media/admitEditorMediaField.d.ts +4 -0
  63. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/targetingState.d.ts +2 -2
  64. package/dist/_dts/media-core/src/assetsInUseSummary.d.ts +6 -0
  65. package/dist/_dts/media-core/src/contentMediaAudit.d.ts +3 -2
  66. package/dist/_dts/media-core/src/index.d.ts +4 -0
  67. package/dist/_dts/media-core/src/media.d.ts +406 -0
  68. package/dist/_dts/media-core/src/mediaIdentifierSchema.d.ts +3 -0
  69. package/dist/_dts/media-core/src/mediaKinds.d.ts +2 -0
  70. package/dist/_dts/media-core/src/mediaUsageProjection.d.ts +13 -1
  71. package/dist/_dts/media-core/src/mediaWriteNormalizer.d.ts +2 -6
  72. package/dist/_dts/media-core/src/portableMediaReferences.d.ts +8 -21
  73. package/dist/_dts/media-core/src/renderableMediaAsset.d.ts +28 -14
  74. package/dist/_dts/media-core/src/renderableMediaAssetAdmission.d.ts +15 -0
  75. package/dist/_dts/media-editor/src/CropDialog.d.ts +6 -3
  76. package/dist/_dts/media-editor/src/MediaEditor.d.ts +2 -1
  77. package/dist/_dts/media-editor/src/MediaPreview.d.ts +3 -3
  78. package/dist/_dts/media-editor/src/cropEditorSource.d.ts +5 -7
  79. package/dist/_dts/media-editor/src/editorMediaState.d.ts +29 -0
  80. package/dist/_dts/media-editor/src/mediaSelection.d.ts +1 -2
  81. package/dist/_dts/media-editor/src/runtimeMediaAssetState.d.ts +4 -5
  82. package/dist/_dts/media-editor/src/types.d.ts +1 -1
  83. package/dist/_dts/media-editor/src/utils.d.ts +0 -1
  84. package/dist/_dts/media-react/src/components/cropChangePolicy.d.ts +4 -1
  85. package/dist/_dts/media-react/src/components/cropGeometry.d.ts +1 -0
  86. package/dist/_dts/media-react/src/components/useImageCropperController.d.ts +1 -0
  87. package/dist/_dts/preview-next/src/client/blocks/BlockBackgroundChooser.d.ts +2 -1
  88. package/dist/_dts/preview-next/src/client/blocks/previewCustomizeSelectedMedia.d.ts +11 -12
  89. package/dist/_dts/sdk/src/contracts/content.d.ts +2 -45
  90. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  91. package/dist/_dts/sdk/src/contracts/rendering.d.ts +3 -3
  92. package/dist/_dts/sdk/src/index.d.ts +1 -0
  93. package/dist/_dts/sdk/src/rendering/image.d.ts +5 -5
  94. package/dist/_dts/sdk/src/rendering/index.d.ts +2 -1
  95. package/dist/_dts/sdk/src/rendering/link.d.ts +3 -7
  96. package/dist/_dts/sdk/src/rendering/mediaAssets.d.ts +2 -4
  97. package/dist/_dts/sdk/src/version.d.ts +1 -1
  98. package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -1
  99. package/dist/_dts/theme-core/src/boxBackgroundSchema.d.ts +397 -26
  100. package/dist/_dts/theme-core/src/buttons/types.d.ts +21 -21
  101. package/dist/_dts/theme-core/src/cards/types.d.ts +34 -34
  102. package/dist/_dts/theme-core/src/inputs/types.d.ts +3 -3
  103. package/dist/_dts/theme-core/src/lib/media.d.ts +2 -616
  104. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +261 -2619
  105. package/dist/_dts/theme-core/src/palette/curated/types.d.ts +1 -1
  106. package/dist/_dts/theme-core/src/schema.d.ts +548 -3187
  107. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  108. package/dist/_dts/theme-core/src/site-styles/runtimeBackgroundResolution.d.ts +9 -9
  109. package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +1 -1
  110. package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +1 -1
  111. package/dist/_dts/theme-core/src/styles/skinTokens.d.ts +2 -2
  112. package/dist/_dts/theme-core/src/typography/schema.d.ts +2 -2
  113. package/dist/client/{BookingMailingListNote-CBuMKN0w.mjs → BookingMailingListNote-DrchYW1m.mjs} +2 -2
  114. package/dist/client/{CardListItem-Dc9XTXhB.mjs → CardListItem-CC_GVmF6.mjs} +5 -4
  115. package/dist/client/{CheckboxChoice-CIqx_o0E.mjs → CheckboxChoice-Dq30m3DO.mjs} +1 -1
  116. package/dist/client/{DemoBookingPortalAccess-D3VQ_kLj.mjs → DemoBookingPortalAccess-ojwbVUmx.mjs} +2 -2
  117. package/dist/client/{EventCombined.client-BHGEKise.mjs → EventCombined.client-DyN0v0Xk.mjs} +5 -6
  118. package/dist/client/{EventEmbeddedCheckoutStep-Bo1Cm23R.mjs → EventEmbeddedCheckoutStep-CgfpKc3n.mjs} +2 -2
  119. package/dist/client/{EventListing.client-D5OQgVPr.mjs → EventListing.client-CuOuvYMz.mjs} +2 -2
  120. package/dist/client/{LeafletStaticMap-CLL5cWrr.mjs → LeafletStaticMap-B0WhRr3j.mjs} +1 -1
  121. package/dist/client/{RichText-BoDmnopf.mjs → RichText-C1fIXBzA.mjs} +45 -32
  122. package/dist/client/{ThemedButton-Ciltp0IK.mjs → ThemedButton-B7HFqFBg.mjs} +1 -2
  123. package/dist/client/{accordion-DOkRS64-.mjs → accordion-DCDVWSye.mjs} +1 -1
  124. package/dist/client/{bookingForm-wlMVwo9h.mjs → bookingForm-BJ3C4GlM.mjs} +42 -15
  125. package/dist/client/bookings.mjs +116989 -22191
  126. package/dist/client/{carousel-CGWk-Z0u.mjs → carousel-BSCBhfHY.mjs} +2 -2
  127. package/dist/client/{carousel.client-kX5mN1Eg.mjs → carousel.client-GEtOGsxo.mjs} +1 -1
  128. package/dist/client/{cart-OBBPlaH4.mjs → cart-Yv-aAtck.mjs} +3 -3
  129. package/dist/client/{checkout-Bmw2WjQX.mjs → checkout-B9xDkl30.mjs} +3 -3
  130. package/dist/client/client.mjs +17577 -17361
  131. package/dist/client/{context-BI77UFAn.mjs → context-BOGe3rIA.mjs} +1 -1
  132. package/dist/client/{eventCalendar-qkej2Edn.mjs → eventCalendar-D6M0T9hs.mjs} +8 -9
  133. package/dist/client/{eventCombined-DApKHvat.mjs → eventCombined-NM4UFBq8.mjs} +4 -4
  134. package/dist/client/{eventDetails-BQyUDPH0.mjs → eventDetails-f_FhV4O8.mjs} +3 -3
  135. package/dist/client/{eventListing-CeAnshlZ.mjs → eventListing-WLkfAROh.mjs} +4 -4
  136. package/dist/client/{eventRegistration-C3A3NyBO.mjs → eventRegistration-D3ejfLvW.mjs} +10 -10
  137. package/dist/client/{form-DW8rU7jO.mjs → form-D5Or2Jyu.mjs} +4 -5
  138. package/dist/client/{headerSection-CkIhsoNm.mjs → headerSection-hWgnv27V.mjs} +3 -3
  139. package/dist/client/hooks.mjs +16014 -15751
  140. package/dist/client/{locationMap-D4O8wbli.mjs → locationMap-Di1K0O2S.mjs} +3 -4
  141. package/dist/client/{media-C5K_0xPd.mjs → media-D29-F1u_.mjs} +183 -362
  142. package/dist/client/mediaContext-CwbbimYB.mjs +135 -0
  143. package/dist/client/{newsletterForm-B7IxSPuz.mjs → newsletterForm-CwxcwTNO.mjs} +4 -4
  144. package/dist/client/{productDetail-Bqxpwy5N.mjs → productDetail-BLSnhPdA.mjs} +3 -3
  145. package/dist/client/{productList-u9Lz8V15.mjs → productList-oGytONOX.mjs} +3 -3
  146. package/dist/client/{propsDecoder-Bf1jucUp.mjs → propsDecoder-lf_dTeZS.mjs} +1467 -125
  147. package/dist/client/renderableMediaAssetAdmission-CHkXYDC_.mjs +143 -0
  148. package/dist/client/rendering/client.mjs +10855 -10689
  149. package/dist/client/rendering/islands.mjs +20 -23
  150. package/dist/client/rendering.mjs +18411 -18181
  151. package/dist/client/{routeIslandApiConfig-BgP-aPMl.mjs → routeIslandApiConfig-Bc_WVPS8.mjs} +1 -1
  152. package/dist/client/{shop-B_eykR-_.mjs → shop-BQ3bR7fA.mjs} +7 -7
  153. package/dist/client/{shop-commerce-CT0APkFV.mjs → shop-commerce-DDPll6ZC.mjs} +8 -8
  154. package/dist/client/{shop-commerce-store-DcvZxdEK.mjs → shop-commerce-store-DO-e1pTe.mjs} +1 -1
  155. package/dist/client/{shopShared-BVJOiUiJ.mjs → shopShared-BylM9jh1.mjs} +5 -5
  156. package/dist/client/{useDiscountCodeUi-DPmYDunz.mjs → useDiscountCodeUi-B1Puub2v.mjs} +1 -1
  157. package/dist/client/{useEventPagination-8-U55vH5.mjs → useEventPagination-BBhkmQaT.mjs} +6 -7
  158. package/dist/preview-next/before-render.mjs +89 -4
  159. package/dist/preview-next/client/runtime.mjs +3 -3
  160. package/dist/{sdk-runtime-C5jPdSrk.mjs → sdk-runtime-DWCvhJGu.mjs} +1 -1
  161. package/dist/server/components.mjs +18663 -18510
  162. package/dist/server/config-validation.mjs +450 -215
  163. package/dist/server/config.mjs +450 -215
  164. package/dist/server/data.mjs +15940 -15705
  165. package/dist/server/index.mjs +227 -2
  166. package/dist/server/next.mjs +18643 -18490
  167. package/dist/server/page-converter.mjs +12588 -12477
  168. package/dist/server/prebuild.mjs +1 -1
  169. package/dist/server/rendering/server.mjs +18007 -17855
  170. package/dist/server/rendering.mjs +18677 -18516
  171. package/dist/server/routing.mjs +17747 -17469
  172. package/dist/server/server.mjs +539 -276
  173. package/dist/server/theme-bridge.mjs +154 -37
  174. package/dist/server/theme.mjs +154 -37
  175. package/dist/{spinner-B-ab2rJp.mjs → spinner-BYM-Y81w.mjs} +1 -1
  176. package/package.json +1 -1
  177. package/dist/client/aspectTransforms-D-TnDdq4.mjs +0 -93
  178. package/dist/client/colorStyles-ECDNPE_P.mjs +0 -1253
@@ -2,6 +2,6 @@ import { type ThemeColorToken } from '../tokens';
2
2
  export declare const backgroundAppearanceQuickColorTokenNames: readonly ["background", "surface", "muted", "primary", "secondary", "accent"];
3
3
  export declare const backgroundAppearanceBaseColorTokenNames: readonly ["background", "surface", "surfaceAlt", "muted", "primary", "secondary", "accent", "neutral"];
4
4
  export declare const backgroundAppearanceShadeableColorTokenNames: readonly ["primary", "secondary", "accent", "neutral"];
5
- export declare const backgroundAppearanceColorTokenNames: readonly ("surface" | "background" | "primary" | "secondary" | "accent" | "surfaceAlt" | "muted" | "neutral" | "neutral-600" | "neutral-500" | "neutral-50" | "neutral-900" | "primary-50" | "primary-500" | "primary-900" | "secondary-50" | "secondary-500" | "secondary-900" | "accent-50" | "accent-500" | "accent-900" | "neutral-100" | "primary-400" | "neutral-300" | "neutral-950" | "neutral-800" | "primary-800" | "primary-700" | "neutral-700" | "primary-300" | "primary-600" | "secondary-600" | "accent-600" | "accent-400" | "neutral-200" | "secondary-400" | "neutral-400" | "primary-100" | "primary-200" | "primary-950" | "secondary-100" | "secondary-200" | "secondary-300" | "secondary-700" | "secondary-800" | "secondary-950" | "accent-100" | "accent-200" | "accent-300" | "accent-700" | "accent-800" | "accent-950")[];
6
- export declare const backgroundAppearanceAdvancedColorTokenNames: ("surface" | "background" | "primary" | "secondary" | "accent" | "surfaceAlt" | "muted" | "neutral" | "neutral-600" | "neutral-500" | "neutral-50" | "neutral-900" | "primary-50" | "primary-500" | "primary-900" | "secondary-50" | "secondary-500" | "secondary-900" | "accent-50" | "accent-500" | "accent-900" | "neutral-100" | "primary-400" | "neutral-300" | "neutral-950" | "neutral-800" | "primary-800" | "primary-700" | "neutral-700" | "primary-300" | "primary-600" | "secondary-600" | "accent-600" | "accent-400" | "neutral-200" | "secondary-400" | "neutral-400" | "primary-100" | "primary-200" | "primary-950" | "secondary-100" | "secondary-200" | "secondary-300" | "secondary-700" | "secondary-800" | "secondary-950" | "accent-100" | "accent-200" | "accent-300" | "accent-700" | "accent-800" | "accent-950")[];
5
+ export declare const backgroundAppearanceColorTokenNames: readonly ("surface" | "background" | "primary" | "secondary" | "accent" | "surfaceAlt" | "muted" | "neutral" | "neutral-50" | "neutral-900" | "primary-50" | "primary-500" | "primary-900" | "secondary-50" | "secondary-500" | "secondary-900" | "accent-50" | "accent-500" | "accent-900" | "neutral-100" | "neutral-600" | "primary-400" | "neutral-300" | "neutral-950" | "neutral-800" | "neutral-700" | "primary-300" | "primary-600" | "secondary-600" | "accent-600" | "accent-400" | "neutral-200" | "secondary-400" | "neutral-400" | "primary-100" | "neutral-500" | "primary-800" | "primary-700" | "primary-200" | "primary-950" | "secondary-100" | "secondary-200" | "secondary-300" | "secondary-700" | "secondary-800" | "secondary-950" | "accent-100" | "accent-200" | "accent-300" | "accent-700" | "accent-800" | "accent-950")[];
6
+ export declare const backgroundAppearanceAdvancedColorTokenNames: ("surface" | "background" | "primary" | "secondary" | "accent" | "surfaceAlt" | "muted" | "neutral" | "neutral-50" | "neutral-900" | "primary-50" | "primary-500" | "primary-900" | "secondary-50" | "secondary-500" | "secondary-900" | "accent-50" | "accent-500" | "accent-900" | "neutral-100" | "neutral-600" | "primary-400" | "neutral-300" | "neutral-950" | "neutral-800" | "neutral-700" | "primary-300" | "primary-600" | "secondary-600" | "accent-600" | "accent-400" | "neutral-200" | "secondary-400" | "neutral-400" | "primary-100" | "neutral-500" | "primary-800" | "primary-700" | "primary-200" | "primary-950" | "secondary-100" | "secondary-200" | "secondary-300" | "secondary-700" | "secondary-800" | "secondary-950" | "accent-100" | "accent-200" | "accent-300" | "accent-700" | "accent-800" | "accent-950")[];
7
7
  export declare function parseBackgroundAppearanceColorToken(value: unknown): ThemeColorToken | null;
@@ -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;
@@ -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";
@@ -45,8 +45,8 @@ export declare const themeTokenRecipesSchema: z.ZodObject<{
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>;
@@ -1,7 +1,7 @@
1
1
  "use client";
2
- import { Lr as assertNever } from "./propsDecoder-Bf1jucUp.mjs";
2
+ import { Lr as assertNever } from "./propsDecoder-lf_dTeZS.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-C1fIXBzA.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, fr as listLookSlot, ji as assertNever, sr as isEventFull, tr as canJoinEventWaitlistOnAnyMode } from "./propsDecoder-lf_dTeZS.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-D29-F1u_.mjs";
3
+ import { n as getCurrentResolveImageUrlContext } from "./mediaContext-CwbbimYB.mjs";
4
+ import { n as ThemedButtonLink } from "./ThemedButton-B7HFqFBg.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 { ni as clsx } from "./propsDecoder-lf_dTeZS.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-B7HFqFBg.mjs";
3
+ import { n as useBlockApi, r as BlockApiError } from "./context-BOGe3rIA.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, _i as formatLocalScheduleDate, bn as buildEventRuntimeFilters, cn as eventListingBlockRuntime, dn as calendarPageResponseError, fn as calendarQueryKey, gn as planCalendarMonthRanges, ln as calendarMonthDate, mn as calendarWindowMonths$1, ni as clsx, nr as formatEventRemainingPlaces, pn as calendarWindowBounds, qn as getDayOfWeek, sr as isEventFull, un as calendarMonthKey, xn as getEventRuntimeFiltersKey, yi as getLocalScheduleDate, yn as getBlockApiReadStage, zn as resolveEventTimeZone } from "./propsDecoder-lf_dTeZS.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-B7HFqFBg.mjs";
5
+ import { a as toError, i as useEventCollectionFilters, n as EventPaginatedListView, r as EventCardClient, s as formatEventTeacherLine, t as useEventPagination } from "./useEventPagination-BBhkmQaT.mjs";
6
+ import { a as resolveEventLinkProps, i as resolveEventCta } from "./CardListItem-CC_GVmF6.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-BOGe3rIA.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 { ri as checkBrowserStripeKey } from "./propsDecoder-lf_dTeZS.mjs";
3
+ import { i as SpinnerNode, t as ThemedButton } from "./ThemedButton-B7HFqFBg.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, fr as listLookSlot } from "./propsDecoder-lf_dTeZS.mjs";
3
+ import { i as useEventCollectionFilters, n as EventPaginatedListView, t as useEventPagination } from "./useEventPagination-BBhkmQaT.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 { Ir as isRecord } from "./propsDecoder-lf_dTeZS.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,7 @@
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 { s as resolveImageUrlWithContext, t as ImagePresets } from "./media-D29-F1u_.mjs";
4
+ import { n as getCurrentResolveImageUrlContext } from "./mediaContext-CwbbimYB.mjs";
3
5
  import React from "react";
4
6
  import { Fragment, jsx } from "react/jsx-runtime";
5
7
  //#region ../blocks/src/primitives/content/utils/sanitizeHref.ts
@@ -97,6 +99,47 @@ function renderMarks(text, marks, key, linkTarget) {
97
99
  }
98
100
  }, text);
99
101
  }
102
+ function richTextImageOptions(width, height) {
103
+ if (width) return {
104
+ width,
105
+ resize: "contain",
106
+ quality: 85
107
+ };
108
+ if (height) return {
109
+ height,
110
+ resize: "contain",
111
+ quality: 85
112
+ };
113
+ return ImagePresets.full;
114
+ }
115
+ function resolveRichTextImageSource(attrs, width, height, context) {
116
+ if (attrs.identifier !== void 0 && attrs.identifier !== null) {
117
+ const parsed = parseCanonicalMediaIdentifier(attrs.identifier);
118
+ if (!parsed.ok) return void 0;
119
+ if (context?.mediaAssetIndex) return resolveImageUrlWithContext({
120
+ type: "image",
121
+ identifier: parsed.value
122
+ }, richTextImageOptions(width, height), context);
123
+ return typeof attrs.src === "string" ? attrs.src.trim() || void 0 : void 0;
124
+ }
125
+ return typeof attrs.src === "string" ? attrs.src.trim() || void 0 : void 0;
126
+ }
127
+ function renderRichTextImage(node, key, context) {
128
+ const attrs = node.attrs ?? {};
129
+ const width = parseDimension(attrs.width);
130
+ const height = parseDimension(attrs.height);
131
+ const src = resolveRichTextImageSource(attrs, width, height, context);
132
+ if (!src) return null;
133
+ return /* @__PURE__ */ jsx("img", {
134
+ src,
135
+ alt: typeof attrs.alt === "string" ? attrs.alt : "",
136
+ title: typeof attrs.title === "string" && attrs.title.trim() ? attrs.title : void 0,
137
+ width,
138
+ height,
139
+ loading: "lazy",
140
+ decoding: "async"
141
+ }, key);
142
+ }
100
143
  function renderDoc(node, key, imageResolveContext, linkTarget) {
101
144
  if (!node || !node.type) return null;
102
145
  const children = node.content?.map((child, index) => renderDoc(child, `${key}-${index}`, imageResolveContext, linkTarget));
@@ -115,37 +158,7 @@ function renderDoc(node, key, imageResolveContext, linkTarget) {
115
158
  case "blockquote": return /* @__PURE__ */ jsx("blockquote", { children }, key);
116
159
  case "horizontalRule": return /* @__PURE__ */ jsx("hr", {}, key);
117
160
  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
- }
161
+ case "image": return renderRichTextImage(node, key, imageResolveContext);
149
162
  case "text": return renderMarks(node.text ?? "", node.marks, key, linkTarget);
150
163
  default: return null;
151
164
  }
@@ -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 themeButtonVariantClassNames, Wr as themeButtonSizeClassName, ni as clsx } from "./propsDecoder-lf_dTeZS.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-lf_dTeZS.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 { Ai as formatCurrencyAmount, 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, _i as formatLocalScheduleDate, _r as getBookingRedirectStateFromLocation, bi as parseBookingLocalDate, gi as formatBookingInstant, gr as formatBookingSubmissionPreparationError, hi as addLocalScheduleDays, hr as formatBookingCentsAsCurrencyInput, jr as projectSelectedAppointmentConsentIntoForm, jt as buildReviewedBookingPaymentViewModel, kr as selectedBookingCollectionOptionKind, mi as resolveBookingSignupOffer, mr as deriveBookingFormViewState, pr as logger, t as defineIslandPropsDecoder, vr as getBookingServiceSlidingScale, wr as prepareBookingSubmission, xi as resolveBookingTimeZoneId, yr as getBookingSuccessCopy, zr as err } from "./propsDecoder-lf_dTeZS.mjs";
4
+ import { i as SpinnerNode, t as ThemedButton } from "./ThemedButton-B7HFqFBg.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-ojwbVUmx.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-B1Puub2v.mjs";
10
+ import { a as useBookingNowIso, i as usePolling, n as BookingConsentAgreement, o as StepIndicator, r as PaymentChoiceRows, t as BookingMailingListNote } from "./BookingMailingListNote-DrchYW1m.mjs";
11
+ import { n as useBlockApi, t as BlockApiProvider } from "./context-BOGe3rIA.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-Dq30m3DO.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-Bc_WVPS8.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") {