@riverbankcms/sdk 0.135.1 → 0.136.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 (152) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +4 -8
  3. package/dist/{PreviewEditorSidebar-D4p_5TdY.mjs → PreviewEditorSidebar-BU5ZlhQR.mjs} +4 -4
  4. package/dist/{PreviewEditorUI-D0cRoTX1.mjs → PreviewEditorUI-9XkHL-bC.mjs} +3 -3
  5. package/dist/{PreviewQueryProvider-DcgaESkm.mjs → PreviewQueryProvider-wbEpXryy.mjs} +1 -1
  6. package/dist/{SdkPreviewModeRuntime-BKLtM3Nz.mjs → SdkPreviewModeRuntime-CnWmj-2B.mjs} +50 -99
  7. package/dist/{SiteChromeCustomizeContext-61X2m7QV.mjs → SiteChromeCustomizeContext-B6d5zkog.mjs} +2299 -1149
  8. package/dist/_dts/ai/src/contracts/proposals.d.ts +8 -554
  9. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +401 -2312
  10. package/dist/_dts/api/src/contentRuntime.d.ts +6 -0
  11. package/dist/_dts/api/src/endpoints.d.ts +7 -0
  12. package/dist/_dts/api/src/index.d.ts +1 -0
  13. package/dist/_dts/api/src/publicEventEndpointDefinitions.d.ts +7 -0
  14. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +26 -0
  15. package/dist/_dts/api/src/sdkBlockContentAdmission.d.ts +5 -0
  16. package/dist/_dts/api/src/sdkThemeWire.d.ts +6 -432
  17. package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +2 -3
  18. package/dist/_dts/block-form/src/utils/slug.d.ts +6 -0
  19. package/dist/_dts/blocks/src/PageRenderer.d.ts +12 -6
  20. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +48 -0
  21. package/dist/_dts/blocks/src/definitions.d.ts +14 -0
  22. package/dist/_dts/blocks/src/index.d.ts +4 -3
  23. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +40 -0
  24. package/dist/_dts/blocks/src/server.d.ts +2 -2
  25. package/dist/_dts/blocks/src/system/data/index.d.ts +2 -0
  26. package/dist/_dts/blocks/src/system/data/publicLoaderCachePolicy.d.ts +78 -0
  27. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +2 -18
  28. package/dist/_dts/blocks/src/system/manifest/validation.d.ts +103 -16
  29. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
  30. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +2 -1
  31. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -0
  32. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  33. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +19 -0
  34. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +52 -0
  35. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +24 -0
  36. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.d.ts +44 -18
  37. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +20 -3
  38. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/VerifyingTimeoutStep.d.ts +3 -1
  39. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +1 -0
  40. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.client.d.ts +2 -2
  41. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +40 -0
  42. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +2 -0
  43. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +43 -0
  44. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarDayCell.d.ts +3 -1
  45. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarNavigationChevron.d.ts +4 -0
  46. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/DayEventsModal.d.ts +2 -1
  47. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventModalContext.d.ts +3 -2
  48. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekAgendaView.d.ts +3 -0
  49. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekBoardView.d.ts +31 -3
  50. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekTimetableView.d.ts +3 -1
  51. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +9 -1
  52. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/timetableModel.d.ts +4 -3
  53. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +3 -3
  54. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +0 -1
  55. package/dist/_dts/calendar/src/grid.d.ts +24 -66
  56. package/dist/_dts/calendar/src/index.d.ts +2 -2
  57. package/dist/_dts/calendar/src/timetable.d.ts +5 -9
  58. package/dist/_dts/commerce/src/purchase/allocation.d.ts +11 -0
  59. package/dist/_dts/commerce/src/purchase/index.d.ts +2 -0
  60. package/dist/_dts/commerce/src/purchase/settlement.d.ts +33 -0
  61. package/dist/_dts/commerce/src/purchase/stripeCheckoutReturnUrl.d.ts +8 -0
  62. package/dist/_dts/content-model/src/templates/defaults.d.ts +6 -0
  63. package/dist/_dts/core/src/slug.d.ts +20 -5
  64. package/dist/_dts/preview-next/src/client/blocks/EditablePageRenderer.d.ts +1 -1
  65. package/dist/_dts/preview-next/src/client/preview/headerInteractionPaletteSurfaceState.d.ts +2 -1
  66. package/dist/_dts/sdk/src/client/publicLoaderCacheAccess.d.ts +6 -0
  67. package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -1
  68. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +10 -6
  69. package/dist/_dts/sdk/src/rendering/components/Block.shared.d.ts +0 -1
  70. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +4 -4
  71. package/dist/_dts/sdk/src/rendering/helpers/footerPageOutline.d.ts +3 -0
  72. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +3 -0
  73. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +1 -1
  74. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +17 -0
  75. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +9 -3
  76. package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +1 -1
  77. package/dist/_dts/sdk/src/rendering/index.d.ts +2 -2
  78. package/dist/_dts/sdk/src/rendering/overrideResolution.d.ts +7 -4
  79. package/dist/_dts/sdk/src/version.d.ts +1 -1
  80. package/dist/_dts/theme-core/src/cards/types.d.ts +8 -8
  81. package/dist/_dts/theme-core/src/data.d.ts +12 -0
  82. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  83. package/dist/_dts/theme-core/src/header/legacyHeaderVariant.d.ts +2 -6
  84. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +6 -807
  85. package/dist/_dts/theme-core/src/schema.d.ts +452 -1278
  86. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +213 -1
  87. package/dist/_dts/theme-core/src/site-styles/headerLayoutCatalog.d.ts +0 -29
  88. package/dist/_dts/theme-core/src/site-styles/headerLayoutStyles.d.ts +10 -0
  89. package/dist/_dts/theme-core/src/site-styles/headerLayoutTypes.d.ts +8 -5
  90. package/dist/_dts/theme-core/src/site-styles/headerOpeningForeground.d.ts +4 -4
  91. package/dist/_dts/theme-core/src/site-styles/headerStyleCompiler.d.ts +16 -2
  92. package/dist/_dts/theme-core/src/site-styles/headerStyleDefaults.d.ts +465 -0
  93. package/dist/_dts/theme-core/src/site-styles/headerStyleRecipe.d.ts +161 -0
  94. package/dist/client/{BookingConsentAgreement-Bz9znbpn.mjs → BookingConsentAgreement-DCch21a6.mjs} +2 -2
  95. package/dist/client/{DiscountCodeDisclosure-35Ru8yB9.mjs → DiscountCodeDisclosure-DIj1T59K.mjs} +1 -1
  96. package/dist/client/{EventCombined.client-BKB0ZxRR.mjs → EventCombined.client-BWVNlXTx.mjs} +226 -206
  97. package/dist/client/{EventListing.client-Dx8I21ok.mjs → EventListing.client-DVFCDe3i.mjs} +2 -2
  98. package/dist/client/{LeafletStaticMap-CEWx-Bhe.mjs → LeafletStaticMap-BY5mIHw9.mjs} +1 -1
  99. package/dist/client/{accordion-KIDsKTwS.mjs → accordion-CK29E8rG.mjs} +1 -1
  100. package/dist/client/{bookingForm-D96Rmp-5.mjs → bookingForm-DFvnet-N.mjs} +5 -5
  101. package/dist/client/bookings.mjs +86 -47
  102. package/dist/client/{carousel-YwUgyL66.mjs → carousel-BVU5NQlb.mjs} +1 -1
  103. package/dist/client/{cart-BbwuNrUT.mjs → cart-BNItcZVa.mjs} +3 -3
  104. package/dist/client/{checkout-hp1ucmEY.mjs → checkout-Bu6iCdkP.mjs} +3 -3
  105. package/dist/client/client.mjs +1950 -1031
  106. package/dist/client/{context-DljQn8L5.mjs → context-BImarOAq.mjs} +12 -0
  107. package/dist/client/{eventCalendar-DU4iNLpo.mjs → eventCalendar-DS2h-UXD.mjs} +256 -114
  108. package/dist/client/{eventCombined-CZuupW8m.mjs → eventCombined-Drt4Oq9p.mjs} +3 -3
  109. package/dist/client/{eventDetails-DPQWwCIi.mjs → eventDetails-Bl2vWgTX.mjs} +4 -3
  110. package/dist/client/{eventListing-C7oMidwS.mjs → eventListing-CS7PHY7v.mjs} +3 -3
  111. package/dist/client/{eventRegistration-zEiunlUs.mjs → eventRegistration-D-j8eNy2.mjs} +85 -41
  112. package/dist/client/{form-D2KIyCVJ.mjs → form-RMpoLTyr.mjs} +2 -2
  113. package/dist/client/{headerSection-CK5uChUK.mjs → headerSection-BYE3Lb3k.mjs} +2 -2
  114. package/dist/client/hooks.mjs +2225 -276
  115. package/dist/client/{locationMap-DLQNH1ln.mjs → locationMap-BxSr7Kkh.mjs} +2 -2
  116. package/dist/client/{newsletterForm-ZuhIG7fZ.mjs → newsletterForm-DerbXwFC.mjs} +2 -2
  117. package/dist/client/{productDetail-7hIcGeae.mjs → productDetail-4SZCLhAf.mjs} +3 -3
  118. package/dist/client/{productList-T4Cii1ot.mjs → productList-D7AP4GNq.mjs} +3 -3
  119. package/dist/client/{propsDecoder-mB0aC_Fi.mjs → propsDecoder-pzBeCh14.mjs} +94 -24
  120. package/dist/client/rendering/client.mjs +758 -464
  121. package/dist/client/rendering/islands.mjs +17 -17
  122. package/dist/client/rendering.mjs +2126 -1244
  123. package/dist/client/{scrollToBlock-Du5mHgvL.mjs → scrollToBlock-CduAKf8T.mjs} +1 -1
  124. package/dist/client/{shop-B5zAcKZn.mjs → shop-Cp5p_kGe.mjs} +6 -6
  125. package/dist/client/{shop-commerce-BKBZB6l5.mjs → shop-commerce-DicXYaYX.mjs} +5 -5
  126. package/dist/client/{shop-commerce-store-Cq4qlNtQ.mjs → shop-commerce-store-CGWnpY4K.mjs} +1 -1
  127. package/dist/client/{shopShared-DYGzEs9D.mjs → shopShared-BDf9ljkm.mjs} +3 -3
  128. package/dist/client/{useEventFilters-Bphkda8m.mjs → useEventFilters-DeeyGYuk.mjs} +3 -3
  129. package/dist/preview-next/before-render.mjs +7 -0
  130. package/dist/preview-next/client/runtime.mjs +4 -4
  131. package/dist/preview-next/keepAlive.mjs +7 -0
  132. package/dist/preview-next/middleware.mjs +7 -0
  133. package/dist/{previewAuthStore-C7ksxt5b.mjs → previewAuthStore-DbqBol0V.mjs} +7 -0
  134. package/dist/{sdk-runtime-BbIC8G4J.mjs → sdk-runtime-19MO27F0.mjs} +2 -2
  135. package/dist/{separator-CadhAtI7.mjs → separator-DaPLtJ1f.mjs} +1 -1
  136. package/dist/server/components.mjs +1527 -893
  137. package/dist/server/config-validation.mjs +65 -113
  138. package/dist/server/config.mjs +65 -113
  139. package/dist/server/data.mjs +65 -112
  140. package/dist/server/index.mjs +122 -4
  141. package/dist/server/manifest.mjs +0 -1
  142. package/dist/server/next.mjs +1432 -708
  143. package/dist/server/page-converter.mjs +58 -91
  144. package/dist/server/prebuild.mjs +1 -1
  145. package/dist/server/rendering/server.mjs +1682 -915
  146. package/dist/server/rendering.mjs +1694 -1020
  147. package/dist/server/routing.mjs +3230 -1843
  148. package/dist/server/server.mjs +21710 -19779
  149. package/dist/server/theme-bridge.mjs +656 -264
  150. package/dist/server/theme.mjs +2 -17
  151. package/dist/styles/index.css +609 -181
  152. package/package.json +1 -1
@@ -1,8 +1,10 @@
1
1
  import { type ButtonStyleSelection } from '../buttons/styles';
2
2
  import { type KnownCuratedPaletteValueKey } from '../palette/curated';
3
3
  import type { Theme } from '../schema';
4
- import { type HeaderLayoutId, type HeaderLayoutStyleSelection, type HeaderStyleId } from './headerLayoutStyles';
4
+ import { type HeaderLayoutId, type HeaderLayoutStyleSelection, type HeaderStyleId, type HeaderStyleIdValue } from './headerLayoutStyles';
5
5
  import { type FooterLookId } from './footerLooks';
6
+ import { type HeaderStyleRecipeOverrides } from './headerStyleDefaults';
7
+ import type { HeaderStyleRecipe } from './headerStyleRecipe';
6
8
  import { type CuratedChoice } from './curatedChoices';
7
9
  import { type AppearancePresetId, type DesignSystemTemplate, type HeadingDecoration, type NonEmptyReadonlyArray, type SiteStyleId } from './types';
8
10
  import { type SiteStyleHeroTypography } from './siteStyleTypography';
@@ -121,6 +123,16 @@ export type CuratedSiteStyle = Readonly<{
121
123
  headingDecoration: HeadingDecoration;
122
124
  recommendedAppearancePresetIds: readonly AppearancePresetId[];
123
125
  headerCuration: HeaderCuration;
126
+ /**
127
+ * Header appearance this style owns outright, keyed by catalogue style id.
128
+ * Absent entries take `defaultHeaderStyleRecipes`; a present entry is a whole
129
+ * recipe, never a partial merge. Mirrors `themeOverrides.cards`.
130
+ *
131
+ * No curated style authors one yet (ledger D5): the seam ships empty and
132
+ * adoption follows real site work, per the "do not pre-author" rule in
133
+ * docs/guides/site-styles.md.
134
+ */
135
+ headerStyleRecipes?: HeaderStyleRecipeOverrides;
124
136
  recommendedFooterLookIds: readonly FooterLookId[];
125
137
  /** Authored picker choices. First item is the default/fallback. */
126
138
  buttonStyleChoices: NonEmptyReadonlyArray<ButtonStyleChoice>;
@@ -167,6 +179,16 @@ export declare const curatedSiteStyles: readonly [Readonly<{
167
179
  headingDecoration: HeadingDecoration;
168
180
  recommendedAppearancePresetIds: readonly AppearancePresetId[];
169
181
  headerCuration: HeaderCuration;
182
+ /**
183
+ * Header appearance this style owns outright, keyed by catalogue style id.
184
+ * Absent entries take `defaultHeaderStyleRecipes`; a present entry is a whole
185
+ * recipe, never a partial merge. Mirrors `themeOverrides.cards`.
186
+ *
187
+ * No curated style authors one yet (ledger D5): the seam ships empty and
188
+ * adoption follows real site work, per the "do not pre-author" rule in
189
+ * docs/guides/site-styles.md.
190
+ */
191
+ headerStyleRecipes?: HeaderStyleRecipeOverrides;
170
192
  recommendedFooterLookIds: readonly FooterLookId[];
171
193
  /** Authored picker choices. First item is the default/fallback. */
172
194
  buttonStyleChoices: NonEmptyReadonlyArray<ButtonStyleChoice>;
@@ -202,6 +224,16 @@ export declare const curatedSiteStyles: readonly [Readonly<{
202
224
  headingDecoration: HeadingDecoration;
203
225
  recommendedAppearancePresetIds: readonly AppearancePresetId[];
204
226
  headerCuration: HeaderCuration;
227
+ /**
228
+ * Header appearance this style owns outright, keyed by catalogue style id.
229
+ * Absent entries take `defaultHeaderStyleRecipes`; a present entry is a whole
230
+ * recipe, never a partial merge. Mirrors `themeOverrides.cards`.
231
+ *
232
+ * No curated style authors one yet (ledger D5): the seam ships empty and
233
+ * adoption follows real site work, per the "do not pre-author" rule in
234
+ * docs/guides/site-styles.md.
235
+ */
236
+ headerStyleRecipes?: HeaderStyleRecipeOverrides;
205
237
  recommendedFooterLookIds: readonly FooterLookId[];
206
238
  /** Authored picker choices. First item is the default/fallback. */
207
239
  buttonStyleChoices: NonEmptyReadonlyArray<ButtonStyleChoice>;
@@ -237,6 +269,16 @@ export declare const curatedSiteStyles: readonly [Readonly<{
237
269
  headingDecoration: HeadingDecoration;
238
270
  recommendedAppearancePresetIds: readonly AppearancePresetId[];
239
271
  headerCuration: HeaderCuration;
272
+ /**
273
+ * Header appearance this style owns outright, keyed by catalogue style id.
274
+ * Absent entries take `defaultHeaderStyleRecipes`; a present entry is a whole
275
+ * recipe, never a partial merge. Mirrors `themeOverrides.cards`.
276
+ *
277
+ * No curated style authors one yet (ledger D5): the seam ships empty and
278
+ * adoption follows real site work, per the "do not pre-author" rule in
279
+ * docs/guides/site-styles.md.
280
+ */
281
+ headerStyleRecipes?: HeaderStyleRecipeOverrides;
240
282
  recommendedFooterLookIds: readonly FooterLookId[];
241
283
  /** Authored picker choices. First item is the default/fallback. */
242
284
  buttonStyleChoices: NonEmptyReadonlyArray<ButtonStyleChoice>;
@@ -272,6 +314,16 @@ export declare const curatedSiteStyles: readonly [Readonly<{
272
314
  headingDecoration: HeadingDecoration;
273
315
  recommendedAppearancePresetIds: readonly AppearancePresetId[];
274
316
  headerCuration: HeaderCuration;
317
+ /**
318
+ * Header appearance this style owns outright, keyed by catalogue style id.
319
+ * Absent entries take `defaultHeaderStyleRecipes`; a present entry is a whole
320
+ * recipe, never a partial merge. Mirrors `themeOverrides.cards`.
321
+ *
322
+ * No curated style authors one yet (ledger D5): the seam ships empty and
323
+ * adoption follows real site work, per the "do not pre-author" rule in
324
+ * docs/guides/site-styles.md.
325
+ */
326
+ headerStyleRecipes?: HeaderStyleRecipeOverrides;
275
327
  recommendedFooterLookIds: readonly FooterLookId[];
276
328
  /** Authored picker choices. First item is the default/fallback. */
277
329
  buttonStyleChoices: NonEmptyReadonlyArray<ButtonStyleChoice>;
@@ -307,6 +359,16 @@ export declare const curatedSiteStyles: readonly [Readonly<{
307
359
  headingDecoration: HeadingDecoration;
308
360
  recommendedAppearancePresetIds: readonly AppearancePresetId[];
309
361
  headerCuration: HeaderCuration;
362
+ /**
363
+ * Header appearance this style owns outright, keyed by catalogue style id.
364
+ * Absent entries take `defaultHeaderStyleRecipes`; a present entry is a whole
365
+ * recipe, never a partial merge. Mirrors `themeOverrides.cards`.
366
+ *
367
+ * No curated style authors one yet (ledger D5): the seam ships empty and
368
+ * adoption follows real site work, per the "do not pre-author" rule in
369
+ * docs/guides/site-styles.md.
370
+ */
371
+ headerStyleRecipes?: HeaderStyleRecipeOverrides;
310
372
  recommendedFooterLookIds: readonly FooterLookId[];
311
373
  /** Authored picker choices. First item is the default/fallback. */
312
374
  buttonStyleChoices: NonEmptyReadonlyArray<ButtonStyleChoice>;
@@ -342,6 +404,16 @@ export declare const curatedSiteStyles: readonly [Readonly<{
342
404
  headingDecoration: HeadingDecoration;
343
405
  recommendedAppearancePresetIds: readonly AppearancePresetId[];
344
406
  headerCuration: HeaderCuration;
407
+ /**
408
+ * Header appearance this style owns outright, keyed by catalogue style id.
409
+ * Absent entries take `defaultHeaderStyleRecipes`; a present entry is a whole
410
+ * recipe, never a partial merge. Mirrors `themeOverrides.cards`.
411
+ *
412
+ * No curated style authors one yet (ledger D5): the seam ships empty and
413
+ * adoption follows real site work, per the "do not pre-author" rule in
414
+ * docs/guides/site-styles.md.
415
+ */
416
+ headerStyleRecipes?: HeaderStyleRecipeOverrides;
345
417
  recommendedFooterLookIds: readonly FooterLookId[];
346
418
  /** Authored picker choices. First item is the default/fallback. */
347
419
  buttonStyleChoices: NonEmptyReadonlyArray<ButtonStyleChoice>;
@@ -377,6 +449,16 @@ export declare const curatedSiteStyles: readonly [Readonly<{
377
449
  headingDecoration: HeadingDecoration;
378
450
  recommendedAppearancePresetIds: readonly AppearancePresetId[];
379
451
  headerCuration: HeaderCuration;
452
+ /**
453
+ * Header appearance this style owns outright, keyed by catalogue style id.
454
+ * Absent entries take `defaultHeaderStyleRecipes`; a present entry is a whole
455
+ * recipe, never a partial merge. Mirrors `themeOverrides.cards`.
456
+ *
457
+ * No curated style authors one yet (ledger D5): the seam ships empty and
458
+ * adoption follows real site work, per the "do not pre-author" rule in
459
+ * docs/guides/site-styles.md.
460
+ */
461
+ headerStyleRecipes?: HeaderStyleRecipeOverrides;
380
462
  recommendedFooterLookIds: readonly FooterLookId[];
381
463
  /** Authored picker choices. First item is the default/fallback. */
382
464
  buttonStyleChoices: NonEmptyReadonlyArray<ButtonStyleChoice>;
@@ -412,6 +494,16 @@ export declare const curatedSiteStyles: readonly [Readonly<{
412
494
  headingDecoration: HeadingDecoration;
413
495
  recommendedAppearancePresetIds: readonly AppearancePresetId[];
414
496
  headerCuration: HeaderCuration;
497
+ /**
498
+ * Header appearance this style owns outright, keyed by catalogue style id.
499
+ * Absent entries take `defaultHeaderStyleRecipes`; a present entry is a whole
500
+ * recipe, never a partial merge. Mirrors `themeOverrides.cards`.
501
+ *
502
+ * No curated style authors one yet (ledger D5): the seam ships empty and
503
+ * adoption follows real site work, per the "do not pre-author" rule in
504
+ * docs/guides/site-styles.md.
505
+ */
506
+ headerStyleRecipes?: HeaderStyleRecipeOverrides;
415
507
  recommendedFooterLookIds: readonly FooterLookId[];
416
508
  /** Authored picker choices. First item is the default/fallback. */
417
509
  buttonStyleChoices: NonEmptyReadonlyArray<ButtonStyleChoice>;
@@ -447,6 +539,16 @@ export declare const curatedSiteStyles: readonly [Readonly<{
447
539
  headingDecoration: HeadingDecoration;
448
540
  recommendedAppearancePresetIds: readonly AppearancePresetId[];
449
541
  headerCuration: HeaderCuration;
542
+ /**
543
+ * Header appearance this style owns outright, keyed by catalogue style id.
544
+ * Absent entries take `defaultHeaderStyleRecipes`; a present entry is a whole
545
+ * recipe, never a partial merge. Mirrors `themeOverrides.cards`.
546
+ *
547
+ * No curated style authors one yet (ledger D5): the seam ships empty and
548
+ * adoption follows real site work, per the "do not pre-author" rule in
549
+ * docs/guides/site-styles.md.
550
+ */
551
+ headerStyleRecipes?: HeaderStyleRecipeOverrides;
450
552
  recommendedFooterLookIds: readonly FooterLookId[];
451
553
  /** Authored picker choices. First item is the default/fallback. */
452
554
  buttonStyleChoices: NonEmptyReadonlyArray<ButtonStyleChoice>;
@@ -482,6 +584,16 @@ export declare const curatedSiteStyles: readonly [Readonly<{
482
584
  headingDecoration: HeadingDecoration;
483
585
  recommendedAppearancePresetIds: readonly AppearancePresetId[];
484
586
  headerCuration: HeaderCuration;
587
+ /**
588
+ * Header appearance this style owns outright, keyed by catalogue style id.
589
+ * Absent entries take `defaultHeaderStyleRecipes`; a present entry is a whole
590
+ * recipe, never a partial merge. Mirrors `themeOverrides.cards`.
591
+ *
592
+ * No curated style authors one yet (ledger D5): the seam ships empty and
593
+ * adoption follows real site work, per the "do not pre-author" rule in
594
+ * docs/guides/site-styles.md.
595
+ */
596
+ headerStyleRecipes?: HeaderStyleRecipeOverrides;
485
597
  recommendedFooterLookIds: readonly FooterLookId[];
486
598
  /** Authored picker choices. First item is the default/fallback. */
487
599
  buttonStyleChoices: NonEmptyReadonlyArray<ButtonStyleChoice>;
@@ -517,6 +629,16 @@ export declare const curatedSiteStyles: readonly [Readonly<{
517
629
  headingDecoration: HeadingDecoration;
518
630
  recommendedAppearancePresetIds: readonly AppearancePresetId[];
519
631
  headerCuration: HeaderCuration;
632
+ /**
633
+ * Header appearance this style owns outright, keyed by catalogue style id.
634
+ * Absent entries take `defaultHeaderStyleRecipes`; a present entry is a whole
635
+ * recipe, never a partial merge. Mirrors `themeOverrides.cards`.
636
+ *
637
+ * No curated style authors one yet (ledger D5): the seam ships empty and
638
+ * adoption follows real site work, per the "do not pre-author" rule in
639
+ * docs/guides/site-styles.md.
640
+ */
641
+ headerStyleRecipes?: HeaderStyleRecipeOverrides;
520
642
  recommendedFooterLookIds: readonly FooterLookId[];
521
643
  /** Authored picker choices. First item is the default/fallback. */
522
644
  buttonStyleChoices: NonEmptyReadonlyArray<ButtonStyleChoice>;
@@ -552,6 +674,16 @@ export declare const curatedSiteStyles: readonly [Readonly<{
552
674
  headingDecoration: HeadingDecoration;
553
675
  recommendedAppearancePresetIds: readonly AppearancePresetId[];
554
676
  headerCuration: HeaderCuration;
677
+ /**
678
+ * Header appearance this style owns outright, keyed by catalogue style id.
679
+ * Absent entries take `defaultHeaderStyleRecipes`; a present entry is a whole
680
+ * recipe, never a partial merge. Mirrors `themeOverrides.cards`.
681
+ *
682
+ * No curated style authors one yet (ledger D5): the seam ships empty and
683
+ * adoption follows real site work, per the "do not pre-author" rule in
684
+ * docs/guides/site-styles.md.
685
+ */
686
+ headerStyleRecipes?: HeaderStyleRecipeOverrides;
555
687
  recommendedFooterLookIds: readonly FooterLookId[];
556
688
  /** Authored picker choices. First item is the default/fallback. */
557
689
  buttonStyleChoices: NonEmptyReadonlyArray<ButtonStyleChoice>;
@@ -587,6 +719,16 @@ export declare const curatedSiteStyles: readonly [Readonly<{
587
719
  headingDecoration: HeadingDecoration;
588
720
  recommendedAppearancePresetIds: readonly AppearancePresetId[];
589
721
  headerCuration: HeaderCuration;
722
+ /**
723
+ * Header appearance this style owns outright, keyed by catalogue style id.
724
+ * Absent entries take `defaultHeaderStyleRecipes`; a present entry is a whole
725
+ * recipe, never a partial merge. Mirrors `themeOverrides.cards`.
726
+ *
727
+ * No curated style authors one yet (ledger D5): the seam ships empty and
728
+ * adoption follows real site work, per the "do not pre-author" rule in
729
+ * docs/guides/site-styles.md.
730
+ */
731
+ headerStyleRecipes?: HeaderStyleRecipeOverrides;
590
732
  recommendedFooterLookIds: readonly FooterLookId[];
591
733
  /** Authored picker choices. First item is the default/fallback. */
592
734
  buttonStyleChoices: NonEmptyReadonlyArray<ButtonStyleChoice>;
@@ -622,6 +764,16 @@ export declare const curatedSiteStyles: readonly [Readonly<{
622
764
  headingDecoration: HeadingDecoration;
623
765
  recommendedAppearancePresetIds: readonly AppearancePresetId[];
624
766
  headerCuration: HeaderCuration;
767
+ /**
768
+ * Header appearance this style owns outright, keyed by catalogue style id.
769
+ * Absent entries take `defaultHeaderStyleRecipes`; a present entry is a whole
770
+ * recipe, never a partial merge. Mirrors `themeOverrides.cards`.
771
+ *
772
+ * No curated style authors one yet (ledger D5): the seam ships empty and
773
+ * adoption follows real site work, per the "do not pre-author" rule in
774
+ * docs/guides/site-styles.md.
775
+ */
776
+ headerStyleRecipes?: HeaderStyleRecipeOverrides;
625
777
  recommendedFooterLookIds: readonly FooterLookId[];
626
778
  /** Authored picker choices. First item is the default/fallback. */
627
779
  buttonStyleChoices: NonEmptyReadonlyArray<ButtonStyleChoice>;
@@ -657,6 +809,16 @@ export declare const curatedSiteStyles: readonly [Readonly<{
657
809
  headingDecoration: HeadingDecoration;
658
810
  recommendedAppearancePresetIds: readonly AppearancePresetId[];
659
811
  headerCuration: HeaderCuration;
812
+ /**
813
+ * Header appearance this style owns outright, keyed by catalogue style id.
814
+ * Absent entries take `defaultHeaderStyleRecipes`; a present entry is a whole
815
+ * recipe, never a partial merge. Mirrors `themeOverrides.cards`.
816
+ *
817
+ * No curated style authors one yet (ledger D5): the seam ships empty and
818
+ * adoption follows real site work, per the "do not pre-author" rule in
819
+ * docs/guides/site-styles.md.
820
+ */
821
+ headerStyleRecipes?: HeaderStyleRecipeOverrides;
660
822
  recommendedFooterLookIds: readonly FooterLookId[];
661
823
  /** Authored picker choices. First item is the default/fallback. */
662
824
  buttonStyleChoices: NonEmptyReadonlyArray<ButtonStyleChoice>;
@@ -692,6 +854,16 @@ export declare const curatedSiteStyles: readonly [Readonly<{
692
854
  headingDecoration: HeadingDecoration;
693
855
  recommendedAppearancePresetIds: readonly AppearancePresetId[];
694
856
  headerCuration: HeaderCuration;
857
+ /**
858
+ * Header appearance this style owns outright, keyed by catalogue style id.
859
+ * Absent entries take `defaultHeaderStyleRecipes`; a present entry is a whole
860
+ * recipe, never a partial merge. Mirrors `themeOverrides.cards`.
861
+ *
862
+ * No curated style authors one yet (ledger D5): the seam ships empty and
863
+ * adoption follows real site work, per the "do not pre-author" rule in
864
+ * docs/guides/site-styles.md.
865
+ */
866
+ headerStyleRecipes?: HeaderStyleRecipeOverrides;
695
867
  recommendedFooterLookIds: readonly FooterLookId[];
696
868
  /** Authored picker choices. First item is the default/fallback. */
697
869
  buttonStyleChoices: NonEmptyReadonlyArray<ButtonStyleChoice>;
@@ -727,6 +899,16 @@ export declare const curatedSiteStyles: readonly [Readonly<{
727
899
  headingDecoration: HeadingDecoration;
728
900
  recommendedAppearancePresetIds: readonly AppearancePresetId[];
729
901
  headerCuration: HeaderCuration;
902
+ /**
903
+ * Header appearance this style owns outright, keyed by catalogue style id.
904
+ * Absent entries take `defaultHeaderStyleRecipes`; a present entry is a whole
905
+ * recipe, never a partial merge. Mirrors `themeOverrides.cards`.
906
+ *
907
+ * No curated style authors one yet (ledger D5): the seam ships empty and
908
+ * adoption follows real site work, per the "do not pre-author" rule in
909
+ * docs/guides/site-styles.md.
910
+ */
911
+ headerStyleRecipes?: HeaderStyleRecipeOverrides;
730
912
  recommendedFooterLookIds: readonly FooterLookId[];
731
913
  /** Authored picker choices. First item is the default/fallback. */
732
914
  buttonStyleChoices: NonEmptyReadonlyArray<ButtonStyleChoice>;
@@ -762,6 +944,16 @@ export declare const curatedSiteStyles: readonly [Readonly<{
762
944
  headingDecoration: HeadingDecoration;
763
945
  recommendedAppearancePresetIds: readonly AppearancePresetId[];
764
946
  headerCuration: HeaderCuration;
947
+ /**
948
+ * Header appearance this style owns outright, keyed by catalogue style id.
949
+ * Absent entries take `defaultHeaderStyleRecipes`; a present entry is a whole
950
+ * recipe, never a partial merge. Mirrors `themeOverrides.cards`.
951
+ *
952
+ * No curated style authors one yet (ledger D5): the seam ships empty and
953
+ * adoption follows real site work, per the "do not pre-author" rule in
954
+ * docs/guides/site-styles.md.
955
+ */
956
+ headerStyleRecipes?: HeaderStyleRecipeOverrides;
765
957
  recommendedFooterLookIds: readonly FooterLookId[];
766
958
  /** Authored picker choices. First item is the default/fallback. */
767
959
  buttonStyleChoices: NonEmptyReadonlyArray<ButtonStyleChoice>;
@@ -798,6 +990,16 @@ export declare const curatedSiteStylesById: Map<SiteStyleId, Readonly<{
798
990
  headingDecoration: HeadingDecoration;
799
991
  recommendedAppearancePresetIds: readonly AppearancePresetId[];
800
992
  headerCuration: HeaderCuration;
993
+ /**
994
+ * Header appearance this style owns outright, keyed by catalogue style id.
995
+ * Absent entries take `defaultHeaderStyleRecipes`; a present entry is a whole
996
+ * recipe, never a partial merge. Mirrors `themeOverrides.cards`.
997
+ *
998
+ * No curated style authors one yet (ledger D5): the seam ships empty and
999
+ * adoption follows real site work, per the "do not pre-author" rule in
1000
+ * docs/guides/site-styles.md.
1001
+ */
1002
+ headerStyleRecipes?: HeaderStyleRecipeOverrides;
801
1003
  recommendedFooterLookIds: readonly FooterLookId[];
802
1004
  /** Authored picker choices. First item is the default/fallback. */
803
1005
  buttonStyleChoices: NonEmptyReadonlyArray<ButtonStyleChoice>;
@@ -808,6 +1010,16 @@ export declare const curatedSiteStylesById: Map<SiteStyleId, Readonly<{
808
1010
  /** Optional concrete hero typography applied with the site style. */
809
1011
  heroTypography?: SiteStyleHeroTypography;
810
1012
  }>>;
1013
+ /**
1014
+ * The header appearance a persisted theme actually renders: the catalogue
1015
+ * recipe unless the theme's own site style has taken that id over (#1318).
1016
+ *
1017
+ * Consumers that hold a theme and a selected style id — the public frontend and
1018
+ * the chrome customiser — go through here rather than reading the style
1019
+ * definition, so a site-style override is visible to every reader rather than
1020
+ * only to the compiler.
1021
+ */
1022
+ export declare function headerStyleRecipeForTheme(theme: Pick<Theme, 'siteStyleId'> | null | undefined, styleId: HeaderStyleIdValue): HeaderStyleRecipe;
811
1023
  export declare function getCuratedSiteStyle(id: SiteStyleId): CuratedSiteStyle | null;
812
1024
  export declare function designRuntimeRulesForSiteStyle(siteStyle: CuratedSiteStyle | null | undefined): DesignRuntimeRules;
813
1025
  export declare function designRuntimeRulesForTheme(theme: Pick<Theme, 'siteStyleId'> | null | undefined): DesignRuntimeRules;
@@ -141,101 +141,76 @@ export declare const headerStyleCatalog: readonly [{
141
141
  readonly label: "Minimal";
142
142
  readonly description: "Quiet surface with simple color-change navigation.";
143
143
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
144
- readonly navTypography: "plain";
145
144
  }, {
146
145
  readonly id: HeaderStyleId;
147
146
  readonly label: "Seamless";
148
147
  readonly description: "Borderless surface with underline hover for a quieter page transition.";
149
148
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
150
- readonly navTypography: "plain";
151
149
  }, {
152
150
  readonly id: HeaderStyleId;
153
151
  readonly label: "Soft Bar";
154
152
  readonly description: "Soft tinted surface with gentle pill hover states.";
155
153
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
156
- readonly navTypography: "plain";
157
154
  }, {
158
155
  readonly id: HeaderStyleId;
159
156
  readonly label: "Pill Nav";
160
157
  readonly description: "A calm pill navigation rail over a neutral header.";
161
158
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
162
- readonly navTypography: "plain";
163
159
  }, {
164
160
  readonly id: HeaderStyleId;
165
161
  readonly label: "Brand Bar";
166
162
  readonly description: "Solid brand surface with high-contrast navigation.";
167
163
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
168
- readonly navTypography: "brand-caps";
169
164
  }, {
170
165
  readonly id: HeaderStyleId;
171
166
  readonly label: "Brand Underline";
172
167
  readonly description: "Brand surface with underline-grow navigation.";
173
168
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
174
- readonly navTypography: "brand-caps";
175
169
  }, {
176
170
  readonly id: HeaderStyleId;
177
171
  readonly label: "Brand Pill";
178
172
  readonly description: "Solid brand surface with rounded active and hover states.";
179
173
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
180
- readonly navTypography: "brand-caps";
181
174
  }, {
182
175
  readonly id: HeaderStyleId;
183
176
  readonly label: "Brand Capsule";
184
177
  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
178
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
186
- readonly navTypography: "quiet-caps";
187
179
  }, {
188
180
  readonly id: HeaderStyleId;
189
181
  readonly label: "Serif Line";
190
182
  readonly description: "Typographic logo treatment with understated underline navigation.";
191
183
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
192
- readonly navTypography: "heading";
193
184
  }, {
194
185
  readonly id: HeaderStyleId;
195
186
  readonly label: "Flat Tabs";
196
187
  readonly description: "Flat block hover and active states with a Swiss utility feel.";
197
188
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
198
- readonly navTypography: "quiet-caps";
199
189
  }, {
200
190
  readonly id: HeaderStyleId;
201
191
  readonly label: "Glass";
202
192
  readonly description: "Translucent chrome with frosted navigation backing.";
203
193
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
204
- readonly navTypography: "plain";
205
194
  }, {
206
195
  readonly id: HeaderStyleId;
207
196
  readonly label: "Clear Split";
208
197
  readonly description: "Floating logo with transparent navigation and no shared shell.";
209
198
  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
199
  }, {
220
200
  readonly id: HeaderStyleId;
221
201
  readonly label: "Soft Shell";
222
202
  readonly description: "Floating rounded shell with soft pill navigation states.";
223
203
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
224
- readonly navTypography: "plain";
225
204
  }, {
226
205
  readonly id: HeaderStyleId;
227
206
  readonly label: "Split Glass";
228
207
  readonly description: "Logo floats independently while the navigation sits in a glass rail.";
229
208
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
230
- readonly navTypography: "quiet-caps";
231
- readonly openingForegroundTarget: "brand-only";
232
209
  }, {
233
210
  readonly id: HeaderStyleId;
234
211
  readonly label: "Split Pill";
235
212
  readonly description: "Logo floats independently with a soft pill-backed navigation rail.";
236
213
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
237
- readonly navTypography: "heading";
238
- readonly openingForegroundTarget: "brand-only";
239
214
  }];
240
215
  export declare const headerLayoutsById: Map<HeaderLayoutId, Readonly<{
241
216
  id: HeaderLayoutId;
@@ -252,10 +227,6 @@ export declare const headerStylesById: Map<HeaderStyleId, Readonly<{
252
227
  label: string;
253
228
  description: string;
254
229
  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
230
  }>>;
260
231
  export declare const headerStyleCompatibilityOrder: {
261
232
  readonly classic: readonly ["minimal", "fine-line", "soft-bar", "pill-nav", "brand-bar", "brand-underline", "brand-pill", "brand-capsule", "serif-line", "flat-tabs"];
@@ -2,5 +2,15 @@ export * from './headerLayoutTypes';
2
2
  export * from './headerLayoutCatalog';
3
3
  export * from './headerLayoutResolution';
4
4
  export * from './headerStyleCompiler';
5
+ /**
6
+ * The recipe modules are re-exported by name rather than with `export *`.
7
+ * `compileHeaderRecipe` and `headerForLayout` are deliberately absent: the only
8
+ * supported way to compile a header is `compileHeaderLayoutStyleSelection`,
9
+ * which resolves the recipe and applies the interaction palette. A consumer
10
+ * reaching the interpreter directly would be a second compilation authority,
11
+ * which is the thing #1318 removes.
12
+ */
13
+ export { type HeaderStyleRecipe, type HeaderStyleRecipeCore, type HeaderToneRecipe, type HeaderBackgroundRecipe, type HeaderNavRecipe, type HeaderShadowRecipe, type HeaderFrameRecipe, } from './headerStyleRecipe';
14
+ export { defaultHeaderStyleRecipes, resolveHeaderStyleRecipe, type HeaderStyleRecipeOverrides, type HeaderStyleRecipeOwner, } from './headerStyleDefaults';
5
15
  export declare const guaranteedFallbackHeaderLayoutId: import("../../../blocks/src/index").HeaderLayoutId;
6
16
  export declare const guaranteedFallbackHeaderStyleId: import("../../../blocks/src/index").HeaderStyleId;
@@ -1,5 +1,4 @@
1
1
  import type { ThemeHeader } from '../schema';
2
- import type { HeaderInteractionPaletteOptionGroup } from './headerInteractionPalette';
3
2
  import type { ResolvedSurfaceForeground } from '../surfaces';
4
3
  import { type BrandDisplayMode, type LogoAccommodationOption, type LogoFacts, type LogoSizePolicy } from './logoBranding';
5
4
  import { type Brand } from './types';
@@ -47,15 +46,19 @@ export type HeaderLayoutDefinition = Readonly<{
47
46
  logoAccommodations: readonly LogoAccommodationOption[];
48
47
  openingRequirement: HeaderOpeningRequirement;
49
48
  }>;
49
+ /**
50
+ * Metadata only: what a style is called and where it may be used. Never what it
51
+ * looks like — every appearance field moved to `HeaderStyleRecipe` in #1318
52
+ * (`navTypography` under ledger D7, then `openingForegroundTarget`,
53
+ * `scrollTreatment` and `interactionPalette` under D19), so a site style can own
54
+ * all of it. If a field here ever answers "what does this look like", it is in
55
+ * the wrong file.
56
+ */
50
57
  export type HeaderStyleDefinition = Readonly<{
51
58
  id: HeaderStyleId;
52
59
  label: string;
53
60
  description: string;
54
61
  supportedLayoutIds: readonly HeaderLayoutId[];
55
- navTypography: HeaderStyleNavTypography;
56
- openingForegroundTarget?: 'brand-only' | 'all';
57
- scrollTreatment?: 'contrast-glass';
58
- interactionPalette?: HeaderInteractionPaletteOptionGroup;
59
62
  }>;
60
63
  export type HeaderLayoutStyleSelection = Readonly<{
61
64
  layoutId: HeaderLayoutId;
@@ -1,6 +1,6 @@
1
1
  import type { Theme } from '../schema';
2
2
  import type { ResolvedSurfaceForeground } from '../surfaces';
3
- import type { HeaderStyleDefinition } from './headerLayoutTypes';
3
+ import type { HeaderStyleRecipe } from './headerStyleRecipe';
4
4
  export type HeaderOpeningForegroundContext = Readonly<{
5
5
  openingForeground: ResolvedSurfaceForeground;
6
6
  }>;
@@ -10,9 +10,9 @@ export type HeaderStyleAvailability = Readonly<{
10
10
  kind: 'unavailable';
11
11
  reason: 'requires-known-opening-foreground';
12
12
  }>;
13
- export declare function headerStyleAvailability(style: HeaderStyleDefinition, context: Partial<HeaderOpeningForegroundContext> | undefined): HeaderStyleAvailability;
13
+ export declare function headerStyleAvailability(recipe: HeaderStyleRecipe, context: Partial<HeaderOpeningForegroundContext> | undefined): HeaderStyleAvailability;
14
14
  export declare function headerStyleAvailabilityReasonLabel(reason: Extract<HeaderStyleAvailability, {
15
15
  kind: 'unavailable';
16
16
  }>['reason']): string;
17
- export declare function applyOpeningForeground(theme: Theme, header: Theme['header'], style: HeaderStyleDefinition, context: Partial<HeaderOpeningForegroundContext> | undefined): Theme['header'];
18
- export declare function applyPageOpeningForegroundToTheme(theme: Theme, style: HeaderStyleDefinition | null | undefined, context: Partial<HeaderOpeningForegroundContext> | undefined): Theme;
17
+ export declare function applyOpeningForeground(theme: Theme, header: Theme['header'], recipe: HeaderStyleRecipe, context: Partial<HeaderOpeningForegroundContext> | undefined): Theme['header'];
18
+ export declare function applyPageOpeningForegroundToTheme(theme: Theme, recipe: HeaderStyleRecipe | null | undefined, context: Partial<HeaderOpeningForegroundContext> | undefined): Theme;
@@ -1,3 +1,17 @@
1
1
  import type { Theme } from '../schema';
2
- import { type HeaderLayoutStyleResolution } from './headerLayoutTypes';
3
- export declare function compileHeaderLayoutStyleSelection(theme: Theme, resolution: HeaderLayoutStyleResolution): Theme['header'];
2
+ import type { HeaderLayoutStyleResolution } from './headerLayoutTypes';
3
+ import { type HeaderStyleRecipeOwner } from './headerStyleDefaults';
4
+ /**
5
+ * The header compilation pipeline: pick the recipe, interpret it, then apply
6
+ * the user's interaction-palette preference.
7
+ *
8
+ * Appearance decisions live in `headerStyleDefaults.ts` (data), optionally
9
+ * taken over per site style, and `headerStyleRecipe.ts` (one pure interpreter).
10
+ * Nothing here switches on a header style id.
11
+ *
12
+ * `siteStyle` is required rather than optional: a caller that has no resolved
13
+ * site style has to say so, because silently falling back to the catalogue
14
+ * default is exactly the ownership leak this slice closes. Pass `null` when
15
+ * there genuinely is no site style (initial site provisioning).
16
+ */
17
+ export declare function compileHeaderLayoutStyleSelection(theme: Theme, resolution: HeaderLayoutStyleResolution, siteStyle: HeaderStyleRecipeOwner | null): Theme['header'];