@riverbankcms/sdk 0.79.0 → 0.81.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 (327) hide show
  1. package/dist/PreviewEditorSidebar-RDCMEXIJ.mjs +3163 -0
  2. package/dist/{PreviewEditorUI-27KJVEET.mjs → PreviewEditorUI-NYGQ6K7B.mjs} +194 -30
  3. package/dist/SdkPreviewModeRuntime-AKCSCZEC.mjs +8 -0
  4. package/dist/_dts/ai/src/contracts/proposals.d.ts +20 -0
  5. package/dist/_dts/api/src/contentRuntime.d.ts +12 -0
  6. package/dist/_dts/api/src/contentTypes.d.ts +6 -0
  7. package/dist/_dts/api/src/endpoints.d.ts +24 -0
  8. package/dist/_dts/api/src/index.d.ts +3 -3
  9. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +53 -0
  10. package/dist/_dts/api/src/siteInfrastructure.d.ts +124 -0
  11. package/dist/_dts/api/src/siteOnboarding.d.ts +13 -0
  12. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +10 -1
  13. package/dist/_dts/block-form/src/backend/store-backend.d.ts +3 -1
  14. package/dist/_dts/block-form/src/backend/types.d.ts +3 -3
  15. package/dist/_dts/block-form/src/client/index.d.ts +2 -0
  16. package/dist/_dts/block-form/src/index.d.ts +2 -0
  17. package/dist/_dts/block-form/src/utils/evaluateVisibility.d.ts +2 -1
  18. package/dist/_dts/blocks/src/PageRenderer.d.ts +3 -0
  19. package/dist/_dts/blocks/src/client/header.d.ts +1 -1
  20. package/dist/_dts/blocks/src/client.d.ts +12 -12
  21. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +20 -28
  22. package/dist/_dts/blocks/src/index.d.ts +7 -5
  23. package/dist/_dts/blocks/src/primitives/content/components/Text.d.ts +1 -1
  24. package/dist/_dts/blocks/src/primitives/content/primitives.d.ts +1 -0
  25. package/dist/_dts/blocks/src/server.d.ts +1 -1
  26. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +3 -2
  27. package/dist/_dts/blocks/src/system/blocks/events/event-listing.d.ts +2 -2
  28. package/dist/_dts/blocks/src/system/blocks/events/event-spotlight.d.ts +2 -1
  29. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +135 -0
  30. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +9 -1
  31. package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +2 -0
  32. package/dist/_dts/blocks/src/system/blocks/form.d.ts +20 -1
  33. package/dist/_dts/blocks/src/system/blocks/hero.d.ts +2 -0
  34. package/dist/_dts/blocks/src/system/blocks/offerings-preview/index.d.ts +19 -0
  35. package/dist/_dts/blocks/src/system/blocks/offerings-preview/model.d.ts +134 -0
  36. package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +7 -1
  37. package/dist/_dts/blocks/src/system/componentFactory.d.ts +1 -0
  38. package/dist/_dts/blocks/src/system/constants/background.d.ts +1 -1
  39. package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
  40. package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +34 -15
  41. package/dist/_dts/blocks/src/system/data/index.d.ts +2 -0
  42. package/dist/_dts/blocks/src/system/data/linkedContentEntries.d.ts +64 -0
  43. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  44. package/dist/_dts/blocks/src/system/designCapabilities.d.ts +2 -2
  45. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +10 -3
  46. package/dist/_dts/blocks/src/system/fragments/library/testimonialsCarousel.d.ts +5 -0
  47. package/dist/_dts/blocks/src/system/media/slotContracts.d.ts +2 -0
  48. package/dist/_dts/blocks/src/system/node/fragments/headingDecoration.d.ts +1 -4
  49. package/dist/_dts/blocks/src/system/node/types.d.ts +8 -1
  50. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +2 -2
  51. package/dist/_dts/blocks/src/system/registry.d.ts +1 -0
  52. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +51 -57
  53. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +24 -27
  54. package/dist/_dts/blocks/src/system/runtime/header/enhanceHeaderSection.d.ts +10 -2
  55. package/dist/_dts/blocks/src/system/runtime/headingDecoration.d.ts +21 -0
  56. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.d.ts +45 -14
  57. package/dist/_dts/blocks/src/system/runtime/hooks/useEventFilters.d.ts +2 -9
  58. package/dist/_dts/blocks/src/system/runtime/hooks/useEventPagination.d.ts +1 -10
  59. package/dist/_dts/blocks/src/system/runtime/nodes/basic.d.ts +1 -0
  60. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +21 -16
  61. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +3 -2
  62. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +21 -16
  63. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +22 -33
  64. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.server.d.ts +2 -2
  65. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventSpotlight.d.ts +2 -2
  66. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +2 -2
  67. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventDetailModal.d.ts +2 -2
  68. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventModals.d.ts +2 -2
  69. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventPaginatedListView.client.d.ts +2 -3
  70. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekAgendaView.d.ts +3 -3
  71. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/listOptions.d.ts +50 -0
  72. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +2 -1
  73. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +2 -2
  74. package/dist/_dts/blocks/src/system/runtime/nodes/media.d.ts +29 -14
  75. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview.d.ts +21 -0
  76. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +7 -0
  77. package/dist/_dts/blocks/src/system/transforms/registry/_utils/sectionForegroundStyles.d.ts +2 -0
  78. package/dist/_dts/blocks/src/system/transforms/registry/boxStyles.d.ts +7 -2
  79. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +9 -0
  80. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +14 -1
  81. package/dist/_dts/calendar/src/grid.d.ts +27 -0
  82. package/dist/_dts/calendar/src/index.d.ts +2 -2
  83. package/dist/_dts/content-editor/src/controller/useAutosaveTriggers.d.ts +3 -1
  84. package/dist/_dts/content-editor/src/editorTransactionState.d.ts +1 -0
  85. package/dist/_dts/content-editor/src/hooks/autosaveScopePlanning.d.ts +26 -0
  86. package/dist/_dts/content-editor/src/hooks/publishability.d.ts +1 -0
  87. package/dist/_dts/content-editor/src/hooks/useLinkedEntryAutosave.d.ts +23 -0
  88. package/dist/_dts/content-editor/src/hooks/useReactiveToolbar.d.ts +1 -1
  89. package/dist/_dts/content-editor/src/hooks/useSimpleAutosave.d.ts +2 -2
  90. package/dist/_dts/content-editor/src/index.d.ts +3 -1
  91. package/dist/_dts/content-editor/src/lib/json.d.ts +2 -0
  92. package/dist/_dts/content-editor/src/linkedEntries/domain.d.ts +8 -0
  93. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +58 -0
  94. package/dist/_dts/content-editor/src/ui/editorTransactionState.d.ts +93 -0
  95. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +60 -3
  96. package/dist/_dts/content-editor/src/ui/stores/autosaveStore.d.ts +2 -0
  97. package/dist/_dts/content-editor/src/ui/stores/types.d.ts +1 -1
  98. package/dist/_dts/content-model/src/content-types/builtins.d.ts +43 -0
  99. package/dist/_dts/content-model/src/metadataConfig.d.ts +87 -47
  100. package/dist/_dts/core/src/branded.d.ts +5 -0
  101. package/dist/_dts/core/src/index.d.ts +1 -0
  102. package/dist/_dts/core/src/stable-json.d.ts +1 -0
  103. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +9 -3
  104. package/dist/_dts/editor/src/EditorProvider.d.ts +26 -0
  105. package/dist/_dts/editor/src/chrome/EditorChrome.d.ts +26 -0
  106. package/dist/_dts/editor/src/chrome/EditorStatusBar.d.ts +45 -0
  107. package/dist/_dts/editor/src/chrome/statusBarPresentation.d.ts +25 -0
  108. package/dist/_dts/editor/src/components/EditingToggle.d.ts +9 -0
  109. package/dist/_dts/editor/src/hooks/useEditableElement.d.ts +18 -0
  110. package/dist/_dts/editor/src/index.d.ts +29 -0
  111. package/dist/_dts/editor/src/inline/InlineTextEditor.d.ts +1 -0
  112. package/dist/_dts/editor/src/lib/utils.d.ts +1 -0
  113. package/dist/_dts/editor/src/primitives/EditorPrimitivesProvider.d.ts +20 -0
  114. package/dist/_dts/editor/src/primitives/InlineFieldContext.d.ts +11 -0
  115. package/dist/_dts/editor/src/primitives/SaveContext.d.ts +12 -0
  116. package/dist/_dts/editor/src/primitives/helpers.d.ts +1 -0
  117. package/dist/_dts/editor/src/primitives/rich-text/RichTextEditorSurface.d.ts +26 -0
  118. package/dist/_dts/editor/src/primitives/rich-text/RichTextToolbar.d.ts +16 -0
  119. package/dist/_dts/editor/src/primitives/rich-text/config.d.ts +23 -0
  120. package/dist/_dts/editor/src/primitives/rich-text/extensions/RichTextImage.d.ts +2 -0
  121. package/dist/_dts/editor/src/primitives/rich-text/extensions/RichTextLink.d.ts +1 -0
  122. package/dist/_dts/editor/src/primitives/rich-text/imageActions.d.ts +22 -0
  123. package/dist/_dts/editor/src/primitives/rich-text/sanitize.d.ts +23 -0
  124. package/dist/_dts/editor/src/primitives/rich-text/toolbar/BlockTypeDropdown.d.ts +6 -0
  125. package/dist/_dts/editor/src/primitives/rich-text/toolbar/LinkPopover.d.ts +10 -0
  126. package/dist/_dts/editor/src/primitives/rich-text/toolbar/ToolbarIconButton.d.ts +11 -0
  127. package/dist/_dts/editor/src/primitives/rich-text/toolbar/linkPopoverUtils.d.ts +58 -0
  128. package/dist/_dts/editor/src/primitives/rich-text/useRichTextEditor.d.ts +19 -0
  129. package/dist/_dts/editor/src/primitives/rich-text/utils.d.ts +20 -0
  130. package/dist/_dts/editor/src/utils/optimisticTokens.d.ts +27 -0
  131. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +2 -2
  132. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +5 -9
  133. package/dist/_dts/editor-blocks/src/block-editor/BlockCardBody.d.ts +2 -6
  134. package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +6 -10
  135. package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +2 -6
  136. package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +6 -4
  137. package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +4 -8
  138. package/dist/_dts/editor-blocks/src/block-editor/actionPresentation.d.ts +15 -0
  139. package/dist/_dts/editor-blocks/src/block-editor/blockHeaderActionPlan.d.ts +49 -0
  140. package/dist/_dts/editor-blocks/src/index.d.ts +2 -0
  141. package/dist/_dts/editor-blocks/src/widgets/index.d.ts +1 -0
  142. package/dist/_dts/editor-blocks/src/widgets/rich-text/RichTextWidgetProvider.d.ts +1 -1
  143. package/dist/_dts/editor-blocks/src/widgets/rich-text/useImagePicker.d.ts +1 -1
  144. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/SiteOptionPickerField.d.ts +3 -0
  145. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/SiteOptionWidgetProvider.d.ts +14 -0
  146. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/index.d.ts +6 -0
  147. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +51 -0
  148. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/types.d.ts +20 -0
  149. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/utils.d.ts +5 -0
  150. package/dist/_dts/media-core/src/index.d.ts +1 -0
  151. package/dist/_dts/media-core/src/renderableMediaAsset.d.ts +18 -0
  152. package/dist/_dts/media-editor/src/MediaEditor.d.ts +4 -1
  153. package/dist/_dts/media-editor/src/MediaPickerDialog.d.ts +2 -1
  154. package/dist/_dts/media-editor/src/index.d.ts +1 -1
  155. package/dist/_dts/preview-next/src/client/blocks/BlockToolbar.d.ts +7 -2
  156. package/dist/_dts/preview-next/src/client/blocks/EditablePageRenderer.d.ts +5 -1
  157. package/dist/_dts/preview-next/src/client/blocks/blockCustomizePopoverRows.d.ts +25 -0
  158. package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +2 -1
  159. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +4 -30
  160. package/dist/_dts/preview-next/src/client/blocks/linkedEntryRenderOverlay.d.ts +11 -0
  161. package/dist/_dts/preview-next/src/client/blocks/previewCustomizeActions.d.ts +3 -9
  162. package/dist/_dts/preview-next/src/client/blocks/previewCustomizeControlPlan.d.ts +24 -0
  163. package/dist/_dts/preview-next/src/client/blocks/useBlockCustomizeControls.d.ts +35 -0
  164. package/dist/_dts/preview-next/src/client/index.d.ts +0 -1
  165. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +3 -1
  166. package/dist/_dts/preview-next/src/client/preview/LinkedEntryEditEventBridge.d.ts +1 -0
  167. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +5 -6
  168. package/dist/_dts/preview-next/src/client/preview/PageDesignEditorStateContext.d.ts +4 -1
  169. package/dist/_dts/preview-next/src/client/preview/PreviewBlockCustomizeSelectionContext.d.ts +20 -0
  170. package/dist/_dts/preview-next/src/client/preview/PreviewChromeLayer.d.ts +20 -0
  171. package/dist/_dts/preview-next/src/client/preview/PreviewDesignHistoryOrderContext.d.ts +13 -0
  172. package/dist/_dts/preview-next/src/client/preview/PreviewOpenEditorButton.d.ts +2 -0
  173. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +19 -19
  174. package/dist/_dts/preview-next/src/client/preview/PreviewSidebarSection.d.ts +13 -0
  175. package/dist/_dts/preview-next/src/client/preview/SelectedBlockCustomizePanel.d.ts +13 -0
  176. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +47 -4
  177. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +14 -1
  178. package/dist/_dts/preview-next/src/client/preview/linkedEntryEditEvents.d.ts +5 -0
  179. package/dist/_dts/preview-next/src/client/preview/previewChromePlacement.d.ts +46 -0
  180. package/dist/_dts/preview-next/src/client/preview/previewCustomizeControls.d.ts +68 -0
  181. package/dist/_dts/preview-next/src/client/preview/previewCustomizeEditorDraftPatch.d.ts +13 -0
  182. package/dist/_dts/preview-next/src/client/preview/previewCustomizeHistory.d.ts +8 -1
  183. package/dist/_dts/preview-next/src/client/preview/previewCustomizeRuntimePatch.d.ts +2 -0
  184. package/dist/_dts/preview-next/src/client/preview/previewCustomizeWorkflowState.d.ts +11 -9
  185. package/dist/_dts/preview-next/src/client/preview/previewDesignHistoryOrder.d.ts +18 -0
  186. package/dist/_dts/preview-next/src/client/preview/previewUndoDomains.d.ts +1 -1
  187. package/dist/_dts/preview-next/src/client/preview/siteChromeBrandPreferences.d.ts +41 -0
  188. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +101 -0
  189. package/dist/_dts/preview-next/src/client/preview/siteChromeSavePlan.d.ts +29 -0
  190. package/dist/_dts/preview-next/src/client/preview/siteStyleHistoryState.d.ts +55 -0
  191. package/dist/_dts/preview-next/src/client/preview/storeTypes.d.ts +4 -0
  192. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorApplyPayload.d.ts +1 -0
  193. package/dist/_dts/preview-next/src/client/widgets/widgetAdapters.d.ts +2 -1
  194. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +6 -3
  195. package/dist/_dts/preview-next/src/constants.d.ts +0 -1
  196. package/dist/_dts/sdk/src/cli/commands/webhooks.d.ts +44 -0
  197. package/dist/_dts/sdk/src/cli/config-loader.d.ts +3 -1
  198. package/dist/_dts/sdk/src/cli/content/reader.d.ts +5 -3
  199. package/dist/_dts/sdk/src/cli/site-commands/commandSurfaceDispatch.d.ts +1 -0
  200. package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +3 -1
  201. package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +1 -0
  202. package/dist/_dts/sdk/src/client/management/index.d.ts +1 -1
  203. package/dist/_dts/sdk/src/client/management/types.d.ts +56 -0
  204. package/dist/_dts/sdk/src/client/management/webhooks.d.ts +3 -0
  205. package/dist/_dts/sdk/src/config/types.d.ts +1 -1
  206. package/dist/_dts/sdk/src/config/validation.d.ts +3 -3
  207. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +34 -5
  208. package/dist/_dts/sdk/src/public-api/contracts.d.ts +10 -0
  209. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +42 -0
  210. package/dist/_dts/sdk/src/rendering/mediaAssets.d.ts +4 -0
  211. package/dist/_dts/sdk/src/types/block-kinds.d.ts +1 -1
  212. package/dist/_dts/sdk/src/version.d.ts +1 -1
  213. package/dist/_dts/theme-core/src/accordions/siteStyleDefaults.d.ts +220 -0
  214. package/dist/_dts/theme-core/src/accordions/types.d.ts +45 -2
  215. package/dist/_dts/theme-core/src/blockOverrides.d.ts +8 -0
  216. package/dist/_dts/theme-core/src/blocks/types.d.ts +1 -1
  217. package/dist/_dts/theme-core/src/blocks/vars/testimonials.d.ts +4 -1
  218. package/dist/_dts/theme-core/src/buttons/constants.d.ts +26 -1
  219. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
  220. package/dist/_dts/theme-core/src/buttons/personalities/joy-stamp.d.ts +22 -0
  221. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +2 -1
  222. package/dist/_dts/theme-core/src/buttons/types.d.ts +9 -0
  223. package/dist/_dts/theme-core/src/cards/core.d.ts +20 -0
  224. package/dist/_dts/theme-core/src/cards/generateDefaultCardSystem.d.ts +6 -3
  225. package/dist/_dts/theme-core/src/cards/siteStyleDefaults.d.ts +149 -0
  226. package/dist/_dts/theme-core/src/cards/types.d.ts +177 -0
  227. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  228. package/dist/_dts/theme-core/src/interactive/types.d.ts +10 -0
  229. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +180 -21
  230. package/dist/_dts/theme-core/src/palette/variants/index.d.ts +30 -0
  231. package/dist/_dts/theme-core/src/palette/variants/soft-natural.d.ts +16 -0
  232. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +1 -1
  233. package/dist/_dts/theme-core/src/palette/variants/warm-dark.d.ts +27 -0
  234. package/dist/_dts/theme-core/src/schema.d.ts +486 -55
  235. package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +4 -1
  236. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +172 -47
  237. package/dist/_dts/theme-core/src/site-styles/appearancePresetResolution.d.ts +6 -2
  238. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +2 -3
  239. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +172 -47
  240. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +140 -2
  241. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +18 -2
  242. package/dist/_dts/theme-core/src/site-styles/footerLooks.d.ts +20 -1
  243. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +10 -2
  244. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +291 -6
  245. package/dist/_dts/theme-core/src/site-styles/index.d.ts +3 -0
  246. package/dist/_dts/theme-core/src/site-styles/logoBranding.d.ts +193 -0
  247. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +3 -23
  248. package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +276 -4
  249. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +2 -8
  250. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +2 -0
  251. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +43 -10
  252. package/dist/_dts/theme-core/src/site-styles/sectionTransitions.d.ts +508 -0
  253. package/dist/_dts/theme-core/src/site-styles/siteStyleThemeCompiler.d.ts +11 -0
  254. package/dist/_dts/theme-core/src/site-styles/sourceCatalogs.d.ts +10 -10
  255. package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +1 -1
  256. package/dist/_dts/theme-core/src/site-styles/testimonialQuotePresets.d.ts +15 -0
  257. package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +1 -1
  258. package/dist/_dts/theme-core/src/site-styles/types.d.ts +28 -32
  259. package/dist/_dts/theme-core/src/site-styles/typographyPresets.d.ts +16 -1
  260. package/dist/{chunk-4HCW7FHJ.mjs → chunk-3PTVPAT4.mjs} +1984 -1142
  261. package/dist/{PreviewEditorSidebar-56NMJMIK.mjs → chunk-3QWQ2MUQ.mjs} +1050 -2609
  262. package/dist/{chunk-GP555I66.mjs → chunk-3VT7LZY2.mjs} +413 -157
  263. package/dist/{chunk-A3HHFKVT.mjs → chunk-4T5JIPWY.mjs} +1 -1
  264. package/dist/{chunk-K2IIF34C.mjs → chunk-E3NZYEKF.mjs} +25 -7
  265. package/dist/{chunk-V47ZU33I.mjs → chunk-WUHKQBB6.mjs} +12062 -3211
  266. package/dist/cli/index.mjs +3395 -817
  267. package/dist/cli/init-docs/content/workflow-isr-revalidation.md +16 -4
  268. package/dist/client/{accordion-QLA7KBYO.mjs → accordion-SFIIZWNH.mjs} +2 -2
  269. package/dist/client/{bookingForm-PYZIPA5G.mjs → bookingForm-CFKZVWGA.mjs} +5 -5
  270. package/dist/client/bookings.mjs +1422 -345
  271. package/dist/client/{carousel-5EIULWBI.mjs → carousel-ELXWSBLA.mjs} +3 -3
  272. package/dist/client/{cart-DOP3FNI4.mjs → cart-6SSCPYY5.mjs} +6 -6
  273. package/dist/client/{checkout-BVMF6FBV.mjs → checkout-UFQ34HPV.mjs} +6 -6
  274. package/dist/client/{chunk-44K2U3QI.mjs → chunk-76JUETXQ.mjs} +139 -186
  275. package/dist/client/{chunk-AUJ5DBZJ.mjs → chunk-7BXX7WXH.mjs} +112 -28
  276. package/dist/client/{chunk-UDS3NTWA.mjs → chunk-G56BSZAM.mjs} +2 -2
  277. package/dist/client/{chunk-V6M5FCR5.mjs → chunk-IUEDYLFJ.mjs} +1 -1
  278. package/dist/client/{chunk-YLDYVRZL.mjs → chunk-NP47RHIX.mjs} +5 -5
  279. package/dist/client/{chunk-R5ESWNKX.mjs → chunk-NX6X3GRF.mjs} +419 -85
  280. package/dist/client/{chunk-CCNTDRCF.mjs → chunk-PA2LJH2M.mjs} +2 -2
  281. package/dist/client/{chunk-CE7IBGVW.mjs → chunk-RMWMT3ZD.mjs} +1 -1
  282. package/dist/client/{chunk-TYONZMST.mjs → chunk-TCJS3NY5.mjs} +1 -1
  283. package/dist/client/{chunk-GG4M2NP6.mjs → chunk-V6XI4M2Q.mjs} +1 -1
  284. package/dist/client/client.mjs +9077 -4410
  285. package/dist/client/{courseRegistration-E6EAA6NL.mjs → courseRegistration-HJIISAAG.mjs} +5 -5
  286. package/dist/client/{eventCalendar-HBG3HAK6.mjs → eventCalendar-F6YVUCZR.mjs} +7 -7
  287. package/dist/client/{eventCombined-6K5ZZWAK.mjs → eventCombined-B5DSTIOK.mjs} +7 -7
  288. package/dist/client/{eventDetails-Q75ICXLT.mjs → eventDetails-SEJDDHQC.mjs} +7 -7
  289. package/dist/client/{eventListing-27P5F7DZ.mjs → eventListing-TPMWIIBO.mjs} +7 -7
  290. package/dist/client/{eventRegistration-IQ7AMASR.mjs → eventRegistration-QU6W2PV6.mjs} +7 -7
  291. package/dist/client/{form-JRTD65FN.mjs → form-LVTYNTDE.mjs} +2 -2
  292. package/dist/client/{headerSection-7FPSSZHS.mjs → headerSection-SO3MFC4U.mjs} +110 -28
  293. package/dist/client/hooks.mjs +4695 -2260
  294. package/dist/client/{locationMap-7NGFNYBH.mjs → locationMap-5E5FLAKO.mjs} +2 -2
  295. package/dist/client/{newsletterForm-F3BADCI2.mjs → newsletterForm-GN32JEBQ.mjs} +2 -2
  296. package/dist/client/{productDetail-V3HP7ITJ.mjs → productDetail-Q346KSVR.mjs} +6 -6
  297. package/dist/client/{productList-L3EGJUF2.mjs → productList-DTDMQYGZ.mjs} +6 -6
  298. package/dist/client/rendering/client.mjs +5795 -3582
  299. package/dist/client/rendering/islands.mjs +32 -20
  300. package/dist/client/rendering.mjs +7988 -3317
  301. package/dist/client/{shop-DQUB5E2C.mjs → shop-OFUW7KPN.mjs} +6 -6
  302. package/dist/preview-next/before-render.mjs +24 -0
  303. package/dist/preview-next/client/runtime.mjs +5 -5
  304. package/dist/preview-next/constants.mjs +0 -2
  305. package/dist/preview-next/index.mjs +0 -2
  306. package/dist/preview-next/middleware.mjs +24 -0
  307. package/dist/{sdk-runtime-AF6KXJU4.mjs → sdk-runtime-2GIX6I7X.mjs} +6 -6
  308. package/dist/server/components.mjs +7384 -3089
  309. package/dist/server/config-validation.mjs +4747 -2418
  310. package/dist/server/config.mjs +4747 -2418
  311. package/dist/server/data.mjs +4695 -2260
  312. package/dist/server/index.mjs +26 -1
  313. package/dist/server/next.mjs +7430 -3039
  314. package/dist/server/page-converter.mjs +3985 -2070
  315. package/dist/server/prebuild.mjs +1 -1
  316. package/dist/server/rendering/server.mjs +7489 -3094
  317. package/dist/server/rendering.mjs +7491 -3096
  318. package/dist/server/routing.mjs +4965 -2386
  319. package/dist/server/server.mjs +4713 -2278
  320. package/dist/server/theme-bridge.mjs +2181 -383
  321. package/dist/server/theme.mjs +477 -222
  322. package/dist/styles/index.css +747 -71
  323. package/package.json +1 -1
  324. package/dist/SdkPreviewModeRuntime-H4BSP6E7.mjs +0 -8
  325. package/dist/_dts/editor-blocks/src/block-editor/actionControlMode.d.ts +0 -2
  326. package/dist/_dts/preview-next/src/client/preview/previewSurface.d.ts +0 -3
  327. package/dist/chunk-LCY32PXF.mjs +0 -1175
@@ -86,7 +86,7 @@ function ze() {
86
86
  /* @__PURE__ */ Te(P)
87
87
  );
88
88
  }
89
- function z18(e) {
89
+ function z19(e) {
90
90
  if (L) {
91
91
  if (/* @__PURE__ */ Te(P) !== null)
92
92
  throw Tt(), Je;
@@ -2115,12 +2115,12 @@ function ha(e, t) {
2115
2115
  var mt = we(Dr, 2);
2116
2116
  let Pr;
2117
2117
  var We = X(mt);
2118
- en(We), We.__change = ui, z18(mt);
2118
+ en(We), We.__change = ui, z19(mt);
2119
2119
  var Ut = we(mt, 2), wi = X(Ut);
2120
2120
  {
2121
2121
  var pi = (n) => {
2122
2122
  var u = na(), _ = Gr(u), y = X(_);
2123
- Ge(y, () => c(re).verified), z18(_);
2123
+ Ge(y, () => c(re).verified), z19(_);
2124
2124
  var T = we(_, 2);
2125
2125
  en(T), Pe(() => {
2126
2126
  se(T, "name", V()), jo(T, c(Le));
@@ -2129,10 +2129,10 @@ function ha(e, t) {
2129
2129
  {
2130
2130
  var _ = (T) => {
2131
2131
  var E = ia(), p = X(E);
2132
- Ge(p, () => c(re).verifying), z18(E), ne(T, E);
2132
+ Ge(p, () => c(re).verifying), z19(E), ne(T, E);
2133
2133
  }, y = (T) => {
2134
2134
  var E = oa(), p = X(E);
2135
- Ge(p, () => c(re).label), z18(E), Pe(() => se(E, "for", c(cr))), ne(T, E);
2135
+ Ge(p, () => c(re).label), z19(E), Pe(() => se(E, "for", c(cr))), ne(T, E);
2136
2136
  };
2137
2137
  $e(
2138
2138
  n,
@@ -2147,18 +2147,18 @@ function ha(e, t) {
2147
2147
  c(C) === b.VERIFIED ? n(pi) : n(bi, false);
2148
2148
  });
2149
2149
  }
2150
- z18(Ut);
2150
+ z19(Ut);
2151
2151
  var yi = we(Ut, 2);
2152
2152
  {
2153
2153
  var Ei = (n) => {
2154
2154
  var u = aa(), _ = X(u);
2155
- se(_, "href", sr), z18(u), Pe(() => se(_, "aria-label", c(re).ariaLinkLabel)), ne(n, u);
2155
+ se(_, "href", sr), z19(u), Pe(() => se(_, "aria-label", c(re).ariaLinkLabel)), ne(n, u);
2156
2156
  };
2157
2157
  $e(yi, (n) => {
2158
2158
  (N() !== true || c(Dt)) && n(Ei);
2159
2159
  });
2160
2160
  }
2161
- z18(Mt);
2161
+ z19(Mt);
2162
2162
  var Or = we(Mt, 2);
2163
2163
  {
2164
2164
  var xi = (n) => {
@@ -2166,16 +2166,16 @@ function ha(e, t) {
2166
2166
  {
2167
2167
  var y = (E) => {
2168
2168
  var p = la(), x = X(p);
2169
- Ge(x, () => c(re).expired), z18(p), Pe(() => se(p, "title", c(He))), ne(E, p);
2169
+ Ge(x, () => c(re).expired), z19(p), Pe(() => se(p, "title", c(He))), ne(E, p);
2170
2170
  }, T = (E) => {
2171
2171
  var p = sa(), x = X(p);
2172
- Ge(x, () => c(re).error), z18(p), Pe(() => se(p, "title", c(He))), ne(E, p);
2172
+ Ge(x, () => c(re).error), z19(p), Pe(() => se(p, "title", c(He))), ne(E, p);
2173
2173
  };
2174
2174
  $e(_, (E) => {
2175
2175
  c(C) === b.EXPIRED ? E(y) : E(T, false);
2176
2176
  });
2177
2177
  }
2178
- z18(u), ne(n, u);
2178
+ z19(u), ne(n, u);
2179
2179
  };
2180
2180
  $e(Or, (n) => {
2181
2181
  (c(He) || c(C) === b.EXPIRED) && n(xi);
@@ -2185,7 +2185,7 @@ function ha(e, t) {
2185
2185
  {
2186
2186
  var $i = (n) => {
2187
2187
  var u = ua(), _ = X(u), y = X(_);
2188
- Ge(y, () => c(re).footer), z18(_), z18(u), ne(n, u);
2188
+ Ge(y, () => c(re).footer), z19(_), z19(u), ne(n, u);
2189
2189
  };
2190
2190
  $e(Fr, (n) => {
2191
2191
  c(re).footer && (k() !== true || c(Dt)) && n($i);
@@ -2201,7 +2201,7 @@ function ha(e, t) {
2201
2201
  v() && n(Ci);
2202
2202
  });
2203
2203
  }
2204
- return z18(ot), nn(ot, (n) => D(B, n), () => c(B)), Pe(
2204
+ return z19(ot), nn(ot, (n) => D(B, n), () => c(B)), Pe(
2205
2205
  (n) => {
2206
2206
  se(ot, "data-state", c(C)), se(ot, "data-floating", v()), Pr = Fo(mt, 1, "altcha-checkbox", null, Pr, n), se(We, "id", c(cr)), We.required = r2() !== "onsubmit" && (!v() || r2() !== "off");
2207
2207
  },
@@ -3977,6 +3977,33 @@ function parseColorTokenParts(source) {
3977
3977
  return { kind: "token", token, opacityPercent };
3978
3978
  }
3979
3979
 
3980
+ // ../theme-core/src/utils/colorStyles.ts
3981
+ var COLOR_VAR_PREFIX = "--tb-";
3982
+ function parseToken(source) {
3983
+ const parts = parseColorTokenParts(source);
3984
+ if (parts.kind === "raw") {
3985
+ return { token: source, raw: parts.value };
3986
+ }
3987
+ if (parts.kind === "invalid") {
3988
+ return { token: source };
3989
+ }
3990
+ return {
3991
+ token: parts.token,
3992
+ alpha: parts.opacityPercent === null ? void 0 : parts.opacityPercent / 100
3993
+ };
3994
+ }
3995
+ function rgbColorValue(token) {
3996
+ const { token: baseToken, alpha, raw } = parseToken(token);
3997
+ if (raw) {
3998
+ return raw;
3999
+ }
4000
+ const cssVar = `${COLOR_VAR_PREFIX}${baseToken}`;
4001
+ if (alpha === void 0) {
4002
+ return `rgb(var(${cssVar}))`;
4003
+ }
4004
+ return `rgba(var(${cssVar}), ${alpha})`;
4005
+ }
4006
+
3980
4007
  // ../theme-core/src/buttons/types.ts
3981
4008
  import { z as z2 } from "zod";
3982
4009
 
@@ -4186,7 +4213,9 @@ var buttonBorderSchema = z2.object({
4186
4213
  var variantShadowSchema = z2.object({
4187
4214
  elevation: z2.enum(["none", "low", "medium", "high"]),
4188
4215
  softness: z2.enum(["crisp", "soft", "hard"]).nullable(),
4189
- position: z2.enum(["bottom", "bottom-right"]).default("bottom")
4216
+ position: z2.enum(["bottom", "bottom-right"]).default("bottom"),
4217
+ // Optional palette token for a coloured offset shadow; omit for neutral black.
4218
+ colorToken: themeColorTokenSchema.optional()
4190
4219
  });
4191
4220
  var variantEffectsSchema = z2.object({
4192
4221
  base: z2.array(effectApplicationSchema).optional(),
@@ -4735,6 +4764,65 @@ var inkStamp = defineButtonPersonality({
4735
4764
  }
4736
4765
  });
4737
4766
 
4767
+ // ../theme-core/src/buttons/personalities/joy-stamp.ts
4768
+ var joyStamp = defineButtonPersonality({
4769
+ id: "joy-stamp",
4770
+ name: "Joy Stamp",
4771
+ description: "Pill buttons with a hard, brand-coloured offset shadow that presses in on hover.",
4772
+ tags: { tone: "bold", energy: "vibrant", motion: "expressive", era: "organic" },
4773
+ buttonSystem: {
4774
+ global: {
4775
+ cornerStyle: "pill",
4776
+ shadow: "high",
4777
+ textTransform: "none",
4778
+ // Bold display type on the buttons: use the heading font (Bricolage) at
4779
+ // 700, matching the mockup's chunky button labels.
4780
+ typography: "heading",
4781
+ fontWeight: 700,
4782
+ borderWidth: 2,
4783
+ hoverTransform: "none",
4784
+ hoverColor: "none"
4785
+ },
4786
+ sizes: {
4787
+ sm: { padding: "0.625rem 1.25rem", fontSize: "text-sm" },
4788
+ md: { padding: "0.875rem 1.75rem", fontSize: "text-base" },
4789
+ lg: { padding: "1.125rem 2.25rem", fontSize: "text-lg" },
4790
+ xl: { padding: "1.25rem 2.75rem", fontSize: "text-xl" }
4791
+ },
4792
+ variants: [
4793
+ {
4794
+ id: "primary",
4795
+ name: "Primary",
4796
+ enabled: true,
4797
+ priority: 1,
4798
+ background: { type: "solid", colorToken: "primary" },
4799
+ textColorToken: "primaryForeground",
4800
+ borderRadius: "rounded-full",
4801
+ // Cream stamp shadow under the burnt-orange fill.
4802
+ shadow: { elevation: "high", softness: "hard", position: "bottom-right", colorToken: "text" },
4803
+ effects: {
4804
+ hover: [{ effectId: "press-down" }]
4805
+ }
4806
+ },
4807
+ {
4808
+ id: "secondary",
4809
+ name: "Secondary",
4810
+ enabled: true,
4811
+ priority: 2,
4812
+ background: { type: "transparent" },
4813
+ textColorToken: "text",
4814
+ borderRadius: "rounded-full",
4815
+ border: { widthClass: "border-2", colorToken: "text" },
4816
+ // Brown stamp shadow under the cream outline.
4817
+ shadow: { elevation: "high", softness: "hard", position: "bottom-right", colorToken: "secondary" },
4818
+ effects: {
4819
+ hover: [{ effectId: "press-down" }]
4820
+ }
4821
+ }
4822
+ ]
4823
+ }
4824
+ });
4825
+
4738
4826
  // ../theme-core/src/buttons/personalities/pebble.ts
4739
4827
  var pebble = defineButtonPersonality({
4740
4828
  id: "pebble",
@@ -5008,7 +5096,8 @@ var buttonPersonalities = [
5008
5096
  pebble,
5009
5097
  inkStamp,
5010
5098
  brushedWash,
5011
- showtimePill
5099
+ showtimePill,
5100
+ joyStamp
5012
5101
  ];
5013
5102
  var personalitiesById = new Map(
5014
5103
  buttonPersonalities.map((p) => [p.id, p])
@@ -5243,11 +5332,13 @@ var accordionIconSchema = z5.enum([
5243
5332
  // ⊕ becomes ⊖ (swap with fade)
5244
5333
  ]);
5245
5334
  var accordionSystemSchema = z5.object({
5246
- // Visual styling (solid color only - gradients can be added later if needed)
5335
+ // Visual styling (solid color only - gradients can be added later if needed).
5336
+ // null = no fill, so the accordion sits transparently on the section
5337
+ // surface (used by open, boxless "divided" looks).
5247
5338
  background: z5.object({
5248
5339
  type: z5.literal("solid"),
5249
5340
  colorToken: themeColorTokenSchema
5250
- }),
5341
+ }).nullable(),
5251
5342
  // Spacing (padding inside items)
5252
5343
  spacing: z5.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]),
5253
5344
  // Border radius (null = inherit from theme.corners)
@@ -5274,8 +5365,16 @@ var accordionSystemSchema = z5.object({
5274
5365
  // Trigger (question) styling
5275
5366
  trigger: z5.object({
5276
5367
  textColorToken: themeColorTokenSchema,
5277
- fontWeight: z5.enum(["regular", "medium", "semibold", "bold"]).nullable()
5368
+ fontWeight: z5.enum(["regular", "medium", "semibold", "bold"]).nullable(),
5278
5369
  // null = inherit from theme
5370
+ // Question typography. Defaults keep the historical body-font look; set
5371
+ // fontFamily 'heading' + a larger scale to give questions real presence.
5372
+ fontFamily: z5.enum(["body", "heading"]).optional(),
5373
+ // default 'body'
5374
+ fontScale: z5.enum(["body", "md", "lg"]).optional(),
5375
+ // default 'body'
5376
+ letterSpacing: z5.enum(["normal", "tight", "wide"]).optional(),
5377
+ textTransform: z5.enum(["none", "uppercase"]).optional()
5279
5378
  }),
5280
5379
  // Hover state styling
5281
5380
  hover: z5.object({
@@ -5283,6 +5382,17 @@ var accordionSystemSchema = z5.object({
5283
5382
  textColorToken: themeColorTokenSchema.optional(),
5284
5383
  borderColorToken: themeColorTokenSchema.optional()
5285
5384
  }),
5385
+ // Open-state emphasis: how an expanded item is visually rewarded. All
5386
+ // optional; omit for the historical "only the text recolors" behaviour.
5387
+ openState: z5.object({
5388
+ backgroundColorToken: themeColorTokenSchema.optional(),
5389
+ triggerColorToken: themeColorTokenSchema.optional(),
5390
+ accent: z5.object({
5391
+ edge: z5.enum(["left", "top", "bottom"]),
5392
+ colorToken: themeColorTokenSchema,
5393
+ thickness: z5.enum(["thin", "medium", "thick"])
5394
+ }).optional()
5395
+ }).optional(),
5286
5396
  // Content (answer) styling
5287
5397
  content: z5.object({
5288
5398
  textColorToken: themeColorTokenSchema
@@ -5290,6 +5400,9 @@ var accordionSystemSchema = z5.object({
5290
5400
  });
5291
5401
 
5292
5402
  // ../theme-core/src/site-styles/types.ts
5403
+ function defineExactCatalog() {
5404
+ return (entries) => entries;
5405
+ }
5293
5406
  function asAppearancePresetId(value) {
5294
5407
  return brandNonEmptyString(value, "AppearancePresetId");
5295
5408
  }
@@ -5347,14 +5460,8 @@ var visibleHeadingDecorationFamilyValues = [
5347
5460
  "organic-squiggle",
5348
5461
  "short-center-rule"
5349
5462
  ];
5350
- var visibleHeadingDecorationPlacementValues = [
5351
- "after-heading",
5352
- "between-heading-and-body",
5353
- "under-centered-heading"
5354
- ];
5355
5463
  var headingDecorationOverrideValues = [
5356
5464
  "site-default",
5357
- "on",
5358
5465
  "off"
5359
5466
  ];
5360
5467
  var headingDecorationColorTokenValues = [
@@ -5365,6 +5472,9 @@ var headingDecorationColorTokenValues = [
5365
5472
  "border",
5366
5473
  "muted"
5367
5474
  ];
5475
+ var noHeadingDecoration = {
5476
+ family: "none"
5477
+ };
5368
5478
  var accordionIconSetValues = [
5369
5479
  "plus",
5370
5480
  "chevron",
@@ -6046,6 +6156,77 @@ var logger = {
6046
6156
  import { z as z6 } from "zod";
6047
6157
  var tokenOrCssColorValueSchema = z6.string();
6048
6158
 
6159
+ // ../theme-core/src/cards/types.ts
6160
+ import { z as z7 } from "zod";
6161
+ var cardVariantRoleValues = ["default", "alternative"];
6162
+ var boxlessCardVariantValue = "none";
6163
+ var cardSpacingSchema = z7.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
6164
+ var gradientDirectionSchema2 = z7.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
6165
+ var cardVariantRoleSchema = z7.enum(cardVariantRoleValues);
6166
+ var boxStylesCardVariantSchema = z7.enum([
6167
+ ...cardVariantRoleValues,
6168
+ boxlessCardVariantValue
6169
+ ]);
6170
+ var cardBackgroundSchema = z7.discriminatedUnion("type", [
6171
+ z7.object({ type: z7.literal("solid"), colorToken: themeColorTokenSchema }),
6172
+ z7.object({
6173
+ type: z7.literal("gradient"),
6174
+ fromToken: themeColorTokenSchema,
6175
+ toToken: themeColorTokenSchema,
6176
+ direction: gradientDirectionSchema2
6177
+ }),
6178
+ z7.object({ type: z7.literal("transparent") })
6179
+ ]);
6180
+ var cardBorderSchema = z7.object({
6181
+ widthClass: z7.string(),
6182
+ colorToken: themeColorTokenSchema
6183
+ });
6184
+ var cardCornerValueSchema = z7.enum([
6185
+ "square",
6186
+ "soft",
6187
+ "rounded",
6188
+ "pill",
6189
+ "expressive"
6190
+ ]);
6191
+ var cardAccentEdgeSchema = z7.object({
6192
+ edge: z7.enum(["left", "top", "right", "bottom"]),
6193
+ colorToken: themeColorTokenSchema,
6194
+ width: z7.enum(["thin", "medium", "thick", "heavy"])
6195
+ });
6196
+ var cardCornerRadiiSchema = z7.object({
6197
+ topLeft: cardCornerValueSchema.optional(),
6198
+ topRight: cardCornerValueSchema.optional(),
6199
+ bottomLeft: cardCornerValueSchema.optional(),
6200
+ bottomRight: cardCornerValueSchema.optional()
6201
+ });
6202
+ var cardVariantSchema = z7.object({
6203
+ id: z7.string(),
6204
+ name: z7.string().min(1).max(20),
6205
+ enabled: z7.boolean(),
6206
+ priority: z7.union([z7.literal(1), z7.literal(2), z7.literal(3)]),
6207
+ // Appearance (token-based)
6208
+ background: cardBackgroundSchema,
6209
+ spacing: cardSpacingSchema,
6210
+ // Optional foreground (card text) color, for cards on a strong fill.
6211
+ foregroundToken: themeColorTokenSchema.optional(),
6212
+ // Optional overrides (uses theme defaults if not specified)
6213
+ shadow: z7.object({
6214
+ elevation: z7.enum(["none", "low", "medium", "high"]),
6215
+ softness: z7.enum(["crisp", "soft", "hard"]).nullable(),
6216
+ position: z7.enum(["bottom", "bottom-right"]).default("bottom")
6217
+ }).optional(),
6218
+ corners: z7.enum(["square", "soft", "rounded", "pill"]).optional(),
6219
+ // Per-corner radius override; wins over `corners` when set.
6220
+ cornerRadii: cardCornerRadiiSchema.optional(),
6221
+ // Border (optional)
6222
+ border: cardBorderSchema.optional(),
6223
+ // Single accent edge; replaces `border` when set.
6224
+ accentEdge: cardAccentEdgeSchema.optional()
6225
+ });
6226
+ var cardSystemSchema = z7.object({
6227
+ variants: z7.array(cardVariantSchema).min(1).max(3)
6228
+ });
6229
+
6049
6230
  // ../theme-core/src/site-styles/headerCtaVariants.ts
6050
6231
  function hasButtonVariant(theme, variantId) {
6051
6232
  return theme.buttons?.variants.some((variant) => variant.enabled && variant.id === variantId) ?? false;
@@ -6071,94 +6252,54 @@ function resolveHeaderCtaVariant(theme, treatment) {
6071
6252
  }
6072
6253
 
6073
6254
  // ../theme-core/src/palette/variants/types.ts
6074
- import { z as z17 } from "zod";
6255
+ import { z as z18 } from "zod";
6075
6256
 
6076
6257
  // ../theme-core/src/schema.ts
6077
- import { z as z16 } from "zod";
6258
+ import { z as z17 } from "zod";
6078
6259
 
6079
6260
  // ../theme-core/src/lib/media.ts
6080
- import z7 from "zod";
6081
- var hotspotSchema = z7.object({
6082
- x: z7.number().min(0).max(1),
6083
- y: z7.number().min(0).max(1),
6084
- radius: z7.number().optional()
6261
+ import z8 from "zod";
6262
+ var hotspotSchema = z8.object({
6263
+ x: z8.number().min(0).max(1),
6264
+ y: z8.number().min(0).max(1),
6265
+ radius: z8.number().optional()
6085
6266
  });
6086
- var rotationSchema = z7.union([z7.literal(0), z7.literal(90), z7.literal(180), z7.literal(270)]);
6087
- var rectSchema = z7.tuple([z7.number(), z7.number(), z7.number(), z7.number()]);
6088
- var aspectCropSchema = z7.object({
6089
- aspect: z7.preprocess((value) => value == null ? void 0 : value, z7.string().optional()),
6090
- rect: z7.preprocess((value) => value == null ? void 0 : value, rectSchema.optional()),
6091
- hotspot: z7.preprocess((value) => value == null ? void 0 : value, hotspotSchema.optional()),
6092
- rotation: z7.preprocess((value) => value == null ? void 0 : value, rotationSchema.optional())
6267
+ var rotationSchema = z8.union([z8.literal(0), z8.literal(90), z8.literal(180), z8.literal(270)]);
6268
+ var rectSchema = z8.tuple([z8.number(), z8.number(), z8.number(), z8.number()]);
6269
+ var aspectCropSchema = z8.object({
6270
+ aspect: z8.preprocess((value) => value == null ? void 0 : value, z8.string().optional()),
6271
+ rect: z8.preprocess((value) => value == null ? void 0 : value, rectSchema.optional()),
6272
+ hotspot: z8.preprocess((value) => value == null ? void 0 : value, hotspotSchema.optional()),
6273
+ rotation: z8.preprocess((value) => value == null ? void 0 : value, rotationSchema.optional())
6093
6274
  });
6094
- var transformSchema = z7.object({
6095
- aspectCrops: z7.preprocess((value) => {
6275
+ var transformSchema = z8.object({
6276
+ aspectCrops: z8.preprocess((value) => {
6096
6277
  if (!value || typeof value !== "object" || Array.isArray(value)) {
6097
6278
  return void 0;
6098
6279
  }
6099
6280
  return value;
6100
- }, z7.record(z7.string(), aspectCropSchema.catch({}))).optional(),
6281
+ }, z8.record(z8.string(), aspectCropSchema.catch({}))).optional(),
6101
6282
  rect: rectSchema.optional(),
6102
6283
  hotspot: hotspotSchema.optional(),
6103
6284
  rotation: rotationSchema.optional()
6104
6285
  });
6105
- var mediaSchema = z7.object({
6106
- type: z7.enum(["image", "video", "audio", "document", "spreadsheet", "archive"]),
6107
- purpose: z7.string().optional(),
6108
- placeholder: z7.boolean().default(true).optional(),
6109
- assetId: z7.string().optional(),
6110
- identifier: z7.string().optional(),
6111
- src: z7.string().optional(),
6112
- alt: z7.string().optional(),
6113
- filename: z7.string().optional(),
6114
- mimeType: z7.string().optional(),
6115
- width: z7.number().optional(),
6116
- height: z7.number().optional(),
6117
- storageBucket: z7.string().optional(),
6118
- storagePath: z7.string().optional(),
6286
+ var mediaSchema = z8.object({
6287
+ type: z8.enum(["image", "video", "audio", "document", "spreadsheet", "archive"]),
6288
+ purpose: z8.string().optional(),
6289
+ placeholder: z8.boolean().default(true).optional(),
6290
+ assetId: z8.string().optional(),
6291
+ identifier: z8.string().optional(),
6292
+ src: z8.string().optional(),
6293
+ alt: z8.string().optional(),
6294
+ filename: z8.string().optional(),
6295
+ mimeType: z8.string().optional(),
6296
+ width: z8.number().optional(),
6297
+ height: z8.number().optional(),
6298
+ storageBucket: z8.string().optional(),
6299
+ storagePath: z8.string().optional(),
6119
6300
  transform: transformSchema.optional()
6120
6301
  });
6121
6302
 
6122
- // ../theme-core/src/cards/types.ts
6123
- import { z as z8 } from "zod";
6124
- var cardSpacingSchema = z8.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
6125
- var gradientDirectionSchema2 = z8.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
6126
- var cardBackgroundSchema = z8.discriminatedUnion("type", [
6127
- z8.object({ type: z8.literal("solid"), colorToken: themeColorTokenSchema }),
6128
- z8.object({
6129
- type: z8.literal("gradient"),
6130
- fromToken: themeColorTokenSchema,
6131
- toToken: themeColorTokenSchema,
6132
- direction: gradientDirectionSchema2
6133
- }),
6134
- z8.object({ type: z8.literal("transparent") })
6135
- ]);
6136
- var cardBorderSchema = z8.object({
6137
- widthClass: z8.string(),
6138
- colorToken: themeColorTokenSchema
6139
- });
6140
- var cardVariantSchema = z8.object({
6141
- id: z8.string(),
6142
- name: z8.string().min(1).max(20),
6143
- enabled: z8.boolean(),
6144
- priority: z8.union([z8.literal(1), z8.literal(2), z8.literal(3)]),
6145
- // Appearance (token-based)
6146
- background: cardBackgroundSchema,
6147
- spacing: cardSpacingSchema,
6148
- // Optional overrides (uses theme defaults if not specified)
6149
- shadow: z8.object({
6150
- elevation: z8.enum(["none", "low", "medium", "high"]),
6151
- softness: z8.enum(["crisp", "soft", "hard"]).nullable(),
6152
- position: z8.enum(["bottom", "bottom-right"]).default("bottom")
6153
- }).optional(),
6154
- corners: z8.enum(["square", "soft", "rounded", "pill"]).optional(),
6155
- // Border (optional)
6156
- border: cardBorderSchema.optional()
6157
- });
6158
- var cardSystemSchema = z8.object({
6159
- variants: z8.array(cardVariantSchema).min(1).max(3)
6160
- });
6161
-
6162
6303
  // ../theme-core/src/inputs/types.ts
6163
6304
  import { z as z9 } from "zod";
6164
6305
  var inputSystemSchema = z9.object({
@@ -6475,75 +6616,186 @@ var componentShadowSchema = z15.object({
6475
6616
  elevation: z15.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("sm")
6476
6617
  });
6477
6618
 
6619
+ // ../theme-core/src/site-styles/logoBranding.ts
6620
+ import { z as z16 } from "zod";
6621
+ var logoTextConfidenceValues = ["low", "medium", "high"];
6622
+ var logoAssetShapeValues = [
6623
+ "none",
6624
+ "horizontal",
6625
+ "square",
6626
+ "portrait",
6627
+ "tall"
6628
+ ];
6629
+ var logoKindValues = [
6630
+ "mark",
6631
+ "wordmark",
6632
+ "lockup",
6633
+ "badge",
6634
+ "stacked-wordmark",
6635
+ "unknown"
6636
+ ];
6637
+ var logoDensityValues = ["simple", "detailed", "unknown"];
6638
+ var logoContainsTextSchema = z16.discriminatedUnion("kind", [
6639
+ z16.object({
6640
+ kind: z16.literal("contains-text"),
6641
+ confidence: z16.enum(logoTextConfidenceValues),
6642
+ text: z16.string().trim().min(1).max(200).optional()
6643
+ }),
6644
+ z16.object({
6645
+ kind: z16.literal("no-text"),
6646
+ confidence: z16.enum(logoTextConfidenceValues)
6647
+ }),
6648
+ z16.object({
6649
+ kind: z16.literal("unknown"),
6650
+ reason: z16.enum([
6651
+ "analysis-unavailable",
6652
+ "unsupported-file",
6653
+ "low-confidence"
6654
+ ])
6655
+ })
6656
+ ]);
6657
+ var logoAnalysisSourceSchema = z16.discriminatedUnion("kind", [
6658
+ z16.object({ kind: z16.literal("none") }),
6659
+ z16.object({
6660
+ kind: z16.literal("deterministic"),
6661
+ reason: z16.enum(["dimensions", "fallback"])
6662
+ }),
6663
+ z16.object({
6664
+ kind: z16.literal("llm"),
6665
+ model: z16.literal("gpt-5.4-mini"),
6666
+ analyzedAt: z16.string().trim().min(1).max(80).optional()
6667
+ }),
6668
+ z16.object({ kind: z16.literal("manual-override") })
6669
+ ]);
6670
+ var logoFactsSchema = z16.object({
6671
+ shape: z16.enum(logoAssetShapeValues),
6672
+ containsText: logoContainsTextSchema,
6673
+ kind: z16.enum(logoKindValues),
6674
+ density: z16.enum(logoDensityValues),
6675
+ source: logoAnalysisSourceSchema
6676
+ });
6677
+ var brandDisplayModeValues = [
6678
+ "auto",
6679
+ "logo-only",
6680
+ "logo-plus-title",
6681
+ "title-only"
6682
+ ];
6683
+ var logoAccommodationPatternValues = [
6684
+ "title-only",
6685
+ "inline-logo-only",
6686
+ "inline-wordmark",
6687
+ "inline-mark-with-title",
6688
+ "logo-plate",
6689
+ "centered-badge",
6690
+ "popout-badge",
6691
+ "centered-masthead",
6692
+ "hero-badge"
6693
+ ];
6694
+ var logoSizePolicyValues = [
6695
+ "auto",
6696
+ "compact",
6697
+ "standard",
6698
+ "generous",
6699
+ "display"
6700
+ ];
6701
+
6702
+ // ../theme-core/src/site-styles/rawStyleFields.ts
6703
+ var themeV2RuntimeStyleFieldNames = [
6704
+ "_frameStyles",
6705
+ "_sectionStyles",
6706
+ "_containerStyles",
6707
+ "_cardStyles",
6708
+ // styleGroup is legacy runtime transition wiring rather than a nested
6709
+ // override object, but normal editors should still never see it directly.
6710
+ "styleGroup"
6711
+ ];
6712
+ var themeV2BlockSpecificRawStyleFieldNames = [
6713
+ "_contentCardStyles",
6714
+ "_heroLayoutStyles",
6715
+ "_textCardStyles"
6716
+ ];
6717
+ var themeV2NormalEditorRawStyleFieldNames = [
6718
+ ...themeV2RuntimeStyleFieldNames,
6719
+ ...themeV2BlockSpecificRawStyleFieldNames
6720
+ ];
6721
+ var themeV2NormalEditorRawStyleFieldNameSet = new Set(
6722
+ themeV2NormalEditorRawStyleFieldNames
6723
+ );
6724
+ var themeV2CompilerOwnedFieldNames = [
6725
+ ...themeV2RuntimeStyleFieldNames,
6726
+ ...themeV2BlockSpecificRawStyleFieldNames
6727
+ ];
6728
+ var pageDesignEditorBackgroundOverrideOwner = "page-design-editor";
6729
+
6478
6730
  // ../theme-core/src/schema.ts
6479
- var axesSchema = z16.object({
6480
- tone: z16.enum(["minimal", "classic", "bold"]),
6481
- energy: z16.enum(["calm", "vibrant"]),
6482
- density: z16.enum(["airy", "regular", "compact"]),
6483
- mediaBias: z16.enum(["text", "media", "mixed"]),
6484
- conversionBias: z16.enum(["low", "med", "high"]),
6485
- motion: z16.enum(["subtle", "standard", "expressive"])
6731
+ var axesSchema = z17.object({
6732
+ tone: z17.enum(["minimal", "classic", "bold"]),
6733
+ energy: z17.enum(["calm", "vibrant"]),
6734
+ density: z17.enum(["airy", "regular", "compact"]),
6735
+ mediaBias: z17.enum(["text", "media", "mixed"]),
6736
+ conversionBias: z17.enum(["low", "med", "high"]),
6737
+ motion: z17.enum(["subtle", "standard", "expressive"])
6486
6738
  });
6487
- var colourHexString = z16.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
6488
- var paletteColorSchema = z16.object({
6489
- name: z16.string().min(1),
6739
+ var colourHexString = z17.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
6740
+ var paletteColorSchema = z17.object({
6741
+ name: z17.string().min(1),
6490
6742
  hex: colourHexString
6491
6743
  });
6492
- var paletteMetaSchema = z16.object({
6493
- mode: z16.enum(["light", "dark"])
6744
+ var paletteMetaSchema = z17.object({
6745
+ mode: z17.enum(["light", "dark"])
6494
6746
  });
6495
- var paletteSchema = z16.object({
6496
- colors: z16.array(paletteColorSchema),
6747
+ var paletteSchema = z17.object({
6748
+ colors: z17.array(paletteColorSchema),
6497
6749
  meta: paletteMetaSchema
6498
6750
  });
6499
- var typographyStyleSchema = z16.object({
6500
- family: z16.string().min(1),
6501
- weight: z16.enum(["light", "regular", "medium", "semibold", "bold"]),
6502
- letterSpacing: z16.enum(["tight", "normal", "loose"]),
6503
- lineHeight: z16.enum(["normal", "relaxed", "loose"])
6751
+ var typographyStyleSchema = z17.object({
6752
+ family: z17.string().min(1),
6753
+ weight: z17.enum(["light", "regular", "medium", "semibold", "bold"]),
6754
+ letterSpacing: z17.enum(["tight", "normal", "loose"]),
6755
+ lineHeight: z17.enum(["normal", "relaxed", "loose"])
6504
6756
  });
6505
6757
  var bodyTypographyStyleSchema = typographyStyleSchema.extend({
6506
- size: z16.enum(["md", "lg", "xl"])
6758
+ size: z17.enum(["md", "lg", "xl"])
6507
6759
  });
6508
- var headingSizeSchema = z16.enum(["xs", "sm", "md", "lg", "xl", "2xl"]);
6509
- var headingTypographyOverridesSchema = z16.object({
6510
- weight: z16.enum(["light", "regular", "medium", "semibold", "bold"]).nullable().optional(),
6511
- letterSpacing: z16.enum(["tight", "normal", "loose"]).nullable().optional(),
6760
+ var headingSizeSchema = z17.enum(["xs", "sm", "md", "lg", "xl", "2xl"]);
6761
+ var headingTypographyOverridesSchema = z17.object({
6762
+ weight: z17.enum(["light", "regular", "medium", "semibold", "bold"]).nullable().optional(),
6763
+ letterSpacing: z17.enum(["tight", "normal", "loose"]).nullable().optional(),
6512
6764
  size: headingSizeSchema.nullable().optional(),
6513
- lineHeight: z16.enum(["normal", "relaxed", "loose"]).nullable().optional(),
6514
- italic: z16.boolean().nullable().optional(),
6765
+ lineHeight: z17.enum(["normal", "relaxed", "loose"]).nullable().optional(),
6766
+ italic: z17.boolean().nullable().optional(),
6515
6767
  colorToken: themeColorTokenSchema.nullable().optional()
6516
6768
  });
6517
6769
  var headingTypographyStyleSchema = typographyStyleSchema.extend({
6518
- case: z16.enum(["uppercase", "normal", "smallCaps"]).nullable(),
6519
- italic: z16.boolean().nullable(),
6770
+ case: z17.enum(["uppercase", "normal", "smallCaps"]).nullable(),
6771
+ italic: z17.boolean().nullable(),
6520
6772
  colorToken: themeColorTokenSchema.nullable().optional()
6521
6773
  });
6522
- var proseLinkUnderlineStyleSchema = z16.enum(["solid", "dotted", "dashed"]);
6523
- var proseLinkUnderlineThicknessSchema = z16.enum([
6774
+ var proseLinkUnderlineStyleSchema = z17.enum(["solid", "dotted", "dashed"]);
6775
+ var proseLinkUnderlineThicknessSchema = z17.enum([
6524
6776
  "auto",
6525
6777
  "fromFont",
6526
6778
  "thin",
6527
6779
  "medium",
6528
6780
  "thick"
6529
6781
  ]);
6530
- var proseLinkUnderlineOffsetSchema = z16.enum([
6782
+ var proseLinkUnderlineOffsetSchema = z17.enum([
6531
6783
  "auto",
6532
6784
  "tight",
6533
6785
  "normal",
6534
6786
  "loose"
6535
6787
  ]);
6536
- var proseLinkStyleSchema = z16.object({
6788
+ var proseLinkStyleSchema = z17.object({
6537
6789
  colorToken: themeColorTokenSchema.optional(),
6538
6790
  hoverColorToken: themeColorTokenSchema.optional(),
6539
- underline: z16.boolean().optional(),
6791
+ underline: z17.boolean().optional(),
6540
6792
  decorationColorToken: themeColorTokenSchema.optional(),
6541
6793
  hoverDecorationColorToken: themeColorTokenSchema.optional(),
6542
6794
  underlineStyle: proseLinkUnderlineStyleSchema.optional(),
6543
6795
  underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
6544
6796
  underlineOffset: proseLinkUnderlineOffsetSchema.optional()
6545
6797
  });
6546
- var semanticSpacingSchema = z16.enum([
6798
+ var semanticSpacingSchema = z17.enum([
6547
6799
  "none",
6548
6800
  "compact",
6549
6801
  "cozy",
@@ -6551,91 +6803,111 @@ var semanticSpacingSchema = z16.enum([
6551
6803
  "comfortable",
6552
6804
  "spacious"
6553
6805
  ]);
6554
- var boxRoundedSchema = z16.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
6555
- var boxBackgroundOverlaySchema = z16.object({
6556
- type: z16.enum(["none", "color", "gradient"]).nullable().optional(),
6806
+ var boxRoundedSchema = z17.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
6807
+ var boxBackgroundOverlaySchema = z17.object({
6808
+ type: z17.enum(["none", "color", "gradient"]).nullable().optional(),
6557
6809
  color: tokenOrCssColorValueSchema.nullable().optional(),
6558
- gradient: z16.string().nullable().optional(),
6559
- opacity: z16.number().min(0).max(1).nullable().optional()
6810
+ gradient: z17.string().nullable().optional(),
6811
+ opacity: z17.number().min(0).max(1).nullable().optional()
6560
6812
  });
6561
- var boxBackgroundSchema = z16.object({
6562
- type: z16.enum(["color", "gradient", "image"]).optional(),
6813
+ var boxBackgroundSchema = z17.object({
6814
+ type: z17.enum(["color", "gradient", "image"]).optional(),
6815
+ contentOwner: z17.literal(pageDesignEditorBackgroundOverrideOwner).optional(),
6563
6816
  color: tokenOrCssColorValueSchema.nullable().optional(),
6564
- gradient: z16.string().nullable().optional(),
6817
+ gradient: z17.string().nullable().optional(),
6818
+ gradientPresetId: z17.string().min(1).nullable().optional(),
6565
6819
  image: mediaSchema.nullable().optional(),
6566
- objectFit: z16.enum(["fill", "fit", "original", "custom"]).nullable().optional(),
6567
- scale: z16.string().nullable().optional(),
6568
- position: z16.string().nullable().optional(),
6569
- opacity: z16.number().min(0).max(1).nullable().optional(),
6570
- motion: z16.enum(["static", "fixed-frame"]).nullable().optional(),
6820
+ objectFit: z17.enum(["fill", "fit", "original", "custom"]).nullable().optional(),
6821
+ scale: z17.string().nullable().optional(),
6822
+ position: z17.string().nullable().optional(),
6823
+ opacity: z17.number().min(0).max(1).nullable().optional(),
6824
+ motion: z17.enum(["static", "fixed-frame"]).nullable().optional(),
6571
6825
  overlay: boxBackgroundOverlaySchema.nullable().optional(),
6572
6826
  textColor: tokenOrCssColorValueSchema.nullable().optional(),
6573
- headingColor: tokenOrCssColorValueSchema.nullable().optional()
6827
+ headingColor: tokenOrCssColorValueSchema.nullable().optional(),
6828
+ linkColor: tokenOrCssColorValueSchema.nullable().optional(),
6829
+ supportingColor: tokenOrCssColorValueSchema.nullable().optional()
6574
6830
  });
6575
- var noHeadingDecorationSchema = z16.object({
6576
- family: z16.literal("none"),
6577
- placement: z16.literal("none")
6831
+ var noHeadingDecorationSchema = z17.object({
6832
+ family: z17.literal("none")
6578
6833
  });
6579
- var visibleHeadingDecorationSchema = z16.object({
6580
- family: z16.enum(visibleHeadingDecorationFamilyValues),
6581
- placement: z16.enum(visibleHeadingDecorationPlacementValues),
6582
- colorToken: z16.enum(headingDecorationColorTokenValues).optional()
6834
+ var visibleHeadingDecorationSchema = z17.object({
6835
+ family: z17.enum(visibleHeadingDecorationFamilyValues),
6836
+ colorToken: z17.enum(headingDecorationColorTokenValues).optional()
6583
6837
  });
6584
- var headingDecorationSchema = z16.union([
6838
+ var headingDecorationSchema = z17.union([
6585
6839
  noHeadingDecorationSchema,
6586
6840
  visibleHeadingDecorationSchema
6587
6841
  ]);
6588
- var accordionIconTreatmentSchema = z16.object({
6589
- iconSet: z16.enum(accordionIconSetValues),
6590
- colorToken: z16.enum(accordionIconColorTokenValues),
6591
- openColorToken: z16.enum(accordionIconColorTokenValues).optional(),
6592
- motion: z16.enum(accordionIconMotionValues)
6842
+ var headingDecorationOverrideSchema = z17.union([
6843
+ z17.enum(headingDecorationOverrideValues),
6844
+ // Legacy authoring value from the earlier model. In the render-time model
6845
+ // "on" cannot force a fragment into a block, so it is equivalent to default.
6846
+ z17.literal("on").transform(() => "site-default")
6847
+ ]);
6848
+ var accordionIconTreatmentSchema = z17.object({
6849
+ iconSet: z17.enum(accordionIconSetValues),
6850
+ colorToken: z17.enum(accordionIconColorTokenValues),
6851
+ openColorToken: z17.enum(accordionIconColorTokenValues).optional(),
6852
+ motion: z17.enum(accordionIconMotionValues)
6593
6853
  });
6594
- var sectionStylesOverrideSchema = z16.object({
6854
+ var sectionStylesOverrideSchema = z17.object({
6595
6855
  background: boxBackgroundSchema.nullable().optional(),
6596
6856
  spacing: semanticSpacingSchema.nullable().optional(),
6597
- minHeight: z16.enum(["none", "banner", "hero", "immersive"]).nullable().optional(),
6598
- tileTreatment: z16.enum(tileTreatmentValues).nullable().optional(),
6599
- eventListTreatment: z16.enum(eventListTreatmentValues).nullable().optional(),
6600
- eyebrowTreatment: z16.enum(eyebrowTreatmentValues).nullable().optional(),
6857
+ minHeight: z17.enum(["none", "banner", "hero", "immersive"]).nullable().optional(),
6858
+ tileTreatment: z17.enum(tileTreatmentValues).nullable().optional(),
6859
+ eventListTreatment: z17.enum(eventListTreatmentValues).nullable().optional(),
6860
+ eyebrowTreatment: z17.enum(eyebrowTreatmentValues).nullable().optional(),
6601
6861
  headingDecoration: headingDecorationSchema.nullable().optional(),
6602
- // Author-level override consumed by later block/editor rendering phases.
6603
- // Keeping it in section styles lets existing block save APIs persist it.
6604
- headingDecorationOverride: z16.enum(headingDecorationOverrideValues).nullable().optional(),
6862
+ // Author-level opt-out consumed by render-time theme projection. Persisted
6863
+ // content may also carry legacy `headingDecoration` / `on` values; those are
6864
+ // tolerated at the schema boundary but the renderer treats the compiled theme
6865
+ // as the only source of the resolved signature.
6866
+ headingDecorationOverride: headingDecorationOverrideSchema.nullable().optional(),
6605
6867
  accordionIconTreatment: accordionIconTreatmentSchema.nullable().optional()
6606
6868
  });
6607
- var containerStylesOverrideSchema = z16.object({
6869
+ var containerStylesOverrideSchema = z17.object({
6608
6870
  background: boxBackgroundSchema.nullable().optional(),
6609
6871
  spacing: semanticSpacingSchema.nullable().optional(),
6610
- raised: z16.boolean().nullable().optional(),
6872
+ raised: z17.boolean().nullable().optional(),
6611
6873
  rounded: boxRoundedSchema.nullable().optional(),
6612
- fullWidth: z16.boolean().nullable().optional()
6874
+ fullWidth: z17.boolean().nullable().optional()
6613
6875
  });
6614
- var cardBorderOverrideSchema = z16.object({
6615
- enabled: z16.boolean().nullable().optional(),
6616
- width: z16.enum(["none", "1", "2", "3"]).nullable().optional(),
6876
+ var cardBorderOverrideSchema = z17.object({
6877
+ enabled: z17.boolean().nullable().optional(),
6878
+ width: z17.enum(["none", "1", "2", "3"]).nullable().optional(),
6617
6879
  colorToken: themeColorTokenSchema.nullable().optional()
6618
6880
  });
6619
- var cardStylesOverrideSchema = z16.object({
6881
+ var cardStylesOverrideSchema = z17.object({
6620
6882
  background: boxBackgroundSchema.nullable().optional(),
6621
6883
  border: cardBorderOverrideSchema.nullable().optional(),
6622
6884
  spacing: semanticSpacingSchema.nullable().optional(),
6623
- raised: z16.boolean().nullable().optional(),
6885
+ raised: z17.boolean().nullable().optional(),
6624
6886
  rounded: boxRoundedSchema.nullable().optional(),
6625
- treatment: z16.enum(["accent-quote"]).nullable().optional()
6887
+ treatment: z17.enum([
6888
+ "accent-quote",
6889
+ "editorial-rule",
6890
+ "soft-panel",
6891
+ "editorial-serif-quote",
6892
+ "editorial-open",
6893
+ "color-blocked"
6894
+ ]).nullable().optional(),
6895
+ // Which site-style card variant the card adopts (emits a `.card-{id}` class).
6896
+ // 'none' is boxless. Driven by the block look via testimonialCardTreatment.
6897
+ cardVariant: boxStylesCardVariantSchema.nullable().optional()
6626
6898
  });
6627
- var blockStyleOverridesSchema = z16.object({
6899
+ var blockStyleOverridesSchema = z17.object({
6628
6900
  sectionStyles: sectionStylesOverrideSchema.nullable().optional(),
6629
6901
  containerStyles: containerStylesOverrideSchema.nullable().optional(),
6630
6902
  cardStyles: cardStylesOverrideSchema.nullable().optional()
6631
6903
  });
6632
- var blockThemeOverrideSchema = z16.object({
6633
- typography: z16.object({
6904
+ var blockThemeOverrideSchema = z17.object({
6905
+ typography: z17.object({
6634
6906
  proseLinkStyle: proseLinkStyleSchema.optional()
6635
6907
  }).optional(),
6636
6908
  styles: blockStyleOverridesSchema.optional()
6637
6909
  });
6638
- var typographyScaleSchema = z16.enum([
6910
+ var typographyScaleSchema = z17.enum([
6639
6911
  // New intuitive names
6640
6912
  "compact",
6641
6913
  // ratio 1.2 (was minorThird)
@@ -6648,9 +6920,9 @@ var typographyScaleSchema = z16.enum([
6648
6920
  "majorThird",
6649
6921
  "perfectFourth"
6650
6922
  ]);
6651
- var typographySchema = z16.object({
6923
+ var typographySchema = z17.object({
6652
6924
  body: bodyTypographyStyleSchema,
6653
- headings: z16.object({
6925
+ headings: z17.object({
6654
6926
  default: headingTypographyStyleSchema,
6655
6927
  h1: headingTypographyOverridesSchema,
6656
6928
  h2: headingTypographyOverridesSchema,
@@ -6663,41 +6935,41 @@ var typographySchema = z16.object({
6663
6935
  scale: typographyScaleSchema,
6664
6936
  proseLinkStyle: proseLinkStyleSchema.optional()
6665
6937
  });
6666
- var spaceSchema = z16.enum(["comfortable", "standard", "dense"]);
6667
- var corners = z16.enum(["square", "soft", "rounded", "pill"]);
6668
- var shadow = z16.object({
6669
- elevation: z16.enum(["none", "low", "medium", "high"]),
6670
- softness: z16.enum(["crisp", "soft", "hard"]).nullable(),
6671
- position: z16.enum(["bottom", "bottom-right"]).default("bottom")
6938
+ var spaceSchema = z17.enum(["comfortable", "standard", "dense"]);
6939
+ var corners = z17.enum(["square", "soft", "rounded", "pill"]);
6940
+ var shadow = z17.object({
6941
+ elevation: z17.enum(["none", "low", "medium", "high"]),
6942
+ softness: z17.enum(["crisp", "soft", "hard"]).nullable(),
6943
+ position: z17.enum(["bottom", "bottom-right"]).default("bottom")
6672
6944
  });
6673
- var border = z16.object({
6674
- width: z16.enum(["none", "hairline", "thin", "thick"]),
6675
- style: z16.enum(["solid", "dashed"])
6945
+ var border = z17.object({
6946
+ width: z17.enum(["none", "hairline", "thin", "thick"]),
6947
+ style: z17.enum(["solid", "dashed"])
6676
6948
  });
6677
- var motion = z16.object({
6678
- level: z16.enum(["off", "low", "medium", "high"]),
6679
- easing: z16.enum(["standard", "snappy", "gentle"]).nullable()
6949
+ var motion = z17.object({
6950
+ level: z17.enum(["off", "low", "medium", "high"]),
6951
+ easing: z17.enum(["standard", "snappy", "gentle"]).nullable()
6680
6952
  });
6681
- var buttonStyle = z16.object({
6953
+ var buttonStyle = z17.object({
6682
6954
  shape: corners
6683
6955
  // Used for --radius-control CSS variable
6684
6956
  });
6685
- var cardStyle = z16.object({
6686
- elevation: z16.enum(["none", "low", "medium", "high"]),
6687
- border: z16.enum(["none", "subtle", "defined"]),
6957
+ var cardStyle = z17.object({
6958
+ elevation: z17.enum(["none", "low", "medium", "high"]),
6959
+ border: z17.enum(["none", "subtle", "defined"]),
6688
6960
  shape: corners,
6689
- headerStyle: z16.enum(["plain", "accentBar", "subtleBg"]).nullable(),
6690
- mediaTreatment: z16.enum(["square", "rounded", "bleed"]).nullable()
6961
+ headerStyle: z17.enum(["plain", "accentBar", "subtleBg"]).nullable(),
6962
+ mediaTreatment: z17.enum(["square", "rounded", "bleed"]).nullable()
6691
6963
  });
6692
- var inputStyle = z16.object({
6964
+ var inputStyle = z17.object({
6693
6965
  shape: corners,
6694
- border: z16.enum(["subtle", "defined", "underline"]),
6695
- focus: z16.enum(["glow", "ring", "underline"]),
6696
- label: z16.enum(["inside", "above"])
6966
+ border: z17.enum(["subtle", "defined", "underline"]),
6967
+ focus: z17.enum(["glow", "ring", "underline"]),
6968
+ label: z17.enum(["inside", "above"])
6697
6969
  });
6698
- var headerVariant = z16.enum(["classic", "centered", "transparent", "floating"]);
6699
- var headerPositioning = z16.enum(["static", "sticky", "fixed"]);
6700
- var headerNavStyle = z16.enum([
6970
+ var headerVariant = z17.enum(["classic", "centered", "transparent", "floating"]);
6971
+ var headerPositioning = z17.enum(["static", "sticky", "fixed"]);
6972
+ var headerNavStyle = z17.enum([
6701
6973
  "minimal",
6702
6974
  "underline",
6703
6975
  "underline-grow",
@@ -6706,54 +6978,57 @@ var headerNavStyle = z16.enum([
6706
6978
  "frosted",
6707
6979
  "solid"
6708
6980
  ]);
6709
- var navFontWeight = z16.enum(["regular", "medium", "semibold", "bold"]);
6710
- var headerMaxWidth = z16.enum(["container", "full"]);
6711
- var headerContainerSchema = z16.object({
6712
- rounded: z16.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("xl"),
6713
- border: z16.boolean().default(true),
6714
- shadow: z16.boolean().default(true),
6715
- padding: z16.enum(["sm", "md", "lg"]).default("md"),
6716
- tint: z16.string().nullable().optional(),
6717
- opacity: z16.number().min(0).max(1).default(0.12)
6981
+ var navFontWeight = z17.enum(["regular", "medium", "semibold", "bold"]);
6982
+ var headerMaxWidth = z17.enum(["container", "full"]);
6983
+ var headerContainerSchema = z17.object({
6984
+ rounded: z17.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("xl"),
6985
+ border: z17.boolean().default(true),
6986
+ shadow: z17.boolean().default(true),
6987
+ padding: z17.enum(["sm", "md", "lg"]).default("md"),
6988
+ tint: z17.string().nullable().optional(),
6989
+ opacity: z17.number().min(0).max(1).default(0.12)
6718
6990
  }).optional();
6719
6991
  var headerBorderSchema = componentBorderSchema.extend({
6720
- position: z16.enum(["bottom", "top", "both", "none"]).default("bottom")
6992
+ position: z17.enum(["bottom", "top", "both", "none"]).default("bottom")
6721
6993
  }).optional();
6722
- var logoStyleSchema = z16.object({
6723
- fontFamily: z16.enum(["heading", "body"]).default("heading"),
6724
- letterSpacing: z16.enum(["normal", "wide", "wider", "widest"]).default("normal"),
6725
- gradient: z16.boolean().default(false)
6994
+ var logoStyleSchema = z17.object({
6995
+ fontFamily: z17.enum(["heading", "body"]).default("heading"),
6996
+ letterSpacing: z17.enum(["normal", "wide", "wider", "widest"]).default("normal"),
6997
+ gradient: z17.boolean().default(false),
6998
+ brandDisplay: z17.enum(brandDisplayModeValues).optional(),
6999
+ size: z17.enum(logoSizePolicyValues).optional(),
7000
+ accommodation: z17.enum(logoAccommodationPatternValues).optional()
6726
7001
  }).optional();
6727
- var headerLogoTextSchema = z16.object({
6728
- mobileWrapLines: z16.union([z16.literal(1), z16.literal(2)]).optional(),
6729
- mobileMaxWidth: z16.enum(["xs", "sm", "md"]).optional(),
6730
- hideOnShrink: z16.boolean().optional()
7002
+ var headerLogoTextSchema = z17.object({
7003
+ mobileWrapLines: z17.union([z17.literal(1), z17.literal(2)]).optional(),
7004
+ mobileMaxWidth: z17.enum(["xs", "sm", "md"]).optional(),
7005
+ hideOnShrink: z17.boolean().optional()
6731
7006
  }).optional();
6732
- var navEffectsSchema = z16.object({
6733
- underlineGradient: z16.boolean().default(false),
6734
- glow: z16.boolean().default(false),
6735
- glowColor: z16.string().optional(),
6736
- neumorphic: z16.boolean().default(false)
7007
+ var navEffectsSchema = z17.object({
7008
+ underlineGradient: z17.boolean().default(false),
7009
+ glow: z17.boolean().default(false),
7010
+ glowColor: z17.string().optional(),
7011
+ neumorphic: z17.boolean().default(false)
6737
7012
  }).optional();
6738
- var dropdownStyleSchema = z16.object({
7013
+ var dropdownStyleSchema = z17.object({
6739
7014
  // Container styling
6740
7015
  background: themeColorTokenSchema.default("surface"),
6741
7016
  textColor: themeColorTokenSchema.default("text"),
6742
7017
  borderColor: themeColorTokenSchema.nullable().default("border"),
6743
- shadow: z16.enum(["none", "sm", "md", "lg"]).default("md"),
6744
- borderRadius: z16.enum(["none", "sm", "md", "lg"]).default("md"),
7018
+ shadow: z17.enum(["none", "sm", "md", "lg"]).default("md"),
7019
+ borderRadius: z17.enum(["none", "sm", "md", "lg"]).default("md"),
6745
7020
  // Link hover states (explicit control)
6746
7021
  hoverBackground: themeColorTokenSchema.nullable().optional(),
6747
7022
  hoverTextColor: themeColorTokenSchema.nullable().optional(),
6748
7023
  // Typography
6749
- textTransform: z16.enum(["none", "uppercase", "capitalize"]).default("none"),
6750
- letterSpacing: z16.enum(["normal", "wide", "wider"]).default("normal"),
6751
- fontWeight: z16.enum(["regular", "medium", "semibold", "bold"]).optional(),
7024
+ textTransform: z17.enum(["none", "uppercase", "capitalize"]).default("none"),
7025
+ letterSpacing: z17.enum(["normal", "wide", "wider"]).default("normal"),
7026
+ fontWeight: z17.enum(["regular", "medium", "semibold", "bold"]).optional(),
6752
7027
  // optional = inherit from navWeight
6753
- textSize: z16.enum(["xs", "sm", "base", "lg"]).optional()
7028
+ textSize: z17.enum(["xs", "sm", "base", "lg"]).optional()
6754
7029
  // optional = no override (browser default)
6755
7030
  }).optional();
6756
- var headerCtaGapSchema = z16.enum([
7031
+ var headerCtaGapSchema = z17.enum([
6757
7032
  "none",
6758
7033
  "tight",
6759
7034
  "compact",
@@ -6761,7 +7036,7 @@ var headerCtaGapSchema = z16.enum([
6761
7036
  "relaxed",
6762
7037
  "spacious"
6763
7038
  ]);
6764
- var headerCtaTreatmentSchema = z16.enum([
7039
+ var headerCtaTreatmentSchema = z17.enum([
6765
7040
  "default",
6766
7041
  "primary",
6767
7042
  "secondary",
@@ -6769,22 +7044,22 @@ var headerCtaTreatmentSchema = z16.enum([
6769
7044
  "outline",
6770
7045
  "ghost"
6771
7046
  ]);
6772
- var navContainerSchema = z16.object({
6773
- type: z16.enum(["none", "pill", "glass"]).default("none"),
6774
- tint: z16.string().nullable().optional(),
6775
- opacity: z16.number().min(0).max(1).default(0.15)
7047
+ var navContainerSchema = z17.object({
7048
+ type: z17.enum(["none", "pill", "glass"]).default("none"),
7049
+ tint: z17.string().nullable().optional(),
7050
+ opacity: z17.number().min(0).max(1).default(0.15)
6776
7051
  }).default({ type: "none", tint: null, opacity: 0.15 });
6777
- var headerBackgroundSchema = z16.object({
6778
- type: z16.enum(["color", "gradient", "image"]),
7052
+ var headerBackgroundSchema = z17.object({
7053
+ type: z17.enum(["color", "gradient", "image"]),
6779
7054
  color: tokenOrCssColorValueSchema.nullable().optional(),
6780
7055
  gradient: gradientConfigSchema.nullable().optional(),
6781
7056
  image: mediaSchema.nullable().optional(),
6782
7057
  textColor: tokenOrCssColorValueSchema.nullable().optional()
6783
7058
  });
6784
- var headerSchema = z16.object({
7059
+ var headerSchema = z17.object({
6785
7060
  variant: headerVariant,
6786
7061
  positioning: headerPositioning,
6787
- shrinkOnScroll: z16.boolean(),
7062
+ shrinkOnScroll: z17.boolean(),
6788
7063
  maxWidth: headerMaxWidth,
6789
7064
  logoOverride: mediaSchema.nullable().optional(),
6790
7065
  background: headerBackgroundSchema.default({
@@ -6814,16 +7089,16 @@ var headerSchema = z16.object({
6814
7089
  // Optional theme-level CTA variant for header/nav CTA buttons.
6815
7090
  // Internal runtime bridge for the block renderer; prefer ctaTreatment in
6816
7091
  // authored Theme V2 concepts.
6817
- ctaVariant: z16.string().min(1).optional(),
7092
+ ctaVariant: z17.string().min(1).optional(),
6818
7093
  // Dropdown menu styling (nav dropdowns and mobile drawer)
6819
7094
  dropdownStyle: dropdownStyleSchema
6820
7095
  });
6821
- var footerVariant = z16.enum(["simple", "columns", "split"]);
6822
- var footerMaxWidth = z16.enum(["container", "full"]);
6823
- var footerMode = z16.enum(["default", "blocks", "default+blocks", "none"]);
6824
- var footerNavLayoutMode = z16.enum(["stack", "inline", "inline-wrap"]);
6825
- var footerNavLayoutAlign = z16.enum(["start", "center", "end", "space-between"]);
6826
- var footerSpacing = z16.enum([
7096
+ var footerVariant = z17.enum(["simple", "columns", "split"]);
7097
+ var footerMaxWidth = z17.enum(["container", "full"]);
7098
+ var footerMode = z17.enum(["default", "blocks", "default+blocks", "none"]);
7099
+ var footerNavLayoutMode = z17.enum(["stack", "inline", "inline-wrap"]);
7100
+ var footerNavLayoutAlign = z17.enum(["start", "center", "end", "space-between"]);
7101
+ var footerSpacing = z17.enum([
6827
7102
  "none",
6828
7103
  "tight",
6829
7104
  "compact",
@@ -6831,44 +7106,44 @@ var footerSpacing = z16.enum([
6831
7106
  "relaxed",
6832
7107
  "spacious"
6833
7108
  ]);
6834
- var footerLogoPlacement = z16.enum(["left", "right", "above", "below"]);
6835
- var footerLogoSize = z16.enum(["sm", "md", "lg", "xl"]);
6836
- var footerLogoMaxHeight = z16.enum(["sm", "md", "lg", "xl"]);
6837
- var footerBottomTextLinkStyleSchema = z16.object({
7109
+ var footerLogoPlacement = z17.enum(["left", "right", "above", "below"]);
7110
+ var footerLogoSize = z17.enum(["sm", "md", "lg", "xl"]);
7111
+ var footerLogoMaxHeight = z17.enum(["sm", "md", "lg", "xl"]);
7112
+ var footerBottomTextLinkStyleSchema = z17.object({
6838
7113
  colorToken: themeColorTokenSchema.optional(),
6839
7114
  hoverColorToken: themeColorTokenSchema.nullable().optional(),
6840
7115
  decorationColorToken: themeColorTokenSchema.nullable().optional(),
6841
- underline: z16.boolean().optional()
7116
+ underline: z17.boolean().optional()
6842
7117
  });
6843
- var footerBottomBarSchema = z16.object({
6844
- enabled: z16.boolean().optional(),
6845
- fullBleed: z16.boolean().optional(),
7118
+ var footerBottomBarSchema = z17.object({
7119
+ enabled: z17.boolean().optional(),
7120
+ fullBleed: z17.boolean().optional(),
6846
7121
  background: headerBackgroundSchema.optional(),
6847
7122
  textColor: themeColorTokenSchema.nullable().optional(),
6848
- textAlign: z16.enum(["left", "center", "right"]).optional(),
7123
+ textAlign: z17.enum(["left", "center", "right"]).optional(),
6849
7124
  paddingY: footerSpacing.optional(),
6850
7125
  paddingX: footerSpacing.optional(),
6851
- borderTop: z16.object({
7126
+ borderTop: z17.object({
6852
7127
  colorToken: themeColorTokenSchema.nullable().optional(),
6853
- width: z16.enum(["none", "thin", "medium", "thick"]).optional()
7128
+ width: z17.enum(["none", "thin", "medium", "thick"]).optional()
6854
7129
  }).optional()
6855
7130
  });
6856
- var footerNavLayoutSchema = z16.object({
7131
+ var footerNavLayoutSchema = z17.object({
6857
7132
  layout: footerNavLayoutMode.optional(),
6858
7133
  align: footerNavLayoutAlign.optional(),
6859
7134
  gapX: footerSpacing.optional(),
6860
7135
  gapY: footerSpacing.optional(),
6861
- columns: z16.number().int().min(1).max(6).optional()
7136
+ columns: z17.number().int().min(1).max(6).optional()
6862
7137
  });
6863
- var footerLogoSchema = z16.object({
6864
- showLogo: z16.boolean().default(true),
6865
- showLogoText: z16.boolean().optional(),
7138
+ var footerLogoSchema = z17.object({
7139
+ showLogo: z17.boolean().default(true),
7140
+ showLogoText: z17.boolean().optional(),
6866
7141
  placement: footerLogoPlacement.optional(),
6867
7142
  size: footerLogoSize.optional(),
6868
7143
  maxHeight: footerLogoMaxHeight.optional(),
6869
- align: z16.enum(["start", "center", "end"]).optional()
7144
+ align: z17.enum(["start", "center", "end"]).optional()
6870
7145
  });
6871
- var footerSchema = z16.object({
7146
+ var footerSchema = z17.object({
6872
7147
  /**
6873
7148
  * SDK-only footer rendering mode.
6874
7149
  *
@@ -6877,7 +7152,7 @@ var footerSchema = z16.object({
6877
7152
  mode: footerMode.optional(),
6878
7153
  variant: footerVariant,
6879
7154
  maxWidth: footerMaxWidth,
6880
- showLogoText: z16.boolean().optional(),
7155
+ showLogoText: z17.boolean().optional(),
6881
7156
  background: headerBackgroundSchema.default({
6882
7157
  type: "color",
6883
7158
  color: "surface"
@@ -6895,20 +7170,20 @@ var footerSchema = z16.object({
6895
7170
  logo: footerLogoSchema.optional(),
6896
7171
  bottomBar: footerBottomBarSchema.optional()
6897
7172
  });
6898
- var containerPaddingPresetSchema = z16.enum([
7173
+ var containerPaddingPresetSchema = z17.enum([
6899
7174
  "tight",
6900
7175
  "compact",
6901
7176
  "default",
6902
7177
  "relaxed"
6903
7178
  ]);
6904
- var layoutSchema = z16.object({
6905
- containerPadding: z16.object({
7179
+ var layoutSchema = z17.object({
7180
+ containerPadding: z17.object({
6906
7181
  mobile: containerPaddingPresetSchema.optional(),
6907
7182
  tablet: containerPaddingPresetSchema.optional(),
6908
7183
  desktop: containerPaddingPresetSchema.optional()
6909
7184
  }).optional()
6910
7185
  }).optional();
6911
- var heroTypographySizeSchema = z16.enum([
7186
+ var heroTypographySizeSchema = z17.enum([
6912
7187
  "sm",
6913
7188
  "base",
6914
7189
  "lg",
@@ -6920,19 +7195,19 @@ var heroTypographySizeSchema = z16.enum([
6920
7195
  "6xl",
6921
7196
  "editorial"
6922
7197
  ]);
6923
- var heroTypographyLineHeightSchema = z16.enum([
7198
+ var heroTypographyLineHeightSchema = z17.enum([
6924
7199
  "tight",
6925
7200
  "snug",
6926
7201
  "normal",
6927
7202
  "relaxed"
6928
7203
  ]);
6929
- var heroResponsiveTypographySchema = z16.object({
7204
+ var heroResponsiveTypographySchema = z17.object({
6930
7205
  headlineSize: heroTypographySizeSchema.optional(),
6931
7206
  headlineLineHeight: heroTypographyLineHeightSchema.optional(),
6932
7207
  subheadlineSize: heroTypographySizeSchema.optional(),
6933
7208
  subheadlineLineHeight: heroTypographyLineHeightSchema.optional()
6934
7209
  });
6935
- var heroTypographySchema = z16.object({
7210
+ var heroTypographySchema = z17.object({
6936
7211
  headlineSize: heroTypographySizeSchema.optional(),
6937
7212
  headlineLineHeight: heroTypographyLineHeightSchema.optional(),
6938
7213
  subheadlineSize: heroTypographySizeSchema.optional(),
@@ -6941,31 +7216,38 @@ var heroTypographySchema = z16.object({
6941
7216
  microHeadlineLineHeight: heroTypographyLineHeightSchema.optional(),
6942
7217
  microSubheadlineSize: heroTypographySizeSchema.optional(),
6943
7218
  microSubheadlineLineHeight: heroTypographyLineHeightSchema.optional(),
6944
- responsive: z16.object({
7219
+ responsive: z17.object({
6945
7220
  tablet: heroResponsiveTypographySchema.optional(),
6946
7221
  mobile: heroResponsiveTypographySchema.optional()
6947
7222
  }).optional()
6948
7223
  });
6949
- var heroSchema = z16.object({
7224
+ var heroSchema = z17.object({
6950
7225
  typography: heroTypographySchema.optional()
6951
7226
  }).optional();
6952
- var bodyTextIntroTypographySizeSchema = z16.enum(["default", "editorial"]);
6953
- var bodyTextSchema = z16.object({
6954
- intro: z16.object({
7227
+ var bodyTextIntroTypographySizeSchema = z17.enum(["default", "editorial"]);
7228
+ var bodyTextSchema = z17.object({
7229
+ intro: z17.object({
6955
7230
  paragraphSize: bodyTextIntroTypographySizeSchema.optional(),
6956
7231
  headingSize: bodyTextIntroTypographySizeSchema.optional()
6957
7232
  }).optional()
6958
7233
  }).optional();
6959
- var gradientsSchema = z16.object({
6960
- button: z16.string().min(1).nullable().optional(),
6961
- hero: z16.string().min(1).nullable().optional(),
6962
- background: z16.string().min(1).nullable().optional()
7234
+ var gradientsSchema = z17.object({
7235
+ button: z17.string().min(1).nullable().optional(),
7236
+ hero: z17.string().min(1).nullable().optional(),
7237
+ background: z17.string().min(1).nullable().optional()
7238
+ });
7239
+ var testimonialQuoteTreatmentSchema = z17.object({
7240
+ style: z17.enum(["serif-display", "accent-glyph", "none"]),
7241
+ fontFamily: z17.enum(["heading", "body"]).optional(),
7242
+ scale: z17.enum(["sm", "md", "lg", "xl"]).optional(),
7243
+ colorToken: themeColorTokenSchema.optional(),
7244
+ opacity: z17.number().min(0).max(1).optional()
6963
7245
  });
6964
- var themeSchema = z16.object({
6965
- name: z16.string().min(1).max(30),
6966
- description: z16.string().min(1).max(400),
6967
- rationale: z16.string().min(1).max(400),
6968
- siteStyleId: z16.string().min(1).transform((value) => asSiteStyleId(value)).optional(),
7246
+ var themeSchema = z17.object({
7247
+ name: z17.string().min(1).max(30),
7248
+ description: z17.string().min(1).max(400),
7249
+ rationale: z17.string().min(1).max(400),
7250
+ siteStyleId: z17.string().min(1).transform((value) => asSiteStyleId(value)).optional(),
6969
7251
  axes: axesSchema,
6970
7252
  palette: paletteSchema,
6971
7253
  typography: typographySchema,
@@ -6986,6 +7268,8 @@ var themeSchema = z16.object({
6986
7268
  // Card variant system (optional for backwards compatibility)
6987
7269
  accordions: accordionSystemSchema.optional(),
6988
7270
  // Accordion system (optional - generated if not provided)
7271
+ testimonialQuote: testimonialQuoteTreatmentSchema.optional(),
7272
+ // Testimonial quote-mark treatment (site-style-owned)
6989
7273
  inputs: inputSystemSchema.optional(),
6990
7274
  // Input system (optional - generated if not provided)
6991
7275
  inputStyle: inputStyle.optional(),
@@ -6993,15 +7277,19 @@ var themeSchema = z16.object({
6993
7277
  // Block-specific customization (Tier 3)
6994
7278
  // blockCustomVars: Per-block CSS variable overrides as bare values
6995
7279
  // Example: { "event-registration": { "--step-color": "#6d28d9" } }
6996
- blockCustomVars: z16.record(
6997
- z16.string(),
7280
+ blockCustomVars: z17.record(
7281
+ z17.string(),
6998
7282
  // block kind (matches data-block attribute)
6999
- z16.record(z16.string(), z16.string())
7283
+ z17.record(z17.string(), z17.string())
7000
7284
  // { '--var-name': 'value' }
7001
7285
  ).optional(),
7002
7286
  // Structured block-kind theme overrides (v1: typography prose-link style only)
7003
7287
  // Keyed by block kind (usually data-block value like "hero"; "block.hero" also accepted)
7004
- blockOverrides: z16.record(z16.string(), blockThemeOverrideSchema).optional(),
7288
+ blockOverrides: z17.record(z17.string(), blockThemeOverrideSchema).optional(),
7289
+ // Site-wide heading decoration signature (family + colour). Set once per Look
7290
+ // and projected transiently onto eligible block headings at render time.
7291
+ // Alignment is inherited from the heading, so no placement is stored.
7292
+ headingDecoration: headingDecorationSchema.optional(),
7005
7293
  // Structured custom CSS rules
7006
7294
  // Validated, scoped, and safe by construction - no @import, remote url(), or global selectors
7007
7295
  customCssRules: customCssRulesSchema,
@@ -7035,11 +7323,11 @@ var themeSchema = z16.object({
7035
7323
  * }
7036
7324
  * ```
7037
7325
  */
7038
- styleGroups: z16.record(z16.string(), z16.array(z16.string())).optional()
7326
+ styleGroups: z17.record(z17.string(), z17.array(z17.string())).optional()
7039
7327
  });
7040
- var themesTurnSchema = z16.object({
7041
- message: z16.string().min(1),
7042
- themes: z16.array(themeSchema).length(3)
7328
+ var themesTurnSchema = z17.object({
7329
+ message: z17.string().min(1),
7330
+ themes: z17.array(themeSchema).length(3)
7043
7331
  });
7044
7332
 
7045
7333
  // ../theme-core/src/palette/variants/types.ts
@@ -7049,19 +7337,19 @@ function asPaletteVariantId(value) {
7049
7337
  }
7050
7338
  return value;
7051
7339
  }
7052
- var paletteVariantIdSchema = z17.string().min(1).transform((value) => asPaletteVariantId(value));
7340
+ var paletteVariantIdSchema = z18.string().min(1).transform((value) => asPaletteVariantId(value));
7053
7341
  var HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
7054
- var hexColorSchema = z17.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
7342
+ var hexColorSchema = z18.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
7055
7343
  var variantPaletteColorSchema = paletteColorSchema.extend({
7056
7344
  name: paletteTokenNameSchema
7057
7345
  });
7058
- var paletteVariantSchema = z17.object({
7346
+ var paletteVariantSchema = z18.object({
7059
7347
  id: paletteVariantIdSchema,
7060
- name: z17.string().min(1),
7061
- description: z17.string().min(1),
7348
+ name: z18.string().min(1),
7349
+ description: z18.string().min(1),
7062
7350
  tags: styleTagsSchema,
7063
- mode: z17.enum(["light", "dark"]),
7064
- colors: z17.array(variantPaletteColorSchema).min(1)
7351
+ mode: z18.enum(["light", "dark"]),
7352
+ colors: z18.array(variantPaletteColorSchema).min(1)
7065
7353
  });
7066
7354
  function definePaletteVariant(input) {
7067
7355
  return {
@@ -7073,7 +7361,7 @@ function definePaletteVariant(input) {
7073
7361
  colors: input.colors
7074
7362
  };
7075
7363
  }
7076
- var paletteOverridesSchema = z17.object({
7364
+ var paletteOverridesSchema = z18.object({
7077
7365
  primary: hexColorSchema.optional(),
7078
7366
  primaryForeground: hexColorSchema.optional(),
7079
7367
  secondary: hexColorSchema.optional(),
@@ -7314,6 +7602,28 @@ var softNaturalWatercolor = definePaletteVariant({
7314
7602
  { name: "border", hex: "#d8c9a8" }
7315
7603
  ]
7316
7604
  });
7605
+ var softNaturalLilac = definePaletteVariant({
7606
+ id: "soft-natural-lilac",
7607
+ name: "Soft Natural \u2014 Lilac",
7608
+ description: "Watercolour periwinkle-lilac primary with warm ivory grounds and a sage accent.",
7609
+ tags: { tone: "classic", energy: "calm", era: "organic" },
7610
+ mode: "light",
7611
+ colors: [
7612
+ { name: "primary", hex: "#5c68a8" },
7613
+ { name: "secondary", hex: "#8189ad" },
7614
+ { name: "accent", hex: "#75835a" },
7615
+ { name: "success", hex: "#5f7d62" },
7616
+ { name: "warning", hex: "#a8884f" },
7617
+ { name: "destructive", hex: "#a3503e" },
7618
+ { name: "background", hex: "#faf9f6" },
7619
+ { name: "surface", hex: "#ffffff" },
7620
+ { name: "surfaceAlt", hex: "#f1f0f7" },
7621
+ { name: "muted", hex: "#e9e8f2" },
7622
+ { name: "text", hex: "#262633" },
7623
+ { name: "primaryForeground", hex: "#ffffff" },
7624
+ { name: "border", hex: "#d6d5e3" }
7625
+ ]
7626
+ });
7317
7627
 
7318
7628
  // ../theme-core/src/palette/variants/warm-neutral.ts
7319
7629
  var warmNeutralClay = definePaletteVariant({
@@ -7405,6 +7715,30 @@ var warmNeutralForest = definePaletteVariant({
7405
7715
  ]
7406
7716
  });
7407
7717
 
7718
+ // ../theme-core/src/palette/variants/warm-dark.ts
7719
+ var warmDarkEmber = definePaletteVariant({
7720
+ id: "warm-dark-ember",
7721
+ name: "Warm Dark \u2014 Ember",
7722
+ description: "Deep clay-brown ground with burnt-orange accent and warm cream text.",
7723
+ tags: { tone: "bold", energy: "vibrant", era: "organic" },
7724
+ mode: "dark",
7725
+ colors: [
7726
+ { name: "primary", hex: "#ce612f" },
7727
+ { name: "secondary", hex: "#894e31" },
7728
+ { name: "accent", hex: "#ce612f" },
7729
+ { name: "success", hex: "#6f8f57" },
7730
+ { name: "warning", hex: "#c98a3c" },
7731
+ { name: "destructive", hex: "#c0492f" },
7732
+ { name: "background", hex: "#4f2415" },
7733
+ { name: "surface", hex: "#5c3320" },
7734
+ { name: "surfaceAlt", hex: "#693a25" },
7735
+ { name: "muted", hex: "#6a3d27" },
7736
+ { name: "text", hex: "#f0e1d0" },
7737
+ { name: "primaryForeground", hex: "#4f2415" },
7738
+ { name: "border", hex: "#894e31" }
7739
+ ]
7740
+ });
7741
+
7408
7742
  // ../theme-core/src/palette/variants/index.ts
7409
7743
  var paletteVariants = [
7410
7744
  // Brand-led family
@@ -7424,13 +7758,192 @@ var paletteVariants = [
7424
7758
  // Soft-natural family
7425
7759
  softNaturalSage,
7426
7760
  softNaturalStone,
7427
- softNaturalWatercolor
7761
+ softNaturalWatercolor,
7762
+ softNaturalLilac,
7763
+ // Warm-dark family (dark mode)
7764
+ warmDarkEmber
7428
7765
  ];
7429
7766
  var paletteVariantsById = new Map(
7430
7767
  paletteVariants.map((v) => [v.id, v])
7431
7768
  );
7432
7769
 
7433
7770
  // ../theme-core/src/accordions/siteStyleDefaults.ts
7771
+ var editorialDividedAccordionSystem = {
7772
+ background: null,
7773
+ spacing: "comfortable",
7774
+ corners: "square",
7775
+ border: null,
7776
+ shadow: null,
7777
+ icon: {
7778
+ style: "plus-minus",
7779
+ position: "right",
7780
+ size: "md",
7781
+ colorToken: "primary"
7782
+ },
7783
+ trigger: {
7784
+ textColorToken: "text",
7785
+ fontWeight: "regular",
7786
+ fontFamily: "heading",
7787
+ fontScale: "lg"
7788
+ },
7789
+ hover: {
7790
+ textColorToken: "primary"
7791
+ },
7792
+ openState: {
7793
+ backgroundColorToken: "surfaceAlt",
7794
+ triggerColorToken: "primary",
7795
+ accent: {
7796
+ edge: "left",
7797
+ colorToken: "primary",
7798
+ thickness: "medium"
7799
+ }
7800
+ },
7801
+ content: {
7802
+ textColorToken: "neutral-700"
7803
+ }
7804
+ };
7805
+ var quietUnderlinedAccordionSystem = {
7806
+ background: null,
7807
+ spacing: "spacious",
7808
+ corners: "square",
7809
+ border: null,
7810
+ shadow: null,
7811
+ icon: {
7812
+ style: "chevron",
7813
+ position: "right",
7814
+ size: "sm",
7815
+ colorToken: "muted"
7816
+ },
7817
+ trigger: {
7818
+ textColorToken: "text",
7819
+ fontWeight: "regular",
7820
+ fontFamily: "heading",
7821
+ fontScale: "lg"
7822
+ },
7823
+ hover: {
7824
+ textColorToken: "primary"
7825
+ },
7826
+ openState: {
7827
+ triggerColorToken: "primary"
7828
+ },
7829
+ content: {
7830
+ textColorToken: "neutral-700"
7831
+ }
7832
+ };
7833
+ var calmPanelAccordionSystem = {
7834
+ background: {
7835
+ type: "solid",
7836
+ colorToken: "surface"
7837
+ },
7838
+ spacing: "comfortable",
7839
+ corners: "soft",
7840
+ border: {
7841
+ widthClass: "border",
7842
+ colorToken: "border"
7843
+ },
7844
+ shadow: {
7845
+ elevation: "low",
7846
+ softness: "soft",
7847
+ position: "bottom"
7848
+ },
7849
+ icon: {
7850
+ style: "chevron",
7851
+ position: "right",
7852
+ size: "md",
7853
+ colorToken: "primary"
7854
+ },
7855
+ trigger: {
7856
+ textColorToken: "text",
7857
+ fontWeight: "medium",
7858
+ fontFamily: "heading",
7859
+ fontScale: "md"
7860
+ },
7861
+ hover: {
7862
+ backgroundColorToken: "primary/5",
7863
+ textColorToken: "primary"
7864
+ },
7865
+ openState: {
7866
+ backgroundColorToken: "primary/5",
7867
+ triggerColorToken: "primary"
7868
+ },
7869
+ content: {
7870
+ textColorToken: "neutral-700"
7871
+ }
7872
+ };
7873
+ var boldBorderedAccordionSystem = {
7874
+ background: {
7875
+ type: "solid",
7876
+ colorToken: "surface"
7877
+ },
7878
+ spacing: "comfortable",
7879
+ corners: "soft",
7880
+ border: {
7881
+ widthClass: "border-2",
7882
+ colorToken: "border"
7883
+ },
7884
+ shadow: null,
7885
+ icon: {
7886
+ style: "plus-minus",
7887
+ position: "right",
7888
+ size: "lg",
7889
+ colorToken: "primary"
7890
+ },
7891
+ trigger: {
7892
+ textColorToken: "text",
7893
+ fontWeight: "bold",
7894
+ fontFamily: "heading",
7895
+ fontScale: "md"
7896
+ },
7897
+ hover: {
7898
+ backgroundColorToken: "primary/10",
7899
+ textColorToken: "primary"
7900
+ },
7901
+ openState: {
7902
+ backgroundColorToken: "primary/10",
7903
+ triggerColorToken: "primary",
7904
+ accent: {
7905
+ edge: "left",
7906
+ colorToken: "primary",
7907
+ thickness: "thick"
7908
+ }
7909
+ },
7910
+ content: {
7911
+ textColorToken: "neutral-700"
7912
+ }
7913
+ };
7914
+ var warmInsetAccordionSystem = {
7915
+ background: {
7916
+ type: "solid",
7917
+ colorToken: "surfaceAlt"
7918
+ },
7919
+ spacing: "comfortable",
7920
+ corners: "rounded",
7921
+ border: null,
7922
+ shadow: null,
7923
+ icon: {
7924
+ style: "circle-plus-minus",
7925
+ position: "right",
7926
+ size: "md",
7927
+ colorToken: "primary"
7928
+ },
7929
+ trigger: {
7930
+ textColorToken: "text",
7931
+ fontWeight: "semibold",
7932
+ fontFamily: "heading",
7933
+ fontScale: "md"
7934
+ },
7935
+ hover: {
7936
+ backgroundColorToken: "primary/5",
7937
+ textColorToken: "primary"
7938
+ },
7939
+ openState: {
7940
+ backgroundColorToken: "surface",
7941
+ triggerColorToken: "primary"
7942
+ },
7943
+ content: {
7944
+ textColorToken: "neutral-700"
7945
+ }
7946
+ };
7434
7947
  var softEarthAccordionSystem = {
7435
7948
  background: {
7436
7949
  type: "solid",
@@ -7448,16 +7961,122 @@ var softEarthAccordionSystem = {
7448
7961
  },
7449
7962
  trigger: {
7450
7963
  textColorToken: "text",
7451
- fontWeight: "medium"
7964
+ fontWeight: "medium",
7965
+ fontFamily: "heading",
7966
+ fontScale: "md"
7452
7967
  },
7453
7968
  hover: {
7454
7969
  textColorToken: "primary"
7455
7970
  },
7971
+ openState: {
7972
+ triggerColorToken: "primary"
7973
+ },
7456
7974
  content: {
7457
7975
  textColorToken: "neutral-700"
7458
7976
  }
7459
7977
  };
7460
7978
 
7979
+ // ../theme-core/src/cards/siteStyleDefaults.ts
7980
+ var southWestCardSystem = {
7981
+ variants: [
7982
+ {
7983
+ id: "default",
7984
+ name: "Default",
7985
+ enabled: true,
7986
+ priority: 1,
7987
+ background: { type: "solid", colorToken: "surface" },
7988
+ foregroundToken: "text",
7989
+ spacing: "comfortable",
7990
+ corners: "soft",
7991
+ shadow: { elevation: "low", softness: "soft", position: "bottom" }
7992
+ },
7993
+ {
7994
+ id: "alternative",
7995
+ name: "Statement",
7996
+ enabled: true,
7997
+ priority: 2,
7998
+ background: { type: "solid", colorToken: "primary-700" },
7999
+ foregroundToken: "primaryForeground",
8000
+ spacing: "comfortable",
8001
+ // No shadow on the variant itself: the elevation comes from the look's
8002
+ // 'raised' item surface (rb-shadow-md = var(--shadow-md)), reproducing the
8003
+ // legacy accent-quote card's shadow exactly.
8004
+ shadow: { elevation: "none", softness: null, position: "bottom" },
8005
+ accentEdge: { edge: "left", colorToken: "secondary", width: "heavy" },
8006
+ cornerRadii: {
8007
+ topLeft: "square",
8008
+ topRight: "expressive",
8009
+ bottomLeft: "square",
8010
+ bottomRight: "square"
8011
+ }
8012
+ }
8013
+ ]
8014
+ };
8015
+ var clarityZenCardSystem = {
8016
+ variants: [
8017
+ {
8018
+ id: "default",
8019
+ name: "Default",
8020
+ enabled: true,
8021
+ priority: 1,
8022
+ background: { type: "solid", colorToken: "surface" },
8023
+ // A filled card establishes its own text colour so it stays legible on a
8024
+ // coloured section band (which sets a contrasting section-text colour).
8025
+ foregroundToken: "text",
8026
+ spacing: "comfortable",
8027
+ corners: "rounded",
8028
+ shadow: { elevation: "low", softness: "soft", position: "bottom" }
8029
+ },
8030
+ {
8031
+ id: "alternative",
8032
+ name: "Statement",
8033
+ enabled: true,
8034
+ priority: 2,
8035
+ // Themed surfaceAlt tint + a touch more elevation so an emphasised
8036
+ // section reads as a deliberate "statement" against the default card.
8037
+ background: { type: "solid", colorToken: "surfaceAlt" },
8038
+ foregroundToken: "text",
8039
+ spacing: "comfortable",
8040
+ corners: "rounded",
8041
+ shadow: { elevation: "medium", softness: "soft", position: "bottom" }
8042
+ }
8043
+ ]
8044
+ };
8045
+ var originalJoyCardSystem = {
8046
+ variants: [
8047
+ {
8048
+ id: "default",
8049
+ name: "Default",
8050
+ enabled: true,
8051
+ priority: 1,
8052
+ background: { type: "solid", colorToken: "surface" },
8053
+ foregroundToken: "text",
8054
+ spacing: "comfortable",
8055
+ corners: "rounded",
8056
+ shadow: { elevation: "none", softness: null, position: "bottom" }
8057
+ },
8058
+ {
8059
+ id: "alternative",
8060
+ name: "Statement",
8061
+ enabled: true,
8062
+ priority: 2,
8063
+ background: { type: "solid", colorToken: "primary" },
8064
+ foregroundToken: "primaryForeground",
8065
+ spacing: "comfortable",
8066
+ corners: "rounded",
8067
+ shadow: { elevation: "none", softness: null, position: "bottom" }
8068
+ }
8069
+ ]
8070
+ };
8071
+
8072
+ // ../theme-core/src/site-styles/testimonialQuotePresets.ts
8073
+ var serifDisplayQuote = {
8074
+ style: "serif-display"
8075
+ };
8076
+ var accentGlyphQuote = {
8077
+ style: "accent-glyph"
8078
+ };
8079
+
7461
8080
  // ../theme-core/src/site-styles/headerLooks.ts
7462
8081
  function asHeaderLookId(value) {
7463
8082
  return value;
@@ -7468,6 +8087,89 @@ function asHeaderLayoutId(value) {
7468
8087
  function asHeaderStyleId(value) {
7469
8088
  return value;
7470
8089
  }
8090
+ var titleOnlyLogoAccommodation = {
8091
+ pattern: "title-only",
8092
+ supportedShapes: ["none", "horizontal", "square", "portrait", "tall"],
8093
+ supportedTextPresence: ["contains-text", "no-text", "unknown"],
8094
+ supportedDisplayModes: ["title-only"],
8095
+ size: "compact"
8096
+ };
8097
+ var inlineWordmarkLogoAccommodation = {
8098
+ pattern: "inline-wordmark",
8099
+ supportedShapes: ["horizontal"],
8100
+ supportedTextPresence: ["contains-text", "no-text", "unknown"],
8101
+ supportedDisplayModes: ["logo-only"],
8102
+ size: "standard",
8103
+ maxDensity: "detailed"
8104
+ };
8105
+ var inlineMarkWithTitleLogoAccommodation = {
8106
+ pattern: "inline-mark-with-title",
8107
+ supportedShapes: ["horizontal", "square", "portrait", "tall"],
8108
+ supportedTextPresence: ["no-text"],
8109
+ supportedDisplayModes: ["logo-plus-title"],
8110
+ size: "compact",
8111
+ maxDensity: "simple"
8112
+ };
8113
+ var logoPlateAccommodation = {
8114
+ pattern: "logo-plate",
8115
+ supportedShapes: ["square", "portrait", "tall"],
8116
+ supportedTextPresence: ["contains-text", "unknown"],
8117
+ supportedDisplayModes: ["logo-only"],
8118
+ size: "display",
8119
+ providesBacking: true
8120
+ };
8121
+ var centeredBadgeAccommodation = {
8122
+ pattern: "centered-badge",
8123
+ supportedShapes: ["square", "portrait", "tall"],
8124
+ supportedTextPresence: ["contains-text", "unknown"],
8125
+ supportedDisplayModes: ["logo-only"],
8126
+ size: "display",
8127
+ providesBacking: true
8128
+ };
8129
+ var popoutBadgeAccommodation = {
8130
+ pattern: "popout-badge",
8131
+ supportedShapes: ["square", "portrait", "tall"],
8132
+ supportedTextPresence: ["contains-text", "unknown"],
8133
+ supportedDisplayModes: ["logo-only"],
8134
+ size: "display",
8135
+ providesBacking: true
8136
+ };
8137
+ var centeredMastheadAccommodation = {
8138
+ pattern: "centered-masthead",
8139
+ supportedShapes: ["square", "portrait", "tall"],
8140
+ supportedTextPresence: ["contains-text", "unknown"],
8141
+ supportedDisplayModes: ["logo-only"],
8142
+ size: "display",
8143
+ providesBacking: true
8144
+ };
8145
+ var unbackedOverlayLogoAccommodation = {
8146
+ pattern: "inline-logo-only",
8147
+ supportedShapes: ["square"],
8148
+ supportedTextPresence: ["contains-text", "unknown"],
8149
+ supportedDisplayModes: ["logo-only"],
8150
+ size: "compact",
8151
+ providesBacking: false
8152
+ };
8153
+ var inlineClassicLogoAccommodations = [
8154
+ titleOnlyLogoAccommodation,
8155
+ inlineWordmarkLogoAccommodation,
8156
+ inlineMarkWithTitleLogoAccommodation,
8157
+ popoutBadgeAccommodation,
8158
+ logoPlateAccommodation
8159
+ ];
8160
+ var centeredLogoAccommodations = [
8161
+ titleOnlyLogoAccommodation,
8162
+ inlineWordmarkLogoAccommodation,
8163
+ inlineMarkWithTitleLogoAccommodation,
8164
+ centeredMastheadAccommodation,
8165
+ centeredBadgeAccommodation
8166
+ ];
8167
+ var overlayLogoAccommodations = [
8168
+ titleOnlyLogoAccommodation,
8169
+ inlineWordmarkLogoAccommodation,
8170
+ inlineMarkWithTitleLogoAccommodation,
8171
+ unbackedOverlayLogoAccommodation
8172
+ ];
7471
8173
  function baseHeader(theme) {
7472
8174
  const {
7473
8175
  navLinkStyle: _navLinkStyle,
@@ -7486,7 +8188,7 @@ function baseHeader(theme) {
7486
8188
  navContainer: { type: "none", tint: null, opacity: 0.15 }
7487
8189
  };
7488
8190
  }
7489
- var headerLayoutCatalog = [
8191
+ var headerLayoutCatalog = defineExactCatalog()([
7490
8192
  {
7491
8193
  id: asHeaderLayoutId("classic"),
7492
8194
  label: "Classic",
@@ -7518,11 +8220,11 @@ var headerLayoutCatalog = [
7518
8220
  maxRecommendedNavItems: 5,
7519
8221
  allowedLogoShapes: ["none", "text-only", "horizontal"]
7520
8222
  }
7521
- ];
8223
+ ]);
7522
8224
  function supportedLayouts(ids) {
7523
8225
  return ids.map(asHeaderLayoutId);
7524
8226
  }
7525
- var headerStyleCatalog = [
8227
+ var headerStyleCatalog = defineExactCatalog()([
7526
8228
  {
7527
8229
  id: asHeaderStyleId("minimal"),
7528
8230
  label: "Minimal",
@@ -7677,7 +8379,7 @@ var headerStyleCatalog = [
7677
8379
  navTypography: "heading",
7678
8380
  moods: ["calm", "editorial"]
7679
8381
  }
7680
- ];
8382
+ ]);
7681
8383
  var headerLayoutsById = new Map(
7682
8384
  headerLayoutCatalog.map((layout) => [layout.id, layout])
7683
8385
  );
@@ -7790,7 +8492,7 @@ var headerStyleRepairOrder = /* @__PURE__ */ new Map(
7790
8492
  [asHeaderStyleId("minimal"), headerStyleRepairChain(["minimal"])]
7791
8493
  ]
7792
8494
  );
7793
- var legacyHeaderLookAliases = [
8495
+ var legacyHeaderLookAliases = defineExactCatalog()([
7794
8496
  {
7795
8497
  lookId: asHeaderLookId("clean-base"),
7796
8498
  selection: {
@@ -7847,7 +8549,7 @@ var legacyHeaderLookAliases = [
7847
8549
  styleId: asHeaderStyleId("glass")
7848
8550
  }
7849
8551
  }
7850
- ];
8552
+ ]);
7851
8553
  var legacyHeaderLookAliasesById = new Map(legacyHeaderLookAliases.map((alias) => [alias.lookId, alias]));
7852
8554
  function getHeaderStyle(id) {
7853
8555
  return headerStylesById.get(id) ?? null;
@@ -8001,6 +8703,12 @@ function serifLineHeader(theme) {
8001
8703
  letterSpacing: "wide",
8002
8704
  gradient: false
8003
8705
  },
8706
+ border: {
8707
+ style: "solid",
8708
+ width: "none",
8709
+ position: "none"
8710
+ },
8711
+ shadow: { elevation: "none" },
8004
8712
  ctaTreatment: "outline",
8005
8713
  ctaVariant: resolveHeaderCtaVariant(theme, "outline"),
8006
8714
  ctaGap: "relaxed"
@@ -8125,7 +8833,7 @@ function floatingGlassHeader(theme) {
8125
8833
  }
8126
8834
  };
8127
8835
  }
8128
- var headerLookCatalog = [
8836
+ var headerLookCatalog = defineExactCatalog()([
8129
8837
  {
8130
8838
  id: asHeaderLookId("clean-base"),
8131
8839
  label: "Clean base",
@@ -8137,6 +8845,7 @@ var headerLookCatalog = [
8137
8845
  behavior: "sticky"
8138
8846
  },
8139
8847
  openingRequirement: "none",
8848
+ logoAccommodations: inlineClassicLogoAccommodations,
8140
8849
  compile: cleanBaseHeader
8141
8850
  },
8142
8851
  {
@@ -8150,6 +8859,7 @@ var headerLookCatalog = [
8150
8859
  behavior: "sticky-shrink"
8151
8860
  },
8152
8861
  openingRequirement: "none",
8862
+ logoAccommodations: inlineClassicLogoAccommodations,
8153
8863
  compile: solidBrandHeader
8154
8864
  },
8155
8865
  {
@@ -8164,6 +8874,7 @@ var headerLookCatalog = [
8164
8874
  },
8165
8875
  openingRequirement: "none",
8166
8876
  maxRecommendedNavItems: 6,
8877
+ logoAccommodations: centeredLogoAccommodations,
8167
8878
  compile: serifLineHeader
8168
8879
  },
8169
8880
  {
@@ -8178,7 +8889,7 @@ var headerLookCatalog = [
8178
8889
  },
8179
8890
  openingRequirement: "none",
8180
8891
  maxRecommendedNavItems: 5,
8181
- allowedLogoShapes: ["none", "text-only", "horizontal", "square"],
8892
+ logoAccommodations: centeredLogoAccommodations,
8182
8893
  compile: centeredCalmHeader
8183
8894
  },
8184
8895
  {
@@ -8193,6 +8904,7 @@ var headerLookCatalog = [
8193
8904
  },
8194
8905
  openingRequirement: "none",
8195
8906
  requiresProminentCta: true,
8907
+ logoAccommodations: inlineClassicLogoAccommodations,
8196
8908
  compile: practicalUtilityHeader
8197
8909
  },
8198
8910
  {
@@ -8206,6 +8918,7 @@ var headerLookCatalog = [
8206
8918
  behavior: "normal-flow"
8207
8919
  },
8208
8920
  openingRequirement: "reserved-space-ok",
8921
+ logoAccommodations: inlineClassicLogoAccommodations,
8209
8922
  compile: minimalTransparentHeader
8210
8923
  },
8211
8924
  {
@@ -8220,7 +8933,7 @@ var headerLookCatalog = [
8220
8933
  },
8221
8934
  openingRequirement: "requires-image-hero-with-contrast-overlay",
8222
8935
  maxRecommendedNavItems: 5,
8223
- allowedLogoShapes: ["none", "text-only", "horizontal"],
8936
+ logoAccommodations: overlayLogoAccommodations,
8224
8937
  compile: transparentOverlayHeader
8225
8938
  },
8226
8939
  {
@@ -8235,10 +8948,10 @@ var headerLookCatalog = [
8235
8948
  },
8236
8949
  openingRequirement: "requires-image-hero-with-contrast-overlay",
8237
8950
  maxRecommendedNavItems: 5,
8238
- allowedLogoShapes: ["none", "text-only", "horizontal"],
8951
+ logoAccommodations: overlayLogoAccommodations,
8239
8952
  compile: floatingGlassHeader
8240
8953
  }
8241
- ];
8954
+ ]);
8242
8955
  var guaranteedFallbackHeaderLookId = asHeaderLookId("clean-base");
8243
8956
  var guaranteedFallbackHeaderLayoutId = asHeaderLayoutId("classic");
8244
8957
  var guaranteedFallbackHeaderStyleId = asHeaderStyleId("minimal");
@@ -8316,12 +9029,110 @@ function brandTwoBandFooter(theme) {
8316
9029
  }
8317
9030
  };
8318
9031
  }
8319
- var footerLookCatalog = [
9032
+ function centeredCalmFooter(theme) {
9033
+ return {
9034
+ ...theme.footer,
9035
+ variant: "simple",
9036
+ maxWidth: "container",
9037
+ background: {
9038
+ type: "color",
9039
+ color: "surfaceAlt"
9040
+ },
9041
+ navStyle: "minimal",
9042
+ navWeight: "regular",
9043
+ navColor: "text",
9044
+ navLinkStyle: {
9045
+ typography: "body",
9046
+ fontWeight: "regular",
9047
+ textTransform: "none",
9048
+ italic: false,
9049
+ colorToken: "text",
9050
+ hoverColorToken: "primary",
9051
+ padding: "none",
9052
+ borderRadius: "none"
9053
+ },
9054
+ navLayout: {
9055
+ layout: "inline-wrap",
9056
+ align: "center",
9057
+ gapX: "relaxed",
9058
+ gapY: "tight"
9059
+ },
9060
+ logo: {
9061
+ showLogo: true,
9062
+ showLogoText: false,
9063
+ placement: "above",
9064
+ size: "sm",
9065
+ align: "center"
9066
+ },
9067
+ bottomBar: {
9068
+ enabled: true,
9069
+ fullBleed: false,
9070
+ textAlign: "center",
9071
+ paddingX: "default",
9072
+ paddingY: "compact",
9073
+ borderTop: {
9074
+ width: "thin"
9075
+ }
9076
+ }
9077
+ };
9078
+ }
9079
+ function editorialColumnsFooter(theme) {
9080
+ return {
9081
+ ...theme.footer,
9082
+ variant: "columns",
9083
+ maxWidth: "container",
9084
+ background: {
9085
+ type: "color",
9086
+ color: "surface"
9087
+ },
9088
+ navStyle: "minimal",
9089
+ navWeight: "regular",
9090
+ navColor: "text",
9091
+ navLinkStyle: {
9092
+ typography: "body",
9093
+ fontWeight: "regular",
9094
+ textTransform: "none",
9095
+ italic: false,
9096
+ colorToken: "text",
9097
+ hoverColorToken: "primary",
9098
+ padding: "none",
9099
+ borderRadius: "none"
9100
+ },
9101
+ logo: {
9102
+ showLogo: true,
9103
+ showLogoText: true,
9104
+ placement: "left",
9105
+ size: "sm",
9106
+ align: "start"
9107
+ },
9108
+ bottomBar: {
9109
+ enabled: true,
9110
+ fullBleed: false,
9111
+ textAlign: "center",
9112
+ paddingX: "default",
9113
+ paddingY: "compact",
9114
+ borderTop: {
9115
+ width: "thin"
9116
+ }
9117
+ }
9118
+ };
9119
+ }
9120
+ var footerLookCatalog = defineExactCatalog()([
8320
9121
  {
8321
9122
  id: asFooterLookId("footer-muted-grounding"),
8322
9123
  label: "Muted grounding footer",
8323
9124
  compile: mutedGroundingFooter
8324
9125
  },
9126
+ {
9127
+ id: asFooterLookId("footer-centered-calm"),
9128
+ label: "Centered calm footer",
9129
+ compile: centeredCalmFooter
9130
+ },
9131
+ {
9132
+ id: asFooterLookId("footer-editorial-columns"),
9133
+ label: "Editorial columns footer",
9134
+ compile: editorialColumnsFooter
9135
+ },
8325
9136
  {
8326
9137
  id: asFooterLookId("site-footer-brand-two-band"),
8327
9138
  label: "Two-band brand footer",
@@ -8329,7 +9140,7 @@ var footerLookCatalog = [
8329
9140
  allowedContentPresence: ["default-footer", "default-and-blocks"],
8330
9141
  compile: brandTwoBandFooter
8331
9142
  }
8332
- ];
9143
+ ]);
8333
9144
  var footerLooksById = new Map(
8334
9145
  footerLookCatalog.map((look) => [look.id, look])
8335
9146
  );
@@ -8351,7 +9162,7 @@ var generatedDesignOptionCatalog = {
8351
9162
  source: "generated",
8352
9163
  sectionSurfaces: ["base", "muted-band", "accent-band", "brand-depth-band", "hero-image"],
8353
9164
  contentFrames: generatedContentFrames,
8354
- itemSurfaces: ["none", "default", "flat", "outlined", "raised"],
9165
+ itemSurfaces: ["none", "default", "flat", "outlined", "raised", "inset", "editorial", "color-blocked"],
8355
9166
  transitions: ["none", "soft-fade-short", "soft-fade-long"],
8356
9167
  emphases: ["low", "medium", "high"],
8357
9168
  detachedCustom: false
@@ -8360,15 +9171,18 @@ var userDesignOptionCatalog = {
8360
9171
  source: "user",
8361
9172
  sectionSurfaces: generatedDesignOptionCatalog.sectionSurfaces,
8362
9173
  contentFrames: userContentFrames,
8363
- itemSurfaces: [
8364
- ...generatedDesignOptionCatalog.itemSurfaces,
8365
- "inset",
8366
- "editorial"
8367
- ],
9174
+ itemSurfaces: generatedDesignOptionCatalog.itemSurfaces,
8368
9175
  transitions: [
8369
9176
  ...generatedDesignOptionCatalog.transitions,
9177
+ "soft-fade-expansive",
8370
9178
  "wave-edge",
8371
- "angle-edge"
9179
+ "wave-edge-balanced",
9180
+ "wave-edge-gentle",
9181
+ "wave-edge-bold",
9182
+ "wave-edge-drift",
9183
+ "angle-edge",
9184
+ "angle-edge-subtle",
9185
+ "angle-edge-steep"
8372
9186
  ],
8373
9187
  emphases: generatedDesignOptionCatalog.emphases,
8374
9188
  detachedCustom: false
@@ -8549,6 +9363,29 @@ var boldDisplayTypography = {
8549
9363
  },
8550
9364
  scale: "balanced"
8551
9365
  };
9366
+ var originalJoyTypography = {
9367
+ body: {
9368
+ family: "DM Sans, system-ui, sans-serif",
9369
+ size: "md",
9370
+ weight: "regular",
9371
+ lineHeight: "relaxed",
9372
+ letterSpacing: "normal"
9373
+ },
9374
+ headings: {
9375
+ default: {
9376
+ family: "Bricolage Grotesque, system-ui, sans-serif",
9377
+ weight: "bold",
9378
+ lineHeight: "normal",
9379
+ letterSpacing: "tight",
9380
+ italic: null,
9381
+ case: null
9382
+ },
9383
+ h1: { size: "2xl", weight: "bold", lineHeight: "normal", letterSpacing: "tight", italic: null },
9384
+ h2: { size: "xl", weight: "bold", lineHeight: "normal", letterSpacing: "tight", italic: null },
9385
+ h3: { size: "lg", weight: "bold", lineHeight: "normal", letterSpacing: "tight", italic: null }
9386
+ },
9387
+ scale: "balanced"
9388
+ };
8552
9389
  var typographyPresets = [
8553
9390
  defineTypographyPreset({
8554
9391
  id: "typography-preset:modern-sans",
@@ -8635,6 +9472,32 @@ var typographyPresets = [
8635
9472
  mobile: { headlineSize: "4xl", subheadlineSize: "xl" }
8636
9473
  }
8637
9474
  }
9475
+ }),
9476
+ defineTypographyPreset({
9477
+ id: "typography-preset:original-joy",
9478
+ name: "Original Joy",
9479
+ description: "Bold Bricolage Grotesque display headings over a clean DM Sans body, editorial and warm.",
9480
+ defaultFonts: { body: "DM Sans, system-ui, sans-serif", heading: "Bricolage Grotesque, system-ui, sans-serif" },
9481
+ recommendedFonts: {
9482
+ body: ["DM Sans", "Inter", "Manrope"],
9483
+ heading: ["Bricolage Grotesque", "Space Grotesk", "Archivo"]
9484
+ },
9485
+ slotPolicies: { body: bodyReadablePolicy, heading: displayHeadingPolicy },
9486
+ typography: originalJoyTypography,
9487
+ heroTypography: {
9488
+ headlineSize: "6xl",
9489
+ headlineLineHeight: "tight",
9490
+ subheadlineSize: "xl",
9491
+ subheadlineLineHeight: "normal",
9492
+ microHeadlineSize: "6xl",
9493
+ microHeadlineLineHeight: "tight",
9494
+ microSubheadlineSize: "lg",
9495
+ microSubheadlineLineHeight: "normal",
9496
+ responsive: {
9497
+ tablet: { headlineSize: "5xl" },
9498
+ mobile: { headlineSize: "4xl", subheadlineSize: "lg" }
9499
+ }
9500
+ }
8638
9501
  })
8639
9502
  ];
8640
9503
  var typographyPresetsById = new Map(
@@ -8757,6 +9620,10 @@ function defineCuratedSiteStyle(input) {
8757
9620
  supportedItemSurfaces: generatedDesignOptionCatalog.itemSurfaces,
8758
9621
  supportedTransitions: generatedDesignOptionCatalog.transitions
8759
9622
  },
9623
+ // Decoration is opt-in per style so it stays a distinguishing feature, not
9624
+ // wallpaper. Styles that want a mark set `headingDecoration` explicitly;
9625
+ // clean/minimal styles default to none.
9626
+ headingDecoration: input.headingDecoration ?? noHeadingDecoration,
8760
9627
  ...input.themeOverrides ? { themeOverrides: input.themeOverrides } : {},
8761
9628
  ...input.defaultBlockVariants ? { defaultBlockVariants: input.defaultBlockVariants } : {},
8762
9629
  recommendedAppearancePresetIds: (input.recommendedAppearancePresetIds ?? []).map(asAppearancePresetId),
@@ -8943,6 +9810,11 @@ var curatedSiteStyles = [
8943
9810
  defineCuratedSiteStyle({
8944
9811
  id: "site-style:calm-studio",
8945
9812
  name: "Calm Studio",
9813
+ themeOverrides: {
9814
+ accordions: calmPanelAccordionSystem,
9815
+ testimonialQuote: serifDisplayQuote
9816
+ },
9817
+ headingDecoration: { family: "short-center-rule", colorToken: "primary" },
8946
9818
  description: "Soft, measured, and spacious for intimate appointment or class businesses.",
8947
9819
  generationBrief: "Use calm pacing, concise copy, generous breathing room, and natural imagery. Keep calls to action steady rather than urgent.",
8948
9820
  tokenRecipes: {
@@ -8976,6 +9848,10 @@ var curatedSiteStyles = [
8976
9848
  defineCuratedSiteStyle({
8977
9849
  id: "site-style:clear-professional",
8978
9850
  name: "Clear Professional",
9851
+ themeOverrides: {
9852
+ accordions: calmPanelAccordionSystem,
9853
+ testimonialQuote: accentGlyphQuote
9854
+ },
8979
9855
  description: "Crisp, trustworthy, and direct for local services and consultancies.",
8980
9856
  generationBrief: "Prioritize clarity, proof, service detail, and easy next steps. Keep visuals polished and specific, with restrained decorative treatment.",
8981
9857
  tokenRecipes: {
@@ -9007,6 +9883,11 @@ var curatedSiteStyles = [
9007
9883
  defineCuratedSiteStyle({
9008
9884
  id: "site-style:warm-editorial",
9009
9885
  name: "Warm Editorial",
9886
+ themeOverrides: {
9887
+ accordions: editorialDividedAccordionSystem,
9888
+ testimonialQuote: serifDisplayQuote
9889
+ },
9890
+ headingDecoration: { family: "short-center-rule", colorToken: "primary" },
9010
9891
  description: "Story-led and textured for educators, makers, venues, and retreats.",
9011
9892
  generationBrief: "Let the copy feel thoughtful and grounded. Favor narrative sections, supporting media, and a small number of editorial panels.",
9012
9893
  tokenRecipes: {
@@ -9039,6 +9920,11 @@ var curatedSiteStyles = [
9039
9920
  defineCuratedSiteStyle({
9040
9921
  id: "site-style:bright-community",
9041
9922
  name: "Bright Community",
9923
+ themeOverrides: {
9924
+ accordions: warmInsetAccordionSystem,
9925
+ testimonialQuote: accentGlyphQuote
9926
+ },
9927
+ headingDecoration: { family: "short-center-rule", colorToken: "primary" },
9042
9928
  description: "Friendly, welcoming, and active for groups, classes, and neighborhood offers.",
9043
9929
  generationBrief: "Use welcoming language, clear event or booking routes, and optimistic imagery. Let accents appear, but avoid noisy decoration.",
9044
9930
  tokenRecipes: {
@@ -9070,6 +9956,10 @@ var curatedSiteStyles = [
9070
9956
  defineCuratedSiteStyle({
9071
9957
  id: "site-style:quiet-luxury",
9072
9958
  name: "Quiet Luxury",
9959
+ themeOverrides: {
9960
+ accordions: quietUnderlinedAccordionSystem,
9961
+ testimonialQuote: serifDisplayQuote
9962
+ },
9073
9963
  description: "Minimal, confident, and refined for premium experiences and private services.",
9074
9964
  generationBrief: "Use fewer claims, more specificity, and restrained sensory detail. Favor elegant media and low repetition over dense panels.",
9075
9965
  siteCreatorSelection: {
@@ -9112,6 +10002,10 @@ var curatedSiteStyles = [
9112
10002
  defineCuratedSiteStyle({
9113
10003
  id: "site-style:practical-services",
9114
10004
  name: "Practical Services",
10005
+ themeOverrides: {
10006
+ accordions: boldBorderedAccordionSystem,
10007
+ testimonialQuote: accentGlyphQuote
10008
+ },
9115
10009
  description: "Efficient, plainspoken, and conversion-focused for trades and everyday services.",
9116
10010
  generationBrief: "Make services, location, trust signals, and contact paths obvious. Keep copy brief and avoid ornate visual treatments.",
9117
10011
  siteCreatorSelection: { kind: "primary_goal_support" },
@@ -9152,6 +10046,11 @@ var curatedSiteStyles = [
9152
10046
  defineCuratedSiteStyle({
9153
10047
  id: "site-style:modern-wellness",
9154
10048
  name: "Modern Wellness",
10049
+ themeOverrides: {
10050
+ accordions: quietUnderlinedAccordionSystem,
10051
+ testimonialQuote: serifDisplayQuote
10052
+ },
10053
+ headingDecoration: { family: "short-center-rule", colorToken: "primary" },
9155
10054
  description: "Natural, current, and reassuring for practitioners, studios, and wellbeing offers.",
9156
10055
  generationBrief: "Keep the tone warm and practical. Use gentle section variation, natural materials, and inclusive copy without making medical claims.",
9157
10056
  tokenRecipes: {
@@ -9183,6 +10082,10 @@ var curatedSiteStyles = [
9183
10082
  defineCuratedSiteStyle({
9184
10083
  id: "site-style:quiet-practice",
9185
10084
  name: "Quiet Practice",
10085
+ themeOverrides: {
10086
+ accordions: quietUnderlinedAccordionSystem,
10087
+ testimonialQuote: serifDisplayQuote
10088
+ },
9186
10089
  description: "Grounded, calm, and practical for small appointment-first practices.",
9187
10090
  generationBrief: "Make services, practitioner trust, preparation notes, and booking routes easy to scan. Keep the tone warm and specific, with quiet confidence rather than spa cliches or medical claims.",
9188
10091
  siteCreatorSelection: {
@@ -9228,6 +10131,7 @@ var curatedSiteStyles = [
9228
10131
  defineCuratedSiteStyle({
9229
10132
  id: "site-style:clarity-zen-blue",
9230
10133
  name: "Clarity Zen",
10134
+ headingDecoration: { family: "short-center-rule", colorToken: "primary" },
9231
10135
  description: "Calm, editorial, and reassuring for therapy, counselling, and wellbeing support practices.",
9232
10136
  generationBrief: "Use a calm, soft palette, editorial serif headings, warm grounded copy, rounded cards, calm proof sections, and clear booking routes. Keep the tone compassionate and straightforward, with professional trust rather than hard-sell wellness language.",
9233
10137
  siteCreatorSelection: {
@@ -9251,17 +10155,22 @@ var curatedSiteStyles = [
9251
10155
  },
9252
10156
  compositionBudget: balancedBudget,
9253
10157
  themeOverrides: {
10158
+ accordions: editorialDividedAccordionSystem,
10159
+ cards: clarityZenCardSystem,
10160
+ testimonialQuote: serifDisplayQuote,
9254
10161
  typography: {
9255
10162
  body: {
9256
- family: "Inter, system-ui, sans-serif",
10163
+ family: "Roboto, system-ui, sans-serif",
9257
10164
  size: "md",
9258
10165
  weight: "regular",
9259
10166
  lineHeight: "relaxed",
9260
10167
  letterSpacing: "normal"
9261
10168
  },
9262
10169
  headings: {
10170
+ // Forum ships a single 400 weight; keep every heading weight
10171
+ // 'regular' so the Google Fonts request stays valid.
9263
10172
  default: {
9264
- family: '"Cormorant Garamond", Georgia, serif',
10173
+ family: "Forum, Georgia, serif",
9265
10174
  weight: "regular",
9266
10175
  lineHeight: "normal",
9267
10176
  letterSpacing: "normal",
@@ -9277,7 +10186,7 @@ var curatedSiteStyles = [
9277
10186
  italic: null
9278
10187
  },
9279
10188
  h2: {
9280
- size: "lg",
10189
+ size: "xl",
9281
10190
  weight: "regular",
9282
10191
  lineHeight: "normal",
9283
10192
  letterSpacing: "normal",
@@ -9305,10 +10214,13 @@ var curatedSiteStyles = [
9305
10214
  },
9306
10215
  recommendedAppearancePresetIds: [
9307
10216
  "hero-split-editorial",
10217
+ "intro-portrait-bio",
9308
10218
  "intro-organic-statement",
9309
- "feature-cards-raised-rule",
10219
+ "feature-cards-soft-panels",
10220
+ "feature-cards-editorial-columns",
10221
+ "feature-cards-photo-tiles",
9310
10222
  "media-text-quiet-story",
9311
- "testimonials-brand-background-quotes",
10223
+ "testimonials-non-carded",
9312
10224
  "faq-contained-help",
9313
10225
  "contact-form-panel"
9314
10226
  ],
@@ -9318,8 +10230,9 @@ var curatedSiteStyles = [
9318
10230
  "minimal-transparent"
9319
10231
  ],
9320
10232
  recommendedFooterLookIds: [
9321
- "footer-muted-grounding",
9322
- "site-footer-brand-two-band"
10233
+ "footer-centered-calm",
10234
+ "footer-editorial-columns",
10235
+ "footer-muted-grounding"
9323
10236
  ],
9324
10237
  buttonPersonalityChoices: [
9325
10238
  buttonChoice("soft-pill"),
@@ -9327,7 +10240,7 @@ var curatedSiteStyles = [
9327
10240
  buttonChoice("editorial-link")
9328
10241
  ],
9329
10242
  paletteVariantChoices: [
9330
- paletteChoice("brand-led-cool"),
10243
+ paletteChoice("soft-natural-lilac"),
9331
10244
  paletteChoice("soft-natural-watercolor"),
9332
10245
  paletteChoice("soft-natural-stone"),
9333
10246
  paletteChoice("warm-neutral-cream")
@@ -9336,6 +10249,11 @@ var curatedSiteStyles = [
9336
10249
  defineCuratedSiteStyle({
9337
10250
  id: "site-style:personal-retreat-journal",
9338
10251
  name: "Personal Retreat Journal",
10252
+ themeOverrides: {
10253
+ accordions: editorialDividedAccordionSystem,
10254
+ testimonialQuote: serifDisplayQuote
10255
+ },
10256
+ headingDecoration: { family: "short-center-rule", colorToken: "primary" },
9339
10257
  description: "Warm, story-led, and readable for solo practitioners with mixed offers.",
9340
10258
  generationBrief: "Center the practitioner as the guide, then make private sessions, classes, retreats, and resources feel like clear pathways. Keep retreat copy grounded and practical, with enough editorial warmth for longer reading.",
9341
10259
  siteCreatorSelection: {
@@ -9380,6 +10298,11 @@ var curatedSiteStyles = [
9380
10298
  defineCuratedSiteStyle({
9381
10299
  id: "site-style:tactile-workshop",
9382
10300
  name: "Tactile Workshop",
10301
+ themeOverrides: {
10302
+ accordions: warmInsetAccordionSystem,
10303
+ testimonialQuote: accentGlyphQuote
10304
+ },
10305
+ headingDecoration: { family: "organic-squiggle", colorToken: "primary" },
9383
10306
  description: "Bright, hands-on, and image-led for maker studios, workshops, and creative classes.",
9384
10307
  generationBrief: "Lead with objects, materials, studio process, and practical booking detail. Keep the tone warm and direct, with useful mess, clear dates, and enough gallery rhythm to feel like a real creative studio.",
9385
10308
  siteCreatorSelection: {
@@ -9430,6 +10353,7 @@ var curatedSiteStyles = [
9430
10353
  defineCuratedSiteStyle({
9431
10354
  id: SOFT_EARTH_SITE_STYLE_ID,
9432
10355
  name: "Soft Earth",
10356
+ headingDecoration: { family: "organic-squiggle", colorToken: "primary" },
9433
10357
  description: "Warm, grounded, and editorial for yoga studios, retreats, and wellbeing communities.",
9434
10358
  generationBrief: "Use cream space, terracotta CTAs, olive quote bands, natural imagery, generous but composed spacing, and editorial serif headings. Prefer a real intro section, image-led offering cards, warm community quotes, and an FAQ with a full-width intro above two columns of questions when content allows.",
9435
10359
  siteCreatorSelection: {
@@ -9502,7 +10426,8 @@ var curatedSiteStyles = [
9502
10426
  headingSize: "editorial"
9503
10427
  }
9504
10428
  },
9505
- accordions: softEarthAccordionSystem
10429
+ accordions: softEarthAccordionSystem,
10430
+ testimonialQuote: accentGlyphQuote
9506
10431
  },
9507
10432
  defaultBlockVariants: {
9508
10433
  "block.faq": "question-columns"
@@ -9512,7 +10437,7 @@ var curatedSiteStyles = [
9512
10437
  "intro-organic-statement",
9513
10438
  "feature-cards-raised-rule",
9514
10439
  "events-lined-panel",
9515
- "testimonials-brand-background-quotes",
10440
+ "testimonials-non-carded",
9516
10441
  "contact-form-panel"
9517
10442
  ],
9518
10443
  recommendedHeaderLookIds: [
@@ -9540,6 +10465,11 @@ var curatedSiteStyles = [
9540
10465
  defineCuratedSiteStyle({
9541
10466
  id: "site-style:bold-launch",
9542
10467
  name: "Bold Launch",
10468
+ themeOverrides: {
10469
+ accordions: boldBorderedAccordionSystem,
10470
+ testimonialQuote: accentGlyphQuote
10471
+ },
10472
+ headingDecoration: { family: "short-center-rule", colorToken: "primary" },
9543
10473
  description: "High-energy and punchy for launches, campaigns, and creative offers.",
9544
10474
  generationBrief: "Use crisp positioning, bold hero structure, strong calls to action, and confident visual rhythm. Keep it precise, not shouty.",
9545
10475
  siteCreatorSelection: {
@@ -9585,6 +10515,7 @@ var curatedSiteStyles = [
9585
10515
  defineCuratedSiteStyle({
9586
10516
  id: "site-style:south-west-twerk-school",
9587
10517
  name: "South West Twerk School",
10518
+ headingDecoration: { family: "organic-squiggle", colorToken: "primary" },
9588
10519
  description: "Energetic, editorial, and high-contrast for a branded dance school presence.",
9589
10520
  generationBrief: "Use confident rhythm, bold burgundy-and-gold accents, large editorial intro copy, strong booking routes, and dark feature sections where proof or forms need emphasis.",
9590
10521
  tokenRecipes: {
@@ -9604,6 +10535,9 @@ var curatedSiteStyles = [
9604
10535
  ],
9605
10536
  defaultTypographyPresetId: "typography-preset:bold-display",
9606
10537
  themeOverrides: {
10538
+ accordions: boldBorderedAccordionSystem,
10539
+ cards: southWestCardSystem,
10540
+ testimonialQuote: accentGlyphQuote,
9607
10541
  bodyText: {
9608
10542
  intro: {
9609
10543
  paragraphSize: "editorial",
@@ -9616,8 +10550,8 @@ var curatedSiteStyles = [
9616
10550
  "hero-brand-scrim-fixed-frame",
9617
10551
  "body-text-editorial-intro",
9618
10552
  "schedule-details-brand-depth",
9619
- "testimonials-accent-quote-cards",
9620
- "contact-form-brand-depth-card"
10553
+ "testimonials-statement-cards",
10554
+ "contact-form-panel"
9621
10555
  ],
9622
10556
  recommendedHeaderLookIds: [
9623
10557
  "brand-solid",
@@ -9640,6 +10574,74 @@ var curatedSiteStyles = [
9640
10574
  paletteChoice("brand-led-warm"),
9641
10575
  paletteChoice("high-contrast-ink")
9642
10576
  ]
10577
+ }),
10578
+ defineCuratedSiteStyle({
10579
+ id: "site-style:original-joy",
10580
+ name: "Original Joy",
10581
+ headingDecoration: { family: "organic-squiggle", colorToken: "primary" },
10582
+ description: "Warm, dark, and editorial: deep clay grounds, cream type, and bold burnt-orange accents for soulful community brands.",
10583
+ generationBrief: "Use a deep brown ground with cream text and burnt-orange accents, large display headings, generous spacing, organic rounded shapes, and bold colour-blocked feature sections. Lead with warmth and belonging; calls to action should feel strong but unhurried.",
10584
+ tokenRecipes: {
10585
+ palette: "brand-led",
10586
+ contrast: "maximum",
10587
+ radius: "rounded",
10588
+ shadow: "subtle",
10589
+ typography: "clean-sans",
10590
+ spacing: "airy",
10591
+ motion: "expressive"
10592
+ },
10593
+ compositionBudget: expressiveBudget,
10594
+ typographyPresetChoices: [
10595
+ typographyChoice("typography-preset:original-joy"),
10596
+ typographyChoice("typography-preset:bold-display"),
10597
+ typographyChoice("typography-preset:modern-sans")
10598
+ ],
10599
+ defaultTypographyPresetId: "typography-preset:original-joy",
10600
+ themeOverrides: {
10601
+ accordions: boldBorderedAccordionSystem,
10602
+ // Shared card system: warm rounded brown cards (event + testimonial cards
10603
+ // pick this up automatically) with a burnt-orange statement variant.
10604
+ cards: originalJoyCardSystem,
10605
+ testimonialQuote: accentGlyphQuote,
10606
+ bodyText: {
10607
+ intro: {
10608
+ paragraphSize: "editorial",
10609
+ headingSize: "editorial"
10610
+ }
10611
+ }
10612
+ },
10613
+ // Recommended block looks: the bold colour-blocked feature cards, a calm
10614
+ // band for the events spotlight, and statement testimonial cards.
10615
+ recommendedAppearancePresetIds: [
10616
+ "feature-cards-bold-colors",
10617
+ "offerings-calm-list",
10618
+ "testimonials-statement-cards"
10619
+ ],
10620
+ // Floating, transparent "Clear Split" header (no fill behind the nav links).
10621
+ defaultHeaderSelection: { layoutId: "floating", styleId: "minimal-surface" },
10622
+ recommendedHeaderLayoutChoices: [headerLayoutChoice("floating")],
10623
+ recommendedHeaderStyleChoicesByLayout: {
10624
+ floating: [
10625
+ headerStyleChoice("minimal-surface"),
10626
+ headerStyleChoice("split-glass"),
10627
+ headerStyleChoice("glass")
10628
+ ]
10629
+ },
10630
+ // Legacy bridge only (the real curation is the explicit selection above).
10631
+ // Kept to a reserved-space, non-overlay look on purpose: the split hero
10632
+ // flows below the Clear Split header, so we must NOT trigger the immersive
10633
+ // overlay-hero promotion that looks like `floating-glass` would force.
10634
+ recommendedHeaderLookIds: ["minimal-transparent"],
10635
+ recommendedFooterLookIds: [
10636
+ "site-footer-brand-two-band",
10637
+ "footer-muted-grounding"
10638
+ ],
10639
+ buttonPersonalityChoices: [
10640
+ buttonChoice("joy-stamp"),
10641
+ buttonChoice("ink-stamp"),
10642
+ buttonChoice("showtime-pill")
10643
+ ],
10644
+ paletteVariantChoices: [paletteChoice("warm-dark-ember")]
9643
10645
  })
9644
10646
  ];
9645
10647
  var curatedSiteStylesById = new Map(
@@ -13501,9 +14503,21 @@ var NAV_LINK_PRESETS = {
13501
14503
  var NAV_LINK_PRESET_IDS = Object.keys(NAV_LINK_PRESETS);
13502
14504
 
13503
14505
  // ../theme-core/src/layout/generateLayoutCss.ts
13504
- var waveTransitionMask = svgDataUrl(
14506
+ var classicWaveTransitionMask = svgDataUrl(
13505
14507
  "<svg viewBox='0 0 1440 72' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'><path d='M0 72V46C130 55 260 24 420 30C590 36 690 62 860 42C1035 21 1160 47 1305 36C1365 31 1415 33 1440 38V72H0Z' fill='white'/></svg>"
13506
14508
  );
14509
+ var balancedWaveTransitionMask = svgDataUrl(
14510
+ "<svg viewBox='0 0 1440 72' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'><path d='M0 72V42C120 24 240 24 360 42C480 60 600 60 720 42C840 24 960 24 1080 42C1200 60 1320 60 1440 42V72H0Z' fill='white'/></svg>"
14511
+ );
14512
+ var gentleWaveTransitionMask = svgDataUrl(
14513
+ "<svg viewBox='0 0 1440 72' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'><path d='M0 72V43C180 32 300 32 480 43C660 54 780 54 960 43C1140 32 1260 32 1440 43V72H0Z' fill='white'/></svg>"
14514
+ );
14515
+ var boldWaveTransitionMask = svgDataUrl(
14516
+ "<svg viewBox='0 0 1440 72' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'><path d='M0 72V44C90 14 270 14 360 44C450 74 630 74 720 44C810 14 990 14 1080 44C1170 74 1350 74 1440 44V72H0Z' fill='white'/></svg>"
14517
+ );
14518
+ var driftWaveTransitionMask = svgDataUrl(
14519
+ "<svg viewBox='0 0 1440 72' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'><path d='M0 72V39C115 31 205 54 340 48C505 41 610 16 760 33C920 51 1015 64 1160 44C1280 27 1375 35 1440 50V72H0Z' fill='white'/></svg>"
14520
+ );
13507
14521
  function svgDataUrl(svg) {
13508
14522
  return `data:image/svg+xml,${encodeURIComponent(svg)}`;
13509
14523
  }
@@ -13848,14 +14862,77 @@ ${root} {
13848
14862
  }
13849
14863
 
13850
14864
  // ../theme-core/src/blocks/vars/testimonials.ts
13851
- function generateTestimonialsVars({ themeId }) {
14865
+ var QUOTE_SCALE_SIZE = {
14866
+ sm: "2.5rem",
14867
+ md: "3.5rem",
14868
+ // 4.375rem == 3.5rem * 1.25, matching the legacy accent-quote mark size.
14869
+ lg: "4.375rem",
14870
+ xl: "clamp(3.5rem, 2rem + 4vw, 5.5rem)"
14871
+ };
14872
+ function resolveTestimonialQuoteVars(treatment) {
14873
+ if (!treatment) {
14874
+ return {
14875
+ size: QUOTE_SCALE_SIZE.md,
14876
+ opacity: "0.08",
14877
+ color: "rgb(var(--tb-primary))",
14878
+ font: "inherit",
14879
+ weight: "700",
14880
+ display: "block"
14881
+ };
14882
+ }
14883
+ if (treatment.style === "none") {
14884
+ return {
14885
+ size: QUOTE_SCALE_SIZE.md,
14886
+ opacity: "0",
14887
+ color: "rgb(var(--tb-primary))",
14888
+ font: "inherit",
14889
+ weight: "700",
14890
+ display: "none"
14891
+ };
14892
+ }
14893
+ const base = treatment.style === "serif-display" ? {
14894
+ fontFamily: "heading",
14895
+ scale: "xl",
14896
+ colorToken: "primary",
14897
+ opacity: 1
14898
+ } : {
14899
+ // accent-glyph
14900
+ fontFamily: "body",
14901
+ scale: "lg",
14902
+ colorToken: "secondary",
14903
+ opacity: 1
14904
+ };
14905
+ const fontFamily = treatment.fontFamily ?? base.fontFamily;
14906
+ const scale = treatment.scale ?? base.scale;
14907
+ const colorToken = treatment.colorToken ?? base.colorToken;
14908
+ const opacity = treatment.opacity ?? base.opacity;
14909
+ return {
14910
+ size: QUOTE_SCALE_SIZE[scale],
14911
+ opacity: String(opacity),
14912
+ color: rgbColorValue(colorToken),
14913
+ font: fontFamily === "heading" ? "var(--font-heading)" : "var(--font-body, inherit)",
14914
+ // Heading-font display marks render at the family's natural weight (Forum
14915
+ // ships a single 400) to avoid synthetic bold; glyph marks stay heavy.
14916
+ weight: fontFamily === "heading" ? "400" : "700",
14917
+ display: "block"
14918
+ };
14919
+ }
14920
+ function generateTestimonialsVars({
14921
+ themeId,
14922
+ theme
14923
+ }) {
13852
14924
  const root = `:where([data-theme-scope="${themeId}"]) :where([data-block="testimonials"])`;
14925
+ const quote = resolveTestimonialQuoteVars(theme.testimonialQuote);
13853
14926
  return `
13854
14927
  ${root} {
13855
14928
  --rb-testimonial-avatar-size: 3rem;
13856
14929
  --rb-testimonial-avatar-border-radius: 9999px;
13857
- --rb-testimonial-quote-size: 3.5rem;
13858
- --rb-testimonial-quote-opacity: 0.08;
14930
+ --rb-testimonial-quote-size: ${quote.size};
14931
+ --rb-testimonial-quote-opacity: ${quote.opacity};
14932
+ --rb-testimonial-quote-color: ${quote.color};
14933
+ --rb-testimonial-quote-font: ${quote.font};
14934
+ --rb-testimonial-quote-weight: ${quote.weight};
14935
+ --rb-testimonial-quote-display: ${quote.display};
13859
14936
 
13860
14937
  /* Carousel arrows (defaults: primary background + onPrimary icon) */
13861
14938
  --rb-testimonial-carousel-arrow-bg: rgb(var(--tb-primary));