@riverbankcms/sdk 0.128.0 → 0.129.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/README.md +52 -256
  2. package/dist/{PreviewEditorSidebar-Dbvb7GIr.mjs → PreviewEditorSidebar-DceRseRV.mjs} +3 -3
  3. package/dist/{PreviewEditorUI-e9O9l20X.mjs → PreviewEditorUI-BNunq3kk.mjs} +2 -2
  4. package/dist/{SdkPreviewModeRuntime-BZHt6e9w.mjs → SdkPreviewModeRuntime-Bt87-62u.mjs} +495 -292
  5. package/dist/{SiteChromeCustomizeContext-CvuGbHJX.mjs → SiteChromeCustomizeContext-BLl-OlL4.mjs} +600 -533
  6. package/dist/_dts/ai/src/contracts/commandExposure.d.ts +1 -1
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +4897 -4897
  8. package/dist/_dts/api/src/index.d.ts +2 -1
  9. package/dist/_dts/api/src/sdk-event-management.d.ts +53 -0
  10. package/dist/_dts/api/src/sdk-event-schedule.d.ts +3 -6
  11. package/dist/_dts/api/src/sdkContracts.d.ts +37 -50
  12. package/dist/_dts/api/src/sdkThemeWire.d.ts +2595 -0
  13. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +13 -29
  14. package/dist/_dts/blocks/src/PageRenderer.d.ts +20 -10
  15. package/dist/_dts/blocks/src/index.d.ts +2 -1
  16. package/dist/_dts/blocks/src/pageRendererBoundaries.d.ts +30 -0
  17. package/dist/_dts/blocks/src/pageRenderingMode.d.ts +37 -0
  18. package/dist/_dts/blocks/src/server.d.ts +1 -1
  19. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +14 -0
  20. package/dist/_dts/media-core/src/index.d.ts +1 -0
  21. package/dist/_dts/preview-next/src/client/blocks/pageDesignRuntimePreview.d.ts +2 -0
  22. package/dist/_dts/preview-next/src/client/index.d.ts +47 -47
  23. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +18 -6
  24. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +30 -21
  25. package/dist/_dts/preview-next/src/client/preview/PreviewThemedSiteDocument.d.ts +18 -5
  26. package/dist/_dts/preview-next/src/client/preview/themeRuntime.d.ts +9 -0
  27. package/dist/_dts/preview-next/src/client/sdk/SdkPreviewMode.d.ts +21 -6
  28. package/dist/_dts/preview-next/src/client/sdk-runtime.d.ts +8 -8
  29. package/dist/_dts/sdk/src/config/types.d.ts +4 -4
  30. package/dist/_dts/sdk/src/next/catch-all.d.ts +6 -0
  31. package/dist/_dts/sdk/src/next/index.d.ts +2 -1
  32. package/dist/_dts/sdk/src/next/renderSdkContent.d.ts +33 -0
  33. package/dist/_dts/sdk/src/next/types.d.ts +23 -9
  34. package/dist/_dts/sdk/src/preview-next/before-render.d.ts +4 -6
  35. package/dist/_dts/sdk/src/preview-next/client/index.d.ts +3 -3
  36. package/dist/_dts/sdk/src/preview-next/client/runtime.d.ts +1 -1
  37. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +25 -3
  38. package/dist/_dts/sdk/src/rendering/components/Block.shared.d.ts +13 -2
  39. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +31 -18
  40. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +20 -9
  41. package/dist/_dts/sdk/src/rendering/index.d.ts +4 -2
  42. package/dist/_dts/sdk/src/rendering/renderingMode.d.ts +23 -0
  43. package/dist/_dts/sdk/src/rendering/server.d.ts +5 -3
  44. package/dist/_dts/sdk/src/rendering/themeRuntime.d.ts +6 -0
  45. package/dist/_dts/sdk/src/version.d.ts +1 -1
  46. package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
  47. package/dist/_dts/theme-core/src/palette/index.d.ts +1 -0
  48. package/dist/_dts/theme-core/src/site-styles/headerLayoutStyleCatalog.d.ts +254 -0
  49. package/dist/_dts/theme-core/src/site-styles/headerLegacyLooks.d.ts +372 -0
  50. package/dist/_dts/theme-core/src/site-styles/headerLookBranding.d.ts +106 -0
  51. package/dist/_dts/theme-core/src/site-styles/headerLookSelection.d.ts +2 -0
  52. package/dist/_dts/theme-core/src/site-styles/headerLookTypes.d.ts +212 -0
  53. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +7 -841
  54. package/dist/_dts/theme-core/src/site-styles/headerStyleCompiler.d.ts +3 -0
  55. package/dist/_dts/theme-core/src/site-styles/headerStyleCompilerPrimitives.d.ts +23 -0
  56. package/dist/client/client.mjs +911 -762
  57. package/dist/client/hooks.mjs +59 -36
  58. package/dist/client/rendering/client.mjs +593 -547
  59. package/dist/client/rendering.mjs +994 -783
  60. package/dist/preview-next/before-render.mjs +10 -3
  61. package/dist/preview-next/client/runtime.mjs +3 -3
  62. package/dist/{sdk-runtime-Cn_QSCOg.mjs → sdk-runtime-C20CVWbb.mjs} +1 -1
  63. package/dist/{separator-CEoGABRc.mjs → separator-BE3NCquy.mjs} +1 -1
  64. package/dist/server/components.mjs +549 -399
  65. package/dist/server/config-validation.mjs +59 -36
  66. package/dist/server/config.mjs +59 -36
  67. package/dist/server/data.mjs +59 -36
  68. package/dist/server/index.mjs +1 -1
  69. package/dist/server/manifest.mjs +4966 -0
  70. package/dist/server/next.mjs +700 -537
  71. package/dist/server/page-converter.mjs +40 -36
  72. package/dist/server/prebuild.mjs +1 -1
  73. package/dist/server/rendering/server.mjs +571 -404
  74. package/dist/server/rendering.mjs +571 -404
  75. package/dist/server/routing.mjs +472 -402
  76. package/dist/server/server.mjs +60 -37
  77. package/dist/server/theme-bridge.mjs +70 -66
  78. package/package.json +9 -12
  79. package/dist/_dts/api/src/event-presentation.d.ts +0 -14
  80. package/dist/_dts/blocks/src/definitions.d.ts +0 -14
  81. package/dist/_dts/sdk/src/cli/canonical-entry-policy.d.ts +0 -53
  82. package/dist/_dts/sdk/src/cli/commands/audit.d.ts +0 -101
  83. package/dist/_dts/sdk/src/cli/commands/block.d.ts +0 -24
  84. package/dist/_dts/sdk/src/cli/commands/compare.d.ts +0 -62
  85. package/dist/_dts/sdk/src/cli/commands/content-type.d.ts +0 -10
  86. package/dist/_dts/sdk/src/cli/commands/content.d.ts +0 -56
  87. package/dist/_dts/sdk/src/cli/commands/delete.d.ts +0 -14
  88. package/dist/_dts/sdk/src/cli/commands/deploy.d.ts +0 -43
  89. package/dist/_dts/sdk/src/cli/commands/drafts.d.ts +0 -18
  90. package/dist/_dts/sdk/src/cli/commands/entry.d.ts +0 -55
  91. package/dist/_dts/sdk/src/cli/commands/env.d.ts +0 -31
  92. package/dist/_dts/sdk/src/cli/commands/event.d.ts +0 -23
  93. package/dist/_dts/sdk/src/cli/commands/eventOccurrenceSchedule.d.ts +0 -12
  94. package/dist/_dts/sdk/src/cli/commands/identifiers.d.ts +0 -10
  95. package/dist/_dts/sdk/src/cli/commands/init-docs.d.ts +0 -13
  96. package/dist/_dts/sdk/src/cli/commands/manifest.d.ts +0 -10
  97. package/dist/_dts/sdk/src/cli/commands/media-validation.d.ts +0 -3
  98. package/dist/_dts/sdk/src/cli/commands/migrate.d.ts +0 -11
  99. package/dist/_dts/sdk/src/cli/commands/navigation.d.ts +0 -12
  100. package/dist/_dts/sdk/src/cli/commands/page.d.ts +0 -14
  101. package/dist/_dts/sdk/src/cli/commands/publish-all.d.ts +0 -50
  102. package/dist/_dts/sdk/src/cli/commands/pull-dated-offering-scope.d.ts +0 -10
  103. package/dist/_dts/sdk/src/cli/commands/pull-dry-run.d.ts +0 -70
  104. package/dist/_dts/sdk/src/cli/commands/pull-scope-diff.d.ts +0 -8
  105. package/dist/_dts/sdk/src/cli/commands/pull.d.ts +0 -43
  106. package/dist/_dts/sdk/src/cli/commands/push/consts.d.ts +0 -3
  107. package/dist/_dts/sdk/src/cli/commands/push/execute/diff.d.ts +0 -19
  108. package/dist/_dts/sdk/src/cli/commands/push/execute/footer.d.ts +0 -42
  109. package/dist/_dts/sdk/src/cli/commands/push/execute/localMediaReporting.d.ts +0 -23
  110. package/dist/_dts/sdk/src/cli/commands/push/execute/media.d.ts +0 -22
  111. package/dist/_dts/sdk/src/cli/commands/push/execute/metadata.d.ts +0 -1
  112. package/dist/_dts/sdk/src/cli/commands/push/execute/reporting.d.ts +0 -7
  113. package/dist/_dts/sdk/src/cli/commands/push/execute/theme.d.ts +0 -63
  114. package/dist/_dts/sdk/src/cli/commands/push/filter.d.ts +0 -15
  115. package/dist/_dts/sdk/src/cli/commands/push/metadata.d.ts +0 -29
  116. package/dist/_dts/sdk/src/cli/commands/push/normalizeLocalContent.d.ts +0 -2
  117. package/dist/_dts/sdk/src/cli/commands/push/options.d.ts +0 -32
  118. package/dist/_dts/sdk/src/cli/commands/push/publishGuidance.d.ts +0 -15
  119. package/dist/_dts/sdk/src/cli/commands/push/pushAllExtras.d.ts +0 -25
  120. package/dist/_dts/sdk/src/cli/commands/push/scopes/commandBackedDatedOfferingScope.d.ts +0 -83
  121. package/dist/_dts/sdk/src/cli/commands/push/scopes/eventCategories.d.ts +0 -4
  122. package/dist/_dts/sdk/src/cli/commands/push/scopes/events.d.ts +0 -4
  123. package/dist/_dts/sdk/src/cli/commands/push/scopes/mediaPrep.d.ts +0 -14
  124. package/dist/_dts/sdk/src/cli/commands/push/scopes/pushScopeGeneric.d.ts +0 -6
  125. package/dist/_dts/sdk/src/cli/commands/push/scopes/types.d.ts +0 -87
  126. package/dist/_dts/sdk/src/cli/commands/push/scopes/venues.d.ts +0 -4
  127. package/dist/_dts/sdk/src/cli/commands/push/stale-resolution.d.ts +0 -48
  128. package/dist/_dts/sdk/src/cli/commands/push/stale.d.ts +0 -17
  129. package/dist/_dts/sdk/src/cli/commands/push/verification.d.ts +0 -56
  130. package/dist/_dts/sdk/src/cli/commands/push/workflowPlan.d.ts +0 -34
  131. package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +0 -54
  132. package/dist/_dts/sdk/src/cli/commands/push.d.ts +0 -40
  133. package/dist/_dts/sdk/src/cli/commands/setup.d.ts +0 -3
  134. package/dist/_dts/sdk/src/cli/commands/style.d.ts +0 -60
  135. package/dist/_dts/sdk/src/cli/commands/verify.d.ts +0 -11
  136. package/dist/_dts/sdk/src/cli/commands/webhooks.d.ts +0 -44
  137. package/dist/_dts/sdk/src/cli/config-loader.d.ts +0 -47
  138. package/dist/_dts/sdk/src/cli/content/collectionWriters.d.ts +0 -23
  139. package/dist/_dts/sdk/src/cli/content/edit/format.d.ts +0 -2
  140. package/dist/_dts/sdk/src/cli/content/edit/path.d.ts +0 -14
  141. package/dist/_dts/sdk/src/cli/content/edit/planner.d.ts +0 -46
  142. package/dist/_dts/sdk/src/cli/content/entryPaths.d.ts +0 -6
  143. package/dist/_dts/sdk/src/cli/content/footerFile.d.ts +0 -10
  144. package/dist/_dts/sdk/src/cli/content/fs-utils.d.ts +0 -39
  145. package/dist/_dts/sdk/src/cli/content/legacyEventScheduleShapeError.d.ts +0 -5
  146. package/dist/_dts/sdk/src/cli/content/localEventSchedule.d.ts +0 -17
  147. package/dist/_dts/sdk/src/cli/content/media-manifest.d.ts +0 -13
  148. package/dist/_dts/sdk/src/cli/content/metadataAfterPush.d.ts +0 -25
  149. package/dist/_dts/sdk/src/cli/content/metadataStore.d.ts +0 -29
  150. package/dist/_dts/sdk/src/cli/content/reader.d.ts +0 -488
  151. package/dist/_dts/sdk/src/cli/content/writer.d.ts +0 -142
  152. package/dist/_dts/sdk/src/cli/env-scope.d.ts +0 -2
  153. package/dist/_dts/sdk/src/cli/env.d.ts +0 -71
  154. package/dist/_dts/sdk/src/cli/errors.d.ts +0 -62
  155. package/dist/_dts/sdk/src/cli/helpers/ai-runtime.d.ts +0 -2
  156. package/dist/_dts/sdk/src/cli/helpers.d.ts +0 -399
  157. package/dist/_dts/sdk/src/cli/index.d.ts +0 -11
  158. package/dist/_dts/sdk/src/cli/init-docs/constants.d.ts +0 -16
  159. package/dist/_dts/sdk/src/cli/init-docs/index.d.ts +0 -12
  160. package/dist/_dts/sdk/src/cli/init-docs/templates.d.ts +0 -18
  161. package/dist/_dts/sdk/src/cli/init-docs/zod-to-markdown.d.ts +0 -28
  162. package/dist/_dts/sdk/src/cli/load-config.d.ts +0 -14
  163. package/dist/_dts/sdk/src/cli/media/identifiers.d.ts +0 -18
  164. package/dist/_dts/sdk/src/cli/media/local-media.d.ts +0 -14
  165. package/dist/_dts/sdk/src/cli/media/local-sync.d.ts +0 -91
  166. package/dist/_dts/sdk/src/cli/media/portable.d.ts +0 -11
  167. package/dist/_dts/sdk/src/cli/media/rich-text.d.ts +0 -12
  168. package/dist/_dts/sdk/src/cli/media/value-utils.d.ts +0 -15
  169. package/dist/_dts/sdk/src/cli/media/write-guard.d.ts +0 -52
  170. package/dist/_dts/sdk/src/cli/merge-remote/entryLocal.d.ts +0 -3
  171. package/dist/_dts/sdk/src/cli/merge-remote/entryMerge.d.ts +0 -78
  172. package/dist/_dts/sdk/src/cli/merge-remote/entryMergePlan.d.ts +0 -45
  173. package/dist/_dts/sdk/src/cli/merge-remote/entryMergePush.d.ts +0 -24
  174. package/dist/_dts/sdk/src/cli/merge-remote/entryMergeReport.d.ts +0 -18
  175. package/dist/_dts/sdk/src/cli/merge-remote/entryRemote.d.ts +0 -9
  176. package/dist/_dts/sdk/src/cli/merge-remote/entrySnapshots.d.ts +0 -48
  177. package/dist/_dts/sdk/src/cli/merge-remote/mergeFieldChanges.d.ts +0 -22
  178. package/dist/_dts/sdk/src/cli/merge-remote/pageLocal.d.ts +0 -3
  179. package/dist/_dts/sdk/src/cli/merge-remote/pageMerge.d.ts +0 -78
  180. package/dist/_dts/sdk/src/cli/merge-remote/pageMergePlan.d.ts +0 -36
  181. package/dist/_dts/sdk/src/cli/merge-remote/pageMergePush.d.ts +0 -23
  182. package/dist/_dts/sdk/src/cli/merge-remote/pageMergeReport.d.ts +0 -17
  183. package/dist/_dts/sdk/src/cli/merge-remote/pageSnapshots.d.ts +0 -46
  184. package/dist/_dts/sdk/src/cli/merge-remote/sharedBaseSnapshots.d.ts +0 -32
  185. package/dist/_dts/sdk/src/cli/merge-remote/sharedMergePlan.d.ts +0 -27
  186. package/dist/_dts/sdk/src/cli/merge-remote/sharedMergeReport.d.ts +0 -63
  187. package/dist/_dts/sdk/src/cli/migrations/entries.d.ts +0 -28
  188. package/dist/_dts/sdk/src/cli/migrations/events.d.ts +0 -73
  189. package/dist/_dts/sdk/src/cli/navigationIdentity.d.ts +0 -11
  190. package/dist/_dts/sdk/src/cli/output.d.ts +0 -133
  191. package/dist/_dts/sdk/src/cli/program.d.ts +0 -29
  192. package/dist/_dts/sdk/src/cli/push-config.d.ts +0 -49
  193. package/dist/_dts/sdk/src/cli/setup/setupPlan.d.ts +0 -51
  194. package/dist/_dts/sdk/src/cli/site-commands/commandKeys.d.ts +0 -13
  195. package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +0 -170
  196. package/dist/_dts/sdk/src/cli/site-commands/commandRuntimeCompat.d.ts +0 -21
  197. package/dist/_dts/sdk/src/cli/site-commands/commandSurfaceDispatch.d.ts +0 -32
  198. package/dist/_dts/sdk/src/cli/site-commands/datedOfferingCommands.d.ts +0 -53
  199. package/dist/_dts/sdk/src/cli/site-commands/entryCommands.d.ts +0 -65
  200. package/dist/_dts/sdk/src/cli/site-commands/eventScheduleCompiler.d.ts +0 -24
  201. package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +0 -68
  202. package/dist/_dts/sdk/src/cli/site-commands/formCommands.d.ts +0 -53
  203. package/dist/_dts/sdk/src/cli/site-commands/index.d.ts +0 -8
  204. package/dist/_dts/sdk/src/cli/site-commands/localBlockManifestResolver.d.ts +0 -31
  205. package/dist/_dts/sdk/src/cli/site-commands/navigationCommands.d.ts +0 -57
  206. package/dist/_dts/sdk/src/cli/site-commands/oneOffCommands.d.ts +0 -82
  207. package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +0 -84
  208. package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +0 -39
  209. package/dist/_dts/sdk/src/cli/site-commands/pushExecutionPlan.d.ts +0 -8
  210. package/dist/_dts/sdk/src/cli/site-commands/pushExecutionTypes.d.ts +0 -97
  211. package/dist/_dts/sdk/src/cli/site-commands/residualSettingsTrimming.d.ts +0 -15
  212. package/dist/_dts/sdk/src/cli/sync/diff.d.ts +0 -222
  213. package/dist/_dts/sdk/src/cli/sync/executor.d.ts +0 -84
  214. package/dist/_dts/sdk/src/cli/sync/field-diff.d.ts +0 -39
  215. package/dist/_dts/sdk/src/cli/sync/index.d.ts +0 -10
  216. package/dist/_dts/sdk/src/cli/sync/mapper.d.ts +0 -41
  217. package/dist/_dts/sdk/src/cli/sync/media-sync.d.ts +0 -15
  218. package/dist/_dts/sdk/src/cli/sync/media.d.ts +0 -158
  219. package/dist/_dts/sdk/src/cli/sync/syncResultAggregation.d.ts +0 -4
  220. package/dist/_dts/sdk/src/cli/sync/validation.d.ts +0 -68
  221. package/dist/_dts/sdk/src/cli/utils/checksum.d.ts +0 -1
  222. package/dist/_dts/sdk/src/client/management/blocks.d.ts +0 -19
  223. package/dist/_dts/sdk/src/client/management/catalog.d.ts +0 -10
  224. package/dist/_dts/sdk/src/client/management/entries.d.ts +0 -6
  225. package/dist/_dts/sdk/src/client/management/eventCategories.d.ts +0 -6
  226. package/dist/_dts/sdk/src/client/management/events.d.ts +0 -7
  227. package/dist/_dts/sdk/src/client/management/footer.d.ts +0 -9
  228. package/dist/_dts/sdk/src/client/management/forms.d.ts +0 -6
  229. package/dist/_dts/sdk/src/client/management/http.d.ts +0 -79
  230. package/dist/_dts/sdk/src/client/management/identifiers.d.ts +0 -11
  231. package/dist/_dts/sdk/src/client/management/index.d.ts +0 -41
  232. package/dist/_dts/sdk/src/client/management/media.d.ts +0 -72
  233. package/dist/_dts/sdk/src/client/management/navigation.d.ts +0 -6
  234. package/dist/_dts/sdk/src/client/management/pages.d.ts +0 -6
  235. package/dist/_dts/sdk/src/client/management/pull.d.ts +0 -6
  236. package/dist/_dts/sdk/src/client/management/settings-branding.d.ts +0 -32
  237. package/dist/_dts/sdk/src/client/management/settings.d.ts +0 -6
  238. package/dist/_dts/sdk/src/client/management/theme.d.ts +0 -8
  239. package/dist/_dts/sdk/src/client/management/types.d.ts +0 -1069
  240. package/dist/_dts/sdk/src/client/management/venues.d.ts +0 -6
  241. package/dist/_dts/sdk/src/client/management/webhooks.d.ts +0 -3
  242. package/dist/_dts/sdk/src/test/env.d.ts +0 -4
  243. package/dist/_dts/site-commands/src/adapter.d.ts +0 -23
  244. package/dist/_dts/site-commands/src/appointmentCommandSchemas.d.ts +0 -100
  245. package/dist/_dts/site-commands/src/capabilityGaps.d.ts +0 -8
  246. package/dist/_dts/site-commands/src/commandContract.d.ts +0 -1277
  247. package/dist/_dts/site-commands/src/commandDomain.d.ts +0 -20
  248. package/dist/_dts/site-commands/src/commandIdentifiers.d.ts +0 -7
  249. package/dist/_dts/site-commands/src/commandValidation.d.ts +0 -10
  250. package/dist/_dts/site-commands/src/commands.d.ts +0 -1983
  251. package/dist/_dts/site-commands/src/domain.d.ts +0 -104
  252. package/dist/_dts/site-commands/src/eventCommandContent.d.ts +0 -11
  253. package/dist/_dts/site-commands/src/exposure.d.ts +0 -41
  254. package/dist/_dts/site-commands/src/guards.d.ts +0 -1
  255. package/dist/_dts/site-commands/src/index.d.ts +0 -18
  256. package/dist/_dts/site-commands/src/metadata.d.ts +0 -555
  257. package/dist/_dts/site-commands/src/pagePaths.d.ts +0 -6
  258. package/dist/_dts/site-commands/src/planner.d.ts +0 -58
  259. package/dist/_dts/site-commands/src/refContributions.d.ts +0 -11
  260. package/dist/_dts/site-commands/src/refs.d.ts +0 -90
  261. package/dist/_dts/site-commands/src/siteStyleCommandSchema.d.ts +0 -405
  262. package/dist/_dts/site-commands/src/siteStyleSelectionSchemaBuilder.d.ts +0 -46
  263. package/dist/_dts/site-commands/src/stableJson.d.ts +0 -5
  264. package/dist/_dts/site-commands/src/staticExecutionGaps.d.ts +0 -10
  265. package/dist/_dts/site-commands/src/venueCommandMapping.d.ts +0 -21
  266. package/dist/_dts/theme-core/src/data.d.ts +0 -12
  267. package/dist/_dts/theme-core/src/site-styles/headerStyleParts.d.ts +0 -4
  268. package/dist/cli/index.mjs +0 -162962
  269. package/dist/cli/init-docs/content/agents-section.md +0 -67
  270. package/dist/cli/init-docs/content/cli-reference.md +0 -1238
  271. package/dist/cli/init-docs/content/content-management.md +0 -792
  272. package/dist/cli/init-docs/content/context-brand.md +0 -125
  273. package/dist/cli/init-docs/content/context-brief.md +0 -77
  274. package/dist/cli/init-docs/content/context-knowledge.md +0 -111
  275. package/dist/cli/init-docs/content/getting-started.md +0 -171
  276. package/dist/cli/init-docs/content/site-workflows-readme.md +0 -96
  277. package/dist/cli/init-docs/content/workflow-add-block.md +0 -299
  278. package/dist/cli/init-docs/content/workflow-agent-safe-sync.md +0 -83
  279. package/dist/cli/init-docs/content/workflow-block-extensions.md +0 -370
  280. package/dist/cli/init-docs/content/workflow-cmsify-page.md +0 -357
  281. package/dist/cli/init-docs/content/workflow-content-types.md +0 -330
  282. package/dist/cli/init-docs/content/workflow-create-page.md +0 -212
  283. package/dist/cli/init-docs/content/workflow-custom-block.md +0 -470
  284. package/dist/cli/init-docs/content/workflow-editor-workflows.md +0 -130
  285. package/dist/cli/init-docs/content/workflow-isr-revalidation.md +0 -158
  286. package/dist/cli/init-docs/content/workflow-preview-mode.md +0 -239
  287. package/dist/cli/init-docs/content/workflow-publish.md +0 -285
  288. package/dist/cli/init-docs/content/workflow-remote-setup.md +0 -51
  289. package/dist/cli/init-docs/content/workflow-templates.md +0 -381
  290. /package/dist/_dts/{sdk/src/cli/utils/mime.d.ts → media-core/src/mimeType.d.ts} +0 -0
@@ -8737,9 +8737,10 @@ var init_fileAssetDeletion = __esmMin((() => {
8737
8737
  init_src$3();
8738
8738
  init_fileDomain();
8739
8739
  init_fileStorage();
8740
- })), init_fileMimeDetection = __esmMin((() => {
8740
+ }));
8741
+ var init_fileMimeDetection = __esmMin((() => {
8741
8742
  new TextDecoder("latin1");
8742
- })), init_filename = __esmMin((() => {})), PRODUCT_FILE_EXTENSION_TAGS;
8743
+ })), init_mimeType = __esmMin((() => {})), init_filename = __esmMin((() => {})), PRODUCT_FILE_EXTENSION_TAGS;
8743
8744
  var init_uploadVerificationContract = __esmMin((() => {
8744
8745
  init_fileDomain();
8745
8746
  init_fileMimeDetection();
@@ -9420,6 +9421,7 @@ var init_src$2 = __esmMin((() => {
9420
9421
  init_fileAssetDeletion();
9421
9422
  init_fileAssetCompatibility();
9422
9423
  init_fileMimeDetection();
9424
+ init_mimeType();
9423
9425
  init_filename();
9424
9426
  init_uploadVerificationContract();
9425
9427
  init_videoPrep();
@@ -17031,6 +17033,7 @@ var init_palette$1 = __esmMin((() => {
17031
17033
  init_suggestRecipes();
17032
17034
  init_allRecipes();
17033
17035
  init_curated();
17036
+ init_curated();
17034
17037
  })), defaultThemeTokens;
17035
17038
  var init_tokens$1 = __esmMin((() => {
17036
17039
  defaultThemeTokens = {
@@ -17259,49 +17262,22 @@ var init_backgroundAppearance = __esmMin((() => {
17259
17262
  var init_compositionBudget = __esmMin((() => {
17260
17263
  init_types$15();
17261
17264
  }));
17262
- var init_headerStyleParts = __esmMin((() => {}));
17263
- var headerInteractionPaletteValues, headerInteractionPaletteSchema;
17264
- var init_interactionPalette = __esmMin((() => {
17265
- headerInteractionPaletteValues = [
17266
- "primary",
17267
- "secondary",
17268
- "accent"
17269
- ];
17270
- headerInteractionPaletteSchema = z$1.enum(headerInteractionPaletteValues);
17271
- }));
17272
- var clearSplitInteractionPalette;
17273
- var init_headerInteractionPalette = __esmMin((() => {
17274
- init_interactionPalette();
17275
- init_lookOptionGroups();
17276
- clearSplitInteractionPalette = defineLookOptionGroup({
17277
- id: "interaction-palette",
17278
- label: "Hover colour",
17279
- defaultOptionId: "accent",
17280
- options: [
17281
- {
17282
- id: "accent",
17283
- label: "Accent"
17284
- },
17285
- {
17286
- id: "primary",
17287
- label: "Primary"
17288
- },
17289
- {
17290
- id: "secondary",
17291
- label: "Secondary"
17292
- }
17293
- ]
17294
- });
17295
- }));
17296
- var init_headerOpeningForeground = __esmMin((() => {
17297
- init_expandPalette();
17298
- init_colorConversion();
17299
- init_tokens();
17300
- init_colorTokenParts();
17301
- init_types$15();
17302
- }));
17303
17265
  var init_customizableSurfaces = __esmMin((() => {
17304
17266
  init_types$15();
17267
+ }));
17268
+ //#endregion
17269
+ //#region ../theme-core/src/site-styles/headerLookTypes.ts
17270
+ function asHeaderLookId(value) {
17271
+ return value;
17272
+ }
17273
+ function asHeaderLayoutId(value) {
17274
+ return value;
17275
+ }
17276
+ function asHeaderStyleId(value) {
17277
+ return value;
17278
+ }
17279
+ var init_headerLookTypes = __esmMin((() => {
17280
+ init_customizableSurfaces();
17305
17281
  })), logoTextConfidenceValues, logoAssetShapeValues, logoKindValues, logoDensityValues, logoContainsTextSchema, logoAnalysisSourceSchema, brandDisplayModeValues, logoAccommodationPatternValues, logoSizePolicyValues;
17306
17282
  var init_logoBranding = __esmMin((() => {
17307
17283
  init_types$15();
@@ -17394,388 +17370,8 @@ var init_logoBranding = __esmMin((() => {
17394
17370
  "display"
17395
17371
  ];
17396
17372
  }));
17397
- //#endregion
17398
- //#region ../theme-core/src/site-styles/headerLooks.ts
17399
- function asHeaderLookId(value) {
17400
- return value;
17401
- }
17402
- function asHeaderLayoutId(value) {
17403
- return value;
17404
- }
17405
- function asHeaderStyleId(value) {
17406
- return value;
17407
- }
17408
- /**
17409
- * Starts every Look from the generated theme's header branch, then clears
17410
- * optional nested styling fields that would otherwise leak from another Look.
17411
- */
17412
- function baseHeader(theme) {
17413
- const { navLinkStyle: _navLinkStyle, navFontRole: _navFontRole, navTypography: _navTypography, navTextSize: _navTextSize, interactionPalette: _interactionPalette, dropdownStyle: _dropdownStyle, ctaVariant: _ctaVariant, navContainer: _navContainer, container: _container, shadow: _shadow, logo: _logo, logoText: _logoText, border: _border, ...header } = theme.header;
17414
- return {
17415
- ...header,
17416
- navContainer: {
17417
- type: "none",
17418
- tint: null,
17419
- opacity: .15
17420
- }
17421
- };
17422
- }
17423
- function supportedLayouts(ids) {
17424
- return ids.map(asHeaderLayoutId);
17425
- }
17426
- function headerStyleRepairChain(values) {
17427
- return values.map(asHeaderStyleId);
17428
- }
17429
- function getHeaderStyle(id) {
17430
- return headerStylesById.get(id) ?? null;
17431
- }
17432
- function isHeaderStyleCompatibleWithLayout(style, layoutId) {
17433
- return style.supportedLayoutIds.includes(layoutId);
17434
- }
17435
- function getHeaderStyleOrThrow(id) {
17436
- const style = getHeaderStyle(id);
17437
- if (!style) throw new Error(`Unknown Theme V2 header style: ${id}`);
17438
- return style;
17439
- }
17440
- function resolveLegacyHeaderLookAlias(lookId) {
17441
- return legacyHeaderLookAliasesById.get(lookId)?.selection ?? null;
17442
- }
17443
- function getCompatibleHeaderStyleIds(layoutId) {
17444
- return (headerStyleCompatibilityOrder.get(layoutId) ?? []).filter((styleId) => {
17445
- return isHeaderStyleCompatibleWithLayout(getHeaderStyleOrThrow(styleId), layoutId);
17446
- });
17447
- }
17448
- function applyNavTypography(style, typography) {
17449
- switch (typography) {
17450
- case "plain": return style;
17451
- case "heading": return {
17452
- ...style,
17453
- typography: "heading",
17454
- fontWeight: "medium",
17455
- letterSpacing: "wide"
17456
- };
17457
- case "quiet-caps": return {
17458
- ...style,
17459
- textTransform: "uppercase",
17460
- textSize: "sm",
17461
- letterSpacing: "wide"
17462
- };
17463
- case "brand-caps": return {
17464
- ...style,
17465
- textTransform: "uppercase",
17466
- textSize: "sm",
17467
- letterSpacing: "wider"
17468
- };
17469
- default: return assertNever$15(typography, "Unhandled header nav typography");
17470
- }
17471
- }
17472
- function underlineNavLinkStyle(colorToken, underlineColorToken, typography = "plain") {
17473
- return applyNavTypography({
17474
- name: "Underline grow",
17475
- typography: "body",
17476
- fontWeight: "medium",
17477
- textTransform: "none",
17478
- italic: false,
17479
- colorToken,
17480
- padding: "compact",
17481
- paddingX: "compact",
17482
- borderRadius: "none",
17483
- effects: { hover: [{
17484
- effectId: "nav-underline",
17485
- options: {
17486
- style: "grow",
17487
- ...underlineColorToken ? { colorToken: underlineColorToken } : {}
17488
- }
17489
- }] }
17490
- }, typography);
17491
- }
17492
- function themedHeaderShadow(theme) {
17493
- switch (theme.shadow.elevation) {
17494
- case "none": return;
17495
- case "low": return { elevation: "sm" };
17496
- case "medium": return { elevation: "md" };
17497
- case "high": return { elevation: "lg" };
17498
- default: return assertNever$15(theme.shadow.elevation, "Unhandled theme shadow elevation");
17499
- }
17500
- }
17501
- function solidBrandHeader(theme) {
17502
- const ctaVariant = resolveHeaderCtaVariant(theme, "inverted");
17503
- return {
17504
- ...baseHeader(theme),
17505
- variant: "classic",
17506
- positioning: "sticky",
17507
- shrinkOnScroll: true,
17508
- background: {
17509
- type: "color",
17510
- color: "primary"
17511
- },
17512
- textColor: "primaryForeground",
17513
- navColor: "primaryForeground",
17514
- navStyle: "underline-grow",
17515
- navWeight: "bold",
17516
- navLinkStyle: {
17517
- typography: "body",
17518
- fontWeight: "bold",
17519
- textTransform: "uppercase",
17520
- italic: false,
17521
- colorToken: "primaryForeground",
17522
- hoverColorToken: "secondary",
17523
- textSize: "sm",
17524
- letterSpacing: "wider",
17525
- padding: "compact",
17526
- paddingX: "compact",
17527
- borderRadius: "none",
17528
- effects: { hover: [{
17529
- effectId: "text-color-change",
17530
- options: { hoverColorToken: "secondary" }
17531
- }, {
17532
- effectId: "nav-underline",
17533
- options: {
17534
- style: "grow",
17535
- colorToken: "secondary"
17536
- }
17537
- }] }
17538
- },
17539
- dropdownStyle: {
17540
- background: "primary-700",
17541
- textColor: "primaryForeground",
17542
- borderColor: null,
17543
- shadow: "md",
17544
- borderRadius: "md",
17545
- hoverBackground: "primary-900",
17546
- hoverTextColor: "secondary",
17547
- textTransform: "uppercase",
17548
- letterSpacing: "wider",
17549
- fontWeight: "bold",
17550
- textSize: "sm"
17551
- },
17552
- border: {
17553
- style: "solid",
17554
- width: "none",
17555
- position: "none"
17556
- },
17557
- logoText: {
17558
- hideOnShrink: true,
17559
- mobileMaxWidth: "sm",
17560
- mobileWrapLines: 2
17561
- },
17562
- ctaGap: "compact",
17563
- ctaTreatment: "inverted",
17564
- ...ctaVariant ? { ctaVariant } : {}
17565
- };
17566
- }
17567
- function cleanBaseHeader(theme) {
17568
- return {
17569
- ...baseHeader(theme),
17570
- variant: "classic",
17571
- positioning: "sticky",
17572
- shrinkOnScroll: false,
17573
- background: {
17574
- type: "color",
17575
- color: "surface"
17576
- },
17577
- textColor: "text",
17578
- navColor: "text",
17579
- navStyle: "minimal",
17580
- navWeight: "medium",
17581
- border: {
17582
- style: "solid",
17583
- width: "thin",
17584
- position: "bottom",
17585
- colorToken: "border"
17586
- },
17587
- ctaTreatment: "default",
17588
- ctaGap: "default"
17589
- };
17590
- }
17591
- function classicCenteredNavHeader(theme) {
17592
- return {
17593
- ...baseHeader(theme),
17594
- variant: "classic",
17595
- navPlacement: "center",
17596
- positioning: "sticky",
17597
- shrinkOnScroll: false,
17598
- background: {
17599
- type: "color",
17600
- color: "surface"
17601
- },
17602
- textColor: "text",
17603
- navColor: "text",
17604
- navStyle: "underline-grow",
17605
- navWeight: "medium",
17606
- navLinkStyle: underlineNavLinkStyle("text", "accent"),
17607
- border: {
17608
- style: "solid",
17609
- width: "thin",
17610
- position: "bottom",
17611
- colorToken: "border"
17612
- },
17613
- ctaTreatment: "primary",
17614
- ctaVariant: resolveHeaderCtaVariant(theme, "primary"),
17615
- ctaGap: "default",
17616
- logoText: {
17617
- mobileMaxWidth: "sm",
17618
- mobileWrapLines: 1,
17619
- hideOnShrink: false
17620
- }
17621
- };
17622
- }
17623
- function serifLineHeader(theme) {
17624
- return {
17625
- ...baseHeader(theme),
17626
- variant: "centered",
17627
- positioning: "sticky",
17628
- shrinkOnScroll: false,
17629
- background: {
17630
- type: "color",
17631
- color: "background"
17632
- },
17633
- textColor: "text",
17634
- navColor: "text",
17635
- navStyle: "underline-grow",
17636
- navWeight: "medium",
17637
- logo: {
17638
- fontFamily: "heading",
17639
- letterSpacing: "wide",
17640
- gradient: false
17641
- },
17642
- border: {
17643
- style: "solid",
17644
- width: "none",
17645
- position: "none"
17646
- },
17647
- shadow: { elevation: "none" },
17648
- ctaTreatment: "outline",
17649
- ctaVariant: resolveHeaderCtaVariant(theme, "outline"),
17650
- ctaGap: "relaxed"
17651
- };
17652
- }
17653
- function centeredCalmHeader(theme) {
17654
- return {
17655
- ...baseHeader(theme),
17656
- variant: "centered",
17657
- positioning: "static",
17658
- shrinkOnScroll: false,
17659
- background: {
17660
- type: "color",
17661
- color: "surface"
17662
- },
17663
- textColor: "text",
17664
- navColor: "text",
17665
- navStyle: "minimal",
17666
- navWeight: "medium",
17667
- ctaTreatment: "ghost",
17668
- ctaVariant: resolveHeaderCtaVariant(theme, "ghost"),
17669
- ctaGap: "none"
17670
- };
17671
- }
17672
- function practicalUtilityHeader(theme) {
17673
- return {
17674
- ...baseHeader(theme),
17675
- variant: "classic",
17676
- positioning: "sticky",
17677
- shrinkOnScroll: true,
17678
- background: {
17679
- type: "color",
17680
- color: "surface"
17681
- },
17682
- textColor: "text",
17683
- navColor: "text",
17684
- navStyle: "solid",
17685
- navWeight: "semibold",
17686
- shadow: themedHeaderShadow(theme),
17687
- border: {
17688
- style: "solid",
17689
- width: "thin",
17690
- position: "bottom",
17691
- colorToken: "border"
17692
- },
17693
- ctaTreatment: "primary",
17694
- ctaVariant: resolveHeaderCtaVariant(theme, "primary"),
17695
- ctaGap: "compact",
17696
- logoText: {
17697
- mobileMaxWidth: "sm",
17698
- mobileWrapLines: 1,
17699
- hideOnShrink: false
17700
- }
17701
- };
17702
- }
17703
- function minimalTransparentHeader(theme) {
17704
- return {
17705
- ...baseHeader(theme),
17706
- variant: "classic",
17707
- positioning: "static",
17708
- shrinkOnScroll: false,
17709
- background: {
17710
- type: "color",
17711
- color: "transparent"
17712
- },
17713
- textColor: "text",
17714
- navColor: "text",
17715
- navStyle: "underline",
17716
- navWeight: "medium",
17717
- border: {
17718
- style: "solid",
17719
- width: "none",
17720
- position: "none"
17721
- },
17722
- ctaTreatment: "outline",
17723
- ctaVariant: resolveHeaderCtaVariant(theme, "outline"),
17724
- ctaGap: "default"
17725
- };
17726
- }
17727
- function transparentOverlayHeader(theme) {
17728
- return {
17729
- ...baseHeader(theme),
17730
- variant: "transparent",
17731
- positioning: "fixed",
17732
- shrinkOnScroll: true,
17733
- background: {
17734
- type: "color",
17735
- color: "transparent"
17736
- },
17737
- textColor: "background",
17738
- navColor: "background",
17739
- navStyle: "frosted",
17740
- navWeight: "semibold",
17741
- border: {
17742
- style: "solid",
17743
- width: "none",
17744
- position: "none"
17745
- },
17746
- ctaTreatment: "inverted",
17747
- ctaVariant: resolveHeaderCtaVariant(theme, "inverted"),
17748
- ctaGap: "compact"
17749
- };
17750
- }
17751
- function floatingGlassHeader(theme) {
17752
- return {
17753
- ...transparentOverlayHeader(theme),
17754
- variant: "floating",
17755
- positioning: "sticky",
17756
- navStyle: "frosted",
17757
- navContainer: {
17758
- type: "glass",
17759
- tint: "text",
17760
- opacity: .16
17761
- },
17762
- container: {
17763
- rounded: "2xl",
17764
- border: true,
17765
- shadow: true,
17766
- padding: "sm",
17767
- tint: "background",
17768
- opacity: .12
17769
- }
17770
- };
17771
- }
17772
- var titleOnlyLogoAccommodation, inlineWordmarkLogoAccommodation, inlineMarkWithTitleLogoAccommodation, logoPlateAccommodation, centeredBadgeAccommodation, popoutBadgeAccommodation, centeredMastheadAccommodation, unbackedOverlayLogoAccommodation, inlineClassicLogoAccommodations, centeredLogoAccommodations, overlayLogoAccommodations, headerLayoutCatalog, headerStyleCatalog, headerStylesById, headerStyleCompatibilityOrder, legacyHeaderLookAliases, legacyHeaderLookAliasesById, headerLookCatalog;
17773
- var init_headerLooks = __esmMin((() => {
17774
- init_headerCtaVariants();
17775
- init_headerStyleParts();
17776
- init_headerInteractionPalette();
17777
- init_headerOpeningForeground();
17778
- init_customizableSurfaces();
17373
+ var titleOnlyLogoAccommodation, inlineWordmarkLogoAccommodation, inlineMarkWithTitleLogoAccommodation, logoPlateAccommodation, centeredBadgeAccommodation, popoutBadgeAccommodation, centeredMastheadAccommodation, unbackedOverlayLogoAccommodation, inlineClassicLogoAccommodations, centeredLogoAccommodations, overlayLogoAccommodations;
17374
+ var init_headerLookBranding = __esmMin((() => {
17779
17375
  init_logoBranding();
17780
17376
  init_types$15();
17781
17377
  titleOnlyLogoAccommodation = {
@@ -17896,6 +17492,72 @@ var init_headerLooks = __esmMin((() => {
17896
17492
  inlineMarkWithTitleLogoAccommodation,
17897
17493
  unbackedOverlayLogoAccommodation
17898
17494
  ];
17495
+ }));
17496
+ var headerInteractionPaletteValues, headerInteractionPaletteSchema;
17497
+ var init_interactionPalette = __esmMin((() => {
17498
+ headerInteractionPaletteValues = [
17499
+ "primary",
17500
+ "secondary",
17501
+ "accent"
17502
+ ];
17503
+ headerInteractionPaletteSchema = z$1.enum(headerInteractionPaletteValues);
17504
+ }));
17505
+ var clearSplitInteractionPalette;
17506
+ var init_headerInteractionPalette = __esmMin((() => {
17507
+ init_interactionPalette();
17508
+ init_lookOptionGroups();
17509
+ clearSplitInteractionPalette = defineLookOptionGroup({
17510
+ id: "interaction-palette",
17511
+ label: "Hover colour",
17512
+ defaultOptionId: "accent",
17513
+ options: [
17514
+ {
17515
+ id: "accent",
17516
+ label: "Accent"
17517
+ },
17518
+ {
17519
+ id: "primary",
17520
+ label: "Primary"
17521
+ },
17522
+ {
17523
+ id: "secondary",
17524
+ label: "Secondary"
17525
+ }
17526
+ ]
17527
+ });
17528
+ }));
17529
+ //#endregion
17530
+ //#region ../theme-core/src/site-styles/headerLayoutStyleCatalog.ts
17531
+ function supportedLayouts(ids) {
17532
+ return ids.map(asHeaderLayoutId);
17533
+ }
17534
+ function headerStyleRepairChain(values) {
17535
+ return values.map(asHeaderStyleId);
17536
+ }
17537
+ function getHeaderStyle(id) {
17538
+ return headerStylesById.get(id) ?? null;
17539
+ }
17540
+ function isHeaderStyleCompatibleWithLayout(style, layoutId) {
17541
+ return style.supportedLayoutIds.includes(layoutId);
17542
+ }
17543
+ function getHeaderStyleOrThrow(id) {
17544
+ const style = getHeaderStyle(id);
17545
+ if (!style) throw new Error(`Unknown Theme V2 header style: ${id}`);
17546
+ return style;
17547
+ }
17548
+ function resolveLegacyHeaderLookAlias(lookId) {
17549
+ return legacyHeaderLookAliasesById.get(lookId)?.selection ?? null;
17550
+ }
17551
+ function getCompatibleHeaderStyleIds(layoutId) {
17552
+ return (headerStyleCompatibilityOrder.get(layoutId) ?? []).filter((styleId) => {
17553
+ return isHeaderStyleCompatibleWithLayout(getHeaderStyleOrThrow(styleId), layoutId);
17554
+ });
17555
+ }
17556
+ var headerLayoutCatalog, headerStyleCatalog, headerStylesById, headerStyleCompatibilityOrder, legacyHeaderLookAliases, legacyHeaderLookAliasesById;
17557
+ var init_headerLayoutStyleCatalog = __esmMin((() => {
17558
+ init_types$15();
17559
+ init_headerInteractionPalette();
17560
+ init_headerLookTypes();
17899
17561
  headerLayoutCatalog = defineExactCatalog()([
17900
17562
  {
17901
17563
  id: asHeaderLayoutId("classic"),
@@ -18275,6 +17937,373 @@ var init_headerLooks = __esmMin((() => {
18275
17937
  }
18276
17938
  ]);
18277
17939
  legacyHeaderLookAliasesById = new Map(legacyHeaderLookAliases.map((alias) => [alias.lookId, alias]));
17940
+ }));
17941
+ var init_headerOpeningForeground = __esmMin((() => {
17942
+ init_expandPalette();
17943
+ init_colorConversion();
17944
+ init_tokens();
17945
+ init_colorTokenParts();
17946
+ init_types$15();
17947
+ }));
17948
+ //#endregion
17949
+ //#region ../theme-core/src/site-styles/headerStyleCompilerPrimitives.ts
17950
+ function baseHeader(theme) {
17951
+ const { navLinkStyle: _navLinkStyle, navFontRole: _navFontRole, navTypography: _navTypography, navTextSize: _navTextSize, interactionPalette: _interactionPalette, dropdownStyle: _dropdownStyle, ctaVariant: _ctaVariant, navContainer: _navContainer, container: _container, shadow: _shadow, logo: _logo, logoText: _logoText, border: _border, ...header } = theme.header;
17952
+ return {
17953
+ ...header,
17954
+ navContainer: {
17955
+ type: "none",
17956
+ tint: null,
17957
+ opacity: .15
17958
+ }
17959
+ };
17960
+ }
17961
+ function applyNavTypography(style, typography) {
17962
+ switch (typography) {
17963
+ case "plain": return style;
17964
+ case "heading": return {
17965
+ ...style,
17966
+ typography: "heading",
17967
+ fontWeight: "medium",
17968
+ letterSpacing: "wide"
17969
+ };
17970
+ case "quiet-caps": return {
17971
+ ...style,
17972
+ textTransform: "uppercase",
17973
+ textSize: "sm",
17974
+ letterSpacing: "wide"
17975
+ };
17976
+ case "brand-caps": return {
17977
+ ...style,
17978
+ textTransform: "uppercase",
17979
+ textSize: "sm",
17980
+ letterSpacing: "wider"
17981
+ };
17982
+ default: return assertNever$15(typography, "Unhandled header nav typography");
17983
+ }
17984
+ }
17985
+ function underlineNavLinkStyle(colorToken, underlineColorToken, typography = "plain") {
17986
+ return applyNavTypography({
17987
+ name: "Underline grow",
17988
+ typography: "body",
17989
+ fontWeight: "medium",
17990
+ textTransform: "none",
17991
+ italic: false,
17992
+ colorToken,
17993
+ padding: "compact",
17994
+ paddingX: "compact",
17995
+ borderRadius: "none",
17996
+ effects: { hover: [{
17997
+ effectId: "nav-underline",
17998
+ options: {
17999
+ style: "grow",
18000
+ ...underlineColorToken ? { colorToken: underlineColorToken } : {}
18001
+ }
18002
+ }] }
18003
+ }, typography);
18004
+ }
18005
+ function themedHeaderShadow(theme) {
18006
+ switch (theme.shadow.elevation) {
18007
+ case "none": return;
18008
+ case "low": return { elevation: "sm" };
18009
+ case "medium": return { elevation: "md" };
18010
+ case "high": return { elevation: "lg" };
18011
+ default: return assertNever$15(theme.shadow.elevation, "Unhandled theme shadow elevation");
18012
+ }
18013
+ }
18014
+ var init_headerStyleCompilerPrimitives = __esmMin((() => {
18015
+ init_headerCtaVariants();
18016
+ init_headerLookTypes();
18017
+ init_types$15();
18018
+ }));
18019
+ var init_headerStyleCompiler = __esmMin((() => {
18020
+ init_headerCtaVariants();
18021
+ init_headerInteractionPalette();
18022
+ init_headerOpeningForeground();
18023
+ init_headerLayoutStyleCatalog();
18024
+ init_headerStyleCompilerPrimitives();
18025
+ init_types$15();
18026
+ }));
18027
+ //#endregion
18028
+ //#region ../theme-core/src/site-styles/headerLegacyLooks.ts
18029
+ function solidBrandHeader(theme) {
18030
+ const ctaVariant = resolveHeaderCtaVariant(theme, "inverted");
18031
+ return {
18032
+ ...baseHeader(theme),
18033
+ variant: "classic",
18034
+ positioning: "sticky",
18035
+ shrinkOnScroll: true,
18036
+ background: {
18037
+ type: "color",
18038
+ color: "primary"
18039
+ },
18040
+ textColor: "primaryForeground",
18041
+ navColor: "primaryForeground",
18042
+ navStyle: "underline-grow",
18043
+ navWeight: "bold",
18044
+ navLinkStyle: {
18045
+ typography: "body",
18046
+ fontWeight: "bold",
18047
+ textTransform: "uppercase",
18048
+ italic: false,
18049
+ colorToken: "primaryForeground",
18050
+ hoverColorToken: "secondary",
18051
+ textSize: "sm",
18052
+ letterSpacing: "wider",
18053
+ padding: "compact",
18054
+ paddingX: "compact",
18055
+ borderRadius: "none",
18056
+ effects: { hover: [{
18057
+ effectId: "text-color-change",
18058
+ options: { hoverColorToken: "secondary" }
18059
+ }, {
18060
+ effectId: "nav-underline",
18061
+ options: {
18062
+ style: "grow",
18063
+ colorToken: "secondary"
18064
+ }
18065
+ }] }
18066
+ },
18067
+ dropdownStyle: {
18068
+ background: "primary-700",
18069
+ textColor: "primaryForeground",
18070
+ borderColor: null,
18071
+ shadow: "md",
18072
+ borderRadius: "md",
18073
+ hoverBackground: "primary-900",
18074
+ hoverTextColor: "secondary",
18075
+ textTransform: "uppercase",
18076
+ letterSpacing: "wider",
18077
+ fontWeight: "bold",
18078
+ textSize: "sm"
18079
+ },
18080
+ border: {
18081
+ style: "solid",
18082
+ width: "none",
18083
+ position: "none"
18084
+ },
18085
+ logoText: {
18086
+ hideOnShrink: true,
18087
+ mobileMaxWidth: "sm",
18088
+ mobileWrapLines: 2
18089
+ },
18090
+ ctaGap: "compact",
18091
+ ctaTreatment: "inverted",
18092
+ ...ctaVariant ? { ctaVariant } : {}
18093
+ };
18094
+ }
18095
+ function cleanBaseHeader(theme) {
18096
+ return {
18097
+ ...baseHeader(theme),
18098
+ variant: "classic",
18099
+ positioning: "sticky",
18100
+ shrinkOnScroll: false,
18101
+ background: {
18102
+ type: "color",
18103
+ color: "surface"
18104
+ },
18105
+ textColor: "text",
18106
+ navColor: "text",
18107
+ navStyle: "minimal",
18108
+ navWeight: "medium",
18109
+ border: {
18110
+ style: "solid",
18111
+ width: "thin",
18112
+ position: "bottom",
18113
+ colorToken: "border"
18114
+ },
18115
+ ctaTreatment: "default",
18116
+ ctaGap: "default"
18117
+ };
18118
+ }
18119
+ function classicCenteredNavHeader(theme) {
18120
+ return {
18121
+ ...baseHeader(theme),
18122
+ variant: "classic",
18123
+ navPlacement: "center",
18124
+ positioning: "sticky",
18125
+ shrinkOnScroll: false,
18126
+ background: {
18127
+ type: "color",
18128
+ color: "surface"
18129
+ },
18130
+ textColor: "text",
18131
+ navColor: "text",
18132
+ navStyle: "underline-grow",
18133
+ navWeight: "medium",
18134
+ navLinkStyle: underlineNavLinkStyle("text", "accent"),
18135
+ border: {
18136
+ style: "solid",
18137
+ width: "thin",
18138
+ position: "bottom",
18139
+ colorToken: "border"
18140
+ },
18141
+ ctaTreatment: "primary",
18142
+ ctaVariant: resolveHeaderCtaVariant(theme, "primary"),
18143
+ ctaGap: "default",
18144
+ logoText: {
18145
+ mobileMaxWidth: "sm",
18146
+ mobileWrapLines: 1,
18147
+ hideOnShrink: false
18148
+ }
18149
+ };
18150
+ }
18151
+ function serifLineHeader(theme) {
18152
+ return {
18153
+ ...baseHeader(theme),
18154
+ variant: "centered",
18155
+ positioning: "sticky",
18156
+ shrinkOnScroll: false,
18157
+ background: {
18158
+ type: "color",
18159
+ color: "background"
18160
+ },
18161
+ textColor: "text",
18162
+ navColor: "text",
18163
+ navStyle: "underline-grow",
18164
+ navWeight: "medium",
18165
+ logo: {
18166
+ fontFamily: "heading",
18167
+ letterSpacing: "wide",
18168
+ gradient: false
18169
+ },
18170
+ border: {
18171
+ style: "solid",
18172
+ width: "none",
18173
+ position: "none"
18174
+ },
18175
+ shadow: { elevation: "none" },
18176
+ ctaTreatment: "outline",
18177
+ ctaVariant: resolveHeaderCtaVariant(theme, "outline"),
18178
+ ctaGap: "relaxed"
18179
+ };
18180
+ }
18181
+ function centeredCalmHeader(theme) {
18182
+ return {
18183
+ ...baseHeader(theme),
18184
+ variant: "centered",
18185
+ positioning: "static",
18186
+ shrinkOnScroll: false,
18187
+ background: {
18188
+ type: "color",
18189
+ color: "surface"
18190
+ },
18191
+ textColor: "text",
18192
+ navColor: "text",
18193
+ navStyle: "minimal",
18194
+ navWeight: "medium",
18195
+ ctaTreatment: "ghost",
18196
+ ctaVariant: resolveHeaderCtaVariant(theme, "ghost"),
18197
+ ctaGap: "none"
18198
+ };
18199
+ }
18200
+ function practicalUtilityHeader(theme) {
18201
+ return {
18202
+ ...baseHeader(theme),
18203
+ variant: "classic",
18204
+ positioning: "sticky",
18205
+ shrinkOnScroll: true,
18206
+ background: {
18207
+ type: "color",
18208
+ color: "surface"
18209
+ },
18210
+ textColor: "text",
18211
+ navColor: "text",
18212
+ navStyle: "solid",
18213
+ navWeight: "semibold",
18214
+ shadow: themedHeaderShadow(theme),
18215
+ border: {
18216
+ style: "solid",
18217
+ width: "thin",
18218
+ position: "bottom",
18219
+ colorToken: "border"
18220
+ },
18221
+ ctaTreatment: "primary",
18222
+ ctaVariant: resolveHeaderCtaVariant(theme, "primary"),
18223
+ ctaGap: "compact",
18224
+ logoText: {
18225
+ mobileMaxWidth: "sm",
18226
+ mobileWrapLines: 1,
18227
+ hideOnShrink: false
18228
+ }
18229
+ };
18230
+ }
18231
+ function minimalTransparentHeader(theme) {
18232
+ return {
18233
+ ...baseHeader(theme),
18234
+ variant: "classic",
18235
+ positioning: "static",
18236
+ shrinkOnScroll: false,
18237
+ background: {
18238
+ type: "color",
18239
+ color: "transparent"
18240
+ },
18241
+ textColor: "text",
18242
+ navColor: "text",
18243
+ navStyle: "underline",
18244
+ navWeight: "medium",
18245
+ border: {
18246
+ style: "solid",
18247
+ width: "none",
18248
+ position: "none"
18249
+ },
18250
+ ctaTreatment: "outline",
18251
+ ctaVariant: resolveHeaderCtaVariant(theme, "outline"),
18252
+ ctaGap: "default"
18253
+ };
18254
+ }
18255
+ function transparentOverlayHeader(theme) {
18256
+ return {
18257
+ ...baseHeader(theme),
18258
+ variant: "transparent",
18259
+ positioning: "fixed",
18260
+ shrinkOnScroll: true,
18261
+ background: {
18262
+ type: "color",
18263
+ color: "transparent"
18264
+ },
18265
+ textColor: "background",
18266
+ navColor: "background",
18267
+ navStyle: "frosted",
18268
+ navWeight: "semibold",
18269
+ border: {
18270
+ style: "solid",
18271
+ width: "none",
18272
+ position: "none"
18273
+ },
18274
+ ctaTreatment: "inverted",
18275
+ ctaVariant: resolveHeaderCtaVariant(theme, "inverted"),
18276
+ ctaGap: "compact"
18277
+ };
18278
+ }
18279
+ function floatingGlassHeader(theme) {
18280
+ return {
18281
+ ...transparentOverlayHeader(theme),
18282
+ variant: "floating",
18283
+ positioning: "sticky",
18284
+ navStyle: "frosted",
18285
+ navContainer: {
18286
+ type: "glass",
18287
+ tint: "text",
18288
+ opacity: .16
18289
+ },
18290
+ container: {
18291
+ rounded: "2xl",
18292
+ border: true,
18293
+ shadow: true,
18294
+ padding: "sm",
18295
+ tint: "background",
18296
+ opacity: .12
18297
+ }
18298
+ };
18299
+ }
18300
+ var headerLookCatalog;
18301
+ var init_headerLegacyLooks = __esmMin((() => {
18302
+ init_headerCtaVariants();
18303
+ init_headerLookBranding();
18304
+ init_headerLookTypes();
18305
+ init_headerStyleCompilerPrimitives();
18306
+ init_types$15();
18278
18307
  headerLookCatalog = defineExactCatalog()([
18279
18308
  {
18280
18309
  id: asHeaderLookId("clean-base"),
@@ -18348,6 +18377,22 @@ var init_headerLooks = __esmMin((() => {
18348
18377
  ]);
18349
18378
  new Map(headerLookCatalog.map((look) => [look.id, look]));
18350
18379
  }));
18380
+ var init_headerLookSelection = __esmMin((() => {
18381
+ init_customizableSurfaces();
18382
+ init_headerLookBranding();
18383
+ init_headerLookTypes();
18384
+ init_headerLegacyLooks();
18385
+ }));
18386
+ //#endregion
18387
+ //#region ../theme-core/src/site-styles/headerLooks.ts
18388
+ var init_headerLooks = __esmMin((() => {
18389
+ init_headerLookTypes();
18390
+ init_headerLookBranding();
18391
+ init_headerLayoutStyleCatalog();
18392
+ init_headerStyleCompiler();
18393
+ init_headerLegacyLooks();
18394
+ init_headerLookSelection();
18395
+ }));
18351
18396
  var init_compilationPlan = __esmMin((() => {
18352
18397
  init_headerLooks();
18353
18398
  }));
@@ -24467,6 +24512,7 @@ var init_buttons = __esmMin((() => {
24467
24512
  init_constants$2();
24468
24513
  init_presets();
24469
24514
  init_styles();
24515
+ init_styles();
24470
24516
  }));
24471
24517
  //#endregion
24472
24518
  //#region ../theme-core/src/cards/types.ts
@@ -62345,6 +62391,216 @@ init_node();
62345
62391
  init_fragments();
62346
62392
  init_defineBlock();
62347
62393
  //#endregion
62394
+ //#region ../blocks/src/system/manifest/hydrateLinks.ts
62395
+ init_typeGuards();
62396
+ /**
62397
+ * Hydrates link objects within block content using the provided route map. Returns
62398
+ * the original content reference when no mutations are required to avoid unnecessary renders.
62399
+ */
62400
+ function hydrateManifestLinks(manifest, content, routes, pagesByIdentifier, entriesByIdentifier) {
62401
+ if (!routes || !manifest?.fields?.length) return content;
62402
+ return hydrateValue(content, {
62403
+ routes,
62404
+ pagesByIdentifier,
62405
+ entriesByIdentifier
62406
+ });
62407
+ }
62408
+ function hydrateValue(value, context) {
62409
+ try {
62410
+ if (Array.isArray(value)) {
62411
+ const resolvedItems = value.map((item) => hydrateValue(item, context));
62412
+ return resolvedItems.every((item, index) => item === value[index]) ? value : resolvedItems;
62413
+ }
62414
+ if (isRecord$25(value)) {
62415
+ if (isInternalLink$1(value)) return hydrateInternalLink(value, context.routes);
62416
+ if (isPageLink$1(value)) return hydratePageLink(value, context);
62417
+ if (isEntryLink$1(value)) return hydrateEntryLink(value, context);
62418
+ const resolvedEntries = Object.entries(value).map(([key, entry]) => [key, hydrateValue(entry, context)]);
62419
+ return resolvedEntries.every(([key, entry]) => entry === value[key]) ? value : Object.fromEntries(resolvedEntries);
62420
+ }
62421
+ return value;
62422
+ } catch (err) {
62423
+ console.error("[hydrateLinks] Error hydrating value:", err, value);
62424
+ return value;
62425
+ }
62426
+ }
62427
+ function hydrateInternalLink(link, routes) {
62428
+ const resolved = resolveRouteTarget(link.routeId, routes);
62429
+ if (!resolved) return link;
62430
+ const nextHref = resolved.href;
62431
+ const currentHref = typeof link.href === "string" && link.href.length > 0 ? link.href : null;
62432
+ const nextUpdatedAt = resolved.updatedAt;
62433
+ const updates = {};
62434
+ if (nextHref && nextHref !== currentHref) updates.href = nextHref;
62435
+ if (nextUpdatedAt && link.updatedAt !== nextUpdatedAt) updates.updatedAt = nextUpdatedAt;
62436
+ return Object.keys(updates).length > 0 ? {
62437
+ ...link,
62438
+ ...updates
62439
+ } : link;
62440
+ }
62441
+ function isInternalLink$1(value) {
62442
+ if (value.kind !== "internal") return false;
62443
+ if (typeof value.routeId !== "string" || value.routeId.length === 0) return false;
62444
+ return true;
62445
+ }
62446
+ function isPageLink$1(value) {
62447
+ if (value.kind !== "page") return false;
62448
+ if (typeof value.identifier !== "string" || value.identifier.length === 0) return false;
62449
+ return true;
62450
+ }
62451
+ function hydratePageLink(link, context) {
62452
+ const resolved = resolvePageRouteTarget(link, context);
62453
+ if (!resolved) return link;
62454
+ return {
62455
+ ...link,
62456
+ href: resolved.href,
62457
+ routeId: resolved.routeId
62458
+ };
62459
+ }
62460
+ function isEntryLink$1(value) {
62461
+ if (value.kind !== "entry") return false;
62462
+ if (typeof value.contentType !== "string" || value.contentType.length === 0) return false;
62463
+ if (typeof value.identifier !== "string" || value.identifier.length === 0) return false;
62464
+ return true;
62465
+ }
62466
+ function hydrateEntryLink(link, context) {
62467
+ const resolved = resolveEntryRouteTarget(link, context);
62468
+ if (!resolved) return link;
62469
+ return {
62470
+ ...link,
62471
+ href: resolved.href,
62472
+ routeId: resolved.routeId
62473
+ };
62474
+ }
62475
+ //#endregion
62476
+ //#region ../blocks/src/sdkBlockTransform.ts
62477
+ init_augmentManifest();
62478
+ /**
62479
+ * Transforms an SDK custom block into a BlockManifest.
62480
+ *
62481
+ * If the block has a `layout`, it can be rendered declaratively without React code.
62482
+ * If no layout, the block MUST use blockOverrides for rendering.
62483
+ */
62484
+ function transformSdkBlockToManifest(sdkBlock) {
62485
+ const hasLayout = Boolean(sdkBlock.layout) || Boolean(sdkBlock.variants && Object.keys(sdkBlock.variants).length > 0);
62486
+ return augmentManifest({
62487
+ name: sdkBlock.id,
62488
+ version: "1.0.0",
62489
+ title: sdkBlock.title,
62490
+ titleSource: sdkBlock.titleSource,
62491
+ description: sdkBlock.description,
62492
+ component: sdkBlock.id,
62493
+ fields: sdkBlock.fields,
62494
+ slots: [],
62495
+ category: sdkBlock.category,
62496
+ tags: sdkBlock.tags,
62497
+ icon: sdkBlock.icon,
62498
+ layout: sdkBlock.layout,
62499
+ variants: sdkBlock.variants,
62500
+ defaultVariant: sdkBlock.defaultVariant,
62501
+ variantOptions: sdkBlock.variantOptions,
62502
+ previewCustomize: sdkBlock.previewCustomize,
62503
+ behaviours: {
62504
+ supportsThemeSwitching: true,
62505
+ inlineEditing: hasLayout,
62506
+ animation: hasLayout,
62507
+ paletteHidden: false
62508
+ }
62509
+ });
62510
+ }
62511
+ /**
62512
+ * Transforms an SDK custom block into a SystemBlockDefinition.
62513
+ *
62514
+ * This creates a minimal definition with just the manifest - no data loaders
62515
+ * or content normalizers since SDK blocks handle their own rendering.
62516
+ */
62517
+ function transformSdkBlockToDefinition(sdkBlock) {
62518
+ return {
62519
+ manifest: transformSdkBlockToManifest(sdkBlock),
62520
+ dataLoaders: sdkBlock.dataLoaders
62521
+ };
62522
+ }
62523
+ //#endregion
62524
+ //#region ../blocks/src/customBlockRegistry.ts
62525
+ init_src$3();
62526
+ const defaultCustomBlockSourcePolicy = { kind: "canonical-db-fallback-sdk" };
62527
+ function isCustomBlockKind(blockKind) {
62528
+ return blockKind.startsWith("custom.");
62529
+ }
62530
+ function transformToBlockDescriptor(sdkBlock, source = "sdk") {
62531
+ return {
62532
+ name: sdkBlock.id,
62533
+ title: sdkBlock.title,
62534
+ description: sdkBlock.description,
62535
+ category: sdkBlock.category,
62536
+ tags: sdkBlock.tags,
62537
+ icon: sdkBlock.icon,
62538
+ definition: transformSdkBlockToDefinition(sdkBlock),
62539
+ source
62540
+ };
62541
+ }
62542
+ function toResolvedCustomBlock(manifest, source) {
62543
+ return {
62544
+ blockKind: manifest.id,
62545
+ manifest: transformSdkBlockToManifest(manifest),
62546
+ source,
62547
+ descriptor: transformToBlockDescriptor(manifest, source.kind === "managed-database" ? "database" : "sdk")
62548
+ };
62549
+ }
62550
+ function planCustomBlockRegistryResolution({ sdkConfig, customBlocks = [], policy = defaultCustomBlockSourcePolicy }) {
62551
+ switch (policy.kind) {
62552
+ case "canonical-db-fallback-sdk": {
62553
+ const entriesByKind = /* @__PURE__ */ new Map();
62554
+ const conflicts = [];
62555
+ for (const customBlock of customBlocks) entriesByKind.set(customBlock.manifest.id, toResolvedCustomBlock(customBlock.manifest, customBlock.source));
62556
+ for (const sdkBlock of sdkConfig?.customBlocks ?? []) {
62557
+ const existing = entriesByKind.get(sdkBlock.id);
62558
+ if (existing) {
62559
+ conflicts.push({
62560
+ kind: "conflict",
62561
+ blockKind: existing.blockKind,
62562
+ winner: existing.source,
62563
+ loser: { kind: "sdk-config" },
62564
+ reason: "db-canonical-sdk-fallback"
62565
+ });
62566
+ continue;
62567
+ }
62568
+ entriesByKind.set(sdkBlock.id, toResolvedCustomBlock(sdkBlock, { kind: "sdk-config" }));
62569
+ }
62570
+ return {
62571
+ policy,
62572
+ entries: Array.from(entriesByKind.values()),
62573
+ conflicts
62574
+ };
62575
+ }
62576
+ }
62577
+ }
62578
+ function createCustomBlockRegistry({ sdkConfig, customBlocks = [], policy = defaultCustomBlockSourcePolicy, onConflict }) {
62579
+ const plan = planCustomBlockRegistryResolution({
62580
+ sdkConfig,
62581
+ customBlocks,
62582
+ policy
62583
+ });
62584
+ const entriesByKind = new Map(plan.entries.map((entry) => [entry.blockKind, entry]));
62585
+ for (const conflict of plan.conflicts) onConflict?.(`Using ${sourceLabel(conflict.winner)} custom block "${conflict.blockKind}" - ${sourceLabel(conflict.loser)} block is fallback only`);
62586
+ return {
62587
+ entries: plan.entries,
62588
+ conflicts: plan.conflicts,
62589
+ findManifest: (blockKind) => {
62590
+ if (!isCustomBlockKind(blockKind)) return void 0;
62591
+ return entriesByKind.get(blockKind);
62592
+ }
62593
+ };
62594
+ }
62595
+ function sourceLabel(source) {
62596
+ switch (source.kind) {
62597
+ case "managed-database": return "DB";
62598
+ case "sdk-synced": return "SDK-synced DB";
62599
+ case "sdk-config": return "SDK config";
62600
+ default: return assertNever$24(source);
62601
+ }
62602
+ }
62603
+ //#endregion
62348
62604
  //#region ../theme-core/src/runtime/fontFamily.ts
62349
62605
  /**
62350
62606
  * Font Family Formatting Utilities
@@ -66127,214 +66383,111 @@ function mapFontStyle(italic) {
66127
66383
  return italic ? "italic" : "normal";
66128
66384
  }
66129
66385
  //#endregion
66130
- //#region ../blocks/src/system/manifest/hydrateLinks.ts
66131
- init_typeGuards();
66132
- /**
66133
- * Hydrates link objects within block content using the provided route map. Returns
66134
- * the original content reference when no mutations are required to avoid unnecessary renders.
66135
- */
66136
- function hydrateManifestLinks(manifest, content, routes, pagesByIdentifier, entriesByIdentifier) {
66137
- if (!routes || !manifest?.fields?.length) return content;
66138
- return hydrateValue(content, {
66139
- routes,
66140
- pagesByIdentifier,
66141
- entriesByIdentifier
66142
- });
66143
- }
66144
- function hydrateValue(value, context) {
66145
- try {
66146
- if (Array.isArray(value)) {
66147
- const resolvedItems = value.map((item) => hydrateValue(item, context));
66148
- return resolvedItems.every((item, index) => item === value[index]) ? value : resolvedItems;
66149
- }
66150
- if (isRecord$25(value)) {
66151
- if (isInternalLink$1(value)) return hydrateInternalLink(value, context.routes);
66152
- if (isPageLink$1(value)) return hydratePageLink(value, context);
66153
- if (isEntryLink$1(value)) return hydrateEntryLink(value, context);
66154
- const resolvedEntries = Object.entries(value).map(([key, entry]) => [key, hydrateValue(entry, context)]);
66155
- return resolvedEntries.every(([key, entry]) => entry === value[key]) ? value : Object.fromEntries(resolvedEntries);
66156
- }
66157
- return value;
66158
- } catch (err) {
66159
- console.error("[hydrateLinks] Error hydrating value:", err, value);
66160
- return value;
66386
+ //#region ../blocks/src/pageRenderingMode.ts
66387
+ var MissingBlockOverrideError$1 = class extends Error {
66388
+ constructor(blockKind) {
66389
+ super(`Override-only rendering requires an override for block kind "${blockKind}".`);
66390
+ this.blockKind = blockKind;
66391
+ this.code = "missing_block_override";
66392
+ this.name = "MissingBlockOverrideError";
66161
66393
  }
66394
+ };
66395
+ function isOverrideOnlyResourceInput(props) {
66396
+ return props.rendering?.kind === "overrides-only";
66162
66397
  }
66163
- function hydrateInternalLink(link, routes) {
66164
- const resolved = resolveRouteTarget(link.routeId, routes);
66165
- if (!resolved) return link;
66166
- const nextHref = resolved.href;
66167
- const currentHref = typeof link.href === "string" && link.href.length > 0 ? link.href : null;
66168
- const nextUpdatedAt = resolved.updatedAt;
66169
- const updates = {};
66170
- if (nextHref && nextHref !== currentHref) updates.href = nextHref;
66171
- if (nextUpdatedAt && link.updatedAt !== nextUpdatedAt) updates.updatedAt = nextUpdatedAt;
66172
- return Object.keys(updates).length > 0 ? {
66173
- ...link,
66174
- ...updates
66175
- } : link;
66176
- }
66177
- function isInternalLink$1(value) {
66178
- if (value.kind !== "internal") return false;
66179
- if (typeof value.routeId !== "string" || value.routeId.length === 0) return false;
66180
- return true;
66181
- }
66182
- function isPageLink$1(value) {
66183
- if (value.kind !== "page") return false;
66184
- if (typeof value.identifier !== "string" || value.identifier.length === 0) return false;
66185
- return true;
66186
- }
66187
- function hydratePageLink(link, context) {
66188
- const resolved = resolvePageRouteTarget(link, context);
66189
- if (!resolved) return link;
66398
+ function resolvePageThemeResources(props) {
66399
+ if (isOverrideOnlyResourceInput(props)) return { kind: "unavailable" };
66190
66400
  return {
66191
- ...link,
66192
- href: resolved.href,
66193
- routeId: resolved.routeId
66401
+ kind: "available",
66402
+ tokens: props.themeTokens ?? buildThemeRuntime$1(props.theme).tokens,
66403
+ config: props.theme
66194
66404
  };
66195
66405
  }
66196
- function isEntryLink$1(value) {
66197
- if (value.kind !== "entry") return false;
66198
- if (typeof value.contentType !== "string" || value.contentType.length === 0) return false;
66199
- if (typeof value.identifier !== "string" || value.identifier.length === 0) return false;
66200
- return true;
66406
+ function requireBlockOverride(resources, override, blockKind) {
66407
+ if (resources.kind === "unavailable" && !override) throw new MissingBlockOverrideError$1(blockKind);
66201
66408
  }
66202
- function hydrateEntryLink(link, context) {
66203
- const resolved = resolveEntryRouteTarget(link, context);
66204
- if (!resolved) return link;
66205
- return {
66206
- ...link,
66207
- href: resolved.href,
66208
- routeId: resolved.routeId
66209
- };
66409
+ function overrideThemeProps(resources) {
66410
+ return resources.kind === "available" ? {
66411
+ theme: resources.tokens,
66412
+ themeConfig: resources.config
66413
+ } : {};
66414
+ }
66415
+ function requireThemeResources(resources, blockKind) {
66416
+ if (resources.kind === "unavailable") throw new MissingBlockOverrideError$1(blockKind);
66417
+ return resources;
66210
66418
  }
66211
66419
  //#endregion
66212
- //#region ../blocks/src/sdkBlockTransform.ts
66213
- init_augmentManifest();
66214
- /**
66215
- * Transforms an SDK custom block into a BlockManifest.
66216
- *
66217
- * If the block has a `layout`, it can be rendered declaratively without React code.
66218
- * If no layout, the block MUST use blockOverrides for rendering.
66219
- */
66220
- function transformSdkBlockToManifest(sdkBlock) {
66221
- const hasLayout = Boolean(sdkBlock.layout) || Boolean(sdkBlock.variants && Object.keys(sdkBlock.variants).length > 0);
66222
- return augmentManifest({
66223
- name: sdkBlock.id,
66224
- version: "1.0.0",
66225
- title: sdkBlock.title,
66226
- titleSource: sdkBlock.titleSource,
66227
- description: sdkBlock.description,
66228
- component: sdkBlock.id,
66229
- fields: sdkBlock.fields,
66230
- slots: [],
66231
- category: sdkBlock.category,
66232
- tags: sdkBlock.tags,
66233
- icon: sdkBlock.icon,
66234
- layout: sdkBlock.layout,
66235
- variants: sdkBlock.variants,
66236
- defaultVariant: sdkBlock.defaultVariant,
66237
- variantOptions: sdkBlock.variantOptions,
66238
- previewCustomize: sdkBlock.previewCustomize,
66239
- behaviours: {
66240
- supportsThemeSwitching: true,
66241
- inlineEditing: hasLayout,
66242
- animation: hasLayout,
66243
- paletteHidden: false
66244
- }
66245
- });
66420
+ //#region ../blocks/src/pageRendererBoundaries.tsx
66421
+ init_typeGuards();
66422
+ const boundaryKey = (previousBlockId, nextBlockId) => `${previousBlockId}\u0000${nextBlockId}`;
66423
+ function isSiteStyleTransitionStyleGroup(value) {
66424
+ return value?.startsWith("site-style-transition-") === true;
66246
66425
  }
66247
- /**
66248
- * Transforms an SDK custom block into a SystemBlockDefinition.
66249
- *
66250
- * This creates a minimal definition with just the manifest - no data loaders
66251
- * or content normalizers since SDK blocks handle their own rendering.
66252
- */
66253
- function transformSdkBlockToDefinition(sdkBlock) {
66254
- return {
66255
- manifest: transformSdkBlockToManifest(sdkBlock),
66256
- dataLoaders: sdkBlock.dataLoaders
66257
- };
66426
+ function boundaryMapForAdjacentBlockIds(boundaries) {
66427
+ return new Map(boundaries.map((boundary) => [boundaryKey(boundary.previousBlockId, boundary.nextBlockId), boundary]));
66258
66428
  }
66259
- //#endregion
66260
- //#region ../blocks/src/customBlockRegistry.ts
66261
- init_src$3();
66262
- const defaultCustomBlockSourcePolicy = { kind: "canonical-db-fallback-sdk" };
66263
- function isCustomBlockKind(blockKind) {
66264
- return blockKind.startsWith("custom.");
66429
+ function boundaryBetweenBlocks(previousBlock, nextBlock, boundaries) {
66430
+ const previousBlockId = previousBlock?.id ?? null;
66431
+ const nextBlockId = nextBlock?.id ?? null;
66432
+ if (!previousBlockId || !nextBlockId) return null;
66433
+ return boundaries.get(boundaryKey(previousBlockId, nextBlockId)) ?? null;
66265
66434
  }
66266
- function transformToBlockDescriptor(sdkBlock, source = "sdk") {
66435
+ function renderBoundaryAfterBlock(input) {
66436
+ const previousBlockId = input.block.id;
66437
+ const nextBlockId = input.nextBlock?.id ?? null;
66438
+ if (!previousBlockId || !nextBlockId) return null;
66439
+ const boundary = input.boundaryByAdjacentBlockIds.get(boundaryKey(previousBlockId, nextBlockId));
66440
+ if (!boundary) return null;
66441
+ const rendered = /* @__PURE__ */ jsx("div", {
66442
+ "aria-hidden": "true",
66443
+ "data-block-boundary": "",
66444
+ "data-boundary-id": boundary.boundaryId,
66445
+ "data-boundary-previous-block-id": boundary.previousBlockId,
66446
+ "data-boundary-next-block-id": boundary.nextBlockId,
66447
+ "data-style-group": boundary.styleGroup,
66448
+ style: boundaryCssVarsStyle(boundary)
66449
+ }, `${input.blockKey}:boundary`);
66450
+ return input.wrapBoundary ? input.wrapBoundary(boundary, rendered) : rendered;
66451
+ }
66452
+ function boundaryCssVarsStyle(boundary) {
66267
66453
  return {
66268
- name: sdkBlock.id,
66269
- title: sdkBlock.title,
66270
- description: sdkBlock.description,
66271
- category: sdkBlock.category,
66272
- tags: sdkBlock.tags,
66273
- icon: sdkBlock.icon,
66274
- definition: transformSdkBlockToDefinition(sdkBlock),
66275
- source
66454
+ "--site-style-transition-from": boundary.cssVars.from,
66455
+ "--site-style-transition-to": boundary.cssVars.to
66276
66456
  };
66277
66457
  }
66278
- function toResolvedCustomBlock(manifest, source) {
66458
+ function boundaryReserveCssVarsStyle(input) {
66459
+ const before = input.before?.metrics.reserveCss ?? null;
66460
+ const after = input.after?.metrics.reserveCss ?? null;
66461
+ if (!before && !after) return void 0;
66279
66462
  return {
66280
- blockKind: manifest.id,
66281
- manifest: transformSdkBlockToManifest(manifest),
66282
- source,
66283
- descriptor: transformToBlockDescriptor(manifest, source.kind === "managed-database" ? "database" : "sdk")
66463
+ ...before ? { "--site-style-boundary-before-reserve": before } : {},
66464
+ ...after ? { "--site-style-boundary-after-reserve": after } : {}
66284
66465
  };
66285
66466
  }
66286
- function planCustomBlockRegistryResolution({ sdkConfig, customBlocks = [], policy = defaultCustomBlockSourcePolicy }) {
66287
- switch (policy.kind) {
66288
- case "canonical-db-fallback-sdk": {
66289
- const entriesByKind = /* @__PURE__ */ new Map();
66290
- const conflicts = [];
66291
- for (const customBlock of customBlocks) entriesByKind.set(customBlock.manifest.id, toResolvedCustomBlock(customBlock.manifest, customBlock.source));
66292
- for (const sdkBlock of sdkConfig?.customBlocks ?? []) {
66293
- const existing = entriesByKind.get(sdkBlock.id);
66294
- if (existing) {
66295
- conflicts.push({
66296
- kind: "conflict",
66297
- blockKind: existing.blockKind,
66298
- winner: existing.source,
66299
- loser: { kind: "sdk-config" },
66300
- reason: "db-canonical-sdk-fallback"
66301
- });
66302
- continue;
66303
- }
66304
- entriesByKind.set(sdkBlock.id, toResolvedCustomBlock(sdkBlock, { kind: "sdk-config" }));
66305
- }
66306
- return {
66307
- policy,
66308
- entries: Array.from(entriesByKind.values()),
66309
- conflicts
66310
- };
66311
- }
66312
- }
66467
+ function transitionCssVarsStyle(content) {
66468
+ const transitionStyles = isObjectRecord$1(content._transitionStyles) ? content._transitionStyles : null;
66469
+ const cssVars = isObjectRecord$1(transitionStyles?.cssVars) ? transitionStyles.cssVars : null;
66470
+ const from = typeof cssVars?.from === "string" ? cssVars.from : null;
66471
+ const to = typeof cssVars?.to === "string" ? cssVars.to : null;
66472
+ if (!from && !to) return void 0;
66473
+ return {
66474
+ ...from ? { "--site-style-transition-from": from } : {},
66475
+ ...to ? { "--site-style-transition-to": to } : {}
66476
+ };
66313
66477
  }
66314
- function createCustomBlockRegistry({ sdkConfig, customBlocks = [], policy = defaultCustomBlockSourcePolicy, onConflict }) {
66315
- const plan = planCustomBlockRegistryResolution({
66316
- sdkConfig,
66317
- customBlocks,
66318
- policy
66319
- });
66320
- const entriesByKind = new Map(plan.entries.map((entry) => [entry.blockKind, entry]));
66321
- for (const conflict of plan.conflicts) onConflict?.(`Using ${sourceLabel(conflict.winner)} custom block "${conflict.blockKind}" - ${sourceLabel(conflict.loser)} block is fallback only`);
66478
+ function mergeStyleObjects(left, right) {
66479
+ if (!left) return right;
66480
+ if (!right) return left;
66322
66481
  return {
66323
- entries: plan.entries,
66324
- conflicts: plan.conflicts,
66325
- findManifest: (blockKind) => {
66326
- if (!isCustomBlockKind(blockKind)) return void 0;
66327
- return entriesByKind.get(blockKind);
66328
- }
66482
+ ...left,
66483
+ ...right
66329
66484
  };
66330
66485
  }
66331
- function sourceLabel(source) {
66332
- switch (source.kind) {
66333
- case "managed-database": return "DB";
66334
- case "sdk-synced": return "SDK-synced DB";
66335
- case "sdk-config": return "SDK config";
66336
- default: return assertNever$24(source);
66337
- }
66486
+ function pageBlockPosition(index, blockCount) {
66487
+ if (blockCount <= 1) return "only";
66488
+ if (index === 0) return "first";
66489
+ if (index === blockCount - 1) return "last";
66490
+ return "middle";
66338
66491
  }
66339
66492
  //#endregion
66340
66493
  //#region ../blocks/src/PageRenderer.tsx
@@ -66342,7 +66495,8 @@ init_fragments();
66342
66495
  init_colorStyles();
66343
66496
  init_typeGuards();
66344
66497
  init_media();
66345
- function PageRenderer$1({ theme, page, runtimeBoundaries, usePlaceholders = false, dataContext, wrapBlock, wrapBoundary, registry, themeTokens: providedThemeTokens, routeMap, blockOverrides, sdkConfig, customBlocks, previewAuthoring }) {
66498
+ function PageRenderer$1(props) {
66499
+ const { page, runtimeBoundaries, usePlaceholders = false, dataContext, wrapBlock, wrapBoundary, registry, routeMap, blockOverrides, sdkConfig, customBlocks, previewAuthoring } = props;
66346
66500
  const imageResolveContext = React$1.useMemo(() => resolvePageRendererImageResolveContext(dataContext), [
66347
66501
  dataContext?.imageResolveContext,
66348
66502
  dataContext?.mediaAssets,
@@ -66351,12 +66505,16 @@ function PageRenderer$1({ theme, page, runtimeBoundaries, usePlaceholders = fals
66351
66505
  ]);
66352
66506
  const boundaryByAdjacentBlockIds = React$1.useMemo(() => boundaryMapForAdjacentBlockIds(runtimeBoundaries ?? []), [runtimeBoundaries]);
66353
66507
  const usesRuntimeBoundaries = runtimeBoundaries !== void 0;
66508
+ const themeResources = React$1.useMemo(() => resolvePageThemeResources(props), [
66509
+ props.rendering,
66510
+ props.theme,
66511
+ props.themeTokens
66512
+ ]);
66354
66513
  if (!page || page.blocks.length === 0) return /* @__PURE__ */ jsx("div", {
66355
66514
  className: "rb-p-6 rb-caption",
66356
66515
  style: textColorStyle("mutedText"),
66357
66516
  children: "No blocks found."
66358
66517
  });
66359
- const themeTokens = providedThemeTokens ?? buildThemeRuntime$1(theme).tokens;
66360
66518
  const resolvedRegistry = registry ?? getDefaultComponentRegistry();
66361
66519
  setContextResolveImageUrlContext(imageResolveContext);
66362
66520
  return /* @__PURE__ */ jsx("div", { children: page.blocks.map((block, index) => {
@@ -66379,22 +66537,14 @@ function PageRenderer$1({ theme, page, runtimeBoundaries, usePlaceholders = fals
66379
66537
  const renderableContent = getRenderableContent(block, dataContext?.previewStage);
66380
66538
  const variantKey = definition?.manifest ? resolveVariantKey(definition.manifest, renderableContent) : null;
66381
66539
  const shouldUseWrapper = !managesOwnWrapper || Boolean(wrapBlock);
66382
- const blockSectionProps = {
66383
- themeTokens,
66384
- themeConfig: theme,
66540
+ const blockSectionProps = buildBlockSectionProps({
66541
+ props,
66542
+ themeResources,
66385
66543
  block,
66386
- usePlaceholders,
66387
- dataContext,
66388
66544
  blockKey,
66389
- registry: resolvedRegistry,
66390
- routeMap,
66391
- wrapBlock,
66392
- blockOverrides,
66393
- sdkConfig,
66394
- customBlocks,
66395
66545
  imageResolveContext,
66396
- previewAuthoring
66397
- };
66546
+ registry: resolvedRegistry
66547
+ });
66398
66548
  if (!shouldUseWrapper) {
66399
66549
  const rendered = /* @__PURE__ */ jsx(MemoBlockSection, { ...blockSectionProps }, `${blockKey}:block`);
66400
66550
  return boundaryElement ? /* @__PURE__ */ jsxs(React$1.Fragment, { children: [rendered, boundaryElement] }, blockKey) : rendered;
@@ -66436,81 +66586,6 @@ function PageRenderer$1({ theme, page, runtimeBoundaries, usePlaceholders = fals
66436
66586
  })] }, blockKey);
66437
66587
  }) });
66438
66588
  }
66439
- function isSiteStyleTransitionStyleGroup(value) {
66440
- return value?.startsWith("site-style-transition-") === true;
66441
- }
66442
- function boundaryMapForAdjacentBlockIds(boundaries) {
66443
- return new Map(boundaries.map((boundary) => [boundaryKey(boundary.previousBlockId, boundary.nextBlockId), boundary]));
66444
- }
66445
- function boundaryKey(previousBlockId, nextBlockId) {
66446
- return `${previousBlockId}\u0000${nextBlockId}`;
66447
- }
66448
- function boundaryBetweenBlocks(previousBlock, nextBlock, boundaryByAdjacentBlockIds) {
66449
- const previousBlockId = previousBlock?.id ?? null;
66450
- const nextBlockId = nextBlock?.id ?? null;
66451
- if (!previousBlockId || !nextBlockId) return null;
66452
- return boundaryByAdjacentBlockIds.get(boundaryKey(previousBlockId, nextBlockId)) ?? null;
66453
- }
66454
- function renderBoundaryAfterBlock(input) {
66455
- const previousBlockId = input.block.id;
66456
- const nextBlockId = input.nextBlock?.id ?? null;
66457
- if (!previousBlockId || !nextBlockId) return null;
66458
- const boundary = input.boundaryByAdjacentBlockIds.get(boundaryKey(previousBlockId, nextBlockId));
66459
- if (!boundary) return null;
66460
- const rendered = /* @__PURE__ */ jsx("div", {
66461
- "aria-hidden": "true",
66462
- "data-block-boundary": "",
66463
- "data-boundary-id": boundary.boundaryId,
66464
- "data-boundary-previous-block-id": boundary.previousBlockId,
66465
- "data-boundary-next-block-id": boundary.nextBlockId,
66466
- "data-style-group": boundary.styleGroup,
66467
- style: boundaryCssVarsStyle(boundary)
66468
- }, `${input.blockKey}:boundary`);
66469
- return input.wrapBoundary ? input.wrapBoundary(boundary, rendered) : rendered;
66470
- }
66471
- function boundaryCssVarsStyle(boundary) {
66472
- return {
66473
- "--site-style-transition-from": boundary.cssVars.from,
66474
- "--site-style-transition-to": boundary.cssVars.to
66475
- };
66476
- }
66477
- function boundaryReserveCssVarsStyle(input) {
66478
- const before = input.before ? boundaryReserveValueForTreatment(input.before) : null;
66479
- const after = input.after ? boundaryReserveValueForTreatment(input.after) : null;
66480
- if (!before && !after) return void 0;
66481
- return {
66482
- ...before ? { "--site-style-boundary-before-reserve": before } : {},
66483
- ...after ? { "--site-style-boundary-after-reserve": after } : {}
66484
- };
66485
- }
66486
- function boundaryReserveValueForTreatment(boundary) {
66487
- return boundary.metrics.reserveCss;
66488
- }
66489
- function transitionCssVarsStyle(content) {
66490
- const transitionStyles = isObjectRecord$1(content._transitionStyles) ? content._transitionStyles : null;
66491
- const cssVars = isObjectRecord$1(transitionStyles?.cssVars) ? transitionStyles.cssVars : null;
66492
- const from = typeof cssVars?.from === "string" ? cssVars.from : null;
66493
- const to = typeof cssVars?.to === "string" ? cssVars.to : null;
66494
- if (!from && !to) return void 0;
66495
- return {
66496
- ...from ? { "--site-style-transition-from": from } : {},
66497
- ...to ? { "--site-style-transition-to": to } : {}
66498
- };
66499
- }
66500
- function mergeStyleObjects(left, right) {
66501
- if (!left) return right;
66502
- if (!right) return left;
66503
- return {
66504
- ...left,
66505
- ...right
66506
- };
66507
- }
66508
- function pageBlockPosition(index, blockCount) {
66509
- if (blockCount <= 1) return "only";
66510
- if (index === 0) return "first";
66511
- if (index === blockCount - 1) return "last";
66512
- return "middle";
66513
- }
66514
66589
  function resolvePageRendererImageResolveContext(dataContext) {
66515
66590
  const input = dataContext?.imageResolveContext;
66516
66591
  return buildResolveImageUrlContext({
@@ -66520,6 +66595,23 @@ function resolvePageRendererImageResolveContext(dataContext) {
66520
66595
  mediaAssets: input?.mediaAssets ?? dataContext?.mediaAssets
66521
66596
  });
66522
66597
  }
66598
+ function buildBlockSectionProps(input) {
66599
+ return {
66600
+ themeResources: input.themeResources,
66601
+ block: input.block,
66602
+ usePlaceholders: input.props.usePlaceholders ?? false,
66603
+ dataContext: input.props.dataContext,
66604
+ blockKey: input.blockKey,
66605
+ registry: input.registry,
66606
+ routeMap: input.props.routeMap,
66607
+ wrapBlock: input.props.wrapBlock,
66608
+ blockOverrides: input.props.blockOverrides,
66609
+ sdkConfig: input.props.sdkConfig,
66610
+ customBlocks: input.props.customBlocks,
66611
+ imageResolveContext: input.imageResolveContext,
66612
+ previewAuthoring: input.props.previewAuthoring
66613
+ };
66614
+ }
66523
66615
  /**
66524
66616
  * Look up a block override component by block kind.
66525
66617
  * Supports both full ("block.hero") and short ("hero") keys.
@@ -66586,7 +66678,7 @@ function getCachedValidator(manifest, flavour) {
66586
66678
  * referential equality of all props that affect rendering. Standard React.memo
66587
66679
  * wouldn't catch all the render triggers from the editor store.
66588
66680
  */
66589
- const MemoBlockSection = React$1.memo(function MemoBlockSection({ themeTokens, themeConfig, block, usePlaceholders, dataContext, registry, routeMap, wrapBlock, blockOverrides, sdkConfig, customBlocks, imageResolveContext, previewAuthoring }) {
66681
+ const MemoBlockSection = React$1.memo(function MemoBlockSection({ themeResources, block, usePlaceholders, dataContext, registry, routeMap, wrapBlock, blockOverrides, sdkConfig, customBlocks, imageResolveContext, previewAuthoring }) {
66590
66682
  const perfStart = globalThis.process?.env?.DEBUG_PERF === "1" && typeof window === "undefined" ? Date.now() : 0;
66591
66683
  const fallbackImageResolveContext = getCurrentResolveImageUrlContext();
66592
66684
  const resolvedImageResolveContext = imageResolveContext ?? fallbackImageResolveContext;
@@ -66607,6 +66699,7 @@ const MemoBlockSection = React$1.memo(function MemoBlockSection({ themeTokens, t
66607
66699
  return node;
66608
66700
  }
66609
66701
  const OverrideComponent = getBlockOverride(block.kind, blockOverrides);
66702
+ requireBlockOverride(themeResources, OverrideComponent, block.kind);
66610
66703
  let definition = getBlockDefinition(block.kind);
66611
66704
  if (!definition && block.kind.startsWith("custom.")) definition = createCustomBlockRegistry({
66612
66705
  sdkConfig,
@@ -66619,8 +66712,7 @@ const MemoBlockSection = React$1.memo(function MemoBlockSection({ themeTokens, t
66619
66712
  if (OverrideComponent) {
66620
66713
  const rendered = /* @__PURE__ */ jsx(OverrideComponent, {
66621
66714
  content: getRenderableContent(block, dataContext?.previewStage),
66622
- theme: themeTokens,
66623
- themeConfig,
66715
+ ...overrideThemeProps(themeResources),
66624
66716
  data: void 0,
66625
66717
  siteId: dataContext?.siteId,
66626
66718
  apiBaseUrl: dataContext?.apiBaseUrl,
@@ -66719,8 +66811,7 @@ const MemoBlockSection = React$1.memo(function MemoBlockSection({ themeTokens, t
66719
66811
  const hasResolvedData = !!resolved && typeof resolved === "object" && Object.keys(resolved).length > 0;
66720
66812
  const baseProps = {
66721
66813
  content: hydratedContent,
66722
- theme: themeTokens,
66723
- themeConfig,
66814
+ ...overrideThemeProps(themeResources),
66724
66815
  data: resolved,
66725
66816
  siteId: dataContext?.siteId,
66726
66817
  apiBaseUrl: dataContext?.apiBaseUrl,
@@ -66740,6 +66831,7 @@ const MemoBlockSection = React$1.memo(function MemoBlockSection({ themeTokens, t
66740
66831
  let rendered;
66741
66832
  if (OverrideComponent) rendered = /* @__PURE__ */ jsx(OverrideComponent, { ...baseProps });
66742
66833
  else {
66834
+ requireThemeResources(themeResources, block.kind);
66743
66835
  const BlockComponent = getCachedBlockComponent(definition.manifest);
66744
66836
  const pathBase = typeof block.id === "string" && block.id.length > 0 ? `blocks.${block.id}.` : void 0;
66745
66837
  const rootContext = { $root: {
@@ -66789,7 +66881,7 @@ const MemoBlockSection = React$1.memo(function MemoBlockSection({ themeTokens, t
66789
66881
  });
66790
66882
  }
66791
66883
  }, (prev, next) => {
66792
- return prev.block === next.block && prev.registry === next.registry && prev.dataContext === next.dataContext && prev.themeTokens === next.themeTokens && prev.themeConfig === next.themeConfig && prev.routeMap === next.routeMap && prev.usePlaceholders === next.usePlaceholders && prev.wrapBlock === next.wrapBlock && prev.blockOverrides === next.blockOverrides && prev.sdkConfig === next.sdkConfig && prev.customBlocks === next.customBlocks && prev.imageResolveContext === next.imageResolveContext && prev.previewAuthoring === next.previewAuthoring;
66884
+ return prev.block === next.block && prev.registry === next.registry && prev.dataContext === next.dataContext && prev.themeResources === next.themeResources && prev.routeMap === next.routeMap && prev.usePlaceholders === next.usePlaceholders && prev.wrapBlock === next.wrapBlock && prev.blockOverrides === next.blockOverrides && prev.sdkConfig === next.sdkConfig && prev.customBlocks === next.customBlocks && prev.imageResolveContext === next.imageResolveContext && prev.previewAuthoring === next.previewAuthoring;
66793
66885
  });
66794
66886
  function fallback(message) {
66795
66887
  return /* @__PURE__ */ jsx("div", {
@@ -80729,6 +80821,26 @@ z$1.object({
80729
80821
  mode: z$1.enum(["apply", "preview"]).optional()
80730
80822
  }).strict();
80731
80823
  //#endregion
80824
+ //#region ../api/src/sdkThemeWire.ts
80825
+ init_schema();
80826
+ /**
80827
+ * Validate a wire value without replacing it with the schema's parsed output.
80828
+ * The returned type is deliberately the schema input, not its canonical output.
80829
+ */
80830
+ function losslessValidatedSchema(schema) {
80831
+ return z$1.unknown().superRefine((value, ctx) => {
80832
+ const parsed = schema.safeParse(value);
80833
+ if (parsed.success) return;
80834
+ for (const issue of parsed.error.issues) ctx.addIssue({
80835
+ code: "custom",
80836
+ path: issue.path,
80837
+ message: issue.message,
80838
+ params: { validationCode: issue.code }
80839
+ });
80840
+ }).transform((value) => value);
80841
+ }
80842
+ losslessValidatedSchema(themeSchema);
80843
+ //#endregion
80732
80844
  //#region ../api/src/siteOnboarding.ts
80733
80845
  const LAUNCH_REQUIREMENT_OVERRIDE_DEFINITIONS = { configure_appointments: {
80734
80846
  requirementId: "configure_appointments",
@@ -159880,8 +159992,9 @@ function parseBlocksTheme(theme) {
159880
159992
  function buildThemeRuntime(theme) {
159881
159993
  return { tokens: buildThemeRuntime$1(parseBlocksTheme(theme)).tokens };
159882
159994
  }
159883
- //#endregion
159884
- //#region src/rendering/blocks-page-renderer.ts
159995
+ function isOverrideOnlyPageRenderer(props) {
159996
+ return props.rendering?.kind === "overrides-only";
159997
+ }
159885
159998
  function normalizeSdkCustomBlocks(customBlocks) {
159886
159999
  if (!customBlocks) return void 0;
159887
160000
  return customBlocks.map((block) => {
@@ -159912,15 +160025,23 @@ function toBlocksPageRendererDataContext(dataContext) {
159912
160025
  }
159913
160026
  function PageRenderer(props) {
159914
160027
  const blocksSdkConfig = props.sdkConfig ? { customBlocks: normalizeSdkCustomBlocks(props.sdkConfig.customBlocks) } : props.sdkConfig;
159915
- const blocksTheme = parseBlocksTheme(props.theme);
159916
- const blocksProps = {
159917
- ...props,
159918
- theme: blocksTheme,
160028
+ const { rendering: _rendering, theme: _theme, themeTokens: _themeTokens, ...commonProps } = props;
160029
+ const commonBlocksProps = {
160030
+ ...commonProps,
159919
160031
  dataContext: props.dataContext ? toBlocksPageRendererDataContext(props.dataContext) : void 0,
159920
160032
  blockOverrides: toBlocksBlockOverrides(props.blockOverrides),
159921
160033
  sdkConfig: blocksSdkConfig,
159922
160034
  customBlocks: normalizeSdkCustomBlocks(props.customBlocks)
159923
160035
  };
160036
+ const blocksProps = isOverrideOnlyPageRenderer(props) ? {
160037
+ ...commonBlocksProps,
160038
+ rendering: { kind: "overrides-only" },
160039
+ blockOverrides: toBlocksBlockOverrides(props.blockOverrides) ?? {}
160040
+ } : {
160041
+ ...commonBlocksProps,
160042
+ theme: parseBlocksTheme(props.theme),
160043
+ themeTokens: props.themeTokens
160044
+ };
159924
160045
  return React$1.createElement(PageRenderer$1, blocksProps);
159925
160046
  }
159926
160047
  //#endregion
@@ -159953,8 +160074,31 @@ function renderWithSdkThemeRuntime({ themeRuntime, theme, children }) {
159953
160074
  default: return assertNever$24(themeRuntime);
159954
160075
  }
159955
160076
  }
160077
+ function renderWithOverrideOnlyRuntime({ runtime, children }) {
160078
+ switch (runtime.kind) {
160079
+ case "responsive-only": return /* @__PURE__ */ jsx(ResponsiveScope, {
160080
+ responsiveMode: runtime.responsiveMode,
160081
+ children
160082
+ });
160083
+ case "none": return /* @__PURE__ */ jsx(Fragment, { children });
160084
+ default: return assertNever$24(runtime);
160085
+ }
160086
+ }
159956
160087
  //#endregion
159957
160088
  //#region src/rendering/components/pageShared.tsx
160089
+ function isOverrideOnlyPage(props) {
160090
+ return props.rendering?.kind === "overrides-only";
160091
+ }
160092
+ function resolvePageThemeTokens(props) {
160093
+ const baseTokens = props.themeTokens ?? buildThemeRuntime(props.theme).tokens;
160094
+ return props.sdkConfig?.theme?.palette ? {
160095
+ ...baseTokens,
160096
+ palette: {
160097
+ ...baseTokens.palette,
160098
+ ...props.sdkConfig.theme.palette
160099
+ }
160100
+ } : baseTokens;
160101
+ }
159958
160102
  function toPageHydrationBootstrapConfig(props) {
159959
160103
  return {
159960
160104
  siteId: props.siteId,
@@ -159962,55 +160106,60 @@ function toPageHydrationBootstrapConfig(props) {
159962
160106
  mediaAssets: props.mediaAssets
159963
160107
  };
159964
160108
  }
159965
- function PageContent({ page, runtimeBoundaries, theme, themeTokens: providedTokens, siteId, resolvedData, bookingOfferingPresets, routeMap, pagesByIdentifier, entriesByIdentifier, wrapBlock, registry, usePlaceholders = false, blockOverrides, sdkConfig, customBlocks, supabaseUrl, mediaAssets, apiBaseUrl, portalToken, previewToken, dataContext, themeRuntime = defaultPageThemeRuntime }) {
159966
- const baseTokens = providedTokens ?? buildThemeRuntime(theme).tokens;
159967
- return renderWithSdkThemeRuntime({
159968
- themeRuntime,
159969
- theme,
159970
- children: /* @__PURE__ */ jsx(PageRenderer, {
159971
- theme,
159972
- page,
159973
- runtimeBoundaries,
159974
- themeTokens: sdkConfig?.theme?.palette ? {
159975
- ...baseTokens,
159976
- palette: {
159977
- ...baseTokens.palette,
159978
- ...sdkConfig.theme.palette
159979
- }
159980
- } : baseTokens,
159981
- usePlaceholders,
159982
- dataContext: {
160109
+ function PageContent(props) {
160110
+ const { page, runtimeBoundaries, siteId, resolvedData, bookingOfferingPresets, routeMap, pagesByIdentifier, entriesByIdentifier, wrapBlock, registry, usePlaceholders = false, blockOverrides, sdkConfig, customBlocks, supabaseUrl, mediaAssets, apiBaseUrl, portalToken, previewToken, dataContext } = props;
160111
+ const rendererCommonProps = {
160112
+ page,
160113
+ runtimeBoundaries,
160114
+ usePlaceholders,
160115
+ dataContext: {
160116
+ siteId,
160117
+ apiBaseUrl,
160118
+ portalToken,
160119
+ previewToken,
160120
+ resolvedData,
160121
+ bookingOfferingPresets: bookingOfferingPresets ?? [],
160122
+ routes: routeMap,
160123
+ pagesByIdentifier,
160124
+ entriesByIdentifier,
160125
+ occurrenceContext: dataContext?.occurrenceContext ?? null,
160126
+ entrySubrouteContext: dataContext?.entrySubrouteContext ?? null,
160127
+ contentEntry: dataContext?.contentEntry ?? null,
160128
+ pageSurface: dataContext?.pageSurface ?? null,
160129
+ subject: dataContext?.subject ?? null,
160130
+ editableRouteMetadataFieldIds: dataContext?.editableRouteMetadataFieldIds ?? null,
160131
+ previewStage: dataContext?.previewStage,
160132
+ supabaseUrl,
160133
+ mediaAssets,
160134
+ imageResolveContext: {
159983
160135
  siteId,
159984
- apiBaseUrl,
159985
- portalToken,
159986
- previewToken,
159987
- resolvedData,
159988
- bookingOfferingPresets: bookingOfferingPresets ?? [],
159989
- routes: routeMap,
159990
- pagesByIdentifier,
159991
- entriesByIdentifier,
159992
- occurrenceContext: dataContext?.occurrenceContext ?? null,
159993
- entrySubrouteContext: dataContext?.entrySubrouteContext ?? null,
159994
- contentEntry: dataContext?.contentEntry ?? null,
159995
- pageSurface: dataContext?.pageSurface ?? null,
159996
- subject: dataContext?.subject ?? null,
159997
- editableRouteMetadataFieldIds: dataContext?.editableRouteMetadataFieldIds ?? null,
159998
- previewStage: dataContext?.previewStage,
159999
160136
  supabaseUrl,
160000
- mediaAssets,
160001
- imageResolveContext: {
160002
- siteId,
160003
- supabaseUrl,
160004
- mediaAssets
160005
- }
160006
- },
160007
- routeMap,
160008
- wrapBlock,
160009
- registry,
160010
- blockOverrides,
160011
- sdkConfig: sdkConfig ? { customBlocks: sdkConfig.customBlocks } : null,
160012
- customBlocks
160013
- })
160137
+ mediaAssets
160138
+ }
160139
+ },
160140
+ routeMap,
160141
+ wrapBlock,
160142
+ registry,
160143
+ sdkConfig: sdkConfig ? { customBlocks: sdkConfig.customBlocks } : null,
160144
+ customBlocks
160145
+ };
160146
+ const content = isOverrideOnlyPage(props) ? /* @__PURE__ */ jsx(PageRenderer, {
160147
+ ...rendererCommonProps,
160148
+ rendering: { kind: "overrides-only" },
160149
+ blockOverrides: props.blockOverrides
160150
+ }) : /* @__PURE__ */ jsx(PageRenderer, {
160151
+ ...rendererCommonProps,
160152
+ theme: props.theme,
160153
+ themeTokens: resolvePageThemeTokens(props),
160154
+ blockOverrides
160155
+ });
160156
+ return isOverrideOnlyPage(props) ? renderWithOverrideOnlyRuntime({
160157
+ runtime: props.rendering.runtime,
160158
+ children: content
160159
+ }) : renderWithSdkThemeRuntime({
160160
+ themeRuntime: props.themeRuntime ?? defaultPageThemeRuntime,
160161
+ theme: props.theme,
160162
+ children: content
160014
160163
  });
160015
160164
  }
160016
160165
  //#endregion
@@ -160176,7 +160325,7 @@ var SimpleCache = class {
160176
160325
  * 1. This constant
160177
160326
  * 2. The "version" field in package.json
160178
160327
  */
160179
- const SDK_VERSION = "0.128.0";
160328
+ const SDK_VERSION = "0.129.1";
160180
160329
  //#endregion
160181
160330
  //#region src/client/error.ts
160182
160331
  let _Symbol$for;