@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.
Files changed (82) hide show
  1. package/dist/_dts/api/src/contentTypes.d.ts +2 -1
  2. package/dist/_dts/block-form/src/client/index.d.ts +1 -1
  3. package/dist/_dts/block-form/src/fields/types.d.ts +14 -2
  4. package/dist/_dts/block-form/src/registry/schemas.d.ts +2 -0
  5. package/dist/_dts/block-form/src/widgets/MediaField/mediaFieldDefaults.d.ts +2 -2
  6. package/dist/_dts/block-form/src/widgets/MediaField/mediaFieldSchema.d.ts +2 -2
  7. package/dist/_dts/blocks/src/lib/media.d.ts +1 -1
  8. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +1829 -149
  9. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +1829 -149
  10. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +1829 -149
  11. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +1829 -149
  12. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +1829 -149
  13. package/dist/_dts/blocks/src/system/blocks/cta-full.d.ts +1 -30727
  14. package/dist/_dts/blocks/src/system/blocks/events/event-spotlight.d.ts +11 -30827
  15. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +1829 -149
  16. package/dist/_dts/blocks/src/system/blocks/file-download.d.ts +3 -3
  17. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +1829 -149
  18. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +106 -1
  19. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +1829 -149
  20. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +1829 -149
  21. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +1829 -149
  22. package/dist/_dts/blocks/src/system/defineBlock.d.ts +3 -3
  23. package/dist/_dts/blocks/src/system/fragments/library/card.d.ts +2 -30793
  24. package/dist/_dts/blocks/src/system/fragments/library/ctaRow.d.ts +2 -30727
  25. package/dist/_dts/blocks/src/system/fragments/library/feedbackCallout.d.ts +2 -30779
  26. package/dist/_dts/blocks/src/system/fragments/library/heroCtaRow.d.ts +33 -30743
  27. package/dist/_dts/blocks/src/system/fragments/library/sectionState.d.ts +2 -30770
  28. package/dist/_dts/blocks/src/system/fragments/types.d.ts +8 -7
  29. package/dist/_dts/blocks/src/system/manifest/derivedContent.d.ts +7 -5
  30. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +1 -1
  31. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +192 -3
  32. package/dist/_dts/blocks/src/system/runtime/nodes/file-download.d.ts +1 -1
  33. package/dist/_dts/content-model/src/content-types/schema.d.ts +7 -0
  34. package/dist/_dts/content-model/src/contentManifest.d.ts +4 -1
  35. package/dist/_dts/content-model/src/templates/bindingTypeCompatibility.d.ts +1 -1
  36. package/dist/_dts/core/src/index.d.ts +1 -1
  37. package/dist/_dts/core/src/planner.d.ts +4 -0
  38. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +53 -20
  39. package/dist/_dts/editor-blocks/src/index.d.ts +1 -1
  40. package/dist/_dts/editor-blocks/src/media/MediaField.d.ts +6 -5
  41. package/dist/_dts/media-core/src/videoSlotPolicy.d.ts +0 -1
  42. package/dist/_dts/media-editor/src/context.d.ts +4 -1
  43. package/dist/_dts/media-react/src/hooks/useApiMediaUploader.d.ts +8 -1
  44. package/dist/_dts/media-react/src/index.d.ts +1 -5
  45. package/dist/_dts/preview-next/src/client/sdk/SdkPreviewMode.d.ts +1 -0
  46. package/dist/_dts/preview-next/src/client/widgets/PreviewMediaField.d.ts +2 -1
  47. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +1 -0
  48. package/dist/_dts/sdk/src/config/field-definitions.d.ts +6 -2
  49. package/dist/_dts/sdk/src/config/typed-entries.d.ts +4 -2
  50. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +2 -1
  51. package/dist/_dts/sdk/src/manifest/prompt/examples/cta.d.ts +5 -5
  52. package/dist/_dts/sdk/src/manifest/prompt/examples/features-grid.d.ts +2 -2
  53. package/dist/_dts/sdk/src/manifest/prompt/examples/hero.d.ts +2 -2
  54. package/dist/_dts/sdk/src/manifest/prompt/examples/pricing.d.ts +10 -10
  55. package/dist/_dts/sdk/src/manifest/prompt/examples/testimonials.d.ts +4 -4
  56. package/dist/_dts/sdk/src/manifest/validation/output-schema.d.ts +11 -1
  57. package/dist/_dts/sdk/src/preview-next/client/index.d.ts +19 -1
  58. package/dist/_dts/sdk/src/public-api/contracts.d.ts +2 -1
  59. package/dist/_dts/sdk/src/version.d.ts +1 -1
  60. package/dist/cli/index.mjs +395 -190
  61. package/dist/cli/init-docs/content/workflow-preview-mode.md +167 -0
  62. package/dist/client/client.mjs +243 -203
  63. package/dist/client/hooks.mjs +172 -121
  64. package/dist/client/rendering/client.mjs +148 -112
  65. package/dist/client/rendering/islands.mjs +80 -31
  66. package/dist/client/rendering.mjs +242 -202
  67. package/dist/preview-next/client/index.mjs +60 -10
  68. package/dist/preview-next/client/runtime.mjs +408 -1141
  69. package/dist/server/components.mjs +219 -171
  70. package/dist/server/config-template-validation.mjs +31 -1
  71. package/dist/server/config-validation.mjs +172 -121
  72. package/dist/server/config.mjs +172 -121
  73. package/dist/server/data.mjs +172 -121
  74. package/dist/server/index.mjs +1 -1
  75. package/dist/server/next.mjs +220 -172
  76. package/dist/server/page-converter.mjs +379 -185
  77. package/dist/server/prebuild.mjs +1 -1
  78. package/dist/server/rendering/server.mjs +219 -171
  79. package/dist/server/rendering.mjs +219 -171
  80. package/dist/server/routing.mjs +175 -124
  81. package/dist/server/server.mjs +173 -122
  82. 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.