@delmaredigital/payload-puck 0.6.9 → 0.6.10
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 +14 -2
- package/dist/render/HybridPageRenderer.d.ts +18 -5
- package/dist/render/HybridPageRenderer.d.ts.map +1 -1
- package/dist/render/HybridPageRenderer.js +3 -3
- package/dist/render/HybridPageRenderer.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -223,9 +223,21 @@ When adding Puck to an existing Payload project:
|
|
|
223
223
|
|
|
224
224
|
Without step 3, Puck pages will render blank because your existing routes only look for legacy block fields like `layout` or `hero`.
|
|
225
225
|
|
|
226
|
-
**Option A: Hybrid Rendering (recommended
|
|
226
|
+
**Option A: Hybrid Rendering (recommended)**
|
|
227
227
|
|
|
228
|
-
Use `HybridPageRenderer` to
|
|
228
|
+
Use `HybridPageRenderer` to render Puck pages. For new projects, this is all you need:
|
|
229
|
+
|
|
230
|
+
```typescript
|
|
231
|
+
import { HybridPageRenderer } from '@delmaredigital/payload-puck/render'
|
|
232
|
+
import { baseConfig } from '@delmaredigital/payload-puck/config'
|
|
233
|
+
|
|
234
|
+
export default async function Page({ params }) {
|
|
235
|
+
const page = await getPage(params.slug)
|
|
236
|
+
return <HybridPageRenderer page={page} config={baseConfig} />
|
|
237
|
+
}
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
If you're migrating an existing site with legacy Payload blocks, provide a `legacyRenderer`:
|
|
229
241
|
|
|
230
242
|
```typescript
|
|
231
243
|
import { HybridPageRenderer } from '@delmaredigital/payload-puck/render'
|
|
@@ -2,10 +2,20 @@
|
|
|
2
2
|
* Hybrid Page Renderer
|
|
3
3
|
*
|
|
4
4
|
* Renders pages that can be either Puck-edited or legacy Payload block-based.
|
|
5
|
-
*
|
|
6
|
-
* backwards compatibility with legacy content.
|
|
5
|
+
* For new projects using only Puck, legacyRenderer is optional.
|
|
7
6
|
*
|
|
8
|
-
* @example
|
|
7
|
+
* @example New project (Puck-only)
|
|
8
|
+
* ```tsx
|
|
9
|
+
* import { HybridPageRenderer } from '@delmaredigital/payload-puck/render'
|
|
10
|
+
* import { puckConfig } from '@/puck/config'
|
|
11
|
+
*
|
|
12
|
+
* export async function PageRenderer({ slug }) {
|
|
13
|
+
* const page = await fetchPage(slug)
|
|
14
|
+
* return <HybridPageRenderer page={page} config={puckConfig} />
|
|
15
|
+
* }
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @example Migration (with legacy blocks)
|
|
9
19
|
* ```tsx
|
|
10
20
|
* import { HybridPageRenderer } from '@delmaredigital/payload-puck/render'
|
|
11
21
|
* import { puckConfig } from '@/puck/config'
|
|
@@ -67,6 +77,9 @@ export interface HybridPageRendererProps<TBlocks = unknown[]> extends Omit<PageR
|
|
|
67
77
|
* Render function for legacy Payload blocks.
|
|
68
78
|
* Called when editorVersion is 'legacy' or when puckData is not available.
|
|
69
79
|
*
|
|
80
|
+
* Optional for new projects that will only have Puck pages. If not provided
|
|
81
|
+
* and legacy blocks are encountered, the fallback will be rendered instead.
|
|
82
|
+
*
|
|
70
83
|
* Use the generic type parameter to get proper typing for your blocks:
|
|
71
84
|
* @example
|
|
72
85
|
* ```tsx
|
|
@@ -78,7 +91,7 @@ export interface HybridPageRendererProps<TBlocks = unknown[]> extends Omit<PageR
|
|
|
78
91
|
* @param blocks - The legacy blocks array from the page
|
|
79
92
|
* @returns React node to render
|
|
80
93
|
*/
|
|
81
|
-
legacyRenderer
|
|
94
|
+
legacyRenderer?: (blocks: TBlocks) => ReactNode;
|
|
82
95
|
/**
|
|
83
96
|
* Name of the field containing legacy blocks
|
|
84
97
|
* @default 'layout'
|
|
@@ -95,7 +108,7 @@ export interface HybridPageRendererProps<TBlocks = unknown[]> extends Omit<PageR
|
|
|
95
108
|
*
|
|
96
109
|
* Decision logic:
|
|
97
110
|
* 1. If editorVersion is 'puck' AND puckData has content → render with PageRenderer
|
|
98
|
-
* 2. If legacy blocks exist → render with legacyRenderer
|
|
111
|
+
* 2. If legacy blocks exist AND legacyRenderer is provided → render with legacyRenderer
|
|
99
112
|
* 3. Otherwise → render fallback
|
|
100
113
|
*/
|
|
101
114
|
export declare function HybridPageRenderer<TBlocks = unknown[]>({ page, legacyRenderer, legacyBlocksField, fallback, config, layouts, wrapper, className, }: HybridPageRendererProps<TBlocks>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HybridPageRenderer.d.ts","sourceRoot":"","sources":["../../src/render/HybridPageRenderer.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"HybridPageRenderer.d.ts","sourceRoot":"","sources":["../../src/render/HybridPageRenderer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,EAAwB,IAAI,IAAI,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC9E,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;IAEjC;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;IAE1B;;;OAGG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,uBAAuB,CAAC,OAAO,GAAG,OAAO,EAAE,CAC1D,SAAQ,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACvC;;OAEG;IACH,IAAI,EAAE,cAAc,CAAA;IAEpB;;;;;;;;;;;;;;;;;OAiBG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,SAAS,CAAA;IAE/C;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAG,OAAO,EAAE,EAAE,EACtD,IAAI,EACJ,cAAc,EACd,iBAA4B,EAC5B,QAA0C,EAC1C,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,GACV,EAAE,uBAAuB,CAAC,OAAO,CAAC,2CA8BlC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,GAAG,cAAc,CAwB1E"}
|
|
@@ -5,7 +5,7 @@ import { PageRenderer } from './PageRenderer';
|
|
|
5
5
|
*
|
|
6
6
|
* Decision logic:
|
|
7
7
|
* 1. If editorVersion is 'puck' AND puckData has content → render with PageRenderer
|
|
8
|
-
* 2. If legacy blocks exist → render with legacyRenderer
|
|
8
|
+
* 2. If legacy blocks exist AND legacyRenderer is provided → render with legacyRenderer
|
|
9
9
|
* 3. Otherwise → render fallback
|
|
10
10
|
*/
|
|
11
11
|
export function HybridPageRenderer({ page, legacyRenderer, legacyBlocksField = 'layout', fallback = _jsx("div", { children: "No content available" }), config, layouts, wrapper, className, }) {
|
|
@@ -19,8 +19,8 @@ export function HybridPageRenderer({ page, legacyRenderer, legacyBlocksField = '
|
|
|
19
19
|
if (page.editorVersion === 'puck' && hasPuckContent) {
|
|
20
20
|
return (_jsx(PageRenderer, { data: puckData, config: config, layouts: layouts, wrapper: wrapper, className: className }));
|
|
21
21
|
}
|
|
22
|
-
// Render legacy pages
|
|
23
|
-
if (hasLegacyContent) {
|
|
22
|
+
// Render legacy pages (only if legacyRenderer is provided)
|
|
23
|
+
if (hasLegacyContent && legacyRenderer) {
|
|
24
24
|
return _jsx(_Fragment, { children: legacyRenderer(legacyBlocks) });
|
|
25
25
|
}
|
|
26
26
|
// Fallback for empty pages
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HybridPageRenderer.js","sourceRoot":"","sources":["../../src/render/HybridPageRenderer.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"HybridPageRenderer.js","sourceRoot":"","sources":["../../src/render/HybridPageRenderer.tsx"],"names":[],"mappings":";AAwCA,OAAO,EAAE,YAAY,EAA0B,MAAM,gBAAgB,CAAA;AA4ErE;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAsB,EACtD,IAAI,EACJ,cAAc,EACd,iBAAiB,GAAG,QAAQ,EAC5B,QAAQ,GAAG,iDAA+B,EAC1C,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,GACwB;IACjC,yBAAyB;IACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAuC,CAAA;IAC7D,MAAM,cAAc,GAClB,QAAQ,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;IAErF,2BAA2B;IAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAwB,CAAA;IACnE,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,CAAA;IAE/E,oBAAoB;IACpB,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,IAAI,cAAc,EAAE,CAAC;QACpD,OAAO,CACL,KAAC,YAAY,IACX,IAAI,EAAE,QAAoB,EAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,GACpB,CACH,CAAA;IACH,CAAC;IAED,2DAA2D;IAC3D,IAAI,gBAAgB,IAAI,cAAc,EAAE,CAAC;QACvC,OAAO,4BAAG,cAAc,CAAC,YAAuB,CAAC,GAAI,CAAA;IACvD,CAAC;IAED,2BAA2B;IAC3B,OAAO,4BAAG,QAAQ,GAAI,CAAA;AACxB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAyB;IACxD,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAA;IAEjD,oCAAoC;IACpC,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QAC1D,IAAI,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CACb,2BAA2B,aAAa,6CAA6C,CACtF,CAAA;QACH,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAChD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,0CAA0C,OAAO,QAAQ,EAAE,CAAC,CAAA;QAC9E,CAAC;IACH,CAAC;IAED,OAAO;QACL,GAAG,IAAI;QACP,aAAa,EAAE,aAAgD;QAC/D,QAAQ,EAAE,QAAsC;KACjD,CAAA;AACH,CAAC"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.6.
|
|
1
|
+
export declare const VERSION = "0.6.10";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,WAAW,CAAA"}
|
package/dist/version.js
CHANGED
package/dist/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,MAAM,CAAC,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAA"}
|