@riverbankcms/sdk 0.104.3 → 0.107.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 (236) hide show
  1. package/README.md +84 -51
  2. package/dist/{PreviewEditorSidebar-CBMhU9p_.mjs → PreviewEditorSidebar-DpAbAl08.mjs} +1811 -1179
  3. package/dist/{PreviewEditorUI-C5KEw4M8.mjs → PreviewEditorUI-O7cn6Xxv.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-CStABBUh.mjs → PreviewQueryProvider-D0tnKl0t.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-Iq12HjL7.mjs → SdkPreviewModeRuntime-CVB7urtl.mjs} +2144 -393
  6. package/dist/{SiteChromeCustomizeContext-Cx0NMdyv.mjs → SiteChromeCustomizeContext-C_sizso-.mjs} +3825 -2653
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +32945 -1339
  8. package/dist/_dts/api/src/bookingConfig.d.ts +2 -0
  9. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +5 -1
  10. package/dist/_dts/api/src/contentRuntime.d.ts +6 -15
  11. package/dist/_dts/api/src/courses.d.ts +68 -10
  12. package/dist/_dts/api/src/endpoints.d.ts +29 -0
  13. package/dist/_dts/api/src/index.d.ts +124 -124
  14. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +9 -0
  15. package/dist/_dts/api/src/sdkContracts.d.ts +116 -6
  16. package/dist/_dts/api/src/siteOperations.d.ts +1 -0
  17. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +26 -4
  18. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +31 -46
  19. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +36 -4
  20. package/dist/_dts/blocks/src/definitions.d.ts +1 -1
  21. package/dist/_dts/blocks/src/portal/types.d.ts +25 -7
  22. package/dist/_dts/blocks/src/system/blocks/course-registration.d.ts +2 -2
  23. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +2 -0
  24. package/dist/_dts/blocks/src/system/blocks/courses/shared/types.d.ts +2 -0
  25. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +4 -0
  26. package/dist/_dts/blocks/src/system/blocks/events/recurring-schedule-projection.d.ts +52 -0
  27. package/dist/_dts/blocks/src/system/blocks/events/recurring-schedule.d.ts +22 -0
  28. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +45 -0
  29. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +10 -0
  30. package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +4 -1
  31. package/dist/_dts/blocks/src/system/blocks/index.d.ts +1 -0
  32. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +9 -0
  33. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +8 -2
  34. package/dist/_dts/blocks/src/system/blocks/offerings-preview/index.d.ts +8 -8
  35. package/dist/_dts/blocks/src/system/blocks/offerings-preview/model.d.ts +24 -24
  36. package/dist/_dts/blocks/src/system/blocks/offerings-preview/scheduleSummary.d.ts +29 -0
  37. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +2 -1
  38. package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
  39. package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +2 -5
  40. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  41. package/dist/_dts/blocks/src/system/designCapabilities.d.ts +1 -0
  42. package/dist/_dts/blocks/src/system/fragments/library/newsletterForm.d.ts +2 -2
  43. package/dist/_dts/blocks/src/system/node/fragments/styledCard.d.ts +3 -0
  44. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  45. package/dist/_dts/blocks/src/system/runtime/blockComposition.d.ts +2 -0
  46. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +90 -6
  47. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +45 -3
  48. package/dist/_dts/blocks/src/system/runtime/nodes/basic.d.ts +1 -0
  49. package/dist/_dts/blocks/src/system/runtime/nodes/commerce/shared/display.d.ts +2 -2
  50. package/dist/_dts/blocks/src/system/runtime/nodes/course-details/logic.d.ts +2 -1
  51. package/dist/_dts/blocks/src/system/runtime/nodes/course-details/view.d.ts +1 -0
  52. package/dist/_dts/blocks/src/system/runtime/nodes/course-details.server.d.ts +2 -1
  53. package/dist/_dts/blocks/src/system/runtime/nodes/course-page-surface-scope.d.ts +17 -0
  54. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/types.d.ts +3 -0
  55. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.interactive.d.ts +5 -0
  56. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.server.d.ts +1 -1
  57. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventScope.d.ts +9 -18
  58. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +106 -0
  59. package/dist/_dts/blocks/src/system/runtime/nodes/events/RecurringSchedule.d.ts +11 -0
  60. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekBoardView.d.ts +7 -3
  61. package/dist/_dts/blocks/src/system/runtime/nodes/media.d.ts +3 -0
  62. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +11 -1
  63. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.server.d.ts +1 -1
  64. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +3 -0
  65. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview.d.ts +6 -6
  66. package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +11 -5
  67. package/dist/_dts/blocks/src/system/runtime/nodes/shop.types.d.ts +2 -1
  68. package/dist/_dts/blocks/src/system/runtime/nodes/svg.d.ts +7 -0
  69. package/dist/_dts/core/src/branded.d.ts +44 -0
  70. package/dist/_dts/core/src/dated-offering-settlement.d.ts +47 -0
  71. package/dist/_dts/core/src/event-page-surface-subject.d.ts +44 -0
  72. package/dist/_dts/core/src/index.d.ts +49 -47
  73. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +1452 -15
  74. package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +1 -1
  75. package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +4 -1
  76. package/dist/_dts/media-core/src/index.d.ts +2 -1
  77. package/dist/_dts/media-core/src/storagePathDomain.d.ts +47 -0
  78. package/dist/_dts/media-core/src/url.d.ts +1 -21
  79. package/dist/_dts/preview-next/src/client/blocks/pageDesignRuntimePreview.d.ts +4 -2
  80. package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -1
  81. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -1
  82. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +3 -9
  83. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +7 -11
  84. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +3 -9
  85. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +2 -6
  86. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +5 -9
  87. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +81 -43
  88. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.typography.d.ts +61 -0
  89. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +7 -17
  90. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorSnapshot.d.ts +15 -8
  91. package/dist/_dts/preview-next/src/client/preview/typographyFontCatalog.d.ts +57 -0
  92. package/dist/_dts/sdk/src/cli/commands/pull.d.ts +1 -1
  93. package/dist/_dts/sdk/src/cli/commands/push/execute/theme.d.ts +4 -7
  94. package/dist/_dts/sdk/src/cli/commands/style.d.ts +24 -10
  95. package/dist/_dts/sdk/src/cli/site-commands/oneOffCommands.d.ts +3 -3
  96. package/dist/_dts/sdk/src/cli/sync/media.d.ts +16 -2
  97. package/dist/_dts/sdk/src/client/management/blocks.d.ts +1 -1
  98. package/dist/_dts/sdk/src/client/management/index.d.ts +1 -1
  99. package/dist/_dts/sdk/src/client/management/types.d.ts +132 -23
  100. package/dist/_dts/sdk/src/client/types.d.ts +2 -0
  101. package/dist/_dts/sdk/src/config/types.d.ts +1 -1
  102. package/dist/_dts/sdk/src/config/validation.d.ts +3 -0
  103. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  104. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +23 -3
  105. package/dist/_dts/sdk/src/data/dataLoaderContext.d.ts +17 -0
  106. package/dist/_dts/sdk/src/data/dataLoaderValue.d.ts +36 -0
  107. package/dist/_dts/sdk/src/data/defineOwnDataProperty.d.ts +2 -0
  108. package/dist/_dts/sdk/src/data/executeCodeLoaders.d.ts +36 -40
  109. package/dist/_dts/sdk/src/data/index.d.ts +3 -3
  110. package/dist/_dts/sdk/src/data/resolveBlockData.d.ts +54 -0
  111. package/dist/_dts/sdk/src/data/types.d.ts +43 -78
  112. package/dist/_dts/sdk/src/next/index.d.ts +1 -0
  113. package/dist/_dts/sdk/src/next/redirect-destination.d.ts +1 -1
  114. package/dist/_dts/sdk/src/next/resolveTheme.d.ts +2 -1
  115. package/dist/_dts/sdk/src/next/types.d.ts +10 -1
  116. package/dist/_dts/sdk/src/public-api/contracts.d.ts +3 -8
  117. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +9 -4
  118. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +6 -10
  119. package/dist/_dts/sdk/src/rendering/index.d.ts +1 -0
  120. package/dist/_dts/sdk/src/server.d.ts +4 -3
  121. package/dist/_dts/sdk/src/types/block-kinds.d.ts +1 -1
  122. package/dist/_dts/sdk/src/version.d.ts +1 -1
  123. package/dist/_dts/site-commands/src/capabilityGaps.d.ts +2 -2
  124. package/dist/_dts/site-commands/src/commands.d.ts +921 -30
  125. package/dist/_dts/theme-core/src/buttons/generateDefaultButtonSystem.d.ts +5 -1
  126. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
  127. package/dist/_dts/theme-core/src/buttons/personalities/quiet-arrow.d.ts +17 -0
  128. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +2 -2
  129. package/dist/_dts/theme-core/src/buttons/types.d.ts +9 -5
  130. package/dist/_dts/theme-core/src/data.d.ts +12 -0
  131. package/dist/_dts/theme-core/src/fonts/index.d.ts +1 -1
  132. package/dist/_dts/theme-core/src/fonts/types.d.ts +6 -0
  133. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  134. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +36 -24
  135. package/dist/_dts/theme-core/src/palette/colors.d.ts +12 -0
  136. package/dist/_dts/theme-core/src/palette/curated/brand-led.d.ts +10 -5
  137. package/dist/_dts/theme-core/src/palette/curated/high-contrast.d.ts +6 -3
  138. package/dist/_dts/theme-core/src/palette/curated/index.d.ts +31 -236
  139. package/dist/_dts/theme-core/src/palette/curated/soft-natural.d.ts +8 -4
  140. package/dist/_dts/theme-core/src/palette/curated/types.d.ts +14 -12
  141. package/dist/_dts/theme-core/src/palette/curated/warm-dark.d.ts +4 -2
  142. package/dist/_dts/theme-core/src/palette/curated/warm-neutral.d.ts +8 -4
  143. package/dist/_dts/theme-core/src/palette/editorState.d.ts +33 -3
  144. package/dist/_dts/theme-core/src/palette/index.d.ts +0 -4
  145. package/dist/_dts/theme-core/src/palette/libraryModel.d.ts +12 -6
  146. package/dist/_dts/theme-core/src/palette/persistenceReadSource.d.ts +20 -72
  147. package/dist/_dts/theme-core/src/palette/resolveSelection.d.ts +29 -4
  148. package/dist/_dts/theme-core/src/palette/selection.d.ts +6 -4
  149. package/dist/_dts/theme-core/src/schema.d.ts +121 -4
  150. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +218 -158
  151. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +5 -6
  152. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +218 -158
  153. package/dist/_dts/theme-core/src/site-styles/compositionBudget.d.ts +1 -0
  154. package/dist/_dts/theme-core/src/site-styles/contentTemplateRuntimeCompiler.d.ts +2 -1
  155. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +161 -51
  156. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +6 -0
  157. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
  158. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -1
  159. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +24 -1
  160. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +14 -48
  161. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +10 -23
  162. package/dist/_dts/theme-core/src/site-styles/siteStyleThemeCompiler.d.ts +1 -2
  163. package/dist/_dts/theme-core/src/site-styles/siteStyleTypography.d.ts +456 -0
  164. package/dist/_dts/theme-core/src/site-styles/types.d.ts +52 -3
  165. package/dist/cli/index.mjs +3155 -1701
  166. package/dist/client/{DiscountCodeDisclosure-BXM73_E5.mjs → DiscountCodeDisclosure-BwGkvmVH.mjs} +1 -1
  167. package/dist/client/{EventCombined.client-DT5elP7j.mjs → EventCombined.client-JnWE6Hzc.mjs} +3 -3
  168. package/dist/client/{EventListing.client-pTYGfV9C.mjs → EventListing.client-DQewc_kg.mjs} +2 -2
  169. package/dist/client/{LeafletStaticMap-dQrhlUe3.mjs → LeafletStaticMap-DPAU3SFt.mjs} +1 -1
  170. package/dist/client/{MagicLinkForm-u6Dul4j5.mjs → MagicLinkForm-D4kpWCbW.mjs} +2 -2
  171. package/dist/client/{StepIndicator-nWqineJ2.mjs → StepIndicator-CBlkb4rA.mjs} +2 -2
  172. package/dist/client/{accordion-CSJcTUyH.mjs → accordion-DAIBVpTS.mjs} +1 -1
  173. package/dist/client/{bookingForm-C73wOuVa.mjs → bookingForm-DZ-4l5_1.mjs} +7 -7
  174. package/dist/client/bookings.mjs +239 -110
  175. package/dist/client/{buttons-DfYyqt8C.mjs → buttons-DJgynGHQ.mjs} +122 -58
  176. package/dist/client/{carousel-fMBb0JSc.mjs → carousel-D-SLfX8r.mjs} +1 -1
  177. package/dist/client/{cart-BtaCwT3S.mjs → cart-CEgbgJhX.mjs} +3 -3
  178. package/dist/client/{checkout-DkTwZSnh.mjs → checkout-CXWrCRAA.mjs} +3 -3
  179. package/dist/client/client.mjs +4300 -1560
  180. package/dist/client/{colorStyles-Wyl6JujD.mjs → colorStyles-jZS6KfkP.mjs} +1 -1
  181. package/dist/client/{colorTokenParts-dT8MISgJ.mjs → colorTokenParts-CMugwvX_.mjs} +3 -1
  182. package/dist/client/{courseRegistration-DnLmapJu.mjs → courseRegistration-DVmLrRVz.mjs} +56 -21
  183. package/dist/client/{eventCalendar-BvLOc9KY.mjs → eventCalendar-DCuyPY_c.mjs} +29 -21
  184. package/dist/client/{eventCombined-kShgJPQr.mjs → eventCombined-kP2CA2D4.mjs} +2 -2
  185. package/dist/client/{eventDetails-C5NTM0Vo.mjs → eventDetails-DU0LeF5e.mjs} +4 -4
  186. package/dist/client/{eventListing-B82ZdKP6.mjs → eventListing-CcHF87BI.mjs} +2 -2
  187. package/dist/client/{eventRegistration-qJVFqBWo.mjs → eventRegistration-DJnR0yFH.mjs} +8 -8
  188. package/dist/client/{form-BvAcKiuu.mjs → form-CH1lCusH.mjs} +2 -2
  189. package/dist/client/{headerSection-NvAiEHAg.mjs → headerSection-CBPFZoku.mjs} +3 -3
  190. package/dist/client/hooks.mjs +2958 -1848
  191. package/dist/client/{locationMap-D0j52xfI.mjs → locationMap-Cx1hBg5n.mjs} +3 -3
  192. package/dist/client/{media-BCW_g2cQ.mjs → media-DHtSxS5V.mjs} +61 -56
  193. package/dist/client/{newsletterForm-B8_i93qH.mjs → newsletterForm-1ZL_ti9u.mjs} +3 -3
  194. package/dist/client/{pricing-DIYnyHOk.mjs → pricing-BIbzmV0G.mjs} +1 -1
  195. package/dist/client/{productDetail-w0eAHkuQ.mjs → productDetail-BTh5gHBV.mjs} +3 -3
  196. package/dist/client/{productList-Vsguq5Xt.mjs → productList-Cc7OMrqN.mjs} +3 -3
  197. package/dist/client/{propsDecoder-CD2pJ1WB.mjs → propsDecoder-oR-M-ISN.mjs} +192 -59
  198. package/dist/client/rendering/client.mjs +2031 -1239
  199. package/dist/client/rendering/islands.mjs +20 -20
  200. package/dist/client/rendering.mjs +4889 -1712
  201. package/dist/client/{shop-Dgxs-Q8F.mjs → shop-CQ_YbCnn.mjs} +8 -8
  202. package/dist/client/{shop-commerce-DJAhsTaT.mjs → shop-commerce-BM-AoD3M.mjs} +6 -6
  203. package/dist/client/{shop-commerce-store-CfCXltXW.mjs → shop-commerce-store-DFMQhU5p.mjs} +1 -1
  204. package/dist/client/{shopShared-CmDcPXUt.mjs → shopShared-D0SKO2Cu.mjs} +3 -3
  205. package/dist/client/{useDiscountCodeUi-CirrT2bM.mjs → useDiscountCodeUi-CrG4_ARt.mjs} +1 -1
  206. package/dist/client/{useEventFilters-CNZxlCcO.mjs → useEventFilters-CxK8Fekl.mjs} +6 -6
  207. package/dist/client/{usePolling-Baks_iBI.mjs → usePolling-jcVryNgZ.mjs} +2 -2
  208. package/dist/preview-next/before-render.mjs +40 -1
  209. package/dist/preview-next/client/runtime.mjs +4 -4
  210. package/dist/preview-next/middleware.mjs +40 -1
  211. package/dist/{previewAuthStore-CfquDtTh.mjs → previewAuthStore-BPcJPzdz.mjs} +40 -1
  212. package/dist/{sdk-runtime-BfNiFeNJ.mjs → sdk-runtime-C39Rsk-x.mjs} +2 -2
  213. package/dist/{separator-BhAR_Xmf.mjs → separator-BoMSQnsP.mjs} +1 -1
  214. package/dist/server/components.mjs +4661 -2162
  215. package/dist/server/config-validation.mjs +2728 -1847
  216. package/dist/server/config.mjs +2728 -1847
  217. package/dist/server/data.mjs +3381 -1915
  218. package/dist/server/index.mjs +46 -4
  219. package/dist/server/next/middleware.mjs +1 -1
  220. package/dist/server/next.mjs +5555 -2225
  221. package/dist/server/page-converter.mjs +3058 -2182
  222. package/dist/server/prebuild.mjs +1 -1
  223. package/dist/server/rendering/server.mjs +4850 -2125
  224. package/dist/server/rendering.mjs +5664 -2464
  225. package/dist/server/routing.mjs +3027 -1509
  226. package/dist/server/server.mjs +3844 -2217
  227. package/dist/server/theme-bridge.mjs +9121 -7765
  228. package/dist/server/theme.mjs +152 -59
  229. package/dist/styles/index.css +1217 -31
  230. package/package.json +1 -1
  231. package/dist/_dts/preview-next/src/client/preview/typographySelectionInput.d.ts +0 -16
  232. package/dist/_dts/theme-core/src/palette/historicalThemePalette.d.ts +0 -44
  233. package/dist/_dts/theme-core/src/palette/legacyRuntimeProjection.d.ts +0 -55
  234. package/dist/_dts/theme-core/src/palette/legacySelection.d.ts +0 -45
  235. package/dist/_dts/theme-core/src/palette/paletteCompatibilityTransition.d.ts +0 -232
  236. package/dist/_dts/theme-core/src/site-styles/typographyPresets.d.ts +0 -234
@@ -1,4 +1,4 @@
1
- import type { SiteIconStyleGuideVersionId } from '../../../blocks/src/index';
1
+ import { type SiteIconStyleGuideVersionId } from '../../../blocks/src/index';
2
2
  import type { BlockItem, DraftsSlice, UiStore } from './types';
3
3
  import { type GeneratedIconSetGenerateInput, type GeneratedIconSetGenerateResult } from './GeneratedIconSetDialog';
4
4
  import { type GeneratedIconApplyState } from './generatedIconApplyCoordination';
@@ -31,12 +31,15 @@ export type GeneratedIconSetApplyResult = Readonly<{
31
31
  kind: 'failed';
32
32
  message: string;
33
33
  }>;
34
- export declare function GeneratedIconSetDialog({ open, onOpenChange, cards, styleGuideSummary, styleGuideEditHref, onGenerate, onApply, }: {
34
+ export declare function GeneratedIconSetDialog({ open, onOpenChange, cards, styleGuideSummary, styleGuideEditHref, generatedIconSizePx, onGeneratedIconSizeChange, hasStaleGeneratedIcons, onGenerate, onApply, }: {
35
35
  open: boolean;
36
36
  onOpenChange: (open: boolean) => void;
37
37
  cards: readonly FeatureCardIconDialogCard[];
38
38
  styleGuideSummary?: string | null;
39
39
  styleGuideEditHref?: string | null;
40
+ generatedIconSizePx?: number;
41
+ onGeneratedIconSizeChange?: (value: number) => void;
42
+ hasStaleGeneratedIcons?: boolean;
40
43
  onGenerate?: (input: GeneratedIconSetGenerateInput) => Promise<GeneratedIconSetGenerateResult>;
41
44
  onApply?: (preview: GeneratedIconSetPreview) => GeneratedIconSetApplyResult | void | Promise<GeneratedIconSetApplyResult | void>;
42
45
  }): import("react").JSX.Element;
@@ -1,6 +1,7 @@
1
1
  export * from './types';
2
2
  export * from './fileDomain';
3
3
  export * from './fileStorage';
4
+ export * from './storagePathDomain';
4
5
  export * from './fileSafety';
5
6
  export * from './filePersistence';
6
7
  export * from './fileAssetLegacyProjection';
@@ -26,7 +27,7 @@ export * from './classifyAllPlanning';
26
27
  export * from './mediaSettingsState';
27
28
  export * from './videoSlotPolicy';
28
29
  export * from './identifiers';
29
- export { getImageUrl, getDirectImageUrl, getDirectImageUrlForRelativePath, getDirectImageUrlForSiteScopedPath, getDirectImageUrlForBucketPath, getDirectImageUrlForStoragePath, getDirectImageUrlForMediaAsset, isRelativeDirectImageStoragePath, isSiteScopedDirectImageStoragePath, type DirectImageMediaAsset, type DirectImageUrlOptions, type DirectImageUrlPathTarget, type ImageProxyFit, type ImageProxyParams, } from './url';
30
+ export { getImageUrl, getDirectImageUrl, getDirectImageUrlForRelativePath, getDirectImageUrlForSiteScopedPath, getDirectImageUrlForBucketPath, getDirectImageUrlForMediaAsset, isSiteScopedDirectImageStoragePath, type DirectImageMediaAsset, type DirectImageUrlOptions, type DirectImageUrlPathTarget, type ImageProxyFit, type ImageProxyParams, } from './url';
30
31
  export { isSameTransformRect, isSameHotspot, type HotspotLike } from './compare';
31
32
  export { asRecord, isRecord } from './typeGuards';
32
33
  export { emitMediaCropDebug, isMediaCropDebugEnabled } from './cropDebug';
@@ -0,0 +1,47 @@
1
+ import type { RelativeStoragePath as CoreRelativeStoragePath, SiteScopedStoragePath as CoreSiteScopedStoragePath } from '../../core/src/index';
2
+ declare const __storagePathSiteBrand: unique symbol;
3
+ type SiteScopedStoragePathBrand<TSiteId extends string> = Readonly<{
4
+ kind: 'SiteScopedStoragePath';
5
+ siteId: TSiteId;
6
+ }>;
7
+ export type RelativeStoragePath = CoreRelativeStoragePath;
8
+ export type SiteScopedStoragePath<TSiteId extends string = string> = CoreSiteScopedStoragePath & {
9
+ readonly [__storagePathSiteBrand]: SiteScopedStoragePathBrand<TSiteId>;
10
+ };
11
+ export type StoragePathForSite<TSiteId extends string = string> = Readonly<{
12
+ relativePath: RelativeStoragePath;
13
+ fullPath: SiteScopedStoragePath<TSiteId>;
14
+ }>;
15
+ export type StoragePathParseError = {
16
+ tag: 'MISSING';
17
+ } | {
18
+ tag: 'EMPTY';
19
+ } | {
20
+ tag: 'LEADING_SLASH';
21
+ } | {
22
+ tag: 'DOUBLE_SLASH';
23
+ } | {
24
+ tag: 'TRAVERSAL';
25
+ } | {
26
+ tag: 'SITE_SCOPED_PATH';
27
+ } | {
28
+ tag: 'INVALID_SITE_PREFIX';
29
+ expectedPrefix: string;
30
+ };
31
+ export type StoragePathParseResult<T> = {
32
+ ok: true;
33
+ value: T;
34
+ } | {
35
+ ok: false;
36
+ error: StoragePathParseError;
37
+ };
38
+ export declare function unwrapRelativeStoragePath(value: RelativeStoragePath): string;
39
+ export declare function unwrapSiteScopedStoragePath<TSiteId extends string>(value: SiteScopedStoragePath<TSiteId>): string;
40
+ export declare function parseRelativeStoragePath(value: unknown): StoragePathParseResult<RelativeStoragePath>;
41
+ export declare function assertRelativeStoragePath(value: string): RelativeStoragePath;
42
+ export declare function toSiteScopedStoragePath<TSiteId extends string>(siteId: TSiteId, relativePath: RelativeStoragePath): SiteScopedStoragePath<TSiteId>;
43
+ export declare function normalizeRelativeStoragePathForSite<TSiteId extends string>(siteId: TSiteId, value: unknown): StoragePathParseResult<StoragePathForSite<TSiteId>>;
44
+ export declare function normalizeAmbiguousStoragePathForSite<TSiteId extends string>(siteId: TSiteId, value: unknown): StoragePathParseResult<StoragePathForSite<TSiteId>>;
45
+ export declare function parseSiteScopedStoragePathForSite<TSiteId extends string>(siteId: TSiteId, value: unknown): StoragePathParseResult<SiteScopedStoragePath<TSiteId>>;
46
+ export declare function assertSiteScopedStoragePathForSite<TSiteId extends string>(siteId: TSiteId, value: string): SiteScopedStoragePath<TSiteId>;
47
+ export {};
@@ -25,31 +25,11 @@ export type DirectImageUrlPathTarget = Readonly<{
25
25
  kind: 'bucket-scoped';
26
26
  storagePath: string;
27
27
  }>;
28
- export declare function isRelativeDirectImageStoragePath(storagePath: string): storagePath is RelativeStoragePath;
29
28
  export declare function isSiteScopedDirectImageStoragePath(storagePath: string): storagePath is SiteScopedStoragePath;
29
+ export declare function getDirectImageUrl(supabaseUrl: string, target: DirectImageUrlPathTarget, storageBucket?: string, options?: DirectImageUrlOptions): string;
30
30
  export declare function getDirectImageUrlForRelativePath(supabaseUrl: string, storagePath: RelativeStoragePath, siteId: string, storageBucket?: string, options?: DirectImageUrlOptions): string;
31
31
  export declare function getDirectImageUrlForSiteScopedPath(supabaseUrl: string, storagePath: SiteScopedStoragePath, storageBucket?: string, options?: DirectImageUrlOptions): string;
32
32
  export declare function getDirectImageUrlForBucketPath(supabaseUrl: string, storagePath: string, storageBucket?: string, options?: DirectImageUrlOptions): string;
33
- export declare function getDirectImageUrlForStoragePath(supabaseUrl: string, storagePath: RelativeStoragePath | SiteScopedStoragePath | string, storageBucket?: string, siteId?: string, options?: DirectImageUrlOptions): string;
34
- /**
35
- * @deprecated Prefer `getDirectImageUrlForMediaAsset`, `getDirectImageUrlForRelativePath`,
36
- * `getDirectImageUrlForSiteScopedPath`, or `getDirectImageUrlForBucketPath` so path shape
37
- * is explicit at the call site.
38
- *
39
- * Build a direct Supabase storage URL for an image.
40
- *
41
- * For images with transform options, uses the render endpoint which applies
42
- * server-side transformations. For images without transforms (or SVGs),
43
- * returns the direct public object URL.
44
- *
45
- * @param supabaseUrl - Supabase project URL (e.g., https://xxx.supabase.co)
46
- * @param storagePath - Relative path within the bucket (e.g., originals/2024/12/img.png)
47
- * @param storageBucket - Storage bucket name (default: 'media')
48
- * @param siteId - Site UUID to prepend as path prefix
49
- * @param options - Optional transform parameters
50
- * @returns Direct URL to the image
51
- */
52
- export declare function getDirectImageUrl(supabaseUrl: string, storagePath: RelativeStoragePath | SiteScopedStoragePath | string, storageBucket?: string, siteId?: string, options?: DirectImageUrlOptions): string;
53
33
  export type DirectImageMediaAsset = Pick<MediaAsset, 'storageBucket' | 'storagePath'>;
54
34
  export declare function getDirectImageUrlForMediaAsset(supabaseUrl: string, asset: DirectImageMediaAsset, options?: DirectImageUrlOptions): string;
55
35
  export type ImageProxyFit = 'clip' | 'crop' | 'max';
@@ -1,5 +1,5 @@
1
1
  import type { BlockItem } from '../../../../editor-blocks/src/index';
2
- import type { DesignRuntimeRules, PageDesignEditorReadModel, SurfaceResolutionContext } from '../../../../theme-core/src/site-styles/previewCompiler';
2
+ import type { DesignRuntimeRules, ComponentRuntimeRules, PageDesignEditorReadModel, SurfaceResolutionContext } from '../../../../theme-core/src/site-styles/previewCompiler';
3
3
  import type { PreviewPageDesignEditorState } from '../preview/PageDesignEditorStateContext';
4
4
  import { type RuntimeContentDecorationProjection } from './previewProjection';
5
5
  export type RuntimePreviewSource = Readonly<{
@@ -9,13 +9,15 @@ export type RuntimePreviewSource = Readonly<{
9
9
  editorModel: PageDesignEditorReadModel;
10
10
  surfaceResolutionContext: SurfaceResolutionContext;
11
11
  designRules?: DesignRuntimeRules;
12
+ componentRules?: ComponentRuntimeRules;
12
13
  }>;
13
14
  export declare function applyPageDesignRuntimeFieldsToBlockItems(blockItems: readonly BlockItem[], source: RuntimePreviewSource): BlockItem[];
14
15
  export declare function applyPageDesignRuntimeFieldsToBlockContent(block: BlockItem, content: Record<string, unknown> | null, source: RuntimePreviewSource): Record<string, unknown> | null;
15
- export declare function buildPageDesignRuntimeFieldsByBlockId(editorModel: PageDesignEditorReadModel, surfaceResolutionContext: SurfaceResolutionContext, designRules?: DesignRuntimeRules): RuntimeContentDecorationProjection['fieldsByBlockId'];
16
+ export declare function buildPageDesignRuntimeFieldsByBlockId(editorModel: PageDesignEditorReadModel, surfaceResolutionContext: SurfaceResolutionContext, designRules?: DesignRuntimeRules, componentRules?: ComponentRuntimeRules): RuntimeContentDecorationProjection['fieldsByBlockId'];
16
17
  export declare function pageDesignRuntimeProjectionFromSource(source: RuntimePreviewSource): RuntimeContentDecorationProjection | null;
17
18
  export declare function resolveRuntimePreviewSource(input: Readonly<{
18
19
  pageDesignState: PreviewPageDesignEditorState;
19
20
  surfaceResolutionContext: SurfaceResolutionContext | null;
20
21
  designRules?: DesignRuntimeRules;
22
+ componentRules?: ComponentRuntimeRules;
21
23
  }>): RuntimePreviewSource;
@@ -1,5 +1,6 @@
1
1
  import type { BlockItem } from '../../../../../editor-blocks/src/index';
2
2
  import { type DesignRuntimeRules, type PageDesignEditorReadModel, type RuntimeContentAdjacency, type SurfaceResolutionContext } from '../../../../../theme-core/src/site-styles/previewCompiler';
3
3
  import type { CanonicalBlockContent, PreviewRenderContent, RuntimeContentDecorationProjection } from './types';
4
- export declare function runtimeContentDecorationProjectionFromEditorModel(editorModel: PageDesignEditorReadModel, surfaceResolutionContext: SurfaceResolutionContext, designRules?: DesignRuntimeRules): RuntimeContentDecorationProjection;
4
+ import type { ComponentRuntimeRules } from '../../../../../theme-core/src/site-styles/previewCompiler';
5
+ export declare function runtimeContentDecorationProjectionFromEditorModel(editorModel: PageDesignEditorReadModel, surfaceResolutionContext: SurfaceResolutionContext, designRules?: DesignRuntimeRules, componentRules?: ComponentRuntimeRules): RuntimeContentDecorationProjection;
5
6
  export declare function applyRuntimeContentDecorationProjection(block: BlockItem, content: CanonicalBlockContent | PreviewRenderContent | null, projection: RuntimeContentDecorationProjection, adjacency?: Pick<RuntimeContentAdjacency, 'nextContent'>): PreviewRenderContent;
@@ -23,6 +23,7 @@ type PageBlockEditorPanelProps = {
23
23
  linkedEntrySection?: PreviewLinkedEntrySidebarSection | null;
24
24
  designPanel?: ReactNode;
25
25
  designOpenRequestId?: number | null;
26
+ designTakeoverActive?: boolean;
26
27
  sdkConfig?: SdkConfigForBlockPicker | null;
27
28
  mediaAssets?: MediaAssetIndexItem[];
28
29
  bookingOfferingPresets?: readonly BookingOfferingPresetSummary[] | null;
@@ -33,5 +34,5 @@ type PageBlockEditorPanelProps = {
33
34
  onViewportWidthChange: (width: ViewportWidth) => void;
34
35
  onZoomChange: (zoom: ZoomLevel) => void;
35
36
  };
36
- export declare function PageBlockEditorPanel({ siteId, pageId, dashboardBaseUrl, theme, apiClient, bearerToken, supabaseUrl, blockItems, uiStoreForBlockEditor, blockEditorRef, onBlocksChange, metadataPanel, linkedEntrySection, designPanel, designOpenRequestId, sdkConfig, mediaAssets, bookingOfferingPresets, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange, }: PageBlockEditorPanelProps): React.JSX.Element;
37
+ export declare function PageBlockEditorPanel({ siteId, pageId, dashboardBaseUrl, theme, apiClient, bearerToken, supabaseUrl, blockItems, uiStoreForBlockEditor, blockEditorRef, onBlocksChange, metadataPanel, linkedEntrySection, designPanel, designOpenRequestId, designTakeoverActive, sdkConfig, mediaAssets, bookingOfferingPresets, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange, }: PageBlockEditorPanelProps): React.JSX.Element;
37
38
  export {};
@@ -6,8 +6,7 @@ import type { EntrySubrouteContextData, BookingOfferingPresetSummary, MediaAsset
6
6
  import { type ContentTypeSchema } from "../../../../content-model/src/index";
7
7
  import { type ZoomLevel } from "../../../../content-editor/src/index";
8
8
  import type { ButtonPersonalityId } from "../../../../theme-core/src/buttons/index";
9
- import type { CuratedPaletteId, PaletteOverrides, RuntimePaletteState } from "../../../../theme-core/src/palette/index";
10
- import type { FooterSelectionContext, FooterLookId, HeaderLayoutId, HeaderSelectionContext, HeaderLookId, HeaderStyleId, TypographyPresetId } from "../../../../theme-core/src/site-styles/index";
9
+ import type { FooterSelectionContext, FooterLookId, HeaderLayoutId, HeaderSelectionContext, HeaderLookId, HeaderStyleId } from "../../../../theme-core/src/site-styles/index";
11
10
  import type { PreviewDesignRow } from "./sidebarTabPreference";
12
11
  import type { ViewportMode, ViewportWidth } from "./PreviewViewportControls";
13
12
  import { type SiteStyleAccess } from "./siteStyleAccess";
@@ -37,14 +36,9 @@ export type PreviewEditorSidebarProps = {
37
36
  themeSelectionUpdatedAt?: string | null;
38
37
  /** Persisted Style configurator selections (Phase C / E). */
39
38
  themeSelectionButtonPersonalityId?: ButtonPersonalityId | null;
40
- runtimePaletteState?: RuntimePaletteState | null;
41
- themeSelectionPaletteVariantId?: CuratedPaletteId | null;
42
- themeSelectionPaletteOverrides?: PaletteOverrides | null;
39
+ runtimePaletteState: import('./styleConfiguratorSnapshot').PreviewRuntimePaletteState;
43
40
  themeSelectionHeaderLayoutId?: HeaderLayoutId | null;
44
41
  themeSelectionHeaderStyleId?: HeaderStyleId | null;
45
- themeSelectionTypographyPresetId?: TypographyPresetId | null;
46
- themeSelectionTypographyBodyFontOverride?: string | null;
47
- themeSelectionTypographyHeadingFontOverride?: string | null;
48
42
  themeSelectionHeaderLookId?: HeaderLookId | null;
49
43
  themeSelectionFooterLookId?: FooterLookId | null;
50
44
  themeSelectionHeaderContext?: Partial<HeaderSelectionContext>;
@@ -72,4 +66,4 @@ export type PreviewEditorSidebarProps = {
72
66
  onViewportWidthChange: (width: ViewportWidth) => void;
73
67
  onZoomChange: (zoom: ZoomLevel) => void;
74
68
  };
75
- export declare function PreviewEditorSidebar({ surfaceId, siteId, dashboardBaseUrl, pageId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, theme, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonPersonalityId, runtimePaletteState, themeSelectionPaletteVariantId, themeSelectionPaletteOverrides, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionTypographyPresetId, themeSelectionTypographyBodyFontOverride, themeSelectionTypographyHeadingFontOverride, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, themeSelectionFooterContext, designRowRequest, apiClient, bearerToken, supabaseUrl, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, siteStyleAccess, activeTab, onTabChange, onClose, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange, }: PreviewEditorSidebarProps): React.JSX.Element;
69
+ export declare function PreviewEditorSidebar({ surfaceId, siteId, dashboardBaseUrl, pageId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, theme, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonPersonalityId, runtimePaletteState, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, themeSelectionFooterContext, designRowRequest, apiClient, bearerToken, supabaseUrl, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, siteStyleAccess, activeTab, onTabChange, onClose, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange, }: PreviewEditorSidebarProps): React.JSX.Element;
@@ -1,8 +1,7 @@
1
1
  import React, { type ComponentProps, type ReactNode } from 'react';
2
2
  import { BlockApiProvider } from '../../../../blocks/src/client';
3
3
  import type { ButtonPersonalityId } from '../../../../theme-core/src/buttons/index';
4
- import type { CuratedPaletteId, PaletteOverrides } from '../../../../theme-core/src/palette/index';
5
- import type { FooterSelectionContext, FooterLookId, HeaderLayoutId, HeaderSelectionContext, HeaderLookId, HeaderStyleId, TypographyPresetId } from '../../../../theme-core/src/site-styles/index';
4
+ import type { FooterSelectionContext, FooterLookId, HeaderLayoutId, HeaderSelectionContext, HeaderLookId, HeaderStyleId } from '../../../../theme-core/src/site-styles/index';
6
5
  import type { EntrySubrouteContextData, BookingOfferingPresetSummary, MediaAssetIndexItem, Theme } from '../../../../blocks/src/index';
7
6
  import type { ContentTypeSchema } from '../../../../content-model/src/index';
8
7
  import type { SdkConfigForBlockPicker } from '../../../../editor-blocks/src/index';
@@ -39,18 +38,13 @@ export type PreviewShellProps = {
39
38
  themeSelectionUpdatedAt?: string | null;
40
39
  /**
41
40
  * Persisted Style configurator selections. Forwarded into StyleConfigurator
42
- * so reload renders the user's saved button personality, palette variant,
43
- * and sparse overrides instead of falling back to the site style defaults.
41
+ * so reload renders the user's saved button personality and authoritative
42
+ * complete palette state.
44
43
  */
45
44
  themeSelectionButtonPersonalityId?: ButtonPersonalityId | null;
46
- runtimePaletteState?: import('../../../../theme-core/src/palette/index').RuntimePaletteState | null;
47
- themeSelectionPaletteVariantId?: CuratedPaletteId | null;
48
- themeSelectionPaletteOverrides?: PaletteOverrides | null;
45
+ runtimePaletteState: import('./styleConfiguratorSnapshot').PreviewRuntimePaletteState;
49
46
  themeSelectionHeaderLayoutId?: HeaderLayoutId | null;
50
47
  themeSelectionHeaderStyleId?: HeaderStyleId | null;
51
- themeSelectionTypographyPresetId?: TypographyPresetId | null;
52
- themeSelectionTypographyBodyFontOverride?: string | null;
53
- themeSelectionTypographyHeadingFontOverride?: string | null;
54
48
  themeSelectionHeaderLookId?: HeaderLookId | null;
55
49
  themeSelectionFooterLookId?: FooterLookId | null;
56
50
  themeSelectionHeaderContext?: Partial<HeaderSelectionContext>;
@@ -75,9 +69,11 @@ export type PreviewShellProps = {
75
69
  supabaseUrl?: string;
76
70
  themeRuntime?: PreviewThemeRuntime;
77
71
  designEditorEligibility?: PreviewDesignEditorEligibility;
72
+ /** Hides site-style controls for runtimes without palette authority. */
73
+ hideSiteStyleConfigurator?: boolean;
78
74
  baseFetch?: BaseFetch;
79
75
  };
80
- export declare function PreviewShell({ children, apiBaseUrl, blockApiConfig, siteId, siteSlug, editableId, previewSession, previewToken, dashboardBaseUrl, surfaceId, theme, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonPersonalityId, runtimePaletteState, themeSelectionPaletteVariantId, themeSelectionPaletteOverrides, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionTypographyPresetId, themeSelectionTypographyBodyFontOverride, themeSelectionTypographyHeadingFontOverride, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, themeSelectionFooterContext, pageId, routeId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, initialStatus, initialBlocks, pageMetadata, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, supabaseUrl, themeRuntime, designEditorEligibility, baseFetch, }: PreviewShellProps): React.JSX.Element;
76
+ export declare function PreviewShell({ children, apiBaseUrl, blockApiConfig, siteId, siteSlug, editableId, previewSession, previewToken, dashboardBaseUrl, surfaceId, theme, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonPersonalityId, runtimePaletteState, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, themeSelectionFooterContext, pageId, routeId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, initialStatus, initialBlocks, pageMetadata, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, supabaseUrl, themeRuntime, designEditorEligibility, hideSiteStyleConfigurator, baseFetch, }: PreviewShellProps): React.JSX.Element;
81
77
  export declare function defaultDesignEditorEligibility(input: Readonly<{
82
78
  pageId: string | null;
83
79
  entryData?: PreviewContentEntryData | null;
@@ -1,8 +1,7 @@
1
1
  import React, { type ReactNode } from "react";
2
2
  import { type EntrySubrouteContextData, type BookingOfferingPresetSummary, type MediaAssetIndexItem, type Theme } from "../../../../blocks/src/index";
3
3
  import type { ButtonPersonalityId } from "../../../../theme-core/src/buttons/index";
4
- import type { CuratedPaletteId, PaletteOverrides } from "../../../../theme-core/src/palette/index";
5
- import type { FooterSelectionContext, HeaderSelectionContext, FooterLookId, HeaderLayoutId, HeaderLookId, HeaderStyleId, TypographyPresetId } from "../../../../theme-core/src/site-styles/index";
4
+ import type { FooterSelectionContext, HeaderSelectionContext, FooterLookId, HeaderLayoutId, HeaderLookId, HeaderStyleId } from "../../../../theme-core/src/site-styles/index";
6
5
  import type { ContentTypeSchema } from "../../../../content-model/src/index";
7
6
  import type { ApiClient } from "../../../../api/src/request";
8
7
  import type { SdkConfigForBlockPicker } from "../../../../editor-blocks/src/index";
@@ -29,14 +28,9 @@ export type PreviewShellLayoutProps = {
29
28
  themeSelectionVersion?: number | null;
30
29
  themeSelectionUpdatedAt?: string | null;
31
30
  themeSelectionButtonPersonalityId?: ButtonPersonalityId | null;
32
- runtimePaletteState?: import('../../../../theme-core/src/palette/index').RuntimePaletteState | null;
33
- themeSelectionPaletteVariantId?: CuratedPaletteId | null;
34
- themeSelectionPaletteOverrides?: PaletteOverrides | null;
31
+ runtimePaletteState: import('./styleConfiguratorSnapshot').PreviewRuntimePaletteState;
35
32
  themeSelectionHeaderLayoutId?: HeaderLayoutId | null;
36
33
  themeSelectionHeaderStyleId?: HeaderStyleId | null;
37
- themeSelectionTypographyPresetId?: TypographyPresetId | null;
38
- themeSelectionTypographyBodyFontOverride?: string | null;
39
- themeSelectionTypographyHeadingFontOverride?: string | null;
40
34
  themeSelectionHeaderLookId?: HeaderLookId | null;
41
35
  themeSelectionFooterLookId?: FooterLookId | null;
42
36
  themeSelectionHeaderContext?: Partial<HeaderSelectionContext>;
@@ -52,4 +46,4 @@ export type PreviewShellLayoutProps = {
52
46
  themeRuntime?: PreviewThemeRuntime;
53
47
  siteStyleAccess?: SiteStyleAccess;
54
48
  };
55
- export declare function PreviewShellLayout({ children, theme, surfaceId, siteId, dashboardBaseUrl, pageId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, apiClient, bearerToken, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonPersonalityId, runtimePaletteState, themeSelectionPaletteVariantId, themeSelectionPaletteOverrides, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionTypographyPresetId, themeSelectionTypographyBodyFontOverride, themeSelectionTypographyHeadingFontOverride, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, themeSelectionFooterContext, supabaseUrl, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, themeRuntime, siteStyleAccess, }: PreviewShellLayoutProps): React.JSX.Element;
49
+ export declare function PreviewShellLayout({ children, theme, surfaceId, siteId, dashboardBaseUrl, pageId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, apiClient, bearerToken, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonPersonalityId, runtimePaletteState, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, themeSelectionFooterContext, supabaseUrl, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, themeRuntime, siteStyleAccess, }: PreviewShellLayoutProps): React.JSX.Element;
@@ -2,8 +2,7 @@ import React, { type ReactNode } from 'react';
2
2
  import { type ApiClient } from '../../../../api/src/request';
3
3
  import type { Theme } from '../../../../blocks/src/index';
4
4
  import type { ButtonPersonalityId } from '../../../../theme-core/src/buttons/index';
5
- import type { RuntimePaletteState } from '../../../../theme-core/src/palette/index';
6
- import type { BrandDisplayMode, FooterLayoutId, FooterLookId, HeaderNavFontSizePreference, HeaderNavTypographyPreference, FooterSelectionContext, HeaderLayoutId, HeaderLookId, HeaderSelectionContext, HeaderStyleId, LogoSizePolicy, SiteChromeBackgroundColorToken, SiteChromeBackgroundOverride, TypographyPresetId } from '../../../../theme-core/src/site-styles/index';
5
+ import type { BrandDisplayMode, FooterLayoutId, FooterLookId, HeaderNavFontSizePreference, HeaderNavTypographyPreference, FooterSelectionContext, HeaderLayoutId, HeaderLookId, HeaderSelectionContext, HeaderStyleId, LogoSizePolicy, SiteChromeBackgroundColorToken, SiteChromeBackgroundOverride } from '../../../../theme-core/src/site-styles/index';
7
6
  import { headerNavFontSizeOptions, headerNavTypographyOptions } from '../../../../theme-core/src/site-styles/index';
8
7
  import { type StyleConfiguratorHistoryEntry } from './StyleConfigurator.state';
9
8
  import type { SiteStyleAccess } from './siteStyleAccess';
@@ -118,12 +117,9 @@ export type SiteChromeCustomizeProviderProps = Readonly<{
118
117
  selectionVersion?: number | null;
119
118
  selectionUpdatedAt?: string | null;
120
119
  buttonPersonalityId: ButtonPersonalityId | null;
121
- runtimePaletteState?: RuntimePaletteState | null;
120
+ runtimePaletteState: import('./styleConfiguratorSnapshot').PreviewRuntimePaletteState;
122
121
  headerLayoutId?: HeaderLayoutId | null;
123
122
  headerStyleId?: HeaderStyleId | null;
124
- typographyPresetId?: TypographyPresetId | null;
125
- typographyBodyFontOverride?: string | null;
126
- typographyHeadingFontOverride?: string | null;
127
123
  headerLookId?: HeaderLookId | null;
128
124
  footerLookId?: FooterLookId | null;
129
125
  }> & Readonly<Record<string, unknown>>;
@@ -2,10 +2,10 @@ import React from 'react';
2
2
  import type { ApiClient } from '../../../../api/src/request';
3
3
  import type { Theme } from '../../../../blocks/src/index';
4
4
  import { type ButtonPersonalityId } from '../../../../theme-core/src/buttons/index';
5
- import { type CuratedPaletteId, type PaletteOverrides, type RuntimePaletteState } from '../../../../theme-core/src/palette/index';
6
- import { type FooterSelectionContext, type FooterLookId, type HeaderLayoutId, type HeaderLookId, type HeaderSelectionContext, type HeaderStyleId, type TypographyPresetId } from '../../../../theme-core/src/site-styles/index';
5
+ import { type FooterSelectionContext, type FooterLookId, type HeaderLayoutId, type HeaderLookId, type HeaderSelectionContext, type HeaderStyleId } from '../../../../theme-core/src/site-styles/index';
7
6
  import { type VisibleSiteStyleAccess } from './siteStyleAccess';
8
7
  import type { PreviewDesignRow } from './sidebarTabPreference';
8
+ import type { PreviewRuntimePaletteState } from './styleConfiguratorSnapshot';
9
9
  export type StyleConfiguratorProps = Readonly<{
10
10
  siteId: string;
11
11
  apiClient: ApiClient;
@@ -19,14 +19,9 @@ export type StyleConfiguratorProps = Readonly<{
19
19
  selectionVersion?: number | null;
20
20
  selectionUpdatedAt?: string | null;
21
21
  buttonPersonalityId: ButtonPersonalityId | null;
22
- runtimePaletteState?: RuntimePaletteState | null;
23
- paletteVariantId?: CuratedPaletteId | null;
24
- paletteOverrides?: PaletteOverrides | null;
22
+ runtimePaletteState: PreviewRuntimePaletteState;
25
23
  headerLayoutId?: HeaderLayoutId | null;
26
24
  headerStyleId?: HeaderStyleId | null;
27
- typographyPresetId?: TypographyPresetId | null;
28
- typographyBodyFontOverride?: string | null;
29
- typographyHeadingFontOverride?: string | null;
30
25
  headerLookId?: HeaderLookId | null;
31
26
  footerLookId?: FooterLookId | null;
32
27
  }> & Readonly<Record<string, unknown>>;
@@ -37,6 +32,7 @@ export type StyleConfiguratorProps = Readonly<{
37
32
  id: number;
38
33
  row: PreviewDesignRow;
39
34
  }> | null;
35
+ onFocusedSurfaceChange?: (focused: boolean) => void;
40
36
  siteStyleAccess: VisibleSiteStyleAccess;
41
37
  }>;
42
- export declare function StyleConfigurator({ siteId, apiClient, theme, selectionId, selectionVersion, selectionUpdatedAt, initialSelections, headerSelectionContext, footerSelectionContext, expandedRowRequest, siteStyleAccess, }: StyleConfiguratorProps): React.JSX.Element;
38
+ export declare function StyleConfigurator({ siteId, apiClient, theme, selectionId, selectionVersion, selectionUpdatedAt, initialSelections, headerSelectionContext, footerSelectionContext, expandedRowRequest, onFocusedSurfaceChange, siteStyleAccess, }: StyleConfiguratorProps): React.JSX.Element;
@@ -12,8 +12,8 @@
12
12
  */
13
13
  import type { ButtonPersonalityId } from '../../../../theme-core/src/buttons/index';
14
14
  import type { Theme } from '../../../../blocks/src/index';
15
- import type { CuratedPaletteId, PaletteColors, PaletteMode, RuntimePaletteState, SitePaletteId, SitePaletteVersion } from '../../../../theme-core/src/palette/index';
16
- import { type FooterLookId, type HeaderLayoutId, type HeaderLookId, type HeaderStyleId, type TypographyPresetId } from '../../../../theme-core/src/site-styles/index';
15
+ import type { PaletteColors, PaletteMode, PaletteSelection, PaletteEditorState, KnownCuratedPaletteValueKey, ResolvedPaletteSelection, RuntimePaletteState, SitePalette, SitePaletteId, SitePaletteVersion, PaletteLibraryAuthority } from '../../../../theme-core/src/palette/index';
16
+ import { type FooterLookId, type HeaderLayoutId, type HeaderLookId, type HeaderStyleId } from '../../../../theme-core/src/site-styles/index';
17
17
  import type { SelectionFallbackWarning, SiteStyleId } from '../../../../theme-core/src/site-styles/previewCompiler';
18
18
  import { type EditorStagedSessionCapabilities, type EditorStagedSessionState } from '../../../../content-editor/src/editorTransactionState';
19
19
  export type StyleConfiguratorSaveStatus = Readonly<{
@@ -25,6 +25,7 @@ export type StyleConfiguratorSaveStatus = Readonly<{
25
25
  }> | Readonly<{
26
26
  kind: 'failed';
27
27
  message: string;
28
+ failureKind: 'retryable' | 'stale';
28
29
  }>;
29
30
  export type StyleConfiguratorExpandedRow = 'style' | 'header-layout' | 'header-style' | 'footer-layout' | 'footer' | 'buttons' | 'typography' | 'palette' | 'colours' | null;
30
31
  /**
@@ -37,20 +38,6 @@ export type StyleConfiguratorNotice = never;
37
38
  type ThemeTypography = Theme['typography'];
38
39
  type BodyTypography = ThemeTypography['body'];
39
40
  type HeadingTypography = ThemeTypography['headings']['default'];
40
- export type TypographySelectionSnapshot = Readonly<{
41
- kind: 'preset';
42
- presetId: TypographyPresetId | null;
43
- bodyFontOverride: string | null;
44
- headingFontOverride: string | null;
45
- }> | Readonly<{
46
- kind: 'custom';
47
- typography: ThemeTypography;
48
- }>;
49
- export type TypographySelectionFlatFields = Readonly<{
50
- typographyPresetId: TypographyPresetId | null;
51
- typographyBodyFontOverride: string | null;
52
- typographyHeadingFontOverride: string | null;
53
- }>;
54
41
  export type TypographyDraftPatch = Readonly<{
55
42
  kind: 'heading';
56
43
  patch: Partial<HeadingTypography>;
@@ -61,24 +48,41 @@ export type TypographyDraftPatch = Readonly<{
61
48
  kind: 'scale';
62
49
  scale: ThemeTypography['scale'];
63
50
  }>;
51
+ /** Runtime authority is deliberately separate from the editable core state. */
64
52
  export type PaletteSelectionSnapshot = Readonly<{
65
- kind: 'migrated-curated';
66
- paletteId: CuratedPaletteId;
53
+ kind: 'available';
54
+ editor: PaletteEditorState;
55
+ }> | Readonly<{
56
+ kind: 'invalid';
57
+ reason: PaletteAuthorityError;
58
+ }>;
59
+ export type PaletteAuthorityError = Extract<RuntimePaletteState, {
60
+ kind: 'invalid';
61
+ }>['reason'] | 'runtime-curated-palette-missing' | 'runtime-curated-palette-mismatch' | 'invalid-active-site-palette-version';
62
+ /** Read-only UI projection. It intentionally owns no palette transitions. */
63
+ export type PalettePreviewProjection = Readonly<{
64
+ kind: 'curated';
65
+ valueKey: KnownCuratedPaletteValueKey;
66
+ colors: PaletteColors;
67
+ mode: PaletteMode;
68
+ }> | Readonly<{
69
+ kind: 'curated-fork';
70
+ sourceValueKey: KnownCuratedPaletteValueKey;
67
71
  colors: PaletteColors;
68
72
  mode: PaletteMode;
69
73
  }> | Readonly<{
70
- kind: 'migrated-site';
74
+ kind: 'site';
71
75
  paletteId: SitePaletteId;
72
76
  colors: PaletteColors;
73
77
  mode: PaletteMode;
74
78
  version: SitePaletteVersion;
75
79
  }> | Readonly<{
76
- kind: 'legacy-unmigrated';
80
+ kind: 'new-site';
77
81
  colors: PaletteColors;
78
82
  mode: PaletteMode;
79
83
  }> | Readonly<{
80
84
  kind: 'invalid';
81
- reason: string;
85
+ reason: PaletteAuthorityError;
82
86
  }>;
83
87
  export type SelectionSnapshot = Readonly<{
84
88
  siteStyleId: SiteStyleId;
@@ -90,7 +94,7 @@ export type SelectionSnapshot = Readonly<{
90
94
  footerLookId: FooterLookId | null;
91
95
  buttonPersonalityId: ButtonPersonalityId;
92
96
  palette: PaletteSelectionSnapshot;
93
- typographySelection: TypographySelectionSnapshot;
97
+ typography: ThemeTypography;
94
98
  }>;
95
99
  type StyleConfiguratorTargetKey = 'design:site-style';
96
100
  export type StyleConfiguratorHistoryEntry = Readonly<{
@@ -100,6 +104,22 @@ export type StyleConfiguratorHistoryEntry = Readonly<{
100
104
  next: SelectionSnapshot;
101
105
  }>;
102
106
  export type StyleConfiguratorStagedSession = EditorStagedSessionState<SelectionSnapshot, StyleConfiguratorHistoryEntry, StyleConfiguratorTargetKey>;
107
+ /**
108
+ * A collaborator selected a different active palette while this editor had an
109
+ * unsaved edit to the formerly active site palette. The base remains the
110
+ * server authority; the complete local draft remains available for an
111
+ * intentional retry or cancel.
112
+ */
113
+ export type StyleConfiguratorStalePaletteConflict = Readonly<{
114
+ kind: 'active-palette-changed';
115
+ originalPaletteId: SitePaletteId;
116
+ localDraft: Readonly<{
117
+ paletteId: SitePaletteId;
118
+ expectedVersion: SitePaletteVersion;
119
+ colors: PaletteColors;
120
+ mode: PaletteMode;
121
+ }>;
122
+ }>;
103
123
  export type StyleConfiguratorState = Readonly<{
104
124
  /**
105
125
  * Last persisted server snapshot. Updated on apply-success (and on
@@ -114,10 +134,7 @@ export type StyleConfiguratorState = Readonly<{
114
134
  saveStatus: StyleConfiguratorSaveStatus;
115
135
  warnings: ReadonlyArray<SelectionFallbackWarning>;
116
136
  notices: ReadonlyArray<StyleConfiguratorNotice>;
117
- paletteDrafts: Readonly<Partial<Record<CuratedPaletteId, Readonly<{
118
- colors: PaletteColors;
119
- mode: PaletteMode;
120
- }>>>>;
137
+ stalePaletteConflict: StyleConfiguratorStalePaletteConflict | null;
121
138
  expandedRow: StyleConfiguratorExpandedRow;
122
139
  stagedSession: StyleConfiguratorStagedSession;
123
140
  }>;
@@ -144,33 +161,39 @@ export declare function previewButtonPersonality(state: StyleConfiguratorState,
144
161
  export declare function previewHeaderLayout(state: StyleConfiguratorState, headerLayoutId: HeaderLayoutId): StyleConfiguratorState;
145
162
  export declare function previewHeaderStyle(state: StyleConfiguratorState, headerStyleId: HeaderStyleId): StyleConfiguratorState;
146
163
  export declare function previewFooterLook(state: StyleConfiguratorState, footerLookId: FooterLookId | null): StyleConfiguratorState;
147
- export declare function previewTypographyPreset(state: StyleConfiguratorState, typographyPresetId: TypographyPresetId): StyleConfiguratorState;
148
- export declare function setCustomTypography(state: StyleConfiguratorState, typography: ThemeTypography): StyleConfiguratorState;
164
+ export declare function previewTypography(state: StyleConfiguratorState, typography: ThemeTypography): StyleConfiguratorState;
149
165
  export declare function applyTypographyDraftPatch(state: StyleConfiguratorState, currentTypography: ThemeTypography, patch: TypographyDraftPatch): StyleConfiguratorState;
150
166
  export declare function resetTypographyToSaved(state: StyleConfiguratorState): StyleConfiguratorState;
151
- export declare function previewCuratedPalette(state: StyleConfiguratorState, palette: Readonly<{
152
- paletteId: CuratedPaletteId;
167
+ export declare function previewCuratedPalette(state: StyleConfiguratorState, valueKey: KnownCuratedPaletteValueKey): StyleConfiguratorState;
168
+ export declare function previewSitePalette(state: StyleConfiguratorState, palette: Readonly<{
169
+ paletteId: SitePaletteId;
153
170
  colors: PaletteColors;
154
171
  mode: PaletteMode;
172
+ version: SitePaletteVersion;
155
173
  }>): StyleConfiguratorState;
174
+ /** Starts a manual palette from the active complete palette, never sparse overrides. */
175
+ export declare function createPalette(state: StyleConfiguratorState): StyleConfiguratorState;
156
176
  export declare function setPaletteColors(state: StyleConfiguratorState, colors: PaletteColors): StyleConfiguratorState;
157
177
  /**
158
178
  * Records the post-compile resolved selection + any fallback warnings.
159
179
  * Used after `compileSiteThemeFromSelections` runs against a new site style:
160
180
  * the resolver may have auto-picked a different personality if the user's
161
181
  * previous selection is not offered for the new style, or a different palette
162
- * if the persisted palette ID is no longer known.
182
+ * if the persisted palette value key is no longer known.
163
183
  *
164
184
  */
165
185
  export declare function applyResolvedSelections(state: StyleConfiguratorState, input: Readonly<{
166
- resolved: Pick<SelectionSnapshot, 'buttonPersonalityId' | 'headerLayoutId' | 'headerStyleId' | 'headerLookId'> & TypographySelectionFlatFields;
167
- typographySelection?: TypographySelectionSnapshot;
186
+ resolved: Pick<SelectionSnapshot, 'buttonPersonalityId' | 'headerLayoutId' | 'headerStyleId' | 'headerLookId' | 'typography'>;
168
187
  warnings: ReadonlyArray<SelectionFallbackWarning>;
169
188
  }>): StyleConfiguratorState;
170
189
  export declare function cancelPreview(state: StyleConfiguratorState): StyleConfiguratorState;
171
190
  export declare function markApplySaving(state: StyleConfiguratorState): StyleConfiguratorState;
172
191
  export declare function markApplySaved(state: StyleConfiguratorState, persisted: SelectionSnapshot): StyleConfiguratorState;
173
192
  export declare function markApplyFailed(state: StyleConfiguratorState, message: string, failureKind?: 'retryable' | 'stale'): StyleConfiguratorState;
193
+ /** Advances a stale site's CAS token only for the user's explicit retry. */
194
+ export declare function prepareStalePaletteRetry(state: StyleConfiguratorState, input?: Readonly<{
195
+ sitePalettes: readonly SitePalette[];
196
+ }>): StyleConfiguratorState;
174
197
  export declare function toggleRow(state: StyleConfiguratorState, row: StyleConfiguratorExpandedRow): StyleConfiguratorState;
175
198
  export declare function dismissWarnings(state: StyleConfiguratorState): StyleConfiguratorState;
176
199
  export declare function dismissNotices(state: StyleConfiguratorState): StyleConfiguratorState;
@@ -180,16 +203,31 @@ export declare function dismissNotices(state: StyleConfiguratorState): StyleConf
180
203
  * changes the persisted selection out-of-band.
181
204
  */
182
205
  export declare function syncStyleConfiguratorState(state: StyleConfiguratorState, base: SelectionSnapshot): StyleConfiguratorState;
206
+ /** Reconciles typed palette-library authority with the editor's saved base. */
207
+ export declare function reconcilePaletteLibraryActive(state: StyleConfiguratorState, active: PaletteLibraryAuthority, sitePalettes: readonly SitePalette[]): StyleConfiguratorState;
208
+ /**
209
+ * A palette-library response only refreshes palette authority. Unlike a full
210
+ * server snapshot, it must never discard the user's staged site-style work.
211
+ * Site drafts keep their complete local colours/mode and rebase their expected
212
+ * version when the same palette was changed elsewhere.
213
+ */
214
+ export declare function rebasePaletteLibraryAuthority(state: StyleConfiguratorState, committedPalette: ResolvedPaletteSelection): StyleConfiguratorState;
183
215
  export declare function selectionSnapshotsEqual(a: SelectionSnapshot, b: SelectionSnapshot): boolean;
184
- export declare function typographySelectionSnapshotFromFlat(input: Readonly<{
185
- typographyPresetId?: TypographyPresetId | null;
186
- typographyBodyFontOverride?: string | null;
187
- typographyHeadingFontOverride?: string | null;
188
- theme?: Theme | null;
189
- }>): TypographySelectionSnapshot;
190
- export declare function typographySelectionFlatFields(selection: TypographySelectionSnapshot): TypographySelectionFlatFields;
191
- export declare function customTypographyForSelection(selection: TypographySelectionSnapshot): ThemeTypography | null;
192
- export declare function typographySelectionsEqual(a: TypographySelectionSnapshot, b: TypographySelectionSnapshot): boolean;
193
- export declare function paletteSelectionSnapshotFromRuntime(runtime: RuntimePaletteState | null | undefined): PaletteSelectionSnapshot;
216
+ type ModernRuntimePaletteState = Extract<RuntimePaletteState, Readonly<{
217
+ authority: 'curated';
218
+ }>> | Extract<RuntimePaletteState, Readonly<{
219
+ authority: 'site';
220
+ }>> | Extract<RuntimePaletteState, Readonly<{
221
+ kind: 'invalid';
222
+ }>>;
223
+ export declare function paletteSelectionSnapshotFromRuntime(runtime: ModernRuntimePaletteState): PaletteSelectionSnapshot;
224
+ export declare function paletteSelectionSnapshotFromComplete(input: Readonly<{
225
+ selection: PaletteSelection;
226
+ colors: PaletteColors;
227
+ mode: PaletteMode;
228
+ version?: SitePaletteVersion;
229
+ }>): PaletteSelectionSnapshot;
194
230
  export declare function paletteSelectionSnapshotsEqual(left: PaletteSelectionSnapshot, right: PaletteSelectionSnapshot): boolean;
231
+ export declare function palettePreviewProjection(palette: PaletteSelectionSnapshot): PalettePreviewProjection;
232
+ export declare function committedPaletteForSnapshot(palette: PaletteSelectionSnapshot): ResolvedPaletteSelection | null;
195
233
  export {};