@riverbankcms/sdk 0.77.0 → 0.77.1

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 (46) hide show
  1. package/dist/{PreviewEditorSidebar-XSX7QKHQ.mjs → PreviewEditorSidebar-DVUG7GK4.mjs} +2 -2
  2. package/dist/{PreviewEditorUI-YZNEZ3QD.mjs → PreviewEditorUI-P7RN4CDS.mjs} +2 -2
  3. package/dist/SdkPreviewModeRuntime-KLPX47SE.mjs +8 -0
  4. package/dist/_dts/ai/src/contracts/proposals.d.ts +40 -30
  5. package/dist/_dts/blocks/src/customBlockRegistry.d.ts +20 -1
  6. package/dist/_dts/blocks/src/index.d.ts +2 -2
  7. package/dist/_dts/blocks/src/system/blocks/site-header.d.ts +2 -2
  8. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +5 -0
  9. package/dist/_dts/blocks/src/system/runtime/components/multi-step/runtimeFormValidation.d.ts +28 -0
  10. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +4 -4
  11. package/dist/_dts/sdk/src/contracts/theme.d.ts +1 -1
  12. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +2 -2
  13. package/dist/_dts/sdk/src/version.d.ts +1 -1
  14. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  15. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +27 -27
  16. package/dist/_dts/theme-core/src/schema.d.ts +26 -30
  17. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +1 -1
  18. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +4 -4
  19. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +63 -33
  20. package/dist/{chunk-EAWHBECW.mjs → chunk-2SPENC5M.mjs} +5 -5
  21. package/dist/{chunk-GSQX43EZ.mjs → chunk-IENWFSLO.mjs} +22 -41
  22. package/dist/{chunk-WLQBJN2Z.mjs → chunk-KWJPDZH2.mjs} +1815 -1338
  23. package/dist/{chunk-ANKDYZ2E.mjs → chunk-ZYEJLCTN.mjs} +1 -1
  24. package/dist/cli/index.mjs +381 -176
  25. package/dist/client/client.mjs +1574 -1252
  26. package/dist/client/hooks.mjs +369 -170
  27. package/dist/client/rendering.mjs +1588 -1257
  28. package/dist/preview-next/client/runtime.mjs +3 -3
  29. package/dist/{sdk-runtime-Q6MTR4KL.mjs → sdk-runtime-6UT2S7KZ.mjs} +4 -4
  30. package/dist/server/components.mjs +1561 -1239
  31. package/dist/server/config-validation.mjs +369 -170
  32. package/dist/server/config.mjs +369 -170
  33. package/dist/server/data.mjs +369 -170
  34. package/dist/server/index.mjs +1 -1
  35. package/dist/server/next.mjs +1547 -1234
  36. package/dist/server/page-converter.mjs +362 -165
  37. package/dist/server/prebuild.mjs +1 -1
  38. package/dist/server/rendering/server.mjs +1561 -1239
  39. package/dist/server/rendering.mjs +1561 -1239
  40. package/dist/server/routing.mjs +370 -171
  41. package/dist/server/server.mjs +370 -171
  42. package/dist/server/theme-bridge.mjs +1156 -1035
  43. package/dist/server/theme.mjs +79 -11
  44. package/dist/styles/index.css +1081 -1028
  45. package/package.json +1 -1
  46. package/dist/SdkPreviewModeRuntime-5FS5E6BI.mjs +0 -8
@@ -1,8 +1,8 @@
1
1
  import type { Theme, ThemeHeader } from '../schema';
2
2
  import { type SiteChromeLookDiagnostics } from './customizableSurfaces';
3
3
  import { type Brand } from './types';
4
- export declare const headerLookIdValues: readonly ["clean-base", "brand-solid", "editorial-line", "centered-calm", "practical-utility", "minimal-transparent", "transparent-overlay", "floating-glass"];
5
- export type HeaderLookIdValue = typeof headerLookIdValues[number];
4
+ export declare const headerLookIdValues: readonly ["clean-base", "brand-solid", "serif-line", "centered-calm", "practical-utility", "minimal-transparent", "transparent-overlay", "floating-glass"];
5
+ export type HeaderLookIdValue = (typeof headerLookIdValues)[number];
6
6
  export type HeaderLookId = Brand<HeaderLookIdValue, 'HeaderLookId'>;
7
7
  export declare function asHeaderLookId(value: HeaderLookIdValue): HeaderLookId;
8
8
  export type PersistedHeaderLookIdParseResult = Readonly<{
@@ -18,8 +18,8 @@ export declare function parsePersistedHeaderLookId(value: string): Exclude<Persi
18
18
  kind: 'empty';
19
19
  }>;
20
20
  export declare function parsePersistedHeaderLookId(value: string | null | undefined): PersistedHeaderLookIdParseResult;
21
- export declare const headerLayoutIdValues: readonly ["classic", "centered", "editorial", "floating"];
22
- export type HeaderLayoutIdValue = typeof headerLayoutIdValues[number];
21
+ export declare const headerLayoutIdValues: readonly ["classic", "centered", "floating"];
22
+ export type HeaderLayoutIdValue = (typeof headerLayoutIdValues)[number];
23
23
  export type HeaderLayoutId = Brand<HeaderLayoutIdValue, 'HeaderLayoutId'>;
24
24
  export declare function asHeaderLayoutId(value: HeaderLayoutIdValue): HeaderLayoutId;
25
25
  export type PersistedHeaderLayoutIdParseResult = Readonly<{
@@ -35,8 +35,8 @@ export declare function parsePersistedHeaderLayoutId(value: string): Exclude<Per
35
35
  kind: 'empty';
36
36
  }>;
37
37
  export declare function parsePersistedHeaderLayoutId(value: string | null | undefined): PersistedHeaderLayoutIdParseResult;
38
- export declare const headerStyleIdValues: readonly ["minimal", "fine-line", "soft-bar", "pill-nav", "brand-bar", "brand-underline", "brand-pill", "editorial-line", "flat-tabs", "glass", "minimal-surface", "soft-shell"];
39
- export type HeaderStyleIdValue = typeof headerStyleIdValues[number];
38
+ export declare const headerStyleIdValues: readonly ["minimal", "fine-line", "soft-bar", "pill-nav", "brand-bar", "brand-underline", "brand-pill", "serif-line", "flat-tabs", "glass", "minimal-surface", "soft-shell", "split-glass", "split-pill"];
39
+ export type HeaderStyleIdValue = (typeof headerStyleIdValues)[number];
40
40
  export type HeaderStyleId = Brand<HeaderStyleIdValue, 'HeaderStyleId'>;
41
41
  export declare function asHeaderStyleId(value: HeaderStyleIdValue): HeaderStyleId;
42
42
  export type PersistedHeaderStyleIdParseResult = Readonly<{
@@ -72,12 +72,23 @@ export type HeaderStyleDefinition = Readonly<{
72
72
  supportedLayoutIds: readonly HeaderLayoutId[];
73
73
  navInteraction: HeaderStyleNavInteraction;
74
74
  surface: HeaderStyleSurface;
75
- requiresFloatingLayout?: boolean;
75
+ navTypography: HeaderStyleNavTypography;
76
76
  }>;
77
77
  export type HeaderLayoutStyleSelection = Readonly<{
78
78
  layoutId: HeaderLayoutId;
79
79
  styleId: HeaderStyleId;
80
80
  }>;
81
+ export type HeaderStyleChoiceSource = Readonly<{
82
+ id: HeaderStyleId;
83
+ }>;
84
+ export type HeaderLayoutChoiceSource = Readonly<{
85
+ id: HeaderLayoutId;
86
+ }>;
87
+ export type HeaderStyleChoicesByLayout = Readonly<Partial<Record<HeaderLayoutIdValue, readonly HeaderStyleChoiceSource[]>>>;
88
+ export type HeaderLayoutStyleCuration = Readonly<{
89
+ recommendedHeaderLayoutChoices: readonly HeaderLayoutChoiceSource[];
90
+ recommendedHeaderStyleChoicesByLayout: HeaderStyleChoicesByLayout;
91
+ }>;
81
92
  export type HeaderLegacyLookAlias = Readonly<{
82
93
  lookId: HeaderLookId;
83
94
  selection: HeaderLayoutStyleSelection;
@@ -99,9 +110,9 @@ export type HeaderLayoutStyleResolution = Readonly<{
99
110
  style: HeaderStyleDefinition;
100
111
  repair: HeaderLayoutStyleRepair;
101
112
  }>;
102
- export type HeaderLookVisualTreatment = 'solid-neutral' | 'solid-brand' | 'light-editorial' | 'minimal-transparent' | 'transparent-overlay' | 'floating-glass';
113
+ export type HeaderLookVisualTreatment = 'solid-neutral' | 'solid-brand' | 'light-serif' | 'minimal-transparent' | 'transparent-overlay' | 'floating-glass';
103
114
  export type HeaderLookLayoutBehavior = 'normal-flow' | 'sticky' | 'sticky-shrink' | 'fixed-overlay' | 'fixed-floating';
104
- export type HeaderStructureId = 'inline-classic' | 'centered-stack' | 'editorial-stack' | 'floating-shell';
115
+ export type HeaderStructureId = 'inline-classic' | 'centered-stack' | 'floating-shell';
105
116
  export type HeaderTreatmentId = HeaderLookVisualTreatment;
106
117
  export type HeaderBehaviorId = HeaderLookLayoutBehavior;
107
118
  export type HeaderConfiguration = Readonly<{
@@ -120,6 +131,7 @@ export type HeaderConfigurationResolution = Readonly<{
120
131
  }>;
121
132
  export type HeaderLookOpeningRequirement = 'none' | 'reserved-space-ok' | 'requires-image-hero-with-contrast-overlay';
122
133
  export type HeaderLogoShape = 'none' | 'text-only' | 'horizontal' | 'square' | 'tall';
134
+ export type HeaderStyleNavTypography = 'plain' | 'heading' | 'quiet-caps' | 'brand-caps';
123
135
  export type HeaderLookDefinition = Readonly<{
124
136
  id: HeaderLookId;
125
137
  label: string;
@@ -220,15 +232,6 @@ export declare const headerLayoutCatalog: readonly [{
220
232
  readonly shrinkOnScroll: false;
221
233
  readonly maxRecommendedNavItems: 5;
222
234
  readonly allowedLogoShapes: readonly ["none", "text-only", "horizontal", "square"];
223
- }, {
224
- readonly id: HeaderLayoutId;
225
- readonly label: "Editorial";
226
- readonly description: "A composed, magazine-like stacked header treatment.";
227
- readonly structure: "editorial-stack";
228
- readonly variant: "editorial";
229
- readonly defaultPositioning: "static";
230
- readonly shrinkOnScroll: false;
231
- readonly maxRecommendedNavItems: 6;
232
235
  }, {
233
236
  readonly id: HeaderLayoutId;
234
237
  readonly label: "Floating";
@@ -247,6 +250,7 @@ export declare const headerStyleCatalog: readonly [{
247
250
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
248
251
  readonly navInteraction: "color-change";
249
252
  readonly surface: "neutral";
253
+ readonly navTypography: "plain";
250
254
  }, {
251
255
  readonly id: HeaderStyleId;
252
256
  readonly label: "Fine Line";
@@ -254,6 +258,7 @@ export declare const headerStyleCatalog: readonly [{
254
258
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
255
259
  readonly navInteraction: "underline-grow";
256
260
  readonly surface: "bordered";
261
+ readonly navTypography: "plain";
257
262
  }, {
258
263
  readonly id: HeaderStyleId;
259
264
  readonly label: "Soft Bar";
@@ -261,6 +266,7 @@ export declare const headerStyleCatalog: readonly [{
261
266
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
262
267
  readonly navInteraction: "pill-background";
263
268
  readonly surface: "soft";
269
+ readonly navTypography: "plain";
264
270
  }, {
265
271
  readonly id: HeaderStyleId;
266
272
  readonly label: "Pill Nav";
@@ -268,6 +274,7 @@ export declare const headerStyleCatalog: readonly [{
268
274
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
269
275
  readonly navInteraction: "pill-background";
270
276
  readonly surface: "soft";
277
+ readonly navTypography: "plain";
271
278
  }, {
272
279
  readonly id: HeaderStyleId;
273
280
  readonly label: "Brand Bar";
@@ -275,6 +282,7 @@ export declare const headerStyleCatalog: readonly [{
275
282
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
276
283
  readonly navInteraction: "color-change";
277
284
  readonly surface: "brand-solid";
285
+ readonly navTypography: "brand-caps";
278
286
  }, {
279
287
  readonly id: HeaderStyleId;
280
288
  readonly label: "Brand Underline";
@@ -282,6 +290,7 @@ export declare const headerStyleCatalog: readonly [{
282
290
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
283
291
  readonly navInteraction: "underline-grow";
284
292
  readonly surface: "brand-solid";
293
+ readonly navTypography: "brand-caps";
285
294
  }, {
286
295
  readonly id: HeaderStyleId;
287
296
  readonly label: "Brand Pill";
@@ -289,13 +298,15 @@ export declare const headerStyleCatalog: readonly [{
289
298
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
290
299
  readonly navInteraction: "pill-background";
291
300
  readonly surface: "brand-solid";
301
+ readonly navTypography: "brand-caps";
292
302
  }, {
293
303
  readonly id: HeaderStyleId;
294
- readonly label: "Editorial Line";
304
+ readonly label: "Serif Line";
295
305
  readonly description: "Typographic logo treatment with understated underline navigation.";
296
306
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
297
307
  readonly navInteraction: "underline-grow";
298
308
  readonly surface: "bordered";
309
+ readonly navTypography: "heading";
299
310
  }, {
300
311
  readonly id: HeaderStyleId;
301
312
  readonly label: "Flat Tabs";
@@ -303,22 +314,23 @@ export declare const headerStyleCatalog: readonly [{
303
314
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
304
315
  readonly navInteraction: "flat-block";
305
316
  readonly surface: "bordered";
317
+ readonly navTypography: "quiet-caps";
306
318
  }, {
307
319
  readonly id: HeaderStyleId;
308
320
  readonly label: "Glass";
309
- readonly description: "Floating translucent chrome with frosted navigation backing.";
321
+ readonly description: "Translucent chrome with frosted navigation backing.";
310
322
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
311
323
  readonly navInteraction: "glass-backed";
312
324
  readonly surface: "floating";
313
- readonly requiresFloatingLayout: true;
325
+ readonly navTypography: "plain";
314
326
  }, {
315
327
  readonly id: HeaderStyleId;
316
- readonly label: "Minimal Surface";
317
- readonly description: "Floating chrome with a restrained translucent surface.";
328
+ readonly label: "Clear Split";
329
+ readonly description: "Floating logo with transparent navigation and no shared shell.";
318
330
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
319
331
  readonly navInteraction: "color-change";
320
332
  readonly surface: "floating";
321
- readonly requiresFloatingLayout: true;
333
+ readonly navTypography: "plain";
322
334
  }, {
323
335
  readonly id: HeaderStyleId;
324
336
  readonly label: "Soft Shell";
@@ -326,7 +338,23 @@ export declare const headerStyleCatalog: readonly [{
326
338
  readonly supportedLayoutIds: readonly HeaderLayoutId[];
327
339
  readonly navInteraction: "pill-background";
328
340
  readonly surface: "floating";
329
- readonly requiresFloatingLayout: true;
341
+ readonly navTypography: "plain";
342
+ }, {
343
+ readonly id: HeaderStyleId;
344
+ readonly label: "Split Glass";
345
+ readonly description: "Logo floats independently while the navigation sits in a glass rail.";
346
+ readonly supportedLayoutIds: readonly HeaderLayoutId[];
347
+ readonly navInteraction: "glass-backed";
348
+ readonly surface: "floating";
349
+ readonly navTypography: "quiet-caps";
350
+ }, {
351
+ readonly id: HeaderStyleId;
352
+ readonly label: "Split Pill";
353
+ readonly description: "Logo floats independently with a soft pill-backed navigation rail.";
354
+ readonly supportedLayoutIds: readonly HeaderLayoutId[];
355
+ readonly navInteraction: "pill-background";
356
+ readonly surface: "floating";
357
+ readonly navTypography: "heading";
330
358
  }];
331
359
  export declare const legacyHeaderLookAliases: readonly [{
332
360
  readonly lookId: HeaderLookId;
@@ -383,12 +411,14 @@ export declare function isHeaderStyleCompatibleWithLayout(style: HeaderStyleDefi
383
411
  export declare function resolveLegacyHeaderLookAlias(lookId: HeaderLookId): HeaderLayoutStyleSelection | null;
384
412
  export declare function findLegacyHeaderLookIdForSelection(selection: HeaderLayoutStyleSelection): HeaderLookId | null;
385
413
  export declare function getCompatibleHeaderStyleIds(layoutId: HeaderLayoutId): readonly HeaderStyleId[];
414
+ export declare function getOrderedHeaderLayoutIdsForCuration(curation: HeaderLayoutStyleCuration): readonly HeaderLayoutId[];
415
+ export declare function getOrderedHeaderStyleIdsForLayout(curation: HeaderLayoutStyleCuration, layoutId: HeaderLayoutId): readonly HeaderStyleId[];
386
416
  export declare function deriveNearestCompatibleHeaderStyle(styleId: HeaderStyleId, layoutId: HeaderLayoutId): HeaderStyleId;
387
417
  export declare function resolveHeaderLayoutStyleSelection(selection: HeaderLayoutStyleSelection): HeaderLayoutStyleResolution;
388
418
  export declare function compileHeaderLayoutStyleSelection(theme: Theme, selection: HeaderLayoutStyleSelection): Theme['header'];
389
419
  declare function solidBrandHeader(theme: Theme): Theme['header'];
390
420
  declare function cleanBaseHeader(theme: Theme): Theme['header'];
391
- declare function editorialLineHeader(theme: Theme): Theme['header'];
421
+ declare function serifLineHeader(theme: Theme): Theme['header'];
392
422
  declare function centeredCalmHeader(theme: Theme): Theme['header'];
393
423
  declare function practicalUtilityHeader(theme: Theme): Theme['header'];
394
424
  declare function minimalTransparentHeader(theme: Theme): Theme['header'];
@@ -420,25 +450,25 @@ export declare const headerLookCatalog: readonly [{
420
450
  readonly compile: typeof solidBrandHeader;
421
451
  }, {
422
452
  readonly id: HeaderLookId;
423
- readonly label: "Editorial line";
424
- readonly visualTreatment: "light-editorial";
453
+ readonly label: "Serif line";
454
+ readonly visualTreatment: "light-serif";
425
455
  readonly layoutBehavior: "sticky";
426
456
  readonly configuration: {
427
- readonly structure: "editorial-stack";
428
- readonly treatment: "light-editorial";
457
+ readonly structure: "centered-stack";
458
+ readonly treatment: "light-serif";
429
459
  readonly behavior: "sticky";
430
460
  };
431
461
  readonly openingRequirement: "none";
432
462
  readonly maxRecommendedNavItems: 6;
433
- readonly compile: typeof editorialLineHeader;
463
+ readonly compile: typeof serifLineHeader;
434
464
  }, {
435
465
  readonly id: HeaderLookId;
436
466
  readonly label: "Centered calm";
437
- readonly visualTreatment: "light-editorial";
467
+ readonly visualTreatment: "light-serif";
438
468
  readonly layoutBehavior: "normal-flow";
439
469
  readonly configuration: {
440
470
  readonly structure: "centered-stack";
441
- readonly treatment: "light-editorial";
471
+ readonly treatment: "light-serif";
442
472
  readonly behavior: "normal-flow";
443
473
  };
444
474
  readonly openingRequirement: "none";
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { useOptionalPreviewLayout, PreviewQueryProvider } from './chunk-6SMUFTXD.mjs';
3
- import { PreviewThemeOverlayProvider, PreviewDesignCoordinatorProvider, resolveSiteStyleAccess, usePreviewDesignCoordinator, createOptimisticActionRunner, resolveStyleConfiguratorInitialSnapshot, createStyleConfiguratorState, syncStyleConfiguratorState, buildSiteChromeLookModels, planSiteStylePreviewChange, markApplyFailed, markApplySaved, markApplySaving, previewHeaderStyle, previewFooterLook, cycleSiteChromeLookId, usePreviewThemeOverlay, resolvePreviewDashboardSetupHandoff, buildPreviewDashboardSetupUrl, resolvePreviewSetupBannerModel, planSiteChromeLookSelection, sanitizeDashboardPath } from './chunk-GSQX43EZ.mjs';
4
- import { resolvePreviewChromeSurface, getPreviewSidebarTab, onPreviewSidebarOpenRequest, getPreviewChromeSurfaceDataProps, PREVIEW_CHROME_THEME_CLASS_NAME, setPreviewSidebarTab, PreviewPageDesignEditorStateProvider, usePreviewPageDesignEditorState, PREVIEW_SURFACE_PARAM } from './chunk-ANKDYZ2E.mjs';
5
- import { clientComponentRegistry, deriveLaunchReadiness, DEFAULT_LAUNCH_READINESS_INPUT, useEditorUiStore, ResizableSplitPane, BlockApiProvider, EditorProvider, getCuratedSiteStyle, useEditor, createRoutingHelpers, createSnapshotFromPageRecord, EntryControllerProvider, useEntryEditorController, useEditorUiStoreInstance, surfaceResolutionContextFromTheme, asEditorBlockId, EditableBlockProvider, asDesignBlockId, PageRenderer, planSiteDocument, ThemeScope, FixedBottomSurface, Button, unwrapResponse, X, ChevronLeft, ChevronRight, RotateCcw, PreviewRichTextEditor, RichText, PreviewTextEditor, Text, buildThemeRuntime, renderBlock, siteHeaderManifest, siteFooterManifest, SiteDocumentLayout, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, buildEditorModelRuntimeFieldsByBlockId, applyCompiledRuntimeFieldsToContent, assertNever2, getBlockDefinition, systemCustomizeFacetDefinitionsForBlock, systemCustomizeFacetAppliesToLayoutVariant, systemCustomizeFacetCurrentValue, systemCustomizeFacetLabelForValue, systemCustomizeFacetNextValue, assertNever } from './chunk-WLQBJN2Z.mjs';
3
+ import { PreviewThemeOverlayProvider, PreviewDesignCoordinatorProvider, resolveSiteStyleAccess, usePreviewDesignCoordinator, createOptimisticActionRunner, resolveStyleConfiguratorInitialSnapshot, createStyleConfiguratorState, syncStyleConfiguratorState, buildSiteChromeLookModels, planSiteStylePreviewChange, markApplyFailed, markApplySaved, markApplySaving, previewHeaderStyle, previewFooterLook, cycleSiteChromeLookId, usePreviewThemeOverlay, resolvePreviewDashboardSetupHandoff, buildPreviewDashboardSetupUrl, resolvePreviewSetupBannerModel, planSiteChromeLookSelection, sanitizeDashboardPath } from './chunk-IENWFSLO.mjs';
4
+ import { resolvePreviewChromeSurface, getPreviewSidebarTab, onPreviewSidebarOpenRequest, getPreviewChromeSurfaceDataProps, PREVIEW_CHROME_THEME_CLASS_NAME, setPreviewSidebarTab, PreviewPageDesignEditorStateProvider, usePreviewPageDesignEditorState, PREVIEW_SURFACE_PARAM } from './chunk-ZYEJLCTN.mjs';
5
+ import { clientComponentRegistry, deriveLaunchReadiness, DEFAULT_LAUNCH_READINESS_INPUT, useEditorUiStore, ResizableSplitPane, BlockApiProvider, EditorProvider, getCuratedSiteStyle, useEditor, createRoutingHelpers, createSnapshotFromPageRecord, EntryControllerProvider, useEntryEditorController, useEditorUiStoreInstance, surfaceResolutionContextFromTheme, asEditorBlockId, EditableBlockProvider, asDesignBlockId, PageRenderer, planSiteDocument, ThemeScope, FixedBottomSurface, Button, unwrapResponse, X, ChevronLeft, ChevronRight, RotateCcw, PreviewRichTextEditor, RichText, PreviewTextEditor, Text, buildThemeRuntime, renderBlock, siteHeaderManifest, siteFooterManifest, SiteDocumentLayout, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, buildEditorModelRuntimeFieldsByBlockId, applyCompiledRuntimeFieldsToContent, assertNever2, getBlockDefinition, systemCustomizeFacetDefinitionsForBlock, systemCustomizeFacetAppliesToLayoutVariant, systemCustomizeFacetCurrentValue, systemCustomizeFacetLabelForValue, systemCustomizeFacetNextValue, assertNever } from './chunk-KWJPDZH2.mjs';
6
6
  import { API_ENDPOINTS, createBearerAPIClient, isPreviewRuntimeSessionEditable, DEFAULT_SURFACE_ID, initPreviewAuth, usePreviewAuth, usePreviewAuthFetch, markPreviewAuthExpired, usePreviewToken, parseSurfaceId } from './chunk-VX7B5VAC.mjs';
7
7
  import React9, { createContext, useMemo, useState, useEffect, useRef, useCallback, useId, useReducer, Children, isValidElement, Fragment as Fragment$1, cloneElement, useContext } from 'react';
8
8
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -2909,11 +2909,11 @@ function renderPreviewDocument({
2909
2909
  }
2910
2910
  var previewContainerResponsiveEnabled = process.env.NEXT_PUBLIC_ENABLE_PREVIEW_CONTAINER_RESPONSIVE !== "false";
2911
2911
  var PreviewEditorSidebar = React9.lazy(async () => {
2912
- const mod = await import('./PreviewEditorSidebar-XSX7QKHQ.mjs');
2912
+ const mod = await import('./PreviewEditorSidebar-DVUG7GK4.mjs');
2913
2913
  return { default: mod.PreviewEditorSidebar };
2914
2914
  });
2915
2915
  var PreviewEditorUI = React9.lazy(async () => {
2916
- const mod = await import('./PreviewEditorUI-YZNEZ3QD.mjs');
2916
+ const mod = await import('./PreviewEditorUI-P7RN4CDS.mjs');
2917
2917
  return { default: mod.PreviewEditorUI };
2918
2918
  });
2919
2919
  var previewPaneContainmentStyle = {
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { assertNever2, deriveNearestCompatibleHeaderStyle, findLegacyHeaderLookIdForSelection, compileSiteThemeFromSelections, footerLookCatalog, footerLookRejectionReasonLabel, getHeaderStyle, getHeaderLayout, writePlanForLookCustomizationCommand, headerLayoutCatalog, headerStyleCatalog, getCompatibleHeaderStyleIds, siteStyleIdFromTheme, getCuratedSiteStyle } from './chunk-WLQBJN2Z.mjs';
2
+ import { assertNever2, deriveNearestCompatibleHeaderStyle, findLegacyHeaderLookIdForSelection, compileSiteThemeFromSelections, footerLookCatalog, getOrderedHeaderStyleIdsForLayout, getOrderedHeaderLayoutIdsForCuration, footerLookRejectionReasonLabel, getHeaderStyle, getHeaderLayout, writePlanForLookCustomizationCommand, siteStyleIdFromTheme, getCuratedSiteStyle } from './chunk-KWJPDZH2.mjs';
3
3
  import { createContext, useState, useCallback, useMemo, useContext, useRef, useEffect } from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -975,19 +975,24 @@ function buildSiteChromeLookModels(input) {
975
975
  return {
976
976
  headerLayout: {
977
977
  renderedLayoutId: renderedHeaderLayoutId,
978
- options: orderedHeaderLayoutIds(input.siteStyle).map((layoutId) => {
979
- const layout = getHeaderLayout(layoutId);
980
- return {
981
- id: layoutId,
982
- label: layout?.label ?? layoutId,
983
- description: layout?.description,
984
- available: true
985
- };
986
- })
978
+ options: getOrderedHeaderLayoutIdsForCuration(input.siteStyle).map(
979
+ (layoutId) => {
980
+ const layout = getHeaderLayout(layoutId);
981
+ return {
982
+ id: layoutId,
983
+ label: layout?.label ?? layoutId,
984
+ description: layout?.description,
985
+ available: true
986
+ };
987
+ }
988
+ )
987
989
  },
988
990
  headerStyle: {
989
991
  renderedStyleId: renderedHeaderStyleId,
990
- options: orderedHeaderStyleIds(input.siteStyle, selection.headerLayoutId).map((styleId) => {
992
+ options: getOrderedHeaderStyleIdsForLayout(
993
+ input.siteStyle,
994
+ selection.headerLayoutId
995
+ ).map((styleId) => {
991
996
  const style = getHeaderStyle(styleId);
992
997
  return {
993
998
  id: styleId,
@@ -1011,7 +1016,9 @@ function buildSiteChromeLookModels(input) {
1011
1016
  ...common,
1012
1017
  footerLookId: look.id
1013
1018
  });
1014
- const rejected = result.footerSelection.rejected.find((item) => item.lookId === look.id);
1019
+ const rejected = result.footerSelection.rejected.find(
1020
+ (item) => item.lookId === look.id
1021
+ );
1015
1022
  return {
1016
1023
  id: look.id,
1017
1024
  label: look.label,
@@ -1077,37 +1084,11 @@ function planSiteChromeLookSelection(command) {
1077
1084
  next: { footerLookId: command.lookId }
1078
1085
  };
1079
1086
  }
1080
- function orderedHeaderLayoutIds(siteStyle) {
1081
- return orderUnique(
1082
- siteStyle.recommendedHeaderLayoutChoices.map((choice) => choice.id),
1083
- headerLayoutCatalog.map((layout) => layout.id)
1084
- );
1085
- }
1086
- function orderedHeaderStyleIds(siteStyle, layoutId) {
1087
- const curated = headerStyleChoicesForLayout(
1088
- siteStyle.recommendedHeaderStyleChoicesByLayout,
1089
- layoutId
1090
- ).map((choice) => choice.id);
1091
- return orderUnique(curated, getCompatibleHeaderStyleIds(layoutId), headerStyleCatalog.map((style) => style.id));
1092
- }
1093
- function headerStyleChoicesForLayout(choicesByLayout, layoutId) {
1094
- return choicesByLayout[layoutId] ?? [];
1095
- }
1096
- function orderUnique(...groups) {
1097
- const seen = /* @__PURE__ */ new Set();
1098
- const ordered = [];
1099
- for (const group of groups) {
1100
- for (const id of group) {
1101
- if (seen.has(id)) continue;
1102
- seen.add(id);
1103
- ordered.push(id);
1104
- }
1105
- }
1106
- return ordered;
1107
- }
1108
1087
  function diagnosticsForRequestedFooterSelection(requestedLookId, renderedLookId, rejected) {
1109
1088
  if (!requestedLookId || requestedLookId === renderedLookId) return [];
1110
- const rejectedRequest = rejected.find((item) => item.lookId === requestedLookId);
1089
+ const rejectedRequest = rejected.find(
1090
+ (item) => item.lookId === requestedLookId
1091
+ );
1111
1092
  return rejectedRequest?.reasons.map(footerLookRejectionReasonLabel) ?? [];
1112
1093
  }
1113
1094