@riverbankcms/sdk 0.70.2 → 0.70.4

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