@riverbankcms/sdk 0.79.0 → 0.80.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 (160) hide show
  1. package/dist/PreviewEditorSidebar-QZG37QIF.mjs +2655 -0
  2. package/dist/{PreviewEditorUI-27KJVEET.mjs → PreviewEditorUI-AXIKSMZA.mjs} +27 -4
  3. package/dist/SdkPreviewModeRuntime-XE5M4UKM.mjs +8 -0
  4. package/dist/_dts/ai/src/contracts/proposals.d.ts +20 -0
  5. package/dist/_dts/api/src/endpoints.d.ts +24 -0
  6. package/dist/_dts/api/src/index.d.ts +1 -1
  7. package/dist/_dts/api/src/siteInfrastructure.d.ts +124 -0
  8. package/dist/_dts/api/src/siteOnboarding.d.ts +13 -0
  9. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +10 -1
  10. package/dist/_dts/block-form/src/client/index.d.ts +2 -0
  11. package/dist/_dts/block-form/src/index.d.ts +2 -0
  12. package/dist/_dts/block-form/src/utils/evaluateVisibility.d.ts +2 -1
  13. package/dist/_dts/blocks/src/client/header.d.ts +1 -1
  14. package/dist/_dts/blocks/src/client.d.ts +12 -12
  15. package/dist/_dts/blocks/src/index.d.ts +1 -1
  16. package/dist/_dts/blocks/src/system/blocks/events/event-listing.d.ts +2 -2
  17. package/dist/_dts/blocks/src/system/blocks/events/event-spotlight.d.ts +2 -1
  18. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -1
  19. package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +7 -1
  20. package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +21 -12
  21. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +4 -2
  22. package/dist/_dts/blocks/src/system/fragments/library/faqHeading.d.ts +1 -0
  23. package/dist/_dts/blocks/src/system/fragments/library/testimonialsCarousel.d.ts +5 -0
  24. package/dist/_dts/blocks/src/system/node/fragments/headingDecoration.d.ts +1 -4
  25. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
  26. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +7 -7
  27. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +3 -3
  28. package/dist/_dts/blocks/src/system/runtime/header/enhanceHeaderSection.d.ts +10 -2
  29. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +5 -5
  30. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.server.d.ts +2 -2
  31. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventSpotlight.d.ts +2 -2
  32. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +2 -2
  33. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventDetailModal.d.ts +2 -2
  34. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventModals.d.ts +2 -2
  35. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +2 -2
  36. package/dist/_dts/blocks/src/system/transforms/registry/boxStyles.d.ts +3 -0
  37. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +9 -0
  38. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +14 -1
  39. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +9 -3
  40. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +2 -6
  41. package/dist/_dts/editor-blocks/src/block-editor/BlockCardBody.d.ts +2 -6
  42. package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +2 -6
  43. package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +2 -6
  44. package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +6 -4
  45. package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +2 -6
  46. package/dist/_dts/editor-blocks/src/index.d.ts +2 -0
  47. package/dist/_dts/preview-next/src/client/blocks/BlockToolbar.d.ts +5 -1
  48. package/dist/_dts/preview-next/src/client/blocks/previewCustomizeControlPlan.d.ts +24 -0
  49. package/dist/_dts/preview-next/src/client/blocks/useBlockCustomizeControls.d.ts +34 -0
  50. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -5
  51. package/dist/_dts/preview-next/src/client/preview/PageDesignEditorStateContext.d.ts +4 -1
  52. package/dist/_dts/preview-next/src/client/preview/PreviewBlockCustomizeSelectionContext.d.ts +20 -0
  53. package/dist/_dts/preview-next/src/client/preview/PreviewOpenEditorButton.d.ts +2 -0
  54. package/dist/_dts/preview-next/src/client/preview/SelectedBlockCustomizePanel.d.ts +13 -0
  55. package/dist/_dts/preview-next/src/client/preview/previewCustomizeEditorDraftPatch.d.ts +13 -0
  56. package/dist/_dts/preview-next/src/client/preview/previewCustomizeRuntimePatch.d.ts +2 -0
  57. package/dist/_dts/preview-next/src/client/preview/storeTypes.d.ts +4 -0
  58. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +3 -1
  59. package/dist/_dts/sdk/src/cli/commands/webhooks.d.ts +44 -0
  60. package/dist/_dts/sdk/src/client/management/index.d.ts +1 -1
  61. package/dist/_dts/sdk/src/client/management/types.d.ts +56 -0
  62. package/dist/_dts/sdk/src/client/management/webhooks.d.ts +3 -0
  63. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +6 -3
  64. package/dist/_dts/sdk/src/version.d.ts +1 -1
  65. package/dist/_dts/theme-core/src/accordions/siteStyleDefaults.d.ts +220 -0
  66. package/dist/_dts/theme-core/src/accordions/types.d.ts +45 -2
  67. package/dist/_dts/theme-core/src/blockOverrides.d.ts +8 -0
  68. package/dist/_dts/theme-core/src/blocks/types.d.ts +1 -1
  69. package/dist/_dts/theme-core/src/blocks/vars/testimonials.d.ts +4 -1
  70. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +1 -1
  71. package/dist/_dts/theme-core/src/cards/core.d.ts +20 -0
  72. package/dist/_dts/theme-core/src/cards/generateDefaultCardSystem.d.ts +6 -3
  73. package/dist/_dts/theme-core/src/cards/siteStyleDefaults.d.ts +105 -0
  74. package/dist/_dts/theme-core/src/cards/types.d.ts +177 -0
  75. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  76. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +156 -18
  77. package/dist/_dts/theme-core/src/palette/variants/index.d.ts +15 -0
  78. package/dist/_dts/theme-core/src/palette/variants/soft-natural.d.ts +16 -0
  79. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +1 -1
  80. package/dist/_dts/theme-core/src/schema.d.ts +446 -52
  81. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +86 -17
  82. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +2 -3
  83. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +86 -17
  84. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +110 -1
  85. package/dist/_dts/theme-core/src/site-styles/footerLooks.d.ts +20 -1
  86. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -0
  87. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +286 -6
  88. package/dist/_dts/theme-core/src/site-styles/index.d.ts +2 -0
  89. package/dist/_dts/theme-core/src/site-styles/logoBranding.d.ts +193 -0
  90. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +2 -8
  91. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +2 -0
  92. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +10 -7
  93. package/dist/_dts/theme-core/src/site-styles/siteStyleThemeCompiler.d.ts +11 -0
  94. package/dist/_dts/theme-core/src/site-styles/sourceCatalogs.d.ts +2 -2
  95. package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +1 -1
  96. package/dist/_dts/theme-core/src/site-styles/testimonialQuotePresets.d.ts +15 -0
  97. package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +1 -1
  98. package/dist/_dts/theme-core/src/site-styles/types.d.ts +7 -29
  99. package/dist/{PreviewEditorSidebar-56NMJMIK.mjs → chunk-5NZGBSJF.mjs} +1423 -2451
  100. package/dist/{chunk-4HCW7FHJ.mjs → chunk-7PCYG6YV.mjs} +215 -137
  101. package/dist/{chunk-K2IIF34C.mjs → chunk-BBLZSQEY.mjs} +24 -0
  102. package/dist/{chunk-V47ZU33I.mjs → chunk-GYXKAUFV.mjs} +2785 -785
  103. package/dist/{chunk-GP555I66.mjs → chunk-HTB4BMKD.mjs} +94 -46
  104. package/dist/{chunk-A3HHFKVT.mjs → chunk-MPBNEVPB.mjs} +1 -1
  105. package/dist/cli/index.mjs +2100 -545
  106. package/dist/cli/init-docs/content/workflow-isr-revalidation.md +16 -4
  107. package/dist/client/{accordion-QLA7KBYO.mjs → accordion-QFZMNB7O.mjs} +1 -1
  108. package/dist/client/{bookingForm-PYZIPA5G.mjs → bookingForm-NCIXFWIG.mjs} +3 -3
  109. package/dist/client/bookings.mjs +1144 -329
  110. package/dist/client/{carousel-5EIULWBI.mjs → carousel-EO4BJMWD.mjs} +2 -2
  111. package/dist/client/{cart-DOP3FNI4.mjs → cart-FTYCLYUW.mjs} +5 -5
  112. package/dist/client/{checkout-BVMF6FBV.mjs → checkout-NFGLVCOX.mjs} +5 -5
  113. package/dist/client/{chunk-TYONZMST.mjs → chunk-4W66ALYT.mjs} +1 -1
  114. package/dist/client/{chunk-44K2U3QI.mjs → chunk-6GVVWSPU.mjs} +4 -4
  115. package/dist/client/{chunk-UDS3NTWA.mjs → chunk-IWFZSQNZ.mjs} +1 -1
  116. package/dist/client/{chunk-R5ESWNKX.mjs → chunk-PUOELU4O.mjs} +89 -5
  117. package/dist/client/{chunk-YLDYVRZL.mjs → chunk-PYRBIURC.mjs} +4 -4
  118. package/dist/client/{chunk-GG4M2NP6.mjs → chunk-T6UIP6UZ.mjs} +1 -1
  119. package/dist/client/{chunk-V6M5FCR5.mjs → chunk-VDS5YFLX.mjs} +1 -1
  120. package/dist/client/{chunk-CCNTDRCF.mjs → chunk-Y37KDO7P.mjs} +1 -1
  121. package/dist/client/client.mjs +4205 -2324
  122. package/dist/client/{courseRegistration-E6EAA6NL.mjs → courseRegistration-2EORROPS.mjs} +3 -3
  123. package/dist/client/{eventCalendar-HBG3HAK6.mjs → eventCalendar-WZI4VL6N.mjs} +5 -5
  124. package/dist/client/{eventCombined-6K5ZZWAK.mjs → eventCombined-QCB2TCNL.mjs} +5 -5
  125. package/dist/client/{eventDetails-Q75ICXLT.mjs → eventDetails-TFTATAPH.mjs} +5 -5
  126. package/dist/client/{eventListing-27P5F7DZ.mjs → eventListing-A2CQEHEQ.mjs} +5 -5
  127. package/dist/client/{eventRegistration-IQ7AMASR.mjs → eventRegistration-OELPVLUY.mjs} +5 -5
  128. package/dist/client/{form-JRTD65FN.mjs → form-NTIFD6WQ.mjs} +1 -1
  129. package/dist/client/{headerSection-7FPSSZHS.mjs → headerSection-7TBNKCLA.mjs} +65 -24
  130. package/dist/client/hooks.mjs +3354 -2006
  131. package/dist/client/{locationMap-7NGFNYBH.mjs → locationMap-LRLB5A3H.mjs} +1 -1
  132. package/dist/client/{newsletterForm-F3BADCI2.mjs → newsletterForm-XI52RZSN.mjs} +1 -1
  133. package/dist/client/{productDetail-V3HP7ITJ.mjs → productDetail-GSNKBFLY.mjs} +5 -5
  134. package/dist/client/{productList-L3EGJUF2.mjs → productList-BGCGT4KZ.mjs} +5 -5
  135. package/dist/client/rendering/client.mjs +2570 -1657
  136. package/dist/client/rendering/islands.mjs +18 -18
  137. package/dist/client/rendering.mjs +4275 -2394
  138. package/dist/client/{shop-DQUB5E2C.mjs → shop-RQHUCLNY.mjs} +5 -5
  139. package/dist/preview-next/before-render.mjs +24 -0
  140. package/dist/preview-next/client/runtime.mjs +5 -5
  141. package/dist/preview-next/middleware.mjs +24 -0
  142. package/dist/{sdk-runtime-AF6KXJU4.mjs → sdk-runtime-A4LHT2RS.mjs} +6 -6
  143. package/dist/server/components.mjs +4063 -2293
  144. package/dist/server/config-validation.mjs +3525 -2176
  145. package/dist/server/config.mjs +3525 -2176
  146. package/dist/server/data.mjs +3354 -2006
  147. package/dist/server/index.mjs +25 -1
  148. package/dist/server/next.mjs +4006 -2236
  149. package/dist/server/page-converter.mjs +2747 -1816
  150. package/dist/server/prebuild.mjs +1 -1
  151. package/dist/server/rendering/server.mjs +4063 -2293
  152. package/dist/server/rendering.mjs +4063 -2293
  153. package/dist/server/routing.mjs +3508 -2111
  154. package/dist/server/server.mjs +3372 -2024
  155. package/dist/server/theme-bridge.mjs +1436 -310
  156. package/dist/server/theme.mjs +409 -219
  157. package/dist/styles/index.css +300 -33
  158. package/package.json +1 -1
  159. package/dist/SdkPreviewModeRuntime-H4BSP6E7.mjs +0 -8
  160. package/dist/chunk-LCY32PXF.mjs +0 -1175
@@ -1,9 +1,9 @@
1
1
  "use client";
2
- import { useOptionalPreviewLayout, PreviewQueryProvider } from './chunk-A3HHFKVT.mjs';
3
- import { PreviewThemeOverlayProvider, PreviewDesignCoordinatorProvider, resolveSiteStyleAccess, usePreviewDesignCoordinator, createOptimisticActionRunner, resolveStyleConfiguratorInitialSnapshot, createStyleConfiguratorState, syncStyleConfiguratorState, buildSiteChromeLookModels, planSiteStylePreviewChange, markApplyFailed, markApplySaved, markApplySaving, previewHeaderStyle, previewHeaderLayout, previewFooterLook, cycleSiteChromeLookId, usePreviewThemeOverlay, resolvePreviewDashboardSetupHandoff, buildPreviewDashboardSetupUrl, resolvePreviewSetupBannerModel, planSiteChromeLookSelection, sanitizeDashboardPath } from './chunk-LCY32PXF.mjs';
4
- import { resolvePreviewChromeSurface, getPreviewSidebarTab, onPreviewSidebarOpenRequest, getPreviewChromeSurfaceDataProps, PREVIEW_CHROME_THEME_CLASS_NAME, setPreviewSidebarTab, PreviewPageDesignEditorStateProvider, usePreviewPageDesignEditorState, PREVIEW_SURFACE_PARAM } from './chunk-GP555I66.mjs';
5
- import { clientComponentRegistry, deriveLaunchReadiness, DEFAULT_LAUNCH_READINESS_INPUT, useEditorUiStore, ResizableSplitPane, BlockApiProvider, EditorProvider, MediaEditorProvider, getCuratedSiteStyle, useEditor, createRoutingHelpers, createSnapshotFromPageRecord, EntryControllerProvider, useEntryEditorController, useEditorUiStoreInstance, surfaceResolutionContextFromTheme, unsafeAsEditorBlockId, EditableBlockProvider, asDesignBlockId, PageRenderer, planSiteDocument, ThemeScope, FixedBottomSurface, Button, unwrapResponse, X, ChevronLeft, ChevronRight, RotateCcw, parseBackgroundOverrideFromContent, rankBackgroundImagePoolItems, imagePoolForOverride, resolveBackgroundCapability, enabledBackgroundModes, PreviewRichTextEditor, RichText, PreviewTextEditor, Text, buildThemeRuntime, renderBlock, siteHeaderManifest, siteFooterManifest, SiteDocumentLayout, SITE_CHROME_CLASS_NAMES, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, buildEditorModelRuntimeFieldsByBlockId, applyCompiledRuntimeFieldsToContent, assertNever2, getBlockDefinition, systemCustomizeFacetDefinitionsForBlock, systemCustomizeFacetAppliesToLayoutVariant, systemCustomizeFacetCurrentValue, systemCustomizeFacetLabelForValue, Image, useMediaEditorOptional, defaultBackgroundOverrideForMode, Upload, MediaEditor, visibleHeaderClearancePx, systemCustomizeFacetNextValue, GRADIENT_PRESETS, planBackgroundTransition, parseMediaAssetId, planBackgroundOverride, EDITABLE_SURFACE_FORWARDING_PROP, assertNever, SITE_CHROME_VISIBLE_HEADER_SELECTOR } from './chunk-V47ZU33I.mjs';
6
- import { API_ENDPOINTS, createBearerAPIClient, isPreviewRuntimeSessionEditable, DEFAULT_SURFACE_ID, initPreviewAuth, usePreviewAuth, usePreviewAuthFetch, markPreviewAuthExpired, usePreviewToken, parseSurfaceId } from './chunk-K2IIF34C.mjs';
2
+ import { useOptionalPreviewLayout, PreviewQueryProvider } from './chunk-MPBNEVPB.mjs';
3
+ import { PreviewThemeOverlayProvider, PreviewDesignCoordinatorProvider, PreviewBlockCustomizeSelectionProvider, resolveSiteStyleAccess, usePreviewDesignCoordinator, createOptimisticActionRunner, resolveStyleConfiguratorInitialSnapshot, createStyleConfiguratorState, syncStyleConfiguratorState, buildSiteChromeLookModels, planSiteStylePreviewChange, markApplyFailed, markApplySaved, markApplySaving, previewHeaderStyle, previewHeaderLayout, previewFooterLook, cycleSiteChromeLookId, usePreviewThemeOverlay, resolvePreviewDashboardSetupHandoff, buildPreviewDashboardSetupUrl, resolvePreviewSetupBannerModel, planSiteChromeLookSelection, usePreviewBlockCustomizeSelectionOptional, useBlockCustomizeControls, MAX_CUSTOMIZE_POPOVER_ROWS, MAX_QUICK_MANIFEST_FIELDS, sanitizeDashboardPath } from './chunk-5NZGBSJF.mjs';
4
+ import { resolvePreviewChromeSurface, getPreviewSidebarTab, onPreviewSidebarOpenRequest, getPreviewChromeSurfaceDataProps, PREVIEW_CHROME_THEME_CLASS_NAME, setPreviewSidebarTab, PreviewPageDesignEditorStateProvider, usePreviewPageDesignEditorState, PREVIEW_SURFACE_PARAM } from './chunk-HTB4BMKD.mjs';
5
+ import { clientComponentRegistry, deriveLaunchReadiness, DEFAULT_LAUNCH_READINESS_INPUT, useEditorUiStore, ResizableSplitPane, BlockApiProvider, EditorProvider, MediaEditorProvider, getCuratedSiteStyle, useEditor, createRoutingHelpers, createSnapshotFromPageRecord, EntryControllerProvider, useEntryEditorController, useEditorUiStoreInstance, surfaceResolutionContextFromTheme, unsafeAsEditorBlockId, EditableBlockProvider, asDesignBlockId, PageRenderer, planSiteDocument, ThemeScope, FixedBottomSurface, Button, unwrapResponse, X, ChevronLeft, ChevronRight, RotateCcw, parseBackgroundOverrideFromContent, rankBackgroundImagePoolItems, imagePoolForOverride, resolveBackgroundCapability, enabledBackgroundModes, FormRenderer, PreviewRichTextEditor, RichText, PreviewTextEditor, Text, buildThemeRuntime, renderBlock, siteHeaderManifest, siteFooterManifest, SiteDocumentLayout, SITE_CHROME_CLASS_NAMES, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, buildEditorModelRuntimeFieldsByBlockId, applyCompiledRuntimeFieldsToContent, assertNever2, getBlockDefinition, systemCustomizeFacetDefinitionsForBlock, systemCustomizeFacetAppliesToLayoutVariant, systemCustomizeFacetCurrentValue, systemCustomizeFacetLabelForValue, backgroundColorTokens, Image, useMediaEditorOptional, defaultBackgroundOverrideForMode, Upload, MediaEditor, visibleHeaderClearancePx, systemCustomizeFacetNextValue, planBackgroundTransition, GRADIENT_PRESETS, gradientToCss, parseMediaAssetId, planBackgroundOverride, EDITABLE_SURFACE_FORWARDING_PROP, assertNever, SITE_CHROME_VISIBLE_HEADER_SELECTOR } from './chunk-GYXKAUFV.mjs';
6
+ import { API_ENDPOINTS, createBearerAPIClient, isPreviewRuntimeSessionEditable, DEFAULT_SURFACE_ID, initPreviewAuth, usePreviewAuth, usePreviewAuthFetch, markPreviewAuthExpired, usePreviewToken, parseSurfaceId } from './chunk-BBLZSQEY.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';
9
9
 
@@ -613,17 +613,28 @@ function BlockToolbar({
613
613
  blockId,
614
614
  blockKind,
615
615
  content,
616
+ theme = null,
616
617
  headerClearancePx = 0
617
618
  }) {
618
619
  const uiStore = useEditorUiStoreInstance();
620
+ const editorBlockId = useMemo(() => unsafeAsEditorBlockId(blockId), [blockId]);
621
+ const draftContent = useEditorUiStore(
622
+ (state) => state.drafts.getCurrentValues(editorBlockId)
623
+ );
624
+ const customizeContent = useMemo(
625
+ () => isRecord3(draftContent) ? draftContent : content,
626
+ [content, draftContent]
627
+ );
628
+ const customizeSelection = usePreviewBlockCustomizeSelectionOptional();
619
629
  const customizePanelId = useId();
620
630
  const customizeDescriptionId = `${customizePanelId}-description`;
621
631
  const focusTarget = useMemo(
622
- () => computeDefaultFocus(blockKind, content),
623
- [blockKind, content]
632
+ () => computeDefaultFocus(blockKind, customizeContent),
633
+ [blockKind, customizeContent]
624
634
  );
625
635
  const [customizeOpen, setCustomizeOpen] = useState(false);
626
636
  const [backgroundChooserOpen, setBackgroundChooserOpen] = useState(false);
637
+ const [backgroundColorPalette, setBackgroundColorPalette] = useState(null);
627
638
  const customizeButtonRef = useRef(null);
628
639
  const {
629
640
  state: pageDesignState,
@@ -662,13 +673,13 @@ function BlockToolbar({
662
673
  designBlock && designBlock.availableLooks.length > 1
663
674
  );
664
675
  const facetControls = useMemo(
665
- () => previewCustomizeFacetControlsFor(blockKind, content, designBlock),
666
- [blockKind, content, designBlock]
676
+ () => previewCustomizeFacetControlsFor(blockKind, customizeContent, designBlock),
677
+ [blockKind, customizeContent, designBlock]
667
678
  );
668
679
  const hasFacetControls = facetControls.length > 0;
669
680
  const currentBackground = useMemo(
670
- () => parseBackgroundOverrideFromContent(content),
671
- [content]
681
+ () => parseBackgroundOverrideFromContent(customizeContent),
682
+ [customizeContent]
672
683
  );
673
684
  const mergedBackgroundImagePool = useMemo(
674
685
  () => rankBackgroundImagePoolItems(
@@ -682,16 +693,37 @@ function BlockToolbar({
682
693
  const backgroundCapability = useMemo(
683
694
  () => designBlock ? resolveBackgroundCapability({
684
695
  block: designBlock,
685
- imagePool: mergedBackgroundImagePool
696
+ imagePool: mergedBackgroundImagePool,
697
+ palette: backgroundColorPalette
686
698
  }) : null,
687
- [designBlock, mergedBackgroundImagePool]
699
+ [backgroundColorPalette, designBlock, mergedBackgroundImagePool]
688
700
  );
689
701
  const enabledBackgroundModeList = useMemo(
690
702
  () => backgroundCapability ? enabledBackgroundModes(backgroundCapability) : [],
691
703
  [backgroundCapability]
692
704
  );
693
705
  const hasBackgroundControls = currentBackground.kind === "supported" && enabledBackgroundModeList.length > 1;
694
- const hasCustomizeControls = hasLayoutControls || hasLookControls || hasFacetControls || hasBackgroundControls;
706
+ const builtInCustomizeRowCount = (hasLayoutControls ? 1 : 0) + facetControls.length + (hasBackgroundControls ? 1 : 0) + (hasLookControls ? 1 : 0);
707
+ const manifestCustomize = useBlockCustomizeControls({
708
+ blockId,
709
+ blockKind,
710
+ content: customizeContent,
711
+ uiStore,
712
+ theme,
713
+ maxQuickFields: MAX_QUICK_MANIFEST_FIELDS,
714
+ maxPopoverRows: MAX_CUSTOMIZE_POPOVER_ROWS,
715
+ builtInPopoverRows: builtInCustomizeRowCount
716
+ });
717
+ const quickManifestFields = manifestCustomize.quickFields;
718
+ const hasSidebarCustomizeControls = manifestCustomize.hasControls;
719
+ const hasOverflowCustomizeControls = manifestCustomize.hasOverflowControls;
720
+ const quickManifestBackend = manifestCustomize.backend;
721
+ const canCycleBackgroundMode = enabledBackgroundModeList.length > 1;
722
+ const canCycleBackgroundValue = currentBackground.kind === "supported" && backgroundCapability ? canCycleBackgroundOverrideValue(
723
+ currentBackground.override,
724
+ backgroundCapability
725
+ ) : false;
726
+ const hasCustomizeControls = hasLayoutControls || hasLookControls || hasFacetControls || hasBackgroundControls || quickManifestFields.length > 0 || hasSidebarCustomizeControls;
695
727
  const isSavingCustomize = isHistoryPending;
696
728
  useEffect(() => {
697
729
  if (!hasCustomizeControls) {
@@ -699,6 +731,10 @@ function BlockToolbar({
699
731
  setBackgroundChooserOpen(false);
700
732
  }
701
733
  }, [hasCustomizeControls]);
734
+ useEffect(() => {
735
+ if (!customizeOpen) return;
736
+ setBackgroundColorPalette(readBackgroundColorPaletteSnapshot());
737
+ }, [customizeOpen, pageDesignState]);
702
738
  useEffect(() => {
703
739
  if (!customizeOpen || !backgroundCapability?.modes.includes("image")) {
704
740
  return;
@@ -719,11 +755,23 @@ function BlockToolbar({
719
755
  state.setPreviewSidebarTab("editor");
720
756
  state.setDrawerOpen(true);
721
757
  state.requestFocus({
722
- blockId: unsafeAsEditorBlockId(blockId),
758
+ blockId: editorBlockId,
723
759
  fieldPath: focusTarget.fieldPath,
724
760
  itemIndex: focusTarget.itemIndex
725
761
  });
726
762
  };
763
+ const inspectBlock = useCallback(() => {
764
+ customizeSelection?.inspectBlock(unsafeAsEditorBlockId(blockId));
765
+ }, [blockId, customizeSelection]);
766
+ const openCustomizeSettings = useCallback((e) => {
767
+ e.preventDefault();
768
+ e.stopPropagation();
769
+ inspectBlock();
770
+ const state = uiStore.getState();
771
+ setPreviewSidebarTab("editor");
772
+ state.setPreviewSidebarTab("editor");
773
+ state.setDrawerOpen(true);
774
+ }, [inspectBlock, uiStore]);
727
775
  const cycleLayout = (direction) => (e) => {
728
776
  e.preventDefault();
729
777
  e.stopPropagation();
@@ -768,7 +816,7 @@ function BlockToolbar({
768
816
  const action = setPageDesignBlockBackground({
769
817
  block: designBlock,
770
818
  override,
771
- currentContent: content,
819
+ currentContent: customizeContent,
772
820
  imagePool: mergedBackgroundImagePool
773
821
  });
774
822
  if (!action) return;
@@ -788,19 +836,20 @@ function BlockToolbar({
788
836
  const action = setPageDesignBlockBackground({
789
837
  block: designBlock,
790
838
  override: plan.override,
791
- currentContent: content,
839
+ currentContent: customizeContent,
792
840
  imagePool: mergedBackgroundImagePool
793
841
  });
794
842
  if (!action) return;
795
843
  saveBlockCustomizeAction(action);
796
844
  };
797
845
  const saveBlockCustomizeAction = (action) => {
798
- void applyPageDesignAction(action);
846
+ void applyPageDesignAction(action, { runtimeContent: customizeContent });
799
847
  };
800
848
  const toggleCustomize = (e) => {
801
849
  e.preventDefault();
802
850
  e.stopPropagation();
803
851
  if (!customizeOpen) {
852
+ inspectBlock();
804
853
  setCustomizeReturnFocusTarget(
805
854
  e.currentTarget instanceof HTMLElement ? e.currentTarget : customizeButtonRef.current
806
855
  );
@@ -836,7 +885,7 @@ function BlockToolbar({
836
885
  children: "Edit"
837
886
  }
838
887
  ),
839
- customizeOpen && designBlock ? /* @__PURE__ */ jsxs(
888
+ customizeOpen && (designBlock || hasSidebarCustomizeControls) ? /* @__PURE__ */ jsxs(
840
889
  "div",
841
890
  {
842
891
  id: customizePanelId,
@@ -877,7 +926,7 @@ function BlockToolbar({
877
926
  )
878
927
  ] }),
879
928
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
880
- designBlock.layout && hasLayoutControls ? /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
929
+ designBlock?.layout && hasLayoutControls ? /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
881
930
  /* @__PURE__ */ jsxs("div", { children: [
882
931
  /* @__PURE__ */ jsx("div", { className: "text-sm font-medium", children: "Layout" }),
883
932
  /* @__PURE__ */ jsx("div", { className: "text-xs text-muted-foreground", children: layoutLabel(
@@ -908,7 +957,7 @@ function BlockToolbar({
908
957
  )
909
958
  ] })
910
959
  ] }) : null,
911
- designBlock.layout?.status === "unsupported" ? /* @__PURE__ */ jsx("p", { className: "text-xs text-amber-700", children: "This layout is no longer available. The preview is using the closest safe option." }) : null,
960
+ designBlock?.layout?.status === "unsupported" ? /* @__PURE__ */ jsx("p", { className: "text-xs text-amber-700", children: "This layout is no longer available. The preview is using the closest safe option." }) : null,
912
961
  facetControls.map((control) => /* @__PURE__ */ jsxs(
913
962
  "div",
914
963
  {
@@ -948,14 +997,63 @@ function BlockToolbar({
948
997
  },
949
998
  control.facetId
950
999
  )),
951
- hasBackgroundControls && currentBackground.kind === "supported" && backgroundCapability ? /* @__PURE__ */ jsxs("div", { children: [
952
- /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
1000
+ hasBackgroundControls && currentBackground.kind === "supported" && backgroundCapability ? /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
1001
+ /* @__PURE__ */ jsxs("div", { className: "flex items-stretch overflow-hidden rounded-full border bg-background", children: [
1002
+ /* @__PURE__ */ jsx(
1003
+ "button",
1004
+ {
1005
+ type: "button",
1006
+ onClick: handleBackgroundCycle({
1007
+ kind: "cycle-mode",
1008
+ direction: "prev"
1009
+ }),
1010
+ className: "grid h-8 w-8 place-items-center hover:bg-muted disabled:cursor-not-allowed disabled:opacity-50",
1011
+ "aria-label": "Previous background mode",
1012
+ disabled: !canCycleBackgroundMode,
1013
+ children: /* @__PURE__ */ jsx(ChevronLeft, { size: 14 })
1014
+ }
1015
+ ),
1016
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1 border-x px-2 py-1 text-center", children: [
1017
+ /* @__PURE__ */ jsx("div", { className: "text-xs font-medium leading-3 text-muted-foreground", children: "Background:" }),
1018
+ /* @__PURE__ */ jsx("div", { className: "truncate text-xs font-semibold leading-4", children: backgroundModeLabel(currentBackground.override.kind) })
1019
+ ] }),
1020
+ /* @__PURE__ */ jsx(
1021
+ "button",
1022
+ {
1023
+ type: "button",
1024
+ onClick: handleBackgroundCycle({
1025
+ kind: "cycle-mode",
1026
+ direction: "next"
1027
+ }),
1028
+ className: "grid h-8 w-8 place-items-center hover:bg-muted disabled:cursor-not-allowed disabled:opacity-50",
1029
+ "aria-label": "Next background mode",
1030
+ disabled: !canCycleBackgroundMode,
1031
+ children: /* @__PURE__ */ jsx(ChevronRight, { size: 14 })
1032
+ }
1033
+ )
1034
+ ] }),
1035
+ /* @__PURE__ */ jsxs("div", { className: "flex items-stretch overflow-hidden rounded-full border bg-background", children: [
1036
+ /* @__PURE__ */ jsx(
1037
+ "button",
1038
+ {
1039
+ type: "button",
1040
+ onClick: handleBackgroundCycle({
1041
+ kind: "cycle-value",
1042
+ direction: "prev"
1043
+ }),
1044
+ className: "grid h-8 w-8 place-items-center hover:bg-muted disabled:cursor-not-allowed disabled:opacity-50",
1045
+ "aria-label": "Previous background value",
1046
+ disabled: !canCycleBackgroundValue,
1047
+ children: /* @__PURE__ */ jsx(ChevronLeft, { size: 14 })
1048
+ }
1049
+ ),
953
1050
  /* @__PURE__ */ jsxs(
954
1051
  "button",
955
1052
  {
956
1053
  type: "button",
957
- className: "flex min-w-0 items-center gap-2 text-left",
1054
+ className: "flex min-w-0 flex-1 items-center justify-center gap-2 border-x px-2 py-1 text-center hover:bg-muted",
958
1055
  "aria-expanded": backgroundChooserOpen,
1056
+ "aria-label": `Choose background ${backgroundOverrideLabel(currentBackground.override).toLowerCase()}`,
959
1057
  onClick: (event) => {
960
1058
  event.preventDefault();
961
1059
  event.stopPropagation();
@@ -963,73 +1061,27 @@ function BlockToolbar({
963
1061
  },
964
1062
  children: [
965
1063
  /* @__PURE__ */ jsx(BackgroundPreviewSwatch, { override: currentBackground.override }),
966
- /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
967
- /* @__PURE__ */ jsx("div", { className: "text-sm font-medium", children: "Background" }),
968
- /* @__PURE__ */ jsx("div", { className: "truncate text-xs text-muted-foreground", children: backgroundOverrideLabel(currentBackground.override) })
969
- ] })
1064
+ /* @__PURE__ */ jsx("span", { className: "truncate text-xs font-medium", children: backgroundOverrideValueLabel(
1065
+ currentBackground.override,
1066
+ mergedBackgroundImagePool
1067
+ ) })
970
1068
  ]
971
1069
  }
972
1070
  ),
973
- /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [
974
- /* @__PURE__ */ jsxs("div", { className: "flex items-center overflow-hidden rounded-full border bg-background", children: [
975
- /* @__PURE__ */ jsx(
976
- "button",
977
- {
978
- type: "button",
979
- onClick: handleBackgroundCycle({
980
- kind: "cycle-mode",
981
- direction: "prev"
982
- }),
983
- className: "grid h-8 w-8 place-items-center hover:bg-muted",
984
- "aria-label": "Previous background mode",
985
- children: /* @__PURE__ */ jsx(ChevronLeft, { size: 14 })
986
- }
987
- ),
988
- /* @__PURE__ */ jsx(
989
- "button",
990
- {
991
- type: "button",
992
- onClick: handleBackgroundCycle({
993
- kind: "cycle-mode",
994
- direction: "next"
995
- }),
996
- className: "grid h-8 w-8 place-items-center border-l hover:bg-muted",
997
- "aria-label": "Next background mode",
998
- children: /* @__PURE__ */ jsx(ChevronRight, { size: 14 })
999
- }
1000
- )
1001
- ] }),
1002
- /* @__PURE__ */ jsxs("div", { className: "flex items-center overflow-hidden rounded-full border bg-background", children: [
1003
- /* @__PURE__ */ jsx(
1004
- "button",
1005
- {
1006
- type: "button",
1007
- onClick: handleBackgroundCycle({
1008
- kind: "cycle-value",
1009
- direction: "prev"
1010
- }),
1011
- className: "grid h-8 w-8 place-items-center hover:bg-muted disabled:cursor-not-allowed disabled:opacity-50",
1012
- "aria-label": "Previous background value",
1013
- disabled: currentBackground.override.kind === "default",
1014
- children: /* @__PURE__ */ jsx(ChevronLeft, { size: 14 })
1015
- }
1016
- ),
1017
- /* @__PURE__ */ jsx(
1018
- "button",
1019
- {
1020
- type: "button",
1021
- onClick: handleBackgroundCycle({
1022
- kind: "cycle-value",
1023
- direction: "next"
1024
- }),
1025
- className: "grid h-8 w-8 place-items-center border-l hover:bg-muted disabled:cursor-not-allowed disabled:opacity-50",
1026
- "aria-label": "Next background value",
1027
- disabled: currentBackground.override.kind === "default",
1028
- children: /* @__PURE__ */ jsx(ChevronRight, { size: 14 })
1029
- }
1030
- )
1031
- ] })
1032
- ] })
1071
+ /* @__PURE__ */ jsx(
1072
+ "button",
1073
+ {
1074
+ type: "button",
1075
+ onClick: handleBackgroundCycle({
1076
+ kind: "cycle-value",
1077
+ direction: "next"
1078
+ }),
1079
+ className: "grid h-8 w-8 place-items-center hover:bg-muted disabled:cursor-not-allowed disabled:opacity-50",
1080
+ "aria-label": "Next background value",
1081
+ disabled: !canCycleBackgroundValue,
1082
+ children: /* @__PURE__ */ jsx(ChevronRight, { size: 14 })
1083
+ }
1084
+ )
1033
1085
  ] }),
1034
1086
  backgroundChooserOpen ? /* @__PURE__ */ jsx(
1035
1087
  BackgroundChooser,
@@ -1042,7 +1094,17 @@ function BlockToolbar({
1042
1094
  }
1043
1095
  ) : null
1044
1096
  ] }) : null,
1045
- hasLookControls ? /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
1097
+ quickManifestFields.length > 0 && quickManifestBackend ? /* @__PURE__ */ jsx("div", { className: "border-t pt-3", children: /* @__PURE__ */ jsx(
1098
+ FormRenderer,
1099
+ {
1100
+ fields: quickManifestFields,
1101
+ backend: quickManifestBackend,
1102
+ showSettingsTrigger: false,
1103
+ blockKind,
1104
+ className: "space-y-3"
1105
+ }
1106
+ ) }) : null,
1107
+ hasLookControls && designBlock ? /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
1046
1108
  /* @__PURE__ */ jsxs("div", { children: [
1047
1109
  /* @__PURE__ */ jsx("div", { className: "text-sm font-medium", children: "Look" }),
1048
1110
  /* @__PURE__ */ jsx("div", { className: "text-xs text-muted-foreground", children: lookLabel(designBlock) })
@@ -1072,7 +1134,16 @@ function BlockToolbar({
1072
1134
  )
1073
1135
  ] })
1074
1136
  ] }) : null,
1075
- historyFailure ? /* @__PURE__ */ jsx("p", { className: "text-xs text-red-700", children: historyFailure }) : null
1137
+ historyFailure ? /* @__PURE__ */ jsx("p", { className: "text-xs text-red-700", children: historyFailure }) : null,
1138
+ hasOverflowCustomizeControls ? /* @__PURE__ */ jsx("div", { className: "border-t pt-2", children: /* @__PURE__ */ jsx(
1139
+ "button",
1140
+ {
1141
+ type: "button",
1142
+ className: "w-full rounded-md border bg-background px-3 py-2 text-sm font-medium hover:bg-muted",
1143
+ onClick: openCustomizeSettings,
1144
+ children: "Settings"
1145
+ }
1146
+ ) }) : null
1076
1147
  ] })
1077
1148
  ]
1078
1149
  }
@@ -1319,8 +1390,32 @@ function backgroundOverrideLabel(override) {
1319
1390
  return "Image";
1320
1391
  }
1321
1392
  }
1393
+ function backgroundOverrideValueLabel(override, imagePool) {
1394
+ switch (override.kind) {
1395
+ case "default":
1396
+ return "Default";
1397
+ case "color":
1398
+ return formatTokenLabel(override.token);
1399
+ case "gradient":
1400
+ return gradientLabel(override.gradientId);
1401
+ case "image":
1402
+ return imagePool.find((item) => item.mediaId === override.mediaId)?.label ?? "Image";
1403
+ }
1404
+ }
1405
+ function canCycleBackgroundOverrideValue(override, capability) {
1406
+ switch (override.kind) {
1407
+ case "default":
1408
+ return false;
1409
+ case "color":
1410
+ return (capability.colorTokens?.length ?? 0) > 1;
1411
+ case "gradient":
1412
+ return (capability.gradientIds?.length ?? 0) > 1;
1413
+ case "image":
1414
+ return rankBackgroundImagePoolItems(capability.imagePool ?? []).length > 1;
1415
+ }
1416
+ }
1322
1417
  function BackgroundPreviewSwatch({ override }) {
1323
- const baseClassName = "grid h-8 w-10 shrink-0 place-items-center overflow-hidden rounded-md border";
1418
+ const baseClassName = "grid h-6 w-9 shrink-0 place-items-center overflow-hidden rounded-md border";
1324
1419
  switch (override.kind) {
1325
1420
  case "default":
1326
1421
  return /* @__PURE__ */ jsx("span", { className: `${baseClassName} bg-background`, children: /* @__PURE__ */ jsx("span", { className: "h-3 w-3 rounded-full border bg-muted" }) });
@@ -1367,9 +1462,27 @@ function tokenSwatchCss(token) {
1367
1462
  }
1368
1463
  function gradientPreviewCss(gradientId) {
1369
1464
  const preset = GRADIENT_PRESETS.find((candidate) => candidate.id === gradientId);
1370
- if (!preset) return "linear-gradient(135deg, rgb(var(--tb-primary)), rgb(var(--tb-secondary)))";
1371
- const stops = preset.stops.map((stop) => `${tokenSwatchCss(stop.color)} ${stop.position}%`).join(", ");
1372
- return preset.type === "radial" ? `radial-gradient(circle, ${stops})` : `linear-gradient(${preset.angle ?? 135}deg, ${stops})`;
1465
+ if (!preset) {
1466
+ return "linear-gradient(135deg, rgb(var(--tb-primary)), rgb(var(--tb-secondary)))";
1467
+ }
1468
+ return gradientToCss(
1469
+ preset,
1470
+ Object.fromEntries(
1471
+ preset.stops.map((stop) => [stop.color, tokenSwatchCss(stop.color)])
1472
+ )
1473
+ );
1474
+ }
1475
+ function readBackgroundColorPaletteSnapshot() {
1476
+ if (typeof window === "undefined" || typeof document === "undefined") {
1477
+ return null;
1478
+ }
1479
+ const rootStyle = window.getComputedStyle(document.documentElement);
1480
+ const bodyStyle = document.body ? window.getComputedStyle(document.body) : null;
1481
+ const entries = backgroundColorTokens.flatMap((token) => {
1482
+ const value = rootStyle.getPropertyValue(`--tb-${token}`).trim() || bodyStyle?.getPropertyValue(`--tb-${token}`).trim() || "";
1483
+ return value ? [[token, value]] : [];
1484
+ });
1485
+ return entries.length > 0 ? Object.fromEntries(entries) : null;
1373
1486
  }
1374
1487
  function formatTokenLabel(token) {
1375
1488
  return formatVariantLabel(token.replace(/\//g, " "));
@@ -1726,6 +1839,7 @@ function EditablePageRenderer(props) {
1726
1839
  blockId,
1727
1840
  blockKind: block.kind,
1728
1841
  content,
1842
+ theme: props.theme,
1729
1843
  headerClearancePx: shouldClearHeaderForBlock(blockItemsForRender, blockIndex) ? headerClearancePx : 0
1730
1844
  }
1731
1845
  )
@@ -3519,11 +3633,11 @@ function renderPreviewDocument({
3519
3633
  }
3520
3634
  var previewContainerResponsiveEnabled = process.env.NEXT_PUBLIC_ENABLE_PREVIEW_CONTAINER_RESPONSIVE !== "false";
3521
3635
  var PreviewEditorSidebar = React9.lazy(async () => {
3522
- const mod = await import('./PreviewEditorSidebar-56NMJMIK.mjs');
3636
+ const mod = await import('./PreviewEditorSidebar-QZG37QIF.mjs');
3523
3637
  return { default: mod.PreviewEditorSidebar };
3524
3638
  });
3525
3639
  var PreviewEditorUI = React9.lazy(async () => {
3526
- const mod = await import('./PreviewEditorUI-27KJVEET.mjs');
3640
+ const mod = await import('./PreviewEditorUI-AXIKSMZA.mjs');
3527
3641
  return { default: mod.PreviewEditorUI };
3528
3642
  });
3529
3643
  var previewPaneContainmentStyle = {
@@ -3836,43 +3950,7 @@ function PreviewShellLayout({
3836
3950
  surfaceId
3837
3951
  }
3838
3952
  );
3839
- if (!isOpen) {
3840
- return /* @__PURE__ */ jsx(PreviewThemeOverlayProvider, { baseTheme: theme, children: /* @__PURE__ */ jsx(PreviewDesignCoordinatorProvider, { children: /* @__PURE__ */ jsxs(
3841
- SiteChromeCustomizeProvider,
3842
- {
3843
- siteId,
3844
- apiClient,
3845
- theme,
3846
- themeId,
3847
- selectionId: themeSelectionId,
3848
- selectionVersion: themeSelectionVersion,
3849
- selectionUpdatedAt: themeSelectionUpdatedAt,
3850
- initialSelections: {
3851
- selectionVersion: themeSelectionVersion,
3852
- selectionUpdatedAt: themeSelectionUpdatedAt,
3853
- buttonPersonalityId: themeSelectionButtonPersonalityId,
3854
- paletteVariantId: themeSelectionPaletteVariantId,
3855
- paletteOverrides: themeSelectionPaletteOverrides,
3856
- headerLayoutId: themeSelectionHeaderLayoutId,
3857
- headerStyleId: themeSelectionHeaderStyleId,
3858
- typographyPresetId: themeSelectionTypographyPresetId,
3859
- typographyBodyFontOverride: themeSelectionTypographyBodyFontOverride,
3860
- typographyHeadingFontOverride: themeSelectionTypographyHeadingFontOverride,
3861
- headerLookId: themeSelectionHeaderLookId,
3862
- footerLookId: themeSelectionFooterLookId
3863
- },
3864
- headerSelectionContext: themeSelectionHeaderContext,
3865
- footerSelectionContext: themeSelectionFooterContext,
3866
- siteStyleAccess,
3867
- children: [
3868
- editorUI,
3869
- previewBanner,
3870
- /* @__PURE__ */ jsx("div", { className: "fixed inset-0 overflow-hidden bg-background", children: leftPane })
3871
- ]
3872
- }
3873
- ) }) });
3874
- }
3875
- return /* @__PURE__ */ jsx(PreviewThemeOverlayProvider, { baseTheme: theme, children: /* @__PURE__ */ jsx(PreviewDesignCoordinatorProvider, { children: /* @__PURE__ */ jsxs(
3953
+ return /* @__PURE__ */ jsx(PreviewThemeOverlayProvider, { baseTheme: theme, children: /* @__PURE__ */ jsx(PreviewDesignCoordinatorProvider, { children: /* @__PURE__ */ jsx(
3876
3954
  SiteChromeCustomizeProvider,
3877
3955
  {
3878
3956
  siteId,
@@ -3899,10 +3977,10 @@ function PreviewShellLayout({
3899
3977
  headerSelectionContext: themeSelectionHeaderContext,
3900
3978
  footerSelectionContext: themeSelectionFooterContext,
3901
3979
  siteStyleAccess,
3902
- children: [
3980
+ children: /* @__PURE__ */ jsxs(PreviewBlockCustomizeSelectionProvider, { children: [
3903
3981
  editorUI,
3904
3982
  previewBanner,
3905
- /* @__PURE__ */ jsx("div", { className: "fixed inset-0 overflow-hidden bg-background", children: /* @__PURE__ */ jsx(
3983
+ /* @__PURE__ */ jsx("div", { className: "fixed inset-0 overflow-hidden bg-background", children: isOpen ? /* @__PURE__ */ jsx(
3906
3984
  ResizableSplitPane,
3907
3985
  {
3908
3986
  left: leftPane,
@@ -3917,8 +3995,8 @@ function PreviewShellLayout({
3917
3995
  onSplitChange: (split) => handleSidebarWidthChange(100 - split),
3918
3996
  splitPercent: 100 - sidebarWidth
3919
3997
  }
3920
- ) })
3921
- ]
3998
+ ) : leftPane })
3999
+ ] })
3922
4000
  }
3923
4001
  ) }) });
3924
4002
  }
@@ -656,6 +656,23 @@ var ENDPOINT_DEFINITIONS = {
656
656
  auth: "user",
657
657
  responseKind: "json"
658
658
  },
659
+ getSdkDeploymentHealth: {
660
+ path: "/sites/{siteId}/sdk-deployment/health",
661
+ method: "GET",
662
+ tags: ["site-{siteId}", "webhooks"],
663
+ auth: "user",
664
+ errors: [],
665
+ responseKind: "json"
666
+ },
667
+ setupSdkDeploymentRevalidationWebhook: {
668
+ path: "/sites/{siteId}/sdk-deployment/revalidation-webhook",
669
+ method: "POST",
670
+ tags: ["site-{siteId}", "webhooks"],
671
+ auth: "user",
672
+ errors: ["validation:invalid_input", "resource:conflict"],
673
+ responseKind: "json",
674
+ demoMutation: DEMO_MUTATION_BLOCKED_DISABLED
675
+ },
659
676
  // API Keys (Site-scoped)
660
677
  listSiteApiKeys: {
661
678
  path: "/sites/{siteId}/api-keys",
@@ -6150,6 +6167,13 @@ var ENDPOINT_DEFINITIONS = {
6150
6167
  auth: "service",
6151
6168
  responseKind: "json"
6152
6169
  },
6170
+ sdkSetupRevalidationWebhook: {
6171
+ path: "/sdk/{siteId}/webhooks/revalidation/setup",
6172
+ method: "POST",
6173
+ auth: "service",
6174
+ responseKind: "json",
6175
+ errors: ["validation:invalid_input", "server:internal_error"]
6176
+ },
6153
6177
  // Customer portal
6154
6178
  portalGetProfile: {
6155
6179
  path: "/portal/me",