@delmaredigital/payload-puck 0.1.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/LICENSE +73 -0
- package/README.md +1580 -0
- package/dist/AccordionClient.d.mts +24 -0
- package/dist/AccordionClient.d.ts +24 -0
- package/dist/AccordionClient.js +786 -0
- package/dist/AccordionClient.js.map +1 -0
- package/dist/AccordionClient.mjs +784 -0
- package/dist/AccordionClient.mjs.map +1 -0
- package/dist/AnimatedWrapper.d.mts +30 -0
- package/dist/AnimatedWrapper.d.ts +30 -0
- package/dist/AnimatedWrapper.js +379 -0
- package/dist/AnimatedWrapper.js.map +1 -0
- package/dist/AnimatedWrapper.mjs +377 -0
- package/dist/AnimatedWrapper.mjs.map +1 -0
- package/dist/admin/client.d.mts +108 -0
- package/dist/admin/client.d.ts +108 -0
- package/dist/admin/client.js +177 -0
- package/dist/admin/client.js.map +1 -0
- package/dist/admin/client.mjs +173 -0
- package/dist/admin/client.mjs.map +1 -0
- package/dist/admin/index.d.mts +157 -0
- package/dist/admin/index.d.ts +157 -0
- package/dist/admin/index.js +31 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/index.mjs +29 -0
- package/dist/admin/index.mjs.map +1 -0
- package/dist/api/index.d.mts +460 -0
- package/dist/api/index.d.ts +460 -0
- package/dist/api/index.js +588 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/index.mjs +578 -0
- package/dist/api/index.mjs.map +1 -0
- package/dist/components/index.css +339 -0
- package/dist/components/index.css.map +1 -0
- package/dist/components/index.d.mts +222 -0
- package/dist/components/index.d.ts +222 -0
- package/dist/components/index.js +9177 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/index.mjs +9130 -0
- package/dist/components/index.mjs.map +1 -0
- package/dist/config/config.editor.css +339 -0
- package/dist/config/config.editor.css.map +1 -0
- package/dist/config/config.editor.d.mts +153 -0
- package/dist/config/config.editor.d.ts +153 -0
- package/dist/config/config.editor.js +9400 -0
- package/dist/config/config.editor.js.map +1 -0
- package/dist/config/config.editor.mjs +9368 -0
- package/dist/config/config.editor.mjs.map +1 -0
- package/dist/config/index.d.mts +68 -0
- package/dist/config/index.d.ts +68 -0
- package/dist/config/index.js +2017 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/index.mjs +1991 -0
- package/dist/config/index.mjs.map +1 -0
- package/dist/editor/index.d.mts +784 -0
- package/dist/editor/index.d.ts +784 -0
- package/dist/editor/index.js +4517 -0
- package/dist/editor/index.js.map +1 -0
- package/dist/editor/index.mjs +4483 -0
- package/dist/editor/index.mjs.map +1 -0
- package/dist/fields/index.css +339 -0
- package/dist/fields/index.css.map +1 -0
- package/dist/fields/index.d.mts +600 -0
- package/dist/fields/index.d.ts +600 -0
- package/dist/fields/index.js +7739 -0
- package/dist/fields/index.js.map +1 -0
- package/dist/fields/index.mjs +7590 -0
- package/dist/fields/index.mjs.map +1 -0
- package/dist/index-CQu6SzDg.d.mts +327 -0
- package/dist/index-CoUQnyC3.d.ts +327 -0
- package/dist/index.d.mts +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +569 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +555 -0
- package/dist/index.mjs.map +1 -0
- package/dist/layouts/index.d.mts +96 -0
- package/dist/layouts/index.d.ts +96 -0
- package/dist/layouts/index.js +394 -0
- package/dist/layouts/index.js.map +1 -0
- package/dist/layouts/index.mjs +378 -0
- package/dist/layouts/index.mjs.map +1 -0
- package/dist/plugin/index.d.mts +289 -0
- package/dist/plugin/index.d.ts +289 -0
- package/dist/plugin/index.js +569 -0
- package/dist/plugin/index.js.map +1 -0
- package/dist/plugin/index.mjs +555 -0
- package/dist/plugin/index.mjs.map +1 -0
- package/dist/render/index.d.mts +109 -0
- package/dist/render/index.d.ts +109 -0
- package/dist/render/index.js +2146 -0
- package/dist/render/index.js.map +1 -0
- package/dist/render/index.mjs +2123 -0
- package/dist/render/index.mjs.map +1 -0
- package/dist/shared-DMAF1AcH.d.mts +545 -0
- package/dist/shared-DMAF1AcH.d.ts +545 -0
- package/dist/theme/index.d.mts +155 -0
- package/dist/theme/index.d.ts +155 -0
- package/dist/theme/index.js +201 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/index.mjs +186 -0
- package/dist/theme/index.mjs.map +1 -0
- package/dist/types-D7D3rZ1J.d.mts +116 -0
- package/dist/types-D7D3rZ1J.d.ts +116 -0
- package/dist/types-_6MvjyKv.d.mts +104 -0
- package/dist/types-_6MvjyKv.d.ts +104 -0
- package/dist/utils/index.d.mts +267 -0
- package/dist/utils/index.d.ts +267 -0
- package/dist/utils/index.js +426 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/index.mjs +412 -0
- package/dist/utils/index.mjs.map +1 -0
- package/dist/utils-DaRs9t0J.d.mts +85 -0
- package/dist/utils-gAvt0Vhw.d.ts +85 -0
- package/examples/README.md +240 -0
- package/examples/api/puck/pages/[id]/route.ts +64 -0
- package/examples/api/puck/pages/[id]/versions/route.ts +47 -0
- package/examples/api/puck/pages/route.ts +45 -0
- package/examples/app/(frontend)/page.tsx +94 -0
- package/examples/app/[...slug]/page.tsx +101 -0
- package/examples/app/pages/[id]/edit/page.tsx +148 -0
- package/examples/components/CustomBanner.tsx +368 -0
- package/examples/config/custom-config.ts +223 -0
- package/examples/config/payload.config.example.ts +64 -0
- package/examples/lib/puck-layouts.ts +258 -0
- package/examples/lib/puck-theme.ts +94 -0
- package/examples/styles/puck-theme.css +171 -0
- package/package.json +157 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { Data, Config } from '@measured/puck';
|
|
3
|
+
import { L as LayoutDefinition } from '../types-D7D3rZ1J.mjs';
|
|
4
|
+
import { ReactNode } from 'react';
|
|
5
|
+
|
|
6
|
+
interface PageRendererProps {
|
|
7
|
+
/**
|
|
8
|
+
* Puck data to render
|
|
9
|
+
*/
|
|
10
|
+
data: Data;
|
|
11
|
+
/**
|
|
12
|
+
* Puck configuration to use
|
|
13
|
+
* @default baseConfig
|
|
14
|
+
*/
|
|
15
|
+
config?: Config;
|
|
16
|
+
/**
|
|
17
|
+
* Optional wrapper component (takes precedence over layout)
|
|
18
|
+
*/
|
|
19
|
+
wrapper?: React.ComponentType<{
|
|
20
|
+
children: React.ReactNode;
|
|
21
|
+
}>;
|
|
22
|
+
/**
|
|
23
|
+
* Optional className for the wrapper
|
|
24
|
+
*/
|
|
25
|
+
className?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Available layouts for this page
|
|
28
|
+
* @default DEFAULT_LAYOUTS
|
|
29
|
+
*/
|
|
30
|
+
layouts?: LayoutDefinition[];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Renders a Puck page using the provided data and configuration
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```tsx
|
|
37
|
+
* import { PageRenderer } from '@delmaredigital/payload-puck/render'
|
|
38
|
+
* import { baseConfig } from '@delmaredigital/payload-puck/config'
|
|
39
|
+
* import { ThemeProvider } from '@delmaredigital/payload-puck/theme'
|
|
40
|
+
*
|
|
41
|
+
* export default async function Page({ params }) {
|
|
42
|
+
* const page = await getPage(params.slug)
|
|
43
|
+
*
|
|
44
|
+
* // Wrap with ThemeProvider if using theming
|
|
45
|
+
* return (
|
|
46
|
+
* <ThemeProvider theme={myTheme}>
|
|
47
|
+
* <PageRenderer data={page.puckData} config={baseConfig} />
|
|
48
|
+
* </ThemeProvider>
|
|
49
|
+
* )
|
|
50
|
+
* }
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
declare function PageRenderer({ data, config, wrapper: Wrapper, className, layouts, }: PageRendererProps): react_jsx_runtime.JSX.Element;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Page data shape for hybrid rendering
|
|
57
|
+
*/
|
|
58
|
+
interface HybridPageData {
|
|
59
|
+
/**
|
|
60
|
+
* Which editor was used to create the page
|
|
61
|
+
* - 'puck': Page was created/edited with Puck visual editor
|
|
62
|
+
* - 'legacy': Page uses traditional Payload block fields
|
|
63
|
+
*/
|
|
64
|
+
editorVersion?: 'legacy' | 'puck';
|
|
65
|
+
/**
|
|
66
|
+
* Puck editor data (for pages with editorVersion: 'puck')
|
|
67
|
+
*/
|
|
68
|
+
puckData?: Data | null;
|
|
69
|
+
/**
|
|
70
|
+
* Legacy blocks array (for pages with editorVersion: 'legacy')
|
|
71
|
+
* The field name varies by project (e.g., 'layout', 'blocks', 'content')
|
|
72
|
+
*/
|
|
73
|
+
[key: string]: unknown;
|
|
74
|
+
}
|
|
75
|
+
interface HybridPageRendererProps extends Omit<PageRendererProps, 'data'> {
|
|
76
|
+
/**
|
|
77
|
+
* Page document containing editorVersion, puckData, and optionally legacy blocks
|
|
78
|
+
*/
|
|
79
|
+
page: HybridPageData;
|
|
80
|
+
/**
|
|
81
|
+
* Render function for legacy Payload blocks.
|
|
82
|
+
* Called when editorVersion is 'legacy' or when puckData is not available.
|
|
83
|
+
*
|
|
84
|
+
* @param blocks - The legacy blocks array from the page
|
|
85
|
+
* @returns React node to render
|
|
86
|
+
*/
|
|
87
|
+
legacyRenderer: (blocks: unknown[]) => ReactNode;
|
|
88
|
+
/**
|
|
89
|
+
* Name of the field containing legacy blocks
|
|
90
|
+
* @default 'layout'
|
|
91
|
+
*/
|
|
92
|
+
legacyBlocksField?: string;
|
|
93
|
+
/**
|
|
94
|
+
* Fallback content when no content is available
|
|
95
|
+
* @default <div>No content available</div>
|
|
96
|
+
*/
|
|
97
|
+
fallback?: ReactNode;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Renders a page using either Puck or legacy Payload blocks
|
|
101
|
+
*
|
|
102
|
+
* Decision logic:
|
|
103
|
+
* 1. If editorVersion is 'puck' AND puckData has content → render with PageRenderer
|
|
104
|
+
* 2. If legacy blocks exist → render with legacyRenderer
|
|
105
|
+
* 3. Otherwise → render fallback
|
|
106
|
+
*/
|
|
107
|
+
declare function HybridPageRenderer({ page, legacyRenderer, legacyBlocksField, fallback, config, layouts, wrapper, className, }: HybridPageRendererProps): react_jsx_runtime.JSX.Element;
|
|
108
|
+
|
|
109
|
+
export { type HybridPageData, HybridPageRenderer, type HybridPageRendererProps, PageRenderer, type PageRendererProps };
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { Data, Config } from '@measured/puck';
|
|
3
|
+
import { L as LayoutDefinition } from '../types-D7D3rZ1J.js';
|
|
4
|
+
import { ReactNode } from 'react';
|
|
5
|
+
|
|
6
|
+
interface PageRendererProps {
|
|
7
|
+
/**
|
|
8
|
+
* Puck data to render
|
|
9
|
+
*/
|
|
10
|
+
data: Data;
|
|
11
|
+
/**
|
|
12
|
+
* Puck configuration to use
|
|
13
|
+
* @default baseConfig
|
|
14
|
+
*/
|
|
15
|
+
config?: Config;
|
|
16
|
+
/**
|
|
17
|
+
* Optional wrapper component (takes precedence over layout)
|
|
18
|
+
*/
|
|
19
|
+
wrapper?: React.ComponentType<{
|
|
20
|
+
children: React.ReactNode;
|
|
21
|
+
}>;
|
|
22
|
+
/**
|
|
23
|
+
* Optional className for the wrapper
|
|
24
|
+
*/
|
|
25
|
+
className?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Available layouts for this page
|
|
28
|
+
* @default DEFAULT_LAYOUTS
|
|
29
|
+
*/
|
|
30
|
+
layouts?: LayoutDefinition[];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Renders a Puck page using the provided data and configuration
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```tsx
|
|
37
|
+
* import { PageRenderer } from '@delmaredigital/payload-puck/render'
|
|
38
|
+
* import { baseConfig } from '@delmaredigital/payload-puck/config'
|
|
39
|
+
* import { ThemeProvider } from '@delmaredigital/payload-puck/theme'
|
|
40
|
+
*
|
|
41
|
+
* export default async function Page({ params }) {
|
|
42
|
+
* const page = await getPage(params.slug)
|
|
43
|
+
*
|
|
44
|
+
* // Wrap with ThemeProvider if using theming
|
|
45
|
+
* return (
|
|
46
|
+
* <ThemeProvider theme={myTheme}>
|
|
47
|
+
* <PageRenderer data={page.puckData} config={baseConfig} />
|
|
48
|
+
* </ThemeProvider>
|
|
49
|
+
* )
|
|
50
|
+
* }
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
declare function PageRenderer({ data, config, wrapper: Wrapper, className, layouts, }: PageRendererProps): react_jsx_runtime.JSX.Element;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Page data shape for hybrid rendering
|
|
57
|
+
*/
|
|
58
|
+
interface HybridPageData {
|
|
59
|
+
/**
|
|
60
|
+
* Which editor was used to create the page
|
|
61
|
+
* - 'puck': Page was created/edited with Puck visual editor
|
|
62
|
+
* - 'legacy': Page uses traditional Payload block fields
|
|
63
|
+
*/
|
|
64
|
+
editorVersion?: 'legacy' | 'puck';
|
|
65
|
+
/**
|
|
66
|
+
* Puck editor data (for pages with editorVersion: 'puck')
|
|
67
|
+
*/
|
|
68
|
+
puckData?: Data | null;
|
|
69
|
+
/**
|
|
70
|
+
* Legacy blocks array (for pages with editorVersion: 'legacy')
|
|
71
|
+
* The field name varies by project (e.g., 'layout', 'blocks', 'content')
|
|
72
|
+
*/
|
|
73
|
+
[key: string]: unknown;
|
|
74
|
+
}
|
|
75
|
+
interface HybridPageRendererProps extends Omit<PageRendererProps, 'data'> {
|
|
76
|
+
/**
|
|
77
|
+
* Page document containing editorVersion, puckData, and optionally legacy blocks
|
|
78
|
+
*/
|
|
79
|
+
page: HybridPageData;
|
|
80
|
+
/**
|
|
81
|
+
* Render function for legacy Payload blocks.
|
|
82
|
+
* Called when editorVersion is 'legacy' or when puckData is not available.
|
|
83
|
+
*
|
|
84
|
+
* @param blocks - The legacy blocks array from the page
|
|
85
|
+
* @returns React node to render
|
|
86
|
+
*/
|
|
87
|
+
legacyRenderer: (blocks: unknown[]) => ReactNode;
|
|
88
|
+
/**
|
|
89
|
+
* Name of the field containing legacy blocks
|
|
90
|
+
* @default 'layout'
|
|
91
|
+
*/
|
|
92
|
+
legacyBlocksField?: string;
|
|
93
|
+
/**
|
|
94
|
+
* Fallback content when no content is available
|
|
95
|
+
* @default <div>No content available</div>
|
|
96
|
+
*/
|
|
97
|
+
fallback?: ReactNode;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Renders a page using either Puck or legacy Payload blocks
|
|
101
|
+
*
|
|
102
|
+
* Decision logic:
|
|
103
|
+
* 1. If editorVersion is 'puck' AND puckData has content → render with PageRenderer
|
|
104
|
+
* 2. If legacy blocks exist → render with legacyRenderer
|
|
105
|
+
* 3. Otherwise → render fallback
|
|
106
|
+
*/
|
|
107
|
+
declare function HybridPageRenderer({ page, legacyRenderer, legacyBlocksField, fallback, config, layouts, wrapper, className, }: HybridPageRendererProps): react_jsx_runtime.JSX.Element;
|
|
108
|
+
|
|
109
|
+
export { type HybridPageData, HybridPageRenderer, type HybridPageRendererProps, PageRenderer, type PageRendererProps };
|