@riverbankcms/sdk 0.70.3 → 0.71.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_dts/api/src/contentTypes.d.ts +2 -1
- package/dist/_dts/block-form/src/client/index.d.ts +1 -1
- package/dist/_dts/block-form/src/fields/types.d.ts +14 -2
- package/dist/_dts/block-form/src/registry/schemas.d.ts +2 -0
- package/dist/_dts/block-form/src/widgets/MediaField/mediaFieldDefaults.d.ts +2 -2
- package/dist/_dts/block-form/src/widgets/MediaField/mediaFieldSchema.d.ts +2 -2
- package/dist/_dts/blocks/src/lib/media.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +1829 -149
- package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +1829 -149
- package/dist/_dts/blocks/src/system/blocks/cart.d.ts +1829 -149
- package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +1829 -149
- package/dist/_dts/blocks/src/system/blocks/collection.d.ts +1829 -149
- package/dist/_dts/blocks/src/system/blocks/cta-full.d.ts +1 -30727
- package/dist/_dts/blocks/src/system/blocks/events/event-spotlight.d.ts +11 -30827
- package/dist/_dts/blocks/src/system/blocks/faq.d.ts +1829 -149
- package/dist/_dts/blocks/src/system/blocks/file-download.d.ts +3 -3
- package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +1829 -149
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +106 -1
- package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +1829 -149
- package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +1829 -149
- package/dist/_dts/blocks/src/system/blocks/shop.d.ts +1829 -149
- package/dist/_dts/blocks/src/system/defineBlock.d.ts +3 -3
- package/dist/_dts/blocks/src/system/fragments/library/card.d.ts +2 -30793
- package/dist/_dts/blocks/src/system/fragments/library/ctaRow.d.ts +2 -30727
- package/dist/_dts/blocks/src/system/fragments/library/feedbackCallout.d.ts +2 -30779
- package/dist/_dts/blocks/src/system/fragments/library/heroCtaRow.d.ts +33 -30743
- package/dist/_dts/blocks/src/system/fragments/library/sectionState.d.ts +2 -30770
- package/dist/_dts/blocks/src/system/fragments/types.d.ts +8 -7
- package/dist/_dts/blocks/src/system/manifest/derivedContent.d.ts +7 -5
- package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +1 -1
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +192 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/file-download.d.ts +1 -1
- package/dist/_dts/content-model/src/content-types/schema.d.ts +7 -0
- package/dist/_dts/content-model/src/contentManifest.d.ts +4 -1
- package/dist/_dts/content-model/src/templates/bindingTypeCompatibility.d.ts +1 -1
- package/dist/_dts/core/src/index.d.ts +1 -1
- package/dist/_dts/core/src/planner.d.ts +4 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +53 -20
- package/dist/_dts/editor-blocks/src/index.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/media/MediaField.d.ts +6 -5
- package/dist/_dts/media-core/src/videoSlotPolicy.d.ts +0 -1
- package/dist/_dts/media-editor/src/context.d.ts +4 -1
- package/dist/_dts/media-react/src/hooks/useApiMediaUploader.d.ts +8 -1
- package/dist/_dts/media-react/src/index.d.ts +1 -5
- package/dist/_dts/preview-next/src/client/sdk/SdkPreviewMode.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/widgets/PreviewMediaField.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +1 -0
- package/dist/_dts/sdk/src/config/field-definitions.d.ts +6 -2
- package/dist/_dts/sdk/src/config/typed-entries.d.ts +4 -2
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +2 -1
- package/dist/_dts/sdk/src/manifest/prompt/examples/cta.d.ts +5 -5
- package/dist/_dts/sdk/src/manifest/prompt/examples/features-grid.d.ts +2 -2
- package/dist/_dts/sdk/src/manifest/prompt/examples/hero.d.ts +2 -2
- package/dist/_dts/sdk/src/manifest/prompt/examples/pricing.d.ts +10 -10
- package/dist/_dts/sdk/src/manifest/prompt/examples/testimonials.d.ts +4 -4
- package/dist/_dts/sdk/src/manifest/validation/output-schema.d.ts +11 -1
- package/dist/_dts/sdk/src/preview-next/client/index.d.ts +19 -1
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +2 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/cli/index.mjs +395 -190
- package/dist/cli/init-docs/content/workflow-preview-mode.md +167 -0
- package/dist/client/client.mjs +243 -203
- package/dist/client/hooks.mjs +172 -121
- package/dist/client/rendering/client.mjs +148 -112
- package/dist/client/rendering/islands.mjs +80 -31
- package/dist/client/rendering.mjs +242 -202
- package/dist/preview-next/client/index.mjs +60 -10
- package/dist/preview-next/client/runtime.mjs +408 -1141
- package/dist/server/components.mjs +219 -171
- package/dist/server/config-template-validation.mjs +31 -1
- package/dist/server/config-validation.mjs +172 -121
- package/dist/server/config.mjs +172 -121
- package/dist/server/data.mjs +172 -121
- package/dist/server/index.mjs +1 -1
- package/dist/server/next.mjs +220 -172
- package/dist/server/page-converter.mjs +379 -185
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +219 -171
- package/dist/server/rendering.mjs +219 -171
- package/dist/server/routing.mjs +175 -124
- package/dist/server/server.mjs +173 -122
- package/package.json +6 -1
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# Workflow: SDK Preview Mode
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Enable dashboard preview editing for an SDK-hosted Next.js site. Preview mode lets the dashboard open the external site with a short-lived editor session, render draft content, and show the Riverbank preview shell.
|
|
6
|
+
|
|
7
|
+
## Prerequisites
|
|
8
|
+
|
|
9
|
+
- A Riverbank SDK site using the Next.js App Router.
|
|
10
|
+
- A preview/staging URL for the site.
|
|
11
|
+
- A Riverbank preview API key (`bld_preview_sk_...`) for draft content.
|
|
12
|
+
- Dashboard access to run `riverbankcms push-config`.
|
|
13
|
+
|
|
14
|
+
## Configure `riverbank.config.ts`
|
|
15
|
+
|
|
16
|
+
Set the preview URL and enable token-based preview editing:
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
import { defineConfig } from '@riverbankcms/sdk/config'
|
|
20
|
+
|
|
21
|
+
export default defineConfig({
|
|
22
|
+
siteId: process.env.RIVERBANK_SITE_ID!,
|
|
23
|
+
previewUrl: process.env.NEXT_PUBLIC_SITE_URL!,
|
|
24
|
+
dashboard: {
|
|
25
|
+
previewEditingEnabled: true,
|
|
26
|
+
},
|
|
27
|
+
})
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Then sync the config:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
riverbankcms push-config --env=remote
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Use `--dashboard <url>` and `--api-key <key>` when you want explicit values to override environment variables.
|
|
37
|
+
|
|
38
|
+
## Add Preview Token Proxy
|
|
39
|
+
|
|
40
|
+
Create `src/proxy.ts`:
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
import { handlePreviewTokens } from '@riverbankcms/sdk/preview-next/middleware'
|
|
44
|
+
import { NextResponse, type NextRequest } from 'next/server'
|
|
45
|
+
|
|
46
|
+
export function proxy(request: NextRequest) {
|
|
47
|
+
if (process.env.RIVERBANK_PREVIEW_MODE === 'true') {
|
|
48
|
+
const response = handlePreviewTokens(request)
|
|
49
|
+
if (response) return response
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return NextResponse.next()
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export const config = {
|
|
56
|
+
matcher: ['/((?!_next/static|_next/image|api|favicon.ico|robots.txt|sitemap.xml).*)'],
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Add Preview Keep-Alive Route
|
|
61
|
+
|
|
62
|
+
Create `src/app/api/preview/keep-alive/route.ts`:
|
|
63
|
+
|
|
64
|
+
```ts
|
|
65
|
+
import type { NextRequest } from 'next/server'
|
|
66
|
+
|
|
67
|
+
import { createPreviewKeepAliveRouteHandler } from '@riverbankcms/sdk/preview-next/keep-alive'
|
|
68
|
+
|
|
69
|
+
const handler = createPreviewKeepAliveRouteHandler()
|
|
70
|
+
|
|
71
|
+
export function GET(request: NextRequest) {
|
|
72
|
+
return handler(request)
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export function POST(request: NextRequest) {
|
|
76
|
+
return handler(request)
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Add The Client Preview Wrapper
|
|
81
|
+
|
|
82
|
+
Create `src/components/preview/SdkPreviewModeClient.tsx`:
|
|
83
|
+
|
|
84
|
+
```tsx
|
|
85
|
+
'use client'
|
|
86
|
+
|
|
87
|
+
import { PreviewQueryProvider, SdkPreviewMode, type SdkPreviewModeProps } from '@riverbankcms/sdk/preview-next/client'
|
|
88
|
+
|
|
89
|
+
import { blockOverrides } from '@/lib/block-overrides'
|
|
90
|
+
|
|
91
|
+
type SdkPreviewModeClientProps = Omit<SdkPreviewModeProps, 'blockOverrides'>
|
|
92
|
+
|
|
93
|
+
export function SdkPreviewModeClient(props: SdkPreviewModeClientProps) {
|
|
94
|
+
return (
|
|
95
|
+
<PreviewQueryProvider>
|
|
96
|
+
<SdkPreviewMode {...props} blockOverrides={blockOverrides} />
|
|
97
|
+
</PreviewQueryProvider>
|
|
98
|
+
)
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Wire The Catch-All Page
|
|
103
|
+
|
|
104
|
+
Use `createPreviewModeBeforeRender` in the catch-all page:
|
|
105
|
+
|
|
106
|
+
```tsx
|
|
107
|
+
import { createCatchAllPage } from '@riverbankcms/sdk/next'
|
|
108
|
+
import { createPreviewModeBeforeRender } from '@riverbankcms/sdk/preview-next/before-render'
|
|
109
|
+
|
|
110
|
+
import config from '../../../riverbank.config'
|
|
111
|
+
import { blockOverrides } from '@/lib/block-overrides'
|
|
112
|
+
import { getRiverbankClient } from '@/lib/riverbank-client'
|
|
113
|
+
import { SdkPreviewModeClient } from '@/components/preview/SdkPreviewModeClient'
|
|
114
|
+
|
|
115
|
+
const { Page, generateMetadata } = createCatchAllPage({
|
|
116
|
+
getClient: getRiverbankClient,
|
|
117
|
+
config,
|
|
118
|
+
blockOverrides,
|
|
119
|
+
beforeRender: createPreviewModeBeforeRender({
|
|
120
|
+
getClient: getRiverbankClient,
|
|
121
|
+
siteId: config.siteId,
|
|
122
|
+
PreviewModeClient: SdkPreviewModeClient,
|
|
123
|
+
}),
|
|
124
|
+
})
|
|
125
|
+
|
|
126
|
+
export default Page
|
|
127
|
+
export { generateMetadata }
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Import Preview CSS
|
|
131
|
+
|
|
132
|
+
For Tailwind sites, add this to `src/app/globals.css`:
|
|
133
|
+
|
|
134
|
+
```css
|
|
135
|
+
@import "tailwindcss";
|
|
136
|
+
@import "@riverbankcms/sdk/preview-next/tailwind-sources.css";
|
|
137
|
+
@import "@riverbankcms/sdk/preview-next/chrome.css";
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
For non-Tailwind sites, use the legacy single import:
|
|
141
|
+
|
|
142
|
+
```css
|
|
143
|
+
@import "@riverbankcms/sdk/preview-next/styles.css";
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Environment Variables
|
|
147
|
+
|
|
148
|
+
For Vercel preview or any external preview host:
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
RIVERBANK_PREVIEW_MODE=true
|
|
152
|
+
RIVERBANK_ENV=remote
|
|
153
|
+
RIVERBANK_REMOTE_SITE_ID=...
|
|
154
|
+
RIVERBANK_REMOTE_DASHBOARD_URL=https://...
|
|
155
|
+
RIVERBANK_REMOTE_PREVIEW_API_KEY=bld_preview_sk_...
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Use a preview API key when `RIVERBANK_PREVIEW_MODE=true`; content/live keys cannot read draft content. Keep the management API key (`RIVERBANK_REMOTE_MGMT_API_KEY`) for CLI sync commands such as `push-config`, not for public rendering.
|
|
159
|
+
|
|
160
|
+
## Verification
|
|
161
|
+
|
|
162
|
+
1. Run `riverbankcms push-config --env=remote`.
|
|
163
|
+
2. Build the site with `RIVERBANK_PREVIEW_MODE=true`.
|
|
164
|
+
3. Open the dashboard preview button.
|
|
165
|
+
4. Confirm the URL starts at `previewUrl`.
|
|
166
|
+
5. Confirm the preview shell loads and editable content appears.
|
|
167
|
+
6. Confirm `/api/preview/keep-alive` returns without authentication errors during the session.
|