@riverbankcms/sdk 0.144.0 → 0.145.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 (162) hide show
  1. package/dist/{PreviewEditorSidebar-CQZNnFiM.mjs → PreviewEditorSidebar-O-V6Pl5a.mjs} +4 -4
  2. package/dist/{PreviewEditorUI-DCNxnmI0.mjs → PreviewEditorUI-1UlX_9cw.mjs} +3 -3
  3. package/dist/{PreviewQueryProvider-BCYICImX.mjs → PreviewQueryProvider-BxGwdOCV.mjs} +1 -1
  4. package/dist/{SdkPreviewModeRuntime-BJolUbr1.mjs → SdkPreviewModeRuntime-DYbA_4iv.mjs} +419 -348
  5. package/dist/{SiteChromeCustomizeContext-CKgEpoxi.mjs → SiteChromeCustomizeContext-CNTKQ9nx.mjs} +2081 -1313
  6. package/dist/_dts/ai/src/contracts/proposals.d.ts +4719 -66
  7. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +429 -6
  8. package/dist/_dts/api/src/appointmentEndpointDefinitions.d.ts +49 -0
  9. package/dist/_dts/api/src/appointmentServiceCategoryEndpoints.d.ts +75 -0
  10. package/dist/_dts/api/src/appointmentServiceContracts.d.ts +80 -0
  11. package/dist/_dts/api/src/appointmentSetup.d.ts +8 -1
  12. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +2 -12
  13. package/dist/_dts/api/src/communications.d.ts +14 -22
  14. package/dist/_dts/api/src/contentRuntime.d.ts +2 -0
  15. package/dist/_dts/api/src/endpoints.d.ts +105 -58
  16. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  17. package/dist/_dts/api/src/launchReadiness.d.ts +2 -0
  18. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +0 -23
  19. package/dist/_dts/api/src/onboarding/confirmationResend.d.ts +3 -0
  20. package/dist/_dts/api/src/publicBookingService.d.ts +35 -1
  21. package/dist/_dts/api/src/publicExperience/newsletterEndpoints.d.ts +13 -0
  22. package/dist/_dts/api/src/publicNewsletterEndpointDefinitions.d.ts +58 -0
  23. package/dist/_dts/api/src/schemas/admin-observability-logs.d.ts +3 -3
  24. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +2 -6
  25. package/dist/_dts/api/src/types.d.ts +2 -1
  26. package/dist/_dts/blocks/src/PageRenderer.d.ts +4 -4
  27. package/dist/_dts/blocks/src/bindings/index.d.ts +2 -2
  28. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +24 -0
  29. package/dist/_dts/blocks/src/index.d.ts +1 -1
  30. package/dist/_dts/blocks/src/pageRenderJoins.d.ts +68 -0
  31. package/dist/_dts/blocks/src/pageRenderPlan.d.ts +8 -27
  32. package/dist/_dts/blocks/src/pageRenderPreparation.d.ts +7 -4
  33. package/dist/_dts/blocks/src/pageRendererBoundaries.d.ts +40 -23
  34. package/dist/_dts/blocks/src/server.d.ts +1 -1
  35. package/dist/_dts/blocks/src/system/blocks/appointment-services.d.ts +2 -0
  36. package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +2 -2
  37. package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +1 -1
  38. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
  39. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -47
  40. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +29 -3
  41. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +8 -1
  42. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +22 -2
  43. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +3 -1
  44. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +57 -2
  45. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.service-categories.d.ts +29 -0
  46. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.service-choices.d.ts +13 -0
  47. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +3 -3
  48. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +13 -1
  49. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +1 -1
  50. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +3 -3
  51. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +20 -1
  52. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +2 -0
  53. package/dist/_dts/content-model/src/content-types/schema.d.ts +1 -1
  54. package/dist/_dts/core/src/appointment-service-categories.d.ts +108 -0
  55. package/dist/_dts/core/src/editor-state.d.ts +6 -0
  56. package/dist/_dts/core/src/index.d.ts +1 -0
  57. package/dist/_dts/core/src/public-profile.d.ts +9 -0
  58. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +663 -241
  59. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +6 -0
  60. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +16 -1
  61. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/types.d.ts +13 -0
  62. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/utils.d.ts +29 -0
  63. package/dist/_dts/preview-next/src/client/blocks/BoundaryControl.d.ts +7 -2
  64. package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +1 -1
  65. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +1 -0
  66. package/dist/_dts/preview-next/src/client/blocks/previewProjection/applyPreviewProjections.d.ts +1 -3
  67. package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -2
  68. package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +2 -2
  69. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -0
  70. package/dist/_dts/sdk/src/client/runtimeCacheKeys.d.ts +8 -0
  71. package/dist/_dts/sdk/src/client/types.d.ts +1 -1
  72. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  73. package/dist/_dts/sdk/src/contracts/page.d.ts +7 -2
  74. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +5 -0
  75. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +2 -2
  76. package/dist/_dts/sdk/src/public-api/contracts.d.ts +6 -8
  77. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -2
  78. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +2 -2
  79. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +1 -1
  80. package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +1 -1
  81. package/dist/_dts/sdk/src/version.d.ts +1 -1
  82. package/dist/_dts/surfaces/src/index.d.ts +1 -0
  83. package/dist/_dts/theme-core/src/layout/boundaryCss.d.ts +3 -0
  84. package/dist/_dts/theme-core/src/site-styles/compositionBudget.d.ts +8 -0
  85. package/dist/_dts/theme-core/src/site-styles/contentTemplateRuntimeCompiler.d.ts +3 -2
  86. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +1 -3
  87. package/dist/_dts/theme-core/src/site-styles/generatedDesignPipeline.d.ts +3 -0
  88. package/dist/_dts/theme-core/src/site-styles/index.d.ts +3 -0
  89. package/dist/_dts/theme-core/src/site-styles/joinTreatment.d.ts +132 -0
  90. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorBoundaries.d.ts +31 -0
  91. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +33 -29
  92. package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +4 -4
  93. package/dist/_dts/theme-core/src/site-styles/pageFlowPresets.d.ts +36 -0
  94. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +4 -10
  95. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +17 -4
  96. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +20 -74
  97. package/dist/_dts/theme-core/src/site-styles/sectionBoundaryComposition.d.ts +95 -0
  98. package/dist/_dts/theme-core/src/site-styles/sectionTransitions.d.ts +80 -518
  99. package/dist/_dts/theme-core/src/site-styles/siteStyleBlockPolicies.d.ts +9 -4
  100. package/dist/_dts/theme-core/src/site-styles/transitionCatalogue.d.ts +320 -0
  101. package/dist/_dts/theme-core/src/site-styles/types.d.ts +3 -18
  102. package/dist/client/{BookingConsentAgreement-DoAILrkN.mjs → BookingConsentAgreement-DlVOmpW4.mjs} +2 -2
  103. package/dist/client/{DiscountCodeDisclosure-X528hUTf.mjs → DiscountCodeDisclosure-T9q623PQ.mjs} +1 -1
  104. package/dist/client/{EventCombined.client-DSBVwq5m.mjs → EventCombined.client-DnsUeONl.mjs} +6 -6
  105. package/dist/client/{EventListing.client-DmFAX7Vb.mjs → EventListing.client-CNBFqJS4.mjs} +2 -2
  106. package/dist/client/{LeafletStaticMap-BAqXdfhq.mjs → LeafletStaticMap-C7higg52.mjs} +1 -1
  107. package/dist/client/{ThemedButton-BwNFVwi4.mjs → ThemedButton-LAJTNrS8.mjs} +1 -1
  108. package/dist/client/{accordion-DRhMdkbd.mjs → accordion-BcNF9TjX.mjs} +1 -1
  109. package/dist/client/{bookingForm-iJ_nCsNF.mjs → bookingForm-BUaQ3S03.mjs} +142 -50
  110. package/dist/client/bookings.mjs +191 -64
  111. package/dist/client/{carousel-D8zuffZr.mjs → carousel-CTdF6e0V.mjs} +1 -1
  112. package/dist/client/{cart-DeMGJViN.mjs → cart-pGtyf_XU.mjs} +3 -3
  113. package/dist/client/{checkout-DXc06Km2.mjs → checkout-Da9WSn7Y.mjs} +3 -3
  114. package/dist/client/client.mjs +1630 -816
  115. package/dist/client/{context-CDLCfDep.mjs → context-BFeY_Wbm.mjs} +1 -1
  116. package/dist/client/{dates-ClFx7Epy.mjs → dates-BhwVSxDg.mjs} +2 -2
  117. package/dist/client/{eventCalendar-BaGpnOGN.mjs → eventCalendar-BAtdnR4s.mjs} +9 -9
  118. package/dist/client/{eventCombined-ywONOx2m.mjs → eventCombined-RksA3tRC.mjs} +4 -4
  119. package/dist/client/{eventDetails-B2LlOTYY.mjs → eventDetails-BB9hB4wR.mjs} +4 -4
  120. package/dist/client/{eventListing-CMgxWpqP.mjs → eventListing-BpJBkviM.mjs} +4 -4
  121. package/dist/client/{eventRegistration-BarLDNHR.mjs → eventRegistration-B18jFq_o.mjs} +8 -8
  122. package/dist/client/{form-BjqKaBJ7.mjs → form-Dodt8Y8t.mjs} +3 -3
  123. package/dist/client/{headerSection-CP4XDwz1.mjs → headerSection-B0qj9ttg.mjs} +3 -3
  124. package/dist/client/hooks.mjs +550 -99
  125. package/dist/client/{locationMap-C5gW-d-w.mjs → locationMap-gn-iMk7a.mjs} +3 -3
  126. package/dist/client/{newsletterForm-afXlVSA0.mjs → newsletterForm-oByLdFkr.mjs} +26 -5
  127. package/dist/client/{pricing-Bl1CAl28.mjs → pricing-BOU0_Hai.mjs} +1 -1
  128. package/dist/client/{productDetail-CvQ3jWQe.mjs → productDetail-D9v1zH2j.mjs} +3 -3
  129. package/dist/client/{productList-U874PGO7.mjs → productList-D-mItx1n.mjs} +3 -3
  130. package/dist/client/{propsDecoder-DPXtCZWP.mjs → propsDecoder-C3TP_z4x.mjs} +72 -33
  131. package/dist/client/rendering/client.mjs +900 -266
  132. package/dist/client/rendering/islands.mjs +17 -17
  133. package/dist/client/rendering.mjs +1637 -788
  134. package/dist/client/{routeIslandApiConfig-NGYiUWXu.mjs → routeIslandApiConfig-DzN1W0sq.mjs} +1 -1
  135. package/dist/client/{scrollToBlock-0-C3DVhK.mjs → scrollToBlock-CWs8EIdo.mjs} +1 -1
  136. package/dist/client/{shop-BXjXhM9P.mjs → shop-Dufw7N7o.mjs} +7 -7
  137. package/dist/client/{shop-commerce-BZ6UlWJ7.mjs → shop-commerce-gklw_hLF.mjs} +6 -6
  138. package/dist/client/{shop-commerce-store-DlSBXb3D.mjs → shop-commerce-store-Sf1eyTaZ.mjs} +1 -1
  139. package/dist/client/{shopShared-kkEOiLPA.mjs → shopShared-B5nyA41S.mjs} +4 -4
  140. package/dist/client/{useEventFilters-zvnnE1ro.mjs → useEventFilters-CLL829vy.mjs} +6 -6
  141. package/dist/preview-next/before-render.mjs +147 -77
  142. package/dist/preview-next/client/runtime.mjs +4 -4
  143. package/dist/preview-next/keepAlive.mjs +147 -77
  144. package/dist/preview-next/middleware.mjs +147 -77
  145. package/dist/{previewAuthStore-JA6-I_sL.mjs → previewAuthStore-BxAFlu-j.mjs} +147 -77
  146. package/dist/{sdk-runtime-DFJlQt3q.mjs → sdk-runtime-D0uZFev7.mjs} +2 -2
  147. package/dist/{separator-o8GHb1xh.mjs → separator-EvdCAn4V.mjs} +1 -1
  148. package/dist/server/components.mjs +1727 -991
  149. package/dist/server/config-validation.mjs +537 -97
  150. package/dist/server/config.mjs +537 -97
  151. package/dist/server/data.mjs +549 -98
  152. package/dist/server/index.mjs +159 -81
  153. package/dist/server/next.mjs +1460 -748
  154. package/dist/server/page-converter.mjs +384 -54
  155. package/dist/server/prebuild.mjs +1 -1
  156. package/dist/server/rendering/server.mjs +1712 -973
  157. package/dist/server/rendering.mjs +1748 -1001
  158. package/dist/server/routing.mjs +624 -131
  159. package/dist/server/server.mjs +554 -138
  160. package/dist/server/theme-bridge.mjs +1192 -27
  161. package/dist/server/theme.mjs +6 -4
  162. package/package.json +2 -1
@@ -0,0 +1,132 @@
1
+ import { type PageDesignDecisions } from './pageDesignIntent';
2
+ import type { PageDesignEditorIssue } from './pageDesignEditorModel';
3
+ import { type SectionBoundaryTreatment } from './sectionTransitions';
4
+ import type { DecorativeTransitionIntent } from './transitionCatalogue';
5
+ import { type BoundaryOptionId, type DesignBlockId, type DesignBoundaryId, type GeneratedPageDesignBlockIntent, type PageFlowPresetId, type SiteStyleId } from './types';
6
+ /**
7
+ * Where a page-design join's default treatment came from. Derived at read
8
+ * time and never persisted (issue 1422).
9
+ */
10
+ export type PageDesignDefaultJoinSource = Readonly<{
11
+ kind: 'site-style-default';
12
+ siteStyleId: SiteStyleId;
13
+ }> | Readonly<{
14
+ kind: 'page-flow-default';
15
+ /** Null when the page's preset id is unknown and the first option applies. */
16
+ pageFlowPresetId: PageFlowPresetId | null;
17
+ }>;
18
+ export type PageDesignJoinSource = Readonly<{
19
+ kind: 'user-pinned';
20
+ }> | PageDesignDefaultJoinSource;
21
+ export type GeneratedJoinSource = Readonly<{
22
+ kind: 'generated';
23
+ origin: 'boundary-intent' | 'block-design' | 'automatic';
24
+ }>;
25
+ /**
26
+ * Where a join's treatment came from. Only `user-pinned` is a stored choice.
27
+ */
28
+ export type JoinTreatmentSource = PageDesignJoinSource | GeneratedJoinSource;
29
+ /**
30
+ * One source's opinion about a join, in the persisted vocabulary. Adapters
31
+ * translate their inputs into these; they never decide support or fallback.
32
+ */
33
+ export type JoinTreatmentCandidate<TSource extends JoinTreatmentSource = JoinTreatmentSource> = Readonly<{
34
+ source: TSource;
35
+ treatment: SectionBoundaryTreatment;
36
+ }>;
37
+ /**
38
+ * A resolved break between two adjacent blocks: which treatment, and where it
39
+ * came from. Whether it draws is composition's call (`composeBoundary`), made
40
+ * from the content that finally renders. Joins that resolve to `none` are
41
+ * absent rather than carried with a `none` treatment.
42
+ */
43
+ export type JoinIntent<TBlockId extends DesignBlockId = DesignBlockId, TSource extends JoinTreatmentSource = JoinTreatmentSource> = Readonly<{
44
+ boundaryId: DesignBoundaryId;
45
+ previousBlockId: TBlockId;
46
+ nextBlockId: TBlockId;
47
+ treatment: DecorativeTransitionIntent;
48
+ source: TSource;
49
+ }>;
50
+ /**
51
+ * The public, intent-only form of a join sent to renderers. The boundary id is
52
+ * derivable from the two block ids (`makeBoundaryId`), and the source stays
53
+ * internal. The renderer decides whether each join draws, from final content.
54
+ */
55
+ export type PageRuntimeJoin<TBlockId extends string = string> = Readonly<{
56
+ previousBlockId: TBlockId;
57
+ nextBlockId: TBlockId;
58
+ treatment: DecorativeTransitionIntent;
59
+ }>;
60
+ /** Narrows any join (a resolved intent included) to its public, intent-only form. */
61
+ export declare function toPageRuntimeJoin<TBlockId extends string>(join: PageRuntimeJoin<TBlockId>): PageRuntimeJoin<TBlockId>;
62
+ export type JoinIssue = Extract<PageDesignEditorIssue, Readonly<{
63
+ kind: 'pinned-boundary-option-unavailable';
64
+ }>>;
65
+ /**
66
+ * What became of the user's pin, if the candidates carried one. The editor
67
+ * shows a pin by this status; the unavailable-pin issue is built from it.
68
+ */
69
+ export type JoinPinStatus = Readonly<{
70
+ kind: 'none';
71
+ }> | Readonly<{
72
+ kind: 'supported';
73
+ }> | Readonly<{
74
+ kind: 'unsupported';
75
+ /** The pin's own option id, or the option the join fell back to. */
76
+ optionId: BoundaryOptionId;
77
+ }>;
78
+ export type JoinTreatmentResolution<TBlockId extends DesignBlockId = DesignBlockId, TSource extends JoinTreatmentSource = JoinTreatmentSource> = Readonly<{
79
+ join: JoinIntent<TBlockId, TSource> | null;
80
+ /**
81
+ * The source of the winning candidate, kept even when that candidate was
82
+ * `none` and so yields no join. Null only when no candidate was usable.
83
+ */
84
+ selectedSource: TSource | null;
85
+ pin: JoinPinStatus;
86
+ issues: readonly JoinIssue[];
87
+ }>;
88
+ /**
89
+ * The single rule set for which treatment a join gets. Candidates arrive in
90
+ * priority order; the first supported one wins.
91
+ *
92
+ * - `none` ends the search and yields no join.
93
+ * - An unsupported candidate (a legacy option id, or a structured treatment the
94
+ * catalogue lacks) falls through to the next one. When it was the user's
95
+ * pin, the pin is reported unsupported and the existing
96
+ * `pinned-boundary-option-unavailable` issue is raised.
97
+ */
98
+ export declare function resolveJoinTreatment<TBlockId extends DesignBlockId, TSource extends JoinTreatmentSource>(input: Readonly<{
99
+ candidates: readonly JoinTreatmentCandidate<TSource>[];
100
+ previousBlockId: TBlockId;
101
+ nextBlockId: TBlockId;
102
+ }>): JoinTreatmentResolution<TBlockId, TSource>;
103
+ /**
104
+ * The page-design defaults for a join, in priority order: the site style's
105
+ * default break after the previous block, then the page-flow default, which
106
+ * is always last.
107
+ */
108
+ export declare function pageDesignDefaultJoinCandidates(input: Readonly<{
109
+ siteStyleId: SiteStyleId;
110
+ pageFlowPresetId: PageDesignDecisions['pageFlowPresetId'];
111
+ previousBlockKind: string;
112
+ }>): readonly JoinTreatmentCandidate<PageDesignDefaultJoinSource>[];
113
+ /** The last-resort page-design default, also the source of a fully unsupported join. */
114
+ export declare function pageFlowDefaultJoinCandidate(pageFlowPresetId: PageDesignDecisions['pageFlowPresetId']): JoinTreatmentCandidate<Extract<PageDesignDefaultJoinSource, {
115
+ kind: 'page-flow-default';
116
+ }>>;
117
+ /**
118
+ * Page-design source adapter. Priority: the user's pin, then the defaults.
119
+ * The pin is offered even when unsupported so the rule function can report it.
120
+ */
121
+ export declare function joinCandidatesFromPageDesign<TBlockId extends DesignBlockId>(intent: PageDesignDecisions<TBlockId>, siteStyleId: SiteStyleId, previous: Readonly<{
122
+ blockId: TBlockId;
123
+ blockKind: string;
124
+ }>, next: Readonly<{
125
+ blockId: TBlockId;
126
+ }>): readonly JoinTreatmentCandidate<PageDesignJoinSource>[];
127
+ /**
128
+ * Generated-design source adapter. Mirrors today's materialisation: the
129
+ * boundary intent's explicit choice, then the block design's explicit choice,
130
+ * then the automatic default of no break.
131
+ */
132
+ export declare function joinCandidatesFromGeneratedIntent(block: GeneratedPageDesignBlockIntent): readonly JoinTreatmentCandidate<GeneratedJoinSource>[];
@@ -0,0 +1,31 @@
1
+ import { type PageDesignChoice, type PageDesignDecisions } from './pageDesignIntent';
2
+ import type { PageDesignEditorBlock, PageDesignEditorBoundary, PageDesignEditorIssue, PageDesignEditorReadModel } from './pageDesignEditorModel';
3
+ import { type SectionBoundaryTreatment } from './sectionTransitions';
4
+ import { type DesignBlockId, type SiteStyleId } from './types';
5
+ /**
6
+ * The editor's boundary read models. Each join's treatment, and where it came
7
+ * from, is decided by `resolveJoinTreatment`; this module only projects that
8
+ * resolution onto what the editor shows (issue 1422).
9
+ */
10
+ type BoundaryReadModelResult<TBlockId extends DesignBlockId> = Readonly<{
11
+ boundary: PageDesignEditorBoundary<TBlockId>;
12
+ issues: readonly PageDesignEditorIssue<TBlockId>[];
13
+ }>;
14
+ export declare function buildBoundaryReadModels<TBlockId extends DesignBlockId>(input: Readonly<{
15
+ siteStyleId: SiteStyleId;
16
+ intent: PageDesignDecisions<TBlockId>;
17
+ blocks: readonly PageDesignEditorBlock<TBlockId>[];
18
+ }>): readonly BoundaryReadModelResult<TBlockId>[];
19
+ /**
20
+ * Re-resolves one boundary of an editor model for a changed break choice,
21
+ * through the same rules the model was built with. The preview uses it for
22
+ * optimistic updates, so a reset lands on whichever default the rules pick
23
+ * (site style or Page Flow). Null when either block is not in the model.
24
+ */
25
+ export declare function resolvePageDesignEditorBoundaryForChoice<TBlockId extends DesignBlockId>(input: Readonly<{
26
+ editorModel: Pick<PageDesignEditorReadModel<TBlockId>, 'siteStyleId' | 'pageFlow' | 'blocks'>;
27
+ previousBlockId: TBlockId;
28
+ nextBlockId: TBlockId;
29
+ choice: PageDesignChoice<SectionBoundaryTreatment>;
30
+ }>): PageDesignEditorBoundary<TBlockId> | null;
31
+ export {};
@@ -2,17 +2,14 @@ import { type PageDesignEditorBackgroundSupport } from './pageDesignEditorCapabi
2
2
  import type { BlockDesignMetadata } from './blockFlow';
3
3
  import { type PageDesignDecisions } from './pageDesignIntent';
4
4
  import { type AppearancePresetId, type BlockDesignCapability, type CardRoleCapability, type BoundaryOptionId, type DesignBlockId, type DesignBoundaryId, type LayoutVariantKey, type NonEmptyReadonlyArray, type PageFlowPresetId, type SiteStyleId } from './types';
5
- import { type BoundaryOption } from './sectionTransitions';
5
+ import type { BoundaryOption } from './sectionTransitions';
6
+ import { type PageFlowPreset } from './pageFlowPresets';
7
+ import type { PageDesignDefaultJoinSource } from './joinTreatment';
6
8
  import type { PageDesignEditorBlockContentRevision, PageDesignEditorLayoutOption, PageDesignEditorLookOption, PageDesignEditorLooksForLayout } from './pageDesignEditorOptions';
7
9
  export { boundaryOptions, type BoundaryOption } from './sectionTransitions';
10
+ export { resolvePageDesignEditorBoundaryForChoice } from './pageDesignEditorBoundaries';
11
+ export { pageFlowPresets, type PageFlowBoundaryStrategy, type PageFlowPreset, } from './pageFlowPresets';
8
12
  export type { PageDesignEditorBlockContentRevision, PageDesignEditorLayoutOption, PageDesignEditorLookOption, PageDesignEditorLooksForLayout, } from './pageDesignEditorOptions';
9
- export type PageFlowBoundaryStrategy = 'quiet' | 'balanced' | 'expressive';
10
- export type PageFlowPreset = Readonly<{
11
- id: PageFlowPresetId;
12
- label: string;
13
- boundaryStrategy: PageFlowBoundaryStrategy;
14
- defaultBoundaryOptionId: BoundaryOptionId;
15
- }>;
16
13
  export type PageDesignEditorBlockInput<TBlockId extends DesignBlockId = DesignBlockId> = Readonly<{
17
14
  blockId: TBlockId;
18
15
  blockKind: string;
@@ -35,7 +32,9 @@ export declare function autoEditorChoice<TValue>(effectiveValue: TValue | null):
35
32
  export declare function userPinnedEditorChoice<TValue>(value: TValue, input?: Readonly<{
36
33
  status?: 'supported' | 'unsupported';
37
34
  effectiveValue?: TValue | null;
38
- }>): PageDesignEditorChoice<TValue>;
35
+ }>): Extract<PageDesignEditorChoice<TValue>, Readonly<{
36
+ kind: 'user-pinned';
37
+ }>>;
39
38
  export type PageDesignEditorSelection<TValue> = Readonly<{
40
39
  kind: 'selected';
41
40
  value: TValue;
@@ -79,11 +78,35 @@ export declare const backgroundImagePromotedFieldPath: "_sectionStyles.backgroun
79
78
  */
80
79
  export declare const normalEditorCuratedPromotedFieldPaths: readonly ["_sectionStyles.background.image"];
81
80
  export type NormalEditorCuratedPromotedFieldPath = (typeof normalEditorCuratedPromotedFieldPaths)[number];
81
+ /**
82
+ * Where an `auto` break comes from. A site-style default and a page-flow
83
+ * default are both defaults, not user choices, but the editor labels them
84
+ * differently.
85
+ */
86
+ export type PageDesignEditorBoundaryDefaultSource = PageDesignDefaultJoinSource;
87
+ /**
88
+ * A break choice as the editor shows it. It is assignable to
89
+ * `PageDesignEditorChoice<BoundaryOptionId>`; `auto` additionally says which
90
+ * default applies.
91
+ */
92
+ export type PageDesignEditorBoundaryChoice = Readonly<{
93
+ kind: 'auto';
94
+ source: PageDesignEditorBoundaryDefaultSource;
95
+ effectiveValue: BoundaryOptionId | null;
96
+ }> | Extract<PageDesignEditorChoice<BoundaryOptionId>, Readonly<{
97
+ kind: 'user-pinned';
98
+ }>>;
82
99
  export type PageDesignEditorBoundary<TBlockId extends DesignBlockId = DesignBlockId> = Readonly<{
83
100
  boundaryId: DesignBoundaryId;
84
101
  previousBlockId: TBlockId;
85
102
  nextBlockId: TBlockId;
86
- breakChoice: PageDesignEditorChoice<BoundaryOptionId>;
103
+ breakChoice: PageDesignEditorBoundaryChoice;
104
+ /**
105
+ * `breakChoice.effectiveValue` is the one effective break, decided by
106
+ * `resolveJoinTreatment`; the render compiler derives the join's treatment
107
+ * from it. Whether the break draws is decided by the renderer from final
108
+ * content.
109
+ */
87
110
  availableBreaks: readonly BoundaryOption[];
88
111
  }>;
89
112
  export type PageDesignEditorIssue<TBlockId extends DesignBlockId = DesignBlockId> = Readonly<{
@@ -126,25 +149,6 @@ export type PageDesignEditorReadModel<TBlockId extends DesignBlockId = DesignBlo
126
149
  boundaries: readonly PageDesignEditorBoundary<TBlockId>[];
127
150
  issues: readonly PageDesignEditorIssue<TBlockId>[];
128
151
  }>;
129
- /**
130
- * Must remain non-empty; downstream code indexes `[0]` as the documented default.
131
- */
132
- export declare const pageFlowPresets: readonly [{
133
- readonly id: PageFlowPresetId;
134
- readonly label: "Quiet";
135
- readonly boundaryStrategy: "quiet";
136
- readonly defaultBoundaryOptionId: BoundaryOptionId;
137
- }, {
138
- readonly id: PageFlowPresetId;
139
- readonly label: "Balanced";
140
- readonly boundaryStrategy: "balanced";
141
- readonly defaultBoundaryOptionId: BoundaryOptionId;
142
- }, {
143
- readonly id: PageFlowPresetId;
144
- readonly label: "Expressive";
145
- readonly boundaryStrategy: "expressive";
146
- readonly defaultBoundaryOptionId: BoundaryOptionId;
147
- }];
148
152
  export declare function buildPageDesignEditorReadModel<TBlockId extends DesignBlockId>(input: Readonly<{
149
153
  siteStyleId: SiteStyleId;
150
154
  intent: PageDesignDecisions<TBlockId>;
@@ -176,9 +176,9 @@ export declare const pageDesignBoundaryTreatmentSchema: z.ZodDiscriminatedUnion<
176
176
  double: "double";
177
177
  }>;
178
178
  symmetry: z.ZodEnum<{
179
+ drift: "drift";
179
180
  symmetrical: "symmetrical";
180
181
  asymmetrical: "asymmetrical";
181
- drift: "drift";
182
182
  }>;
183
183
  }, z.core.$strict>, z.ZodObject<{
184
184
  kind: z.ZodLiteral<"angle-edge">;
@@ -234,9 +234,9 @@ export declare const pageDesignUserPinnedBoundaryTreatmentChoiceSchema: z.ZodObj
234
234
  double: "double";
235
235
  }>;
236
236
  symmetry: z.ZodEnum<{
237
+ drift: "drift";
237
238
  symmetrical: "symmetrical";
238
239
  asymmetrical: "asymmetrical";
239
- drift: "drift";
240
240
  }>;
241
241
  }, z.core.$strict>, z.ZodObject<{
242
242
  kind: z.ZodLiteral<"angle-edge">;
@@ -305,9 +305,9 @@ export declare const pageDesignBoundaryPinSchema: z.ZodObject<{
305
305
  double: "double";
306
306
  }>;
307
307
  symmetry: z.ZodEnum<{
308
+ drift: "drift";
308
309
  symmetrical: "symmetrical";
309
310
  asymmetrical: "asymmetrical";
310
- drift: "drift";
311
311
  }>;
312
312
  }, z.core.$strict>, z.ZodObject<{
313
313
  kind: z.ZodLiteral<"angle-edge">;
@@ -417,9 +417,9 @@ export declare const pageDesignIntentV2Schema: z.ZodObject<{
417
417
  double: "double";
418
418
  }>;
419
419
  symmetry: z.ZodEnum<{
420
+ drift: "drift";
420
421
  symmetrical: "symmetrical";
421
422
  asymmetrical: "asymmetrical";
422
- drift: "drift";
423
423
  }>;
424
424
  }, z.core.$strict>, z.ZodObject<{
425
425
  kind: z.ZodLiteral<"angle-edge">;
@@ -0,0 +1,36 @@
1
+ import { type BoundaryOptionId, type PageFlowPresetId } from './types';
2
+ export type PageFlowBoundaryStrategy = 'quiet' | 'balanced' | 'expressive';
3
+ export type PageFlowPreset = Readonly<{
4
+ id: PageFlowPresetId;
5
+ label: string;
6
+ boundaryStrategy: PageFlowBoundaryStrategy;
7
+ defaultBoundaryOptionId: BoundaryOptionId;
8
+ }>;
9
+ /**
10
+ * Must remain non-empty; downstream code indexes `[0]` as the documented default.
11
+ */
12
+ export declare const pageFlowPresets: readonly [{
13
+ readonly id: PageFlowPresetId;
14
+ readonly label: "Quiet";
15
+ readonly boundaryStrategy: "quiet";
16
+ readonly defaultBoundaryOptionId: BoundaryOptionId;
17
+ }, {
18
+ readonly id: PageFlowPresetId;
19
+ readonly label: "Balanced";
20
+ readonly boundaryStrategy: "balanced";
21
+ readonly defaultBoundaryOptionId: BoundaryOptionId;
22
+ }, {
23
+ readonly id: PageFlowPresetId;
24
+ readonly label: "Expressive";
25
+ readonly boundaryStrategy: "expressive";
26
+ readonly defaultBoundaryOptionId: BoundaryOptionId;
27
+ }];
28
+ /**
29
+ * The break a join gets when nothing more specific applies. An unknown preset
30
+ * id (a stale or policy-owned one) falls back to the first boundary option,
31
+ * and `preset` is null so callers can tell the two apart.
32
+ */
33
+ export declare function pageFlowDefaultBoundary(pageFlowPresetId: PageFlowPresetId): Readonly<{
34
+ preset: PageFlowPreset | null;
35
+ boundaryOptionId: BoundaryOptionId;
36
+ }>;
@@ -5,7 +5,7 @@ import { type CuratedSiteStyle } from './curatedSiteStyles';
5
5
  import { type FooterLookId } from './footerLooks';
6
6
  import type { SiteThemeCompilationPlan } from './compilationPlan';
7
7
  import type { HeaderLayoutStyleSelection } from './headerLayoutStyles';
8
- import { type CompiledBlockRuntimeFields, type CompiledBoundaryRuntime, type CompiledPageRuntime, type ComponentRuntimeRules, type DesignRuntimeRules, type SemanticSpacing, type SurfaceResolutionContext } from './runtimeCompiler';
8
+ import { type CompiledBlockRuntimeFields, 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';
11
11
  import type { SelectionFallbackWarning } from './selectionFallbackWarning';
@@ -20,13 +20,14 @@ export type { CuratedSiteStyleTheme } from './siteStyleThemeCompiler';
20
20
  * enforced by `previewCompiler.client-boundary.test.ts`.
21
21
  */
22
22
  export { defineBlockDesignMetadata, type BlockDesignMetadata, type BlockDesignMetadataInput, type BlockDesignMetadataMap, type BlockFlowBoundaryPreference, type BlockFlowContract, type BlockFlowSurfaceBehavior, type BlockFlowWeight, type BlockLayoutBoundaryBias, type BlockLayoutDesignProfile, type BlockLayoutDesignProfileInput, type BlockLayoutFamily, type BlockLayoutVisualWeight, type PageFlowRole, } from './blockFlow';
23
- export { buildPageDesignEditorReadModel, boundaryOptions, pageFlowPresets, type BoundaryOption, type PageDesignEditorBlock, type PageDesignEditorBoundary, type PageDesignEditorChoice, type PageDesignEditorIssue, type PageDesignEditorReadModel, type PageDesignEditorSelection, type PageFlowPreset, } from './pageDesignEditorModel';
23
+ export { buildPageDesignEditorReadModel, boundaryOptions, pageFlowPresets, type BoundaryOption, type PageDesignEditorBlock, type PageDesignEditorBoundary, type PageDesignEditorBoundaryChoice, type PageDesignEditorBoundaryDefaultSource, type PageDesignEditorChoice, type PageDesignEditorIssue, type PageDesignEditorReadModel, type PageDesignEditorSelection, type PageFlowPreset, } from './pageDesignEditorModel';
24
24
  export { autoDesignChoice, reducePageDesignIntentForUserAction, resolvePageDesignBlockLookChoice, resolvePageDesignBoundaryChoice, userPinnedDesignChoice, type PageDesignChoice, type PageDesignIntent, type PageDesignUserAction, } from './pageDesignIntent';
25
25
  export { repairDesignIssue, resolveBlockDesignPlan } from './resolver';
26
26
  export { cycleableOptionsFromResolved, deriveDesignCustomizationScope, recommendedDesignOption, type CycleableDesignOption, type CycleableOptions, type DesignCustomizationAuthority, type DesignCustomizationScope, type DesignCustomizationSurface, type DesignCustomizationUnsupportedReason, type DesignOptionIssue, type ResolvedDesignOption, } from './previewCustomization';
27
- export { compileBlockRuntimeFields, compileBoundaryRuntime, compilePageRuntimeFields, compileTokenRecipes, compileTransitionRuntime, compiledRuntimeStyleFieldNames, defaultComponentRuntimeRules, defaultDesignRuntimeRules, surfaceResolutionContextFromPalette, surfaceResolutionContextFromTheme, stripCompiledRuntimeStyleFields, type CompiledBlockRuntime, type CompiledBlockRuntimeFields, type CompiledBoundaryRuntime, type CompiledPageRuntime, type CompileBlockRuntimeInput, type ComponentRuntimeRules, type DesignRuntimeRules, type SemanticSpacing, type SurfaceResolutionContext, } from './runtimeCompiler';
27
+ export { compileBlockRuntimeFields, compilePageRuntimeFields, compileTokenRecipes, compiledRuntimeStyleFieldNames, defaultComponentRuntimeRules, defaultDesignRuntimeRules, surfaceResolutionContextFromPalette, surfaceResolutionContextFromTheme, stripCompiledRuntimeStyleFields, type CompiledBlockRuntime, type CompiledBlockRuntimeFields, type CompiledPageRuntime, type CompileBlockRuntimeInput, type ComponentRuntimeRules, type DesignRuntimeRules, type SemanticSpacing, type SurfaceResolutionContext, } from './runtimeCompiler';
28
28
  export { defaultCuratedChoice, requireEntriesForCuratedChoices, resolveCuratedChoice, type CuratedChoice, type CuratedChoiceResolution, } from './curatedChoices';
29
29
  export { curatedSiteStyles, defaultButtonStyleSelectionForSiteStyle, defaultPaletteForSiteStyle, getCuratedSiteStyle, type CuratedSiteStyle, } from './curatedSiteStyles';
30
+ export { toPageRuntimeJoin, type PageRuntimeJoin, } from './joinTreatment';
30
31
  export { asDesignBlockId, asSiteStyleId, makeBoundaryId, type AppearancePresetId, type BoundaryOptionId, type DesignBlockId, type DesignBoundaryId, type LayoutVariantKey, type NonEmptyReadonlyArray, type PageFlowPresetId, type ResolvedPageDesignPlan, type SiteStyleId, } from './types';
31
32
  export declare const previewCustomizePurpose: "preview-customize";
32
33
  /**
@@ -99,15 +100,8 @@ export type CompileEditorModelRuntimeInput<TBlockId extends DesignBlockId = Desi
99
100
  */
100
101
  export declare function compileEditorModelRuntime<TBlockId extends DesignBlockId>(input: CompileEditorModelRuntimeInput<TBlockId>): CompiledPageRuntime<TBlockId>;
101
102
  export declare function buildEditorModelRuntimeFieldsByBlockId<TBlockId extends DesignBlockId>(input: CompileEditorModelRuntimeInput<TBlockId>): ReadonlyMap<TBlockId, CompiledBlockRuntimeFields>;
102
- export declare function buildEditorModelRuntimeBoundaries<TBlockId extends DesignBlockId>(input: CompileEditorModelRuntimeInput<TBlockId>): readonly CompiledBoundaryRuntime<TBlockId>[];
103
103
  export declare function compileEditorModelRuntimeFieldsForBlock<TBlockId extends DesignBlockId>(input: CompileEditorModelRuntimeInput<TBlockId> & Readonly<{
104
104
  blockId: TBlockId;
105
105
  }>): CompiledBlockRuntimeFields | null;
106
106
  export declare function applyCompiledRuntimeFieldsToContent<TContent extends Record<string, unknown>>(content: TContent, fields: CompiledBlockRuntimeFields | null | undefined): Record<string, unknown>;
107
- export type RuntimeContentAdjacency = Readonly<{
108
- currentContent: Record<string, unknown> | null | undefined;
109
- nextContent: Record<string, unknown> | null | undefined;
110
- }>;
111
- export declare function retargetCompiledRuntimeFieldsForContentAdjacency(fields: CompiledBlockRuntimeFields | null | undefined, adjacency: RuntimeContentAdjacency): CompiledBlockRuntimeFields | null | undefined;
112
- export declare function retargetCompiledBoundaryRuntimeForContentAdjacency<TBlockId extends string>(boundary: CompiledBoundaryRuntime<TBlockId>, adjacency: RuntimeContentAdjacency): CompiledBoundaryRuntime<TBlockId>;
113
107
  export declare function restoreCompiledRuntimeFieldsFromContent<TCurrentContent extends Record<string, unknown>, TPreviousContent extends Record<string, unknown>>(currentContent: TCurrentContent, previousContent: TPreviousContent): Record<string, unknown>;
@@ -1,14 +1,27 @@
1
- export declare const themeV2RuntimeStyleFieldNames: readonly ["_frameStyles", "_sectionStyles", "_containerStyles", "_cardStyles", "_transitionStyles", "styleGroup"];
1
+ export declare const themeV2RuntimeStyleFieldNames: readonly ["_frameStyles", "_sectionStyles", "_containerStyles", "_cardStyles"];
2
2
  export type ThemeV2RuntimeStyleFieldName = typeof themeV2RuntimeStyleFieldNames[number];
3
3
  export declare const themeV2BlockSpecificRawStyleFieldNames: readonly ["_contentCardStyles", "_heroLayoutStyles", "_textCardStyles"];
4
4
  export type ThemeV2BlockSpecificRawStyleFieldName = typeof themeV2BlockSpecificRawStyleFieldNames[number];
5
- export type ThemeV2NormalEditorRawStyleFieldName = ThemeV2RuntimeStyleFieldName | ThemeV2BlockSpecificRawStyleFieldName;
5
+ /**
6
+ * `styleGroup` is authored content (a theme's style-group select, or an SDK
7
+ * site's own value), not compiler output, so it is neither a runtime field
8
+ * nor compiler-owned. Normal editors still never show it directly.
9
+ */
10
+ export type ThemeV2NormalEditorRawStyleFieldName = ThemeV2RuntimeStyleFieldName | ThemeV2BlockSpecificRawStyleFieldName | 'styleGroup';
6
11
  export type ThemeV2CompilerOwnedFieldName = ThemeV2RuntimeStyleFieldName | ThemeV2BlockSpecificRawStyleFieldName;
7
- export declare const themeV2NormalEditorRawStyleFieldNames: readonly ["_frameStyles", "_sectionStyles", "_containerStyles", "_cardStyles", "_transitionStyles", "styleGroup", "_contentCardStyles", "_heroLayoutStyles", "_textCardStyles"];
8
- export declare const themeV2CompilerOwnedFieldNames: readonly ["_frameStyles", "_sectionStyles", "_containerStyles", "_cardStyles", "_transitionStyles", "styleGroup", "_contentCardStyles", "_heroLayoutStyles", "_textCardStyles"];
12
+ export declare const themeV2NormalEditorRawStyleFieldNames: readonly ["_frameStyles", "_sectionStyles", "_containerStyles", "_cardStyles", "_contentCardStyles", "_heroLayoutStyles", "_textCardStyles", "styleGroup"];
13
+ export declare const themeV2CompilerOwnedFieldNames: readonly ["_frameStyles", "_sectionStyles", "_containerStyles", "_cardStyles", "_contentCardStyles", "_heroLayoutStyles", "_textCardStyles"];
9
14
  export declare const pageDesignEditorBackgroundOverrideOwner: "page-design-editor";
10
15
  export type PageDesignEditorBackgroundOverrideOwner = typeof pageDesignEditorBackgroundOverrideOwner;
11
16
  export declare const siteChromeBackgroundOverrideOwner: "site-chrome-editor";
12
17
  export type SiteChromeBackgroundOverrideOwner = typeof siteChromeBackgroundOverrideOwner;
13
18
  export declare function isThemeV2NormalEditorRawStyleFieldName(fieldName: string): boolean;
14
19
  export declare function isThemeV2NormalEditorRawStylePath(fieldPath: string): boolean;
20
+ /**
21
+ * A `styleGroup` in the retired `site-style-transition-*` namespace is residue
22
+ * from the old per-block transition path (issue 1422). Any other value is
23
+ * authored and must survive.
24
+ */
25
+ export declare function isStaleTransitionStyleGroup(value: unknown): boolean;
26
+ /** Drops a stale transition `styleGroup`, leaving authored values untouched. */
27
+ export declare function stripStaleTransitionStyleGroup(content: Readonly<Record<string, unknown>>): Record<string, unknown>;
@@ -2,8 +2,8 @@ import { type CardStylesOverride, type ContainerStylesOverride, type SectionStyl
2
2
  import { type ExpandedPalette } from '../palette/expandPalette';
3
3
  import { type ButtonStyleSelection } from '../buttons/styles';
4
4
  import { type RuntimeStyleWriteResultForFields, type StyleAuthority } from './designState';
5
- import { type ContentFrameIntent, type BlockCompositionIntent, type EyebrowTreatment, type FlushFrameTreatment, type DesignBoundaryId, type PanelFrameTreatment, type ResolvedBlockDesignPlan, type ResolvedPageDesignPlan, type SiteStyleSectionTransitionIntent, type SiteStyleSurfaceIntent, type ThemeTokenRecipes } from './types';
6
- import { type SectionBoundaryRuntimeMetrics } from './sectionTransitions';
5
+ import { type ContentFrameIntent, type BlockCompositionIntent, type EyebrowTreatment, type FlushFrameTreatment, type DesignBlockId, type PanelFrameTreatment, type ResolvedBlockDesignPlan, type ResolvedPageDesignPlan, type SiteStyleSurfaceIntent, type ThemeTokenRecipes } from './types';
6
+ import { type PageRuntimeJoin } from './joinTreatment';
7
7
  import { type ThemeColorToken } from '../tokens';
8
8
  import { type GradientPresetId } from '../gradients';
9
9
  export type SemanticSpacing = 'none' | 'compact' | 'cozy' | 'medium' | 'comfortable' | 'spacious';
@@ -39,7 +39,6 @@ export type DesignRuntimeRules = Readonly<{
39
39
  sectionSurfaces: Readonly<Record<SiteStyleSurfaceIntent, SectionSurfaceRuntimeRule>>;
40
40
  defaultEyebrowTreatment?: EyebrowTreatment;
41
41
  heroLegibility: Readonly<Record<Exclude<NonNullable<ResolvedBlockDesignPlan['appliedHeroLegibility']>, 'none'>, NonNullable<ImageSectionBackgroundOverride['overlay']>>>;
42
- transitionClassName: (transition: SiteStyleSectionTransitionIntent, fromSurface: SiteStyleSurfaceIntent, toSurface: SiteStyleSurfaceIntent) => string | null;
43
42
  }>;
44
43
  export type ComponentRuntimeRules = Readonly<{
45
44
  panelFrames: Readonly<Record<PanelFrameTreatment, ContainerStylesOverride>>;
@@ -52,40 +51,8 @@ export type CompiledBlockRuntimeFields = Readonly<{
52
51
  _contentCardStyles?: ContainerStylesOverride;
53
52
  _heroLayoutStyles?: HeroLayoutStylesOverride;
54
53
  _cardStyles?: CardStylesOverride;
55
- _transitionStyles?: CompiledTransitionRuntime;
56
54
  blockLook?: string;
57
55
  blockComposition?: BlockCompositionIntent;
58
- styleGroup?: string;
59
- }>;
60
- export type CompiledTransitionEndpoint = Readonly<{
61
- kind: 'surface';
62
- surface: SiteStyleSurfaceIntent;
63
- }> | Readonly<{
64
- kind: 'color-token';
65
- token: ThemeColorToken;
66
- }>;
67
- export type CompiledTransitionRuntime = Readonly<{
68
- treatment: SiteStyleSectionTransitionIntent;
69
- from: CompiledTransitionEndpoint;
70
- to: CompiledTransitionEndpoint;
71
- cssVars: Readonly<{
72
- from: string;
73
- to: string;
74
- }>;
75
- }>;
76
- export type CompiledBoundaryRuntime<TBlockId extends string = string> = Readonly<{
77
- boundaryId: DesignBoundaryId | string;
78
- previousBlockId: TBlockId;
79
- nextBlockId: TBlockId;
80
- treatment: SiteStyleSectionTransitionIntent;
81
- metrics: SectionBoundaryRuntimeMetrics;
82
- from: CompiledTransitionEndpoint;
83
- to: CompiledTransitionEndpoint;
84
- cssVars: Readonly<{
85
- from: string;
86
- to: string;
87
- }>;
88
- styleGroup: string;
89
56
  }>;
90
57
  export type HeroLayoutStylesOverride = Readonly<{
91
58
  contentAlignment?: 'left' | 'center' | 'right';
@@ -93,7 +60,11 @@ export type HeroLayoutStylesOverride = Readonly<{
93
60
  contentMaxWidth?: 'default' | 'narrow' | 'medium' | 'wide';
94
61
  typographyScale?: NonNullable<ResolvedBlockDesignPlan['heroTypographyScale']>;
95
62
  }>;
96
- export declare const compiledRuntimeStyleFieldNames: readonly ["_frameStyles", "_sectionStyles", "_containerStyles", "_contentCardStyles", "_heroLayoutStyles", "_cardStyles", "_transitionStyles", "blockLook", "blockComposition", "styleGroup"];
63
+ export declare const compiledRuntimeStyleFieldNames: readonly ["_frameStyles", "_sectionStyles", "_containerStyles", "_contentCardStyles", "_heroLayoutStyles", "_cardStyles", "blockLook", "blockComposition"];
64
+ /**
65
+ * Removes every compiler-owned field, plus a stale transition `styleGroup`.
66
+ * An authored `styleGroup` is content and survives.
67
+ */
97
68
  export declare function stripCompiledRuntimeStyleFields<TContent extends Record<string, unknown>>(content: TContent): Record<string, unknown>;
98
69
  export type CompiledBlockRuntime = Readonly<{
99
70
  blockId: string;
@@ -113,12 +84,6 @@ export type CompileBlockRuntimeInput<TBlockId extends string, TPurpose extends s
113
84
  designRules?: DesignRuntimeRules;
114
85
  componentRules?: ComponentRuntimeRules;
115
86
  sectionSpacing?: SemanticSpacing;
116
- sectionAdjacency?: SectionAdjacency;
117
- /**
118
- * @deprecated Prefer `sectionAdjacency`. Kept for isolated block callers that
119
- * compile one block with an explicit following section surface.
120
- */
121
- nextSectionSurface?: SiteStyleSurfaceIntent;
122
87
  }>;
123
88
  export type CompileBlockRuntimeIntoContentInput<TBlockId extends string, TPurpose extends string, TContent extends Record<string, unknown>> = CompileBlockRuntimeInput<TBlockId, TPurpose> & Readonly<{
124
89
  content: TContent;
@@ -128,25 +93,13 @@ export type CompiledPageRuntime<TBlockId extends string = string> = Readonly<{
128
93
  blocks: readonly (CompiledBlockRuntime & Readonly<{
129
94
  blockId: TBlockId;
130
95
  }>)[];
131
- boundaries: readonly CompiledBoundaryRuntime<TBlockId>[];
96
+ joins: readonly PageRuntimeJoin<TBlockId>[];
132
97
  }>;
133
- export type SectionAdjacency = Readonly<{
134
- kind: 'next-section';
135
- surface: SiteStyleSurfaceIntent;
136
- }> | Readonly<{
137
- kind: 'terminal-surface';
138
- surface: SiteStyleSurfaceIntent;
139
- }> | Readonly<{
140
- kind: 'page-end';
141
- }>;
142
- export type TerminalSectionAdjacency = Extract<SectionAdjacency, Readonly<{
143
- kind: 'terminal-surface' | 'page-end';
144
- }>>;
145
98
  export declare function defineDesignRuntimeRules<const TRules extends DesignRuntimeRules>(rules: TRules): TRules;
146
99
  export declare function defineComponentRuntimeRules<const TRules extends ComponentRuntimeRules>(rules: TRules): TRules;
147
100
  /**
148
101
  * Default design rules translate semantic page-level choices into the current
149
- * runtime's section background and transition style-group vocabulary.
102
+ * runtime's section background vocabulary.
150
103
  */
151
104
  export declare const defaultDesignRuntimeRules: {
152
105
  readonly sectionSurfaces: {
@@ -193,7 +146,6 @@ export declare const defaultDesignRuntimeRules: {
193
146
  readonly opacity: 0.88;
194
147
  };
195
148
  };
196
- readonly transitionClassName: (transition: SiteStyleSectionTransitionIntent, fromSurface: SiteStyleSurfaceIntent, toSurface: SiteStyleSurfaceIntent) => string | null;
197
149
  };
198
150
  /**
199
151
  * Default component rules translate frame and item-surface semantics into the
@@ -245,33 +197,27 @@ export declare const defaultComponentRuntimeRules: {
245
197
  export declare function compileBlockRuntimeFields<TBlockId extends string, TPurpose extends string>(input: CompileBlockRuntimeInput<TBlockId, TPurpose>): CompiledBlockRuntime & Readonly<{
246
198
  blockId: TBlockId;
247
199
  }>;
248
- export declare function compileTransitionRuntime(input: Readonly<{
249
- treatment: SiteStyleSectionTransitionIntent;
250
- from: CompiledTransitionEndpoint;
251
- to: CompiledTransitionEndpoint;
252
- }>): CompiledTransitionRuntime;
253
- export declare function compileBoundaryRuntime<TBlockId extends string>(input: Readonly<{
254
- boundaryId: DesignBoundaryId | string;
255
- previousBlockId: TBlockId;
256
- nextBlockId: TBlockId;
257
- treatment: SiteStyleSectionTransitionIntent;
258
- fromSurface: SiteStyleSurfaceIntent;
259
- toSurface: SiteStyleSurfaceIntent;
260
- rules?: DesignRuntimeRules;
261
- }>): CompiledBoundaryRuntime<TBlockId> | null;
262
200
  /**
263
201
  * Compiles block runtime fields and writes them into content only when Theme V2
264
202
  * owns that block's runtime-style fields.
265
203
  */
266
204
  export declare function compileBlockRuntimeFieldsIntoContent<TBlockId extends string, TPurpose extends string, TContent extends Record<string, unknown>>(input: CompileBlockRuntimeIntoContentInput<TBlockId, TPurpose, TContent>): RuntimeStyleWriteResultForFields<TContent, CompiledBlockRuntimeFields>;
267
- /** Compiles a resolved page plan into legacy runtime fields for each resolved block. */
268
- export declare function compilePageRuntimeFields<TBlockId extends string, TPurpose extends string>(input: Readonly<{
205
+ /**
206
+ * Compiles a resolved page plan into legacy runtime fields for each resolved
207
+ * block, plus the public runtime joins between them.
208
+ *
209
+ * Joins come from `resolveJoinTreatment`; plans no longer carry a treatment.
210
+ * Only joins whose two blocks were compiled are kept, and they leave as intent
211
+ * only: the blocks renderer composes each one from final content after
212
+ * omission, including whether it draws at all (issue 1422).
213
+ */
214
+ export declare function compilePageRuntimeFields<TBlockId extends DesignBlockId, TPurpose extends string>(input: Readonly<{
269
215
  resolved: ResolvedPageDesignPlan<TBlockId, TPurpose>;
216
+ joins: readonly PageRuntimeJoin<TBlockId>[];
270
217
  surfaceResolutionContext: SurfaceResolutionContext;
271
218
  designRules?: DesignRuntimeRules;
272
219
  componentRules?: ComponentRuntimeRules;
273
220
  sectionSpacing?: SemanticSpacing;
274
- terminalSectionAdjacency?: TerminalSectionAdjacency;
275
221
  }>): CompiledPageRuntime<TBlockId>;
276
222
  type PaletteCompileOptions = Readonly<{
277
223
  /** A complete concrete palette supplied by the theme/editor boundary. */