@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
@@ -0,0 +1,6 @@
1
+ import type { ThemeFooter } from '../../../../../theme-core/src/schema';
2
+ import { type TransformDefinition } from './core';
3
+ export declare const footerBrandArrangementTransform: TransformDefinition;
4
+ export declare const footerModuleInkStyleTransform: TransformDefinition;
5
+ /** A centred base without authored bar paint inherits its measured surface line. */
6
+ export declare function footerBottomBarBorderColorStyle(footer: Partial<ThemeFooter> | undefined): import("react").CSSProperties;
@@ -13,3 +13,4 @@ export declare const defaultTransforms: import("./core").TransformRegistry;
13
13
  export { boxStyleClassNames } from "./_utils/boxStyleClassNames";
14
14
  export { formattingTransforms, layoutTransforms, chromeLogoTransforms, uiTransforms, mediaTransforms, backgroundTransforms, linksTransforms, boxStylesTransforms, contentTransforms, headerRuntimeTransforms, };
15
15
  export { resolveAuthoredLinkHref } from './links';
16
+ export type { LinkResolverContext } from '../../links/resolve';
@@ -63,20 +63,9 @@ declare const footerBottomBarContainerClassSchema: z.ZodObject<{
63
63
  }, z.core.$strip>;
64
64
  export declare const footerBottomBarContainerClassTransform: TransformDefinition<z.infer<typeof footerBottomBarContainerClassSchema>>;
65
65
  export declare const footerBottomBarStyleTransform: TransformDefinition;
66
- declare const footerSplitMainClassSchema: z.ZodObject<{
67
- base: z.ZodOptional<z.ZodString>;
68
- reverseClass: z.ZodOptional<z.ZodString>;
69
- }, z.core.$strip>;
70
- export declare const footerSplitMainClassTransform: TransformDefinition<z.infer<typeof footerSplitMainClassSchema>>;
71
66
  declare const footerLogoClassSchema: z.ZodObject<{
72
67
  base: z.ZodOptional<z.ZodString>;
73
- requireExplicitShow: z.ZodOptional<z.ZodBoolean>;
74
68
  }, z.core.$strip>;
75
69
  export declare const footerLogoClassTransform: TransformDefinition<z.infer<typeof footerLogoClassSchema>>;
76
- declare const footerLogoMediaClassSchema: z.ZodObject<{
77
- base: z.ZodOptional<z.ZodString>;
78
- }, z.core.$strip>;
79
- export declare const footerLogoMediaClassTransform: TransformDefinition<z.infer<typeof footerLogoMediaClassSchema>>;
80
- export declare const footerLogoTextVisibleTransform: TransformDefinition;
81
70
  export declare const layoutTransforms: TransformDefinition[];
82
71
  export {};
@@ -1,6 +1,6 @@
1
- import type { TransformContext, TransformDefinition } from "./core";
2
- export type LinkResolutionContext = Pick<TransformContext, 'routes' | 'pagesByIdentifier' | 'entriesByIdentifier' | 'stage'>;
1
+ import type { TransformDefinition } from "./core";
2
+ import { type LinkResolverContext } from "../../links/resolve";
3
3
  export declare const resolveLinkTransform: TransformDefinition;
4
4
  export declare const linkLabelTransform: TransformDefinition;
5
5
  export declare const linksTransforms: TransformDefinition[];
6
- export declare function resolveAuthoredLinkHref(value: unknown, context?: LinkResolutionContext): string | null;
6
+ export declare function resolveAuthoredLinkHref(value: unknown, context?: LinkResolverContext): string | null;
@@ -47,18 +47,9 @@ export declare const transformDefinitions: {
47
47
  contained?: string | undefined;
48
48
  }>;
49
49
  readonly 'layout.footerBottomBarStyle': TransformDefinition;
50
- readonly 'layout.footerSplitMainClass': TransformDefinition<{
51
- base?: string | undefined;
52
- reverseClass?: string | undefined;
53
- }>;
54
50
  readonly 'layout.footerLogoClass': TransformDefinition<{
55
51
  base?: string | undefined;
56
- requireExplicitShow?: boolean | undefined;
57
- }>;
58
- readonly 'layout.footerLogoMediaClass': TransformDefinition<{
59
- base?: string | undefined;
60
52
  }>;
61
- readonly 'layout.footerLogoTextVisible': TransformDefinition;
62
53
  readonly 'ui.headingClassFromAlignment': TransformDefinition<{
63
54
  base: string;
64
55
  }>;
@@ -123,7 +114,7 @@ export declare function bindProp(from: string, opts?: {
123
114
  readonly $bind: {
124
115
  readonly pick?: "value" | "context" | "collection" | undefined;
125
116
  readonly fallback?: {} | null | undefined;
126
- readonly transforms?: TransformStep<"string.uppercase" | "value.fallback" | "date.formatShort" | "value.csv" | "layout.maxWidthClass" | "layout.headerRootClass" | "layout.footerRootClass" | "layout.headerRootStyle" | "layout.headerSectionBackground" | "layout.footerRootStyle" | "ui.headerNavLinkClass" | "ui.headingClassFromAlignment" | "ui.bodyClassFromAlignment" | "ui.stackAlignFromAlignment" | "ui.sectionStateTone" | "ui.heroContentWrapperClass" | "ui.heroCtaJustify" | "ui.heroStackJustifyFromVerticalAlignment" | "ui.heroGridClassFromVerticalAlignment" | "ui.conditionalClass" | "ui.twoColumnContainerClass" | "ui.twoColumnFlexBasis" | "media.fromUrl" | "content.interpolateRichTextTokens" | "boxStyles.semanticGap" | "boxStyles.semanticGapValue" | "layout.headerLogoClass" | "layout.headerLogoMediaClass" | "layout.headerLogoTextVisible" | "layout.footerBottomBarClass" | "layout.footerBottomBarContainerClass" | "layout.footerBottomBarStyle" | "layout.footerSplitMainClass" | "layout.footerLogoClass" | "layout.footerLogoMediaClass" | "layout.footerLogoTextVisible" | "layout.chromeLogo" | "layout.headerRuntimeContract">[] | undefined;
117
+ readonly transforms?: TransformStep<"string.uppercase" | "value.fallback" | "date.formatShort" | "value.csv" | "layout.maxWidthClass" | "layout.headerRootClass" | "layout.footerRootClass" | "layout.headerRootStyle" | "layout.headerSectionBackground" | "layout.footerRootStyle" | "ui.headerNavLinkClass" | "ui.headingClassFromAlignment" | "ui.bodyClassFromAlignment" | "ui.stackAlignFromAlignment" | "ui.sectionStateTone" | "ui.heroContentWrapperClass" | "ui.heroCtaJustify" | "ui.heroStackJustifyFromVerticalAlignment" | "ui.heroGridClassFromVerticalAlignment" | "ui.conditionalClass" | "ui.twoColumnContainerClass" | "ui.twoColumnFlexBasis" | "media.fromUrl" | "content.interpolateRichTextTokens" | "boxStyles.semanticGap" | "boxStyles.semanticGapValue" | "layout.headerLogoClass" | "layout.headerLogoMediaClass" | "layout.headerLogoTextVisible" | "layout.footerBottomBarClass" | "layout.footerBottomBarContainerClass" | "layout.footerBottomBarStyle" | "layout.footerLogoClass" | "layout.chromeLogo" | "layout.headerRuntimeContract">[] | undefined;
127
118
  readonly from: string;
128
119
  };
129
120
  };
@@ -94,6 +94,7 @@ export type OrderConfirmationSettlement = Readonly<{
94
94
  export type OrderConfirmationFormatters = Readonly<{
95
95
  formatCurrencyAmount: (amountCents: number, currency: string) => string;
96
96
  formatDateTime: (isoString: string) => string;
97
+ formatPaymentDueDate: (isoString: string) => string;
97
98
  formatInstalmentStatusLabel: (row: OrderInstalmentSummary['rows'][number]) => string;
98
99
  resolveCustomerDisplayName: (name: string | null, email: string) => string;
99
100
  }>;
@@ -1,4 +1,4 @@
1
- import { type FooterCompositionV1, type FooterNavigationLayout } from '../../core/src/index';
1
+ import { type FooterCompositionV1, type FooterArrangement, type FooterNavigationLayout } from '../../core/src/index';
2
2
  import type { FooterAttribution, FooterRuntimeViewModel } from '../../blocks/src/client/site-chrome';
3
3
  import { type FooterEditorTarget, type planFooterEditorView } from './footerComposer';
4
4
  import type { SaveState } from './useFooterComposerState';
@@ -9,7 +9,7 @@ export declare function SaveBadge({ state }: {
9
9
  export declare function FooterPreview({ runtime, }: {
10
10
  runtime: FooterRuntimeViewModel;
11
11
  }): import("react").JSX.Element;
12
- export declare function FooterOverview({ attribution, plan, composition, onTarget, onChange, manageLinksHref, manageSettingsHref, navigationLayout, onEngagement, onNavigationLayoutChange, }: {
12
+ export declare function FooterOverview({ attribution, plan, composition, onTarget, onChange, manageLinksHref, manageSettingsHref, navigationLayout, arrangement, onEngagement, onNavigationLayoutChange, navigationLayoutPending, navigationLayoutDisabled, }: {
13
13
  attribution: FooterAttribution | null;
14
14
  plan: FooterPlan;
15
15
  composition: FooterCompositionV1;
@@ -18,7 +18,10 @@ export declare function FooterOverview({ attribution, plan, composition, onTarge
18
18
  manageLinksHref: string;
19
19
  manageSettingsHref: string;
20
20
  navigationLayout: FooterNavigationLayout;
21
+ arrangement?: FooterArrangement;
21
22
  onEngagement: () => void;
23
+ navigationLayoutPending?: boolean;
24
+ navigationLayoutDisabled?: boolean;
22
25
  onNavigationLayoutChange?: (layout: FooterNavigationLayout) => void;
23
26
  }): import("react").JSX.Element;
24
27
  export {};
@@ -1,3 +1,3 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import type { FooterComposerPanelProps } from './footerComposerPanelTypes';
3
- export declare function FooterComposerPanel({ apiClient, siteId: rawSiteId, customFooterMode, manageLinksHref, manageFormsHref, manageNewsletterHref, manageSettingsHref, legalRegion, navigationLayoutAccess, initialTarget, initialTargetRequestId, variant, canEdit, onSaved, loadingFallback, }: FooterComposerPanelProps): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react").JSX.Element | null | undefined;
3
+ export declare function FooterComposerPanel({ apiClient, siteId: rawSiteId, customFooterMode, manageLinksHref, manageFormsHref, manageNewsletterHref, manageSettingsHref, arrangement, legalRegion, navigationLayoutAccess, initialTarget, initialTargetRequestId, variant, canEdit, onSaved, loadingFallback, }: FooterComposerPanelProps): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react").JSX.Element | null | undefined;
@@ -1,5 +1,8 @@
1
- import type { FooterNavigationLayout } from '../../core/src/index';
2
- export declare function FooterNavigationLayoutControl({ value, onChange, }: Readonly<{
1
+ import type { FooterArrangement, FooterNavigationLayout } from '../../core/src/index';
2
+ export declare function FooterNavigationLayoutControl({ value, arrangement, onChange, pending, disabled, }: Readonly<{
3
+ pending?: boolean;
4
+ disabled?: boolean;
5
+ arrangement?: FooterArrangement;
3
6
  value: FooterNavigationLayout;
4
7
  onChange: (layout: FooterNavigationLayout) => void;
5
- }>): import("react").JSX.Element;
8
+ }>): import("react").JSX.Element | null;
@@ -24,7 +24,7 @@ export type LeaseParticipationKind = ClassifiedParticipation['kind'];
24
24
  export declare function classifyLeaseParticipation(participation: EditorLeaseParticipation): ClassifiedParticipation;
25
25
  export declare function leaseConfigOf(participation: EditorLeaseParticipation): EditorLeaseConfig | null;
26
26
  /** Viewing and leased mounts share one store identity, so switching between them keeps local edits. */
27
- export declare function leaseExemptionOf(participation: EditorLeaseParticipation): "team-member-profile" | "sdk" | null;
27
+ export declare function leaseExemptionOf(participation: EditorLeaseParticipation): "sdk" | "team-member-profile" | null;
28
28
  export declare function initialParticipationEditability(participation: EditorLeaseParticipation): EditorEditability;
29
29
  /**
30
30
  * The store's editability after the mount's participation changes. A lease controller owns
@@ -1,4 +1,4 @@
1
- import { type FooterArrangementPlan, type FooterCompositionV1, type FooterModuleId, type FooterNavigationRole, type FooterNavigationLayout, type FooterSection, type PublicProfile } from '../../core/src/index';
1
+ import { type FooterArrangement, type FooterArrangementPlan, type FooterCompositionV1, type FooterModuleId, type FooterNavigationRole, type FooterNavigationLayout, type FooterSection, type PublicProfile } from '../../core/src/index';
2
2
  export type FooterEditorTarget = Readonly<{
3
3
  kind: 'overview';
4
4
  }> | Readonly<{
@@ -52,6 +52,7 @@ type FooterEditorViewPlanInput = Readonly<{
52
52
  hasLegalPolicyNavigation?: boolean;
53
53
  hasEngagementSource?: boolean;
54
54
  canEdit: boolean;
55
+ arrangement?: FooterArrangement;
55
56
  legalRegion?: 'integrated' | 'separate';
56
57
  navigationLayout?: FooterNavigationLayout;
57
58
  }>;
@@ -1,15 +1,17 @@
1
+ import type { FooterArrangement } from '../../core/src/index';
1
2
  import type { ReactNode } from 'react';
2
3
  import type { ApiClient } from '../../api/src/request';
3
4
  import type { FooterEditorTarget } from './footerComposer';
4
5
  import type { FooterNavigationLayoutAccess } from './useFooterNavigationLayout';
5
6
  export type FooterComposerPanelProps = Readonly<{
6
- apiClient: ApiClient<'getFooterComposition' | 'updateFooterComposition' | 'getPublicProfile' | 'updatePublicProfile' | 'getNavigationMenus' | 'getMailingListAuthoringContext' | 'listForms' | 'applySiteStyleSelection'>;
7
+ apiClient: ApiClient<'getFooterComposition' | 'updateFooterComposition' | 'getPublicProfile' | 'updatePublicProfile' | 'getNavigationMenus' | 'getMailingListAuthoringContext' | 'listForms' | 'applySiteStyleSelection' | 'getSite'>;
7
8
  siteId: string;
8
9
  customFooterMode: 'default' | 'blocks' | 'default+blocks' | 'none';
9
10
  manageLinksHref: string;
10
11
  manageFormsHref?: string;
11
12
  manageNewsletterHref?: string;
12
13
  manageSettingsHref: string;
14
+ arrangement?: FooterArrangement;
13
15
  legalRegion?: 'integrated' | 'separate';
14
16
  navigationLayoutAccess?: FooterNavigationLayoutAccess;
15
17
  initialTarget?: FooterEditorTarget;
@@ -0,0 +1,56 @@
1
+ import type { FooterNavigationLayout } from '../../core/src/index';
2
+ export type FooterNavigationSnapshot = Readonly<{
3
+ siteId: string;
4
+ selectionId: string | null;
5
+ selectionVersion: number;
6
+ layout: FooterNavigationLayout;
7
+ editable: boolean;
8
+ }>;
9
+ export type FooterNavigationRequest = Readonly<{
10
+ snapshot: FooterNavigationSnapshot;
11
+ layout: FooterNavigationLayout;
12
+ }>;
13
+ export type FooterNavigationState = Readonly<{
14
+ source: FooterNavigationSnapshot;
15
+ confirmed: FooterNavigationSnapshot;
16
+ }> & (Readonly<{
17
+ kind: 'ready';
18
+ }> | Readonly<{
19
+ kind: 'saving';
20
+ request: FooterNavigationRequest;
21
+ }> | Readonly<{
22
+ kind: 'reload-failed';
23
+ }>);
24
+ export type FooterNavigationEvent = Readonly<{
25
+ kind: 'confirmed';
26
+ request: FooterNavigationRequest;
27
+ snapshot: FooterNavigationSnapshot;
28
+ }> | Readonly<{
29
+ kind: 'failed' | 'reload-failed';
30
+ request: FooterNavigationRequest;
31
+ }>;
32
+ export declare function refreshFooterNavigation(state: FooterNavigationState, source: FooterNavigationSnapshot): FooterNavigationState;
33
+ /** The controller hands the effect shell an admitted request and its pending state together. */
34
+ export declare function beginFooterNavigationSave(state: FooterNavigationState, layout: FooterNavigationLayout): {
35
+ readonly kind: "blocked";
36
+ readonly request?: undefined;
37
+ readonly state?: undefined;
38
+ } | {
39
+ readonly kind: "save";
40
+ readonly request: Readonly<{
41
+ snapshot: FooterNavigationSnapshot;
42
+ layout: FooterNavigationLayout;
43
+ }>;
44
+ readonly state: {
45
+ readonly kind: "saving";
46
+ readonly request: Readonly<{
47
+ snapshot: FooterNavigationSnapshot;
48
+ layout: FooterNavigationLayout;
49
+ }>;
50
+ readonly source: FooterNavigationSnapshot;
51
+ readonly confirmed: FooterNavigationSnapshot;
52
+ };
53
+ };
54
+ /** Only the admitted request can finish; a newer refreshed revision wins. */
55
+ export declare function transitionFooterNavigation(state: FooterNavigationState, event: FooterNavigationEvent): FooterNavigationState;
56
+ export declare function footerNavigationLayoutValue(state: FooterNavigationState): FooterNavigationLayout;
@@ -1,5 +1,5 @@
1
1
  import { type FooterAttribution, type FooterResolvedEngagement, type FooterRuntimeViewModel } from '../../blocks/src/client/site-chrome';
2
- import type { FooterCompositionV1, FooterNavigationLayout, PublicProfile } from '../../core/src/index';
2
+ import type { FooterCompositionV1, FooterArrangement, FooterNavigationLayout, PublicProfile } from '../../core/src/index';
3
3
  export type FooterPreviewRuntimeInput = Readonly<{
4
4
  composition: FooterCompositionV1;
5
5
  publicProfile: PublicProfile;
@@ -7,6 +7,7 @@ export type FooterPreviewRuntimeInput = Readonly<{
7
7
  hasLogo: boolean;
8
8
  hasMainNavigation: boolean;
9
9
  hasLegalPolicyNavigation: boolean;
10
+ arrangement?: FooterArrangement;
10
11
  legalRegion: 'integrated' | 'separate';
11
12
  navigationLayout: FooterNavigationLayout;
12
13
  engagement: FooterResolvedEngagement;
@@ -18,10 +18,9 @@ export declare function useFooterComposerState({ apiClient, canEdit, initialTarg
18
18
  message: string | null;
19
19
  navigationLayoutControl: {
20
20
  readonly layout: "stack" | "inline-wrap";
21
- readonly onChange: undefined;
22
- } | {
23
- readonly layout: "stack" | "inline-wrap";
24
- readonly onChange: (next: import("../../core/src/index").FooterNavigationLayout) => Promise<void>;
21
+ readonly pending: boolean;
22
+ readonly disabled: boolean;
23
+ readonly onChange: ((layout: import("../../core/src/index").FooterNavigationLayout) => Promise<void>) | undefined;
25
24
  };
26
25
  saveComposition: (next: FooterCompositionV1, optimistic?: boolean) => Promise<CompositionSaveOutcome>;
27
26
  saveProfile: (next: PublicProfile) => Promise<void>;
@@ -1,4 +1,5 @@
1
- import type { ApiClient } from '../../api/src/request';
1
+ import type { FooterPreferences } from '../../theme-core/src/site-styles/index';
2
+ import { type ApiClient } from '../../api/src/request';
2
3
  import type { Theme } from '../../blocks/src/index';
3
4
  import { type FooterNavigationLayout } from '../../core/src/index';
4
5
  export type FooterSaveState = 'idle' | 'saving' | 'saved' | 'conflict' | 'failed';
@@ -7,20 +8,22 @@ export type FooterNavigationLayoutAccess = Readonly<{
7
8
  }> | Readonly<{
8
9
  kind: 'editable';
9
10
  theme: Theme;
11
+ preferences: FooterPreferences;
10
12
  selectionId: string | null;
11
13
  selectionVersion: number;
12
14
  }>;
13
- export declare function useFooterNavigationLayout({ apiClient, siteId, access, onSaved, onSaveStateChange, onMessageChange, }: Readonly<{
14
- apiClient: ApiClient<'applySiteStyleSelection'>;
15
+ type Options = Readonly<{
16
+ apiClient: ApiClient<'applySiteStyleSelection' | 'getSite'>;
15
17
  siteId: string;
16
18
  access: FooterNavigationLayoutAccess;
17
19
  onSaved?: () => void;
18
20
  onSaveStateChange: (state: FooterSaveState) => void;
19
21
  onMessageChange: (message: string | null) => void;
20
- }>): {
21
- readonly layout: "stack" | "inline-wrap";
22
- readonly onChange: undefined;
23
- } | {
22
+ }>;
23
+ export declare function useFooterNavigationLayout(options: Options): {
24
24
  readonly layout: "stack" | "inline-wrap";
25
- readonly onChange: (next: FooterNavigationLayout) => Promise<void>;
25
+ readonly pending: boolean;
26
+ readonly disabled: boolean;
27
+ readonly onChange: ((layout: FooterNavigationLayout) => Promise<void>) | undefined;
26
28
  };
29
+ export {};
@@ -12,14 +12,14 @@ declare const BaseContentFieldSchema: z.ZodObject<{
12
12
  text: "text";
13
13
  group: "group";
14
14
  url: "url";
15
+ file: "file";
16
+ datetime: "datetime";
15
17
  textarea: "textarea";
16
18
  select: "select";
17
19
  media: "media";
18
20
  reference: "reference";
19
- repeater: "repeater";
20
- file: "file";
21
- datetime: "datetime";
22
21
  button: "button";
22
+ repeater: "repeater";
23
23
  richText: "richText";
24
24
  }>;
25
25
  label: z.ZodOptional<z.ZodString>;
@@ -64,3 +64,5 @@ export type AcceptedEventScheduleUpdate<TId extends string = string> = Readonly<
64
64
  }>;
65
65
  cancellationResult: BusinessCancellationResult;
66
66
  }>;
67
+ /** Narrow an already typed schedule-write response by its receipt discriminant. */
68
+ export declare function isAcceptedEventScheduleUpdate(response: object): response is AcceptedEventScheduleUpdate;
@@ -0,0 +1,85 @@
1
+ import { type BookingTimeZone, type LocalScheduleDate, type UtcIsoDateTimeString } from './booking-date-time';
2
+ /** Explicit business/viewer projection; never consults a clock or server locale. */
3
+ export type DisplayContext = Readonly<{
4
+ locale: string;
5
+ timeZone: BookingTimeZone;
6
+ }>;
7
+ export type DisplayDate = Readonly<{
8
+ kind: 'instant';
9
+ value: UtcIsoDateTimeString;
10
+ }> | Readonly<{
11
+ kind: 'civil';
12
+ value: LocalScheduleDate;
13
+ }>;
14
+ export type DateStyle = 'numeric' | 'short' | 'long';
15
+ export type ZoneLabel = 'omit' | 'always';
16
+ export type DisplayDateOptions = Readonly<{
17
+ date?: DateStyle;
18
+ weekday?: 'short' | 'long';
19
+ year?: 'numeric' | 'omit';
20
+ }>;
21
+ export type DisplayTimeOptions = Readonly<{
22
+ zone: ZoneLabel;
23
+ }>;
24
+ export type DisplayDateTimeOptions = DisplayDateOptions & DisplayTimeOptions;
25
+ export type DateTimeSpan = Readonly<{
26
+ start: UtcIsoDateTimeString;
27
+ end: UtcIsoDateTimeString;
28
+ }>;
29
+ export type BookingDisplayContext = Readonly<{
30
+ context: DisplayContext;
31
+ zone: ZoneLabel;
32
+ }>;
33
+ /** Site-language policy, shared by customer emails and public event adapters. */
34
+ export declare function inferSiteDateLocale(siteTimeZone: string | null | undefined): string;
35
+ /** Callers resolve the facts once; all clocks consume the same label decision. */
36
+ export declare function resolveBookingDisplayContext(input: Readonly<{
37
+ sessionTimeZone: BookingTimeZone;
38
+ siteTimeZone: BookingTimeZone;
39
+ locale: string;
40
+ isOnline: boolean;
41
+ surface: 'email' | 'dashboard';
42
+ }>): BookingDisplayContext;
43
+ /** Internal adapter profile: SDK keeps its established native/custom typography. */
44
+ export type DatePresentationProfile = Readonly<{
45
+ kind: 'display';
46
+ dateFormat: Intl.DateTimeFormatOptions;
47
+ clock: Readonly<{
48
+ kind: 'compact';
49
+ localeSource: 'product' | 'context';
50
+ }>;
51
+ zone: ZoneLabel;
52
+ }> | Readonly<{
53
+ kind: 'sdk';
54
+ dateFormat: Intl.DateTimeFormatOptions;
55
+ clock: ClockPresentation;
56
+ zone: 'omit';
57
+ }>;
58
+ /** Public SDK option policy lives beside the display profile, never in its adapter. */
59
+ export declare function sdkPresentationProfile(context: DisplayContext, dateFormat: Intl.DateTimeFormatOptions, time?: Readonly<{
60
+ timePresentation?: 'compact' | 'standard';
61
+ format?: Intl.DateTimeFormatOptions;
62
+ }>): DatePresentationProfile;
63
+ type ClockPresentation = Readonly<{
64
+ kind: 'compact';
65
+ localeSource: 'product' | 'context';
66
+ }> | Readonly<{
67
+ kind: 'intl';
68
+ format: Intl.DateTimeFormatOptions;
69
+ }>;
70
+ export declare function formatDate(value: DisplayDate, context: DisplayContext, options?: DisplayDateOptions): string;
71
+ export declare function formatDateRange(start: DisplayDate, endInclusive: DisplayDate, context: DisplayContext, options?: DisplayDateOptions): string;
72
+ export declare function formatDateTime(value: UtcIsoDateTimeString, context: DisplayContext, options: DisplayDateTimeOptions): string;
73
+ export declare function formatDateTimeRange(span: DateTimeSpan, context: DisplayContext, options: DisplayDateTimeOptions): string;
74
+ export declare function formatTime(value: UtcIsoDateTimeString, context: DisplayContext, options: DisplayTimeOptions): string;
75
+ export declare function formatTimeRange(start: UtcIsoDateTimeString, end: UtcIsoDateTimeString, context: DisplayContext, options: DisplayTimeOptions): string;
76
+ /** Sole date projection/typography owner, used by display and scheduled adapters. */
77
+ export declare function presentDate(value: DisplayDate, context: DisplayContext, profile: DatePresentationProfile): string;
78
+ export declare function presentDateRange(start: DisplayDate, end: DisplayDate, context: DisplayContext, profile: DatePresentationProfile): string;
79
+ export declare function presentTime(value: UtcIsoDateTimeString, context: DisplayContext, profile: DatePresentationProfile): string;
80
+ export declare function presentDateTime(value: UtcIsoDateTimeString, context: DisplayContext, profile: DatePresentationProfile): string;
81
+ export declare function presentTimeRange(span: DateTimeSpan, context: DisplayContext, profile: DatePresentationProfile): string;
82
+ export declare function presentDateTimeRange(span: DateTimeSpan, context: DisplayContext, profile: DatePresentationProfile): string;
83
+ export declare function formatTimeAgo(value: UtcIsoDateTimeString, now: UtcIsoDateTimeString, context: DisplayContext): string;
84
+ export declare function formatTimeUntil(value: UtcIsoDateTimeString, now: UtcIsoDateTimeString, context: DisplayContext): string;
85
+ export {};
@@ -0,0 +1,2 @@
1
+ export declare function getDateTimeFormatter(locale: string, timeZone: string, format: Intl.DateTimeFormatOptions): Intl.DateTimeFormat;
2
+ export declare function formatIntlRange(formatter: Intl.DateTimeFormat, start: Date, end: Date): string;
@@ -1,2 +1,9 @@
1
- import type { FooterArrangementPlan, FooterLookPolicy, RenderableFooterSection } from './footer-composition-types';
1
+ import type { FooterArrangement, FooterArrangementPlan, FooterLookPolicy, RenderableFooterSection } from './footer-composition-types';
2
+ import type { FooterNavigationLayout } from './footer-navigation-layout';
3
+ /** One policy owner for the served footer and its composition preview. */
4
+ export declare function footerArrangementPolicy(input: Readonly<{
5
+ arrangement?: FooterArrangement;
6
+ legalRegion?: 'integrated' | 'separate';
7
+ storedNavigationLayout?: FooterNavigationLayout | 'inline';
8
+ }>): FooterLookPolicy;
2
9
  export declare function planFooterArrangement(renderableSections: readonly RenderableFooterSection[], policy: FooterLookPolicy): FooterArrangementPlan;
@@ -56,20 +56,25 @@ export type FooterCompositionError = Readonly<{
56
56
  path: string;
57
57
  message: string;
58
58
  }>;
59
+ export type FooterArrangement = 'simple' | 'split' | 'centred';
60
+ export type FooterArrangementSlot = 'head' | 'navigation' | 'contact' | 'social' | 'panel' | 'base' | 'stack';
59
61
  export type FooterLookPolicy = Readonly<{
62
+ arrangement: FooterArrangement;
60
63
  kind: 'integrated-legal' | 'separate-legal-region';
61
64
  navigationLayout: FooterNavigationLayout;
62
65
  }>;
63
- export type FooterVisualGroupKind = 'identity' | 'main-navigation' | 'visit' | 'engagement' | 'legal-ending';
66
+ export type FooterVisualGroupKind = 'social' | 'identity' | 'main-navigation' | 'visit' | 'engagement' | 'legal-ending';
64
67
  export type FooterColumnCount = 1 | 2 | 3 | 4 | 5;
65
68
  export type FooterVisualGroup = Readonly<{
66
69
  kind: FooterVisualGroupKind;
67
70
  sections: readonly FooterSection[];
68
71
  width: 'column' | 'full-row';
72
+ slot?: FooterArrangementSlot;
69
73
  }>;
70
74
  export type FooterRenderRegion = Readonly<{
71
75
  kind: 'engagement-row' | 'main' | 'bottom';
72
76
  columns: FooterColumnCount;
77
+ slot?: FooterArrangementSlot;
73
78
  groups: readonly FooterVisualGroup[];
74
79
  }>;
75
80
  export type FooterArrangementPlan = Readonly<{
@@ -1,7 +1,7 @@
1
1
  import type { FooterCompositionError, FooterCompositionV1, FooterModuleId, FooterSection, FooterSourceAvailability, ResolvedFooterSection } from './footer-composition-types';
2
2
  import { type FooterEngagementSection } from './footer-engagement';
3
3
  import { type Result } from './result';
4
- export { planFooterArrangement } from './footer-arrangement';
4
+ export { planFooterArrangement, footerArrangementPolicy } from './footer-arrangement';
5
5
  export type * from './footer-composition-types';
6
6
  export declare function unsafeAsFooterModuleId(value: string): FooterModuleId;
7
7
  export declare function parseFooterModuleId(value: unknown): Result<FooterModuleId, FooterCompositionError>;
@@ -1,4 +1,7 @@
1
+ import type { FooterArrangement } from './footer-composition-types';
1
2
  export declare const footerNavigationLayouts: readonly ["stack", "inline-wrap"];
2
3
  export type FooterNavigationLayout = (typeof footerNavigationLayouts)[number];
3
4
  export declare const defaultFooterNavigationLayout: FooterNavigationLayout;
4
5
  export declare function normalizeFooterNavigationLayout(value: 'stack' | 'inline' | 'inline-wrap' | null | undefined): FooterNavigationLayout;
6
+ /** The arrangement chooses presentation; the stored preference remains intact. */
7
+ export declare function effectiveFooterNavigationLayout(arrangement: FooterArrangement, stored: FooterNavigationLayout): FooterNavigationLayout;
@@ -24,6 +24,8 @@ export * from './booking-live-payment-terms';
24
24
  export * from './booking-payment-options';
25
25
  export * from './appointment-booking-terms';
26
26
  export * from './booking-date-time';
27
+ export { formatDate, formatDateRange, formatDateTime, formatDateTimeRange, formatTime, formatTimeRange, formatTimeAgo, formatTimeUntil, inferSiteDateLocale, resolveBookingDisplayContext, type DisplayContext, type DisplayDate, type DateStyle, type ZoneLabel, type DisplayDateOptions, type DisplayTimeOptions, type DisplayDateTimeOptions, type DateTimeSpan, type BookingDisplayContext, } from './date-display';
28
+ export * from './scheduled-date-time';
27
29
  export * from './booking-consent';
28
30
  export * from './appointment-service-categories';
29
31
  export * from './dated-offering-settlement';
@@ -1,6 +1,6 @@
1
1
  import type { BrevoListId, MailchimpAudienceId, MailchimpInterestId } from './mailing-list-identifiers';
2
2
  import { type Result } from './result';
3
- import type { MailingListGlobalForm, MailingListSetupRevision, NativeMailingListTopicId } from './mailing-list-setup';
3
+ import type { MailingListGlobalForm, MailingListSetupRevision, NativeMailingListTopicId, NewsletterAudience } from './mailing-list-setup';
4
4
  export type MailingListRuntimeContext = Readonly<{
5
5
  tag: 'not_configured';
6
6
  }> | Readonly<{
@@ -12,7 +12,7 @@ export type MailingListRuntimeContext = Readonly<{
12
12
  }>;
13
13
  export type MailingListRuntimeProvider = Readonly<{
14
14
  provider: 'native';
15
- defaultTopicId: NativeMailingListTopicId;
15
+ defaultAudience: NewsletterAudience;
16
16
  topics: readonly Readonly<{
17
17
  id: NativeMailingListTopicId;
18
18
  name: string;
@@ -1,5 +1,12 @@
1
- import type { ConfiguredMailingListProvider, MailingListGlobalForm, MailingListSetupRevision, MailingListSiteSetup } from './mailing-list-setup';
1
+ import type { ConfiguredMailingListProvider, MailingListGlobalForm, MailingListSetupRevision, MailingListSiteSetup, NewsletterAudience } from './mailing-list-setup';
2
2
  import { type Result } from './result';
3
+ import { z } from 'zod';
4
+ export declare const newsletterAudienceSchema: z.ZodPipe<z.ZodUnknown, z.ZodTransform<Readonly<{
5
+ kind: "general";
6
+ }> | Readonly<{
7
+ kind: "topic";
8
+ topicId: import("./mailing-list-setup").NativeMailingListTopicId;
9
+ }>, unknown>>;
3
10
  export type MailingListSetupParseError = Readonly<{
4
11
  tag: 'invalid_mailing_list_setup';
5
12
  field: 'shape' | 'tag' | 'siteId' | 'revision' | 'form' | 'provider' | 'connectionId' | 'accountId' | 'defaultTargetId' | 'confirmation';
@@ -11,4 +18,5 @@ export type MailingListGlobalFormParseError = Readonly<{
11
18
  export declare function parseMailingListGlobalForm(value: unknown): Result<MailingListGlobalForm, MailingListGlobalFormParseError>;
12
19
  export declare function parseMailingListSiteSetup(value: unknown): Result<MailingListSiteSetup, MailingListSetupParseError>;
13
20
  export declare function parseConfiguredMailingListProvider(value: unknown): Result<ConfiguredMailingListProvider, MailingListSetupParseError>;
21
+ export declare function parseNewsletterAudience(value: unknown): Result<NewsletterAudience, 'invalid_newsletter_audience'>;
14
22
  export declare function parseMailingListSetupRevision(value: unknown): MailingListSetupRevision | null;
@@ -5,10 +5,21 @@ export type MailingListProvider = 'native' | 'mailchimp' | 'brevo';
5
5
  /** The name shown to people for each provider; the native one is the product brand. */
6
6
  export declare function mailingListProviderName(provider: MailingListProvider): string;
7
7
  export type NativeMailingListTopicId = NewsletterListId;
8
+ /** An explicit subscription scope; absence of a topic never grants general consent. */
9
+ export type NewsletterAudience = Readonly<{
10
+ kind: 'general';
11
+ }> | Readonly<{
12
+ kind: 'topic';
13
+ topicId: NativeMailingListTopicId;
14
+ }>;
15
+ export declare function sameNewsletterAudience(left: NewsletterAudience, right: NewsletterAudience): boolean;
8
16
  export type MailingListSetupRevision = Brand<number, 'MailingListSetupRevision'>;
9
17
  export type MailingListProfileField = 'name' | 'first_name' | 'last_name' | 'company' | 'phone';
10
18
  export type MailingListGlobalFields = Readonly<{
11
19
  preset: 'emailOnly';
20
+ }> | Readonly<{
21
+ preset: 'emailFirstName';
22
+ firstName: 'required' | 'optional';
12
23
  }> | Readonly<{
13
24
  preset: 'emailName';
14
25
  name: 'required' | 'optional';
@@ -48,7 +59,7 @@ export type BrevoConfirmation = Readonly<{
48
59
  }>;
49
60
  export type NativeMailingListSetup = Readonly<{
50
61
  provider: 'native';
51
- defaultTopicId: NativeMailingListTopicId;
62
+ defaultAudience: NewsletterAudience;
52
63
  confirmation: ToggleConfirmation;
53
64
  }>;
54
65
  export type MailchimpMailingListSetup = Readonly<{
@@ -1,6 +1,6 @@
1
1
  import { type Brand, type ContentVersionId, type SiteId } from './branded';
2
2
  import type { FooterModuleId } from './footer-composition-types';
3
- import type { BrevoConfirmation, MailingListGlobalForm, MailingListProvider, MailingListSetupRevision, ToggleConfirmation } from './mailing-list-setup';
3
+ import type { BrevoConfirmation, MailingListGlobalForm, MailingListProvider, MailingListProfileField, MailingListSetupRevision, ToggleConfirmation } from './mailing-list-setup';
4
4
  import type { ResolvedMailingListTarget } from './mailing-list-targeting';
5
5
  import type { BrevoConnectionId, MailchimpConnectionId } from './mailing-list-identifiers';
6
6
  export declare const MAILING_LIST_SUBMISSION_BUDGET_MS = 10000;
@@ -77,6 +77,9 @@ export type MailingListSignupProfile = (MailingListSignupProfileBase & Readonly<
77
77
  }>) | (MailingListSignupProfileBase & Readonly<{
78
78
  preset: 'emailName';
79
79
  name: ResolvedMailingListProfileField;
80
+ }>) | (MailingListSignupProfileBase & Readonly<{
81
+ preset: 'emailFirstName';
82
+ firstName: ResolvedMailingListProfileField;
80
83
  }>) | (MailingListSignupProfileBase & Readonly<{
81
84
  preset: 'emailFirstLast';
82
85
  firstName: ResolvedMailingListProfileField;
@@ -107,6 +110,8 @@ export declare function parseMailingListSignupProfile(form: MailingListGlobalFor
107
110
  ok: false;
108
111
  error: MailingListSignupProfileParseError;
109
112
  }>;
113
+ /** One projection consumed by native signup and external provider adapters. */
114
+ export declare function mailingListSignupProfileValues(profile: MailingListSignupProfile): Readonly<Record<MailingListProfileField, string | null>>;
110
115
  type ResolvedMailingListSignupIntentBase = Readonly<{
111
116
  siteId: SiteId;
112
117
  setupRevision: MailingListSetupRevision;
@@ -185,7 +190,7 @@ export type MailingListPublicSignupResponse = Readonly<{
185
190
  reason: 'profile_rejected';
186
191
  }> | Readonly<{
187
192
  tag: 'unavailable';
188
- reason: 'configuration_unavailable' | 'stale_configuration' | 'authentication_failed' | 'target_unavailable' | 'rate_limited' | 'temporarily_unavailable';
193
+ reason: 'confirmation_email_failed' | 'configuration_unavailable' | 'stale_configuration' | 'authentication_failed' | 'target_unavailable' | 'rate_limited' | 'temporarily_unavailable';
189
194
  }> | Readonly<{
190
195
  tag: 'uncertain';
191
196
  reason: 'deadline_exceeded' | 'network_interrupted';