@riverbankcms/sdk 0.129.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 (260) hide show
  1. package/README.md +19 -256
  2. package/dist/{PreviewEditorSidebar-B43CJ0g_.mjs → PreviewEditorSidebar-DceRseRV.mjs} +3 -3
  3. package/dist/{PreviewEditorUI-DHirVkeM.mjs → PreviewEditorUI-BNunq3kk.mjs} +2 -2
  4. package/dist/{SdkPreviewModeRuntime-BJumZy1B.mjs → SdkPreviewModeRuntime-Bt87-62u.mjs} +3 -3
  5. package/dist/{SiteChromeCustomizeContext-D9SlpwEj.mjs → SiteChromeCustomizeContext-BLl-OlL4.mjs} +460 -393
  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/media-core/src/index.d.ts +1 -0
  15. package/dist/_dts/sdk/src/config/types.d.ts +4 -4
  16. package/dist/_dts/sdk/src/version.d.ts +1 -1
  17. package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
  18. package/dist/_dts/theme-core/src/palette/index.d.ts +1 -0
  19. package/dist/_dts/theme-core/src/site-styles/headerLayoutStyleCatalog.d.ts +254 -0
  20. package/dist/_dts/theme-core/src/site-styles/headerLegacyLooks.d.ts +372 -0
  21. package/dist/_dts/theme-core/src/site-styles/headerLookBranding.d.ts +106 -0
  22. package/dist/_dts/theme-core/src/site-styles/headerLookSelection.d.ts +2 -0
  23. package/dist/_dts/theme-core/src/site-styles/headerLookTypes.d.ts +212 -0
  24. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +7 -841
  25. package/dist/_dts/theme-core/src/site-styles/headerStyleCompiler.d.ts +3 -0
  26. package/dist/_dts/theme-core/src/site-styles/headerStyleCompilerPrimitives.d.ts +23 -0
  27. package/dist/client/client.mjs +492 -426
  28. package/dist/client/hooks.mjs +59 -36
  29. package/dist/client/rendering/client.mjs +593 -547
  30. package/dist/client/rendering.mjs +491 -425
  31. package/dist/preview-next/client/runtime.mjs +3 -3
  32. package/dist/{sdk-runtime-CfZd5pAm.mjs → sdk-runtime-C20CVWbb.mjs} +1 -1
  33. package/dist/{separator-DkTe68HE.mjs → separator-BE3NCquy.mjs} +1 -1
  34. package/dist/server/components.mjs +72 -49
  35. package/dist/server/config-validation.mjs +59 -36
  36. package/dist/server/config.mjs +59 -36
  37. package/dist/server/data.mjs +59 -36
  38. package/dist/server/index.mjs +1 -1
  39. package/dist/server/manifest.mjs +4966 -0
  40. package/dist/server/next.mjs +73 -50
  41. package/dist/server/page-converter.mjs +40 -36
  42. package/dist/server/prebuild.mjs +1 -1
  43. package/dist/server/rendering/server.mjs +72 -49
  44. package/dist/server/rendering.mjs +72 -49
  45. package/dist/server/routing.mjs +472 -402
  46. package/dist/server/server.mjs +60 -37
  47. package/dist/server/theme-bridge.mjs +70 -66
  48. package/package.json +9 -12
  49. package/dist/_dts/api/src/event-presentation.d.ts +0 -14
  50. package/dist/_dts/blocks/src/definitions.d.ts +0 -14
  51. package/dist/_dts/sdk/src/cli/canonical-entry-policy.d.ts +0 -53
  52. package/dist/_dts/sdk/src/cli/commands/audit.d.ts +0 -101
  53. package/dist/_dts/sdk/src/cli/commands/block.d.ts +0 -24
  54. package/dist/_dts/sdk/src/cli/commands/compare.d.ts +0 -62
  55. package/dist/_dts/sdk/src/cli/commands/content-type.d.ts +0 -10
  56. package/dist/_dts/sdk/src/cli/commands/content.d.ts +0 -56
  57. package/dist/_dts/sdk/src/cli/commands/delete.d.ts +0 -14
  58. package/dist/_dts/sdk/src/cli/commands/deploy.d.ts +0 -43
  59. package/dist/_dts/sdk/src/cli/commands/drafts.d.ts +0 -18
  60. package/dist/_dts/sdk/src/cli/commands/entry.d.ts +0 -55
  61. package/dist/_dts/sdk/src/cli/commands/env.d.ts +0 -31
  62. package/dist/_dts/sdk/src/cli/commands/event.d.ts +0 -23
  63. package/dist/_dts/sdk/src/cli/commands/eventOccurrenceSchedule.d.ts +0 -12
  64. package/dist/_dts/sdk/src/cli/commands/identifiers.d.ts +0 -10
  65. package/dist/_dts/sdk/src/cli/commands/init-docs.d.ts +0 -13
  66. package/dist/_dts/sdk/src/cli/commands/manifest.d.ts +0 -10
  67. package/dist/_dts/sdk/src/cli/commands/media-validation.d.ts +0 -3
  68. package/dist/_dts/sdk/src/cli/commands/migrate.d.ts +0 -11
  69. package/dist/_dts/sdk/src/cli/commands/navigation.d.ts +0 -12
  70. package/dist/_dts/sdk/src/cli/commands/page.d.ts +0 -14
  71. package/dist/_dts/sdk/src/cli/commands/publish-all.d.ts +0 -50
  72. package/dist/_dts/sdk/src/cli/commands/pull-dated-offering-scope.d.ts +0 -10
  73. package/dist/_dts/sdk/src/cli/commands/pull-dry-run.d.ts +0 -70
  74. package/dist/_dts/sdk/src/cli/commands/pull-scope-diff.d.ts +0 -8
  75. package/dist/_dts/sdk/src/cli/commands/pull.d.ts +0 -43
  76. package/dist/_dts/sdk/src/cli/commands/push/consts.d.ts +0 -3
  77. package/dist/_dts/sdk/src/cli/commands/push/execute/diff.d.ts +0 -19
  78. package/dist/_dts/sdk/src/cli/commands/push/execute/footer.d.ts +0 -42
  79. package/dist/_dts/sdk/src/cli/commands/push/execute/localMediaReporting.d.ts +0 -23
  80. package/dist/_dts/sdk/src/cli/commands/push/execute/media.d.ts +0 -22
  81. package/dist/_dts/sdk/src/cli/commands/push/execute/metadata.d.ts +0 -1
  82. package/dist/_dts/sdk/src/cli/commands/push/execute/reporting.d.ts +0 -7
  83. package/dist/_dts/sdk/src/cli/commands/push/execute/theme.d.ts +0 -63
  84. package/dist/_dts/sdk/src/cli/commands/push/filter.d.ts +0 -15
  85. package/dist/_dts/sdk/src/cli/commands/push/metadata.d.ts +0 -29
  86. package/dist/_dts/sdk/src/cli/commands/push/normalizeLocalContent.d.ts +0 -2
  87. package/dist/_dts/sdk/src/cli/commands/push/options.d.ts +0 -32
  88. package/dist/_dts/sdk/src/cli/commands/push/publishGuidance.d.ts +0 -15
  89. package/dist/_dts/sdk/src/cli/commands/push/pushAllExtras.d.ts +0 -25
  90. package/dist/_dts/sdk/src/cli/commands/push/scopes/commandBackedDatedOfferingScope.d.ts +0 -83
  91. package/dist/_dts/sdk/src/cli/commands/push/scopes/eventCategories.d.ts +0 -4
  92. package/dist/_dts/sdk/src/cli/commands/push/scopes/events.d.ts +0 -4
  93. package/dist/_dts/sdk/src/cli/commands/push/scopes/mediaPrep.d.ts +0 -14
  94. package/dist/_dts/sdk/src/cli/commands/push/scopes/pushScopeGeneric.d.ts +0 -6
  95. package/dist/_dts/sdk/src/cli/commands/push/scopes/types.d.ts +0 -87
  96. package/dist/_dts/sdk/src/cli/commands/push/scopes/venues.d.ts +0 -4
  97. package/dist/_dts/sdk/src/cli/commands/push/stale-resolution.d.ts +0 -48
  98. package/dist/_dts/sdk/src/cli/commands/push/stale.d.ts +0 -17
  99. package/dist/_dts/sdk/src/cli/commands/push/verification.d.ts +0 -56
  100. package/dist/_dts/sdk/src/cli/commands/push/workflowPlan.d.ts +0 -34
  101. package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +0 -54
  102. package/dist/_dts/sdk/src/cli/commands/push.d.ts +0 -40
  103. package/dist/_dts/sdk/src/cli/commands/setup.d.ts +0 -3
  104. package/dist/_dts/sdk/src/cli/commands/style.d.ts +0 -60
  105. package/dist/_dts/sdk/src/cli/commands/verify.d.ts +0 -11
  106. package/dist/_dts/sdk/src/cli/commands/webhooks.d.ts +0 -44
  107. package/dist/_dts/sdk/src/cli/config-loader.d.ts +0 -47
  108. package/dist/_dts/sdk/src/cli/content/collectionWriters.d.ts +0 -23
  109. package/dist/_dts/sdk/src/cli/content/edit/format.d.ts +0 -2
  110. package/dist/_dts/sdk/src/cli/content/edit/path.d.ts +0 -14
  111. package/dist/_dts/sdk/src/cli/content/edit/planner.d.ts +0 -46
  112. package/dist/_dts/sdk/src/cli/content/entryPaths.d.ts +0 -6
  113. package/dist/_dts/sdk/src/cli/content/footerFile.d.ts +0 -10
  114. package/dist/_dts/sdk/src/cli/content/fs-utils.d.ts +0 -39
  115. package/dist/_dts/sdk/src/cli/content/legacyEventScheduleShapeError.d.ts +0 -5
  116. package/dist/_dts/sdk/src/cli/content/localEventSchedule.d.ts +0 -17
  117. package/dist/_dts/sdk/src/cli/content/media-manifest.d.ts +0 -13
  118. package/dist/_dts/sdk/src/cli/content/metadataAfterPush.d.ts +0 -25
  119. package/dist/_dts/sdk/src/cli/content/metadataStore.d.ts +0 -29
  120. package/dist/_dts/sdk/src/cli/content/reader.d.ts +0 -488
  121. package/dist/_dts/sdk/src/cli/content/writer.d.ts +0 -142
  122. package/dist/_dts/sdk/src/cli/env-scope.d.ts +0 -2
  123. package/dist/_dts/sdk/src/cli/env.d.ts +0 -71
  124. package/dist/_dts/sdk/src/cli/errors.d.ts +0 -62
  125. package/dist/_dts/sdk/src/cli/helpers/ai-runtime.d.ts +0 -2
  126. package/dist/_dts/sdk/src/cli/helpers.d.ts +0 -399
  127. package/dist/_dts/sdk/src/cli/index.d.ts +0 -11
  128. package/dist/_dts/sdk/src/cli/init-docs/constants.d.ts +0 -16
  129. package/dist/_dts/sdk/src/cli/init-docs/index.d.ts +0 -12
  130. package/dist/_dts/sdk/src/cli/init-docs/templates.d.ts +0 -18
  131. package/dist/_dts/sdk/src/cli/init-docs/zod-to-markdown.d.ts +0 -28
  132. package/dist/_dts/sdk/src/cli/load-config.d.ts +0 -14
  133. package/dist/_dts/sdk/src/cli/media/identifiers.d.ts +0 -18
  134. package/dist/_dts/sdk/src/cli/media/local-media.d.ts +0 -14
  135. package/dist/_dts/sdk/src/cli/media/local-sync.d.ts +0 -91
  136. package/dist/_dts/sdk/src/cli/media/portable.d.ts +0 -11
  137. package/dist/_dts/sdk/src/cli/media/rich-text.d.ts +0 -12
  138. package/dist/_dts/sdk/src/cli/media/value-utils.d.ts +0 -15
  139. package/dist/_dts/sdk/src/cli/media/write-guard.d.ts +0 -52
  140. package/dist/_dts/sdk/src/cli/merge-remote/entryLocal.d.ts +0 -3
  141. package/dist/_dts/sdk/src/cli/merge-remote/entryMerge.d.ts +0 -78
  142. package/dist/_dts/sdk/src/cli/merge-remote/entryMergePlan.d.ts +0 -45
  143. package/dist/_dts/sdk/src/cli/merge-remote/entryMergePush.d.ts +0 -24
  144. package/dist/_dts/sdk/src/cli/merge-remote/entryMergeReport.d.ts +0 -18
  145. package/dist/_dts/sdk/src/cli/merge-remote/entryRemote.d.ts +0 -9
  146. package/dist/_dts/sdk/src/cli/merge-remote/entrySnapshots.d.ts +0 -48
  147. package/dist/_dts/sdk/src/cli/merge-remote/mergeFieldChanges.d.ts +0 -22
  148. package/dist/_dts/sdk/src/cli/merge-remote/pageLocal.d.ts +0 -3
  149. package/dist/_dts/sdk/src/cli/merge-remote/pageMerge.d.ts +0 -78
  150. package/dist/_dts/sdk/src/cli/merge-remote/pageMergePlan.d.ts +0 -36
  151. package/dist/_dts/sdk/src/cli/merge-remote/pageMergePush.d.ts +0 -23
  152. package/dist/_dts/sdk/src/cli/merge-remote/pageMergeReport.d.ts +0 -17
  153. package/dist/_dts/sdk/src/cli/merge-remote/pageSnapshots.d.ts +0 -46
  154. package/dist/_dts/sdk/src/cli/merge-remote/sharedBaseSnapshots.d.ts +0 -32
  155. package/dist/_dts/sdk/src/cli/merge-remote/sharedMergePlan.d.ts +0 -27
  156. package/dist/_dts/sdk/src/cli/merge-remote/sharedMergeReport.d.ts +0 -63
  157. package/dist/_dts/sdk/src/cli/migrations/entries.d.ts +0 -28
  158. package/dist/_dts/sdk/src/cli/migrations/events.d.ts +0 -73
  159. package/dist/_dts/sdk/src/cli/navigationIdentity.d.ts +0 -11
  160. package/dist/_dts/sdk/src/cli/output.d.ts +0 -133
  161. package/dist/_dts/sdk/src/cli/program.d.ts +0 -29
  162. package/dist/_dts/sdk/src/cli/push-config.d.ts +0 -49
  163. package/dist/_dts/sdk/src/cli/setup/setupPlan.d.ts +0 -51
  164. package/dist/_dts/sdk/src/cli/site-commands/commandKeys.d.ts +0 -13
  165. package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +0 -170
  166. package/dist/_dts/sdk/src/cli/site-commands/commandRuntimeCompat.d.ts +0 -21
  167. package/dist/_dts/sdk/src/cli/site-commands/commandSurfaceDispatch.d.ts +0 -32
  168. package/dist/_dts/sdk/src/cli/site-commands/datedOfferingCommands.d.ts +0 -53
  169. package/dist/_dts/sdk/src/cli/site-commands/entryCommands.d.ts +0 -65
  170. package/dist/_dts/sdk/src/cli/site-commands/eventScheduleCompiler.d.ts +0 -24
  171. package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +0 -68
  172. package/dist/_dts/sdk/src/cli/site-commands/formCommands.d.ts +0 -53
  173. package/dist/_dts/sdk/src/cli/site-commands/index.d.ts +0 -8
  174. package/dist/_dts/sdk/src/cli/site-commands/localBlockManifestResolver.d.ts +0 -31
  175. package/dist/_dts/sdk/src/cli/site-commands/navigationCommands.d.ts +0 -57
  176. package/dist/_dts/sdk/src/cli/site-commands/oneOffCommands.d.ts +0 -82
  177. package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +0 -84
  178. package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +0 -39
  179. package/dist/_dts/sdk/src/cli/site-commands/pushExecutionPlan.d.ts +0 -8
  180. package/dist/_dts/sdk/src/cli/site-commands/pushExecutionTypes.d.ts +0 -97
  181. package/dist/_dts/sdk/src/cli/site-commands/residualSettingsTrimming.d.ts +0 -15
  182. package/dist/_dts/sdk/src/cli/sync/diff.d.ts +0 -222
  183. package/dist/_dts/sdk/src/cli/sync/executor.d.ts +0 -84
  184. package/dist/_dts/sdk/src/cli/sync/field-diff.d.ts +0 -39
  185. package/dist/_dts/sdk/src/cli/sync/index.d.ts +0 -10
  186. package/dist/_dts/sdk/src/cli/sync/mapper.d.ts +0 -41
  187. package/dist/_dts/sdk/src/cli/sync/media-sync.d.ts +0 -15
  188. package/dist/_dts/sdk/src/cli/sync/media.d.ts +0 -158
  189. package/dist/_dts/sdk/src/cli/sync/syncResultAggregation.d.ts +0 -4
  190. package/dist/_dts/sdk/src/cli/sync/validation.d.ts +0 -68
  191. package/dist/_dts/sdk/src/cli/utils/checksum.d.ts +0 -1
  192. package/dist/_dts/sdk/src/client/management/blocks.d.ts +0 -19
  193. package/dist/_dts/sdk/src/client/management/catalog.d.ts +0 -10
  194. package/dist/_dts/sdk/src/client/management/entries.d.ts +0 -6
  195. package/dist/_dts/sdk/src/client/management/eventCategories.d.ts +0 -6
  196. package/dist/_dts/sdk/src/client/management/events.d.ts +0 -7
  197. package/dist/_dts/sdk/src/client/management/footer.d.ts +0 -9
  198. package/dist/_dts/sdk/src/client/management/forms.d.ts +0 -6
  199. package/dist/_dts/sdk/src/client/management/http.d.ts +0 -79
  200. package/dist/_dts/sdk/src/client/management/identifiers.d.ts +0 -11
  201. package/dist/_dts/sdk/src/client/management/index.d.ts +0 -41
  202. package/dist/_dts/sdk/src/client/management/media.d.ts +0 -72
  203. package/dist/_dts/sdk/src/client/management/navigation.d.ts +0 -6
  204. package/dist/_dts/sdk/src/client/management/pages.d.ts +0 -6
  205. package/dist/_dts/sdk/src/client/management/pull.d.ts +0 -6
  206. package/dist/_dts/sdk/src/client/management/settings-branding.d.ts +0 -32
  207. package/dist/_dts/sdk/src/client/management/settings.d.ts +0 -6
  208. package/dist/_dts/sdk/src/client/management/theme.d.ts +0 -8
  209. package/dist/_dts/sdk/src/client/management/types.d.ts +0 -1069
  210. package/dist/_dts/sdk/src/client/management/venues.d.ts +0 -6
  211. package/dist/_dts/sdk/src/client/management/webhooks.d.ts +0 -3
  212. package/dist/_dts/sdk/src/test/env.d.ts +0 -4
  213. package/dist/_dts/site-commands/src/adapter.d.ts +0 -23
  214. package/dist/_dts/site-commands/src/appointmentCommandSchemas.d.ts +0 -100
  215. package/dist/_dts/site-commands/src/capabilityGaps.d.ts +0 -8
  216. package/dist/_dts/site-commands/src/commandContract.d.ts +0 -1277
  217. package/dist/_dts/site-commands/src/commandDomain.d.ts +0 -20
  218. package/dist/_dts/site-commands/src/commandIdentifiers.d.ts +0 -7
  219. package/dist/_dts/site-commands/src/commandValidation.d.ts +0 -10
  220. package/dist/_dts/site-commands/src/commands.d.ts +0 -1983
  221. package/dist/_dts/site-commands/src/domain.d.ts +0 -104
  222. package/dist/_dts/site-commands/src/eventCommandContent.d.ts +0 -11
  223. package/dist/_dts/site-commands/src/exposure.d.ts +0 -41
  224. package/dist/_dts/site-commands/src/guards.d.ts +0 -1
  225. package/dist/_dts/site-commands/src/index.d.ts +0 -18
  226. package/dist/_dts/site-commands/src/metadata.d.ts +0 -555
  227. package/dist/_dts/site-commands/src/pagePaths.d.ts +0 -6
  228. package/dist/_dts/site-commands/src/planner.d.ts +0 -58
  229. package/dist/_dts/site-commands/src/refContributions.d.ts +0 -11
  230. package/dist/_dts/site-commands/src/refs.d.ts +0 -90
  231. package/dist/_dts/site-commands/src/siteStyleCommandSchema.d.ts +0 -405
  232. package/dist/_dts/site-commands/src/siteStyleSelectionSchemaBuilder.d.ts +0 -46
  233. package/dist/_dts/site-commands/src/stableJson.d.ts +0 -5
  234. package/dist/_dts/site-commands/src/staticExecutionGaps.d.ts +0 -10
  235. package/dist/_dts/site-commands/src/venueCommandMapping.d.ts +0 -21
  236. package/dist/_dts/theme-core/src/data.d.ts +0 -12
  237. package/dist/_dts/theme-core/src/site-styles/headerStyleParts.d.ts +0 -4
  238. package/dist/cli/index.mjs +0 -162988
  239. package/dist/cli/init-docs/content/agents-section.md +0 -67
  240. package/dist/cli/init-docs/content/cli-reference.md +0 -1238
  241. package/dist/cli/init-docs/content/content-management.md +0 -792
  242. package/dist/cli/init-docs/content/context-brand.md +0 -125
  243. package/dist/cli/init-docs/content/context-brief.md +0 -77
  244. package/dist/cli/init-docs/content/context-knowledge.md +0 -111
  245. package/dist/cli/init-docs/content/getting-started.md +0 -171
  246. package/dist/cli/init-docs/content/site-workflows-readme.md +0 -96
  247. package/dist/cli/init-docs/content/workflow-add-block.md +0 -299
  248. package/dist/cli/init-docs/content/workflow-agent-safe-sync.md +0 -83
  249. package/dist/cli/init-docs/content/workflow-block-extensions.md +0 -370
  250. package/dist/cli/init-docs/content/workflow-cmsify-page.md +0 -357
  251. package/dist/cli/init-docs/content/workflow-content-types.md +0 -330
  252. package/dist/cli/init-docs/content/workflow-create-page.md +0 -212
  253. package/dist/cli/init-docs/content/workflow-custom-block.md +0 -470
  254. package/dist/cli/init-docs/content/workflow-editor-workflows.md +0 -130
  255. package/dist/cli/init-docs/content/workflow-isr-revalidation.md +0 -158
  256. package/dist/cli/init-docs/content/workflow-preview-mode.md +0 -252
  257. package/dist/cli/init-docs/content/workflow-publish.md +0 -285
  258. package/dist/cli/init-docs/content/workflow-remote-setup.md +0 -51
  259. package/dist/cli/init-docs/content/workflow-templates.md +0 -381
  260. /package/dist/_dts/{sdk/src/cli/utils/mime.d.ts → media-core/src/mimeType.d.ts} +0 -0
@@ -1,370 +0,0 @@
1
- # Workflow: Block Extensions
2
-
3
- Add layout variants and custom fields to built-in system blocks without creating entirely new custom blocks.
4
-
5
- ## When to Use Block Extensions
6
-
7
- **Use block extensions when:**
8
- - You want a system block's core functionality (hero, bodyText, cta, etc.)
9
- - You need site-specific variants or modes (e.g., different visual styles for the same block)
10
- - You want to add site-specific options (colors, animations, conditional content)
11
-
12
- **Use custom blocks instead when:**
13
- - The block structure is fundamentally different
14
- - You need completely custom fields and logic
15
- - The system block doesn't fit your use case at all
16
-
17
- ### Prefer built-in `variant` when available
18
-
19
- Some system blocks already support variants via a built-in `variant` select field (e.g. `block.image-gallery`).
20
- In those cases, prefer using the existing `variant` field instead of adding your own `layout` select.
21
-
22
- See `.riverbank/docs/block-types.md` for which system blocks support variants and what the options are.
23
-
24
- ## Prerequisites
25
-
26
- - `riverbank.config.ts` exists
27
- - Block overrides file set up (e.g., `src/lib/block-overrides.tsx`)
28
- - Understanding of the system block you're extending
29
-
30
- ## Steps
31
-
32
- ### Step 1: Add blockFieldExtensions in Config
33
-
34
- In `riverbank.config.ts`, add your extensions:
35
-
36
- ```typescript
37
- import { defineConfig } from '@riverbankcms/sdk/config';
38
-
39
- export default defineConfig({
40
- siteId: '...',
41
-
42
- blockFieldExtensions: {
43
- 'block.hero': {
44
- fields: [
45
- {
46
- id: 'layout',
47
- type: 'select',
48
- label: 'Layout',
49
- options: [
50
- { value: 'default', label: 'Default' },
51
- { value: 'topography', label: 'Topography Background' },
52
- ],
53
- defaultValue: 'default',
54
- },
55
- {
56
- id: 'topographyColor',
57
- type: 'select',
58
- label: 'Topography Color',
59
- options: [
60
- { value: 'teal', label: 'Teal' },
61
- { value: 'green', label: 'Green' },
62
- ],
63
- defaultValue: 'teal',
64
- // Only show when layout is 'topography'
65
- ui: {
66
- visibleWhen: {
67
- field: 'layout',
68
- equals: 'topography',
69
- },
70
- },
71
- },
72
- ],
73
- },
74
- },
75
- });
76
- ```
77
-
78
- ### Step 2: Create Override Component with Layout Switching
79
-
80
- Create a component that reads the extended fields and switches rendering:
81
-
82
- ```typescript
83
- // src/components/CustomHero.tsx
84
- import type { BlockOverrideProps, HeroContent } from '@riverbankcms/sdk/rendering';
85
- import { DefaultHeroLayout } from './DefaultHeroLayout';
86
- import { TopographyHeroLayout } from './TopographyHeroLayout';
87
-
88
- // Extend the base content type with your custom fields
89
- type ExtendedHeroContent = HeroContent & {
90
- layout?: 'default' | 'topography';
91
- topographyColor?: 'teal' | 'green';
92
- };
93
-
94
- export function CustomHero({ content, ...props }: BlockOverrideProps<ExtendedHeroContent>) {
95
- const layout = content.layout || 'default';
96
-
97
- // Switch based on layout value
98
- if (layout === 'topography') {
99
- return <TopographyHeroLayout content={content} topographyColor={content.topographyColor} {...props} />;
100
- }
101
-
102
- return <DefaultHeroLayout content={content} {...props} />;
103
- }
104
- ```
105
-
106
- ### Step 3: Register in blockOverrides
107
-
108
- Add your override component to the block overrides:
109
-
110
- ```typescript
111
- // src/lib/block-overrides.tsx
112
- import type { BlockOverrides } from '@riverbankcms/sdk/rendering';
113
- import { CustomHero } from '@/components/CustomHero';
114
-
115
- export const blockOverrides: BlockOverrides = {
116
- hero: CustomHero,
117
- };
118
- ```
119
-
120
- ### Step 4: Push Config
121
-
122
- Push the configuration to make the new fields available in the CMS:
123
-
124
- ```bash
125
- riverbankcms push-config
126
- ```
127
-
128
- ### Step 5: Use in Content
129
-
130
- Now when editing hero blocks in the CMS, you'll see the new Layout field. Create content using the CLI:
131
-
132
- ```bash
133
- riverbankcms block upsert home main-hero \
134
- --kind block.hero \
135
- --data '{"heading": "Welcome", "layout": "topography", "topographyColor": "teal"}'
136
- ```
137
-
138
- ## Extension Patterns
139
-
140
- ### Pattern 1: Layout Variants
141
-
142
- The most common pattern - add a `layout` field to switch between visual styles:
143
-
144
- ```typescript
145
- 'block.body-text': {
146
- fields: [
147
- {
148
- id: 'layout',
149
- type: 'select',
150
- label: 'Layout',
151
- options: [
152
- { value: 'default', label: 'Default' },
153
- { value: 'green-banner', label: 'Green Banner' },
154
- { value: 'quote-highlight', label: 'Quote Highlight' },
155
- ],
156
- defaultValue: 'default',
157
- },
158
- ],
159
- }
160
- ```
161
-
162
- ### Pattern 2: Conditional Fields
163
-
164
- Show/hide fields based on other field values using `ui.visibleWhen`:
165
-
166
- ```typescript
167
- 'block.cta-full': {
168
- fields: [
169
- {
170
- id: 'layout',
171
- type: 'select',
172
- label: 'Layout',
173
- options: [
174
- { value: 'default', label: 'Default' },
175
- { value: 'banner', label: 'Colored Banner' },
176
- { value: 'dark', label: 'Dark Theme' },
177
- ],
178
- defaultValue: 'default',
179
- },
180
- {
181
- id: 'backgroundColor',
182
- type: 'select',
183
- label: 'Background Color',
184
- options: [
185
- { value: 'green', label: 'Green' },
186
- { value: 'tan', label: 'Tan' },
187
- ],
188
- defaultValue: 'green',
189
- ui: {
190
- visibleWhen: {
191
- field: 'layout',
192
- equals: 'banner',
193
- },
194
- },
195
- },
196
- {
197
- id: 'quoteType',
198
- type: 'select',
199
- label: 'Quote Type',
200
- options: [
201
- { value: 'websites', label: 'Websites' },
202
- { value: 'ecommerce', label: 'Ecommerce' },
203
- ],
204
- defaultValue: 'websites',
205
- ui: {
206
- visibleWhen: {
207
- field: 'layout',
208
- equals: 'dark',
209
- },
210
- },
211
- },
212
- ],
213
- }
214
- ```
215
-
216
- ### Pattern 3: Color Theming
217
-
218
- Add color selection to match your brand palette:
219
-
220
- ```typescript
221
- 'block.quote': {
222
- fields: [
223
- {
224
- id: 'accentColor',
225
- type: 'select',
226
- label: 'Accent Color',
227
- options: [
228
- { value: 'teal', label: 'Teal' },
229
- { value: 'green', label: 'Green' },
230
- { value: 'tan', label: 'Tan' },
231
- { value: 'brown', label: 'Brown' },
232
- ],
233
- defaultValue: 'teal',
234
- },
235
- ],
236
- }
237
- ```
238
-
239
- ## blockFieldOptions vs blockFieldExtensions
240
-
241
- ### blockFieldExtensions
242
-
243
- Add **new fields** to system blocks:
244
-
245
- ```typescript
246
- blockFieldExtensions: {
247
- 'block.hero': {
248
- fields: [
249
- { id: 'layout', type: 'select', ... }, // New field
250
- ],
251
- },
252
- }
253
- ```
254
-
255
- ### blockFieldOptions
256
-
257
- Override **options for existing select fields** on system blocks:
258
-
259
- ```typescript
260
- blockFieldOptions: {
261
- 'block.embed': {
262
- layout: {
263
- options: [
264
- { value: 'showcase', label: 'Services Showcase' },
265
- { value: 'list', label: 'Simple List' },
266
- { value: 'service-tiles', label: 'Service Tiles' },
267
- ],
268
- },
269
- },
270
- }
271
- ```
272
-
273
- Use `blockFieldOptions` when the system block already has a select field (like `layout`) and you want to customize which options are available.
274
-
275
- ## Verification
276
-
277
- 1. Check the field appears in the CMS editor for the block
278
- 2. Verify conditional fields show/hide correctly
279
- 3. Preview the block: `riverbankcms preview block.hero --data '{"layout": "topography"}' --open`
280
- 4. Verify the override component renders the correct layout
281
-
282
- ## Complete Example: Hero with Topography
283
-
284
- **Config (`riverbank.config.ts`):**
285
-
286
- ```typescript
287
- blockFieldExtensions: {
288
- 'block.hero': {
289
- fields: [
290
- {
291
- id: 'layout',
292
- type: 'select',
293
- label: 'Layout',
294
- options: [
295
- { value: 'default', label: 'Default (Canvas)' },
296
- { value: 'topography', label: 'Topography' },
297
- ],
298
- defaultValue: 'default',
299
- },
300
- {
301
- id: 'topographyColor',
302
- type: 'select',
303
- label: 'Topography Color',
304
- options: [
305
- { value: 'teal', label: 'Teal' },
306
- { value: 'green', label: 'Green' },
307
- { value: 'tan', label: 'Tan' },
308
- { value: 'brown', label: 'Brown' },
309
- ],
310
- defaultValue: 'teal',
311
- ui: {
312
- visibleWhen: {
313
- field: 'layout',
314
- equals: 'topography',
315
- },
316
- },
317
- },
318
- ],
319
- },
320
- }
321
- ```
322
-
323
- **Override component:**
324
-
325
- ```typescript
326
- type ExtendedHeroContent = HeroContent & {
327
- layout?: 'default' | 'topography';
328
- topographyColor?: 'teal' | 'green' | 'tan' | 'brown';
329
- };
330
-
331
- const HeroOverride = (props: BlockOverrideProps<ExtendedHeroContent>) => {
332
- const { content } = props;
333
- const layout = content.layout || 'default';
334
-
335
- if (layout === 'topography') {
336
- return <HeroTopography {...props} />;
337
- }
338
- return <CustomHeroWithCanvas {...props} />;
339
- };
340
-
341
- export const blockOverrides: BlockOverrides = {
342
- hero: HeroOverride,
343
- };
344
- ```
345
-
346
- ## Troubleshooting
347
-
348
- ### Field not appearing in CMS
349
-
350
- - Verify the block kind is correct (e.g., `block.hero` not just `hero`)
351
- - Run `riverbankcms push-config` to sync configuration
352
- - Check the field ID doesn't conflict with existing block fields
353
-
354
- ### Conditional field always hidden
355
-
356
- - Verify `visibleWhen.field` matches the exact field ID
357
- - Check `visibleWhen.equals` matches the exact option value
358
- - Ensure the controlling field has the expected value selected
359
-
360
- ### Override component not rendering
361
-
362
- - Verify the override is registered in `blockOverrides`
363
- - Check the key matches the block name (e.g., `hero` for `block.hero`)
364
- - Ensure the component is exported correctly
365
-
366
- ### Extended fields not in content
367
-
368
- - Extended fields are added to `content` alongside default block fields
369
- - Access them via `props.content.yourFieldId`
370
- - TypeScript: Create an extended type that adds your fields to the base content type