@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.
- package/README.md +52 -256
- package/dist/{PreviewEditorSidebar-Dbvb7GIr.mjs → PreviewEditorSidebar-DceRseRV.mjs} +3 -3
- package/dist/{PreviewEditorUI-e9O9l20X.mjs → PreviewEditorUI-BNunq3kk.mjs} +2 -2
- package/dist/{SdkPreviewModeRuntime-BZHt6e9w.mjs → SdkPreviewModeRuntime-Bt87-62u.mjs} +495 -292
- package/dist/{SiteChromeCustomizeContext-CvuGbHJX.mjs → SiteChromeCustomizeContext-BLl-OlL4.mjs} +600 -533
- package/dist/_dts/ai/src/contracts/commandExposure.d.ts +1 -1
- package/dist/_dts/ai/src/contracts/proposals.d.ts +4897 -4897
- package/dist/_dts/api/src/index.d.ts +2 -1
- package/dist/_dts/api/src/sdk-event-management.d.ts +53 -0
- package/dist/_dts/api/src/sdk-event-schedule.d.ts +3 -6
- package/dist/_dts/api/src/sdkContracts.d.ts +37 -50
- package/dist/_dts/api/src/sdkThemeWire.d.ts +2595 -0
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +13 -29
- package/dist/_dts/blocks/src/PageRenderer.d.ts +20 -10
- package/dist/_dts/blocks/src/index.d.ts +2 -1
- package/dist/_dts/blocks/src/pageRendererBoundaries.d.ts +30 -0
- package/dist/_dts/blocks/src/pageRenderingMode.d.ts +37 -0
- package/dist/_dts/blocks/src/server.d.ts +1 -1
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +14 -0
- package/dist/_dts/media-core/src/index.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/blocks/pageDesignRuntimePreview.d.ts +2 -0
- package/dist/_dts/preview-next/src/client/index.d.ts +47 -47
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +18 -6
- package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +30 -21
- package/dist/_dts/preview-next/src/client/preview/PreviewThemedSiteDocument.d.ts +18 -5
- package/dist/_dts/preview-next/src/client/preview/themeRuntime.d.ts +9 -0
- package/dist/_dts/preview-next/src/client/sdk/SdkPreviewMode.d.ts +21 -6
- package/dist/_dts/preview-next/src/client/sdk-runtime.d.ts +8 -8
- package/dist/_dts/sdk/src/config/types.d.ts +4 -4
- package/dist/_dts/sdk/src/next/catch-all.d.ts +6 -0
- package/dist/_dts/sdk/src/next/index.d.ts +2 -1
- package/dist/_dts/sdk/src/next/renderSdkContent.d.ts +33 -0
- package/dist/_dts/sdk/src/next/types.d.ts +23 -9
- package/dist/_dts/sdk/src/preview-next/before-render.d.ts +4 -6
- package/dist/_dts/sdk/src/preview-next/client/index.d.ts +3 -3
- package/dist/_dts/sdk/src/preview-next/client/runtime.d.ts +1 -1
- package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +25 -3
- package/dist/_dts/sdk/src/rendering/components/Block.shared.d.ts +13 -2
- package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +31 -18
- package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +20 -9
- package/dist/_dts/sdk/src/rendering/index.d.ts +4 -2
- package/dist/_dts/sdk/src/rendering/renderingMode.d.ts +23 -0
- package/dist/_dts/sdk/src/rendering/server.d.ts +5 -3
- package/dist/_dts/sdk/src/rendering/themeRuntime.d.ts +6 -0
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/palette/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/site-styles/headerLayoutStyleCatalog.d.ts +254 -0
- package/dist/_dts/theme-core/src/site-styles/headerLegacyLooks.d.ts +372 -0
- package/dist/_dts/theme-core/src/site-styles/headerLookBranding.d.ts +106 -0
- package/dist/_dts/theme-core/src/site-styles/headerLookSelection.d.ts +2 -0
- package/dist/_dts/theme-core/src/site-styles/headerLookTypes.d.ts +212 -0
- package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +7 -841
- package/dist/_dts/theme-core/src/site-styles/headerStyleCompiler.d.ts +3 -0
- package/dist/_dts/theme-core/src/site-styles/headerStyleCompilerPrimitives.d.ts +23 -0
- package/dist/client/client.mjs +911 -762
- package/dist/client/hooks.mjs +59 -36
- package/dist/client/rendering/client.mjs +593 -547
- package/dist/client/rendering.mjs +994 -783
- package/dist/preview-next/before-render.mjs +10 -3
- package/dist/preview-next/client/runtime.mjs +3 -3
- package/dist/{sdk-runtime-Cn_QSCOg.mjs → sdk-runtime-C20CVWbb.mjs} +1 -1
- package/dist/{separator-CEoGABRc.mjs → separator-BE3NCquy.mjs} +1 -1
- package/dist/server/components.mjs +549 -399
- package/dist/server/config-validation.mjs +59 -36
- package/dist/server/config.mjs +59 -36
- package/dist/server/data.mjs +59 -36
- package/dist/server/index.mjs +1 -1
- package/dist/server/manifest.mjs +4966 -0
- package/dist/server/next.mjs +700 -537
- package/dist/server/page-converter.mjs +40 -36
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +571 -404
- package/dist/server/rendering.mjs +571 -404
- package/dist/server/routing.mjs +472 -402
- package/dist/server/server.mjs +60 -37
- package/dist/server/theme-bridge.mjs +70 -66
- package/package.json +9 -12
- package/dist/_dts/api/src/event-presentation.d.ts +0 -14
- package/dist/_dts/blocks/src/definitions.d.ts +0 -14
- package/dist/_dts/sdk/src/cli/canonical-entry-policy.d.ts +0 -53
- package/dist/_dts/sdk/src/cli/commands/audit.d.ts +0 -101
- package/dist/_dts/sdk/src/cli/commands/block.d.ts +0 -24
- package/dist/_dts/sdk/src/cli/commands/compare.d.ts +0 -62
- package/dist/_dts/sdk/src/cli/commands/content-type.d.ts +0 -10
- package/dist/_dts/sdk/src/cli/commands/content.d.ts +0 -56
- package/dist/_dts/sdk/src/cli/commands/delete.d.ts +0 -14
- package/dist/_dts/sdk/src/cli/commands/deploy.d.ts +0 -43
- package/dist/_dts/sdk/src/cli/commands/drafts.d.ts +0 -18
- package/dist/_dts/sdk/src/cli/commands/entry.d.ts +0 -55
- package/dist/_dts/sdk/src/cli/commands/env.d.ts +0 -31
- package/dist/_dts/sdk/src/cli/commands/event.d.ts +0 -23
- package/dist/_dts/sdk/src/cli/commands/eventOccurrenceSchedule.d.ts +0 -12
- package/dist/_dts/sdk/src/cli/commands/identifiers.d.ts +0 -10
- package/dist/_dts/sdk/src/cli/commands/init-docs.d.ts +0 -13
- package/dist/_dts/sdk/src/cli/commands/manifest.d.ts +0 -10
- package/dist/_dts/sdk/src/cli/commands/media-validation.d.ts +0 -3
- package/dist/_dts/sdk/src/cli/commands/migrate.d.ts +0 -11
- package/dist/_dts/sdk/src/cli/commands/navigation.d.ts +0 -12
- package/dist/_dts/sdk/src/cli/commands/page.d.ts +0 -14
- package/dist/_dts/sdk/src/cli/commands/publish-all.d.ts +0 -50
- package/dist/_dts/sdk/src/cli/commands/pull-dated-offering-scope.d.ts +0 -10
- package/dist/_dts/sdk/src/cli/commands/pull-dry-run.d.ts +0 -70
- package/dist/_dts/sdk/src/cli/commands/pull-scope-diff.d.ts +0 -8
- package/dist/_dts/sdk/src/cli/commands/pull.d.ts +0 -43
- package/dist/_dts/sdk/src/cli/commands/push/consts.d.ts +0 -3
- package/dist/_dts/sdk/src/cli/commands/push/execute/diff.d.ts +0 -19
- package/dist/_dts/sdk/src/cli/commands/push/execute/footer.d.ts +0 -42
- package/dist/_dts/sdk/src/cli/commands/push/execute/localMediaReporting.d.ts +0 -23
- package/dist/_dts/sdk/src/cli/commands/push/execute/media.d.ts +0 -22
- package/dist/_dts/sdk/src/cli/commands/push/execute/metadata.d.ts +0 -1
- package/dist/_dts/sdk/src/cli/commands/push/execute/reporting.d.ts +0 -7
- package/dist/_dts/sdk/src/cli/commands/push/execute/theme.d.ts +0 -63
- package/dist/_dts/sdk/src/cli/commands/push/filter.d.ts +0 -15
- package/dist/_dts/sdk/src/cli/commands/push/metadata.d.ts +0 -29
- package/dist/_dts/sdk/src/cli/commands/push/normalizeLocalContent.d.ts +0 -2
- package/dist/_dts/sdk/src/cli/commands/push/options.d.ts +0 -32
- package/dist/_dts/sdk/src/cli/commands/push/publishGuidance.d.ts +0 -15
- package/dist/_dts/sdk/src/cli/commands/push/pushAllExtras.d.ts +0 -25
- package/dist/_dts/sdk/src/cli/commands/push/scopes/commandBackedDatedOfferingScope.d.ts +0 -83
- package/dist/_dts/sdk/src/cli/commands/push/scopes/eventCategories.d.ts +0 -4
- package/dist/_dts/sdk/src/cli/commands/push/scopes/events.d.ts +0 -4
- package/dist/_dts/sdk/src/cli/commands/push/scopes/mediaPrep.d.ts +0 -14
- package/dist/_dts/sdk/src/cli/commands/push/scopes/pushScopeGeneric.d.ts +0 -6
- package/dist/_dts/sdk/src/cli/commands/push/scopes/types.d.ts +0 -87
- package/dist/_dts/sdk/src/cli/commands/push/scopes/venues.d.ts +0 -4
- package/dist/_dts/sdk/src/cli/commands/push/stale-resolution.d.ts +0 -48
- package/dist/_dts/sdk/src/cli/commands/push/stale.d.ts +0 -17
- package/dist/_dts/sdk/src/cli/commands/push/verification.d.ts +0 -56
- package/dist/_dts/sdk/src/cli/commands/push/workflowPlan.d.ts +0 -34
- package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +0 -54
- package/dist/_dts/sdk/src/cli/commands/push.d.ts +0 -40
- package/dist/_dts/sdk/src/cli/commands/setup.d.ts +0 -3
- package/dist/_dts/sdk/src/cli/commands/style.d.ts +0 -60
- package/dist/_dts/sdk/src/cli/commands/verify.d.ts +0 -11
- package/dist/_dts/sdk/src/cli/commands/webhooks.d.ts +0 -44
- package/dist/_dts/sdk/src/cli/config-loader.d.ts +0 -47
- package/dist/_dts/sdk/src/cli/content/collectionWriters.d.ts +0 -23
- package/dist/_dts/sdk/src/cli/content/edit/format.d.ts +0 -2
- package/dist/_dts/sdk/src/cli/content/edit/path.d.ts +0 -14
- package/dist/_dts/sdk/src/cli/content/edit/planner.d.ts +0 -46
- package/dist/_dts/sdk/src/cli/content/entryPaths.d.ts +0 -6
- package/dist/_dts/sdk/src/cli/content/footerFile.d.ts +0 -10
- package/dist/_dts/sdk/src/cli/content/fs-utils.d.ts +0 -39
- package/dist/_dts/sdk/src/cli/content/legacyEventScheduleShapeError.d.ts +0 -5
- package/dist/_dts/sdk/src/cli/content/localEventSchedule.d.ts +0 -17
- package/dist/_dts/sdk/src/cli/content/media-manifest.d.ts +0 -13
- package/dist/_dts/sdk/src/cli/content/metadataAfterPush.d.ts +0 -25
- package/dist/_dts/sdk/src/cli/content/metadataStore.d.ts +0 -29
- package/dist/_dts/sdk/src/cli/content/reader.d.ts +0 -488
- package/dist/_dts/sdk/src/cli/content/writer.d.ts +0 -142
- package/dist/_dts/sdk/src/cli/env-scope.d.ts +0 -2
- package/dist/_dts/sdk/src/cli/env.d.ts +0 -71
- package/dist/_dts/sdk/src/cli/errors.d.ts +0 -62
- package/dist/_dts/sdk/src/cli/helpers/ai-runtime.d.ts +0 -2
- package/dist/_dts/sdk/src/cli/helpers.d.ts +0 -399
- package/dist/_dts/sdk/src/cli/index.d.ts +0 -11
- package/dist/_dts/sdk/src/cli/init-docs/constants.d.ts +0 -16
- package/dist/_dts/sdk/src/cli/init-docs/index.d.ts +0 -12
- package/dist/_dts/sdk/src/cli/init-docs/templates.d.ts +0 -18
- package/dist/_dts/sdk/src/cli/init-docs/zod-to-markdown.d.ts +0 -28
- package/dist/_dts/sdk/src/cli/load-config.d.ts +0 -14
- package/dist/_dts/sdk/src/cli/media/identifiers.d.ts +0 -18
- package/dist/_dts/sdk/src/cli/media/local-media.d.ts +0 -14
- package/dist/_dts/sdk/src/cli/media/local-sync.d.ts +0 -91
- package/dist/_dts/sdk/src/cli/media/portable.d.ts +0 -11
- package/dist/_dts/sdk/src/cli/media/rich-text.d.ts +0 -12
- package/dist/_dts/sdk/src/cli/media/value-utils.d.ts +0 -15
- package/dist/_dts/sdk/src/cli/media/write-guard.d.ts +0 -52
- package/dist/_dts/sdk/src/cli/merge-remote/entryLocal.d.ts +0 -3
- package/dist/_dts/sdk/src/cli/merge-remote/entryMerge.d.ts +0 -78
- package/dist/_dts/sdk/src/cli/merge-remote/entryMergePlan.d.ts +0 -45
- package/dist/_dts/sdk/src/cli/merge-remote/entryMergePush.d.ts +0 -24
- package/dist/_dts/sdk/src/cli/merge-remote/entryMergeReport.d.ts +0 -18
- package/dist/_dts/sdk/src/cli/merge-remote/entryRemote.d.ts +0 -9
- package/dist/_dts/sdk/src/cli/merge-remote/entrySnapshots.d.ts +0 -48
- package/dist/_dts/sdk/src/cli/merge-remote/mergeFieldChanges.d.ts +0 -22
- package/dist/_dts/sdk/src/cli/merge-remote/pageLocal.d.ts +0 -3
- package/dist/_dts/sdk/src/cli/merge-remote/pageMerge.d.ts +0 -78
- package/dist/_dts/sdk/src/cli/merge-remote/pageMergePlan.d.ts +0 -36
- package/dist/_dts/sdk/src/cli/merge-remote/pageMergePush.d.ts +0 -23
- package/dist/_dts/sdk/src/cli/merge-remote/pageMergeReport.d.ts +0 -17
- package/dist/_dts/sdk/src/cli/merge-remote/pageSnapshots.d.ts +0 -46
- package/dist/_dts/sdk/src/cli/merge-remote/sharedBaseSnapshots.d.ts +0 -32
- package/dist/_dts/sdk/src/cli/merge-remote/sharedMergePlan.d.ts +0 -27
- package/dist/_dts/sdk/src/cli/merge-remote/sharedMergeReport.d.ts +0 -63
- package/dist/_dts/sdk/src/cli/migrations/entries.d.ts +0 -28
- package/dist/_dts/sdk/src/cli/migrations/events.d.ts +0 -73
- package/dist/_dts/sdk/src/cli/navigationIdentity.d.ts +0 -11
- package/dist/_dts/sdk/src/cli/output.d.ts +0 -133
- package/dist/_dts/sdk/src/cli/program.d.ts +0 -29
- package/dist/_dts/sdk/src/cli/push-config.d.ts +0 -49
- package/dist/_dts/sdk/src/cli/setup/setupPlan.d.ts +0 -51
- package/dist/_dts/sdk/src/cli/site-commands/commandKeys.d.ts +0 -13
- package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +0 -170
- package/dist/_dts/sdk/src/cli/site-commands/commandRuntimeCompat.d.ts +0 -21
- package/dist/_dts/sdk/src/cli/site-commands/commandSurfaceDispatch.d.ts +0 -32
- package/dist/_dts/sdk/src/cli/site-commands/datedOfferingCommands.d.ts +0 -53
- package/dist/_dts/sdk/src/cli/site-commands/entryCommands.d.ts +0 -65
- package/dist/_dts/sdk/src/cli/site-commands/eventScheduleCompiler.d.ts +0 -24
- package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +0 -68
- package/dist/_dts/sdk/src/cli/site-commands/formCommands.d.ts +0 -53
- package/dist/_dts/sdk/src/cli/site-commands/index.d.ts +0 -8
- package/dist/_dts/sdk/src/cli/site-commands/localBlockManifestResolver.d.ts +0 -31
- package/dist/_dts/sdk/src/cli/site-commands/navigationCommands.d.ts +0 -57
- package/dist/_dts/sdk/src/cli/site-commands/oneOffCommands.d.ts +0 -82
- package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +0 -84
- package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +0 -39
- package/dist/_dts/sdk/src/cli/site-commands/pushExecutionPlan.d.ts +0 -8
- package/dist/_dts/sdk/src/cli/site-commands/pushExecutionTypes.d.ts +0 -97
- package/dist/_dts/sdk/src/cli/site-commands/residualSettingsTrimming.d.ts +0 -15
- package/dist/_dts/sdk/src/cli/sync/diff.d.ts +0 -222
- package/dist/_dts/sdk/src/cli/sync/executor.d.ts +0 -84
- package/dist/_dts/sdk/src/cli/sync/field-diff.d.ts +0 -39
- package/dist/_dts/sdk/src/cli/sync/index.d.ts +0 -10
- package/dist/_dts/sdk/src/cli/sync/mapper.d.ts +0 -41
- package/dist/_dts/sdk/src/cli/sync/media-sync.d.ts +0 -15
- package/dist/_dts/sdk/src/cli/sync/media.d.ts +0 -158
- package/dist/_dts/sdk/src/cli/sync/syncResultAggregation.d.ts +0 -4
- package/dist/_dts/sdk/src/cli/sync/validation.d.ts +0 -68
- package/dist/_dts/sdk/src/cli/utils/checksum.d.ts +0 -1
- package/dist/_dts/sdk/src/client/management/blocks.d.ts +0 -19
- package/dist/_dts/sdk/src/client/management/catalog.d.ts +0 -10
- package/dist/_dts/sdk/src/client/management/entries.d.ts +0 -6
- package/dist/_dts/sdk/src/client/management/eventCategories.d.ts +0 -6
- package/dist/_dts/sdk/src/client/management/events.d.ts +0 -7
- package/dist/_dts/sdk/src/client/management/footer.d.ts +0 -9
- package/dist/_dts/sdk/src/client/management/forms.d.ts +0 -6
- package/dist/_dts/sdk/src/client/management/http.d.ts +0 -79
- package/dist/_dts/sdk/src/client/management/identifiers.d.ts +0 -11
- package/dist/_dts/sdk/src/client/management/index.d.ts +0 -41
- package/dist/_dts/sdk/src/client/management/media.d.ts +0 -72
- package/dist/_dts/sdk/src/client/management/navigation.d.ts +0 -6
- package/dist/_dts/sdk/src/client/management/pages.d.ts +0 -6
- package/dist/_dts/sdk/src/client/management/pull.d.ts +0 -6
- package/dist/_dts/sdk/src/client/management/settings-branding.d.ts +0 -32
- package/dist/_dts/sdk/src/client/management/settings.d.ts +0 -6
- package/dist/_dts/sdk/src/client/management/theme.d.ts +0 -8
- package/dist/_dts/sdk/src/client/management/types.d.ts +0 -1069
- package/dist/_dts/sdk/src/client/management/venues.d.ts +0 -6
- package/dist/_dts/sdk/src/client/management/webhooks.d.ts +0 -3
- package/dist/_dts/sdk/src/test/env.d.ts +0 -4
- package/dist/_dts/site-commands/src/adapter.d.ts +0 -23
- package/dist/_dts/site-commands/src/appointmentCommandSchemas.d.ts +0 -100
- package/dist/_dts/site-commands/src/capabilityGaps.d.ts +0 -8
- package/dist/_dts/site-commands/src/commandContract.d.ts +0 -1277
- package/dist/_dts/site-commands/src/commandDomain.d.ts +0 -20
- package/dist/_dts/site-commands/src/commandIdentifiers.d.ts +0 -7
- package/dist/_dts/site-commands/src/commandValidation.d.ts +0 -10
- package/dist/_dts/site-commands/src/commands.d.ts +0 -1983
- package/dist/_dts/site-commands/src/domain.d.ts +0 -104
- package/dist/_dts/site-commands/src/eventCommandContent.d.ts +0 -11
- package/dist/_dts/site-commands/src/exposure.d.ts +0 -41
- package/dist/_dts/site-commands/src/guards.d.ts +0 -1
- package/dist/_dts/site-commands/src/index.d.ts +0 -18
- package/dist/_dts/site-commands/src/metadata.d.ts +0 -555
- package/dist/_dts/site-commands/src/pagePaths.d.ts +0 -6
- package/dist/_dts/site-commands/src/planner.d.ts +0 -58
- package/dist/_dts/site-commands/src/refContributions.d.ts +0 -11
- package/dist/_dts/site-commands/src/refs.d.ts +0 -90
- package/dist/_dts/site-commands/src/siteStyleCommandSchema.d.ts +0 -405
- package/dist/_dts/site-commands/src/siteStyleSelectionSchemaBuilder.d.ts +0 -46
- package/dist/_dts/site-commands/src/stableJson.d.ts +0 -5
- package/dist/_dts/site-commands/src/staticExecutionGaps.d.ts +0 -10
- package/dist/_dts/site-commands/src/venueCommandMapping.d.ts +0 -21
- package/dist/_dts/theme-core/src/data.d.ts +0 -12
- package/dist/_dts/theme-core/src/site-styles/headerStyleParts.d.ts +0 -4
- package/dist/cli/index.mjs +0 -162962
- package/dist/cli/init-docs/content/agents-section.md +0 -67
- package/dist/cli/init-docs/content/cli-reference.md +0 -1238
- package/dist/cli/init-docs/content/content-management.md +0 -792
- package/dist/cli/init-docs/content/context-brand.md +0 -125
- package/dist/cli/init-docs/content/context-brief.md +0 -77
- package/dist/cli/init-docs/content/context-knowledge.md +0 -111
- package/dist/cli/init-docs/content/getting-started.md +0 -171
- package/dist/cli/init-docs/content/site-workflows-readme.md +0 -96
- package/dist/cli/init-docs/content/workflow-add-block.md +0 -299
- package/dist/cli/init-docs/content/workflow-agent-safe-sync.md +0 -83
- package/dist/cli/init-docs/content/workflow-block-extensions.md +0 -370
- package/dist/cli/init-docs/content/workflow-cmsify-page.md +0 -357
- package/dist/cli/init-docs/content/workflow-content-types.md +0 -330
- package/dist/cli/init-docs/content/workflow-create-page.md +0 -212
- package/dist/cli/init-docs/content/workflow-custom-block.md +0 -470
- package/dist/cli/init-docs/content/workflow-editor-workflows.md +0 -130
- package/dist/cli/init-docs/content/workflow-isr-revalidation.md +0 -158
- package/dist/cli/init-docs/content/workflow-preview-mode.md +0 -239
- package/dist/cli/init-docs/content/workflow-publish.md +0 -285
- package/dist/cli/init-docs/content/workflow-remote-setup.md +0 -51
- package/dist/cli/init-docs/content/workflow-templates.md +0 -381
- /package/dist/_dts/{sdk/src/cli/utils/mime.d.ts → media-core/src/mimeType.d.ts} +0 -0
|
@@ -1,792 +0,0 @@
|
|
|
1
|
-
# Content Management Guide
|
|
2
|
-
|
|
3
|
-
This guide explains the RiverbankCMS content model and how to work with content via the SDK.
|
|
4
|
-
|
|
5
|
-
## Content Model Overview
|
|
6
|
-
|
|
7
|
-
RiverbankCMS organizes content into five main types:
|
|
8
|
-
|
|
9
|
-
### 1. Entries
|
|
10
|
-
|
|
11
|
-
Content items for a specific content type (e.g., blog posts, products, team members).
|
|
12
|
-
|
|
13
|
-
- Defined by content types in `riverbank.config.ts`
|
|
14
|
-
- Each entry has an identifier, slug, and type-specific data
|
|
15
|
-
- Can be draft or published
|
|
16
|
-
|
|
17
|
-
**Local file structure:**
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
content/
|
|
21
|
-
entries/
|
|
22
|
-
blog-post.json # All blog-post entries
|
|
23
|
-
product.json # All product entries
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
### 2. Pages
|
|
27
|
-
|
|
28
|
-
Standalone pages that contain blocks.
|
|
29
|
-
|
|
30
|
-
- Have a path (URL), title, and SEO metadata
|
|
31
|
-
- Contain an ordered list of blocks
|
|
32
|
-
- Can be draft or published
|
|
33
|
-
|
|
34
|
-
**Local file structure:**
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
content/
|
|
38
|
-
pages/
|
|
39
|
-
home.json # Home page with blocks
|
|
40
|
-
about.json # About page with blocks
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
### 3. Blocks
|
|
44
|
-
|
|
45
|
-
Content components within pages.
|
|
46
|
-
|
|
47
|
-
- Each block has a kind (e.g., `block.hero`, `block.body-text`)
|
|
48
|
-
- Contains kind-specific content data
|
|
49
|
-
- Ordered by position within a page
|
|
50
|
-
|
|
51
|
-
**Common block kinds:**
|
|
52
|
-
|
|
53
|
-
| Kind | Description |
|
|
54
|
-
| --------------------- | ------------------------------------------------------ |
|
|
55
|
-
| `block.hero` | Hero/banner sections with heading, image, CTA |
|
|
56
|
-
| `block.body-text` | Rich text content |
|
|
57
|
-
| `block.image` | Image with caption |
|
|
58
|
-
| `block.image-gallery` | Image gallery (grid/carousel/masonry/marquee variants) |
|
|
59
|
-
| `block.cta` | Call-to-action buttons |
|
|
60
|
-
| `block.embed` | Embedded content (videos, etc.) |
|
|
61
|
-
|
|
62
|
-
See `block-types.md` for the full list.
|
|
63
|
-
|
|
64
|
-
### 4. Navigation
|
|
65
|
-
|
|
66
|
-
Menu structures for site navigation.
|
|
67
|
-
|
|
68
|
-
- Named menus (e.g., "main", "footer")
|
|
69
|
-
- Hierarchical items with labels, URLs, and children
|
|
70
|
-
|
|
71
|
-
**Local file structure:**
|
|
72
|
-
|
|
73
|
-
```
|
|
74
|
-
content/
|
|
75
|
-
navigation.json # All navigation menus
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### 5. Themes
|
|
79
|
-
|
|
80
|
-
Site theme objects used for rendering blocks.
|
|
81
|
-
|
|
82
|
-
**Local file structure:**
|
|
83
|
-
|
|
84
|
-
```
|
|
85
|
-
content/
|
|
86
|
-
themes/
|
|
87
|
-
current.json # Default theme (pulled from CMS or edited locally)
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
### 6. Footer Content
|
|
91
|
-
|
|
92
|
-
Site footer content (non-navigation), currently just optional bottom text.
|
|
93
|
-
|
|
94
|
-
- Optional rich text for copyright notices, legal text, etc.
|
|
95
|
-
|
|
96
|
-
**Local file structure:**
|
|
97
|
-
|
|
98
|
-
```
|
|
99
|
-
content/
|
|
100
|
-
footer.json # Footer bottom text (non-navigation)
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
**Note:** Footer links are managed via navigation menus. `content/footer.json` is for non-link content only.
|
|
104
|
-
|
|
105
|
-
### 7. Event-Related Content
|
|
106
|
-
|
|
107
|
-
For sites with events functionality, additional content types are available:
|
|
108
|
-
|
|
109
|
-
**Venues** - Physical locations where events take place.
|
|
110
|
-
|
|
111
|
-
```
|
|
112
|
-
content/
|
|
113
|
-
venues/
|
|
114
|
-
main-hall.json # Venue details with address, capacity, etc.
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
**Event Categories** - Categories for organizing events.
|
|
118
|
-
|
|
119
|
-
```
|
|
120
|
-
content/
|
|
121
|
-
event-categories/
|
|
122
|
-
workshop.json # Category with name, description, color
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
**Events** - Event series with scheduling, pricing, and registration.
|
|
126
|
-
|
|
127
|
-
```
|
|
128
|
-
content/
|
|
129
|
-
events/
|
|
130
|
-
yoga-class.json # Event with schedule, pricing, venue/category refs
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
## Working with Identifiers
|
|
136
|
-
|
|
137
|
-
Identifiers are stable, human-readable names for content:
|
|
138
|
-
|
|
139
|
-
- Used by the SDK to reference content reliably
|
|
140
|
-
- Should be kebab-case (e.g., `my-blog-post`, `about-us`)
|
|
141
|
-
- Are idempotent - upserting with same identifier updates existing content
|
|
142
|
-
- Allow content to be tracked across environments
|
|
143
|
-
|
|
144
|
-
**Examples:**
|
|
145
|
-
|
|
146
|
-
```bash
|
|
147
|
-
# Entry identifier
|
|
148
|
-
riverbankcms entry upsert blog-post my-first-post --data '...'
|
|
149
|
-
|
|
150
|
-
# Page identifier
|
|
151
|
-
riverbankcms page upsert about --title "About Us" --path /about
|
|
152
|
-
|
|
153
|
-
# Block identifier (within a page)
|
|
154
|
-
riverbankcms block upsert about hero-section --kind block.hero --data '...'
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
**Backfill identifiers for legacy content:**
|
|
158
|
-
|
|
159
|
-
```bash
|
|
160
|
-
riverbankcms identifiers backfill
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
---
|
|
164
|
-
|
|
165
|
-
## Media Identifiers (Local Sync)
|
|
166
|
-
|
|
167
|
-
For media fields, you can reference files by a stable identifier:
|
|
168
|
-
|
|
169
|
-
- Add `identifier` to the media field value (slug only, no extension)
|
|
170
|
-
- Place files at `content/media/<identifier>.<ext>`
|
|
171
|
-
- Pull/download media: `riverbankcms pull --local-media`
|
|
172
|
-
- Push/upload media: `riverbankcms push` (default-on)
|
|
173
|
-
|
|
174
|
-
Rich text images (TipTap JSON) are also identifier-based:
|
|
175
|
-
|
|
176
|
-
- Store images as `{ type: "image", attrs: { identifier: "..." } }` (no persisted `attrs.src`)
|
|
177
|
-
- External `attrs.src` URLs are auto-imported into CMS media on write
|
|
178
|
-
|
|
179
|
-
### `content/media` is local cache by default
|
|
180
|
-
|
|
181
|
-
The generated SDK site `.gitignore` treats `content/media/*` as local cache and
|
|
182
|
-
migration working data by default. This prevents large downloaded files, such as
|
|
183
|
-
audio libraries or environment-clone media, from being staged accidentally. The
|
|
184
|
-
portable source of truth is the media identifier in content JSON; local files are
|
|
185
|
-
only the bytes used by pull/push workflows.
|
|
186
|
-
|
|
187
|
-
If a project intentionally wants to version a few small media fixtures, place
|
|
188
|
-
them under `content/media/fixtures/`. That directory is unignored by the generated
|
|
189
|
-
pattern. For existing SDK repos that already committed local media, opt in to the
|
|
190
|
-
new default with:
|
|
191
|
-
|
|
192
|
-
```bash
|
|
193
|
-
git rm --cached -r content/media
|
|
194
|
-
git add .gitignore
|
|
195
|
-
git commit -m "Treat content/media as local cache"
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
Review the staged diff before committing if you keep intentional fixtures.
|
|
199
|
-
|
|
200
|
-
### Managing Site Logo and Favicon
|
|
201
|
-
|
|
202
|
-
Use `content/settings.json` as the repo-managed source of truth for branding:
|
|
203
|
-
|
|
204
|
-
```json
|
|
205
|
-
{
|
|
206
|
-
"homepageId": null,
|
|
207
|
-
"seoDefaults": null,
|
|
208
|
-
"logoIdentifier": "positive-play-primary-logo",
|
|
209
|
-
"faviconIdentifier": "positive-play-primary-logo"
|
|
210
|
-
}
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
Recommended workflow:
|
|
214
|
-
|
|
215
|
-
1. Add the branding files to `content/media/`, for example `content/media/positive-play-primary-logo.svg`
|
|
216
|
-
2. Reference those identifiers in `content/settings.json`
|
|
217
|
-
3. Run `riverbankcms push settings`
|
|
218
|
-
4. Run `riverbankcms pull settings` if you want to confirm the CMS state round-trips cleanly
|
|
219
|
-
|
|
220
|
-
Notes:
|
|
221
|
-
|
|
222
|
-
- `riverbankcms push settings` uploads missing branding files through the normal local-media sync path before updating site settings, without pushing unrelated content
|
|
223
|
-
- `riverbankcms pull settings` warns and omits `logoIdentifier` / `faviconIdentifier` if the current CMS branding asset has no media identifier yet
|
|
224
|
-
- Dashboard branding edits and CLI pushes both update the same site settings row, so treat them as last-write-wins and pull before pushing after dashboard-side edits
|
|
225
|
-
|
|
226
|
-
---
|
|
227
|
-
|
|
228
|
-
## Draft vs Published
|
|
229
|
-
|
|
230
|
-
All content has a publication status:
|
|
231
|
-
|
|
232
|
-
| Status | Visibility |
|
|
233
|
-
| --------- | ---------------------------- |
|
|
234
|
-
| Draft | Only visible in preview mode |
|
|
235
|
-
| Published | Visible on the live site |
|
|
236
|
-
|
|
237
|
-
New content is created as a draft by default.
|
|
238
|
-
|
|
239
|
-
### Checking Status
|
|
240
|
-
|
|
241
|
-
```bash
|
|
242
|
-
# Check entry status
|
|
243
|
-
riverbankcms entry get blog-post my-post
|
|
244
|
-
|
|
245
|
-
# Check page status
|
|
246
|
-
riverbankcms page get about
|
|
247
|
-
|
|
248
|
-
# List with JSON to see status field (--json wraps output in an envelope: reach into .result)
|
|
249
|
-
riverbankcms entry list blog-post --json | jq '.result.entries[] | {identifier, status}'
|
|
250
|
-
|
|
251
|
-
# Everything with pending changes, across all content types (server-filtered, uncapped)
|
|
252
|
-
riverbankcms drafts
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
### Publishing Content
|
|
256
|
-
|
|
257
|
-
```bash
|
|
258
|
-
# Publish entry
|
|
259
|
-
riverbankcms entry publish blog-post my-post
|
|
260
|
-
|
|
261
|
-
# Publish page
|
|
262
|
-
riverbankcms page publish about
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
### Unpublishing Content
|
|
266
|
-
|
|
267
|
-
```bash
|
|
268
|
-
# Unpublish entry (revert to draft)
|
|
269
|
-
riverbankcms entry unpublish blog-post my-post
|
|
270
|
-
|
|
271
|
-
# Unpublish page
|
|
272
|
-
riverbankcms page unpublish about
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
### Unpublished Changes
|
|
276
|
-
|
|
277
|
-
When you modify published content, it stays published but gains unpublished changes. The live site shows the last published version until you publish again.
|
|
278
|
-
|
|
279
|
-
```bash
|
|
280
|
-
# Check for unpublished changes (--json wraps output: the entry is under .result)
|
|
281
|
-
riverbankcms entry get blog-post my-post --json | jq '.result.hasUnpublishedChanges'
|
|
282
|
-
|
|
283
|
-
# Publish to apply pending changes
|
|
284
|
-
riverbankcms entry publish blog-post my-post
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
---
|
|
288
|
-
|
|
289
|
-
## Content Sync Workflow
|
|
290
|
-
|
|
291
|
-
### Pulling Content
|
|
292
|
-
|
|
293
|
-
Downloads CMS content to local JSON files:
|
|
294
|
-
|
|
295
|
-
```bash
|
|
296
|
-
# Pull all content
|
|
297
|
-
riverbankcms pull
|
|
298
|
-
|
|
299
|
-
# Pull specific types
|
|
300
|
-
riverbankcms pull entries
|
|
301
|
-
riverbankcms pull entries blog-post
|
|
302
|
-
riverbankcms pull entries blog-post my-post
|
|
303
|
-
riverbankcms pull pages
|
|
304
|
-
riverbankcms pull pages home
|
|
305
|
-
riverbankcms pull navigation
|
|
306
|
-
riverbankcms pull footer # Footer content
|
|
307
|
-
riverbankcms pull forms
|
|
308
|
-
riverbankcms pull venues # Event venues
|
|
309
|
-
riverbankcms pull event-categories # Event categories
|
|
310
|
-
riverbankcms pull events # Event series
|
|
311
|
-
riverbankcms pull events summer-fest # Specific event series
|
|
312
|
-
```
|
|
313
|
-
|
|
314
|
-
**Output directory structure:**
|
|
315
|
-
|
|
316
|
-
```
|
|
317
|
-
content/
|
|
318
|
-
├── entries/
|
|
319
|
-
│ ├── blog-post/
|
|
320
|
-
│ │ └── my-post.json
|
|
321
|
-
│ └── product/
|
|
322
|
-
│ └── featured-product.json
|
|
323
|
-
├── pages/
|
|
324
|
-
│ ├── home.json
|
|
325
|
-
│ └── about.json
|
|
326
|
-
├── navigation.json
|
|
327
|
-
└── footer.json
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
### Pushing Content
|
|
331
|
-
|
|
332
|
-
Uploads local changes to the CMS:
|
|
333
|
-
|
|
334
|
-
```bash
|
|
335
|
-
# Preview changes (recommended)
|
|
336
|
-
riverbankcms push --dry-run
|
|
337
|
-
|
|
338
|
-
# Apply changes
|
|
339
|
-
riverbankcms push
|
|
340
|
-
```
|
|
341
|
-
|
|
342
|
-
For agent work, prefer scoped pushes over broad pushes:
|
|
343
|
-
|
|
344
|
-
```bash
|
|
345
|
-
# One page
|
|
346
|
-
riverbankcms push pages privacy-policy --env=remote --dry-run
|
|
347
|
-
riverbankcms push pages privacy-policy --env=remote --yes
|
|
348
|
-
|
|
349
|
-
# One content type or entry
|
|
350
|
-
riverbankcms push entries blog-post --env=remote --dry-run
|
|
351
|
-
riverbankcms push entries blog-post welcome --env=remote --dry-run
|
|
352
|
-
```
|
|
353
|
-
|
|
354
|
-
Use CLI `--env=local` / `--env=remote` rather than `RIVERBANK_ENV=...` shell prefixes for sync commands. Site `.env.local` files may set `RIVERBANK_ENV`, while the CLI flag explicitly selects the sync target.
|
|
355
|
-
|
|
356
|
-
If local files include unrelated page or entry differences, isolate the changed files with `--content-dir`:
|
|
357
|
-
|
|
358
|
-
```bash
|
|
359
|
-
tmpdir=$(mktemp -d)
|
|
360
|
-
mkdir -p "$tmpdir/pages"
|
|
361
|
-
cp content/pages/privacy-policy.json "$tmpdir/pages/privacy-policy.json"
|
|
362
|
-
|
|
363
|
-
riverbankcms push pages --content-dir "$tmpdir" --env=remote --dry-run
|
|
364
|
-
riverbankcms push pages --content-dir "$tmpdir" --env=remote --yes
|
|
365
|
-
|
|
366
|
-
rm -rf "$tmpdir"
|
|
367
|
-
```
|
|
368
|
-
|
|
369
|
-
See `workflows/agent-safe-sync.md` for the full safe-push checklist.
|
|
370
|
-
|
|
371
|
-
### Sync Configuration
|
|
372
|
-
|
|
373
|
-
Configure sync behavior in `riverbank.config.ts`:
|
|
374
|
-
|
|
375
|
-
```typescript
|
|
376
|
-
export default defineConfig({
|
|
377
|
-
siteId: "...",
|
|
378
|
-
sync: {
|
|
379
|
-
// How to handle existing entries during push
|
|
380
|
-
existingEntries: "update", // 'skip' (default) or 'update'
|
|
381
|
-
},
|
|
382
|
-
});
|
|
383
|
-
```
|
|
384
|
-
|
|
385
|
-
`push-config` syncs schema/config surfaces such as custom blocks, block extensions/options, content type schemas/templates, SDK-managed settings, and footer blocks. It does not replace `push pages`, `push entries`, or `push navigation` for file-backed content.
|
|
386
|
-
|
|
387
|
-
| Option | Values | Description |
|
|
388
|
-
| ----------------- | ---------------- | -------------------------------------------- |
|
|
389
|
-
| `existingEntries` | `skip`, `update` | Whether to update entries that already exist |
|
|
390
|
-
|
|
391
|
-
**Status Sync**: Push automatically syncs draft/published status based on the `status` field in your local content files. Set `"status": "published"` in a local file to publish on push, or `"status": "draft"` to unpublish.
|
|
392
|
-
|
|
393
|
-
### Environment Cloning (Remote ↔ Local) Best Practices
|
|
394
|
-
|
|
395
|
-
Broken images after env pulls/pushes usually happen when env-specific media fields (like `assetId` or storage paths) leak into portable content JSON. The SDK is designed so **content JSON is portable** and media references are **identifier-only**.
|
|
396
|
-
|
|
397
|
-
**Rules of thumb:**
|
|
398
|
-
|
|
399
|
-
- **Do not** commit or hand-write `assetId`, `storagePath`, `storageBucket`, or `src` into content JSON.
|
|
400
|
-
- Prefer `{ type: "image", identifier: "..." }` in structured content, and `{ type: "image", attrs: { identifier: "..." } }` in rich text.
|
|
401
|
-
- If you hit an `INVALID_MEDIA_REFERENCE` error during push, re-run a fresh pull with the latest CLI and push again.
|
|
402
|
-
|
|
403
|
-
#### Clone production CMS → local CMS (recommended)
|
|
404
|
-
|
|
405
|
-
This is the safest “env clone” flow (portable JSON + local media files → push into target CMS):
|
|
406
|
-
|
|
407
|
-
```bash
|
|
408
|
-
# 1) Pull remote content to a dedicated directory
|
|
409
|
-
riverbankcms pull --env=remote --output .tmp/remote-clone --yes
|
|
410
|
-
|
|
411
|
-
# 2) Download the media bytes referenced by identifiers into .tmp/remote-clone/media
|
|
412
|
-
riverbankcms pull --env=remote --output .tmp/remote-clone --local-media --yes
|
|
413
|
-
|
|
414
|
-
# 3) Push that snapshot into your local CMS (local DB gets its own assetIds)
|
|
415
|
-
riverbankcms push --env=local --content-dir .tmp/remote-clone --yes
|
|
416
|
-
```
|
|
417
|
-
|
|
418
|
-
#### Sync media bytes CMS → CMS (optional, faster for large libraries)
|
|
419
|
-
|
|
420
|
-
Use this when you explicitly want to copy media bytes between environments without going through local files:
|
|
421
|
-
|
|
422
|
-
```bash
|
|
423
|
-
# Remote storage -> local storage (identifier + checksum based)
|
|
424
|
-
riverbankcms pull --env=remote --sync-media --yes
|
|
425
|
-
|
|
426
|
-
# Fail-safe by default: checksum mismatches abort unless you explicitly overwrite
|
|
427
|
-
riverbankcms pull --env=remote --sync-media --overwrite-media --yes
|
|
428
|
-
```
|
|
429
|
-
|
|
430
|
-
Notes:
|
|
431
|
-
|
|
432
|
-
- `--sync-media` is **identifier + checksum** based. If the target already has an identifier with different bytes, the command fails unless you pass `--overwrite-media`.
|
|
433
|
-
- When pulling from remote, `--sync-media` may need to **write to the source CMS** to backfill missing identifiers, so remote sync requires `--yes`.
|
|
434
|
-
- Local media bytes live under `content/media/`, which is treated as cache/migration working data by default in generated SDK sites.
|
|
435
|
-
|
|
436
|
-
#### Promote local files → production CMS
|
|
437
|
-
|
|
438
|
-
```bash
|
|
439
|
-
# Always pull first to refresh stale detection metadata
|
|
440
|
-
riverbankcms pull --env=remote --yes
|
|
441
|
-
|
|
442
|
-
# Then push your local content snapshot
|
|
443
|
-
riverbankcms push --env=remote --yes
|
|
444
|
-
```
|
|
445
|
-
|
|
446
|
-
---
|
|
447
|
-
|
|
448
|
-
## Local Content Files
|
|
449
|
-
|
|
450
|
-
### Entry File Format
|
|
451
|
-
|
|
452
|
-
`content/entries/blog-post.json`:
|
|
453
|
-
|
|
454
|
-
```json
|
|
455
|
-
[
|
|
456
|
-
{
|
|
457
|
-
"identifier": "my-first-post",
|
|
458
|
-
"slug": "my-first-post",
|
|
459
|
-
"data": {
|
|
460
|
-
"title": "My First Post",
|
|
461
|
-
"content": "<p>Hello world!</p>",
|
|
462
|
-
"publishedAt": "2024-01-15"
|
|
463
|
-
}
|
|
464
|
-
},
|
|
465
|
-
{
|
|
466
|
-
"identifier": "another-post",
|
|
467
|
-
"slug": "another-post",
|
|
468
|
-
"data": {
|
|
469
|
-
"title": "Another Post",
|
|
470
|
-
"content": "<p>More content...</p>"
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
]
|
|
474
|
-
```
|
|
475
|
-
|
|
476
|
-
### Page File Format
|
|
477
|
-
|
|
478
|
-
`content/pages/home.json`:
|
|
479
|
-
|
|
480
|
-
```json
|
|
481
|
-
{
|
|
482
|
-
"identifier": "home",
|
|
483
|
-
"title": "Home",
|
|
484
|
-
"path": "/",
|
|
485
|
-
"seo": {
|
|
486
|
-
"title": "Welcome | My Site",
|
|
487
|
-
"description": "The home page"
|
|
488
|
-
},
|
|
489
|
-
"blocks": [
|
|
490
|
-
{
|
|
491
|
-
"identifier": "hero-main",
|
|
492
|
-
"kind": "block.hero",
|
|
493
|
-
"content": {
|
|
494
|
-
"heading": "Welcome to My Site",
|
|
495
|
-
"subheading": "We build great things"
|
|
496
|
-
}
|
|
497
|
-
},
|
|
498
|
-
{
|
|
499
|
-
"identifier": "intro-text",
|
|
500
|
-
"kind": "block.body-text",
|
|
501
|
-
"content": {
|
|
502
|
-
"content": "<p>Introduction text here...</p>"
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
]
|
|
506
|
-
}
|
|
507
|
-
```
|
|
508
|
-
|
|
509
|
-
### Navigation File Format
|
|
510
|
-
|
|
511
|
-
`content/navigation.json`:
|
|
512
|
-
|
|
513
|
-
```json
|
|
514
|
-
{
|
|
515
|
-
"menus": [
|
|
516
|
-
{
|
|
517
|
-
"identifier": "main",
|
|
518
|
-
"name": "Main Navigation",
|
|
519
|
-
"items": [
|
|
520
|
-
{ "label": "Home", "link": { "kind": "page", "identifier": "home" } },
|
|
521
|
-
{
|
|
522
|
-
"label": "Get Started",
|
|
523
|
-
"link": { "kind": "url", "href": "/signup" },
|
|
524
|
-
"isCta": true
|
|
525
|
-
},
|
|
526
|
-
{
|
|
527
|
-
"label": "Products",
|
|
528
|
-
"children": [
|
|
529
|
-
{
|
|
530
|
-
"label": "Category A",
|
|
531
|
-
"link": { "kind": "url", "href": "/products/a" }
|
|
532
|
-
},
|
|
533
|
-
{
|
|
534
|
-
"label": "Category B",
|
|
535
|
-
"link": { "kind": "url", "href": "/products/b" }
|
|
536
|
-
}
|
|
537
|
-
]
|
|
538
|
-
}
|
|
539
|
-
]
|
|
540
|
-
},
|
|
541
|
-
{
|
|
542
|
-
"identifier": "footer",
|
|
543
|
-
"name": "Footer Navigation",
|
|
544
|
-
"items": [
|
|
545
|
-
{ "label": "Privacy", "link": { "kind": "url", "href": "/privacy" } },
|
|
546
|
-
{ "label": "Terms", "link": { "kind": "url", "href": "/terms" } }
|
|
547
|
-
]
|
|
548
|
-
}
|
|
549
|
-
]
|
|
550
|
-
}
|
|
551
|
-
```
|
|
552
|
-
|
|
553
|
-
`isCta` is optional and only applies to root-level link items. Dropdown containers and nested child items cannot be CTAs.
|
|
554
|
-
|
|
555
|
-
### Footer File Format
|
|
556
|
-
|
|
557
|
-
`content/footer.json`:
|
|
558
|
-
|
|
559
|
-
```json
|
|
560
|
-
{
|
|
561
|
-
"bottomText": {
|
|
562
|
-
"type": "doc",
|
|
563
|
-
"content": [
|
|
564
|
-
{
|
|
565
|
-
"type": "paragraph",
|
|
566
|
-
"content": [
|
|
567
|
-
{
|
|
568
|
-
"type": "text",
|
|
569
|
-
"text": "© 2024 Your Company. All rights reserved."
|
|
570
|
-
}
|
|
571
|
-
]
|
|
572
|
-
}
|
|
573
|
-
]
|
|
574
|
-
}
|
|
575
|
-
}
|
|
576
|
-
```
|
|
577
|
-
|
|
578
|
-
**Footer fields:**
|
|
579
|
-
|
|
580
|
-
| Field | Type | Description |
|
|
581
|
-
| ------------ | ---------------- | -------------------------------------------- |
|
|
582
|
-
| `bottomText` | ProseMirror JSON | Rich text for copyright, legal notices, etc. |
|
|
583
|
-
|
|
584
|
-
Footer links are managed via the site's footer navigation menu (see `content/navigation.json`).
|
|
585
|
-
|
|
586
|
-
### Venue File Format
|
|
587
|
-
|
|
588
|
-
`content/venues/main-hall.json`:
|
|
589
|
-
|
|
590
|
-
```json
|
|
591
|
-
{
|
|
592
|
-
"slug": "main-hall",
|
|
593
|
-
"title": "Main Conference Hall",
|
|
594
|
-
"description": "Our main venue for large events",
|
|
595
|
-
"timezone": "America/Los_Angeles",
|
|
596
|
-
"capacity": 200,
|
|
597
|
-
"address": {
|
|
598
|
-
"line1": "123 Main St",
|
|
599
|
-
"city": "San Francisco",
|
|
600
|
-
"region": "CA",
|
|
601
|
-
"postcode": "94102",
|
|
602
|
-
"country": "US"
|
|
603
|
-
}
|
|
604
|
-
}
|
|
605
|
-
```
|
|
606
|
-
|
|
607
|
-
### Event Category File Format
|
|
608
|
-
|
|
609
|
-
`content/event-categories/workshop.json`:
|
|
610
|
-
|
|
611
|
-
```json
|
|
612
|
-
{
|
|
613
|
-
"identifier": "workshop",
|
|
614
|
-
"name": "Workshop",
|
|
615
|
-
"description": "Hands-on learning sessions",
|
|
616
|
-
"color": "#3B82F6",
|
|
617
|
-
"sortOrder": 1
|
|
618
|
-
}
|
|
619
|
-
```
|
|
620
|
-
|
|
621
|
-
### Event File Format
|
|
622
|
-
|
|
623
|
-
`content/events/yoga-class.json`:
|
|
624
|
-
|
|
625
|
-
```json
|
|
626
|
-
{
|
|
627
|
-
"identifier": "yoga-class",
|
|
628
|
-
"title": "Morning Yoga Class",
|
|
629
|
-
"slug": "yoga-class",
|
|
630
|
-
"path": "/events/yoga-class",
|
|
631
|
-
"status": "active",
|
|
632
|
-
"visibility": "public",
|
|
633
|
-
"preset": "class",
|
|
634
|
-
"bookingScope": "single_occurrence",
|
|
635
|
-
"occurrences": [
|
|
636
|
-
{
|
|
637
|
-
"startsAt": "2026-01-05T15:00:00.000Z",
|
|
638
|
-
"endsAt": "2026-01-05T16:00:00.000Z",
|
|
639
|
-
"timeZone": "America/Los_Angeles"
|
|
640
|
-
},
|
|
641
|
-
{
|
|
642
|
-
"startsAt": "2026-01-12T15:00:00.000Z",
|
|
643
|
-
"endsAt": "2026-01-12T16:00:00.000Z",
|
|
644
|
-
"timeZone": "America/Los_Angeles"
|
|
645
|
-
}
|
|
646
|
-
],
|
|
647
|
-
"venueRef": "main-hall",
|
|
648
|
-
"categoryRef": "workshop",
|
|
649
|
-
"capacity": 30,
|
|
650
|
-
"pricing": {
|
|
651
|
-
"requiresPayment": true,
|
|
652
|
-
"priceAmount": 2500,
|
|
653
|
-
"priceCurrency": "usd",
|
|
654
|
-
"acceptsPasses": true,
|
|
655
|
-
"acceptsMemberships": true
|
|
656
|
-
},
|
|
657
|
-
"content": {
|
|
658
|
-
"summary": "Start your day with energizing yoga",
|
|
659
|
-
"body": "<p>Join us for a revitalizing morning yoga session.</p>"
|
|
660
|
-
},
|
|
661
|
-
"blocks": {
|
|
662
|
-
"main": [
|
|
663
|
-
{
|
|
664
|
-
"identifier": "class-introduction",
|
|
665
|
-
"kind": "block.body-text",
|
|
666
|
-
"content": {
|
|
667
|
-
"body": "<p>Bring a mat and arrive ten minutes early.</p>"
|
|
668
|
-
}
|
|
669
|
-
},
|
|
670
|
-
{
|
|
671
|
-
"identifier": "what-to-expect",
|
|
672
|
-
"kind": "custom.event-callout",
|
|
673
|
-
"content": {
|
|
674
|
-
"headline": "Gentle, steady, welcoming"
|
|
675
|
-
}
|
|
676
|
-
}
|
|
677
|
-
]
|
|
678
|
-
}
|
|
679
|
-
}
|
|
680
|
-
```
|
|
681
|
-
|
|
682
|
-
**Event field notes:**
|
|
683
|
-
|
|
684
|
-
- `priceAmount` is in cents (2500 = $25.00)
|
|
685
|
-
- `preset` controls the event's presentation defaults; `bookingScope` controls
|
|
686
|
-
whether a registration selects one occurrence or the complete series.
|
|
687
|
-
- `occurrences` is the complete authored schedule. Instants use canonical UTC
|
|
688
|
-
ISO datetimes and every item carries the event's IANA timezone.
|
|
689
|
-
- `venueRef` and `categoryRef` reference slugs/identifiers from venues and event-categories
|
|
690
|
-
- `status`: "draft", "active", "completed", "cancelled", or "archived"
|
|
691
|
-
- `visibility`: "private", "public", or "unlisted"
|
|
692
|
-
- `path` sets the draft route owned by the event's native page surface. Omit it to keep the CMS-generated route.
|
|
693
|
-
- Event page content is owned by the native `eventOffering` or `eventSeries` page-surface subject.
|
|
694
|
-
- `blocks` writes to the event page surface's template-defined surface slots. The default event template declares `blocks.main`.
|
|
695
|
-
- Use stable block `identifier` values. Re-pushing the same event updates matching slot blocks instead of creating duplicates.
|
|
696
|
-
- Default surface slots accept built-in content blocks plus enabled SDK custom blocks. If a template sets `allowedBlocks`, that explicit list is authoritative.
|
|
697
|
-
- `riverbankcms push events` aborts when two `content/events/*.json` files use the same `identifier`; merge or delete stale duplicates before pushing.
|
|
698
|
-
|
|
699
|
-
See `cli-reference.md` for event-related CLI commands: `riverbankcms push/pull venues|event-categories|events`.
|
|
700
|
-
|
|
701
|
-
`riverbankcms pull events` writes every non-cancelled occurrence to the event
|
|
702
|
-
file. Pushing a new event creates that explicit schedule, and pushing an
|
|
703
|
-
unchanged existing schedule is safe. Existing-series additions, removals, or
|
|
704
|
-
retiming remain an explicit capability gap; use `riverbankcms event occurrence
|
|
705
|
-
list|add|update|cancel|delete` for those operational changes. Cancelled rows are
|
|
706
|
-
operational tombstones and are not recreated from portable content.
|
|
707
|
-
|
|
708
|
-
---
|
|
709
|
-
|
|
710
|
-
## Configuration Reference
|
|
711
|
-
|
|
712
|
-
### riverbank.config.ts
|
|
713
|
-
|
|
714
|
-
Main SDK configuration:
|
|
715
|
-
|
|
716
|
-
```typescript
|
|
717
|
-
import { defineConfig } from '@riverbankcms/sdk';
|
|
718
|
-
|
|
719
|
-
export default defineConfig({
|
|
720
|
-
// Required: Your site ID
|
|
721
|
-
siteId: 'your-site-id',
|
|
722
|
-
|
|
723
|
-
// Optional: Dashboard UI configuration (navigation visibility, etc.)
|
|
724
|
-
dashboard: {
|
|
725
|
-
navigation: {
|
|
726
|
-
// Top nav (Overview/Content/Media/Settings/etc.)
|
|
727
|
-
siteNav: {
|
|
728
|
-
// mode: 'augment' | 'restrict'
|
|
729
|
-
// allowIds: [...]
|
|
730
|
-
// denyIds: [...]
|
|
731
|
-
// roles: { editor: { ... }, administrator: { ... } }
|
|
732
|
-
},
|
|
733
|
-
// Settings sidebar (General/Emails/Members/etc.)
|
|
734
|
-
settingsNav: {
|
|
735
|
-
// mode: 'augment' | 'restrict'
|
|
736
|
-
// allowIds: [...]
|
|
737
|
-
// denyIds: [...]
|
|
738
|
-
// roles: { editor: { ... }, administrator: { ... } }
|
|
739
|
-
},
|
|
740
|
-
},
|
|
741
|
-
},
|
|
742
|
-
|
|
743
|
-
// Custom blocks (see schema.md)
|
|
744
|
-
customBlocks: [...],
|
|
745
|
-
|
|
746
|
-
// Extend built-in blocks with new fields
|
|
747
|
-
blockFieldExtensions: {...},
|
|
748
|
-
|
|
749
|
-
// Override select field options
|
|
750
|
-
blockFieldOptions: {...},
|
|
751
|
-
|
|
752
|
-
// Content scaffolding
|
|
753
|
-
content: {
|
|
754
|
-
contentTypes: [...],
|
|
755
|
-
pages: [...],
|
|
756
|
-
entries: {...},
|
|
757
|
-
navigation: {...},
|
|
758
|
-
},
|
|
759
|
-
|
|
760
|
-
// Sync settings
|
|
761
|
-
sync: {
|
|
762
|
-
existingEntries: 'update',
|
|
763
|
-
},
|
|
764
|
-
});
|
|
765
|
-
```
|
|
766
|
-
|
|
767
|
-
### Environment Variables
|
|
768
|
-
|
|
769
|
-
Local development (default):
|
|
770
|
-
|
|
771
|
-
```bash
|
|
772
|
-
RIVERBANK_LOCAL_SITE_ID=your-site-id
|
|
773
|
-
RIVERBANK_LOCAL_DASHBOARD_URL=http://localhost:4000
|
|
774
|
-
RIVERBANK_LOCAL_MGMT_API_KEY=bld_mgmt_sk_...
|
|
775
|
-
```
|
|
776
|
-
|
|
777
|
-
Production (`--env=remote`):
|
|
778
|
-
|
|
779
|
-
```bash
|
|
780
|
-
RIVERBANK_REMOTE_SITE_ID=your-site-id
|
|
781
|
-
RIVERBANK_REMOTE_DASHBOARD_URL=https://your-dashboard.riverbankcms.com
|
|
782
|
-
RIVERBANK_REMOTE_MGMT_API_KEY=bld_mgmt_sk_...
|
|
783
|
-
```
|
|
784
|
-
|
|
785
|
-
---
|
|
786
|
-
|
|
787
|
-
## Related Documentation
|
|
788
|
-
|
|
789
|
-
- `cli-reference.md` - Full CLI command reference
|
|
790
|
-
- `schema.md` - This site's content types and custom blocks
|
|
791
|
-
- `block-types.md` - Available block types
|
|
792
|
-
- `workflows/` - Step-by-step guides for common tasks, including editor workflows
|