@riverbankcms/sdk 0.126.0 → 0.127.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 (126) hide show
  1. package/dist/{PreviewEditorSidebar-DcYJxTgc.mjs → PreviewEditorSidebar-BXtfF7tp.mjs} +58 -38
  2. package/dist/{PreviewEditorUI-Ctt1yTJr.mjs → PreviewEditorUI-Dou73Q0K.mjs} +2 -2
  3. package/dist/{SdkPreviewModeRuntime-CvW1vdQ4.mjs → SdkPreviewModeRuntime-B0HPXr-l.mjs} +119 -41
  4. package/dist/{SiteChromeCustomizeContext-C87qlKWw.mjs → SiteChromeCustomizeContext-DZiDBAYu.mjs} +9961 -9583
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +198 -0
  6. package/dist/_dts/api/src/contentRuntime.d.ts +1 -5
  7. package/dist/_dts/block-form/src/backend/store-backend.d.ts +2 -1
  8. package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +1 -0
  9. package/dist/_dts/blocks/src/index.d.ts +3 -2
  10. package/dist/_dts/blocks/src/lib/media.d.ts +267 -0
  11. package/dist/_dts/blocks/src/system/constants/buttonRoles.d.ts +0 -13
  12. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +4 -4
  13. package/dist/_dts/blocks/src/system/runtime/nodes/mergeResolveImageUrlContexts.d.ts +7 -0
  14. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +2 -2
  15. package/dist/_dts/content-editor/src/ui/blockValidationManifestRegistry.d.ts +17 -0
  16. package/dist/_dts/content-editor/src/ui/blockValidationView.d.ts +1 -1
  17. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +4 -0
  18. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +143 -155
  19. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +4 -0
  20. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockValidationManifests.d.ts +26 -0
  21. package/dist/_dts/editor-blocks/src/widgets/rich-text/imageInsert.d.ts +3 -3
  22. package/dist/_dts/media-editor/src/MediaEditor.d.ts +2 -2
  23. package/dist/_dts/media-editor/src/context.d.ts +1 -2
  24. package/dist/_dts/media-editor/src/index.d.ts +3 -1
  25. package/dist/_dts/media-editor/src/mediaSelection.d.ts +32 -0
  26. package/dist/_dts/media-editor/src/types.d.ts +3 -1
  27. package/dist/_dts/media-editor/src/useMediaSelection.d.ts +26 -0
  28. package/dist/_dts/preview-next/src/client/index.d.ts +2 -0
  29. package/dist/_dts/preview-next/src/client/preview/HeaderMenuControls.d.ts +12 -0
  30. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +12 -1
  31. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +7 -1
  32. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -49
  33. package/dist/_dts/preview-next/src/client/preview/headerInteractionPaletteSurfaceState.d.ts +8 -0
  34. package/dist/_dts/preview-next/src/client/preview/previewThemeRoles.d.ts +15 -0
  35. package/dist/_dts/preview-next/src/client/preview/siteChromeCustomizeTypes.d.ts +54 -0
  36. package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +13 -3
  37. package/dist/_dts/preview-next/src/client/preview/siteChromeNavQuickControlHistory.d.ts +3 -0
  38. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +6 -3
  39. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -2
  40. package/dist/_dts/sdk/src/version.d.ts +1 -1
  41. package/dist/_dts/theme-core/src/buttons/effects/presets/background.d.ts +1 -1
  42. package/dist/_dts/theme-core/src/buttons/styles/registry.d.ts +0 -18
  43. package/dist/_dts/theme-core/src/buttons/types.d.ts +1 -3
  44. package/dist/_dts/theme-core/src/header/containerSchema.d.ts +20 -0
  45. package/dist/_dts/theme-core/src/header/generateHeaderCss.d.ts +1 -1
  46. package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +14 -0
  47. package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +3 -0
  48. package/dist/_dts/theme-core/src/header/paintTargets.d.ts +25 -0
  49. package/dist/_dts/theme-core/src/header/scrollTreatment.d.ts +11 -0
  50. package/dist/_dts/theme-core/src/header/surfaceRules.d.ts +9 -0
  51. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +15 -0
  52. package/dist/_dts/theme-core/src/palette/colors.d.ts +1 -1
  53. package/dist/_dts/theme-core/src/schema.d.ts +67 -19
  54. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +3 -51
  55. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +4 -11
  56. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +3 -51
  57. package/dist/_dts/theme-core/src/site-styles/headerInteractionPalette.d.ts +32 -0
  58. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +19 -106
  59. package/dist/_dts/theme-core/src/site-styles/headerOpeningForeground.d.ts +22 -0
  60. package/dist/_dts/theme-core/src/site-styles/headerOpeningSection.d.ts +2 -0
  61. package/dist/_dts/theme-core/src/site-styles/headerStyleParts.d.ts +4 -0
  62. package/dist/_dts/theme-core/src/site-styles/index.d.ts +3 -0
  63. package/dist/_dts/theme-core/src/site-styles/lookOptionGroups.d.ts +24 -0
  64. package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +1 -2
  65. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +4 -22
  66. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorOptions.d.ts +21 -0
  67. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
  68. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +4 -1
  69. package/dist/cli/index.mjs +973 -1081
  70. package/dist/client/{DiscountCodeDisclosure-DS0AuFWW.mjs → DiscountCodeDisclosure-BDFRp8Y7.mjs} +1 -1
  71. package/dist/client/{EventCombined.client-DtMxLr7q.mjs → EventCombined.client-DJgF1_lf.mjs} +2 -2
  72. package/dist/client/{EventListing.client-BdLSRNg1.mjs → EventListing.client-CnWGNjOr.mjs} +2 -2
  73. package/dist/client/{LeafletStaticMap-BrpC6vsT.mjs → LeafletStaticMap-BISs9Bl7.mjs} +1 -1
  74. package/dist/client/{MagicLinkForm-Bt3IuLMy.mjs → MagicLinkForm-b5E_HoG9.mjs} +1 -1
  75. package/dist/client/{StepIndicator-CBYPFVoy.mjs → StepIndicator-D8gVYkK-.mjs} +2 -2
  76. package/dist/client/{accordion-BqqwPJWM.mjs → accordion-DFDajgDz.mjs} +1 -1
  77. package/dist/client/{bookingForm-SneP3yxC.mjs → bookingForm-Bdqj9-52.mjs} +5 -5
  78. package/dist/client/bookings.mjs +126 -23
  79. package/dist/client/{carousel-BTIR9L3I.mjs → carousel-Cvqf-kN8.mjs} +1 -1
  80. package/dist/client/{cart-bqiqd8SX.mjs → cart-CuH2TJXP.mjs} +3 -3
  81. package/dist/client/{checkout-WbTFV5v4.mjs → checkout-CMNPpejZ.mjs} +3 -3
  82. package/dist/client/client.mjs +1227 -1209
  83. package/dist/client/{courseRegistration-BcemLAdN.mjs → courseRegistration-DTEYWL6Z.mjs} +6 -6
  84. package/dist/client/{eventCalendar-CsxIw0V_.mjs → eventCalendar-BW-XoxZ0.mjs} +4 -4
  85. package/dist/client/{eventCombined-B6XMoHfa.mjs → eventCombined-Bpn7s0y9.mjs} +2 -2
  86. package/dist/client/{eventDetails-BJaoPPfo.mjs → eventDetails-D2uUSTMH.mjs} +3 -3
  87. package/dist/client/{eventListing-DgwdYHRT.mjs → eventListing-CVr1c094.mjs} +2 -2
  88. package/dist/client/{eventRegistration-C0O3folu.mjs → eventRegistration-Dv4AvkMw.mjs} +6 -6
  89. package/dist/client/{form-Bk9txGFt.mjs → form-DxdKf9fs.mjs} +1 -1
  90. package/dist/client/{headerSection-yIBt0yTv.mjs → headerSection-BaXI5Sro.mjs} +2 -2
  91. package/dist/client/hooks.mjs +801 -874
  92. package/dist/client/{locationMap-C-3KIpv-.mjs → locationMap-BEtW2fKz.mjs} +2 -2
  93. package/dist/client/{newsletterForm-CzB8g8h2.mjs → newsletterForm-BKKs0S4R.mjs} +1 -1
  94. package/dist/client/{pricing-C1QeDes_.mjs → pricing-ClkqcElA.mjs} +1 -1
  95. package/dist/client/{productDetail-w7SBp5uc.mjs → productDetail-H-ru8dyy.mjs} +3 -3
  96. package/dist/client/{productList-D0tGKHGf.mjs → productList-Buyi5c0C.mjs} +3 -3
  97. package/dist/client/{propsDecoder-Bcin2DB3.mjs → propsDecoder-BF7i6Ijg.mjs} +127 -55
  98. package/dist/client/rendering/client.mjs +928 -916
  99. package/dist/client/rendering/islands.mjs +18 -18
  100. package/dist/client/rendering.mjs +1130 -1114
  101. package/dist/client/{scrollToBlock-h-o_STf_.mjs → scrollToBlock-D_7t8yWb.mjs} +1 -1
  102. package/dist/client/{shop-BGzmL8O_.mjs → shop-CF7SZQNX.mjs} +5 -5
  103. package/dist/client/{shop-commerce-lX8QxjX-.mjs → shop-commerce-DA7_Rq5p.mjs} +4 -4
  104. package/dist/client/{shop-commerce-store-CEurARtu.mjs → shop-commerce-store-BmLqW7Gh.mjs} +1 -1
  105. package/dist/client/{shopShared-DXxH8xxw.mjs → shopShared-WL-E1znM.mjs} +2 -2
  106. package/dist/client/{useEventFilters-B591g9vd.mjs → useEventFilters-rc8VLeLV.mjs} +2 -2
  107. package/dist/client/{usePolling-BvnChV4m.mjs → usePolling-1ncrfd4S.mjs} +2 -2
  108. package/dist/preview-next/client/runtime.mjs +3 -3
  109. package/dist/{sdk-runtime-M__i3Jce.mjs → sdk-runtime-BnrCCFJq.mjs} +1 -1
  110. package/dist/{separator-VSlnI9bc.mjs → separator-CFvBx2yl.mjs} +1 -1
  111. package/dist/server/components.mjs +1302 -1350
  112. package/dist/server/config-validation.mjs +801 -874
  113. package/dist/server/config.mjs +801 -874
  114. package/dist/server/data.mjs +801 -874
  115. package/dist/server/index.mjs +1 -1
  116. package/dist/server/next.mjs +1303 -1351
  117. package/dist/server/page-converter.mjs +801 -874
  118. package/dist/server/prebuild.mjs +1 -1
  119. package/dist/server/rendering/server.mjs +1296 -1344
  120. package/dist/server/rendering.mjs +1302 -1350
  121. package/dist/server/routing.mjs +869 -895
  122. package/dist/server/server.mjs +802 -875
  123. package/dist/server/theme-bridge.mjs +151 -118
  124. package/dist/server/theme.mjs +111 -23
  125. package/package.json +1 -1
  126. package/dist/_dts/editor-blocks/src/widgets/rich-text/ensureRichTextImageAssetIdentifier.d.ts +0 -8
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { $ as resolvePreviewSidebarTab, $o as resolveButtonStyleSelection, A as markApplyFailed, B as previewSiteStyle, Bs as SelectValue, Bt as useEditorUiStoreInstance, C as applyResolvedSelections, D as deriveStyleConfiguratorCapabilities, Dl as Maximize2, Dn as ThemeScope, E as createStyleConfiguratorState, Ei as findFooterLook, F as previewButtonStyle, G as toggleRow, Gs as PopoverContent, H as setPaletteColors, Hs as CalloutDescription, I as previewCuratedPalette, Ii as getHeaderLayout, Il as ChevronRight, Is as Select, Js as Tabs, Ks as PopoverTrigger, L as previewFooterLook, Li as getHeaderStyle, Ll as ChevronLeft, Ls as SelectContent, M as markApplySaving, N as openRow, Nt as BlockEditor, O as dismissWarnings, Oc as cn, Ol as LoaderCircle, P as palettePreviewProjection, Q as createOptimisticActionRunner, Qc as assertNever$1, Qo as findButtonStyleRecipe, R as previewHeaderLayout, Rs as SelectItem, Si as curatedSiteStyles, T as cancelPreview, Tc as Button, Tl as Monitor, U as styleConfiguratorHistoryEntryForPersistedSelection, Us as SearchInput, V as resetTypographyToSaved, Vs as Callout, W as syncStyleConfiguratorState, Wi as curatedPalettes, Ws as Popover, Xs as TabsList, Ys as TabsContent, Zo as buttonStyleSelectionParameterValue, Zs as TabsTrigger, _ as cycleableSiteChromeOptions, _c as DropdownMenuTrigger, _l as Smartphone, _s as paletteColorEntries, ac as CollapsibleContent, an as resolveContentTitle, at as useUISelector, b as usePreviewDesignCoordinator, c as selectionSnapshotFromApplySiteStyleSelectionResponse, ct as useEntryController, d as resolveStyleConfiguratorInitialSnapshot, dc as Surface, dn as createManifestValidation, es as updateButtonStyleSelectionChoice, et as FooterComposerPanel, fc as DropdownMenu, fn as FormRenderer, g as cycleSiteChromeLookId, gc as DropdownMenuSeparator, h as buildSiteChromeLookModels, hc as DropdownMenuLabel, ic as Collapsible, in as resolvePageRouteSlug, is as themeButtonClassName, it as ContentFieldsForm, j as markApplySaved, jc as unsafeAsEditorBlockId, k as isPreviewingChange, l as deriveSiteStylePreviewUpdate, ll as X$1, ln as ManifestForm, m as reportPreviewDesignError, mc as DropdownMenuItem, ml as Tablet, mn as createStoreBackend, n as useSiteChromeCustomizeOptional, oc as CollapsibleTrigger, p as PREVIEW_DESIGN_SAVE_ERROR_MESSAGE, pc as DropdownMenuContent, qs as Input, rn as deriveRouteMetadataPresentation, s as buildApplySiteStyleSelectionBody, tn as isAdapterReferenceKind, ts as buttonStyleSelectionKey, u as planSiteStylePreviewChange, v as planSiteChromeLookSelection, vl as SlidersHorizontal, vs as paletteColorsSchema, w as applyTypographyDraftPatch, wi as getCuratedSiteStyle, xn as listEntryPageContentSlots, z as previewHeaderStyle, zl as Check, zs as SelectTrigger, zt as useEditorUiStore } from "./SiteChromeCustomizeContext-C87qlKWw.mjs";
2
+ import { $ as createOptimisticActionRunner, $o as resolveButtonStyleSelection, A as isPreviewingChange, B as previewHeaderStyle, Bs as SelectValue, Bt as useEditorUiStore, D as createStyleConfiguratorState, Dl as Maximize2, Dn as ThemeScope, E as cancelPreview, Ei as findFooterLook, F as palettePreviewProjection, G as syncStyleConfiguratorState, Gs as PopoverContent, H as resetTypographyToSaved, Hs as CalloutDescription, I as previewButtonStyle, Ii as getHeaderLayout, Il as ChevronRight, Is as Select, Js as Tabs, K as toggleRow, Ks as PopoverTrigger, L as previewCuratedPalette, Li as getHeaderStyle, Ll as ChevronLeft, Ls as SelectContent, M as markApplySaved, N as markApplySaving, O as deriveStyleConfiguratorCapabilities, Oc as cn, Ol as LoaderCircle, P as openRow, Pt as BlockEditor, Qc as assertNever$1, Qo as findButtonStyleRecipe, R as previewFooterLook, Rs as SelectItem, Si as curatedSiteStyles, T as applyTypographyDraftPatch, Tc as Button, Tl as Monitor, U as setPaletteColors, Us as SearchInput, V as previewSiteStyle, Vs as Callout, Vt as useEditorUiStoreInstance, W as styleConfiguratorHistoryEntryForPersistedSelection, Wi as curatedPalettes, Ws as Popover, Xs as TabsList, Ys as TabsContent, Zo as buttonStyleSelectionParameterValue, Zs as TabsTrigger, _ as cycleableSiteChromeOptions, _c as DropdownMenuTrigger, _l as Smartphone, _s as paletteColorEntries, ac as CollapsibleContent, an as resolvePageRouteSlug, at as ContentFieldsForm, c as selectionSnapshotFromApplySiteStyleSelectionResponse, d as resolveStyleConfiguratorInitialSnapshot, dc as Surface, dn as createManifestValidation, es as updateButtonStyleSelectionChoice, et as resolvePreviewSidebarTab, fc as DropdownMenu, fn as FormRenderer, g as cycleSiteChromeLookId, gc as DropdownMenuSeparator, h as buildSiteChromeLookModels, hc as DropdownMenuLabel, ic as Collapsible, in as deriveRouteMetadataPresentation, is as themeButtonClassName, j as markApplyFailed, jc as unsafeAsEditorBlockId, k as dismissWarnings, l as deriveSiteStylePreviewUpdate, ll as X$1, ln as ManifestForm, lt as useEntryController, m as reportPreviewDesignError, mc as DropdownMenuItem, ml as Tablet, mn as createStoreBackend, n as useSiteChromeCustomizeOptional, nn as isAdapterReferenceKind, oc as CollapsibleTrigger, on as resolveContentTitle, ot as useUISelector, p as PREVIEW_DESIGN_SAVE_ERROR_MESSAGE, pc as DropdownMenuContent, qs as Input, s as buildApplySiteStyleSelectionBody, ts as buttonStyleSelectionKey, tt as FooterComposerPanel, u as planSiteStylePreviewChange, v as planSiteChromeLookSelection, vl as SlidersHorizontal, vn as listEntryPageContentSlots, vs as paletteColorsSchema, w as applyResolvedSelections, wi as getCuratedSiteStyle, x as usePreviewDesignCoordinator, y as siteChromeLookUnavailableReasonLabel, z as previewHeaderLayout, zl as Check, zs as SelectTrigger } from "./SiteChromeCustomizeContext-DZiDBAYu.mjs";
3
3
  import { d as unwrapResponse, f as getDashboardUrl, r as usePreviewAuth } from "./previewAuthStore-Dev9CdG9.mjs";
4
- import { S as getSiteFontsStorageUrl, _ as useBlockCustomizeControls, b as buildFontPreviewUrl, d as resolvePreviewDashboardSetupHandoff, f as resolvePreviewEditorGuidanceModel, g as usePreviewBlockCustomizeSelectionOptional, h as canInspectSiteStyle, m as canApplySiteStyle, p as resolvePreviewSidebarChromeModel, u as buildPreviewDashboardSetupUrl, v as PreviewFormProvider, x as generateFontFaceCss, y as previewWidgetOverrides } from "./SdkPreviewModeRuntime-CvW1vdQ4.mjs";
5
- import { t as Separator } from "./separator-VSlnI9bc.mjs";
4
+ import { S as getSiteFontsStorageUrl, _ as useBlockCustomizeControls, b as buildFontPreviewUrl, d as resolvePreviewDashboardSetupHandoff, f as resolvePreviewEditorGuidanceModel, g as usePreviewBlockCustomizeSelectionOptional, h as canInspectSiteStyle, m as canApplySiteStyle, p as resolvePreviewSidebarChromeModel, u as buildPreviewDashboardSetupUrl, v as PreviewFormProvider, x as generateFontFaceCss, y as previewWidgetOverrides } from "./SdkPreviewModeRuntime-B0HPXr-l.mjs";
5
+ import { t as Separator } from "./separator-CFvBx2yl.mjs";
6
6
  import React, { createContext, forwardRef, useCallback, useContext, useEffect, useId, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore, useTransition } from "react";
7
7
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
8
8
  import { useQuery, useQueryClient } from "@tanstack/react-query";
@@ -2176,6 +2176,60 @@ function ButtonStylePreviewPair({ selection, previewTheme, compact = false }) {
2176
2176
  });
2177
2177
  }
2178
2178
  //#endregion
2179
+ //#region ../preview-next/src/client/preview/HeaderMenuControls.tsx
2180
+ function isHeaderMenuSurfaceState(state) {
2181
+ return state.kind === "available" && state.surface === "header";
2182
+ }
2183
+ function HeaderMenuControls({ state, disabled, onMenuFontChange, onMenuFontSizeChange }) {
2184
+ const customize = useSiteChromeCustomizeOptional();
2185
+ const controlDisabled = disabled || !state.applyAllowed;
2186
+ return /* @__PURE__ */ jsxs("div", {
2187
+ className: "grid grid-cols-2 gap-2 rounded-md border bg-muted/20 p-2",
2188
+ children: [
2189
+ /* @__PURE__ */ jsxs("label", {
2190
+ className: "block text-xs font-medium text-muted-foreground",
2191
+ children: [/* @__PURE__ */ jsx("span", { children: "Menu font" }), /* @__PURE__ */ jsx("select", {
2192
+ className: "mt-1 h-8 w-full rounded-md border bg-background px-2 text-sm text-foreground disabled:cursor-not-allowed disabled:opacity-50",
2193
+ value: state.menuFont,
2194
+ onChange: (event) => onMenuFontChange?.(event.currentTarget.value),
2195
+ disabled: controlDisabled,
2196
+ children: state.menuFontOptions.map((option) => /* @__PURE__ */ jsx("option", {
2197
+ value: option.value,
2198
+ children: option.label
2199
+ }, option.value))
2200
+ })]
2201
+ }),
2202
+ /* @__PURE__ */ jsxs("label", {
2203
+ className: "block text-xs font-medium text-muted-foreground",
2204
+ children: [/* @__PURE__ */ jsx("span", { children: "Menu font size" }), /* @__PURE__ */ jsx("select", {
2205
+ className: "mt-1 h-8 w-full rounded-md border bg-background px-2 text-sm text-foreground disabled:cursor-not-allowed disabled:opacity-50",
2206
+ value: state.menuFontSize,
2207
+ onChange: (event) => onMenuFontSizeChange?.(event.currentTarget.value),
2208
+ disabled: controlDisabled,
2209
+ children: state.menuFontSizeOptions.map((option) => /* @__PURE__ */ jsx("option", {
2210
+ value: option.value,
2211
+ children: option.label
2212
+ }, option.value))
2213
+ })]
2214
+ }),
2215
+ state.interactionPalette.kind === "available" ? /* @__PURE__ */ jsxs("label", {
2216
+ className: "block text-xs font-medium text-muted-foreground",
2217
+ children: [/* @__PURE__ */ jsx("span", { children: "Hover pill colour" }), /* @__PURE__ */ jsx("select", {
2218
+ "aria-label": "Hover pill colour",
2219
+ className: "mt-1 h-8 w-full rounded-md border bg-background px-2 text-sm text-foreground disabled:cursor-not-allowed disabled:opacity-50",
2220
+ value: state.interactionPalette.preference,
2221
+ onChange: (event) => customize?.setHeaderInteractionPalette(event.currentTarget.value),
2222
+ disabled: controlDisabled,
2223
+ children: state.interactionPalette.options.map((option) => /* @__PURE__ */ jsx("option", {
2224
+ value: option.value,
2225
+ children: option.label
2226
+ }, option.value))
2227
+ })]
2228
+ }) : null
2229
+ ]
2230
+ });
2231
+ }
2232
+ //#endregion
2179
2233
  //#region ../preview-next/src/client/preview/typographyFontCatalog.ts
2180
2234
  const typographyFontCategories = [
2181
2235
  {
@@ -3827,7 +3881,7 @@ function SiteChromeLookRow({ label, ariaLabel, defaultDescription, catalog, opti
3827
3881
  children: options.map((look) => /* @__PURE__ */ jsx(PickerOption, {
3828
3882
  selected: look.id === currentId,
3829
3883
  label: look.label,
3830
- description: look.description,
3884
+ description: look.available ? look.description : [look.description, siteChromeLookUnavailableReasonLabel(look.unavailableReason)].filter(Boolean).join(" "),
3831
3885
  onSelect: () => onPreview(look.id),
3832
3886
  disabled: disabled || !look.available
3833
3887
  }, look.id ?? "site-style-default"))
@@ -3835,40 +3889,6 @@ function SiteChromeLookRow({ label, ariaLabel, defaultDescription, catalog, opti
3835
3889
  ]
3836
3890
  });
3837
3891
  }
3838
- function isHeaderMenuSurfaceState(state) {
3839
- return state.kind === "available" && state.surface === "header" && Array.isArray(state.menuFontOptions) && Array.isArray(state.menuFontSizeOptions);
3840
- }
3841
- function HeaderMenuControls({ state, disabled, onMenuFontChange, onMenuFontSizeChange }) {
3842
- const controlDisabled = disabled || !state.applyAllowed;
3843
- return /* @__PURE__ */ jsxs("div", {
3844
- className: "grid grid-cols-2 gap-2 rounded-md border bg-muted/20 p-2",
3845
- children: [/* @__PURE__ */ jsxs("label", {
3846
- className: "block text-xs font-medium text-muted-foreground",
3847
- children: [/* @__PURE__ */ jsx("span", { children: "Menu font" }), /* @__PURE__ */ jsx("select", {
3848
- className: "mt-1 h-8 w-full rounded-md border bg-background px-2 text-sm text-foreground disabled:cursor-not-allowed disabled:opacity-50",
3849
- value: state.menuFont,
3850
- onChange: (event) => onMenuFontChange?.(event.currentTarget.value),
3851
- disabled: controlDisabled,
3852
- children: state.menuFontOptions.map((option) => /* @__PURE__ */ jsx("option", {
3853
- value: option.value,
3854
- children: option.label
3855
- }, option.value))
3856
- })]
3857
- }), /* @__PURE__ */ jsxs("label", {
3858
- className: "block text-xs font-medium text-muted-foreground",
3859
- children: [/* @__PURE__ */ jsx("span", { children: "Menu font size" }), /* @__PURE__ */ jsx("select", {
3860
- className: "mt-1 h-8 w-full rounded-md border bg-background px-2 text-sm text-foreground disabled:cursor-not-allowed disabled:opacity-50",
3861
- value: state.menuFontSize,
3862
- onChange: (event) => onMenuFontSizeChange?.(event.currentTarget.value),
3863
- disabled: controlDisabled,
3864
- children: state.menuFontSizeOptions.map((option) => /* @__PURE__ */ jsx("option", {
3865
- value: option.value,
3866
- children: option.label
3867
- }, option.value))
3868
- })]
3869
- })]
3870
- });
3871
- }
3872
3892
  function PaletteRow({ expanded, onToggle, siteStyle, palette, onPreview, onTokenChange, disabled, mutationDisabled }) {
3873
3893
  const optionRefs = useRef([]);
3874
3894
  const suggestedKeys = new Set(siteStyle.paletteRecommendations.map((recommendation) => recommendation.id));
@@ -1,7 +1,7 @@
1
1
  "use client";
2
- import { $s as DialogContent, At as useEditor, Bt as useEditorUiStoreInstance, Cl as PenLine, Ec as cva, Fs as TooltipTrigger, Ml as EllipsisVertical, Ns as Tooltip, Oc as cn, Ol as LoaderCircle, Ps as TooltipContent, Qs as Dialog, Rl as ChevronDown, Rt as classifyHistoryShortcut, Sl as Pencil, Tc as Button, Xt as useMultiAutosave, _c as DropdownMenuTrigger, a as previewDesignHistoryDomainForCommand, bl as Redo2, dl as Undo2, ec as DialogDescription, fc as DropdownMenu, fl as TriangleAlert, gl as Sparkles, i as usePreviewDesignHistoryOrder, jl as Eye, lt as useEntryEditorController, mc as DropdownMenuItem, n as useSiteChromeCustomizeOptional, nc as DialogHeader, o as selectPreviewDesignHistoryDomain, pc as DropdownMenuContent, rc as DialogTitle, wl as Palette, zt as useEditorUiStore } from "./SiteChromeCustomizeContext-C87qlKWw.mjs";
2
+ import { $s as DialogContent, Bt as useEditorUiStore, Cl as PenLine, Ec as cva, Fs as TooltipTrigger, Ml as EllipsisVertical, Ns as Tooltip, Oc as cn, Ol as LoaderCircle, Ps as TooltipContent, Qs as Dialog, Rl as ChevronDown, Sl as Pencil, Tc as Button, Vt as useEditorUiStoreInstance, Zt as useMultiAutosave, _c as DropdownMenuTrigger, a as previewDesignHistoryDomainForCommand, bl as Redo2, dl as Undo2, ec as DialogDescription, fc as DropdownMenu, fl as TriangleAlert, gl as Sparkles, i as usePreviewDesignHistoryOrder, jl as Eye, jt as useEditor, mc as DropdownMenuItem, n as useSiteChromeCustomizeOptional, nc as DialogHeader, o as selectPreviewDesignHistoryDomain, pc as DropdownMenuContent, rc as DialogTitle, ut as useEntryEditorController, wl as Palette, zt as classifyHistoryShortcut } from "./SiteChromeCustomizeContext-DZiDBAYu.mjs";
3
3
  import { d as unwrapResponse, r as usePreviewAuth } from "./previewAuthStore-Dev9CdG9.mjs";
4
- import { C as FixedBottomSurface, a as usePreviewPageDesignEditorState, c as applyPreviewChromeSurfaceToElement, l as resolvePreviewChromeSurface, o as PREVIEW_CHROME_PORTAL_CLASS_NAME, s as PREVIEW_CHROME_THEME_CLASS_NAME } from "./SdkPreviewModeRuntime-CvW1vdQ4.mjs";
4
+ import { C as FixedBottomSurface, a as usePreviewPageDesignEditorState, c as applyPreviewChromeSurfaceToElement, l as resolvePreviewChromeSurface, o as PREVIEW_CHROME_PORTAL_CLASS_NAME, s as PREVIEW_CHROME_THEME_CLASS_NAME } from "./SdkPreviewModeRuntime-B0HPXr-l.mjs";
5
5
  import * as React$1 from "react";
6
6
  import { useCallback, useEffect, useMemo, useState, useTransition } from "react";
7
7
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { $ as resolvePreviewSidebarTab, $a as markEditableSurfaceForwarding, $c as expectParsedBrandedId, $i as normalizeOfferingsPreviewItemLimit, $n as shopBlockDefinition, $r as singleButtonFragment, $s as DialogContent, $t as createSnapshotFromPageRecord, Aa as formatEventTeacherLine, Ac as parseFooterModuleId, Ai as getGradientPreset, Al as GripVertical, An as buildThemeRuntime, Ao as FileArchiveIcon, Ar as buildCheckoutInteractiveIslandProps, As as unmapValueFromSelect, At as useEditor, Ba as getLocalMinuteOfDay, Bc as parseBookingLocalDate, Bi as backgroundAppearanceQuickColorTokenNames, Bl as ArrowDown, Bn as SITE_CHROME_VISIBLE_HEADER_SELECTOR, Bo as getCurrentResolveImageUrlContext, Br as EMPTY_COMMERCE_CART_STATE, Bs as SelectValue, Bt as useEditorUiStoreInstance, Ca as normalizeLocationMapProps, Cc as composeEventHandlers, Ci as designRuntimeRulesForTheme, Cn as DEFAULT_LAUNCH_READINESS_INPUT, Co as ArrowDownIcon, Cr as giftingBlockDefinition, Cs as getFieldIntent, Ct as MediaField, Da as formatEventDateParts, Dc as useComposedRefs, Di as gradientToCss, Dn as ThemeScope, Do as CirclePlusIcon, Dr as checkoutBlockDefinition, Ds as hasEmptyOption, Dt as RichTextField, Ea as formatEventCompactDateRail, El as Minus, En as isSupportedLoaderEndpoint, Eo as CircleMinusIcon, Er as buildCourseRegistrationInteractiveIslandProps, Es as useSdkConfig, Et as useRichTextImagePicker, Fa as resolveEventCta, Fc as formatBookingDateTime, Fi as sectionTransitionVariantForBoundaryOptionId, Fl as CircleMinus, Fn as generateDefaultAccordionSystem, Fo as PlusIcon, Fr as buildCartDisplay, Ft as prepareBlockEditorManifest, Ga as buildInteractiveIslandProps, Gc as formatBookingPriceDisplay, Gi as createTransformRegistry, Gn as mediaTransforms, Go as resolveMediaStorageUrl, Gr as productItemKey, Gt as pushHistoryEntry, Ha as normalizeEventRegistrationPageSurfaceSubject, Hc as toBookingTimeZone, Hi as parseBackgroundAppearanceColorToken, Hn as planSiteOverlayHeaderClearance, Ho as renderVideo, Hr as buildProductCartItem, Ht as canRedoHistory, Ia as resolveEventLinkProps, Ic as formatBookingInstant, Il as ChevronRight, In as getBlockDefinition, Io as ImagePresets, Ir as buildProductCardDisplay, Is as Select, It as stripTopLevelRoutingUi, J as deriveTransactionCapabilities, Ja as createZodCodec, Jc as publicEventPricingType, Jn as formattingTransforms, Jo as attachRenderableMediaAssetFields, Jr as headingFragment, Js as Tabs, Jt as unsafeAsLinkedContentEntryId, K as beginAutosaveBatch, Ka as createInteractiveIslandCodec, Kc as publicEventPricingCurrency, Ki as runTransforms, Kn as layoutTransforms, Ko as setContextResolveImageUrlContext, Kr as reduceCommerceCart, Kt as redoHistory, La as getEventAvailability, Lc as formatBookingTime, Ll as ChevronLeft, Ln as projectRecurringSchedule, Lo as MediaPlaceholder, Lr as buildProductDetailDisplay, Ls as SelectContent, Lt as getBlockManifestFromSdkConfig, Ma as getCardOrientation, Mc as unsafeAsEditorBlockValues, Mi as defaultSectionTransitionVariantForFamily, Mn as getResponsiveScopeSpec, Mo as FileSpreadsheetIcon, Mr as buildProductListInteractiveIslandProps, Ms as useField, Mt as LinkWidgetProvider, Na as getContainerClass, Nc as addLocalScheduleDays, Ni as sectionTransitionFamilies, Nl as CreditCard, Nn as escapeStyleContent, No as FileTextIcon, Nr as buildShopInteractiveIslandProps, Oa as formatEventPrice, Oc as cn, Oi as GRADIENT_PRESETS, On as containerResponsiveThemeCss, Oo as ClockIcon$1, Or as cartBlockDefinition, Os as mapCurrentValueForSelect, Ot as RichTextWidgetProvider, Pa as groupEventsByDate, Pc as formatBookingDate, Pi as sectionTransitionFamilyForBoundaryOptionId, Pl as CirclePlus, Pn as mergeContentWithBlockStyleOverrides, Po as MinusIcon, Pr as getShopDisplayForItems, Pt as hideThemeV2RawStyleFields, Qa as composeHeaderSectionWrapperClassName, Qc as assertNever$5, Qi as buildOfferingsPreviewRenderStates, Qn as NAV_DROPDOWN_SHIFT_PROPERTY, Qr as blogFeaturedPostFragment, Qs as Dialog, Qt as createRoutingHelpers, Ra as getEventAvailabilityStatus, Rc as formatLocalScheduleDate, Ri as BACKGROUND_BODY_TEXT_MIN_CONTRAST_RATIO, Rl as ChevronDown, Rn as siteFooterManifest, Ro as buildResolveImageUrlContext, Rr as formatCommercePrice, Rs as SelectItem, S as usePreviewThemeOverlay, Sa as buildGoogleMapsDirectionsUrl, Sc as createContextScope, Sn as decodePublicProductCategorySelectorQuery, So as getIconComponent, Sr as getWizardStepsForContext$1, Ss as textColorStyle, St as FileField, Ta as formatDate$3, Tc as Button, Ti as surfaceResolutionContextFromTheme, Tn as AMBIENT_BACKGROUND_ROLES, To as ChevronDownIcon, Tr as courseRegistrationBlockDefinition, Ts as SdkConfigProvider, Tt as ReferenceWidgetProvider, Ua as resolveEventRegistrationScopedEvents, Uc as toScheduledBookingDateTime, Ui as defaultThemeTokens, Un as visibleHeaderClearancePx, Uo as resolveImageUrlWithContext, Ur as deriveCommerceCheckoutState, Ut as canUndoHistory, Va as resolveRuntimeEventPricing, Vc as resolveBookingTimeZoneId, Vi as foregroundTokenForBackgroundAppearanceColorToken, Vl as __exportAll, Vn as SITE_OVERLAY_HEADER_CLEARANCE_CSS_VAR, Vo as renderAudio, Vr as buildPassCartItem, Vt as useOptionalEditorUiStoreInstance, Wa as blockBookingPaymentTermsSchema, Wc as parseEventPageSurfaceSubject, Wn as contentTransforms, Wo as resolveMediaNodeResponsiveImage, Wr as parseStoredCommerceCartState, Wt as createHistoryState, X as idleEditorTransactionQueueState, Xa as defineProgressiveBlockRuntime, Xc as publicEventTicketTypes, Xn as ImageResolveContextProvider, Xo as siblingPath, Xr as faqAccordionFragment, Xs as TabsList, Y as enqueueTransaction, Ya as defineClientOwnedBlockRuntime, Yc as publicEventScalarPrice, Yn as createManifestValidator, Yo as getAtPath, Yr as cardFragment, Ys as TabsContent, Yt as recordsEqual, Z as rejectAutosaveBatch, Zc as formatCurrencyAmount, Zi as OFFERINGS_PREVIEW_EVENT_PRESET_DEFINITIONS, Zn as useImageResolveContextOptional, Zr as faqHeadingFragment, Zs as TabsTrigger, Zt as useDebouncedLatestSave, _a as when, _i as compileEditorModelRuntime, _n as useMediaEditorOptional, _o as inlineTextToPlainText, _r as resolveDiscountContext, _t as IconPickerField, aa as buildEventCollectionDisplay, ai as heroCtaRowFragment, al as unsafeAsFormId, ao as resolveFeatureCardGeneratedIconSizePx, ar as buildEventListingInteractiveIslandProps, as as parseThemeForPersistence, at as useUISelector, ba as eventCalendarListLayoutCompatibleDisplayModeValues, bc as createCollection, bi as planPageDesignLayoutLookCompatibility, bn as getPageDesignEditorState, bo as canonicalizePersistedBlockButtonRole, br as WIZARD_STEPS$1, bs as mergeStyles, bt as ButtonVariantField, ca as eventCollectionDisplaySchemaShape, cc as Root, ci as bodyCopyFragment, cl as ok$3, cn as validateBlockManifestIssues, co as parseBlockIconValue, cr as buildEventCalendarListingDisplay, cs as resolveOnColorForThemeToken, da as buildEventRuntimeFilters, di as getAnchorClasses, do as parseGeneratedIconSetId, dr as buildFormInteractiveIslandProps, ds as pageDesignEditorBackgroundOverrideOwner, dt as createSiteOptionWidgetAdapters, ea as resolveOfferingsPreviewCoursePath, ec as DialogDescription, ei as formEmbedFragment, el as parseMediaAssetId, en as BUILT_IN_REFERENCE_KINDS, eo as splitPositioningClasses, er as productListBlockDefinition, f as PREVIEW_DESIGN_LOAD_ERROR_MESSAGE, fa as getEventRuntimeFiltersKey, fi as boxStylesTransforms, fn as FormRenderer, fo as RichTextDocSchema, fr as eventRegistrationBlockDefinition, fs as asDesignBlockId, ft as SiteOptionPickerField, ga as el, gi as applyCompiledRuntimeFieldsToContent, gl as Sparkles, gn as MediaEditorContextProvider, go as coerceInlineTextWithFallback, gr as findPreSelectedEvent, gs as normalizeCardVariantRole, gt as InlineTextField, ha as normalizeOptionalId, hi as formatSiteChromeBackgroundTokenLabel, hl as Star, hn as MediaEditor, ho as logger, hr as findEventByOccurrenceId, hs as normalizeBoxStylesCardVariant, ht as OfferingsPreviewWidgetProvider, i as usePreviewDesignHistoryOrder, ia as resolveSpacing, ii as ctaCopyFragment, il as unsafeAsCustomerPassId, io as FEATURE_CARD_ICON_TREATMENTS, ir as eventListingBlockDefinition, is as themeButtonClassName, ja as formatTime$3, jc as unsafeAsEditorBlockId, ji as parseGradientPresetId, jn as DEFAULT_THEME_RESPONSIVE_MODE, jo as FileAudioIcon, jr as buildProductDetailInteractiveIslandProps, js as FieldFrame, jt as LinkField, ka as formatEventPriceDisplay, kc as clsx, ki as GRADIENT_PRESET_IDS, kl as Image, kn as createCustomBlockRegistry, ko as DownloadIcon, kr as buildCartInteractiveIslandProps, ks as mapOptionValueForSelect, kt as EditorProvider, la as eventCollectionHydrationSchema, lc as Trigger, li as defineFragment, ll as X, lo as resolveBlockIconRenderValue, lr as buildEventCalendarListingRender, ls as resolveTokenOrCssColorValue, lt as useEntryEditorController, m as reportPreviewDesignError, ma as normalizeCsvString, mi as resolveBackgroundColorValue, mn as createStoreBackend, mo as isRecord$20, mr as toRegistrationEvents, ms as ICON_CONFIG, mt as OfferingsPreviewGroupOrderField, n as useSiteChromeCustomizeOptional, na as resolveOfferingsPreviewGroups, nc as DialogHeader, ni as testimonialsCarouselFragment, nl as unsafeAsAppointmentResourceId, nn as parseReferenceKind, no as PUBLIC_DOWNLOAD_MEDIA_TYPES, nr as newsletterSignupBlockDefinition, ns as AFFORDANCE_SUPPRESS_CLASS, nt as PreviewInlineTextEditor, oa as buildEventCollectionHydration, oi as ctaRowFragment, ol as unsafeAsPassId, on as PaletteProvider, oo as shouldReserveFeatureCardIconZone, or as eventCalendarBlockDefinition, os as getTextColorForBackground, ot as EditableBlockProvider, p as PREVIEW_DESIGN_SAVE_ERROR_MESSAGE, pa as normalizeCsvIds, pi as resolveSurfaceForegroundStyles, pl as Ticket, pn as evaluateVisibility, po as isObjectRecord, pr as buildEventRegistrationInteractiveIslandProps, ps as assertNever$6, pt as SiteOptionWidgetProvider, q as confirmAutosaveBatch, qa as defineInteractiveIslandMetaKeys, qc as publicEventPricingMode, qi as ctaButton, qn as uiTransforms, qo as SECTION_BACKGROUND_MIN_SOURCE_WIDTH, qr as richTextFragment, qt as undoHistory, r as PreviewDesignHistoryOrderProvider, ra as isSemanticSpacing, rc as DialogTitle, ri as testimonialsHeadingFragment, rl as unsafeAsAppointmentServiceId, ro as mediaSchema, rr as buildNewsletterFormInteractiveIslandProps, rs as parseThemeButtonVariantId, rt as PreviewTextEditor, sa as buildEventCollectionListingDisplay, sc as Content, si as heroCopyFragment, sl as err$2, sn as usePalette, so as buildGeneratedBlockIconRenderAssetLookupFromUnknown, sr as buildEventCalendarInteractiveIslandProps, ss as isCssColorLiteral, st as EntryControllerProvider, t as SiteChromeCustomizeProvider, ta as resolveOfferingsPreviewGroupCta, tc as DialogFooter, ti as formCopyFragment, tl as parseSiteId, to as planSiteChromePlacement, tr as productDetailBlockDefinition, tt as PreviewRichTextEditor, ua as eventCollectionSourceSchemaShape, uc as createCollapsibleScope, ui as BACKGROUND_POSITION_PRESET_VALUES, ul as Upload, un as createManifestFormAdapter, uo as parseGeneratedIconAssetId, ur as formBlockDefinition, us as isThemeV2NormalEditorRawStyleFieldName, ut as createSiteOptionApiLoader, va as bindingSchema, vc as useId$1, vi as retargetCompiledBoundaryRuntimeForContentAdjacency, vn as useApiMediaUploader, vo as isInlineTextEmpty, vr as resolveEventRequiresPayment, vt as EntryPickerField, wa as toLocationMapHydrationProps, wc as Primitive, wn as deriveLaunchReadiness, wo as ArrowRightIcon, wr as buildGiftingInteractiveIslandProps, ws as isHeaderField, wt as ReferenceField, x as PreviewThemeOverlayProvider, xa as eventCalendarListLayoutOptions, xc as useControllableState, xi as componentRuntimeRulesForTheme, xl as Plus, xo as isBlockButtonRole, xr as getStepNumber$1, xs as rgbColorValue, xt as ButtonWidgetProvider, y as PreviewDesignCoordinatorProvider, ya as previewStageSchema, yc as useDirection, yi as retargetCompiledRuntimeFieldsForContentAdjacency, yl as RotateCcw, yn as applyPageDesignEditorAction, yo as parseInlineTextFromUnknown, yr as resolveRegistrationTarget, ys as backgroundColorStyle, yt as EntryPickerWidgetProvider, za as getLocalDateKey, zc as getBookingLocalDateKey, zi as backgroundAppearanceColorTokenNames, zn as siteHeaderManifest, zo as computeMediaTransformStyle, zr as formatInterval, zs as SelectTrigger, zt as useEditorUiStore } from "./SiteChromeCustomizeContext-C87qlKWw.mjs";
2
+ import { $a as markEditableSurfaceForwarding, $c as expectParsedBrandedId, $i as normalizeOfferingsPreviewItemLimit, $n as shopBlockDefinition, $r as singleButtonFragment, $s as DialogContent, $t as createRoutingHelpers, Aa as formatEventTeacherLine, Ac as parseFooterModuleId, Ai as getGradientPreset, Al as GripVertical, An as buildThemeRuntime, Ao as FileAudioIcon, Ar as buildCheckoutInteractiveIslandProps, As as unmapValueFromSelect, At as EditorProvider, Ba as getLocalMinuteOfDay, Bc as parseBookingLocalDate, Bi as backgroundAppearanceQuickColorTokenNames, Bl as ArrowDown, Bn as SITE_CHROME_VISIBLE_HEADER_SELECTOR, Bo as renderAudio, Br as EMPTY_COMMERCE_CART_STATE, Bs as SelectValue, Bt as useEditorUiStore, C as usePreviewThemeOverlay, Ca as normalizeLocationMapProps, Cc as composeEventHandlers, Ci as designRuntimeRulesForTheme, Cn as MediaEditorContextProvider, Co as ArrowRightIcon, Cr as giftingBlockDefinition, Cs as getFieldIntent, Ct as FileField, Da as formatEventDateParts, Dc as useComposedRefs, Di as gradientToCss, Dn as ThemeScope, Do as ClockIcon$1, Dr as checkoutBlockDefinition, Ds as hasEmptyOption, Dt as useRichTextImagePicker, Ea as formatEventCompactDateRail, El as Minus, En as isSupportedLoaderEndpoint, Eo as CirclePlusIcon, Er as buildCourseRegistrationInteractiveIslandProps, Es as useSdkConfig, Et as ReferenceWidgetProvider, Fa as resolveEventCta, Fc as formatBookingDateTime, Fi as sectionTransitionVariantForBoundaryOptionId, Fl as CircleMinus, Fn as generateDefaultAccordionSystem, Fo as ImagePresets, Fr as buildCartDisplay, Ft as hideThemeV2RawStyleFields, Ga as buildInteractiveIslandProps, Gc as formatBookingPriceDisplay, Gi as createTransformRegistry, Gn as mediaTransforms, Go as setContextResolveImageUrlContext, Gr as productItemKey, Gt as createHistoryState, Ha as normalizeEventRegistrationPageSurfaceSubject, Hc as toBookingTimeZone, Hi as parseBackgroundAppearanceColorToken, Hn as planSiteOverlayHeaderClearance, Ho as resolveImageUrlWithContext, Hr as buildProductCartItem, Ht as useOptionalEditorUiStoreInstance, Ia as resolveEventLinkProps, Ic as formatBookingInstant, Il as ChevronRight, In as getBlockDefinition, Io as MediaPlaceholder, Ir as buildProductCardDisplay, Is as Select, It as prepareBlockEditorManifest, J as confirmAutosaveBatch, Ja as createZodCodec, Jc as publicEventPricingType, Jn as formattingTransforms, Jo as buildRenderableMediaAssetIndex, Jr as headingFragment, Js as Tabs, Jt as undoHistory, Ka as createInteractiveIslandCodec, Kc as publicEventPricingCurrency, Ki as runTransforms, Kn as layoutTransforms, Ko as SECTION_BACKGROUND_MIN_SOURCE_WIDTH, Kr as reduceCommerceCart, Kt as pushHistoryEntry, La as getEventAvailability, Lc as formatBookingTime, Ll as ChevronLeft, Ln as projectRecurringSchedule, Lo as buildResolveImageUrlContext, Lr as buildProductDetailDisplay, Ls as SelectContent, Lt as stripTopLevelRoutingUi, Ma as getCardOrientation, Mc as unsafeAsEditorBlockValues, Mi as defaultSectionTransitionVariantForFamily, Mn as getResponsiveScopeSpec, Mo as FileTextIcon, Mr as buildProductListInteractiveIslandProps, Ms as useField, Mt as LinkField, Na as getContainerClass, Nc as addLocalScheduleDays, Ni as sectionTransitionFamilies, Nl as CreditCard, Nn as escapeStyleContent, No as MinusIcon, Nr as buildShopInteractiveIslandProps, Nt as LinkWidgetProvider, Oa as formatEventPrice, Oc as cn, Oi as GRADIENT_PRESETS, On as containerResponsiveThemeCss, Oo as DownloadIcon, Or as cartBlockDefinition, Os as mapCurrentValueForSelect, Ot as RichTextField, Pa as groupEventsByDate, Pc as formatBookingDate, Pi as sectionTransitionFamilyForBoundaryOptionId, Pl as CirclePlus, Pn as mergeContentWithBlockStyleOverrides, Po as PlusIcon, Pr as getShopDisplayForItems, Q as rejectAutosaveBatch, Qa as composeHeaderSectionWrapperClassName, Qc as assertNever$5, Qi as buildOfferingsPreviewRenderStates, Qn as NAV_DROPDOWN_SHIFT_PROPERTY, Qr as blogFeaturedPostFragment, Qs as Dialog, Qt as useDebouncedLatestSave, Ra as getEventAvailabilityStatus, Rc as formatLocalScheduleDate, Ri as BACKGROUND_BODY_TEXT_MIN_CONTRAST_RATIO, Rl as ChevronDown, Rn as siteFooterManifest, Ro as computeMediaTransformStyle, Rr as formatCommercePrice, Rs as SelectItem, Rt as getBlockManifestFromSdkConfig, S as PreviewThemeOverlayProvider, Sa as buildGoogleMapsDirectionsUrl, Sc as createContextScope, Sn as AMBIENT_BACKGROUND_ROLES, So as ArrowDownIcon, Sr as getWizardStepsForContext$1, Ss as textColorStyle, St as ButtonWidgetProvider, Ta as formatDate$3, Tc as Button, Ti as surfaceResolutionContextFromTheme, Tn as useApiMediaUploader, To as CircleMinusIcon, Tr as courseRegistrationBlockDefinition, Ts as SdkConfigProvider, Tt as ReferenceField, Ua as resolveEventRegistrationScopedEvents, Uc as toScheduledBookingDateTime, Ui as defaultThemeTokens, Un as visibleHeaderClearancePx, Uo as resolveMediaNodeResponsiveImage, Ur as deriveCommerceCheckoutState, Ut as canRedoHistory, Va as resolveRuntimeEventPricing, Vc as resolveBookingTimeZoneId, Vi as foregroundTokenForBackgroundAppearanceColorToken, Vl as __exportAll, Vn as SITE_OVERLAY_HEADER_CLEARANCE_CSS_VAR, Vo as renderVideo, Vr as buildPassCartItem, Vt as useEditorUiStoreInstance, Wa as blockBookingPaymentTermsSchema, Wc as parseEventPageSurfaceSubject, Wn as contentTransforms, Wo as resolveMediaStorageUrl, Wr as parseStoredCommerceCartState, Wt as canUndoHistory, X as enqueueTransaction, Xa as defineProgressiveBlockRuntime, Xc as publicEventTicketTypes, Xn as ImageResolveContextProvider, Xo as siblingPath, Xr as faqAccordionFragment, Xs as TabsList, Xt as recordsEqual, Y as deriveTransactionCapabilities, Ya as defineClientOwnedBlockRuntime, Yc as publicEventScalarPrice, Yn as createManifestValidator, Yo as getAtPath, Yr as cardFragment, Ys as TabsContent, Yt as unsafeAsLinkedContentEntryId, Z as idleEditorTransactionQueueState, Zc as formatCurrencyAmount, Zi as OFFERINGS_PREVIEW_EVENT_PRESET_DEFINITIONS, Zn as useImageResolveContextOptional, Zr as faqHeadingFragment, Zs as TabsTrigger, _a as when, _i as compileEditorModelRuntime, _n as getPageDesignEditorState, _o as coerceInlineTextWithFallback, _r as resolveDiscountContext, _t as InlineTextField, aa as buildEventCollectionDisplay, ai as heroCtaRowFragment, al as unsafeAsFormId, ao as FEATURE_CARD_ICON_TREATMENTS, ar as buildEventListingInteractiveIslandProps, as as parseThemeForPersistence, b as PreviewDesignCoordinatorProvider, ba as eventCalendarListLayoutCompatibleDisplayModeValues, bc as createCollection, bi as planPageDesignLayoutLookCompatibility, bn as DEFAULT_LAUNCH_READINESS_INPUT, bo as parseInlineTextFromUnknown, br as WIZARD_STEPS$1, bs as mergeStyles, bt as EntryPickerWidgetProvider, ca as eventCollectionDisplaySchemaShape, cc as Root, ci as bodyCopyFragment, cl as ok$3, cn as usePalette, co as buildGeneratedBlockIconRenderAssetLookupFromUnknown, cr as buildEventCalendarListingDisplay, cs as resolveOnColorForThemeToken, ct as EntryControllerProvider, da as buildEventRuntimeFilters, di as getAnchorClasses, do as parseGeneratedIconAssetId, dr as buildFormInteractiveIslandProps, ds as pageDesignEditorBackgroundOverrideOwner, dt as createSiteOptionApiLoader, ea as resolveOfferingsPreviewCoursePath, ec as DialogDescription, ei as formEmbedFragment, el as parseMediaAssetId, en as createSnapshotFromPageRecord, eo as splitPositioningClasses, er as productListBlockDefinition, et as resolvePreviewSidebarTab, f as PREVIEW_DESIGN_LOAD_ERROR_MESSAGE, fa as getEventRuntimeFiltersKey, fi as boxStylesTransforms, fn as FormRenderer, fo as parseGeneratedIconSetId, fr as eventRegistrationBlockDefinition, fs as asDesignBlockId, ft as createSiteOptionWidgetAdapters, ga as el, gi as applyCompiledRuntimeFieldsToContent, gl as Sparkles, gn as applyPageDesignEditorAction, go as logger, gr as findPreSelectedEvent, gs as normalizeCardVariantRole, gt as OfferingsPreviewWidgetProvider, ha as normalizeOptionalId, hi as formatSiteChromeBackgroundTokenLabel, hl as Star, hn as MediaEditor, ho as isRecord$20, hr as findEventByOccurrenceId, hs as normalizeBoxStylesCardVariant, ht as OfferingsPreviewGroupOrderField, i as usePreviewDesignHistoryOrder, ia as resolveSpacing, ii as ctaCopyFragment, il as unsafeAsCustomerPassId, io as mediaSchema, ir as eventListingBlockDefinition, is as themeButtonClassName, it as PreviewTextEditor, ja as formatTime$3, jc as unsafeAsEditorBlockId, ji as parseGradientPresetId, jn as DEFAULT_THEME_RESPONSIVE_MODE, jo as FileSpreadsheetIcon, jr as buildProductDetailInteractiveIslandProps, js as FieldFrame, jt as useEditor, ka as formatEventPriceDisplay, kc as clsx, ki as GRADIENT_PRESET_IDS, kl as Image, kn as createCustomBlockRegistry, ko as FileArchiveIcon, kr as buildCartInteractiveIslandProps, ks as mapOptionValueForSelect, kt as RichTextWidgetProvider, la as eventCollectionHydrationSchema, lc as Trigger, li as defineFragment, ll as X, lo as parseBlockIconValue, lr as buildEventCalendarListingRender, ls as resolveTokenOrCssColorValue, m as reportPreviewDesignError, ma as normalizeCsvString, mi as resolveBackgroundColorValue, mn as createStoreBackend, mo as isObjectRecord, mr as toRegistrationEvents, ms as ICON_CONFIG, mt as SiteOptionWidgetProvider, n as useSiteChromeCustomizeOptional, na as resolveOfferingsPreviewGroups, nc as DialogHeader, ni as testimonialsCarouselFragment, nl as unsafeAsAppointmentResourceId, no as isBlockButtonRole, nr as newsletterSignupBlockDefinition, ns as AFFORDANCE_SUPPRESS_CLASS, nt as PreviewRichTextEditor, oa as buildEventCollectionHydration, oi as ctaRowFragment, ol as unsafeAsPassId, oo as resolveFeatureCardGeneratedIconSizePx, or as eventCalendarBlockDefinition, os as getTextColorForBackground, ot as useUISelector, p as PREVIEW_DESIGN_SAVE_ERROR_MESSAGE, pa as normalizeCsvIds, pi as resolveSurfaceForegroundStyles, pl as Ticket, pn as evaluateVisibility, po as RichTextDocSchema, pr as buildEventRegistrationInteractiveIslandProps, ps as assertNever$6, pt as SiteOptionPickerField, q as beginAutosaveBatch, qa as defineInteractiveIslandMetaKeys, qc as publicEventPricingMode, qi as ctaButton, qn as uiTransforms, qo as attachRenderableMediaAssetFields, qr as richTextFragment, qt as redoHistory, r as PreviewDesignHistoryOrderProvider, ra as isSemanticSpacing, rc as DialogTitle, ri as testimonialsHeadingFragment, rl as unsafeAsAppointmentServiceId, rn as parseReferenceKind, ro as PUBLIC_DOWNLOAD_MEDIA_TYPES, rr as buildNewsletterFormInteractiveIslandProps, rs as parseThemeButtonVariantId, rt as PreviewInlineTextEditor, sa as buildEventCollectionListingDisplay, sc as Content, si as heroCopyFragment, sl as err$2, sn as PaletteProvider, so as shouldReserveFeatureCardIconZone, sr as buildEventCalendarInteractiveIslandProps, ss as isCssColorLiteral, st as EditableBlockProvider, t as SiteChromeCustomizeProvider, ta as resolveOfferingsPreviewGroupCta, tc as DialogFooter, ti as formCopyFragment, tl as parseSiteId, tn as BUILT_IN_REFERENCE_KINDS, to as planSiteChromePlacement, tr as productDetailBlockDefinition, ua as eventCollectionSourceSchemaShape, uc as createCollapsibleScope, ui as BACKGROUND_POSITION_PRESET_VALUES, ul as Upload, un as createManifestFormAdapter, uo as resolveBlockIconRenderValue, ur as formBlockDefinition, us as isThemeV2NormalEditorRawStyleFieldName, ut as useEntryEditorController, va as bindingSchema, vc as useId$1, vi as retargetCompiledBoundaryRuntimeForContentAdjacency, vo as inlineTextToPlainText, vr as resolveEventRequiresPayment, vt as IconPickerField, wa as toLocationMapHydrationProps, wc as Primitive, wn as useMediaEditorOptional, wo as ChevronDownIcon, wr as buildGiftingInteractiveIslandProps, ws as isHeaderField, wt as MediaField, xa as eventCalendarListLayoutOptions, xc as useControllableState, xi as componentRuntimeRulesForTheme, xl as Plus, xn as deriveLaunchReadiness, xo as getIconComponent, xr as getStepNumber$1, xs as rgbColorValue, xt as ButtonVariantField, ya as previewStageSchema, yc as useDirection, yi as retargetCompiledRuntimeFieldsForContentAdjacency, yl as RotateCcw, yn as decodePublicProductCategorySelectorQuery, yo as isInlineTextEmpty, yr as resolveRegistrationTarget, ys as backgroundColorStyle, yt as EntryPickerField, za as getLocalDateKey, zc as getBookingLocalDateKey, zi as backgroundAppearanceColorTokenNames, zn as siteHeaderManifest, zo as getCurrentResolveImageUrlContext, zr as formatInterval, zs as SelectTrigger } from "./SiteChromeCustomizeContext-DZiDBAYu.mjs";
3
3
  import { i as useOptionalPreviewLayout, t as PreviewQueryProvider } from "./PreviewQueryProvider-DgFDIwvK.mjs";
4
4
  import { _ as API_ENDPOINTS, a as usePreviewToken, c as createBearerAPIClient, d as unwrapResponse, g as resolveSurfaceDocumentAttributes, h as SURFACE_IDS, i as usePreviewAuthFetch, m as SURFACE_DOCUMENT_DATA_ATTRIBUTE, n as markPreviewAuthExpired, o as isPreviewRuntimeSessionEditable, r as usePreviewAuth, s as ApiRequestError, t as initPreviewAuth } from "./previewAuthStore-Dev9CdG9.mjs";
5
5
  import * as React$1 from "react";
@@ -1868,6 +1868,9 @@ function renderTrailingAffordanceIcon(affordance) {
1868
1868
  className: "rb-ml-2 rb-h-4 rb-w-4 rb-inline-block"
1869
1869
  });
1870
1870
  }
1871
+ function isMissingRequiredLink(linkRequired, resolvedHref) {
1872
+ return linkRequired && resolvedHref.length === 0;
1873
+ }
1871
1874
  const ButtonNode = ({ value, children, href, variantId = "primary", size = "md", disabled, type = "button", target, rel, linkRequired = false, trailingIcon, blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, className, ...rest }) => {
1872
1875
  const content = value ?? children;
1873
1876
  if (!content) {
@@ -1876,12 +1879,16 @@ const ButtonNode = ({ value, children, href, variantId = "primary", size = "md",
1876
1879
  }
1877
1880
  const affordanceIcon = renderTrailingAffordanceIcon(resolveButtonAffordance({ trailingIcon }));
1878
1881
  const resolvedHref = typeof href === "string" ? href.trim() : "";
1879
- if (linkRequired && resolvedHref.length === 0) {
1882
+ if (isMissingRequiredLink(linkRequired, resolvedHref)) {
1880
1883
  console.warn("[ButtonNode] Missing href for link-required button");
1881
1884
  return null;
1882
1885
  }
1883
1886
  const extraClassName = affordanceIcon ? [className, AFFORDANCE_SUPPRESS_CLASS].filter(Boolean).join(" ") : className;
1884
- const resolvedVariantId = parseThemeButtonVariantId(canonicalizePersistedBlockButtonRole(variantId));
1887
+ const resolvedVariantId = parseThemeButtonVariantId(variantId);
1888
+ if (variantId && !resolvedVariantId) {
1889
+ console.error("[ButtonNode] Invalid button variant", { variantId });
1890
+ return null;
1891
+ }
1885
1892
  const combinedClassName = resolvedVariantId ? themeButtonClassName({
1886
1893
  variant: resolvedVariantId,
1887
1894
  size,
@@ -2106,8 +2113,9 @@ function iconForMediaType(type) {
2106
2113
  });
2107
2114
  }
2108
2115
  }
2109
- function normalizeButtonVariant(value) {
2110
- return isBlockButtonRole(value) ? value : "primary";
2116
+ function parseButtonVariant(value) {
2117
+ if (value === null || value === void 0) return "primary";
2118
+ return isBlockButtonRole(value) ? value : null;
2111
2119
  }
2112
2120
  function FileDownloadNode({ value, title, description, buttonLabel, buttonVariant, className }) {
2113
2121
  if (!value || !isDownloadableMediaType(value.type)) return null;
@@ -2117,7 +2125,11 @@ function FileDownloadNode({ value, title, description, buttonLabel, buttonVarian
2117
2125
  const heading = title?.trim() || filename;
2118
2126
  const body = description?.trim();
2119
2127
  const label = buttonLabel?.trim() || "Download";
2120
- const variant = normalizeButtonVariant(buttonVariant);
2128
+ const variant = parseButtonVariant(buttonVariant);
2129
+ if (!variant) {
2130
+ console.error("[FileDownloadNode] Invalid button variant", { buttonVariant });
2131
+ return null;
2132
+ }
2121
2133
  return /* @__PURE__ */ jsx("div", {
2122
2134
  className,
2123
2135
  children: /* @__PURE__ */ jsxs("div", {
@@ -26447,6 +26459,43 @@ function isUnknownArray$1(value) {
26447
26459
  return Array.isArray(value);
26448
26460
  }
26449
26461
  //#endregion
26462
+ //#region ../blocks/src/system/runtime/nodes/mergeResolveImageUrlContexts.ts
26463
+ function normalizedIdentifier(asset) {
26464
+ return (typeof asset.identifier === "string" ? asset.identifier.trim() : "") || void 0;
26465
+ }
26466
+ function indexAssets(index) {
26467
+ if (!index) return [];
26468
+ const assetsById = /* @__PURE__ */ new Map();
26469
+ for (const asset of [...index.byId.values(), ...index.byIdentifier.values()]) assetsById.set(asset.id, asset);
26470
+ return [...assetsById.values()];
26471
+ }
26472
+ function mergeAssetIndexes(baseline, live) {
26473
+ if (!baseline) return live;
26474
+ if (!live) return baseline;
26475
+ let merged = [...indexAssets(baseline)];
26476
+ for (const liveAsset of indexAssets(live)) {
26477
+ const liveIdentifier = normalizedIdentifier(liveAsset);
26478
+ merged = merged.filter((asset) => asset.id !== liveAsset.id && (liveIdentifier === void 0 || normalizedIdentifier(asset) !== liveIdentifier));
26479
+ merged.push(liveAsset);
26480
+ }
26481
+ return buildRenderableMediaAssetIndex(merged);
26482
+ }
26483
+ /**
26484
+ * Combines a render snapshot with client registrations without changing the
26485
+ * persisted media value. Live registrations are authoritative for both asset
26486
+ * IDs and identifiers. Contexts for different known sites never share indexes.
26487
+ */
26488
+ function mergeResolveImageUrlContexts(baseline, live) {
26489
+ if (!baseline) return live ?? void 0;
26490
+ if (!live) return baseline;
26491
+ const sitesConflict = baseline.siteId !== void 0 && live.siteId !== void 0 && baseline.siteId !== live.siteId;
26492
+ return {
26493
+ supabaseUrl: live.supabaseUrl ?? baseline.supabaseUrl,
26494
+ siteId: live.siteId ?? baseline.siteId,
26495
+ mediaAssetIndex: sitesConflict ? live.mediaAssetIndex : mergeAssetIndexes(baseline.mediaAssetIndex, live.mediaAssetIndex)
26496
+ };
26497
+ }
26498
+ //#endregion
26450
26499
  //#region ../blocks/src/system/runtime/nodes/media.client.tsx
26451
26500
  const FALLBACK_IMAGE_DATA_URL = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" viewBox="0 0 800 600">
26452
26501
  <defs>
@@ -26463,11 +26512,16 @@ const FALLBACK_IMAGE_DATA_URL = "data:image/svg+xml;charset=utf-8," + encodeURIC
26463
26512
  </g>
26464
26513
  </svg>`);
26465
26514
  const MediaNode = ({ value, className, style, videoPlayback = "inline", loading = "lazy", fetchPriority, size = ImagePresets.full, fieldPath, blockKind, blockContent, imageResolveContext: explicitImageResolveContext }) => {
26466
- const contextImageResolveContext = useImageResolveContextOptional();
26467
- const imageResolveContext = explicitImageResolveContext ?? contextImageResolveContext;
26515
+ const imageResolveContext = mergeResolveImageUrlContexts(explicitImageResolveContext, useImageResolveContextOptional());
26468
26516
  if (!value) return null;
26469
- if (value.type === "video") return renderVideo(value, className, style, imageResolveContext, { playback: videoPlayback });
26470
- if (value.type === "audio") return renderAudio(value, className, style, imageResolveContext);
26517
+ switch (value.type) {
26518
+ case "video": return renderVideo(value, className, style, imageResolveContext, { playback: videoPlayback });
26519
+ case "audio": return renderAudio(value, className, style, imageResolveContext);
26520
+ case "image":
26521
+ case "archive":
26522
+ case "document":
26523
+ case "spreadsheet": break;
26524
+ }
26471
26525
  const { imageUrl, responsive, transformAspectRatio, resolvedTransform, isProxy } = resolveMediaNodeResponsiveImage(value, size, style, {
26472
26526
  fieldPath,
26473
26527
  blockKind,
@@ -31161,7 +31215,6 @@ function MediaEditorProvider({ siteId, apiClient, children, bucket = DEFAULT_MED
31161
31215
  getPublicUrl: computePublicUrl,
31162
31216
  registerMediaAsset,
31163
31217
  bearerToken,
31164
- mediaAssetIndex: imageResolveContext.mediaAssetIndex,
31165
31218
  imageResolveContext
31166
31219
  }), [
31167
31220
  apiClient,
@@ -32208,8 +32261,7 @@ function useBlockCustomizeControls({ blockId, blockKind, content, uiStore, theme
32208
32261
  return createStoreBackend({
32209
32262
  scope: "blocks",
32210
32263
  store: uiStore,
32211
- blockId,
32212
- validateFn: (values) => validateBlockManifestIssues(preparedManifest.validationManifest, values, "strict")
32264
+ blockId
32213
32265
  });
32214
32266
  }, [
32215
32267
  blockId,
@@ -35227,6 +35279,18 @@ function setPreviewSidebarTab(tab) {
35227
35279
  } catch {}
35228
35280
  }
35229
35281
  //#endregion
35282
+ //#region ../preview-next/src/client/preview/previewThemeRoles.ts
35283
+ /**
35284
+ * Splits the preview theme inputs into their two distinct roles so the
35285
+ * page-adapted render theme can never reach the persistence path.
35286
+ */
35287
+ function resolvePreviewThemeRoles(input) {
35288
+ return {
35289
+ persistenceTheme: input.theme,
35290
+ documentTheme: input.renderTheme ?? input.theme
35291
+ };
35292
+ }
35293
+ //#endregion
35230
35294
  //#region ../blocks/src/client/site-chrome.tsx
35231
35295
  const siteChromeBlockRenderDeps = {
35232
35296
  buildThemeRuntime,
@@ -36651,17 +36715,21 @@ function LinkedEntryEditEventBridge() {
36651
36715
  //#region ../preview-next/src/client/preview/PreviewShellLayout.tsx
36652
36716
  const previewContainerResponsiveEnabled = process.env.NEXT_PUBLIC_ENABLE_PREVIEW_CONTAINER_RESPONSIVE !== "false";
36653
36717
  const PreviewEditorSidebar = React.lazy(async () => {
36654
- return { default: (await import("./PreviewEditorSidebar-DcYJxTgc.mjs")).PreviewEditorSidebar };
36718
+ return { default: (await import("./PreviewEditorSidebar-BXtfF7tp.mjs")).PreviewEditorSidebar };
36655
36719
  });
36656
36720
  const PreviewEditorUI = React.lazy(async () => {
36657
- return { default: (await import("./PreviewEditorUI-Ctt1yTJr.mjs")).PreviewEditorUI };
36721
+ return { default: (await import("./PreviewEditorUI-Dou73Q0K.mjs")).PreviewEditorUI };
36658
36722
  });
36659
36723
  const previewPaneContainmentStyle = {
36660
36724
  contain: "layout paint",
36661
36725
  isolation: "isolate",
36662
36726
  transform: "translateZ(0)"
36663
36727
  };
36664
- function PreviewShellLayout({ children, theme, surfaceId, siteId, dashboardBaseUrl = null, pageId, entryData, contentTypeSchema, referenceContentTypeKeys = [], draftContent, currentTemplate, apiClient, bearerToken, themeId = null, themeSelectionId = null, themeSelectionVersion = null, themeSelectionUpdatedAt = null, themeSelectionButtonStyleSelection = null, themeSelectionHeaderLayoutId = null, themeSelectionHeaderStyleId = null, themeSelectionHeaderLookId = null, themeSelectionFooterLookId = null, themeSelectionHeaderContext, supabaseUrl, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, themeRuntime = defaultPreviewThemeRuntime, siteStyleAccess = { kind: "hidden" }, onFooterSaved }) {
36728
+ function PreviewShellLayout({ children, theme, renderTheme, surfaceId, siteId, dashboardBaseUrl = null, pageId, entryData, contentTypeSchema, referenceContentTypeKeys = [], draftContent, currentTemplate, apiClient, bearerToken, themeId = null, themeSelectionId = null, themeSelectionVersion = null, themeSelectionUpdatedAt = null, themeSelectionButtonStyleSelection = null, themeSelectionHeaderLayoutId = null, themeSelectionHeaderStyleId = null, themeSelectionHeaderLookId = null, themeSelectionFooterLookId = null, themeSelectionHeaderContext, supabaseUrl, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, themeRuntime = defaultPreviewThemeRuntime, siteStyleAccess = { kind: "hidden" }, onFooterSaved }) {
36729
+ const { persistenceTheme, documentTheme } = resolvePreviewThemeRoles({
36730
+ theme,
36731
+ renderTheme
36732
+ });
36665
36733
  const layout = useOptionalPreviewLayout();
36666
36734
  const headerNode = layout?.headerNode ?? null;
36667
36735
  const bannerNode = layout?.bannerNode ?? null;
@@ -36829,7 +36897,7 @@ function PreviewShellLayout({ children, theme, surfaceId, siteId, dashboardBaseU
36829
36897
  referenceContentTypeKeys,
36830
36898
  draftContent,
36831
36899
  currentTemplate,
36832
- theme,
36900
+ theme: persistenceTheme,
36833
36901
  apiClient,
36834
36902
  bearerToken,
36835
36903
  themeId,
@@ -36865,27 +36933,12 @@ function PreviewShellLayout({ children, theme, surfaceId, siteId, dashboardBaseU
36865
36933
  }, overlayScopeKey)
36866
36934
  })
36867
36935
  });
36868
- const editorUI = /* @__PURE__ */ jsx(React.Suspense, {
36869
- fallback: null,
36870
- children: /* @__PURE__ */ jsx(PreviewEditorUI, {
36871
- dashboardBaseUrl,
36872
- inMaintenanceMode: maintenanceModeEnabled,
36873
- siteId,
36874
- surfaceId,
36875
- isSiteLaunched,
36876
- apiClient
36877
- })
36878
- });
36879
- const previewBanner = /* @__PURE__ */ jsx(PreviewAuthBanner, {
36880
- dashboardBaseUrl,
36881
- surfaceId
36882
- });
36883
36936
  return /* @__PURE__ */ jsx(PreviewThemeOverlayProvider, {
36884
- baseTheme: theme,
36937
+ baseTheme: documentTheme,
36885
36938
  children: /* @__PURE__ */ jsx(PreviewDesignCoordinatorProvider, { children: /* @__PURE__ */ jsx(SiteChromeCustomizeProvider, {
36886
36939
  siteId,
36887
36940
  apiClient,
36888
- theme,
36941
+ theme: persistenceTheme,
36889
36942
  themeId,
36890
36943
  selectionId: themeSelectionId,
36891
36944
  selectionVersion: themeSelectionVersion,
@@ -36904,8 +36957,21 @@ function PreviewShellLayout({ children, theme, surfaceId, siteId, dashboardBaseU
36904
36957
  canOpenDesignEditor: entryData == null && pageId !== null && canInspectSiteStyle(siteStyleAccess),
36905
36958
  children: /* @__PURE__ */ jsxs(PreviewBlockCustomizeSelectionProvider, { children: [
36906
36959
  /* @__PURE__ */ jsx(LinkedEntryEditEventBridge, {}),
36907
- editorUI,
36908
- previewBanner,
36960
+ /* @__PURE__ */ jsx(React.Suspense, {
36961
+ fallback: null,
36962
+ children: /* @__PURE__ */ jsx(PreviewEditorUI, {
36963
+ dashboardBaseUrl,
36964
+ inMaintenanceMode: maintenanceModeEnabled,
36965
+ siteId,
36966
+ surfaceId,
36967
+ isSiteLaunched,
36968
+ apiClient
36969
+ })
36970
+ }),
36971
+ /* @__PURE__ */ jsx(PreviewAuthBanner, {
36972
+ dashboardBaseUrl,
36973
+ surfaceId
36974
+ }),
36909
36975
  /* @__PURE__ */ jsx("div", {
36910
36976
  className: "fixed inset-0 overflow-hidden bg-background",
36911
36977
  children: isOpen ? /* @__PURE__ */ jsx(ResizableSplitPane, {
@@ -36928,14 +36994,15 @@ function PreviewShellLayout({ children, theme, surfaceId, siteId, dashboardBaseU
36928
36994
  }
36929
36995
  //#endregion
36930
36996
  //#region ../preview-next/src/client/preview/PreviewShell.tsx
36931
- function PreviewShell({ children, apiBaseUrl, blockApiConfig, siteId, siteSlug, editableId, previewSession, previewToken, dashboardBaseUrl = null, surfaceId, theme, themeId = null, themeSelectionId = null, themeSelectionVersion = null, themeSelectionUpdatedAt = null, themeSelectionButtonStyleSelection = null, themeSelectionHeaderLayoutId = null, themeSelectionHeaderStyleId = null, themeSelectionHeaderLookId = null, themeSelectionFooterLookId = null, themeSelectionHeaderContext, pageId, routeId, entryData, contentTypeSchema, referenceContentTypeKeys = [], draftContent, currentTemplate, initialStatus, initialBlocks, pageMetadata, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, supabaseUrl, themeRuntime = defaultPreviewThemeRuntime, designEditorEligibility, hideSiteStyleConfigurator = false, baseFetch, onFooterSaved }) {
36997
+ function PreviewShell({ children, apiBaseUrl, blockApiConfig, siteId, siteSlug, editableId, previewSession, previewToken, dashboardBaseUrl = null, surfaceId, theme, renderTheme, themeId = null, themeSelectionId = null, themeSelectionVersion = null, themeSelectionUpdatedAt = null, themeSelectionButtonStyleSelection = null, themeSelectionHeaderLayoutId = null, themeSelectionHeaderStyleId = null, themeSelectionHeaderLookId = null, themeSelectionFooterLookId = null, themeSelectionHeaderContext, pageId, routeId, entryData, contentTypeSchema, referenceContentTypeKeys = [], draftContent, currentTemplate, initialStatus, initialBlocks, pageMetadata, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, supabaseUrl, themeRuntime = defaultPreviewThemeRuntime, designEditorEligibility, hideSiteStyleConfigurator = false, baseFetch, onFooterSaved }) {
36932
36998
  const apiClient = useMemo(() => createBearerAPIClient(previewToken, apiBaseUrl), [previewToken, apiBaseUrl]);
36933
- const resolvedDesignEditorEligibility = designEditorEligibility ?? defaultDesignEditorEligibility({
36999
+ const { designEditorEnabled, siteStyleAccess } = resolveShellAccess({
37000
+ previewSession,
37001
+ designEditorEligibility,
36934
37002
  pageId,
36935
- entryData
37003
+ entryData,
37004
+ hideSiteStyleConfigurator
36936
37005
  });
36937
- const designEditorEnabled = isPreviewRuntimeSessionEditable(previewSession) && resolvedDesignEditorEligibility.kind === "managed-page" && Boolean(pageId);
36938
- const siteStyleAccess = hideSiteStyleConfigurator ? { kind: "hidden" } : resolveSiteStyleAccess(previewSession);
36939
37006
  return /* @__PURE__ */ jsx(BlockApiProvider, {
36940
37007
  config: blockApiConfig,
36941
37008
  children: /* @__PURE__ */ jsx(PreviewQueryProvider, { children: /* @__PURE__ */ jsx(PreviewAuthInit, {
@@ -36970,6 +37037,7 @@ function PreviewShell({ children, apiBaseUrl, blockApiConfig, siteId, siteSlug,
36970
37037
  mediaAssets,
36971
37038
  children: [/* @__PURE__ */ jsx(PreviewKeepAliveClient, { baseFetch }), /* @__PURE__ */ jsx(PreviewShellLayout, {
36972
37039
  theme,
37040
+ renderTheme,
36973
37041
  surfaceId,
36974
37042
  siteId,
36975
37043
  dashboardBaseUrl,
@@ -37016,6 +37084,16 @@ function defaultDesignEditorEligibility(input) {
37016
37084
  if (input.pageId) return { kind: "managed-page" };
37017
37085
  return { kind: "unsupported" };
37018
37086
  }
37087
+ function resolveShellAccess(input) {
37088
+ const eligibility = input.designEditorEligibility ?? defaultDesignEditorEligibility({
37089
+ pageId: input.pageId,
37090
+ entryData: input.entryData
37091
+ });
37092
+ return {
37093
+ designEditorEnabled: isPreviewRuntimeSessionEditable(input.previewSession) && eligibility.kind === "managed-page" && Boolean(input.pageId),
37094
+ siteStyleAccess: input.hideSiteStyleConfigurator ? { kind: "hidden" } : resolveSiteStyleAccess(input.previewSession)
37095
+ };
37096
+ }
37019
37097
  //#endregion
37020
37098
  //#region ../preview-next/src/client/utils/path.ts
37021
37099
  const PATH_SEPARATOR_REGEX = /\./g;