@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
@@ -0,0 +1,281 @@
1
+ import type { Theme } from '../schema';
2
+ import { type HeaderBrandPresentationPlan, type HeaderBrandPresentationSelection, type LogoAccommodationOption } from './logoBranding';
3
+ import { type HeaderLayoutId, type HeaderLogoContext, type HeaderStyleId } from './headerLayoutTypes';
4
+ export declare function resolveHeaderBrandPresentation(input: Readonly<{
5
+ logo: HeaderLogoContext;
6
+ accommodations: readonly LogoAccommodationOption[];
7
+ allowDisplayFallback?: boolean;
8
+ }>): HeaderBrandPresentationPlan;
9
+ export declare function requireHeaderBrandPresentationSelection(plan: HeaderBrandPresentationPlan): HeaderBrandPresentationSelection;
10
+ /**
11
+ * Starts each compilation from the generated theme's header branch, then
12
+ * clears optional nested styling fields that would otherwise leak from a
13
+ * different header selection.
14
+ */
15
+ export declare function baseHeader(theme: Theme): Theme['header'];
16
+ export declare const headerLayoutCatalog: readonly [{
17
+ readonly id: HeaderLayoutId;
18
+ readonly label: "Classic";
19
+ readonly description: "Logo and navigation in one practical horizontal row.";
20
+ readonly variant: "classic";
21
+ readonly defaultPositioning: "sticky";
22
+ readonly shrinkOnScroll: false;
23
+ readonly logoAccommodations: readonly [{
24
+ readonly pattern: "title-only";
25
+ readonly supportedShapes: readonly ["none", "horizontal", "square", "portrait", "tall"];
26
+ readonly supportedTextPresence: readonly ["contains-text", "no-text", "unknown"];
27
+ readonly supportedDisplayModes: readonly ["title-only"];
28
+ readonly size: "compact";
29
+ }, {
30
+ readonly pattern: "inline-wordmark";
31
+ readonly supportedShapes: readonly ["horizontal"];
32
+ readonly supportedTextPresence: readonly ["contains-text", "no-text", "unknown"];
33
+ readonly supportedDisplayModes: readonly ["logo-only"];
34
+ readonly size: "standard";
35
+ readonly maxDensity: "detailed";
36
+ }, {
37
+ readonly pattern: "inline-mark-with-title";
38
+ readonly supportedShapes: readonly ["horizontal", "square", "portrait", "tall"];
39
+ readonly supportedTextPresence: readonly ["no-text"];
40
+ readonly supportedDisplayModes: readonly ["logo-plus-title"];
41
+ readonly size: "compact";
42
+ readonly maxDensity: "simple";
43
+ }, {
44
+ readonly pattern: "popout-badge";
45
+ readonly supportedShapes: readonly ["square", "portrait", "tall"];
46
+ readonly supportedTextPresence: readonly ["contains-text", "unknown"];
47
+ readonly supportedDisplayModes: readonly ["logo-only"];
48
+ readonly size: "display";
49
+ readonly providesBacking: true;
50
+ }, {
51
+ readonly pattern: "logo-plate";
52
+ readonly supportedShapes: readonly ["square", "portrait", "tall"];
53
+ readonly supportedTextPresence: readonly ["contains-text", "unknown"];
54
+ readonly supportedDisplayModes: readonly ["logo-only"];
55
+ readonly size: "display";
56
+ readonly providesBacking: true;
57
+ }];
58
+ readonly openingRequirement: "none";
59
+ }, {
60
+ readonly id: HeaderLayoutId;
61
+ readonly label: "Centered";
62
+ readonly description: "Logo centered above a balanced navigation row.";
63
+ readonly variant: "centered";
64
+ readonly defaultPositioning: "static";
65
+ readonly shrinkOnScroll: false;
66
+ readonly logoAccommodations: readonly [{
67
+ readonly pattern: "title-only";
68
+ readonly supportedShapes: readonly ["none", "horizontal", "square", "portrait", "tall"];
69
+ readonly supportedTextPresence: readonly ["contains-text", "no-text", "unknown"];
70
+ readonly supportedDisplayModes: readonly ["title-only"];
71
+ readonly size: "compact";
72
+ }, {
73
+ readonly pattern: "inline-wordmark";
74
+ readonly supportedShapes: readonly ["horizontal"];
75
+ readonly supportedTextPresence: readonly ["contains-text", "no-text", "unknown"];
76
+ readonly supportedDisplayModes: readonly ["logo-only"];
77
+ readonly size: "standard";
78
+ readonly maxDensity: "detailed";
79
+ }, {
80
+ readonly pattern: "inline-mark-with-title";
81
+ readonly supportedShapes: readonly ["horizontal", "square", "portrait", "tall"];
82
+ readonly supportedTextPresence: readonly ["no-text"];
83
+ readonly supportedDisplayModes: readonly ["logo-plus-title"];
84
+ readonly size: "compact";
85
+ readonly maxDensity: "simple";
86
+ }, {
87
+ readonly pattern: "centered-masthead";
88
+ readonly supportedShapes: readonly ["square", "portrait", "tall"];
89
+ readonly supportedTextPresence: readonly ["contains-text", "unknown"];
90
+ readonly supportedDisplayModes: readonly ["logo-only"];
91
+ readonly size: "display";
92
+ readonly providesBacking: true;
93
+ }, {
94
+ readonly pattern: "centered-badge";
95
+ readonly supportedShapes: readonly ["square", "portrait", "tall"];
96
+ readonly supportedTextPresence: readonly ["contains-text", "unknown"];
97
+ readonly supportedDisplayModes: readonly ["logo-only"];
98
+ readonly size: "display";
99
+ readonly providesBacking: true;
100
+ }];
101
+ readonly openingRequirement: "none";
102
+ }, {
103
+ readonly id: HeaderLayoutId;
104
+ readonly label: "Floating";
105
+ readonly description: "Detached header chrome that sits over the opening section.";
106
+ readonly variant: "floating";
107
+ readonly defaultPositioning: "sticky";
108
+ readonly shrinkOnScroll: true;
109
+ readonly logoAccommodations: readonly [{
110
+ readonly pattern: "title-only";
111
+ readonly supportedShapes: readonly ["none", "horizontal", "square", "portrait", "tall"];
112
+ readonly supportedTextPresence: readonly ["contains-text", "no-text", "unknown"];
113
+ readonly supportedDisplayModes: readonly ["title-only"];
114
+ readonly size: "compact";
115
+ }, {
116
+ readonly pattern: "inline-wordmark";
117
+ readonly supportedShapes: readonly ["horizontal"];
118
+ readonly supportedTextPresence: readonly ["contains-text", "no-text", "unknown"];
119
+ readonly supportedDisplayModes: readonly ["logo-only"];
120
+ readonly size: "standard";
121
+ readonly maxDensity: "detailed";
122
+ }, {
123
+ readonly pattern: "inline-mark-with-title";
124
+ readonly supportedShapes: readonly ["horizontal", "square", "portrait", "tall"];
125
+ readonly supportedTextPresence: readonly ["no-text"];
126
+ readonly supportedDisplayModes: readonly ["logo-plus-title"];
127
+ readonly size: "compact";
128
+ readonly maxDensity: "simple";
129
+ }, {
130
+ readonly pattern: "inline-logo-only";
131
+ readonly supportedShapes: readonly ["square"];
132
+ readonly supportedTextPresence: readonly ["contains-text", "unknown"];
133
+ readonly supportedDisplayModes: readonly ["logo-only"];
134
+ readonly size: "compact";
135
+ readonly providesBacking: false;
136
+ }];
137
+ readonly openingRequirement: "requires-image-hero-with-contrast-overlay";
138
+ }];
139
+ export declare const headerStyleCatalog: readonly [{
140
+ readonly id: HeaderStyleId;
141
+ readonly label: "Minimal";
142
+ readonly description: "Quiet surface with simple color-change navigation.";
143
+ readonly supportedLayoutIds: readonly HeaderLayoutId[];
144
+ readonly navTypography: "plain";
145
+ }, {
146
+ readonly id: HeaderStyleId;
147
+ readonly label: "Seamless";
148
+ readonly description: "Borderless surface with underline hover for a quieter page transition.";
149
+ readonly supportedLayoutIds: readonly HeaderLayoutId[];
150
+ readonly navTypography: "plain";
151
+ }, {
152
+ readonly id: HeaderStyleId;
153
+ readonly label: "Soft Bar";
154
+ readonly description: "Soft tinted surface with gentle pill hover states.";
155
+ readonly supportedLayoutIds: readonly HeaderLayoutId[];
156
+ readonly navTypography: "plain";
157
+ }, {
158
+ readonly id: HeaderStyleId;
159
+ readonly label: "Pill Nav";
160
+ readonly description: "A calm pill navigation rail over a neutral header.";
161
+ readonly supportedLayoutIds: readonly HeaderLayoutId[];
162
+ readonly navTypography: "plain";
163
+ }, {
164
+ readonly id: HeaderStyleId;
165
+ readonly label: "Brand Bar";
166
+ readonly description: "Solid brand surface with high-contrast navigation.";
167
+ readonly supportedLayoutIds: readonly HeaderLayoutId[];
168
+ readonly navTypography: "brand-caps";
169
+ }, {
170
+ readonly id: HeaderStyleId;
171
+ readonly label: "Brand Underline";
172
+ readonly description: "Brand surface with underline-grow navigation.";
173
+ readonly supportedLayoutIds: readonly HeaderLayoutId[];
174
+ readonly navTypography: "brand-caps";
175
+ }, {
176
+ readonly id: HeaderStyleId;
177
+ readonly label: "Brand Pill";
178
+ readonly description: "Solid brand surface with rounded active and hover states.";
179
+ readonly supportedLayoutIds: readonly HeaderLayoutId[];
180
+ readonly navTypography: "brand-caps";
181
+ }, {
182
+ readonly id: HeaderStyleId;
183
+ readonly label: "Brand Capsule";
184
+ readonly description: "Solid brand chrome designed as a floating capsule, with quiet-caps nav, a soft pill active state, and an inverted CTA pill.";
185
+ readonly supportedLayoutIds: readonly HeaderLayoutId[];
186
+ readonly navTypography: "quiet-caps";
187
+ }, {
188
+ readonly id: HeaderStyleId;
189
+ readonly label: "Serif Line";
190
+ readonly description: "Typographic logo treatment with understated underline navigation.";
191
+ readonly supportedLayoutIds: readonly HeaderLayoutId[];
192
+ readonly navTypography: "heading";
193
+ }, {
194
+ readonly id: HeaderStyleId;
195
+ readonly label: "Flat Tabs";
196
+ readonly description: "Flat block hover and active states with a Swiss utility feel.";
197
+ readonly supportedLayoutIds: readonly HeaderLayoutId[];
198
+ readonly navTypography: "quiet-caps";
199
+ }, {
200
+ readonly id: HeaderStyleId;
201
+ readonly label: "Glass";
202
+ readonly description: "Translucent chrome with frosted navigation backing.";
203
+ readonly supportedLayoutIds: readonly HeaderLayoutId[];
204
+ readonly navTypography: "plain";
205
+ }, {
206
+ readonly id: HeaderStyleId;
207
+ readonly label: "Clear Split";
208
+ readonly description: "Floating logo with transparent navigation and no shared shell.";
209
+ readonly supportedLayoutIds: readonly HeaderLayoutId[];
210
+ readonly navTypography: "plain";
211
+ readonly openingForegroundTarget: "all";
212
+ readonly scrollTreatment: "contrast-glass";
213
+ readonly interactionPalette: Readonly<{
214
+ id: "interaction-palette";
215
+ label: string;
216
+ options: readonly [import("../../../blocks/src/index").HeaderInteractionPaletteOption, ...import("../../../blocks/src/index").HeaderInteractionPaletteOption[]];
217
+ defaultOptionId: "accent" | "primary" | "secondary";
218
+ }>;
219
+ }, {
220
+ readonly id: HeaderStyleId;
221
+ readonly label: "Soft Shell";
222
+ readonly description: "Floating rounded shell with soft pill navigation states.";
223
+ readonly supportedLayoutIds: readonly HeaderLayoutId[];
224
+ readonly navTypography: "plain";
225
+ }, {
226
+ readonly id: HeaderStyleId;
227
+ readonly label: "Split Glass";
228
+ readonly description: "Logo floats independently while the navigation sits in a glass rail.";
229
+ readonly supportedLayoutIds: readonly HeaderLayoutId[];
230
+ readonly navTypography: "quiet-caps";
231
+ readonly openingForegroundTarget: "brand-only";
232
+ }, {
233
+ readonly id: HeaderStyleId;
234
+ readonly label: "Split Pill";
235
+ readonly description: "Logo floats independently with a soft pill-backed navigation rail.";
236
+ readonly supportedLayoutIds: readonly HeaderLayoutId[];
237
+ readonly navTypography: "heading";
238
+ readonly openingForegroundTarget: "brand-only";
239
+ }];
240
+ export declare const headerLayoutsById: Map<HeaderLayoutId, Readonly<{
241
+ id: HeaderLayoutId;
242
+ label: string;
243
+ description: string;
244
+ variant: import("../../../blocks/src/index").ThemeHeader["variant"];
245
+ defaultPositioning: import("../../../blocks/src/index").ThemeHeader["positioning"];
246
+ shrinkOnScroll: boolean;
247
+ logoAccommodations: readonly LogoAccommodationOption[];
248
+ openingRequirement: import("../../../blocks/src/index").HeaderOpeningRequirement;
249
+ }>>;
250
+ export declare const headerStylesById: Map<HeaderStyleId, Readonly<{
251
+ id: HeaderStyleId;
252
+ label: string;
253
+ description: string;
254
+ supportedLayoutIds: readonly HeaderLayoutId[];
255
+ navTypography: import("../../../blocks/src/index").HeaderStyleNavTypography;
256
+ openingForegroundTarget?: "brand-only" | "all";
257
+ scrollTreatment?: "contrast-glass";
258
+ interactionPalette?: import("../../../blocks/src/index").HeaderInteractionPaletteOptionGroup;
259
+ }>>;
260
+ export declare const headerStyleCompatibilityOrder: {
261
+ readonly classic: readonly ["minimal", "fine-line", "soft-bar", "pill-nav", "brand-bar", "brand-underline", "brand-pill", "brand-capsule", "serif-line", "flat-tabs"];
262
+ readonly centered: readonly ["minimal", "fine-line", "soft-bar", "pill-nav", "brand-bar", "brand-pill", "serif-line", "flat-tabs"];
263
+ readonly floating: readonly ["glass", "minimal-surface", "split-glass", "split-pill", "soft-shell", "brand-pill"];
264
+ };
265
+ export declare const headerStyleRepairOrder: {
266
+ readonly 'brand-bar': readonly ["brand-bar", "brand-pill", "minimal"];
267
+ readonly 'brand-underline': readonly ["brand-underline", "serif-line", "fine-line", "minimal"];
268
+ readonly 'brand-pill': readonly ["brand-pill", "brand-bar", "minimal"];
269
+ readonly 'brand-capsule': readonly ["brand-capsule", "brand-pill", "brand-bar", "minimal"];
270
+ readonly 'pill-nav': readonly ["pill-nav", "soft-bar", "minimal"];
271
+ readonly 'flat-tabs': readonly ["flat-tabs", "pill-nav", "minimal"];
272
+ readonly 'serif-line': readonly ["serif-line", "fine-line", "minimal"];
273
+ readonly glass: readonly ["glass", "soft-shell", "fine-line", "minimal-surface", "minimal"];
274
+ readonly 'soft-shell': readonly ["soft-shell", "soft-bar", "minimal"];
275
+ readonly 'minimal-surface': readonly ["minimal-surface", "minimal"];
276
+ readonly 'split-glass': readonly ["split-glass", "glass", "minimal-surface"];
277
+ readonly 'split-pill': readonly ["split-pill", "soft-shell", "brand-pill"];
278
+ readonly 'fine-line': readonly ["fine-line", "minimal"];
279
+ readonly 'soft-bar': readonly ["soft-bar", "minimal"];
280
+ readonly minimal: readonly ["minimal"];
281
+ };
@@ -0,0 +1,13 @@
1
+ import type { HeaderBrandPresentationSelection } from './logoBranding';
2
+ import { type HeaderLayoutDefinition, type HeaderLayoutId, type HeaderLayoutStyleResolution, type HeaderLayoutStyleSelection, type HeaderLogoContext, type HeaderStyleDefinition, type HeaderStyleId } from './headerLayoutTypes';
3
+ export declare function getHeaderLayout(id: HeaderLayoutId): HeaderLayoutDefinition;
4
+ export declare function headerLayoutRequiresImageHeroOpening(layout: HeaderLayoutDefinition): boolean;
5
+ export declare function resolveHeaderBrandPresentationForLayout(input: Readonly<{
6
+ layout: HeaderLayoutDefinition;
7
+ logo: HeaderLogoContext;
8
+ }>): HeaderBrandPresentationSelection;
9
+ export declare function getHeaderStyle(id: HeaderStyleId): HeaderStyleDefinition;
10
+ export declare function isHeaderStyleCompatibleWithLayout(style: HeaderStyleDefinition, layoutId: HeaderLayoutId): boolean;
11
+ export declare function getCompatibleHeaderStyleIds(layoutId: HeaderLayoutId): readonly HeaderStyleId[];
12
+ export declare function deriveNearestCompatibleHeaderStyle(styleId: HeaderStyleId, layoutId: HeaderLayoutId, allowedStyleIds?: readonly HeaderStyleId[]): HeaderStyleId;
13
+ export declare function resolveHeaderLayoutStyleSelection(selection: HeaderLayoutStyleSelection): HeaderLayoutStyleResolution;
@@ -0,0 +1,6 @@
1
+ export * from './headerLayoutTypes';
2
+ export * from './headerLayoutCatalog';
3
+ export * from './headerLayoutResolution';
4
+ export * from './headerStyleCompiler';
5
+ export declare const guaranteedFallbackHeaderLayoutId: import("../../../blocks/src/index").HeaderLayoutId;
6
+ export declare const guaranteedFallbackHeaderStyleId: import("../../../blocks/src/index").HeaderStyleId;
@@ -1,25 +1,8 @@
1
- import type { Theme, ThemeHeader } from '../schema';
1
+ import type { ThemeHeader } from '../schema';
2
2
  import type { HeaderInteractionPaletteOptionGroup } from './headerInteractionPalette';
3
3
  import type { HeaderOpeningForeground } from './headerOpeningForeground';
4
- import type { BrandDisplayMode, HeaderBrandPresentationSelection, LogoAccommodationOption, LogoAccommodationRejectionReason, LogoFacts, LogoSizePolicy } from './logoBranding';
5
- import type { Brand } from './types';
6
- export declare const headerLookIdValues: readonly ["clean-base", "classic-centered-nav", "brand-solid", "serif-line", "centered-calm", "practical-utility", "minimal-transparent", "transparent-overlay", "floating-glass"];
7
- export type HeaderLookIdValue = (typeof headerLookIdValues)[number];
8
- export type HeaderLookId = Brand<HeaderLookIdValue, 'HeaderLookId'>;
9
- export declare function asHeaderLookId(value: HeaderLookIdValue): HeaderLookId;
10
- export type PersistedHeaderLookIdParseResult = Readonly<{
11
- kind: 'known';
12
- id: HeaderLookId;
13
- }> | Readonly<{
14
- kind: 'unknown';
15
- raw: string;
16
- }> | Readonly<{
17
- kind: 'empty';
18
- }>;
19
- export declare function parsePersistedHeaderLookId(value: string): Exclude<PersistedHeaderLookIdParseResult, {
20
- kind: 'empty';
21
- }>;
22
- export declare function parsePersistedHeaderLookId(value: string | null | undefined): PersistedHeaderLookIdParseResult;
4
+ import { type BrandDisplayMode, type LogoAccommodationOption, type LogoFacts, type LogoSizePolicy } from './logoBranding';
5
+ import { type Brand } from './types';
23
6
  export declare const headerLayoutIdValues: readonly ["classic", "centered", "floating"];
24
7
  export type HeaderLayoutIdValue = (typeof headerLayoutIdValues)[number];
25
8
  export type HeaderLayoutId = Brand<HeaderLayoutIdValue, 'HeaderLayoutId'>;
@@ -61,23 +44,15 @@ export type HeaderLayoutDefinition = Readonly<{
61
44
  variant: ThemeHeader['variant'];
62
45
  defaultPositioning: ThemeHeader['positioning'];
63
46
  shrinkOnScroll: boolean;
64
- maxRecommendedNavItems?: number;
65
- allowedLogoShapes?: readonly HeaderLogoShape[];
47
+ logoAccommodations: readonly LogoAccommodationOption[];
48
+ openingRequirement: HeaderOpeningRequirement;
66
49
  }>;
67
- export type HeaderStyleNavInteraction = 'color-change' | 'underline-grow' | 'pill-background' | 'flat-block' | 'glass-backed';
68
- export type HeaderStyleSurface = 'neutral' | 'bordered' | 'soft' | 'brand-solid' | 'floating';
69
- export type HeaderStyleDepth = 'none' | 'line' | 'shadow';
70
- export type HeaderStyleMood = 'calm' | 'professional' | 'editorial' | 'expressive' | 'utility';
71
50
  export type HeaderStyleDefinition = Readonly<{
72
51
  id: HeaderStyleId;
73
52
  label: string;
74
53
  description: string;
75
54
  supportedLayoutIds: readonly HeaderLayoutId[];
76
- navInteraction: HeaderStyleNavInteraction;
77
- surface: HeaderStyleSurface;
78
- defaultDepth: HeaderStyleDepth;
79
55
  navTypography: HeaderStyleNavTypography;
80
- moods: readonly HeaderStyleMood[];
81
56
  openingForegroundTarget?: 'brand-only' | 'all';
82
57
  scrollTreatment?: 'contrast-glass';
83
58
  interactionPalette?: HeaderInteractionPaletteOptionGroup;
@@ -86,21 +61,6 @@ export type HeaderLayoutStyleSelection = Readonly<{
86
61
  layoutId: HeaderLayoutId;
87
62
  styleId: HeaderStyleId;
88
63
  }>;
89
- export type HeaderStyleChoiceSource = Readonly<{
90
- id: HeaderStyleId;
91
- }>;
92
- export type HeaderLayoutChoiceSource = Readonly<{
93
- id: HeaderLayoutId;
94
- }>;
95
- export type HeaderStyleChoicesByLayout = Readonly<Partial<Record<HeaderLayoutIdValue, readonly HeaderStyleChoiceSource[]>>>;
96
- export type HeaderLayoutStyleCuration = Readonly<{
97
- recommendedHeaderLayoutChoices: readonly HeaderLayoutChoiceSource[];
98
- recommendedHeaderStyleChoicesByLayout: HeaderStyleChoicesByLayout;
99
- }>;
100
- export type HeaderLegacyLookAlias = Readonly<{
101
- lookId: HeaderLookId;
102
- selection: HeaderLayoutStyleSelection;
103
- }>;
104
64
  export type HeaderLayoutStyleRepair = Readonly<{
105
65
  requested: HeaderLayoutStyleSelection;
106
66
  resolved: HeaderLayoutStyleSelection;
@@ -118,7 +78,7 @@ export type HeaderLayoutStyleResolution = Readonly<{
118
78
  style: HeaderStyleDefinition;
119
79
  repair: HeaderLayoutStyleRepair;
120
80
  }>;
121
- export type HeaderLookOpeningRequirement = 'none' | 'reserved-space-ok' | 'requires-image-hero-with-contrast-overlay';
81
+ export type HeaderOpeningRequirement = 'none' | 'reserved-space-ok' | 'requires-image-hero-with-contrast-overlay';
122
82
  export type HeaderLogoShape = 'none' | 'text-only' | 'horizontal' | 'square' | 'tall';
123
83
  export type HeaderLogoDimensions = Readonly<{
124
84
  width: number | null;
@@ -126,15 +86,6 @@ export type HeaderLogoDimensions = Readonly<{
126
86
  }>;
127
87
  export declare function deriveHeaderLogoShapeFromDimensions({ width, height, }: HeaderLogoDimensions): HeaderLogoShape;
128
88
  export type HeaderStyleNavTypography = 'plain' | 'heading' | 'quiet-caps' | 'brand-caps';
129
- export type HeaderLookDefinition = Readonly<{
130
- id: HeaderLookId;
131
- label: string;
132
- openingRequirement: HeaderLookOpeningRequirement;
133
- maxRecommendedNavItems?: number;
134
- logoAccommodations: readonly LogoAccommodationOption[];
135
- requiresProminentCta?: boolean;
136
- compile: (theme: Theme) => Theme['header'];
137
- }>;
138
89
  export type HeaderOpeningSectionContext = Readonly<{
139
90
  kind: 'unknown';
140
91
  canAdjust: false;
@@ -174,39 +125,18 @@ export type HeaderLogoFactsContext = HeaderLogoPreferences & Readonly<{
174
125
  facts: LogoFacts;
175
126
  }>;
176
127
  export type HeaderLogoContext = HeaderLogoShapeContext | HeaderLogoFactsContext;
177
- export type HeaderNavigationContext = Readonly<{
178
- itemCount: number;
179
- }>;
180
- export type HeaderCtaContext = Readonly<{
181
- importance: 'low' | 'medium' | 'high';
182
- }>;
183
- export type HeaderBannerContext = Readonly<{
184
- persistentVisibility: 'none' | 'possible' | 'visible';
185
- }>;
128
+ export declare const defaultHeaderLogoContext: HeaderLogoContext;
186
129
  export type HeaderSelectionContext = Readonly<{
187
130
  openingSection: HeaderOpeningSectionContext;
188
131
  openingForeground: HeaderOpeningForeground;
189
132
  logo: HeaderLogoContext;
190
- navigation: HeaderNavigationContext;
191
- cta: HeaderCtaContext;
192
- banner: HeaderBannerContext;
193
- }>;
194
- export type RejectedHeaderLookReason = 'requires-image-hero-with-contrast-overlay' | 'too-many-nav-items' | LogoAccommodationRejectionReason | 'cta-treatment-unavailable';
195
- export type RejectedHeaderLook = Readonly<{
196
- lookId: HeaderLookId;
197
- reasons: readonly RejectedHeaderLookReason[];
198
- }>;
199
- export type HeaderSelectionResult = Readonly<{
200
- selectedLookId: HeaderLookId;
201
- selectedLook: HeaderLookDefinition;
202
- header: Theme['header'];
203
- brandPresentation: HeaderBrandPresentationSelection;
204
- rejected: readonly RejectedHeaderLook[];
205
- }>;
206
- export type HeaderLookResolutionInput = Readonly<{
207
- theme: Theme;
208
- recommendedLookIds: readonly HeaderLookId[];
209
- context?: Partial<HeaderSelectionContext>;
133
+ navigation: Readonly<{
134
+ itemCount: number;
135
+ }>;
136
+ cta: Readonly<{
137
+ importance: 'low' | 'medium' | 'high';
138
+ }>;
139
+ banner: Readonly<{
140
+ persistentVisibility: 'none' | 'possible' | 'visible';
141
+ }>;
210
142
  }>;
211
- export declare const defaultHeaderSelectionContext: HeaderSelectionContext;
212
- export declare function completeHeaderSelectionContext(context: Partial<HeaderSelectionContext> | undefined): HeaderSelectionContext;
@@ -0,0 +1,6 @@
1
+ import type { NavLinkStyle } from '../navigation/types';
2
+ import type { HeaderStyleNavTypography } from './headerLayoutTypes';
3
+ export declare function minimalNavLinkStyle(colorToken: string, hoverColorToken?: string, typography?: HeaderStyleNavTypography): NavLinkStyle;
4
+ export declare function underlineNavLinkStyle(colorToken: string, underlineColorToken?: string, typography?: HeaderStyleNavTypography): NavLinkStyle;
5
+ export declare function pillNavLinkStyle(colorToken: string, backgroundToken?: string, opacity?: number, typography?: HeaderStyleNavTypography): NavLinkStyle;
6
+ export declare function flatTabNavLinkStyle(colorToken: string, typography?: HeaderStyleNavTypography): NavLinkStyle;
@@ -1,6 +1,6 @@
1
1
  import type { Theme } from '../schema';
2
2
  import { type ThemeColorToken } from '../tokens';
3
- import type { HeaderSelectionContext, HeaderStyleDefinition } from './headerLooks';
3
+ import type { HeaderStyleDefinition } from './headerLayoutTypes';
4
4
  export type HeaderOpeningForeground = Readonly<{
5
5
  kind: 'known';
6
6
  token: ThemeColorToken;
@@ -8,15 +8,18 @@ export type HeaderOpeningForeground = Readonly<{
8
8
  }> | Readonly<{
9
9
  kind: 'unknown';
10
10
  }>;
11
+ export type HeaderOpeningForegroundContext = Readonly<{
12
+ openingForeground: HeaderOpeningForeground;
13
+ }>;
11
14
  export type HeaderStyleAvailability = Readonly<{
12
15
  kind: 'available';
13
16
  }> | Readonly<{
14
17
  kind: 'unavailable';
15
18
  reason: 'requires-known-opening-foreground';
16
19
  }>;
17
- export declare function headerStyleAvailability(style: HeaderStyleDefinition, context: Partial<HeaderSelectionContext> | undefined): HeaderStyleAvailability;
20
+ export declare function headerStyleAvailability(style: HeaderStyleDefinition, context: Partial<HeaderOpeningForegroundContext> | undefined): HeaderStyleAvailability;
18
21
  export declare function headerStyleAvailabilityReasonLabel(reason: Extract<HeaderStyleAvailability, {
19
22
  kind: 'unavailable';
20
23
  }>['reason']): string;
21
- export declare function applyOpeningForeground(theme: Theme, header: Theme['header'], style: HeaderStyleDefinition, context: Partial<HeaderSelectionContext> | undefined): Theme['header'];
22
- export declare function applyPageOpeningForegroundToTheme(theme: Theme, style: HeaderStyleDefinition | null | undefined, context: Partial<HeaderSelectionContext> | undefined): Theme;
24
+ export declare function applyOpeningForeground(theme: Theme, header: Theme['header'], style: HeaderStyleDefinition, context: Partial<HeaderOpeningForegroundContext> | undefined): Theme['header'];
25
+ export declare function applyPageOpeningForegroundToTheme(theme: Theme, style: HeaderStyleDefinition | null | undefined, context: Partial<HeaderOpeningForegroundContext> | undefined): Theme;
@@ -1,5 +1,5 @@
1
1
  import type { BlockDesignPlan, DesignBlockId, ResolvedBlockDesignPlan } from './types';
2
- import type { HeaderLookId, HeaderOpeningSectionContext } from './headerLooks';
2
+ import type { HeaderLayoutStyleSelection, HeaderOpeningSectionContext } from './headerLayoutStyles';
3
3
  import type { HeaderOpeningForeground } from './headerOpeningForeground';
4
4
  export type HeaderOpeningSectionRepair = 'promote-opening-hero-surface' | 'add-opening-contrast-overlay' | 'add-opening-top-spacing';
5
5
  export type HeaderOpeningSectionPlan<TBlockId extends DesignBlockId = DesignBlockId> = Readonly<{
@@ -13,7 +13,7 @@ export type HeaderOpeningContentSnapshot = Readonly<{
13
13
  }>;
14
14
  export declare function planGeneratedHeaderOpeningSection<TBlockId extends DesignBlockId>(input: Readonly<{
15
15
  plan: readonly BlockDesignPlan<TBlockId>[];
16
- recommendedHeaderLookIds: readonly HeaderLookId[];
16
+ recommendedHeaderSelections: readonly HeaderLayoutStyleSelection[];
17
17
  }>): HeaderOpeningSectionPlan<TBlockId>;
18
18
  export declare function deriveHeaderOpeningSectionContextFromContent(input: HeaderOpeningContentSnapshot): HeaderOpeningSectionContext;
19
19
  export declare function deriveHeaderOpeningForegroundFromContent(input: HeaderOpeningContentSnapshot): HeaderOpeningForeground;
@@ -1,3 +1,3 @@
1
1
  import type { Theme } from '../schema';
2
- import type { HeaderLayoutStyleSelection, HeaderSelectionContext } from './headerLookTypes';
3
- export declare function compileHeaderLayoutStyleSelection(theme: Theme, selection: HeaderLayoutStyleSelection, context?: Partial<HeaderSelectionContext>): Theme['header'];
2
+ import { type HeaderLayoutStyleResolution } from './headerLayoutTypes';
3
+ export declare function compileHeaderLayoutStyleSelection(theme: Theme, resolution: HeaderLayoutStyleResolution): Theme['header'];
@@ -0,0 +1,14 @@
1
+ import type { SectionStylesOverride } from '../schema';
2
+ import { type ImageSurfaceMotion, type ImageSurfaceTreatment } from './types';
3
+ type ImageBackground = Extract<NonNullable<SectionStylesOverride['background']>, {
4
+ type: 'image';
5
+ }>;
6
+ type Foreground = Readonly<{
7
+ textColor: NonNullable<ImageBackground['textColor']>;
8
+ headingColor: NonNullable<ImageBackground['headingColor']>;
9
+ linkColor: NonNullable<ImageBackground['linkColor']>;
10
+ supportingColor: NonNullable<ImageBackground['supportingColor']>;
11
+ }>;
12
+ export declare function withImageSurfaceMotion(background: ImageBackground, motion: ImageSurfaceMotion): ImageBackground;
13
+ export declare function compileImageSurfaceTreatmentBackground(background: ImageBackground, treatment: ImageSurfaceTreatment, foreground: Partial<Foreground> | undefined): ImageBackground | null;
14
+ export {};
@@ -13,7 +13,7 @@ export * from './designState';
13
13
  export * from './footerLooks';
14
14
  export * from './generatedSchemas';
15
15
  export * from './generatedDesignPipeline';
16
- export * from './headerLooks';
16
+ export * from './headerLayoutStyles';
17
17
  export * from './headerInteractionPalette';
18
18
  export * from './headerOpeningForeground';
19
19
  export * from './headerOpeningSection';
@@ -2,9 +2,9 @@ import type { PageDesignEditorReadModel } from './pageDesignEditorModel';
2
2
  import { type Theme } from '../schema';
3
3
  import { type ButtonStyleSelection } from '../buttons/styles';
4
4
  import { type CuratedSiteStyle } from './curatedSiteStyles';
5
- import { type FooterLookId, type FooterSelectionResult } from './footerLooks';
6
- import { type HeaderSelectionIdentity, type SiteThemeCompilationPlan } from './compilationPlan';
7
- import { type HeaderLayoutId, type HeaderLookId, type HeaderSelectionResult, type HeaderStyleId } from './headerLooks';
5
+ import { type FooterLookId } from './footerLooks';
6
+ import type { SiteThemeCompilationPlan } from './compilationPlan';
7
+ import { type HeaderLayoutStyleSelection } from './headerLayoutStyles';
8
8
  import { type CompiledBlockRuntimeFields, type CompiledBoundaryRuntime, type CompiledPageRuntime, type ComponentRuntimeRules, type DesignRuntimeRules, type SemanticSpacing, type SurfaceResolutionContext } from './runtimeCompiler';
9
9
  import { type AppearancePresetId, type DesignBlockId, type SiteStyleId } from './types';
10
10
  import { type CuratedSiteStyleTheme } from './siteStyleThemeCompiler';
@@ -30,7 +30,7 @@ export declare const previewCustomizePurpose: "preview-customize";
30
30
  /**
31
31
  * Compiles a curated Site Style into a persisted Theme payload using the site
32
32
  * style's defaults for the Style configurator selections. Thin wrapper around
33
- * `compileSiteThemeFromSelections` with the style's default curated palette.
33
+ * `compileReplacementSiteThemeFromSelections` with the style's default curated palette.
34
34
  */
35
35
  export declare function compileCuratedSiteStyleTheme(siteStyle: CuratedSiteStyle): CuratedSiteStyleTheme;
36
36
  export declare function defaultConcretePaletteForSiteStyle(siteStyle: CuratedSiteStyle): Theme['palette'];
@@ -39,6 +39,11 @@ export type SelectionFallbackWarning = Readonly<{
39
39
  kind: 'rejected-button-style';
40
40
  requested: string;
41
41
  fellBackTo: ButtonStyleSelection;
42
+ }> | Readonly<{
43
+ kind: 'repaired-header-selection';
44
+ requested: HeaderLayoutStyleSelection;
45
+ resolved: HeaderLayoutStyleSelection;
46
+ reason: 'style-not-curated-for-layout' | 'layout-not-curated-for-site-style';
42
47
  }>;
43
48
  type SiteThemeSelectionsCommonInput = Readonly<{
44
49
  siteStyle: CuratedSiteStyle;
@@ -55,62 +60,30 @@ export type UpdateSiteThemeSelectionsInput = SiteThemeSelectionsCommonInput & Re
55
60
  compilationPlan: Extract<SiteThemeCompilationPlan, {
56
61
  kind: 'update-selection';
57
62
  }>;
58
- }>;
59
- export type SiteThemeSelectionsInput = SiteThemeSelectionsCommonInput & Readonly<{
60
- compilationPlan: SiteThemeCompilationPlan;
63
+ currentHeaderSelection: HeaderLayoutStyleSelection;
61
64
  }>;
62
65
  type ResolvedSiteThemeSelections = Readonly<{
63
66
  buttonStyleSelection: ButtonStyleSelection;
64
- headerLookId: HeaderLookId | null;
65
- headerLayoutId: HeaderLayoutId | null;
66
- headerStyleId: HeaderStyleId | null;
67
+ headerSelection: HeaderLayoutStyleSelection;
67
68
  footerLookId: FooterLookId | null;
68
69
  }>;
69
70
  type ReplacementResolvedSiteThemeSelections = ResolvedSiteThemeSelections & Readonly<{
70
- headerLayoutId: HeaderLayoutId;
71
- headerStyleId: HeaderStyleId;
72
71
  footerLookId: FooterLookId;
73
72
  }>;
74
73
  type SiteThemeSelectionsBaseResult<TResolvedSelections extends ResolvedSiteThemeSelections> = Readonly<{
75
74
  theme: CuratedSiteStyleTheme;
76
75
  requestedSelections: Readonly<{
77
- headerLookId: HeaderLookId | null;
78
- headerLayoutId: HeaderLayoutId | null;
79
- headerStyleId: HeaderStyleId | null;
76
+ headerSelection: HeaderLayoutStyleSelection | null;
80
77
  footerLookId: FooterLookId | null;
81
78
  }>;
82
79
  resolvedSelections: TResolvedSelections;
83
- headerCompilation: Readonly<{
84
- kind: 'preserved';
85
- selection: HeaderSelectionIdentity;
86
- }> | Readonly<{
87
- kind: 'recompiled';
88
- result: HeaderSelectionResult;
89
- }>;
90
- footerCompilation: Readonly<{
91
- kind: 'preserved';
92
- footerLookId: FooterLookId | null;
93
- }> | Readonly<{
94
- kind: 'applied-look';
95
- result: FooterSelectionResult;
96
- }>;
97
80
  warnings: ReadonlyArray<SelectionFallbackWarning>;
98
81
  }>;
99
82
  export type ReplacementSiteThemeSelectionsResult = SiteThemeSelectionsBaseResult<ReplacementResolvedSiteThemeSelections>;
100
83
  export type UpdateSiteThemeSelectionsResult = SiteThemeSelectionsBaseResult<ResolvedSiteThemeSelections>;
101
84
  export type SiteThemeSelectionsResult = ReplacementSiteThemeSelectionsResult | UpdateSiteThemeSelectionsResult;
102
- /**
103
- * High-level, site-style-aware compiler. Resolves the user's button style and
104
- * palette values into theme tokens. Palette authority is always supplied as a
105
- * complete concrete value.
106
- *
107
- * Returns the resolved IDs so the caller can persist auto-pick decisions, plus
108
- * any fallback warnings the UI can surface as "we changed your selection"
109
- * notices.
110
- */
111
- export declare function compileSiteThemeFromSelections(input: ReplacementSiteThemeSelectionsInput): ReplacementSiteThemeSelectionsResult;
112
- export declare function compileSiteThemeFromSelections(input: UpdateSiteThemeSelectionsInput): UpdateSiteThemeSelectionsResult;
113
- export declare function compileSiteThemeFromSelections(input: SiteThemeSelectionsInput): SiteThemeSelectionsResult;
85
+ export declare function compileReplacementSiteThemeFromSelections(input: ReplacementSiteThemeSelectionsInput): ReplacementSiteThemeSelectionsResult;
86
+ export declare function compileUpdatedSiteThemeFromSelections(input: UpdateSiteThemeSelectionsInput): UpdateSiteThemeSelectionsResult;
114
87
  export declare function siteStyleIdFromTheme(theme: Pick<Theme, 'siteStyleId'> | null | undefined): SiteStyleId | null;
115
88
  export type EditorModelRuntimeLookOverride<TBlockId extends DesignBlockId = DesignBlockId> = Readonly<{
116
89
  kind: 'pinned';