@riverbankcms/sdk 0.129.1 → 0.130.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 (229) hide show
  1. package/README.md +32 -10
  2. package/dist/{PreviewEditorSidebar-DceRseRV.mjs → PreviewEditorSidebar-DiEpbOdw.mjs} +313 -239
  3. package/dist/{PreviewEditorUI-BNunq3kk.mjs → PreviewEditorUI-C6MvxnIa.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-B1kbhaJD.mjs → PreviewQueryProvider-C2rnoPz6.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-Bt87-62u.mjs → SdkPreviewModeRuntime-DRXA_m5L.mjs} +208 -211
  6. package/dist/{SiteChromeCustomizeContext-BLl-OlL4.mjs → SiteChromeCustomizeContext-BTHdv5_-.mjs} +6204 -6239
  7. package/dist/_dts/ai/src/contracts/proposalPrimitives.d.ts +52 -0
  8. package/dist/_dts/ai/src/contracts/proposals.d.ts +4950 -29100
  9. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +32572 -0
  10. package/dist/_dts/api/src/appointmentSetup.d.ts +21 -9
  11. package/dist/_dts/api/src/bookingConfig.d.ts +4 -46
  12. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +13 -11
  13. package/dist/_dts/api/src/bookingRecords.d.ts +1 -0
  14. package/dist/_dts/api/src/contentRuntime.d.ts +3 -5
  15. package/dist/_dts/api/src/endpoints.d.ts +14 -21
  16. package/dist/_dts/api/src/eventManagementContracts.d.ts +76 -0
  17. package/dist/_dts/api/src/index.d.ts +3 -2
  18. package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +22 -47
  19. package/dist/_dts/api/src/sdk-event-schedule.d.ts +5 -0
  20. package/dist/_dts/api/src/sdk-event-upsert.d.ts +112 -20
  21. package/dist/_dts/api/src/sdkContracts.d.ts +38 -66
  22. package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +35 -0
  23. package/dist/_dts/api/src/sdkThemeWire.d.ts +2423 -501
  24. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +5 -0
  25. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +23 -37
  26. package/dist/_dts/blocks/src/contracts/index.d.ts +2 -0
  27. package/dist/_dts/blocks/src/contracts/non-block-islands.d.ts +6 -8
  28. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +36 -14
  29. package/dist/_dts/blocks/src/index.d.ts +5 -3
  30. package/dist/_dts/blocks/src/lib/media.d.ts +9 -539
  31. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +3 -2
  32. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +135 -90
  33. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +2 -2
  34. package/dist/_dts/blocks/src/system/blocks/shop.shared.d.ts +37 -4
  35. package/dist/_dts/blocks/src/system/blocks/site-footer-nav-groups-layout.d.ts +1 -1
  36. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +3 -0
  37. package/dist/_dts/blocks/src/system/componentFactory.d.ts +5 -5
  38. package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +8 -6
  39. package/dist/_dts/blocks/src/system/customize/serializeBackgroundOverride.d.ts +3 -0
  40. package/dist/_dts/blocks/src/system/fields/background.d.ts +2 -20
  41. package/dist/_dts/blocks/src/system/fields/backgroundContent.d.ts +17 -0
  42. package/dist/_dts/blocks/src/system/fields/backgroundContentAudit.d.ts +20 -0
  43. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +5 -33
  44. package/dist/_dts/blocks/src/system/fragments/builder.d.ts +1 -0
  45. package/dist/_dts/blocks/src/system/fragments/types.d.ts +1 -0
  46. package/dist/_dts/blocks/src/system/helpers/index.d.ts +1 -1
  47. package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +10 -45
  48. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +7 -4
  49. package/dist/_dts/blocks/src/system/manifest/fieldValidation/writeCanonicalization.d.ts +4 -0
  50. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +123 -55
  51. package/dist/_dts/blocks/src/system/registry.d.ts +2 -0
  52. package/dist/_dts/blocks/src/system/runtime/api/types/shop.d.ts +2 -37
  53. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +61 -24
  54. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +30 -12
  55. package/dist/_dts/blocks/src/system/runtime/header/enhanceHeaderSection.d.ts +3 -5
  56. package/dist/_dts/blocks/src/system/runtime/header/headerScrollRuntime.d.ts +2 -0
  57. package/dist/_dts/blocks/src/system/runtime/header/runtimeContract.d.ts +22 -0
  58. package/dist/_dts/blocks/src/system/runtime/nodes/commerce/shared/display.d.ts +9 -2
  59. package/dist/_dts/blocks/src/system/runtime/nodes/commerce/shared/view.d.ts +3 -0
  60. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +2 -0
  61. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.frame.d.ts +21 -0
  62. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.server.d.ts +2 -0
  63. package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +41 -12
  64. package/dist/_dts/blocks/src/system/runtime/nodes/shop.pass-contract.d.ts +3 -0
  65. package/dist/_dts/blocks/src/system/runtime/nodes/shop.state.d.ts +3 -3
  66. package/dist/_dts/blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.d.ts +3 -1
  67. package/dist/_dts/blocks/src/system/transforms/registry/background.d.ts +1 -1
  68. package/dist/_dts/blocks/src/system/transforms/registry/boxStyles.d.ts +3 -1
  69. package/dist/_dts/blocks/src/system/transforms/registry/core.d.ts +4 -1
  70. package/dist/_dts/blocks/src/system/transforms/registry/headerRuntime.d.ts +3 -0
  71. package/dist/_dts/blocks/src/system/transforms/registry/index.d.ts +2 -1
  72. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +0 -3
  73. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +41 -43
  74. package/dist/_dts/content-editor/src/FooterComposerOverview.d.ts +4 -2
  75. package/dist/_dts/content-editor/src/FooterComposerPanel.d.ts +2 -17
  76. package/dist/_dts/content-editor/src/FooterNavigationLayoutControl.d.ts +5 -0
  77. package/dist/_dts/content-editor/src/footerComposer.d.ts +2 -1
  78. package/dist/_dts/content-editor/src/footerComposerPanelTypes.d.ts +21 -0
  79. package/dist/_dts/content-editor/src/footerPreviewRuntime.d.ts +2 -1
  80. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +11 -1
  81. package/dist/_dts/content-editor/src/useFooterNavigationLayout.d.ts +26 -0
  82. package/dist/_dts/content-model/src/templates/defaults.d.ts +7 -0
  83. package/dist/_dts/core/src/booking-date-time.d.ts +2 -2
  84. package/dist/_dts/core/src/booking-time-zone.d.ts +6 -0
  85. package/dist/_dts/core/src/footer-composition-types.d.ts +4 -4
  86. package/dist/_dts/core/src/footer-navigation-layout.d.ts +4 -0
  87. package/dist/_dts/core/src/index.d.ts +1 -0
  88. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +38 -18
  89. package/dist/_dts/preview-next/src/client/preview/FooterSidebarDisclosure.d.ts +8 -0
  90. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +5 -5
  91. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +15 -17
  92. package/dist/_dts/preview-next/src/client/preview/PreviewFooterEditorPanel.d.ts +20 -0
  93. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +3 -5
  94. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +3 -5
  95. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -4
  96. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +3 -5
  97. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +6 -7
  98. package/dist/_dts/preview-next/src/client/preview/siteChromeBrandPreferences.d.ts +7 -7
  99. package/dist/_dts/preview-next/src/client/preview/siteChromeCustomizeTypes.d.ts +4 -4
  100. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +2 -2
  101. package/dist/_dts/preview-next/src/client/preview/siteChromeSavePlan.d.ts +12 -11
  102. package/dist/_dts/preview-next/src/client/preview/siteChromeSelectionRows.d.ts +53 -0
  103. package/dist/_dts/preview-next/src/client/preview/siteStyleAccess.d.ts +1 -6
  104. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +6 -15
  105. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorSnapshot.d.ts +4 -6
  106. package/dist/_dts/sdk/src/config/types.d.ts +1 -0
  107. package/dist/_dts/sdk/src/config/validation.d.ts +2 -0
  108. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +4 -41
  109. package/dist/_dts/sdk/src/next/catch-all-theme-admission.d.ts +23 -0
  110. package/dist/_dts/sdk/src/next/index.d.ts +8 -6
  111. package/dist/_dts/sdk/src/next/resolveTheme.d.ts +1 -2
  112. package/dist/_dts/sdk/src/next/types.d.ts +10 -0
  113. package/dist/_dts/sdk/src/public-api/contracts.d.ts +2 -16
  114. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +3 -2
  115. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +5 -3
  116. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +1 -1
  117. package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +4 -2
  118. package/dist/_dts/sdk/src/rendering/index.d.ts +2 -0
  119. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +6 -1
  120. package/dist/_dts/sdk/src/rendering/server.d.ts +2 -0
  121. package/dist/_dts/sdk/src/rendering/themeAdmission.d.ts +11 -0
  122. package/dist/_dts/sdk/src/version.d.ts +1 -1
  123. package/dist/_dts/theme-core/src/blockOverrides.d.ts +1 -1
  124. package/dist/_dts/theme-core/src/boxBackgroundSchema.d.ts +184 -0
  125. package/dist/_dts/theme-core/src/buttons/buttonColourContract.d.ts +96 -0
  126. package/dist/_dts/theme-core/src/buttons/buttonSurfaceContext.d.ts +78 -0
  127. package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
  128. package/dist/_dts/theme-core/src/buttons/parseThemeForPersistence.d.ts +2 -2
  129. package/dist/_dts/theme-core/src/buttons/resolveButtonColourStates.d.ts +9 -57
  130. package/dist/_dts/theme-core/src/buttons/resolvedButtonCss.d.ts +6 -3
  131. package/dist/_dts/theme-core/src/buttons/styles/domain.d.ts +8 -7
  132. package/dist/_dts/theme-core/src/buttons/styles/recipes/quietArrow.d.ts +1 -0
  133. package/dist/_dts/theme-core/src/buttons/styles/recipes/staticRecipes.d.ts +11 -0
  134. package/dist/_dts/theme-core/src/buttons/styles/registry.d.ts +12 -0
  135. package/dist/_dts/theme-core/src/buttons/styles/selection.d.ts +5 -0
  136. package/dist/_dts/theme-core/src/buttons/types.d.ts +51 -4
  137. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  138. package/dist/_dts/theme-core/src/lib/media.d.ts +583 -10
  139. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +5117 -1433
  140. package/dist/_dts/theme-core/src/schema.d.ts +5079 -2005
  141. package/dist/_dts/theme-core/src/site-styles/compilationPlan.d.ts +6 -14
  142. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +29 -102
  143. package/dist/_dts/theme-core/src/site-styles/customizableSurfaces.d.ts +3 -76
  144. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +4 -4
  145. package/dist/_dts/theme-core/src/site-styles/generatedDesignPipeline.d.ts +3 -7
  146. package/dist/_dts/theme-core/src/site-styles/generatedDesignPipelineHelpers.d.ts +17 -0
  147. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +2 -2
  148. package/dist/_dts/theme-core/src/site-styles/headerLayoutCatalog.d.ts +281 -0
  149. package/dist/_dts/theme-core/src/site-styles/headerLayoutResolution.d.ts +13 -0
  150. package/dist/_dts/theme-core/src/site-styles/headerLayoutStyles.d.ts +6 -0
  151. package/dist/_dts/theme-core/src/site-styles/{headerLookTypes.d.ts → headerLayoutTypes.d.ts} +16 -86
  152. package/dist/_dts/theme-core/src/site-styles/headerNavStyles.d.ts +6 -0
  153. package/dist/_dts/theme-core/src/site-styles/headerOpeningForeground.d.ts +7 -4
  154. package/dist/_dts/theme-core/src/site-styles/headerOpeningSection.d.ts +2 -2
  155. package/dist/_dts/theme-core/src/site-styles/headerStyleCompiler.d.ts +2 -2
  156. package/dist/_dts/theme-core/src/site-styles/imageSurfaceBackground.d.ts +14 -0
  157. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -1
  158. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +14 -41
  159. package/dist/_dts/theme-core/src/site-styles/runtimeBackgroundResolution.d.ts +23 -0
  160. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +8 -6
  161. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +1 -1
  162. package/dist/client/{CourseRegistrationWizard-xRmA7REV.mjs → CourseRegistrationWizard-Bvtz9G9g.mjs} +5 -5
  163. package/dist/client/{DiscountCodeDisclosure-B9vriL5C.mjs → DiscountCodeDisclosure-Ur-Xx1U_.mjs} +1 -1
  164. package/dist/client/{EventCombined.client-BgVnVTlz.mjs → EventCombined.client-EhscD4U6.mjs} +2 -2
  165. package/dist/client/{EventListing.client-CqdsO7jO.mjs → EventListing.client-Bn26cFTY.mjs} +2 -2
  166. package/dist/client/{LeafletStaticMap-CKPxot9M.mjs → LeafletStaticMap-BUw9Ntzr.mjs} +1 -1
  167. package/dist/client/{StepIndicator-DGCYuBJ1.mjs → StepIndicator-BfbdiVQI.mjs} +2 -2
  168. package/dist/client/{accordion-BfN5Eqd-.mjs → accordion-CjIeof73.mjs} +1 -1
  169. package/dist/client/{bookingForm-DOvCpBFP.mjs → bookingForm-DwEeovf_.mjs} +5 -5
  170. package/dist/client/bookings.mjs +1028 -1038
  171. package/dist/client/{carousel-DPNmiH0f.mjs → carousel-BMrfgOba.mjs} +1 -1
  172. package/dist/client/{cart--egVXlrR.mjs → cart-rXEdxTdb.mjs} +3 -3
  173. package/dist/client/{checkout-DywWtMcq.mjs → checkout-D3JlSzh3.mjs} +3 -3
  174. package/dist/client/client.mjs +18345 -18311
  175. package/dist/client/{courseRegistration-Dk9qFVwt.mjs → courseRegistration-DO5XvMAA.mjs} +2 -2
  176. package/dist/client/{eventCalendar-Bkz2HjlS.mjs → eventCalendar-DO6rTqCn.mjs} +4 -4
  177. package/dist/client/{eventCombined-D4kipYWg.mjs → eventCombined-bJ3i_ovU.mjs} +2 -2
  178. package/dist/client/{eventDetails-Dz_5ix2Q.mjs → eventDetails-CCbrXE7o.mjs} +3 -3
  179. package/dist/client/{eventListing-D0vm-zST.mjs → eventListing-Bdlt9YTm.mjs} +2 -2
  180. package/dist/client/{eventRegistration-Cw1E4Q4p.mjs → eventRegistration-B02lt6iY.mjs} +6 -6
  181. package/dist/client/{form-C2Zf1n3K.mjs → form-DrUBAAox.mjs} +1 -1
  182. package/dist/client/{headerSection-CP05gzdc.mjs → headerSection-MzqvHL6T.mjs} +151 -104
  183. package/dist/client/hooks.mjs +4532 -4216
  184. package/dist/client/{locationMap-Cl3x9PYJ.mjs → locationMap-DG8BxTBm.mjs} +2 -2
  185. package/dist/client/{newsletterForm-DyEJoClm.mjs → newsletterForm-BzO-Td3p.mjs} +1 -1
  186. package/dist/client/{pricing-DGuNR1W4.mjs → pricing-NgK7ozkg.mjs} +1 -1
  187. package/dist/client/{productDetail-Cq-HrGew.mjs → productDetail-CfQ7rhVK.mjs} +3 -3
  188. package/dist/client/{productList-DbB3jwqd.mjs → productList-C23rOLUi.mjs} +3 -3
  189. package/dist/client/{propsDecoder-CiTuhUwY.mjs → propsDecoder-CAZdhwjs.mjs} +2166 -2157
  190. package/dist/client/rendering/client.mjs +3600 -4118
  191. package/dist/client/rendering/islands.mjs +18 -18
  192. package/dist/client/rendering.mjs +15950 -15890
  193. package/dist/client/{scrollToBlock-CShkRqab.mjs → scrollToBlock-DSSqVQr1.mjs} +1 -1
  194. package/dist/client/{shop-Cu4Ib-ZA.mjs → shop-BMToKLK7.mjs} +34 -23
  195. package/dist/client/{shop-commerce-BzpsOdh7.mjs → shop-commerce-DB4JRKmp.mjs} +4 -4
  196. package/dist/client/{shop-commerce-store-DaE7Fhj8.mjs → shop-commerce-store-BOqSIOuc.mjs} +1 -1
  197. package/dist/client/{shopShared-cF0c20vB.mjs → shopShared-B6SK9DZv.mjs} +9 -3
  198. package/dist/client/{useEventFilters-QZ3HMgaJ.mjs → useEventFilters-CULOa4nB.mjs} +2 -2
  199. package/dist/client/{usePolling-BKf0GcE-.mjs → usePolling-BGG_8-jl.mjs} +2 -2
  200. package/dist/preview-next/before-render.mjs +16 -27
  201. package/dist/preview-next/client/runtime.mjs +4 -4
  202. package/dist/preview-next/middleware.mjs +16 -27
  203. package/dist/{previewAuthStore-BesgU5Xu.mjs → previewAuthStore-_GXFRg2W.mjs} +16 -27
  204. package/dist/{sdk-runtime-C20CVWbb.mjs → sdk-runtime-hhSOMShR.mjs} +2 -2
  205. package/dist/{separator-BE3NCquy.mjs → separator-flRaFc14.mjs} +1 -1
  206. package/dist/server/components.mjs +17770 -17866
  207. package/dist/server/config-validation.mjs +4711 -4421
  208. package/dist/server/config.mjs +4715 -4425
  209. package/dist/server/data.mjs +4515 -4216
  210. package/dist/server/date-time.mjs +22 -13
  211. package/dist/server/index.mjs +17 -28
  212. package/dist/server/next.mjs +17586 -17650
  213. package/dist/server/page-converter.mjs +3759 -4390
  214. package/dist/server/prebuild.mjs +1 -1
  215. package/dist/server/rendering/server.mjs +18952 -19064
  216. package/dist/server/rendering.mjs +17824 -17901
  217. package/dist/server/routing.mjs +4748 -4365
  218. package/dist/server/server.mjs +4591 -4269
  219. package/dist/server/theme-bridge.mjs +1393 -1886
  220. package/dist/server/theme.mjs +736 -605
  221. package/dist/styles/index.css +22 -3
  222. package/package.json +1 -1
  223. package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +0 -66
  224. package/dist/_dts/theme-core/src/site-styles/headerLayoutStyleCatalog.d.ts +0 -254
  225. package/dist/_dts/theme-core/src/site-styles/headerLegacyLooks.d.ts +0 -372
  226. package/dist/_dts/theme-core/src/site-styles/headerLookBranding.d.ts +0 -106
  227. package/dist/_dts/theme-core/src/site-styles/headerLookSelection.d.ts +0 -2
  228. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +0 -7
  229. package/dist/_dts/theme-core/src/site-styles/headerStyleCompilerPrimitives.d.ts +0 -23
@@ -1,5 +1,5 @@
1
1
  import { type BlockButtonRole } from '../../constants/buttonRoles';
2
- import type { PublicMembershipProduct, PublicPassProduct } from '../../blocks/shop.shared';
2
+ import type { PublicMembershipProduct } from '../../blocks/shop.shared';
3
3
  import type { PublicProduct } from '../../blocks/products/shared';
4
4
  import { type CartDisplay, type CheckoutDisplay, type PassesMembershipsDisplay, type ProductDetailDisplay, type ProductListDisplay } from './commerce/shared/display';
5
5
  import type { CommerceCartItem } from './shop-commerce.shared';
@@ -12,7 +12,6 @@ type ShopSourceProps = ShopDisplayConfig & Readonly<{
12
12
  }>;
13
13
  export type { ShopSourceProps };
14
14
  export type PassesMembershipsHydration = Readonly<{
15
- passes: readonly PublicPassProduct[];
16
15
  memberships: readonly PublicMembershipProduct[];
17
16
  passPurchaseMode: 'add_to_cart' | 'buy_now';
18
17
  buttonVariant: BlockButtonRole;
@@ -92,7 +91,14 @@ export declare const shopBlockRuntime: Readonly<{
92
91
  creditsLabel: string;
93
92
  perCreditLabel: string | null;
94
93
  validityLabel: string | null;
95
- actionLabel: string;
94
+ action: Readonly<{
95
+ kind: "purchase";
96
+ label: string;
97
+ product: import("../..").PurchasablePublicPassProduct;
98
+ }> | Readonly<{
99
+ kind: "unavailable";
100
+ label: string;
101
+ }>;
96
102
  }>[];
97
103
  memberships: readonly Readonly<{
98
104
  id: string;
@@ -104,7 +110,6 @@ export declare const shopBlockRuntime: Readonly<{
104
110
  }>[];
105
111
  }>;
106
112
  hydration: Readonly<{
107
- passes: readonly PublicPassProduct[];
108
113
  memberships: readonly PublicMembershipProduct[];
109
114
  passPurchaseMode: "add_to_cart" | "buy_now";
110
115
  buttonVariant: BlockButtonRole;
@@ -134,7 +139,14 @@ export declare const shopBlockRuntime: Readonly<{
134
139
  creditsLabel: string;
135
140
  perCreditLabel: string | null;
136
141
  validityLabel: string | null;
137
- actionLabel: string;
142
+ action: Readonly<{
143
+ kind: "purchase";
144
+ label: string;
145
+ product: import("../..").PurchasablePublicPassProduct;
146
+ }> | Readonly<{
147
+ kind: "unavailable";
148
+ label: string;
149
+ }>;
138
150
  }>[];
139
151
  memberships: readonly Readonly<{
140
152
  id: string;
@@ -146,7 +158,6 @@ export declare const shopBlockRuntime: Readonly<{
146
158
  }>[];
147
159
  }>;
148
160
  hydration: Readonly<{
149
- passes: readonly PublicPassProduct[];
150
161
  memberships: readonly PublicMembershipProduct[];
151
162
  passPurchaseMode: "add_to_cart" | "buy_now";
152
163
  buttonVariant: BlockButtonRole;
@@ -170,7 +181,14 @@ export declare const shopBlockRuntime: Readonly<{
170
181
  creditsLabel: string;
171
182
  perCreditLabel: string | null;
172
183
  validityLabel: string | null;
173
- actionLabel: string;
184
+ action: Readonly<{
185
+ kind: "purchase";
186
+ label: string;
187
+ product: import("../..").PurchasablePublicPassProduct;
188
+ }> | Readonly<{
189
+ kind: "unavailable";
190
+ label: string;
191
+ }>;
174
192
  }>[];
175
193
  memberships: readonly Readonly<{
176
194
  id: string;
@@ -182,7 +200,6 @@ export declare const shopBlockRuntime: Readonly<{
182
200
  }>[];
183
201
  }>;
184
202
  hydration: Readonly<{
185
- passes: readonly PublicPassProduct[];
186
203
  memberships: readonly PublicMembershipProduct[];
187
204
  passPurchaseMode: "add_to_cart" | "buy_now";
188
205
  buttonVariant: BlockButtonRole;
@@ -520,7 +537,14 @@ export declare const shopInteractiveIslandPropsCodec: Readonly<{
520
537
  creditsLabel: string;
521
538
  perCreditLabel: string | null;
522
539
  validityLabel: string | null;
523
- actionLabel: string;
540
+ action: Readonly<{
541
+ kind: "purchase";
542
+ label: string;
543
+ product: import("../..").PurchasablePublicPassProduct;
544
+ }> | Readonly<{
545
+ kind: "unavailable";
546
+ label: string;
547
+ }>;
524
548
  }>[];
525
549
  memberships: readonly Readonly<{
526
550
  id: string;
@@ -532,7 +556,6 @@ export declare const shopInteractiveIslandPropsCodec: Readonly<{
532
556
  }>[];
533
557
  }>;
534
558
  hydration: Readonly<{
535
- passes: readonly PublicPassProduct[];
536
559
  memberships: readonly PublicMembershipProduct[];
537
560
  passPurchaseMode: "add_to_cart" | "buy_now";
538
561
  buttonVariant: BlockButtonRole;
@@ -565,7 +588,14 @@ export declare const shopInteractiveIslandPropsCodec: Readonly<{
565
588
  creditsLabel: string;
566
589
  perCreditLabel: string | null;
567
590
  validityLabel: string | null;
568
- actionLabel: string;
591
+ action: Readonly<{
592
+ kind: "purchase";
593
+ label: string;
594
+ product: import("../..").PurchasablePublicPassProduct;
595
+ }> | Readonly<{
596
+ kind: "unavailable";
597
+ label: string;
598
+ }>;
569
599
  }>[];
570
600
  memberships: readonly Readonly<{
571
601
  id: string;
@@ -577,7 +607,6 @@ export declare const shopInteractiveIslandPropsCodec: Readonly<{
577
607
  }>[];
578
608
  }>;
579
609
  hydration: Readonly<{
580
- passes: readonly PublicPassProduct[];
581
610
  memberships: readonly PublicMembershipProduct[];
582
611
  passPurchaseMode: "add_to_cart" | "buy_now";
583
612
  buttonVariant: BlockButtonRole;
@@ -0,0 +1,3 @@
1
+ import { z } from 'zod';
2
+ import type { PassCardDisplay } from './commerce/shared/display';
3
+ export declare const passCardDisplaySchema: z.ZodType<PassCardDisplay>;
@@ -1,4 +1,4 @@
1
- import type { PublicMembershipProduct, PublicPassProduct } from '../../blocks/shop';
1
+ import type { PublicMembershipProduct, PurchasablePublicPassProduct } from '../../blocks/shop';
2
2
  import type { ShopDuplicateMembershipWarning as DuplicateMembershipWarning } from '../api';
3
3
  import type { ShopCheckoutForm } from './shop-checkout-form';
4
4
  export type CheckoutReturnNotice = Readonly<{
@@ -9,7 +9,7 @@ export type CheckoutReturnNotice = Readonly<{
9
9
  export type CheckoutForm = ShopCheckoutForm;
10
10
  export type CheckoutItem = Readonly<{
11
11
  productType: 'pass';
12
- product: PublicPassProduct;
12
+ product: PurchasablePublicPassProduct;
13
13
  }> | Readonly<{
14
14
  productType: 'membership';
15
15
  product: PublicMembershipProduct;
@@ -30,7 +30,7 @@ export type ShopPassesMembershipsState = Readonly<{
30
30
  }>;
31
31
  type ShopPassesMembershipsAction = Readonly<{
32
32
  type: 'openPassCheckout';
33
- pass: PublicPassProduct;
33
+ pass: PurchasablePublicPassProduct;
34
34
  }> | Readonly<{
35
35
  type: 'openMembershipCheckout';
36
36
  membership: PublicMembershipProduct;
@@ -1,2 +1,4 @@
1
1
  import type { TransformContext } from '../core';
2
- export declare function resolveSurfaceForegroundStyles(value: unknown, context: TransformContext): Record<string, string>;
2
+ export declare function resolveSurfaceForegroundStyles(value: unknown, context: TransformContext, options?: Readonly<{
3
+ fallbackToken?: string;
4
+ }>): Record<string, string>;
@@ -1,2 +1,2 @@
1
- import type { TransformDefinition } from "./core";
1
+ import type { TransformDefinition } from './core';
2
2
  export declare const backgroundTransforms: TransformDefinition<unknown>[];
@@ -122,7 +122,9 @@ export declare const containerStylesResolveBoxClassName: TransformDefinition<Con
122
122
  * This combined transform replaces separate foreground color transforms
123
123
  * when both need to be applied to the same style prop.
124
124
  */
125
- export declare const sectionColorsStyleTransform: TransformDefinition<Record<string, never>>;
125
+ export declare const sectionColorsStyleTransform: TransformDefinition<Readonly<{
126
+ fallbackToken?: string;
127
+ }>>;
126
128
  /**
127
129
  * Maps semantic gap values to theme-aware gap classes.
128
130
  *
@@ -1,5 +1,6 @@
1
1
  import type { z } from "zod";
2
2
  import type { ThemeTokens } from "../../theme";
3
+ import type { ButtonSystem } from "../../../../../theme-core/src/buttons/index";
3
4
  type BivariantCallback<TArgs extends unknown[], TResult> = {
4
5
  bivarianceHack(...args: TArgs): TResult;
5
6
  }["bivarianceHack"];
@@ -16,7 +17,9 @@ export type PageIdentifierMap = Record<string, string>;
16
17
  /** Maps contentType -> identifier -> routeId for entry link resolution */
17
18
  export type EntryIdentifierMap = Record<string, Record<string, string>>;
18
19
  export type TransformContext = {
19
- theme: ThemeTokens;
20
+ theme: ThemeTokens & Readonly<{
21
+ buttons?: ButtonSystem;
22
+ }>;
20
23
  locale?: string;
21
24
  stage?: "preview" | "published";
22
25
  /**
@@ -0,0 +1,3 @@
1
+ import type { TransformDefinition } from './core';
2
+ export declare const headerRuntimeContractTransform: TransformDefinition;
3
+ export declare const headerRuntimeTransforms: TransformDefinition[];
@@ -6,6 +6,7 @@ import { backgroundTransforms } from "./background";
6
6
  import { linksTransforms } from "./links";
7
7
  import { boxStylesTransforms } from "./boxStyles";
8
8
  import { contentTransforms } from "./content";
9
+ import { headerRuntimeTransforms } from "./headerRuntime";
9
10
  export declare const builtinTransformDefinitions: import("./core").TransformDefinition<unknown>[];
10
11
  export declare const defaultTransforms: import("./core").TransformRegistry;
11
- export { formattingTransforms, layoutTransforms, uiTransforms, mediaTransforms, backgroundTransforms, linksTransforms, boxStylesTransforms, contentTransforms, };
12
+ export { formattingTransforms, layoutTransforms, uiTransforms, mediaTransforms, backgroundTransforms, linksTransforms, boxStylesTransforms, contentTransforms, headerRuntimeTransforms, };
@@ -97,9 +97,6 @@ declare const footerBottomBarContainerClassSchema: z.ZodObject<{
97
97
  }, z.core.$strip>;
98
98
  export declare const footerBottomBarContainerClassTransform: TransformDefinition<z.infer<typeof footerBottomBarContainerClassSchema>>;
99
99
  export declare const footerBottomBarStyleTransform: TransformDefinition;
100
- export declare const footerSplitNavSingleClassTransform: TransformDefinition;
101
- export declare const footerSimpleRootClassTransform: TransformDefinition;
102
- export declare const footerSimpleNavClassTransform: TransformDefinition;
103
100
  declare const footerSplitMainClassSchema: z.ZodObject<{
104
101
  base: z.ZodOptional<z.ZodString>;
105
102
  reverseClass: z.ZodOptional<z.ZodString>;
@@ -1,108 +1,106 @@
1
- import type { TransformDefinition } from "./registry/core";
1
+ import type { TransformDefinition } from './registry/core';
2
2
  export declare const transformDefinitions: {
3
- readonly "string.uppercase": TransformDefinition;
4
- readonly "value.fallback": TransformDefinition<{
3
+ readonly 'string.uppercase': TransformDefinition;
4
+ readonly 'value.fallback': TransformDefinition<{
5
5
  fallback: unknown;
6
6
  }>;
7
- readonly "ui.headerNavLinkClass": TransformDefinition<{
7
+ readonly 'ui.headerNavLinkClass': TransformDefinition<{
8
8
  base?: string | undefined;
9
9
  }>;
10
- readonly "layout.maxWidthClass": TransformDefinition<{
10
+ readonly 'layout.maxWidthClass': TransformDefinition<{
11
11
  base?: string | undefined;
12
12
  container?: string | undefined;
13
13
  full?: string | undefined;
14
14
  }>;
15
- readonly "layout.headerRootClass": TransformDefinition<{
15
+ readonly 'layout.headerRootClass': TransformDefinition<{
16
16
  base?: string | undefined;
17
17
  sticky?: string | undefined;
18
18
  stickyTransparent?: string | undefined;
19
19
  invert?: string | undefined;
20
20
  }>;
21
- readonly "layout.headerLogoClass": TransformDefinition<{
21
+ readonly 'layout.headerRuntimeContract': TransformDefinition;
22
+ readonly 'layout.headerLogoClass': TransformDefinition<{
22
23
  base?: string | undefined;
23
24
  }>;
24
- readonly "layout.headerLogoMediaClass": TransformDefinition<{
25
+ readonly 'layout.headerLogoMediaClass': TransformDefinition<{
25
26
  base?: string | undefined;
26
27
  }>;
27
- readonly "layout.headerLogoTextVisible": TransformDefinition;
28
- readonly "layout.footerRootClass": TransformDefinition<{
28
+ readonly 'layout.headerLogoTextVisible': TransformDefinition;
29
+ readonly 'layout.footerRootClass': TransformDefinition<{
29
30
  base?: string | undefined;
30
31
  surface?: string | undefined;
31
32
  tokenPrefix?: string | undefined;
32
33
  transparent?: string | undefined;
33
34
  }>;
34
- readonly "layout.headerRootStyle": TransformDefinition;
35
- readonly "layout.headerSectionBackground": TransformDefinition;
36
- readonly "layout.footerRootStyle": TransformDefinition;
37
- readonly "layout.footerBottomBarClass": TransformDefinition<{
35
+ readonly 'layout.headerRootStyle': TransformDefinition;
36
+ readonly 'layout.headerSectionBackground': TransformDefinition;
37
+ readonly 'layout.footerRootStyle': TransformDefinition;
38
+ readonly 'layout.footerBottomBarClass': TransformDefinition<{
38
39
  base?: string | undefined;
39
40
  }>;
40
- readonly "layout.footerBottomBarContainerClass": TransformDefinition<{
41
+ readonly 'layout.footerBottomBarContainerClass': TransformDefinition<{
41
42
  base?: string | undefined;
42
43
  fullBleed?: string | undefined;
43
44
  contained?: string | undefined;
44
45
  }>;
45
- readonly "layout.footerBottomBarStyle": TransformDefinition;
46
- readonly "layout.footerSplitNavSingleClass": TransformDefinition;
47
- readonly "layout.footerSplitMainClass": TransformDefinition<{
46
+ readonly 'layout.footerBottomBarStyle': TransformDefinition;
47
+ readonly 'layout.footerSplitMainClass': TransformDefinition<{
48
48
  base?: string | undefined;
49
49
  reverseClass?: string | undefined;
50
50
  }>;
51
- readonly "layout.footerSimpleRootClass": TransformDefinition;
52
- readonly "layout.footerSimpleNavClass": TransformDefinition;
53
- readonly "layout.footerLogoClass": TransformDefinition<{
51
+ readonly 'layout.footerLogoClass': TransformDefinition<{
54
52
  base?: string | undefined;
55
53
  requireExplicitShow?: boolean | undefined;
56
54
  }>;
57
- readonly "layout.footerLogoMediaClass": TransformDefinition<{
55
+ readonly 'layout.footerLogoMediaClass': TransformDefinition<{
58
56
  base?: string | undefined;
59
57
  }>;
60
- readonly "layout.footerLogoTextVisible": TransformDefinition;
61
- readonly "ui.headingClassFromAlignment": TransformDefinition<{
58
+ readonly 'layout.footerLogoTextVisible': TransformDefinition;
59
+ readonly 'ui.headingClassFromAlignment': TransformDefinition<{
62
60
  base: string;
63
61
  }>;
64
- readonly "ui.bodyClassFromAlignment": TransformDefinition<{
62
+ readonly 'ui.bodyClassFromAlignment': TransformDefinition<{
65
63
  base: string;
66
64
  }>;
67
- readonly "ui.stackAlignFromAlignment": TransformDefinition;
68
- readonly "ui.sectionStateTone": TransformDefinition;
69
- readonly "ui.heroContentWrapperClass": TransformDefinition<{
65
+ readonly 'ui.stackAlignFromAlignment': TransformDefinition;
66
+ readonly 'ui.sectionStateTone': TransformDefinition;
67
+ readonly 'ui.heroContentWrapperClass': TransformDefinition<{
70
68
  base?: string | undefined;
71
69
  }>;
72
- readonly "ui.heroCtaJustify": TransformDefinition;
73
- readonly "ui.heroStackJustifyFromVerticalAlignment": TransformDefinition;
74
- readonly "ui.heroGridClassFromVerticalAlignment": TransformDefinition<{
70
+ readonly 'ui.heroCtaJustify': TransformDefinition;
71
+ readonly 'ui.heroStackJustifyFromVerticalAlignment': TransformDefinition;
72
+ readonly 'ui.heroGridClassFromVerticalAlignment': TransformDefinition<{
75
73
  base: string;
76
74
  }>;
77
- readonly "ui.conditionalClass": TransformDefinition<{
75
+ readonly 'ui.conditionalClass': TransformDefinition<{
78
76
  whenTrue: string;
79
77
  whenFalse: string;
80
78
  }>;
81
- readonly "ui.twoColumnContainerClass": TransformDefinition<{
79
+ readonly 'ui.twoColumnContainerClass': TransformDefinition<{
82
80
  base: string;
83
81
  reverseClass: string;
84
82
  }>;
85
- readonly "ui.twoColumnFlexBasis": TransformDefinition<{
83
+ readonly 'ui.twoColumnFlexBasis': TransformDefinition<{
86
84
  side: "text" | "image";
87
85
  }>;
88
- readonly "media.fromUrl": TransformDefinition<{
86
+ readonly 'media.fromUrl': TransformDefinition<{
89
87
  width?: number;
90
88
  height?: number;
91
89
  quality?: number;
92
90
  resize?: "cover" | "contain" | "fill";
93
91
  }>;
94
- readonly "date.formatShort": TransformDefinition;
95
- readonly "content.interpolateRichTextTokens": TransformDefinition<{
92
+ readonly 'date.formatShort': TransformDefinition;
93
+ readonly 'content.interpolateRichTextTokens': TransformDefinition<{
96
94
  tokens: ("year" | "site_name")[];
97
95
  }>;
98
- readonly "value.csv": TransformDefinition;
99
- readonly "boxStyles.semanticGap": TransformDefinition<{
96
+ readonly 'value.csv': TransformDefinition;
97
+ readonly 'boxStyles.semanticGap': TransformDefinition<{
100
98
  fallback?: import("../spacing").SemanticSpacing;
101
99
  }>;
102
- readonly "boxStyles.semanticGapValue": TransformDefinition<{
100
+ readonly 'boxStyles.semanticGapValue': TransformDefinition<{
103
101
  fallback?: import("../spacing").SemanticSpacing;
104
102
  }>;
105
- readonly "boxStyles.cardVariantClass": TransformDefinition<{
103
+ readonly 'boxStyles.cardVariantClass': TransformDefinition<{
106
104
  baseClass?: string;
107
105
  }>;
108
106
  };
@@ -120,12 +118,12 @@ export declare function pipe<T extends readonly TransformStep[]>(...steps: T): T
120
118
  export declare function bindProp(from: string, opts?: {
121
119
  transforms?: readonly TransformStep[] | TransformStep[];
122
120
  fallback?: unknown;
123
- pick?: "value" | "collection" | "context";
121
+ pick?: 'value' | 'collection' | 'context';
124
122
  }): {
125
123
  readonly $bind: {
126
124
  readonly pick?: "value" | "context" | "collection" | undefined;
127
125
  readonly fallback?: {} | null | undefined;
128
- 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" | "boxStyles.cardVariantClass" | "layout.headerLogoClass" | "layout.headerLogoMediaClass" | "layout.headerLogoTextVisible" | "layout.footerBottomBarClass" | "layout.footerBottomBarContainerClass" | "layout.footerBottomBarStyle" | "layout.footerSplitNavSingleClass" | "layout.footerSimpleRootClass" | "layout.footerSimpleNavClass" | "layout.footerSplitMainClass" | "layout.footerLogoClass" | "layout.footerLogoMediaClass" | "layout.footerLogoTextVisible">[] | 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" | "boxStyles.cardVariantClass" | "layout.headerLogoClass" | "layout.headerLogoMediaClass" | "layout.headerLogoTextVisible" | "layout.footerBottomBarClass" | "layout.footerBottomBarContainerClass" | "layout.footerBottomBarStyle" | "layout.footerSplitMainClass" | "layout.footerLogoClass" | "layout.footerLogoMediaClass" | "layout.footerLogoTextVisible" | "layout.headerRuntimeContract">[] | undefined;
129
127
  readonly from: string;
130
128
  };
131
129
  };
@@ -1,4 +1,4 @@
1
- import { type FooterCompositionV1 } from '../../core/src/index';
1
+ import { type FooterCompositionV1, type FooterNavigationLayout } from '../../core/src/index';
2
2
  import type { FooterRuntimeViewModel } from '../../blocks/src/client/site-chrome';
3
3
  import { type FooterEditorTarget, type planFooterEditorView } from './footerComposer';
4
4
  import type { SaveState } from './useFooterComposerState';
@@ -9,13 +9,15 @@ 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({ plan, composition, onTarget, onChange, manageLinksHref, manageSettingsHref, onEngagement, }: {
12
+ export declare function FooterOverview({ plan, composition, onTarget, onChange, manageLinksHref, manageSettingsHref, navigationLayout, onEngagement, onNavigationLayoutChange, }: {
13
13
  plan: FooterPlan;
14
14
  composition: FooterCompositionV1;
15
15
  onTarget: (target: FooterEditorTarget) => void;
16
16
  onChange: (composition: FooterCompositionV1) => void;
17
17
  manageLinksHref: string;
18
18
  manageSettingsHref: string;
19
+ navigationLayout: FooterNavigationLayout;
19
20
  onEngagement: () => void;
21
+ onNavigationLayoutChange?: (layout: FooterNavigationLayout) => void;
20
22
  }): import("react").JSX.Element;
21
23
  export {};
@@ -1,18 +1,3 @@
1
1
  import { type ReactNode } from 'react';
2
- import type { ApiClient } from '../../api/src/request';
3
- import { type FooterEditorTarget } from './footerComposer';
4
- export declare function FooterComposerPanel({ apiClient, siteId: rawSiteId, customFooterMode, manageLinksHref, manageFormsHref, manageNewsletterHref, manageSettingsHref, legalRegion, initialTarget, variant, canEdit, onSaved, loadingFallback, }: {
5
- apiClient: ApiClient;
6
- siteId: string;
7
- customFooterMode: 'default' | 'blocks' | 'default+blocks' | 'none';
8
- manageLinksHref: string;
9
- manageFormsHref?: string;
10
- manageNewsletterHref?: string;
11
- manageSettingsHref: string;
12
- legalRegion?: 'integrated' | 'separate';
13
- initialTarget?: FooterEditorTarget;
14
- variant?: 'full' | 'sidebar';
15
- canEdit?: boolean;
16
- onSaved?: () => void;
17
- loadingFallback: ReactNode;
18
- }): 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;
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;
@@ -0,0 +1,5 @@
1
+ import type { FooterNavigationLayout } from '../../core/src/index';
2
+ export declare function FooterNavigationLayoutControl({ value, onChange, }: Readonly<{
3
+ value: FooterNavigationLayout;
4
+ onChange: (layout: FooterNavigationLayout) => void;
5
+ }>): import("react").JSX.Element;
@@ -1,4 +1,4 @@
1
- import { type FooterArrangementPlan, type FooterCompositionV1, type FooterModuleId, type FooterNavigationRole, type FooterSection, type PublicProfile } from '../../core/src/index';
1
+ import { 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<{
@@ -53,6 +53,7 @@ type FooterEditorViewPlanInput = Readonly<{
53
53
  hasEngagementSource?: boolean;
54
54
  canEdit: boolean;
55
55
  legalRegion?: 'integrated' | 'separate';
56
+ navigationLayout?: FooterNavigationLayout;
56
57
  }>;
57
58
  export declare function footerModuleLabel(section: FooterSection): string;
58
59
  export declare function planFooterEditorView(input: FooterEditorViewPlanInput): FooterEditorViewPlan;
@@ -0,0 +1,21 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { ApiClient } from '../../api/src/request';
3
+ import type { FooterEditorTarget } from './footerComposer';
4
+ import type { FooterNavigationLayoutAccess } from './useFooterNavigationLayout';
5
+ export type FooterComposerPanelProps = Readonly<{
6
+ apiClient: ApiClient;
7
+ siteId: string;
8
+ customFooterMode: 'default' | 'blocks' | 'default+blocks' | 'none';
9
+ manageLinksHref: string;
10
+ manageFormsHref?: string;
11
+ manageNewsletterHref?: string;
12
+ manageSettingsHref: string;
13
+ legalRegion?: 'integrated' | 'separate';
14
+ navigationLayoutAccess?: FooterNavigationLayoutAccess;
15
+ initialTarget?: FooterEditorTarget;
16
+ initialTargetRequestId?: number;
17
+ variant?: 'full' | 'sidebar';
18
+ canEdit?: boolean;
19
+ onSaved?: () => void;
20
+ loadingFallback: ReactNode;
21
+ }>;
@@ -1,5 +1,5 @@
1
1
  import { type FooterResolvedEngagement, type FooterRuntimeViewModel } from '../../blocks/src/client/site-chrome';
2
- import type { FooterCompositionV1, PublicProfile } from '../../core/src/index';
2
+ import type { FooterCompositionV1, FooterNavigationLayout, PublicProfile } from '../../core/src/index';
3
3
  export type FooterPreviewRuntimeInput = Readonly<{
4
4
  composition: FooterCompositionV1;
5
5
  publicProfile: PublicProfile;
@@ -8,6 +8,7 @@ export type FooterPreviewRuntimeInput = Readonly<{
8
8
  hasMainNavigation: boolean;
9
9
  hasLegalPolicyNavigation: boolean;
10
10
  legalRegion: 'integrated' | 'separate';
11
+ navigationLayout: FooterNavigationLayout;
11
12
  engagement: FooterResolvedEngagement;
12
13
  }>;
13
14
  export declare function buildFooterPreviewRuntime(input: FooterPreviewRuntimeInput): FooterRuntimeViewModel;
@@ -2,17 +2,27 @@ import { type FooterCompositionSnapshot, type PublicProfileSnapshot } from '../.
2
2
  import type { ApiClient } from '../../api/src/request';
3
3
  import { type FooterCompositionV1, type PublicProfile } from '../../core/src/index';
4
4
  import type { FooterEditorTarget } from './footerComposer';
5
+ import { type FooterNavigationLayoutAccess } from './useFooterNavigationLayout';
5
6
  export type SaveState = 'idle' | 'saving' | 'saved' | 'conflict' | 'failed';
6
7
  export type CompositionSaveOutcome = 'saved' | 'conflict' | 'failed';
7
8
  type FooterComposerStateOptions = Readonly<{
8
9
  apiClient: ApiClient;
9
10
  canEdit: boolean;
10
11
  initialTarget?: FooterEditorTarget;
12
+ initialTargetRequestId?: number;
13
+ navigationLayoutAccess: FooterNavigationLayoutAccess;
11
14
  onSaved?: () => void;
12
15
  rawSiteId: string;
13
16
  }>;
14
- export declare function useFooterComposerState({ apiClient, canEdit, initialTarget, onSaved, rawSiteId, }: FooterComposerStateOptions): {
17
+ export declare function useFooterComposerState({ apiClient, canEdit, initialTarget, initialTargetRequestId, navigationLayoutAccess, onSaved, rawSiteId, }: FooterComposerStateOptions): {
15
18
  message: string | null;
19
+ navigationLayoutControl: {
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>;
25
+ };
16
26
  saveComposition: (next: FooterCompositionV1, optimistic?: boolean) => Promise<CompositionSaveOutcome>;
17
27
  saveProfile: (next: PublicProfile) => Promise<void>;
18
28
  saveState: SaveState;
@@ -0,0 +1,26 @@
1
+ import type { ApiClient } from '../../api/src/request';
2
+ import type { Theme } from '../../blocks/src/index';
3
+ import { type FooterNavigationLayout } from '../../core/src/index';
4
+ export type FooterSaveState = 'idle' | 'saving' | 'saved' | 'conflict' | 'failed';
5
+ export type FooterNavigationLayoutAccess = Readonly<{
6
+ kind: 'hidden';
7
+ }> | Readonly<{
8
+ kind: 'editable';
9
+ theme: Theme;
10
+ selectionId: string | null;
11
+ selectionVersion: number;
12
+ }>;
13
+ export declare function useFooterNavigationLayout({ apiClient, siteId, access, onSaved, onSaveStateChange, onMessageChange, }: Readonly<{
14
+ apiClient: ApiClient;
15
+ siteId: string;
16
+ access: FooterNavigationLayoutAccess;
17
+ onSaved?: () => void;
18
+ onSaveStateChange: (state: FooterSaveState) => void;
19
+ onMessageChange: (message: string | null) => void;
20
+ }>): {
21
+ readonly layout: "stack" | "inline-wrap";
22
+ readonly onChange: undefined;
23
+ } | {
24
+ readonly layout: "stack" | "inline-wrap";
25
+ readonly onChange: (next: FooterNavigationLayout) => Promise<void>;
26
+ };
@@ -25,6 +25,13 @@ export declare const DEFAULT_TEMPLATE_DEFINITIONS: {
25
25
  readonly blocks: [{
26
26
  readonly blockKind: "block.hero";
27
27
  readonly scope: "entry";
28
+ readonly content: {
29
+ readonly _sectionStyles: {
30
+ readonly background: {
31
+ readonly type: "image";
32
+ };
33
+ };
34
+ };
28
35
  readonly bindings: {
29
36
  readonly eyebrow: Readonly<{
30
37
  source: "literal";
@@ -1,6 +1,7 @@
1
1
  import type { Brand } from './branded';
2
2
  import { type Result } from './result';
3
- export type BookingTimeZone = Brand<string, 'BookingTimeZone'>;
3
+ import { type BookingTimeZone } from './booking-time-zone';
4
+ export { parseBookingTimeZone, type BookingTimeZone, type BookingTimeZoneParseError, } from './booking-time-zone';
4
5
  export type UtcIsoDateTimeString = Brand<string, 'UtcIsoDateTimeString'>;
5
6
  export type BookingLocalDateKey = Brand<string, 'BookingLocalDateKey'>;
6
7
  export type UtcIsoDateTimeStringParseError = 'missing-timezone-offset' | 'invalid-date-time';
@@ -148,4 +149,3 @@ export declare function addLocalScheduleDays(date: LocalScheduleDate, days: numb
148
149
  export declare function addLocalScheduleMonths(date: LocalScheduleDate, months: number): LocalScheduleDate;
149
150
  export declare function getLocalScheduleDayOfWeek(date: LocalScheduleDate): number;
150
151
  export declare function localScheduleDateTimeToUtcDate(localDate: LocalScheduleDate, localTime: LocalScheduleTime, timeZone: BookingTimeZone | string): Date;
151
- export {};
@@ -0,0 +1,6 @@
1
+ import type { Brand } from './branded';
2
+ import { type Result } from './result';
3
+ export type BookingTimeZone = Brand<string, 'BookingTimeZone'>;
4
+ export type BookingTimeZoneParseError = 'invalid-time-zone';
5
+ export declare function isValidBookingTimeZone(timeZone: string): boolean;
6
+ export declare function parseBookingTimeZone(timeZone: unknown): Result<BookingTimeZone, BookingTimeZoneParseError>;
@@ -1,4 +1,5 @@
1
1
  import type { Brand } from './branded';
2
+ import type { FooterNavigationLayout } from './footer-navigation-layout';
2
3
  import type { FooterEngagementSection, FooterEngagementSource } from './footer-engagement';
3
4
  import type { RichTextDoc } from './rich-text';
4
5
  export type FooterModuleId = Brand<string, 'FooterModuleId'>;
@@ -56,16 +57,15 @@ export type FooterCompositionError = Readonly<{
56
57
  message: string;
57
58
  }>;
58
59
  export type FooterLookPolicy = Readonly<{
59
- kind: 'integrated-legal';
60
- }> | Readonly<{
61
- kind: 'separate-legal-region';
60
+ kind: 'integrated-legal' | 'separate-legal-region';
61
+ navigationLayout: FooterNavigationLayout;
62
62
  }>;
63
63
  export type FooterVisualGroupKind = 'identity' | 'main-navigation' | 'visit' | 'engagement' | 'legal-ending';
64
64
  export type FooterColumnCount = 1 | 2 | 3 | 4 | 5;
65
65
  export type FooterVisualGroup = Readonly<{
66
66
  kind: FooterVisualGroupKind;
67
67
  sections: readonly FooterSection[];
68
- span: 1;
68
+ width: 'column' | 'full-row';
69
69
  }>;
70
70
  export type FooterRenderRegion = Readonly<{
71
71
  kind: 'engagement-row' | 'main' | 'bottom';