@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,7 +1,7 @@
1
1
  "use client";
2
- import { G as corners, H as parseThemeForPersistence, Hn as paletteColorsSchema, Sn as defaultThemeTokens, Sr as makeBoundaryId, Un as paletteModeSchema, Yt as resolveSurface, Zn as resolveSdkFooterMode, cr as asLayoutVariantKey, dr as assertNever$1, ft as isThemeV2NormalEditorRawStyleFieldName, gt as stripStaleTransitionStyleGroup, in as textColorStyle, rr as asDesignBlockId, si as __exportAll, ur as asSiteStyleId } from "./ThemedButton-B8ViBnLK.mjs";
2
+ import { $n as renderableMediaAssetSchema$1, Cn as defaultThemeTokens, G as corners, H as parseThemeForPersistence, Ii as __exportAll, Or as makeBoundaryId, Qn as buildRenderableMediaAssetIndex, Un as paletteColorsSchema, Wn as paletteModeSchema, Xt as resolveSurface, _r as assertNever$1, _t as stripStaleTransitionStyleGroup, an as textColorStyle, bi as parseSiteId, er as indexRenderableMediaAssets, gr as asSiteStyleId, lr as asDesignBlockId, mr as asLayoutVariantKey, nr as mediaIdentifierSchema$2, pt as isThemeV2NormalEditorRawStyleFieldName, tr as resolveManagedMediaReference, ui as expectParsedBrandedId } from "./ThemedButton-C8kzu0hY.mjs";
3
3
  import { i as useOptionalPreviewLayout, t as PreviewQueryProvider } from "./PreviewQueryProvider-AR9eEn7j.mjs";
4
- import { $ as backgroundColorTokens, $a as Tabs, $i as defineFragment, $n as createRoutingHelpers, $o as parseFooterModuleId, $r as normalizeOfferingsPreviewItemLimit, $t as FileField, Aa as sectionFactsForContent, Ai as buildResolveImageUrlContext, An as mapOptionValueForSelect, Ar as SITE_CHROME_VISIBLE_HEADER_SELECTOR, At as createEditorApiClientFactory, Bi as blogFeaturedPostFragment, Bn as createManifestFormAdapter, Br as systemCustomizeFacetDefinitionsForBlock, Bt as SiteOptionPickerField, Ci as coerceInlineTextWithFallback, Cn as clientComponentRegistry, Cr as containerResponsiveThemeCss, Ct as useUISelector, Da as resolveLookSlotSurfaces, Di as LINKED_CONTENT_ENTRY_META_KEY, Dn as useSdkConfig, Do as SlidersHorizontal, Dr as normalizeBlockContent, Dt as useEntryEditorController, Ea as resolveItemSurface, Ei as plainTextToInlineText, En as SdkConfigProvider, Er as getBlockDefinition, Fa as deriveSectionGround, Fi as richTextFragment, Fn as prepareBlockEditorManifest, Fr as compileManifestContentContract, Ft as EditLeaseDiscardedNotice, G as PreviewPageDesignEditorStateProvider, Ga as SelectValue, Gi as testimonialsHeadingFragment, Gn as getBlockManifestFromSdkConfig, Go as Button, Gr as getResponsiveScopeSpec, Gt as loadMailingListAuthoringContext, H as arrangementBlockControlsFor, Ha as SelectContent, Hi as formEmbedFragment, Ho as ChevronLeft, Hr as systemCustomizeFacetNextValue, Ht as OfferingsPreviewGroupOrderField, Ia as parseCanonicalRuntimeBackground, Ii as headingFragment, In as stripTopLevelRoutingUi, Io as Info, Ir as validateManifestDraft, It as EditLeaseModal, Ji as ctaRowFragment, Jo as baselineRevisionOf, Jr as getDefaultComponentRegistry, Jt as IconPickerField, K as usePreviewPageDesignEditorState, Ki as ctaCopyFragment, Kn as ApiRequestError, Kr as escapeStyleContent, Kt as MailingListTargetingProvider, La as resolveSectionBackground, Li as cardFragment, Ln as evaluateVisibility, Lo as Image, Lr as resolveArrangementKnobs, Lt as EditorWriteSurface, Ma as sectionTransitionFamilies, Mi as resolveImageUrlWithContext, Mn as FieldFrame, Mr as planSiteOverlayHeaderClearance, Mt as useRetentionTicks, Na as sectionTransitionFamilyForBoundaryOptionId, Ni as setContextResolveImageUrlContext, Nn as useField, Nr as visibleHeaderClearancePx, Nt as VIEWING_PARTICIPATION, Oa as boundaryLayout, Oi as coerceLinkedContentEntriesPayload, On as hasEmptyOption, Oo as RotateCcw, Or as offeringsPreviewBlockDefinition, Pa as sectionTransitionVariantForBoundaryOptionId, Pi as SECTION_BACKGROUND_MIN_SOURCE_WIDTH, Pn as hideThemeV2RawStyleFields, Pr as parseStoredVariant, Qi as bodyCopyFragment, Qn as API_ENDPOINTS, Qo as buildMailingListSignupBlockSourceRef, Qr as buildOfferingsPreviewRenderStates, Qt as ButtonWidgetProvider, Ri as faqAccordionFragment, Rn as getFieldIntent, Ro as GripVertical, Rr as systemCustomizeFacetAppliesToLayoutVariant, Rt as createSiteOptionApiLoader, Si as planSiteChromePlacement, Sn as useApiMediaUploader, Sr as ThemeScope, Ta as arrangementSlotNames, Ti as isInlineTextEmpty, Tn as BlockApiProvider, Tr as makeDefaultBlockComponent, Tt as EntryControllerProvider, U as arrangementOwnedFieldIds, Ua as SelectItem, Ui as formCopyFragment, Ur as buildThemeRuntime, Ut as OfferingsPreviewWidgetProvider, V as arrangementBackgroundControlFor, Va as Select, Vi as singleButtonFragment, Vo as ChevronRight, Vr as systemCustomizeFacetLabelForValue, Vt as SiteOptionWidgetProvider, W as nextArrangementLookPin, Wa as SelectTrigger, Wi as testimonialsCarouselFragment, Wn as blocksKeys, Wr as DEFAULT_THEME_RESPONSIVE_MODE, Wt as MailingListTargetingField, Xi as ctaButton, Xn as SURFACE_IDS, Xr as buildItemDataMap, Xt as EntryPickerWidgetProvider, Yi as heroCopyFragment, Yn as SURFACE_DOCUMENT_DATA_ATTRIBUTE, Yo as isEdited, Yr as buildOfferingsCatalogueState, Yt as EntryPickerField, Zi as runTransforms, Zn as resolveSurfaceDocumentAttributes, Zo as canEditorWrite, Zr as OFFERINGS_PREVIEW_EVENT_PRESET_DEFINITIONS, Zt as ButtonVariantField, _a as surfaceResolutionContextFromTheme, _i as resolveEntryRouteTarget, _n as decodePublicProductCategorySelectorQuery, _r as renderedFieldChanges, _t as renderSiteChromeBlock, aa as compileEditorModelRuntime, ai as parseGeneratedIconSetId, an as RichTextWidgetProvider, ao as DialogDescription, as as parseEditLeaseScope, at as planBackgroundOverride, ba as getGradientPreset, bi as isObjectRecord, bn as MediaEditorContextProvider, bo as X, br as unsafeAsLinkedContentEntryId, bt as PreviewTextEditor, c as PreviewDesignCoordinatorProvider, ca as readStoredMode, ci as Text$1, cn as LinkField, co as DialogTitle, cr as unwrapResponse, ct as resolveBackgroundCapability, d as usePreviewThemeOverlay, da as resolvePublishedLook, di as siblingPath, dn as PaletteProvider, dr as useOptionalEditorUiStoreInstance, ds as expectParsedBrandedId, dt as initPreviewAuth, ea as bindingSchema, ei as resolveOfferingsPreviewGroups, en as MediaField, eo as TabsContent, er as createSnapshotFromPageRecord, es as parseMailingListPlacementTargeting, et as canCycleBackgroundOverrideValue, fa as componentRuntimeRulesForTheme, fi as defaultTransforms, fn as usePalette, fs as parseMediaAssetId, ft as registerPreviewRenewalFetcher, gi as isRichTextDoc, gn as MediaEditor, gr as renderSourceFor, hi as bookingConsentCarrierSchema, hn as createStoreBackend, hr as remoteDraftValues, ht as usePreviewToken, ia as applyCompiledRuntimeFieldsToContent, ii as parseGeneratedIconAssetId, in as RichTextField, io as DialogContent, ir as parseReferenceKind, is as selectedContentVersionId, it as parseBackgroundOverrideFromContent, ja as defaultSectionTransitionVariantForFamily, ji as getCurrentResolveImageUrlContext, jn as unmapValueFromSelect, jr as SITE_OVERLAY_HEADER_CLEARANCE_CSS_VAR, jt as createPageSurfaceEditorServices, ka as composeBoundary, ki as getLinkedContentEntryMeta, kn as mapCurrentValueForSelect, kr as projectRecurringSchedule, la as resolveEffectiveArrangement, li as RichText$1, ln as LinkWidgetProvider, lr as useEditorUiStore, ls as unsafeAsEditorBlockId, lt as resolvePreviewSidebarTab, ma as getCuratedSiteStyle, mi as publicEventsArraySchema, mn as FormRenderer, mr as planLinkedSaveHandoverRetention, mt as usePreviewAuth, n as useSiteChromeCustomizeOptional, na as blockLookFromContent, nn as ReferenceWidgetProvider, no as TabsTrigger, nr as BUILT_IN_REFERENCE_KINDS, ns as NO_BLOCK_VERSIONS, nt as enabledBackgroundModes, oa as formatSiteChromeBackgroundTokenLabel, oi as renderInlineText, on as EditorProvider, oo as DialogFooter, ot as planBackgroundTransition, pa as designRuntimeRulesForTheme, pi as calendarWindowQuerySchema, pr as activeLinkedSaveHandover, ps as parseSiteId, pt as renewPreviewSession, q as PreviewDesignHistoryOrderProvider, qi as heroCtaRowFragment, qo as cn, qr as mergeContentWithBlockStyleOverrides, qt as InlineTextField, ra as readBlockComposition, ri as parseBlockIconValue, rn as useRichTextImagePicker, ro as Dialog, rs as readEditorBlockVersionsFromPlacement, rt as imagePoolForOverride, sa as arrangementManifestFromVariants, si as logger, sn as useEditor, so as DialogHeader, st as rankBackgroundImagePoolItems, t as SiteChromeCustomizeProvider, ta as arrangementHooksFromContent, ti as buildAppointmentServicesView, tn as ReferenceField, to as TabsList, ts as sameMailingListPlacementTargeting, tt as defaultBackgroundOverrideForMode, u as PreviewThemeOverlayProvider, ua as resolveModeArrangement, ui as getAtPath, ur as useEditorUiStoreInstance, us as assertNever$2, ut as createGuardedPreviewApiClient, va as gradientToCss, vi as resolvePageRouteTarget, vn as DEFAULT_LAUNCH_READINESS_INPUT, vr as resolveRenderedValues, vt as PreviewRichTextEditor, wi as inlineTextToPlainText, wn as ImageResolveContextProvider, wr as createCustomBlockRegistry, wt as EditableBlockProvider, xa as deriveSiteStyleBlockPolicy, xi as isRecord$8, xn as useMediaEditorOptional, xo as Upload, xr as isSupportedLoaderEndpoint, xt as PREVIEW_EDITABLE_OUTLINE, ya as GRADIENT_PRESETS, yi as resolveRouteTarget, yn as deriveLaunchReadiness, yt as PreviewInlineTextEditor, zi as faqHeadingFragment, zn as isHeaderField, zr as systemCustomizeFacetCurrentValue, zt as createSiteOptionWidgetAdapters } from "./SiteChromeCustomizeContext-DgBe-FlM.mjs";
4
+ import { $ as defaultBackgroundOverrideForMode, $i as defineFragment, $n as createSnapshotFromPageRecord, $o as baselineRevisionOf, $r as normalizeOfferingsPreviewItemLimit, $t as MediaField, Ai as resolveImageUrlWithContext, An as unmapValueFromSelect, Ar as SITE_CHROME_VISIBLE_HEADER_SELECTOR, At as createPageSurfaceEditorServices, B as arrangementBlockControlsFor, Ba as deriveSectionGround, Bi as blogFeaturedPostFragment, Br as systemCustomizeFacetDefinitionsForBlock, Bt as SiteOptionWidgetProvider, Ci as coerceInlineTextWithFallback, Cn as ImageResolveContextProvider, Cr as resolveSdkFooterMode, Ct as EditableBlockProvider, Da as arrangementSlotNames, Di as LINKED_CONTENT_ENTRY_META_KEY, Dn as hasEmptyOption, Dr as normalizeBlockContent, Ei as plainTextToInlineText, En as useSdkConfig, Eo as Upload, Er as getBlockDefinition, Et as useEntryEditorController, Fa as sectionFactsForContent, Fi as richTextFragment, Fn as stripTopLevelRoutingUi, Fr as compileManifestContentContract, Ft as EditLeaseModal, G as PreviewDesignHistoryOrderProvider, Gi as testimonialsHeadingFragment, Gn as ApiRequestError, Gr as getResponsiveScopeSpec, Gt as MailingListTargetingProvider, H as nextArrangementLookPin, Ha as resolveSectionBackground, Hi as formEmbedFragment, Ho as Image, Hr as systemCustomizeFacetNextValue, Ht as OfferingsPreviewWidgetProvider, Ia as defaultSectionTransitionVariantForFamily, Ii as headingFragment, In as evaluateVisibility, Ir as validateManifestDraft, It as EditorWriteSurface, Ja as SelectItem, Ji as ctaRowFragment, Jn as SURFACE_DOCUMENT_DATA_ATTRIBUTE, Jr as getDefaultComponentRegistry, Jt as EntryPickerField, Ka as Select, Ki as ctaCopyFragment, Ko as ChevronRight, Kr as escapeStyleContent, Kt as InlineTextField, La as sectionTransitionFamilies, Li as cardFragment, Ln as getFieldIntent, Lr as resolveArrangementKnobs, Lt as createSiteOptionApiLoader, Ma as formatSiteChromeBackgroundTokenLabel, Mi as buildResolveImageUrlContext, Mn as useField, Mo as SlidersHorizontal, Mr as planSiteOverlayHeaderClearance, Mt as VIEWING_PARTICIPATION, Na as boundaryLayout, Ni as getCurrentResolveImageUrlContext, Nn as hideThemeV2RawStyleFields, No as RotateCcw, Nr as visibleHeaderClearancePx, Oa as resolveItemSurface, Oi as coerceLinkedContentEntriesPayload, On as mapCurrentValueForSelect, Or as offeringsPreviewBlockDefinition, Pa as composeBoundary, Pi as setContextResolveImageUrlContext, Pn as prepareBlockEditorManifest, Pr as parseStoredVariant, Pt as EditLeaseDiscardedNotice, Q as canCycleBackgroundOverrideValue, Qi as runTransforms, Qn as createRoutingHelpers, Qo as cn, Qr as buildOfferingsPreviewRenderStates, Qt as FileField, Ra as sectionTransitionFamilyForBoundaryOptionId, Ri as faqAccordionFragment, Rn as isHeaderField, Rr as systemCustomizeFacetAppliesToLayoutVariant, Rt as createSiteOptionWidgetAdapters, Sa as deriveSiteStyleBlockPolicy, Si as planSiteChromePlacement, Sn as clientComponentRegistry, Sr as containerResponsiveThemeCss, St as useUISelector, Ti as isInlineTextEmpty, Tn as SdkConfigProvider, To as X, Tr as makeDefaultBlockComponent, U as PreviewPageDesignEditorStateProvider, Ui as formCopyFragment, Un as blocksKeys, Uo as GripVertical, Ur as buildThemeRuntime, Ut as MailingListTargetingField, V as arrangementOwnedFieldIds, Va as parseCanonicalRuntimeBackground, Vi as singleButtonFragment, Vo as Info, Vr as systemCustomizeFacetLabelForValue, Vt as OfferingsPreviewGroupOrderField, W as usePreviewPageDesignEditorState, Wi as testimonialsCarouselFragment, Wn as getBlockManifestFromSdkConfig, Wr as DEFAULT_THEME_RESPONSIVE_MODE, Wt as loadMailingListAuthoringContext, Xa as SelectValue, Xi as ctaButton, Xn as resolveSurfaceDocumentAttributes, Xo as Button, Xr as buildItemDataMap, Xt as ButtonVariantField, Ya as SelectTrigger, Yi as heroCopyFragment, Yn as SURFACE_IDS, Yr as buildOfferingsCatalogueState, Yt as EntryPickerWidgetProvider, Z as backgroundColorTokens, Zi as bodyCopyFragment, Zn as API_ENDPOINTS, Zr as OFFERINGS_PREVIEW_EVENT_PRESET_DEFINITIONS, Zt as ButtonWidgetProvider, _i as resolveEntryRouteTarget, _n as DEFAULT_LAUNCH_READINESS_INPUT, _r as resolveRenderedValues, _t as PreviewRichTextEditor, aa as compileEditorModelRuntime, ai as parseGeneratedIconSetId, an as EditorProvider, ao as TabsContent, as as parseMailingListPlacementTargeting, at as rankBackgroundImagePoolItems, ba as GRADIENT_PRESETS, bi as isObjectRecord, bn as useMediaEditorOptional, br as isSupportedLoaderEndpoint, bt as PREVIEW_EDITABLE_OUTLINE, c as PreviewThemeOverlayProvider, ca as arrangementManifestFromVariants, ci as Text$1, cn as LinkWidgetProvider, co as Dialog, cr as useEditorUiStore, cs as readEditorBlockVersionsFromPlacement, ct as createGuardedPreviewApiClient, da as resolveModeArrangement, di as siblingPath, dn as usePalette, do as DialogFooter, dt as renewPreviewSession, ea as bindingSchema, ei as resolveOfferingsPreviewGroups, en as ReferenceField, es as isEdited, et as enabledBackgroundModes, fa as resolvePublishedLook, fi as defaultTransforms, fo as DialogHeader, fr as activeLinkedSaveHandover, ft as usePreviewAuth, gi as isRichTextDoc, gn as decodePublicProductCategorySelectorQuery, gr as renderedFieldChanges, ha as getCuratedSiteStyle, hi as bookingConsentCarrierSchema, hn as MediaEditor, hr as renderSourceFor, hs as assertNever$2, ht as renderSiteChromeBlock, ia as applyCompiledRuntimeFieldsToContent, ii as parseGeneratedIconAssetId, in as RichTextWidgetProvider, io as Tabs, is as parseFooterModuleId, it as planBackgroundTransition, ji as SECTION_BACKGROUND_MIN_SOURCE_WIDTH, jn as FieldFrame, jr as SITE_OVERLAY_HEADER_CLEARANCE_CSS_VAR, jt as useRetentionTicks, ka as resolveLookSlotSurfaces, ki as getLinkedContentEntryMeta, kn as mapOptionValueForSelect, kr as projectRecurringSchedule, kt as createEditorApiClientFactory, l as usePreviewThemeOverlay, la as readStoredMode, li as RichText$1, lo as DialogContent, lr as useEditorUiStoreInstance, ls as selectedContentVersionId, lt as initPreviewAuth, ma as designRuntimeRulesForTheme, mi as publicEventsArraySchema, mn as createStoreBackend, mr as remoteDraftValues, ms as unsafeAsEditorBlockId, n as useSiteChromeCustomizeOptional, na as blockLookFromContent, nn as useRichTextImagePicker, ns as canEditorWrite, nt as parseBackgroundOverrideFromContent, o as PreviewDesignCoordinatorProvider, oi as renderInlineText, on as useEditor, oo as TabsList, os as sameMailingListPlacementTargeting, ot as resolveBackgroundCapability, pa as componentRuntimeRulesForTheme, pi as calendarWindowQuerySchema, pn as FormRenderer, po as DialogTitle, pr as planLinkedSaveHandoverRetention, pt as usePreviewToken, qa as SelectContent, qi as heroCtaRowFragment, qo as ChevronLeft, qr as mergeContentWithBlockStyleOverrides, qt as IconPickerField, ra as readBlockComposition, ri as parseBlockIconValue, rn as RichTextField, rr as parseReferenceKind, rs as buildMailingListSignupBlockSourceRef, rt as planBackgroundOverride, si as logger, sn as LinkField, so as TabsTrigger, sr as unwrapResponse, ss as NO_BLOCK_VERSIONS, st as resolvePreviewSidebarTab, t as SiteChromeCustomizeProvider, ta as arrangementHooksFromContent, ti as buildAppointmentServicesView, tn as ReferenceWidgetProvider, tr as BUILT_IN_REFERENCE_KINDS, tt as imagePoolForOverride, ua as resolveEffectiveArrangement, ui as getAtPath, un as PaletteProvider, uo as DialogDescription, ur as useOptionalEditorUiStoreInstance, us as parseEditLeaseScope, ut as registerPreviewRenewalFetcher, va as surfaceResolutionContextFromTheme, vi as resolvePageRouteTarget, vn as deriveLaunchReadiness, vt as PreviewInlineTextEditor, wi as inlineTextToPlainText, wn as BlockApiProvider, wr as createCustomBlockRegistry, wt as EntryControllerProvider, xa as getGradientPreset, xi as isRecord$8, xn as useApiMediaUploader, xr as ThemeScope, ya as gradientToCss, yi as resolveRouteTarget, yn as MediaEditorContextProvider, yr as unsafeAsLinkedContentEntryId, yt as PreviewTextEditor, z as arrangementBackgroundControlFor, za as sectionTransitionVariantForBoundaryOptionId, zi as faqHeadingFragment, zn as createManifestFormAdapter, zr as systemCustomizeFacetCurrentValue, zt as SiteOptionPickerField } from "./SiteChromeCustomizeContext-DEj7qppF.mjs";
5
5
  import * as React$1 from "react";
6
6
  import React, { Children, Fragment, cloneElement, createContext, isValidElement, useCallback, useContext, useEffect, useId, useLayoutEffect, useMemo, useReducer, useRef, useState } from "react";
7
7
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -960,10 +960,7 @@ function arrangementPhotoContent(content, knobs) {
960
960
  }) };
961
961
  }
962
962
  function arrangementContentFacts(content) {
963
- const section = isObjectRecord(content._sectionStyles) ? content._sectionStyles : {};
964
- const background = isObjectRecord(section.background) ? section.background : {};
965
- const itemPhotos = Array.isArray(content.cards) ? content.cards.filter((card) => isObjectRecord(card) && isObjectRecord(card.media)).length : 0;
966
- const photoCount = Array.isArray(content.cards) ? itemPhotos : isObjectRecord(background.image) ? 1 : 0;
963
+ const photoCount = arrangementPhotoCount(content);
967
964
  return {
968
965
  photoCount,
969
966
  facts: {
@@ -974,6 +971,13 @@ function arrangementContentFacts(content) {
974
971
  }
975
972
  };
976
973
  }
974
+ /** The content stage owns media presence for every arrangement consumer. */
975
+ function arrangementPhotoCount(content) {
976
+ if (Array.isArray(content.cards)) return content.cards.filter((card) => isObjectRecord(card) && isObjectRecord(card.media)).length;
977
+ if (Array.isArray(content.images)) return content.images.filter((item) => isObjectRecord(item) && isObjectRecord(item.image)).length;
978
+ const section = isObjectRecord(content._sectionStyles) ? content._sectionStyles : {};
979
+ return isObjectRecord((isObjectRecord(section.background) ? section.background : {}).image) ? 1 : 0;
980
+ }
977
981
  function effectiveContentKnobValue(blockKind, key, value) {
978
982
  const facet = systemCustomizeFacetDefinitionsForBlock(blockKind).find((entry) => entry.target.kind === "content-field" && entry.target.field === key);
979
983
  return facet?.target.kind === "content-field" && facet.target.boolean ? value === "true" : value;
@@ -3126,12 +3130,22 @@ function err(error) {
3126
3130
  error
3127
3131
  };
3128
3132
  }
3133
+ const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
3134
+ function parseUuidBrand(value, unsafeConstructor) {
3135
+ if (typeof value !== "string") return err({ kind: "not_string" });
3136
+ const normalized = value.trim().toLowerCase();
3137
+ if (normalized.length === 0) return err({ kind: "empty_string" });
3138
+ if (!UUID_PATTERN.test(normalized)) return err({ kind: "invalid_uuid" });
3139
+ return ok(unsafeConstructor(normalized));
3140
+ }
3129
3141
  const unsafeAsSiteId = (id) => id;
3142
+ const unsafeAsMediaAssetId = (id) => id;
3130
3143
  const unsafeAsStorageBucketName = (value) => value;
3131
3144
  const unsafeAsBookingSessionId = (id) => id;
3132
3145
  const unsafeAsEntitlementId = (id) => id;
3133
3146
  const unsafeAsSiteFontId = (id) => id;
3134
3147
  const unsafeAsBookingRequirementId = (id) => id;
3148
+ const parseMediaAssetId = (value) => parseUuidBrand(value, unsafeAsMediaAssetId);
3135
3149
  function fromArray(items) {
3136
3150
  const [first, ...rest] = items;
3137
3151
  if (first === void 0) return err("empty_array");
@@ -3612,6 +3626,129 @@ function parseCanonicalMediaIdentifier(value) {
3612
3626
  });
3613
3627
  return parsed;
3614
3628
  }
3629
+ /** Strict stored-reference admission delegates the canonical identifier decision. */
3630
+ const mediaIdentifierSchema$1 = z.string().transform((value, context) => {
3631
+ const parsed = parseCanonicalMediaIdentifier(value);
3632
+ if (parsed.ok) return parsed.value;
3633
+ context.addIssue({
3634
+ code: "custom",
3635
+ message: "Expected a canonical media identifier"
3636
+ });
3637
+ return z.NEVER;
3638
+ });
3639
+ const mediaTypeDiscriminants = [
3640
+ "image",
3641
+ "video",
3642
+ "audio",
3643
+ "document",
3644
+ "spreadsheet",
3645
+ "archive"
3646
+ ];
3647
+ const mediaAssetIdSchema = z.string().transform((value, context) => {
3648
+ const parsed = parseMediaAssetId(value);
3649
+ if (parsed.ok) return parsed.value;
3650
+ context.addIssue({
3651
+ code: "custom",
3652
+ message: "Expected a media asset ID"
3653
+ });
3654
+ return z.NEVER;
3655
+ });
3656
+ const nonemptyStorageValue = z.string().refine((value) => value.trim().length > 0);
3657
+ const renderableMediaAssetSchema = z.object({
3658
+ id: mediaAssetIdSchema,
3659
+ identifier: mediaIdentifierSchema$1,
3660
+ storageBucket: nonemptyStorageValue,
3661
+ storagePath: nonemptyStorageValue,
3662
+ mimeType: nonemptyStorageValue,
3663
+ filename: z.string().optional(),
3664
+ width: z.number().positive().nullable(),
3665
+ height: z.number().positive().nullable()
3666
+ });
3667
+ const hotspotSchema = z.object({
3668
+ x: z.number().min(0).max(1),
3669
+ y: z.number().min(0).max(1),
3670
+ radius: z.number().optional()
3671
+ });
3672
+ const rotationSchema = z.union([
3673
+ z.literal(0),
3674
+ z.literal(90),
3675
+ z.literal(180),
3676
+ z.literal(270)
3677
+ ]);
3678
+ const rectSchema = z.tuple([
3679
+ z.number(),
3680
+ z.number(),
3681
+ z.number(),
3682
+ z.number()
3683
+ ]);
3684
+ const aspectCropSchema = z.object({
3685
+ aspect: z.preprocess((value) => value == null ? void 0 : value, z.string().optional()),
3686
+ rect: z.preprocess((value) => value == null ? void 0 : value, rectSchema.optional()),
3687
+ hotspot: z.preprocess((value) => value == null ? void 0 : value, hotspotSchema.optional()),
3688
+ rotation: z.preprocess((value) => value == null ? void 0 : value, rotationSchema.optional())
3689
+ });
3690
+ const transformSchema = z.object({
3691
+ aspectCrops: z.preprocess((value) => {
3692
+ if (!value || typeof value !== "object" || Array.isArray(value)) return;
3693
+ return value;
3694
+ }, z.record(z.string(), aspectCropSchema.catch({}))).optional(),
3695
+ rect: rectSchema.optional(),
3696
+ hotspot: hotspotSchema.optional(),
3697
+ rotation: rotationSchema.optional()
3698
+ });
3699
+ const mediaPosterSchema = z.discriminatedUnion("tag", [z.object({
3700
+ tag: z.literal("media"),
3701
+ identifier: mediaIdentifierSchema$1
3702
+ }).strict(), z.object({
3703
+ tag: z.literal("external-src"),
3704
+ src: z.string().url()
3705
+ }).strict()]);
3706
+ const mediaUsageShape = {
3707
+ purpose: z.string().optional(),
3708
+ placeholder: z.boolean().default(true).optional(),
3709
+ alt: z.string().optional(),
3710
+ filename: z.string().optional(),
3711
+ width: z.number().optional(),
3712
+ height: z.number().optional(),
3713
+ poster: mediaPosterSchema.optional(),
3714
+ transform: transformSchema.optional()
3715
+ };
3716
+ const environmentExclusions = {
3717
+ assetId: z.never().optional(),
3718
+ id: z.never().optional(),
3719
+ src: z.never().optional(),
3720
+ storageBucket: z.never().optional(),
3721
+ storagePath: z.never().optional(),
3722
+ mimeType: z.never().optional()
3723
+ };
3724
+ const mediaBaseSchema = z.object({
3725
+ ...mediaUsageShape,
3726
+ ...environmentExclusions,
3727
+ identifier: mediaIdentifierSchema$1
3728
+ }).strict();
3729
+ mediaBaseSchema.extend({ type: z.literal("image") });
3730
+ mediaBaseSchema.extend({ type: z.literal("video") });
3731
+ const mediaSchema = mediaBaseSchema.extend({ type: z.enum(mediaTypeDiscriminants) });
3732
+ const externalMediaSchema = z.object({
3733
+ ...mediaUsageShape,
3734
+ ...environmentExclusions,
3735
+ type: z.enum(mediaTypeDiscriminants),
3736
+ src: z.string().min(1),
3737
+ identifier: z.never().optional()
3738
+ }).strict();
3739
+ const assetMediaSchema = z.object({
3740
+ ...mediaUsageShape,
3741
+ ...environmentExclusions,
3742
+ type: z.enum(mediaTypeDiscriminants),
3743
+ asset: renderableMediaAssetSchema,
3744
+ identifier: z.never().optional()
3745
+ }).strict();
3746
+ z.union([
3747
+ mediaSchema,
3748
+ externalMediaSchema,
3749
+ assetMediaSchema
3750
+ ]);
3751
+ new Set(mediaTypeDiscriminants);
3615
3752
  const MEDIA_KINDS = [
3616
3753
  "image",
3617
3754
  "video",
@@ -4063,22 +4200,25 @@ function upsertById(assets, asset) {
4063
4200
  return next;
4064
4201
  }
4065
4202
  function createRuntimeMediaAssetState(siteId, baseAssets) {
4203
+ const mediaAssetIndex = buildRenderableMediaAssetIndex(baseAssets);
4066
4204
  return {
4067
4205
  siteId,
4068
- baseAssets: dedupeById(baseAssets),
4069
- registeredAssets: []
4206
+ baseAssets: mediaAssetIndex?.assets ?? [],
4207
+ registeredAssets: [],
4208
+ mediaAssetIndex
4070
4209
  };
4071
4210
  }
4072
4211
  function reduceRuntimeMediaAssetState(state, action) {
4073
4212
  switch (action.type) {
4074
4213
  case "siteSnapshotReplaced": {
4075
- if (action.siteId !== state.siteId) return createRuntimeMediaAssetState(action.siteId, action.baseAssets);
4076
- const nextBaseAssets = dedupeById(action.baseAssets);
4214
+ const { snapshot } = action;
4215
+ if (snapshot.siteId !== state.siteId) return snapshot;
4216
+ const nextBaseAssets = snapshot.baseAssets;
4077
4217
  if (areEqualAssetLists(nextBaseAssets, state.baseAssets)) return state;
4078
4218
  return {
4079
- siteId: action.siteId,
4219
+ ...state,
4080
4220
  baseAssets: nextBaseAssets,
4081
- registeredAssets: state.registeredAssets
4221
+ mediaAssetIndex: state.registeredAssets.length ? indexRenderableMediaAssets(dedupeById([...nextBaseAssets, ...state.registeredAssets])) : snapshot.mediaAssetIndex
4082
4222
  };
4083
4223
  }
4084
4224
  case "assetRegistered":
@@ -4087,31 +4227,11 @@ function reduceRuntimeMediaAssetState(state, action) {
4087
4227
  if (nextRegisteredAssets === state.registeredAssets) return state;
4088
4228
  return {
4089
4229
  ...state,
4090
- registeredAssets: nextRegisteredAssets
4230
+ registeredAssets: nextRegisteredAssets,
4231
+ mediaAssetIndex: indexRenderableMediaAssets(dedupeById([...state.baseAssets, ...nextRegisteredAssets]))
4091
4232
  };
4092
4233
  }
4093
4234
  }
4094
- /**
4095
- * Returns a freshly deduped merge of base and runtime assets.
4096
- * Callers should memoize the result if referential stability matters downstream.
4097
- */
4098
- function selectRuntimeMediaAssets(state) {
4099
- return dedupeById([...state.baseAssets, ...state.registeredAssets]);
4100
- }
4101
- function createRuntimeMediaAssetSnapshotKey(siteId, assets) {
4102
- return JSON.stringify({
4103
- siteId,
4104
- assets: dedupeById(assets).map((asset) => ({
4105
- id: asset.id,
4106
- identifier: asset.identifier ?? null,
4107
- storageBucket: asset.storageBucket ?? null,
4108
- storagePath: asset.storagePath ?? null,
4109
- width: asset.width ?? null,
4110
- height: asset.height ?? null,
4111
- mimeType: asset.mimeType ?? null
4112
- }))
4113
- });
4114
- }
4115
4235
  //#endregion
4116
4236
  //#region ../media-editor/src/provider.tsx
4117
4237
  const DEFAULT_MEDIA_BUCKET = process.env.NEXT_PUBLIC_MEDIA_BUCKET ?? "media";
@@ -4128,15 +4248,14 @@ function toRuntimeMediaAssetIndexItem(asset) {
4128
4248
  };
4129
4249
  }
4130
4250
  function MediaEditorProvider({ siteId, apiClient, children, bucket = DEFAULT_MEDIA_BUCKET, getPublicUrl, augmentRequest, uploaderOptions, bearerToken, supabaseUrl, mediaAssets }) {
4131
- const baseAssetsSnapshotKey = useMemo(() => createRuntimeMediaAssetSnapshotKey(siteId, mediaAssets ?? []), [mediaAssets, siteId]);
4132
- const [runtimeMediaAssetState, dispatchRuntimeMediaAssetAction] = useReducer(reduceRuntimeMediaAssetState, createRuntimeMediaAssetState(siteId, mediaAssets ?? []));
4251
+ const snapshot = useMemo(() => createRuntimeMediaAssetState(siteId, mediaAssets ?? []), [mediaAssets, siteId]);
4252
+ const [runtimeMediaAssetState, dispatchRuntimeMediaAssetAction] = useReducer(reduceRuntimeMediaAssetState, snapshot);
4133
4253
  useEffect(() => {
4134
4254
  dispatchRuntimeMediaAssetAction({
4135
4255
  type: "siteSnapshotReplaced",
4136
- siteId,
4137
- baseAssets: mediaAssets ?? []
4256
+ snapshot
4138
4257
  });
4139
- }, [baseAssetsSnapshotKey, siteId]);
4258
+ }, [snapshot]);
4140
4259
  const repo = useMemo(() => {
4141
4260
  const clientFn = (request) => {
4142
4261
  return apiClient(augmentRequest ? augmentRequest(request, { siteId }) : request);
@@ -4155,11 +4274,12 @@ function MediaEditorProvider({ siteId, apiClient, children, bucket = DEFAULT_MED
4155
4274
  const imageResolveContext = useMemo(() => buildResolveImageUrlContext({
4156
4275
  siteId,
4157
4276
  supabaseUrl: supabaseUrl ?? (DEFAULT_SUPABASE_URL || void 0),
4158
- mediaAssets: selectRuntimeMediaAssets(runtimeMediaAssetState)
4277
+ mediaAssetIndex: runtimeMediaAssetState.siteId === siteId ? runtimeMediaAssetState.mediaAssetIndex : snapshot.mediaAssetIndex
4159
4278
  }), [
4160
4279
  runtimeMediaAssetState,
4161
4280
  siteId,
4162
- supabaseUrl
4281
+ supabaseUrl,
4282
+ snapshot
4163
4283
  ]);
4164
4284
  const resolvedSupabaseUrl = imageResolveContext.supabaseUrl;
4165
4285
  const registerMediaAsset = useCallback((asset) => {
@@ -4167,7 +4287,7 @@ function MediaEditorProvider({ siteId, apiClient, children, bucket = DEFAULT_MED
4167
4287
  dispatchRuntimeMediaAssetAction({
4168
4288
  type: "assetRegistered",
4169
4289
  siteId,
4170
- asset: toRuntimeMediaAssetIndexItem(asset)
4290
+ asset: renderableMediaAssetSchema$1.parse(toRuntimeMediaAssetIndexItem(asset))
4171
4291
  });
4172
4292
  }, [siteId]);
4173
4293
  const computePublicUrl = useCallback((asset) => {
@@ -8485,10 +8605,10 @@ function resolveShellThemeRoles(props) {
8485
8605
  }
8486
8606
  const previewContainerResponsiveEnabled = process.env.NEXT_PUBLIC_ENABLE_PREVIEW_CONTAINER_RESPONSIVE !== "false";
8487
8607
  const PreviewEditorSidebar = React.lazy(async () => {
8488
- return { default: (await import("./PreviewEditorSidebar-Dr4NJi3Q.mjs")).PreviewEditorSidebar };
8608
+ return { default: (await import("./PreviewEditorSidebar-C7FiaxlF.mjs")).PreviewEditorSidebar };
8489
8609
  });
8490
8610
  const PreviewEditorUI = React.lazy(async () => {
8491
- return { default: (await import("./PreviewEditorUI-DSZXQbyh.mjs")).PreviewEditorUI };
8611
+ return { default: (await import("./PreviewEditorUI-DFst50q1.mjs")).PreviewEditorUI };
8492
8612
  });
8493
8613
  const previewPaneContainmentStyle = {
8494
8614
  contain: "layout paint",
@@ -8515,6 +8635,7 @@ function renderShellProviders(input) {
8515
8635
  apiClient: input.apiClient,
8516
8636
  theme: themeRoles.persistenceTheme,
8517
8637
  headerPreferences: props.themeSelectionHeaderPreferences ?? null,
8638
+ footerPreferences: props.themeSelectionFooterPreferences,
8518
8639
  themeId: props.themeId ?? null,
8519
8640
  selectionId: props.themeSelectionId ?? null,
8520
8641
  selectionVersion: props.themeSelectionVersion ?? null,
@@ -8843,6 +8964,7 @@ function resolveShellLayoutProps(input) {
8843
8964
  themeSelectionButtonStyleSelection: props.themeSelectionButtonStyleSelection ?? null,
8844
8965
  themeSelectionButtonStyleRepairs: props.themeSelectionButtonStyleRepairs ?? [],
8845
8966
  themeSelectionHeaderPreferences: props.themeSelectionHeaderPreferences ?? null,
8967
+ themeSelectionFooterPreferences: props.themeSelectionFooterPreferences,
8846
8968
  themeSelectionHeaderSelection: props.themeSelectionHeaderSelection ?? null,
8847
8969
  themeSelectionFooterLookId: props.themeSelectionFooterLookId ?? null,
8848
8970
  themeSelectionHeaderLogo: props.themeSelectionHeaderLogo,
@@ -9772,48 +9894,40 @@ function isRecord(value) {
9772
9894
  }
9773
9895
  //#endregion
9774
9896
  //#region ../preview-next/src/client/blocks/previewCustomizeSelectedMedia.ts
9775
- function selectedImageFromMediaValue(value) {
9776
- if (value?.type !== "image" || !value.assetId) return null;
9777
- const parsed = parseMediaAssetId(value.assetId);
9778
- if (!parsed.ok) return null;
9779
- return selectedImageFromRenderableAsset({
9780
- id: parsed.value,
9781
- storageBucket: value.storageBucket,
9782
- storagePath: value.storagePath,
9783
- width: value.width,
9784
- height: value.height,
9785
- mimeType: value.mimeType
9786
- });
9787
- }
9788
- function selectedImageFromRenderableAsset(asset) {
9897
+ function selectedImageFromMediaValue(value, index) {
9898
+ if (value?.type !== "image") return null;
9899
+ const resolved = resolveManagedMediaReference(value, index);
9900
+ return resolved.kind === "resolved" ? {
9901
+ reference: value,
9902
+ imageAsset: resolved.asset
9903
+ } : null;
9904
+ }
9905
+ function selectedImageFromRenderableAsset(source) {
9906
+ const asset = renderableMediaAssetSchema$1.parse({
9907
+ ...source,
9908
+ width: source.width ?? null,
9909
+ height: source.height ?? null
9910
+ });
9789
9911
  return {
9790
- mediaId: asset.id,
9791
- imageAsset: renderableImageAssetFromSource(asset)
9912
+ reference: {
9913
+ type: "image",
9914
+ identifier: mediaIdentifierSchema$2.parse(asset.identifier)
9915
+ },
9916
+ imageAsset: asset
9792
9917
  };
9793
9918
  }
9794
9919
  function imagePoolWithSelectedImage(input) {
9795
- if (input.override.kind !== "image" || input.selectedImage?.mediaId !== input.override.mediaId) return input.imagePool;
9796
- const mediaId = input.override.mediaId;
9920
+ const selection = input.selectedImage;
9921
+ if (input.override.kind !== "image" || selection?.reference.identifier !== input.override.reference.identifier) return input.imagePool;
9797
9922
  return [{
9798
- mediaId,
9923
+ reference: input.override.reference,
9799
9924
  source: "general-media",
9800
- mediaAsset: input.selectedImage.imageAsset
9801
- }, ...input.imagePool.filter((item) => item.mediaId !== mediaId)];
9925
+ mediaAsset: selection.imageAsset
9926
+ }, ...input.imagePool.filter((item) => item.reference.identifier !== selection.reference.identifier)];
9802
9927
  }
9803
- function selectedOrPooledImageAssetForMediaId(input) {
9804
- if (input.selectedImage?.mediaId === input.mediaId) return input.selectedImage.imageAsset;
9805
- return input.imagePool?.find((item) => item.mediaId === input.mediaId)?.mediaAsset;
9806
- }
9807
- function renderableImageAssetFromSource(asset) {
9808
- return {
9809
- id: asset.id,
9810
- ...typeof asset.identifier === "string" ? { identifier: asset.identifier } : {},
9811
- ...typeof asset.storageBucket === "string" ? { storageBucket: asset.storageBucket } : {},
9812
- ...typeof asset.storagePath === "string" ? { storagePath: asset.storagePath } : {},
9813
- ...typeof asset.width === "number" ? { width: asset.width } : {},
9814
- ...typeof asset.height === "number" ? { height: asset.height } : {},
9815
- ...typeof asset.mimeType === "string" ? { mimeType: asset.mimeType } : {}
9816
- };
9928
+ function selectedOrPooledImageAssetForReference(input) {
9929
+ if (input.selectedImage?.reference.identifier === input.reference.identifier) return input.selectedImage.imageAsset;
9930
+ return input.imagePool?.find((item) => item.reference.identifier === input.reference.identifier)?.mediaAsset;
9817
9931
  }
9818
9932
  //#endregion
9819
9933
  //#region ../preview-next/src/client/blocks/previewCustomizeActions.ts
@@ -9873,9 +9987,9 @@ function setPageDesignBlockBackground(input) {
9873
9987
  imagePool
9874
9988
  }), input.override);
9875
9989
  if (plan.kind !== "apply") return null;
9876
- const imageAsset = plan.override.kind === "image" ? selectedOrPooledImageAssetForMediaId({
9990
+ const imageAsset = plan.override.kind === "image" ? selectedOrPooledImageAssetForReference({
9877
9991
  imagePool: input.imagePool,
9878
- mediaId: plan.override.mediaId,
9992
+ reference: plan.override.reference,
9879
9993
  selectedImage: input.selectedImage
9880
9994
  }) : void 0;
9881
9995
  return {
@@ -10285,13 +10399,16 @@ function useArrangementToolbar(input) {
10285
10399
  editHeadline: () => input.openField(headlineFieldPath(designBlock.blockKind))
10286
10400
  };
10287
10401
  }
10288
- function ArrangementControlsRow({ toolbar, blockTitle, popover, onToggleOptions, editButton }) {
10402
+ function ArrangementControlsRow({ toolbar, blockName, blockTitle, popover, onToggleOptions, editButton }) {
10289
10403
  const { controls } = toolbar;
10290
10404
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
10291
10405
  /* @__PURE__ */ jsxs("div", {
10406
+ role: "group",
10407
+ "aria-label": `${blockTitle} controls`,
10292
10408
  className: "flex min-w-0 items-center justify-end gap-1 sm:flex-wrap",
10293
10409
  "data-preview-chrome-row": "",
10294
10410
  children: [
10411
+ blockName,
10295
10412
  controls.mode ? /* @__PURE__ */ jsx(ArrangementModeSwitchPill, {
10296
10413
  blockLabel: blockTitle,
10297
10414
  mode: controls.mode,
@@ -10411,7 +10528,7 @@ function useMediaQuery(query) {
10411
10528
  }
10412
10529
  //#endregion
10413
10530
  //#region ../preview-next/src/client/blocks/BlockBackgroundChooser.tsx
10414
- function BackgroundChooser({ capability, current, imagePoolStatus, onChoose }) {
10531
+ function BackgroundChooser({ editingSlot, capability, current, imagePoolStatus, onChoose }) {
10415
10532
  const chooseFromClick = (override) => (event) => {
10416
10533
  event.preventDefault();
10417
10534
  event.stopPropagation();
@@ -10431,6 +10548,7 @@ function BackgroundChooser({ capability, current, imagePoolStatus, onChoose }) {
10431
10548
  chooseFromClick
10432
10549
  }) : null,
10433
10550
  current.kind === "image" ? /* @__PURE__ */ jsx(BackgroundImageOptions, {
10551
+ editingSlot,
10434
10552
  capability,
10435
10553
  current,
10436
10554
  imagePoolStatus,
@@ -10546,7 +10664,7 @@ function SelectedGradient({ gradientId, onReset }) {
10546
10664
  }) : null]
10547
10665
  });
10548
10666
  }
10549
- function BackgroundImageOptions({ capability, current, imagePoolStatus, onChoose, chooseFromClick }) {
10667
+ function BackgroundImageOptions({ editingSlot, capability, current, imagePoolStatus, onChoose, chooseFromClick }) {
10550
10668
  const mediaEditorContext = useMediaEditorOptional();
10551
10669
  const [mediaPickerOpenKey, setMediaPickerOpenKey] = useState(0);
10552
10670
  if (!capability.modes.includes("image")) return null;
@@ -10561,18 +10679,19 @@ function BackgroundImageOptions({ capability, current, imagePoolStatus, onChoose
10561
10679
  className: "space-y-1",
10562
10680
  children: images.map((item) => /* @__PURE__ */ jsx(ImagePoolButton, {
10563
10681
  item,
10564
- selected: current.mediaId === item.mediaId,
10682
+ selected: current.reference.identifier === item.reference.identifier,
10565
10683
  thumbnailUrl: backgroundImagePreviewUrl(item, mediaEditorContext),
10566
10684
  onClick: chooseFromClick({
10567
10685
  kind: "image",
10568
- mediaId: item.mediaId
10686
+ reference: item.reference
10569
10687
  })
10570
- }, `${item.source}:${item.mediaId}`))
10688
+ }, `${item.source}:${item.reference.identifier}`))
10571
10689
  }) : /* @__PURE__ */ jsx("p", {
10572
10690
  className: "text-xs text-muted-foreground",
10573
10691
  children: imagePoolStatus === "loading" ? "Loading images..." : "No background-ready images yet."
10574
10692
  }),
10575
10693
  mediaPickerOpenKey > 0 && mediaEditorContext ? /* @__PURE__ */ jsx(BackgroundMediaPicker, {
10694
+ editingSlot,
10576
10695
  openKey: mediaPickerOpenKey,
10577
10696
  onChoose,
10578
10697
  onDone: () => setMediaPickerOpenKey(0)
@@ -10618,19 +10737,21 @@ function ImagePoolButton({ item, selected, thumbnailUrl, onClick }) {
10618
10737
  })
10619
10738
  });
10620
10739
  }
10621
- function BackgroundMediaPicker({ openKey, onChoose, onDone }) {
10740
+ function BackgroundMediaPicker({ editingSlot, openKey, onChoose, onDone }) {
10741
+ const mediaEditorContext = useMediaEditorOptional();
10622
10742
  const chooseMediaValue = (value) => {
10623
- const selectedImage = selectedImageFromMediaValue(value);
10743
+ const selectedImage = selectedImageFromMediaValue(value, mediaEditorContext?.imageResolveContext.mediaAssetIndex);
10624
10744
  if (!selectedImage) return;
10625
10745
  onChoose({
10626
10746
  kind: "image",
10627
- mediaId: selectedImage.mediaId
10747
+ reference: selectedImage.reference
10628
10748
  }, { selectedImage });
10629
10749
  onDone();
10630
10750
  };
10631
10751
  return /* @__PURE__ */ jsx("div", {
10632
10752
  onClick: (event) => event.stopPropagation(),
10633
10753
  children: /* @__PURE__ */ jsx(MediaEditor, {
10754
+ editingSlot,
10634
10755
  value: void 0,
10635
10756
  onChange: chooseMediaValue,
10636
10757
  allowedKinds: ["image"],
@@ -10644,10 +10765,11 @@ function BackgroundMediaPicker({ openKey, onChoose, onDone }) {
10644
10765
  },
10645
10766
  onUploadComplete: (asset) => {
10646
10767
  if (backgroundMediaPickerAssetSelection(asset).tag === "disabled") return;
10768
+ const selectedImage = selectedImageFromRenderableAsset(asset);
10647
10769
  onChoose({
10648
10770
  kind: "image",
10649
- mediaId: asset.id
10650
- }, { selectedImage: selectedImageFromRenderableAsset(asset) });
10771
+ reference: selectedImage.reference
10772
+ }, { selectedImage });
10651
10773
  onDone();
10652
10774
  }
10653
10775
  }, openKey)
@@ -10673,7 +10795,7 @@ function BackgroundPreviewSwatch({ override, imagePool }) {
10673
10795
  style: { backgroundImage: gradientPreviewCss(override.gradientId) }
10674
10796
  });
10675
10797
  case "image":
10676
- const imageItem = imagePool.find((item) => item.mediaId === override.mediaId);
10798
+ const imageItem = imagePool.find((item) => item.reference.identifier === override.reference.identifier);
10677
10799
  const thumbnailUrl = imageItem ? backgroundImagePreviewUrl(imageItem, mediaEditorContext) : void 0;
10678
10800
  return /* @__PURE__ */ jsx("span", {
10679
10801
  className: `${baseClassName} bg-muted`,
@@ -10690,13 +10812,7 @@ function backgroundImagePreviewUrl(item, mediaEditorContext) {
10690
10812
  if (!asset) return void 0;
10691
10813
  return resolveImageUrlWithContext({
10692
10814
  type: "image",
10693
- assetId: asset.id,
10694
- ...asset.identifier ? { identifier: asset.identifier } : {},
10695
- storageBucket: asset.storageBucket,
10696
- storagePath: asset.storagePath,
10697
- ...asset.width != null ? { width: asset.width } : {},
10698
- ...asset.height != null ? { height: asset.height } : {},
10699
- mimeType: asset.mimeType
10815
+ asset
10700
10816
  }, {
10701
10817
  width: 72,
10702
10818
  height: 48,
@@ -10790,7 +10906,7 @@ function BlockToolbar({ blockId, blockKind, content, bookingOfferingPresets, the
10790
10906
  const backgroundCycleImagePool = useMemo(() => {
10791
10907
  if (currentBackground.kind === "supported" && currentBackground.override.kind === "image") {
10792
10908
  const currentOverride = currentBackground.override;
10793
- if (!backgroundImagePool.some((item) => item.mediaId === currentOverride.mediaId)) return rankBackgroundImagePoolItems(dedupeBackgroundImagePool([...imagePoolForOverride(currentOverride), ...backgroundImagePool]));
10909
+ if (!backgroundImagePool.some((item) => item.reference.identifier === currentOverride.reference.identifier)) return rankBackgroundImagePoolItems(dedupeBackgroundImagePool([...imagePoolForOverride(currentOverride), ...backgroundImagePool]));
10794
10910
  }
10795
10911
  return rankBackgroundImagePoolItems(backgroundImagePool);
10796
10912
  }, [backgroundImagePool, currentBackground]);
@@ -10977,6 +11093,10 @@ function BlockToolbar({ blockId, blockKind, content, bookingOfferingPresets, the
10977
11093
  popover.toggle(e);
10978
11094
  };
10979
11095
  const blockTitle = formatBlockKindLabel$1(blockKind);
11096
+ const blockName = /* @__PURE__ */ jsx(BlockNamePill, {
11097
+ phone: selection.phone,
11098
+ label: blockTitle
11099
+ });
10980
11100
  const editButton = /* @__PURE__ */ jsx("button", {
10981
11101
  type: "button",
10982
11102
  onClick: handleEdit,
@@ -10998,6 +11118,7 @@ function BlockToolbar({ blockId, blockKind, content, bookingOfferingPresets, the
10998
11118
  enabledBackgroundModeList,
10999
11119
  handleBackgroundCycle,
11000
11120
  imagePoolStatus: backgroundImagePoolStatus,
11121
+ editingSlot: `${blockId}:_sectionStyles.background.image`,
11001
11122
  mergedBackgroundImagePool,
11002
11123
  onChooseBackgroundOverride: chooseBackgroundOverride,
11003
11124
  onToggleBackgroundChooser: () => setBackgroundChooserOpen((open) => !open)
@@ -11013,16 +11134,18 @@ function BlockToolbar({ blockId, blockKind, content, bookingOfferingPresets, the
11013
11134
  });
11014
11135
  return /* @__PURE__ */ jsx(BlockToolbarFrame, {
11015
11136
  selection,
11016
- blockTitle,
11017
11137
  placement,
11018
11138
  forceVisible: popover.open,
11019
11139
  controls: arrangementToolbar ? /* @__PURE__ */ jsx(ArrangementControlsRow, {
11020
11140
  toolbar: arrangementToolbar,
11141
+ blockName,
11021
11142
  blockTitle,
11022
11143
  popover,
11023
11144
  onToggleOptions: toggleCustomize,
11024
11145
  editButton
11025
11146
  }) : /* @__PURE__ */ jsx(LegacyControlsRow, {
11147
+ blockName,
11148
+ blockTitle,
11026
11149
  popover,
11027
11150
  showCustomise: hasCustomizeControls,
11028
11151
  onToggleCustomise: toggleCustomize,
@@ -11040,7 +11163,7 @@ function BlockToolbar({ blockId, blockKind, content, bookingOfferingPresets, the
11040
11163
  * Where a block's controls go: floating with the block on wider screens, or
11041
11164
  * in one dock above the toolbar on a phone (only for the selected section).
11042
11165
  */
11043
- function BlockToolbarFrame({ selection, blockTitle, placement, forceVisible, controls, popoverPanel }) {
11166
+ function BlockToolbarFrame({ selection, placement, forceVisible, controls, popoverPanel }) {
11044
11167
  const dock = selection.phone && selection.selected;
11045
11168
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
11046
11169
  /* @__PURE__ */ jsx("span", {
@@ -11048,7 +11171,6 @@ function BlockToolbarFrame({ selection, blockTitle, placement, forceVisible, con
11048
11171
  "aria-hidden": "true",
11049
11172
  style: { display: "contents" }
11050
11173
  }),
11051
- selection.selected ? /* @__PURE__ */ jsx(SelectedBlockOutline, { label: blockTitle }) : null,
11052
11174
  dock ? /* @__PURE__ */ jsxs(PhoneBlockDock, {
11053
11175
  themeSource: selection.blockElement,
11054
11176
  children: [controls, popoverPanel]
@@ -11069,17 +11191,31 @@ function BlockToolbarFrame({ selection, blockTitle, placement, forceVisible, con
11069
11191
  })
11070
11192
  ] });
11071
11193
  }
11072
- function LegacyControlsRow({ popover, showCustomise, onToggleCustomise, editButton }) {
11194
+ /** Quiet block identity beside either toolbar's controls, omitted in the phone dock. */
11195
+ function BlockNamePill({ phone, label }) {
11196
+ if (phone) return null;
11197
+ return /* @__PURE__ */ jsx("span", {
11198
+ className: "shrink-0 rounded-full bg-background/95 px-2.5 py-1 text-xs text-muted-foreground",
11199
+ children: label
11200
+ });
11201
+ }
11202
+ function LegacyControlsRow({ blockName, blockTitle, popover, showCustomise, onToggleCustomise, editButton }) {
11073
11203
  return /* @__PURE__ */ jsxs("div", {
11074
- className: "flex gap-1",
11204
+ role: "group",
11205
+ "aria-label": `${blockTitle} controls`,
11206
+ className: "flex items-center gap-1",
11075
11207
  "data-preview-chrome-row": "",
11076
- children: [showCustomise ? /* @__PURE__ */ jsx(CustomizePillButton, {
11077
- buttonRef: popover.buttonRef,
11078
- ariaLabel: "Customise",
11079
- open: popover.open,
11080
- controlsId: popover.panelId,
11081
- onClick: onToggleCustomise
11082
- }) : null, editButton]
11208
+ children: [
11209
+ blockName,
11210
+ showCustomise ? /* @__PURE__ */ jsx(CustomizePillButton, {
11211
+ buttonRef: popover.buttonRef,
11212
+ ariaLabel: "Customise",
11213
+ open: popover.open,
11214
+ controlsId: popover.panelId,
11215
+ onClick: onToggleCustomise
11216
+ }) : null,
11217
+ editButton
11218
+ ]
11083
11219
  });
11084
11220
  }
11085
11221
  function QuickManifestFields({ fields, backend, blockKind, bookingOfferingPresets }) {
@@ -11099,17 +11235,6 @@ function QuickManifestFields({ fields, backend, blockKind, bookingOfferingPreset
11099
11235
  })
11100
11236
  });
11101
11237
  }
11102
- /** A solid outline and the section's name on the selected block. */
11103
- function SelectedBlockOutline({ label }) {
11104
- return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
11105
- "aria-hidden": "true",
11106
- "data-preview-selected-block": "",
11107
- className: "pointer-events-none absolute inset-0 z-[40] outline outline-2 -outline-offset-2 outline-sky-600"
11108
- }), /* @__PURE__ */ jsx("span", {
11109
- className: "pointer-events-none absolute bottom-2 left-2 z-[40] rounded bg-sky-600 px-1.5 py-0.5 text-[11px] font-medium text-white",
11110
- children: label
11111
- })] });
11112
- }
11113
11238
  /** On a phone the selected section's controls sit in one dock above the toolbar. */
11114
11239
  function PhoneBlockDock({ themeSource, children }) {
11115
11240
  if (typeof document === "undefined") return null;
@@ -11207,6 +11332,7 @@ function renderBlockCustomizeBuiltinRow(row, context) {
11207
11332
  context.onToggleBackgroundChooser();
11208
11333
  },
11209
11334
  chooser: /* @__PURE__ */ jsx(BackgroundChooser, {
11335
+ editingSlot: context.editingSlot,
11210
11336
  capability: context.backgroundCapability,
11211
11337
  current: context.currentBackground.override,
11212
11338
  imagePoolStatus: context.imagePoolStatus,
@@ -11300,7 +11426,7 @@ function backgroundOverrideValueLabel(override, imagePool) {
11300
11426
  case "default": return "No colour chosen";
11301
11427
  case "color": return formatTokenLabel(override.token);
11302
11428
  case "gradient": return gradientLabel(override.gradientId);
11303
- case "image": return imagePool.find((item) => item.mediaId === override.mediaId)?.label ?? "Image";
11429
+ case "image": return imagePool.find((item) => item.reference.identifier === override.reference.identifier)?.label ?? "Image";
11304
11430
  }
11305
11431
  }
11306
11432
  function backgroundModeLabel(mode) {
@@ -11322,24 +11448,21 @@ function readBackgroundColorPaletteSnapshot() {
11322
11448
  return entries.length > 0 ? Object.fromEntries(entries) : null;
11323
11449
  }
11324
11450
  function dedupeBackgroundImagePool(items) {
11325
- const seen = /* @__PURE__ */ new Set();
11326
- const deduped = [];
11327
- for (const item of items) {
11328
- if (seen.has(item.mediaId)) {
11329
- const existingIndex = deduped.findIndex((candidate) => candidate.mediaId === item.mediaId);
11330
- const existing = deduped[existingIndex];
11331
- if (existing && !existing.mediaAsset && item.mediaAsset) deduped[existingIndex] = {
11332
- ...existing,
11333
- mediaAsset: item.mediaAsset,
11334
- label: existing.label ?? item.label,
11335
- rank: existing.rank ?? item.rank
11336
- };
11337
- continue;
11338
- }
11339
- seen.add(item.mediaId);
11340
- deduped.push(item);
11341
- }
11342
- return deduped;
11451
+ return Array.from(items.reduce((pool, item) => {
11452
+ const key = item.reference.identifier;
11453
+ const existing = pool.get(key);
11454
+ const decided = existing ? existing.source === "current" ? {
11455
+ ...existing,
11456
+ mediaAsset: existing.mediaAsset ?? item.mediaAsset,
11457
+ label: existing.label ?? item.label,
11458
+ rank: existing.rank ?? item.rank
11459
+ } : {
11460
+ ...existing,
11461
+ label: existing.label ?? item.label,
11462
+ rank: existing.rank ?? item.rank
11463
+ } : item;
11464
+ return new Map([...pool, [key, decided]]);
11465
+ }, /* @__PURE__ */ new Map()).values());
11343
11466
  }
11344
11467
  //#endregion
11345
11468
  //#region ../preview-next/src/client/blocks/BoundaryControl.tsx