@delmaredigital/payload-puck 0.6.12 → 0.6.13
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 +50 -1
- package/dist/admin/EditWithPuckButton.d.ts +1 -1
- package/dist/admin/EditWithPuckButton.d.ts.map +1 -1
- package/dist/admin/EditWithPuckButton.js +65 -25
- package/dist/admin/EditWithPuckButton.js.map +1 -1
- package/dist/admin/EditWithPuckCell.js +43 -13
- package/dist/admin/EditWithPuckCell.js.map +1 -1
- package/dist/admin/PuckEditorView.d.ts +1 -1
- package/dist/admin/PuckEditorView.d.ts.map +1 -1
- package/dist/admin/PuckEditorView.js +118 -32
- package/dist/admin/PuckEditorView.js.map +1 -1
- package/dist/admin/client.d.ts +2 -2
- package/dist/admin/client.d.ts.map +1 -1
- package/dist/admin/client.js +4 -4
- package/dist/admin/client.js.map +1 -1
- package/dist/admin/generateAdminComponents.js +7 -7
- package/dist/admin/generateAdminComponents.js.map +1 -1
- package/dist/admin/index.d.ts +5 -5
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +3 -2
- package/dist/admin/index.js.map +1 -1
- package/dist/ai/collections/AiContext.js +56 -29
- package/dist/ai/collections/AiContext.js.map +1 -1
- package/dist/ai/collections/AiPrompts.js +24 -19
- package/dist/ai/collections/AiPrompts.js.map +1 -1
- package/dist/ai/createAiApiRoutes.js +28 -19
- package/dist/ai/createAiApiRoutes.js.map +1 -1
- package/dist/ai/createAiGenerate.js +7 -8
- package/dist/ai/createAiGenerate.js.map +1 -1
- package/dist/ai/createAiPlugin.js +7 -9
- package/dist/ai/createAiPlugin.js.map +1 -1
- package/dist/ai/hooks/useAiContext.js +50 -39
- package/dist/ai/hooks/useAiContext.js.map +1 -1
- package/dist/ai/hooks/useAiPrompts.js +33 -25
- package/dist/ai/hooks/useAiPrompts.js.map +1 -1
- package/dist/ai/index.js +9 -10
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/plugins/ContextEditorPanel.d.ts +1 -1
- package/dist/ai/plugins/ContextEditorPanel.d.ts.map +1 -1
- package/dist/ai/plugins/ContextEditorPanel.js +399 -107
- package/dist/ai/plugins/ContextEditorPanel.js.map +1 -1
- package/dist/ai/plugins/PromptEditorPanel.d.ts +1 -1
- package/dist/ai/plugins/PromptEditorPanel.d.ts.map +1 -1
- package/dist/ai/plugins/PromptEditorPanel.js +237 -51
- package/dist/ai/plugins/PromptEditorPanel.js.map +1 -1
- package/dist/ai/plugins/contextEditorPlugin.js +12 -5
- package/dist/ai/plugins/contextEditorPlugin.js.map +1 -1
- package/dist/ai/plugins/promptApiRoutes.js +119 -50
- package/dist/ai/plugins/promptApiRoutes.js.map +1 -1
- package/dist/ai/plugins/promptEditorPlugin.js +12 -5
- package/dist/ai/plugins/promptEditorPlugin.js.map +1 -1
- package/dist/ai/presets/componentAiDefaults.js +108 -83
- package/dist/ai/presets/componentAiDefaults.js.map +1 -1
- package/dist/ai/presets/index.js +12 -18
- package/dist/ai/presets/index.js.map +1 -1
- package/dist/ai/presets/instructions/interactive.js +85 -75
- package/dist/ai/presets/instructions/interactive.js.map +1 -1
- package/dist/ai/presets/instructions/layout.js +122 -117
- package/dist/ai/presets/instructions/layout.js.map +1 -1
- package/dist/ai/presets/instructions/media.js +31 -29
- package/dist/ai/presets/instructions/media.js.map +1 -1
- package/dist/ai/presets/instructions/pagePatterns.js +4 -6
- package/dist/ai/presets/instructions/pagePatterns.js.map +1 -1
- package/dist/ai/presets/instructions/schemas.js +495 -137
- package/dist/ai/presets/instructions/schemas.js.map +1 -1
- package/dist/ai/presets/instructions/typography.js +38 -33
- package/dist/ai/presets/instructions/typography.js.map +1 -1
- package/dist/ai/tools/index.js +92 -55
- package/dist/ai/tools/index.js.map +1 -1
- package/dist/ai/types.js +7 -1
- package/dist/ai/types.js.map +1 -1
- package/dist/ai/utils/injectAiConfig.js +33 -40
- package/dist/ai/utils/injectAiConfig.js.map +1 -1
- package/dist/api/createPuckApiRoutes.d.ts +1 -1
- package/dist/api/createPuckApiRoutes.d.ts.map +1 -1
- package/dist/api/createPuckApiRoutes.js +123 -65
- package/dist/api/createPuckApiRoutes.js.map +1 -1
- package/dist/api/createPuckApiRoutesVersions.d.ts +1 -1
- package/dist/api/createPuckApiRoutesVersions.d.ts.map +1 -1
- package/dist/api/createPuckApiRoutesVersions.js +88 -37
- package/dist/api/createPuckApiRoutesVersions.js.map +1 -1
- package/dist/api/createPuckApiRoutesWithId.d.ts +1 -1
- package/dist/api/createPuckApiRoutesWithId.d.ts.map +1 -1
- package/dist/api/createPuckApiRoutesWithId.js +166 -72
- package/dist/api/createPuckApiRoutesWithId.js.map +1 -1
- package/dist/api/index.d.ts +5 -5
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +6 -6
- package/dist/api/index.js.map +1 -1
- package/dist/api/payload-config.d.js +15 -0
- package/dist/api/payload-config.d.js.map +1 -0
- package/dist/api/types.js +4 -1
- package/dist/api/types.js.map +1 -1
- package/dist/api/utils/mapRootProps.d.ts +1 -1
- package/dist/api/utils/mapRootProps.d.ts.map +1 -1
- package/dist/api/utils/mapRootProps.js +77 -44
- package/dist/api/utils/mapRootProps.js.map +1 -1
- package/dist/collections/Templates.js +24 -20
- package/dist/collections/Templates.js.map +1 -1
- package/dist/components/AccordionClient.d.ts +2 -2
- package/dist/components/AccordionClient.d.ts.map +1 -1
- package/dist/components/AccordionClient.js +81 -22
- package/dist/components/AccordionClient.js.map +1 -1
- package/dist/components/AnimatedWrapper.d.ts +2 -2
- package/dist/components/AnimatedWrapper.d.ts.map +1 -1
- package/dist/components/AnimatedWrapper.js +31 -16
- package/dist/components/AnimatedWrapper.js.map +1 -1
- package/dist/components/exports.js +2 -2
- package/dist/components/exports.js.map +1 -1
- package/dist/components/index.d.ts +5 -5
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +7 -7
- package/dist/components/index.js.map +1 -1
- package/dist/components/interactive/Accordion.d.ts +1 -1
- package/dist/components/interactive/Accordion.d.ts.map +1 -1
- package/dist/components/interactive/Accordion.js +149 -55
- package/dist/components/interactive/Accordion.js.map +1 -1
- package/dist/components/interactive/Accordion.server.d.ts +1 -1
- package/dist/components/interactive/Accordion.server.d.ts.map +1 -1
- package/dist/components/interactive/Accordion.server.js +25 -7
- package/dist/components/interactive/Accordion.server.js.map +1 -1
- package/dist/components/interactive/Button.d.ts +3 -3
- package/dist/components/interactive/Button.d.ts.map +1 -1
- package/dist/components/interactive/Button.js +89 -43
- package/dist/components/interactive/Button.js.map +1 -1
- package/dist/components/interactive/Button.server.d.ts +2 -2
- package/dist/components/interactive/Button.server.d.ts.map +1 -1
- package/dist/components/interactive/Button.server.js +40 -20
- package/dist/components/interactive/Button.server.js.map +1 -1
- package/dist/components/interactive/Card.d.ts +3 -3
- package/dist/components/interactive/Card.d.ts.map +1 -1
- package/dist/components/interactive/Card.js +131 -39
- package/dist/components/interactive/Card.js.map +1 -1
- package/dist/components/interactive/Card.server.d.ts +3 -3
- package/dist/components/interactive/Card.server.d.ts.map +1 -1
- package/dist/components/interactive/Card.server.js +72 -11
- package/dist/components/interactive/Card.server.js.map +1 -1
- package/dist/components/interactive/Divider.d.ts +1 -1
- package/dist/components/interactive/Divider.d.ts.map +1 -1
- package/dist/components/interactive/Divider.js +54 -26
- package/dist/components/interactive/Divider.js.map +1 -1
- package/dist/components/interactive/Divider.server.d.ts +1 -1
- package/dist/components/interactive/Divider.server.d.ts.map +1 -1
- package/dist/components/interactive/Divider.server.js +28 -12
- package/dist/components/interactive/Divider.server.js.map +1 -1
- package/dist/components/interactive/index.d.ts +4 -4
- package/dist/components/interactive/index.d.ts.map +1 -1
- package/dist/components/interactive/index.js +5 -5
- package/dist/components/interactive/index.js.map +1 -1
- package/dist/components/layout/Container.d.ts +1 -1
- package/dist/components/layout/Container.d.ts.map +1 -1
- package/dist/components/layout/Container.js +101 -47
- package/dist/components/layout/Container.js.map +1 -1
- package/dist/components/layout/Container.server.d.ts +1 -1
- package/dist/components/layout/Container.server.d.ts.map +1 -1
- package/dist/components/layout/Container.server.js +67 -19
- package/dist/components/layout/Container.server.js.map +1 -1
- package/dist/components/layout/Flex.d.ts +2 -2
- package/dist/components/layout/Flex.d.ts.map +1 -1
- package/dist/components/layout/Flex.js +124 -55
- package/dist/components/layout/Flex.js.map +1 -1
- package/dist/components/layout/Flex.server.d.ts +1 -1
- package/dist/components/layout/Flex.server.d.ts.map +1 -1
- package/dist/components/layout/Flex.server.js +50 -14
- package/dist/components/layout/Flex.server.js.map +1 -1
- package/dist/components/layout/Grid.d.ts +1 -1
- package/dist/components/layout/Grid.d.ts.map +1 -1
- package/dist/components/layout/Grid.js +93 -44
- package/dist/components/layout/Grid.js.map +1 -1
- package/dist/components/layout/Grid.server.d.ts +1 -1
- package/dist/components/layout/Grid.server.d.ts.map +1 -1
- package/dist/components/layout/Grid.server.js +56 -14
- package/dist/components/layout/Grid.server.js.map +1 -1
- package/dist/components/layout/Section.d.ts +1 -1
- package/dist/components/layout/Section.d.ts.map +1 -1
- package/dist/components/layout/Section.js +147 -64
- package/dist/components/layout/Section.js.map +1 -1
- package/dist/components/layout/Section.server.d.ts +1 -1
- package/dist/components/layout/Section.server.d.ts.map +1 -1
- package/dist/components/layout/Section.server.js +92 -28
- package/dist/components/layout/Section.server.js.map +1 -1
- package/dist/components/layout/Spacer.d.ts +1 -1
- package/dist/components/layout/Spacer.d.ts.map +1 -1
- package/dist/components/layout/Spacer.js +80 -30
- package/dist/components/layout/Spacer.js.map +1 -1
- package/dist/components/layout/Spacer.server.d.ts +1 -1
- package/dist/components/layout/Spacer.server.d.ts.map +1 -1
- package/dist/components/layout/Spacer.server.js +31 -9
- package/dist/components/layout/Spacer.server.js.map +1 -1
- package/dist/components/layout/Template.d.ts +1 -1
- package/dist/components/layout/Template.d.ts.map +1 -1
- package/dist/components/layout/Template.js +58 -30
- package/dist/components/layout/Template.js.map +1 -1
- package/dist/components/layout/Template.server.d.ts +1 -1
- package/dist/components/layout/Template.server.d.ts.map +1 -1
- package/dist/components/layout/Template.server.js +43 -11
- package/dist/components/layout/Template.server.js.map +1 -1
- package/dist/components/layout/index.d.ts +8 -8
- package/dist/components/layout/index.d.ts.map +1 -1
- package/dist/components/layout/index.js +8 -8
- package/dist/components/layout/index.js.map +1 -1
- package/dist/components/media/Image.d.ts +3 -3
- package/dist/components/media/Image.d.ts.map +1 -1
- package/dist/components/media/Image.js +122 -39
- package/dist/components/media/Image.js.map +1 -1
- package/dist/components/media/Image.server.d.ts +3 -3
- package/dist/components/media/Image.server.d.ts.map +1 -1
- package/dist/components/media/Image.server.js +76 -13
- package/dist/components/media/Image.server.js.map +1 -1
- package/dist/components/media/index.d.ts +1 -1
- package/dist/components/media/index.d.ts.map +1 -1
- package/dist/components/media/index.js +2 -2
- package/dist/components/media/index.js.map +1 -1
- package/dist/components/typography/Heading.d.ts +2 -2
- package/dist/components/typography/Heading.d.ts.map +1 -1
- package/dist/components/typography/Heading.js +45 -25
- package/dist/components/typography/Heading.js.map +1 -1
- package/dist/components/typography/Heading.server.d.ts +2 -2
- package/dist/components/typography/Heading.server.d.ts.map +1 -1
- package/dist/components/typography/Heading.server.js +16 -10
- package/dist/components/typography/Heading.server.js.map +1 -1
- package/dist/components/typography/RichText.editor.d.ts +1 -1
- package/dist/components/typography/RichText.editor.d.ts.map +1 -1
- package/dist/components/typography/RichText.editor.js +44 -19
- package/dist/components/typography/RichText.editor.js.map +1 -1
- package/dist/components/typography/RichText.server.d.ts +2 -2
- package/dist/components/typography/RichText.server.d.ts.map +1 -1
- package/dist/components/typography/RichText.server.js +33 -14
- package/dist/components/typography/RichText.server.js.map +1 -1
- package/dist/components/typography/Text.d.ts +2 -2
- package/dist/components/typography/Text.d.ts.map +1 -1
- package/dist/components/typography/Text.js +49 -23
- package/dist/components/typography/Text.js.map +1 -1
- package/dist/components/typography/Text.server.d.ts +2 -2
- package/dist/components/typography/Text.server.d.ts.map +1 -1
- package/dist/components/typography/Text.server.js +21 -8
- package/dist/components/typography/Text.server.js.map +1 -1
- package/dist/components/typography/index.d.ts +4 -4
- package/dist/components/typography/index.d.ts.map +1 -1
- package/dist/components/typography/index.js +5 -5
- package/dist/components/typography/index.js.map +1 -1
- package/dist/config/config.editor.d.ts +3 -3
- package/dist/config/config.editor.d.ts.map +1 -1
- package/dist/config/config.editor.js +119 -54
- package/dist/config/config.editor.js.map +1 -1
- package/dist/config/index.d.ts +4 -4
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +62 -35
- package/dist/config/index.js.map +1 -1
- package/dist/config/merge.d.ts +1 -1
- package/dist/config/merge.d.ts.map +1 -1
- package/dist/config/merge.js +23 -26
- package/dist/config/merge.js.map +1 -1
- package/dist/config/presets.d.ts +4 -4
- package/dist/config/presets.js +195 -75
- package/dist/config/presets.js.map +1 -1
- package/dist/config/types.js +6 -2
- package/dist/config/types.js.map +1 -1
- package/dist/editor/PuckEditor.d.ts +4 -4
- package/dist/editor/PuckEditor.d.ts.map +1 -1
- package/dist/editor/PuckEditor.js +162 -70
- package/dist/editor/PuckEditor.js.map +1 -1
- package/dist/editor/PuckEditorImpl.client.d.ts +4 -4
- package/dist/editor/PuckEditorImpl.client.d.ts.map +1 -1
- package/dist/editor/PuckEditorImpl.client.js +304 -152
- package/dist/editor/PuckEditorImpl.client.js.map +1 -1
- package/dist/editor/components/DarkModeStyles.js +11 -12
- package/dist/editor/components/DarkModeStyles.js.map +1 -1
- package/dist/editor/components/HeaderActions.js +308 -64
- package/dist/editor/components/HeaderActions.js.map +1 -1
- package/dist/editor/components/IframeWrapper.d.ts +1 -1
- package/dist/editor/components/IframeWrapper.d.ts.map +1 -1
- package/dist/editor/components/IframeWrapper.js +82 -58
- package/dist/editor/components/IframeWrapper.js.map +1 -1
- package/dist/editor/components/LoadingState.d.ts +1 -1
- package/dist/editor/components/LoadingState.d.ts.map +1 -1
- package/dist/editor/components/LoadingState.js +17 -3
- package/dist/editor/components/LoadingState.js.map +1 -1
- package/dist/editor/components/PreviewModal.js +234 -78
- package/dist/editor/components/PreviewModal.js.map +1 -1
- package/dist/editor/components/PreviewModeToggle.js +43 -15
- package/dist/editor/components/PreviewModeToggle.js.map +1 -1
- package/dist/editor/components/VersionHistory.js +219 -71
- package/dist/editor/components/VersionHistory.js.map +1 -1
- package/dist/editor/hooks/useDarkMode.js +36 -23
- package/dist/editor/hooks/useDarkMode.js.map +1 -1
- package/dist/editor/hooks/useUnsavedChanges.js +8 -8
- package/dist/editor/hooks/useUnsavedChanges.js.map +1 -1
- package/dist/editor/index.js +5 -6
- package/dist/editor/index.js.map +1 -1
- package/dist/editor/plugins/VersionHistoryPanel.js +236 -75
- package/dist/editor/plugins/VersionHistoryPanel.js.map +1 -1
- package/dist/editor/plugins/index.js +4 -4
- package/dist/editor/plugins/index.js.map +1 -1
- package/dist/editor/plugins/versionHistoryPlugin.js +10 -8
- package/dist/editor/plugins/versionHistoryPlugin.js.map +1 -1
- package/dist/editor/utils/detectPageTree.js +5 -5
- package/dist/editor/utils/detectPageTree.js.map +1 -1
- package/dist/editor/utils/index.js +1 -0
- package/dist/editor/utils/index.js.map +1 -1
- package/dist/editor/utils/injectPageTreeFields.js +13 -9
- package/dist/editor/utils/injectPageTreeFields.js.map +1 -1
- package/dist/endpoints/ai.js +58 -34
- package/dist/endpoints/ai.js.map +1 -1
- package/dist/endpoints/context.js +86 -40
- package/dist/endpoints/context.js.map +1 -1
- package/dist/endpoints/index.js +153 -76
- package/dist/endpoints/index.js.map +1 -1
- package/dist/endpoints/postcss.d.js +5 -0
- package/dist/endpoints/postcss.d.js.map +1 -0
- package/dist/endpoints/prompts.js +81 -39
- package/dist/endpoints/prompts.js.map +1 -1
- package/dist/endpoints/styles.js +34 -36
- package/dist/endpoints/styles.js.map +1 -1
- package/dist/exports/client.js +2 -2
- package/dist/exports/client.js.map +1 -1
- package/dist/exports/rsc.js +2 -2
- package/dist/exports/rsc.js.map +1 -1
- package/dist/fields/AlignmentField.d.ts +1 -1
- package/dist/fields/AlignmentField.d.ts.map +1 -1
- package/dist/fields/AlignmentField.js +93 -30
- package/dist/fields/AlignmentField.js.map +1 -1
- package/dist/fields/AnimationField.d.ts +2 -2
- package/dist/fields/AnimationField.d.ts.map +1 -1
- package/dist/fields/AnimationField.js +558 -84
- package/dist/fields/AnimationField.js.map +1 -1
- package/dist/fields/BackgroundField.d.ts +2 -2
- package/dist/fields/BackgroundField.d.ts.map +1 -1
- package/dist/fields/BackgroundField.js +754 -120
- package/dist/fields/BackgroundField.js.map +1 -1
- package/dist/fields/BorderField.d.ts +2 -2
- package/dist/fields/BorderField.d.ts.map +1 -1
- package/dist/fields/BorderField.js +275 -73
- package/dist/fields/BorderField.js.map +1 -1
- package/dist/fields/ColorPickerField.d.ts +2 -2
- package/dist/fields/ColorPickerField.d.ts.map +1 -1
- package/dist/fields/ColorPickerField.js +210 -68
- package/dist/fields/ColorPickerField.js.map +1 -1
- package/dist/fields/ContentAlignmentField.d.ts +1 -1
- package/dist/fields/ContentAlignmentField.d.ts.map +1 -1
- package/dist/fields/ContentAlignmentField.js +161 -75
- package/dist/fields/ContentAlignmentField.js.map +1 -1
- package/dist/fields/DimensionsField.d.ts +2 -2
- package/dist/fields/DimensionsField.d.ts.map +1 -1
- package/dist/fields/DimensionsField.js +575 -146
- package/dist/fields/DimensionsField.js.map +1 -1
- package/dist/fields/FlexAlignmentField.d.ts +2 -2
- package/dist/fields/FlexAlignmentField.d.ts.map +1 -1
- package/dist/fields/FlexAlignmentField.js +189 -51
- package/dist/fields/FlexAlignmentField.js.map +1 -1
- package/dist/fields/FolderPickerField.d.ts +8 -1
- package/dist/fields/FolderPickerField.d.ts.map +1 -1
- package/dist/fields/FolderPickerField.js +288 -75
- package/dist/fields/FolderPickerField.js.map +1 -1
- package/dist/fields/GradientEditor.d.ts +2 -2
- package/dist/fields/GradientEditor.d.ts.map +1 -1
- package/dist/fields/GradientEditor.js +462 -86
- package/dist/fields/GradientEditor.js.map +1 -1
- package/dist/fields/LockedField.d.ts +15 -2
- package/dist/fields/LockedField.d.ts.map +1 -1
- package/dist/fields/LockedField.js +180 -49
- package/dist/fields/LockedField.js.map +1 -1
- package/dist/fields/MarginField.d.ts +2 -2
- package/dist/fields/MarginField.d.ts.map +1 -1
- package/dist/fields/MarginField.js +144 -46
- package/dist/fields/MarginField.js.map +1 -1
- package/dist/fields/MediaField.d.ts +1 -1
- package/dist/fields/MediaField.d.ts.map +1 -1
- package/dist/fields/MediaField.js +688 -186
- package/dist/fields/MediaField.js.map +1 -1
- package/dist/fields/PaddingField.d.ts +2 -2
- package/dist/fields/PaddingField.d.ts.map +1 -1
- package/dist/fields/PaddingField.js +144 -46
- package/dist/fields/PaddingField.js.map +1 -1
- package/dist/fields/PageSegmentField.d.ts +15 -2
- package/dist/fields/PageSegmentField.d.ts.map +1 -1
- package/dist/fields/PageSegmentField.js +156 -54
- package/dist/fields/PageSegmentField.js.map +1 -1
- package/dist/fields/ResetField.d.ts +1 -1
- package/dist/fields/ResetField.d.ts.map +1 -1
- package/dist/fields/ResetField.js +59 -31
- package/dist/fields/ResetField.js.map +1 -1
- package/dist/fields/ResponsiveField.d.ts +1 -1
- package/dist/fields/ResponsiveField.d.ts.map +1 -1
- package/dist/fields/ResponsiveField.js +233 -90
- package/dist/fields/ResponsiveField.js.map +1 -1
- package/dist/fields/ResponsiveVisibilityField.d.ts +2 -2
- package/dist/fields/ResponsiveVisibilityField.d.ts.map +1 -1
- package/dist/fields/ResponsiveVisibilityField.js +119 -36
- package/dist/fields/ResponsiveVisibilityField.js.map +1 -1
- package/dist/fields/SizeField.d.ts +3 -3
- package/dist/fields/SizeField.d.ts.map +1 -1
- package/dist/fields/SizeField.js +226 -52
- package/dist/fields/SizeField.js.map +1 -1
- package/dist/fields/SlugPreviewField.d.ts +8 -1
- package/dist/fields/SlugPreviewField.d.ts.map +1 -1
- package/dist/fields/SlugPreviewField.js +65 -16
- package/dist/fields/SlugPreviewField.js.map +1 -1
- package/dist/fields/TemplateField.d.ts +1 -1
- package/dist/fields/TemplateField.d.ts.map +1 -1
- package/dist/fields/TemplateField.js +362 -120
- package/dist/fields/TemplateField.js.map +1 -1
- package/dist/fields/TransformField.d.ts +2 -2
- package/dist/fields/TransformField.d.ts.map +1 -1
- package/dist/fields/TransformField.js +517 -81
- package/dist/fields/TransformField.js.map +1 -1
- package/dist/fields/VerticalAlignmentField.d.ts +1 -1
- package/dist/fields/VerticalAlignmentField.d.ts.map +1 -1
- package/dist/fields/VerticalAlignmentField.js +93 -30
- package/dist/fields/VerticalAlignmentField.js.map +1 -1
- package/dist/fields/WidthField.d.ts +2 -2
- package/dist/fields/WidthField.d.ts.map +1 -1
- package/dist/fields/WidthField.js +278 -81
- package/dist/fields/WidthField.js.map +1 -1
- package/dist/fields/index.d.ts +41 -41
- package/dist/fields/index.d.ts.map +1 -1
- package/dist/fields/index.js +37 -43
- package/dist/fields/index.js.map +1 -1
- package/dist/fields/richtext/controls/ColorPickerControl.d.ts +13 -2
- package/dist/fields/richtext/controls/ColorPickerControl.d.ts.map +1 -1
- package/dist/fields/richtext/controls/ColorPickerControl.js +212 -47
- package/dist/fields/richtext/controls/ColorPickerControl.js.map +1 -1
- package/dist/fields/richtext/controls/DropdownPortal.d.ts +2 -2
- package/dist/fields/richtext/controls/DropdownPortal.d.ts.map +1 -1
- package/dist/fields/richtext/controls/DropdownPortal.js +36 -4
- package/dist/fields/richtext/controls/DropdownPortal.js.map +1 -1
- package/dist/fields/richtext/controls/FontSizeControl.d.ts +9 -1
- package/dist/fields/richtext/controls/FontSizeControl.d.ts.map +1 -1
- package/dist/fields/richtext/controls/FontSizeControl.js +109 -24
- package/dist/fields/richtext/controls/FontSizeControl.js.map +1 -1
- package/dist/fields/richtext/controls/HighlightControl.d.ts +12 -1
- package/dist/fields/richtext/controls/HighlightControl.d.ts.map +1 -1
- package/dist/fields/richtext/controls/HighlightControl.js +54 -17
- package/dist/fields/richtext/controls/HighlightControl.js.map +1 -1
- package/dist/fields/richtext/controls/index.d.ts +5 -5
- package/dist/fields/richtext/controls/index.d.ts.map +1 -1
- package/dist/fields/richtext/controls/index.js +8 -11
- package/dist/fields/richtext/controls/index.js.map +1 -1
- package/dist/fields/richtext/controls/shared.js +108 -63
- package/dist/fields/richtext/controls/shared.js.map +1 -1
- package/dist/fields/richtext/createRichTextField.d.ts +18 -4
- package/dist/fields/richtext/createRichTextField.d.ts.map +1 -1
- package/dist/fields/richtext/createRichTextField.js +113 -26
- package/dist/fields/richtext/createRichTextField.js.map +1 -1
- package/dist/fields/richtext/extensions/FontSize.js +26 -20
- package/dist/fields/richtext/extensions/FontSize.js.map +1 -1
- package/dist/fields/richtext/extensions/index.d.ts +1 -1
- package/dist/fields/richtext/extensions/index.d.ts.map +1 -1
- package/dist/fields/richtext/extensions/index.js +2 -2
- package/dist/fields/richtext/extensions/index.js.map +1 -1
- package/dist/fields/richtext/index.d.ts +6 -6
- package/dist/fields/richtext/index.d.ts.map +1 -1
- package/dist/fields/richtext/index.js +8 -8
- package/dist/fields/richtext/index.js.map +1 -1
- package/dist/fields/shared.d.ts +1 -1
- package/dist/fields/shared.d.ts.map +1 -1
- package/dist/fields/shared.js +915 -478
- package/dist/fields/shared.js.map +1 -1
- package/dist/hooks/index.d.ts +2 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +3 -3
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useResponsiveStyles.d.ts +1 -1
- package/dist/hooks/useResponsiveStyles.d.ts.map +1 -1
- package/dist/hooks/useResponsiveStyles.js +36 -32
- package/dist/hooks/useResponsiveStyles.js.map +1 -1
- package/dist/hooks/useScrollAnimation.js +26 -24
- package/dist/hooks/useScrollAnimation.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/layouts/LayoutWrapper.d.ts +3 -3
- package/dist/layouts/LayoutWrapper.d.ts.map +1 -1
- package/dist/layouts/LayoutWrapper.js +115 -51
- package/dist/layouts/LayoutWrapper.js.map +1 -1
- package/dist/layouts/defaults.d.ts +1 -1
- package/dist/layouts/defaults.d.ts.map +1 -1
- package/dist/layouts/defaults.js +23 -31
- package/dist/layouts/defaults.js.map +1 -1
- package/dist/layouts/index.d.ts +4 -4
- package/dist/layouts/index.d.ts.map +1 -1
- package/dist/layouts/index.js +5 -4
- package/dist/layouts/index.js.map +1 -1
- package/dist/layouts/types.js +4 -2
- package/dist/layouts/types.js.map +1 -1
- package/dist/layouts/utils.d.ts +1 -1
- package/dist/layouts/utils.d.ts.map +1 -1
- package/dist/layouts/utils.js +32 -40
- package/dist/layouts/utils.js.map +1 -1
- package/dist/next/index.js +31 -34
- package/dist/next/index.js.map +1 -1
- package/dist/plugin/collections/Pages.d.ts +2 -2
- package/dist/plugin/collections/Pages.d.ts.map +1 -1
- package/dist/plugin/collections/Pages.js +46 -43
- package/dist/plugin/collections/Pages.js.map +1 -1
- package/dist/plugin/fields/index.d.ts +3 -3
- package/dist/plugin/fields/index.d.ts.map +1 -1
- package/dist/plugin/fields/index.js +100 -78
- package/dist/plugin/fields/index.js.map +1 -1
- package/dist/plugin/fields/types.d.ts +1 -1
- package/dist/plugin/fields/types.d.ts.map +1 -1
- package/dist/plugin/fields/types.js +26 -2
- package/dist/plugin/fields/types.js.map +1 -1
- package/dist/plugin/hooks/index.d.ts +1 -1
- package/dist/plugin/hooks/index.d.ts.map +1 -1
- package/dist/plugin/hooks/index.js +2 -2
- package/dist/plugin/hooks/index.js.map +1 -1
- package/dist/plugin/hooks/isHomepageUnique.js +28 -19
- package/dist/plugin/hooks/isHomepageUnique.js.map +1 -1
- package/dist/plugin/index.d.ts +8 -8
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +190 -188
- package/dist/plugin/index.js.map +1 -1
- package/dist/render/HybridPageRenderer.d.ts +2 -2
- package/dist/render/HybridPageRenderer.d.ts.map +1 -1
- package/dist/render/HybridPageRenderer.js +58 -10
- package/dist/render/HybridPageRenderer.js.map +1 -1
- package/dist/render/PageRenderer.d.ts +2 -2
- package/dist/render/PageRenderer.d.ts.map +1 -1
- package/dist/render/PageRenderer.js +31 -14
- package/dist/render/PageRenderer.js.map +1 -1
- package/dist/render/PuckEditor.client.d.ts +1 -1
- package/dist/render/PuckEditor.client.d.ts.map +1 -1
- package/dist/render/PuckEditor.client.js +33 -16
- package/dist/render/PuckEditor.client.js.map +1 -1
- package/dist/render/index.d.ts +5 -5
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +5 -6
- package/dist/render/index.js.map +1 -1
- package/dist/styles/puck-dark-mode.css +101 -0
- package/dist/theme/context.d.ts +2 -2
- package/dist/theme/context.d.ts.map +1 -1
- package/dist/theme/context.js +21 -18
- package/dist/theme/context.js.map +1 -1
- package/dist/theme/defaults.d.ts +1 -1
- package/dist/theme/defaults.d.ts.map +1 -1
- package/dist/theme/defaults.js +83 -37
- package/dist/theme/defaults.js.map +1 -1
- package/dist/theme/example.d.ts +1 -1
- package/dist/theme/example.d.ts.map +1 -1
- package/dist/theme/example.js +68 -30
- package/dist/theme/example.js.map +1 -1
- package/dist/theme/index.d.ts +5 -5
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +6 -5
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/types.js +6 -2
- package/dist/theme/types.js.map +1 -1
- package/dist/theme/utils.d.ts +1 -1
- package/dist/theme/utils.d.ts.map +1 -1
- package/dist/theme/utils.js +24 -25
- package/dist/theme/utils.js.map +1 -1
- package/dist/types/index.d.ts +6 -6
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/index.d.ts +2 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +13 -22
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/migration.d.ts +1 -1
- package/dist/utils/migration.d.ts.map +1 -1
- package/dist/utils/migration.js +43 -49
- package/dist/utils/migration.js.map +1 -1
- package/dist/utils/validation.d.ts +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +36 -43
- package/dist/utils/validation.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +2 -1
- package/dist/version.js.map +1 -1
- package/dist/views/PuckConfigContext.d.ts +1 -1
- package/dist/views/PuckConfigContext.d.ts.map +1 -1
- package/dist/views/PuckConfigContext.js +25 -10
- package/dist/views/PuckConfigContext.js.map +1 -1
- package/dist/views/PuckEditorView.d.ts +1 -1
- package/dist/views/PuckEditorView.d.ts.map +1 -1
- package/dist/views/PuckEditorView.js +106 -38
- package/dist/views/PuckEditorView.js.map +1 -1
- package/dist/views/index.js +2 -2
- package/dist/views/index.js.map +1 -1
- package/package.json +62 -42
package/README.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
A PayloadCMS plugin for integrating [Puck](https://puckeditor.com) visual page builder. Build pages visually with drag-and-drop components while leveraging Payload's content management capabilities.
|
|
4
4
|
|
|
5
|
+
[](https://demo.delmaredigital.com)
|
|
6
|
+
[](https://github.com/delmaredigital/dd-starter)
|
|
7
|
+
[](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fdelmaredigital%2Fdd-starter&project-name=my-payload-site&build-command=pnpm%20run%20ci&env=PAYLOAD_SECRET,BETTER_AUTH_SECRET&stores=%5B%7B%22type%22%3A%22integration%22%2C%22protocol%22%3A%22storage%22%2C%22productSlug%22%3A%22neon%22%2C%22integrationSlug%22%3A%22neon%22%7D%2C%7B%22type%22%3A%22blob%22%7D%5D)
|
|
8
|
+
|
|
5
9
|
---
|
|
6
10
|
|
|
7
11
|
## Table of Contents
|
|
@@ -20,6 +24,7 @@ A PayloadCMS plugin for integrating [Puck](https://puckeditor.com) visual page b
|
|
|
20
24
|
- [Page-Tree Integration](#page-tree-integration)
|
|
21
25
|
- [Hybrid Integration](#hybrid-integration)
|
|
22
26
|
- [AI Integration](#ai-integration)
|
|
27
|
+
- [Plugin Order](#plugin-order)
|
|
23
28
|
- [Advanced Configuration](#advanced-configuration)
|
|
24
29
|
- [License](#license)
|
|
25
30
|
|
|
@@ -959,6 +964,8 @@ function useDetectTheme() {
|
|
|
959
964
|
|
|
960
965
|
When `@delmaredigital/payload-page-tree` is detected, the plugin automatically adds folder management to the Puck sidebar.
|
|
961
966
|
|
|
967
|
+
> **⚠️ Plugin Order:** When using both plugins with `autoGenerateCollection: true`, Puck must run BEFORE page-tree. See [Plugin Order](#plugin-order).
|
|
968
|
+
|
|
962
969
|
### How It Works
|
|
963
970
|
|
|
964
971
|
The plugin checks if your collection has a `pageSegment` field (page-tree's signature). When detected:
|
|
@@ -1306,6 +1313,48 @@ import {
|
|
|
1306
1313
|
|
|
1307
1314
|
---
|
|
1308
1315
|
|
|
1316
|
+
## Plugin Order
|
|
1317
|
+
|
|
1318
|
+
When using `autoGenerateCollection: true` (the default) with `@delmaredigital/payload-page-tree`, **plugin order matters**.
|
|
1319
|
+
|
|
1320
|
+
### The Issue
|
|
1321
|
+
|
|
1322
|
+
The page-tree plugin validates configured collections when it initializes. If Puck hasn't created the collection yet, page-tree won't see it and will skip adding its fields (folder relationships, slug generation, etc.).
|
|
1323
|
+
|
|
1324
|
+
### Correct Order
|
|
1325
|
+
|
|
1326
|
+
```typescript
|
|
1327
|
+
// ✅ CORRECT: Puck creates the collection before page-tree runs
|
|
1328
|
+
export const plugins = [
|
|
1329
|
+
createPuckPlugin({ pagesCollection: 'pages' }), // Creates Pages first
|
|
1330
|
+
pageTreePlugin({ collections: ['pages'] }), // Now sees Pages
|
|
1331
|
+
]
|
|
1332
|
+
|
|
1333
|
+
// ❌ WRONG: page-tree runs before Pages exists
|
|
1334
|
+
export const plugins = [
|
|
1335
|
+
pageTreePlugin({ collections: ['pages'] }), // Pages doesn't exist!
|
|
1336
|
+
createPuckPlugin({ pagesCollection: 'pages' }), // Creates Pages too late
|
|
1337
|
+
]
|
|
1338
|
+
```
|
|
1339
|
+
|
|
1340
|
+
### When Order Doesn't Matter
|
|
1341
|
+
|
|
1342
|
+
If you define your collection manually (with `autoGenerateCollection: false`), order doesn't matter because the collection already exists in your config:
|
|
1343
|
+
|
|
1344
|
+
```typescript
|
|
1345
|
+
export default buildConfig({
|
|
1346
|
+
collections: [Pages], // Collection exists before plugins run
|
|
1347
|
+
plugins: [
|
|
1348
|
+
pageTreePlugin({ collections: ['pages'] }),
|
|
1349
|
+
createPuckPlugin({ pagesCollection: 'pages', autoGenerateCollection: false }),
|
|
1350
|
+
],
|
|
1351
|
+
})
|
|
1352
|
+
```
|
|
1353
|
+
|
|
1354
|
+
See also: [payload-page-tree Plugin Order documentation](https://github.com/delmaredigital/payload-page-tree#plugin-order-critical)
|
|
1355
|
+
|
|
1356
|
+
---
|
|
1357
|
+
|
|
1309
1358
|
## Advanced Configuration
|
|
1310
1359
|
|
|
1311
1360
|
### Plugin Options
|
|
@@ -1313,7 +1362,7 @@ import {
|
|
|
1313
1362
|
| Option | Default | Description |
|
|
1314
1363
|
|--------|---------|-------------|
|
|
1315
1364
|
| `pagesCollection` | `'pages'` | Collection slug to use for pages |
|
|
1316
|
-
| `autoGenerateCollection` | `true` | Create the collection if it doesn't exist, or add Puck fields to existing |
|
|
1365
|
+
| `autoGenerateCollection` | `true` | Create the collection if it doesn't exist, or add Puck fields to existing (see [Plugin Order](#plugin-order)) |
|
|
1317
1366
|
| `enableEndpoints` | `true` | Register API endpoints at `/api/puck/:collection` for the editor |
|
|
1318
1367
|
| `enableAdminView` | `true` | Register the Puck editor view in Payload admin |
|
|
1319
1368
|
| `adminViewPath` | `'/puck-editor'` | Path for the editor (full path: `/admin/puck-editor/:collection/:id`) |
|
|
@@ -69,6 +69,6 @@ export declare const EditWithPuckButton: UIFieldClientComponent;
|
|
|
69
69
|
export declare function EditWithPuckLink({ id, collectionSlug, editorPathPattern, label, iconOnly, }: EditWithPuckButtonProps & {
|
|
70
70
|
id: string;
|
|
71
71
|
adminRoute?: string;
|
|
72
|
-
}): import("react
|
|
72
|
+
}): import("react").JSX.Element;
|
|
73
73
|
export default EditWithPuckButton;
|
|
74
74
|
//# sourceMappingURL=EditWithPuckButton.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditWithPuckButton.d.ts","sourceRoot":"","sources":["../../src/admin/EditWithPuckButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAGrD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;IACX;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAwBD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,kBAAkB,EAAE,sBA4DhC,CAAA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,EAAE,EACF,cAAwB,EACxB,iBAAiB,EACjB,KAAuB,EACvB,QAAgB,GACjB,EAAE,uBAAuB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE
|
|
1
|
+
{"version":3,"file":"EditWithPuckButton.d.ts","sourceRoot":"","sources":["../../src/admin/EditWithPuckButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAGrD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;IACX;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAwBD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,kBAAkB,EAAE,sBA4DhC,CAAA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,EAAE,EACF,cAAwB,EACxB,iBAAiB,EACjB,KAAuB,EACvB,QAAgB,GACjB,EAAE,uBAAuB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,+BAkC/D;AAED,eAAe,kBAAkB,CAAA"}
|
|
@@ -3,9 +3,26 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import { useDocumentInfo, useConfig } from '@payloadcms/ui';
|
|
4
4
|
/**
|
|
5
5
|
* Pencil/Edit icon component
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
*/ function PuckIcon({ size = 18 }) {
|
|
7
|
+
return /*#__PURE__*/ _jsxs("svg", {
|
|
8
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
9
|
+
width: size,
|
|
10
|
+
height: size,
|
|
11
|
+
viewBox: "0 0 24 24",
|
|
12
|
+
fill: "none",
|
|
13
|
+
stroke: "currentColor",
|
|
14
|
+
strokeWidth: "2",
|
|
15
|
+
strokeLinecap: "round",
|
|
16
|
+
strokeLinejoin: "round",
|
|
17
|
+
children: [
|
|
18
|
+
/*#__PURE__*/ _jsx("path", {
|
|
19
|
+
d: "M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"
|
|
20
|
+
}),
|
|
21
|
+
/*#__PURE__*/ _jsx("path", {
|
|
22
|
+
d: "M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z"
|
|
23
|
+
})
|
|
24
|
+
]
|
|
25
|
+
});
|
|
9
26
|
}
|
|
10
27
|
/**
|
|
11
28
|
* Edit with Puck button for use in Payload admin document edit views
|
|
@@ -30,8 +47,7 @@ function PuckIcon({ size = 18 }) {
|
|
|
30
47
|
* },
|
|
31
48
|
* }
|
|
32
49
|
* ```
|
|
33
|
-
*/
|
|
34
|
-
export const EditWithPuckButton = (props) => {
|
|
50
|
+
*/ export const EditWithPuckButton = (props)=>{
|
|
35
51
|
// Get document and config context from Payload
|
|
36
52
|
const { id, collectionSlug } = useDocumentInfo();
|
|
37
53
|
const { config } = useConfig();
|
|
@@ -46,18 +62,21 @@ export const EditWithPuckButton = (props) => {
|
|
|
46
62
|
let editorPath;
|
|
47
63
|
if (customProps?.editorPathPattern) {
|
|
48
64
|
// Custom pattern provided (for backwards compatibility)
|
|
49
|
-
editorPath = customProps.editorPathPattern
|
|
50
|
-
|
|
51
|
-
.replace('{collection}', collection);
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
65
|
+
editorPath = customProps.editorPathPattern.replace('{id}', String(id)).replace('{collection}', collection);
|
|
66
|
+
} else {
|
|
54
67
|
// Default: use admin view
|
|
55
68
|
editorPath = `${adminRoute}/puck-editor/${collection}/${id}`;
|
|
56
69
|
}
|
|
57
70
|
if (!id) {
|
|
58
71
|
return null;
|
|
59
72
|
}
|
|
60
|
-
return
|
|
73
|
+
return /*#__PURE__*/ _jsx("div", {
|
|
74
|
+
style: {
|
|
75
|
+
marginBottom: '1rem'
|
|
76
|
+
},
|
|
77
|
+
children: /*#__PURE__*/ _jsxs("a", {
|
|
78
|
+
href: editorPath,
|
|
79
|
+
style: {
|
|
61
80
|
display: 'inline-flex',
|
|
62
81
|
alignItems: 'center',
|
|
63
82
|
gap: '8px',
|
|
@@ -68,12 +87,23 @@ export const EditWithPuckButton = (props) => {
|
|
|
68
87
|
textDecoration: 'none',
|
|
69
88
|
fontSize: '14px',
|
|
70
89
|
fontWeight: 500,
|
|
71
|
-
transition: 'background-color 0.15s, opacity 0.15s'
|
|
72
|
-
},
|
|
90
|
+
transition: 'background-color 0.15s, opacity 0.15s'
|
|
91
|
+
},
|
|
92
|
+
onMouseEnter: (e)=>{
|
|
73
93
|
e.currentTarget.style.opacity = '0.9';
|
|
74
|
-
},
|
|
94
|
+
},
|
|
95
|
+
onMouseLeave: (e)=>{
|
|
75
96
|
e.currentTarget.style.opacity = '1';
|
|
76
|
-
},
|
|
97
|
+
},
|
|
98
|
+
title: iconOnly ? label : undefined,
|
|
99
|
+
children: [
|
|
100
|
+
/*#__PURE__*/ _jsx(PuckIcon, {
|
|
101
|
+
size: iconOnly ? 20 : 18
|
|
102
|
+
}),
|
|
103
|
+
!iconOnly && label
|
|
104
|
+
]
|
|
105
|
+
})
|
|
106
|
+
});
|
|
77
107
|
};
|
|
78
108
|
/**
|
|
79
109
|
* Standalone version of the button that doesn't rely on Payload context
|
|
@@ -86,13 +116,12 @@ export const EditWithPuckButton = (props) => {
|
|
|
86
116
|
* adminRoute="/admin"
|
|
87
117
|
* />
|
|
88
118
|
* ```
|
|
89
|
-
*/
|
|
90
|
-
export function EditWithPuckLink({ id, collectionSlug = 'pages', editorPathPattern, label = 'Visual Editor', iconOnly = false, }) {
|
|
119
|
+
*/ export function EditWithPuckLink({ id, collectionSlug = 'pages', editorPathPattern, label = 'Visual Editor', iconOnly = false }) {
|
|
91
120
|
// Build path - prefer admin view by default
|
|
92
|
-
const path = editorPathPattern
|
|
93
|
-
|
|
94
|
-
:
|
|
95
|
-
|
|
121
|
+
const path = editorPathPattern ? editorPathPattern.replace('{id}', id).replace('{collection}', collectionSlug) : `/admin/puck-editor/${collectionSlug}/${id}`;
|
|
122
|
+
return /*#__PURE__*/ _jsxs("a", {
|
|
123
|
+
href: path,
|
|
124
|
+
style: {
|
|
96
125
|
display: 'inline-flex',
|
|
97
126
|
alignItems: 'center',
|
|
98
127
|
gap: '8px',
|
|
@@ -103,12 +132,23 @@ export function EditWithPuckLink({ id, collectionSlug = 'pages', editorPathPatte
|
|
|
103
132
|
textDecoration: 'none',
|
|
104
133
|
fontSize: '14px',
|
|
105
134
|
fontWeight: 500,
|
|
106
|
-
transition: 'opacity 0.15s'
|
|
107
|
-
},
|
|
135
|
+
transition: 'opacity 0.15s'
|
|
136
|
+
},
|
|
137
|
+
onMouseEnter: (e)=>{
|
|
108
138
|
e.currentTarget.style.opacity = '0.9';
|
|
109
|
-
},
|
|
139
|
+
},
|
|
140
|
+
onMouseLeave: (e)=>{
|
|
110
141
|
e.currentTarget.style.opacity = '1';
|
|
111
|
-
},
|
|
142
|
+
},
|
|
143
|
+
title: iconOnly ? label : undefined,
|
|
144
|
+
children: [
|
|
145
|
+
/*#__PURE__*/ _jsx(PuckIcon, {
|
|
146
|
+
size: iconOnly ? 20 : 18
|
|
147
|
+
}),
|
|
148
|
+
!iconOnly && label
|
|
149
|
+
]
|
|
150
|
+
});
|
|
112
151
|
}
|
|
113
152
|
export default EditWithPuckButton;
|
|
153
|
+
|
|
114
154
|
//# sourceMappingURL=EditWithPuckButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/admin/EditWithPuckButton.tsx"],"sourcesContent":["'use client'\n\nimport type { UIFieldClientComponent } from 'payload'\nimport { useDocumentInfo, useConfig } from '@payloadcms/ui'\n\n/**\n * Props for EditWithPuckButton when used standalone\n */\nexport interface EditWithPuckButtonProps {\n /**\n * Document ID to edit\n */\n id?: string\n /**\n * Collection slug\n * @default 'pages'\n */\n collectionSlug?: string\n /**\n * Custom path pattern for the Puck editor\n * Use {id} as placeholder for the document ID, {collection} for collection slug\n * @default Uses admin view: '/admin/puck-editor/{collection}/{id}'\n */\n editorPathPattern?: string\n /**\n * Button label\n * @default 'Visual Editor'\n */\n label?: string\n /**\n * Whether to show as icon only\n * @default false\n */\n iconOnly?: boolean\n}\n\n/**\n * Pencil/Edit icon component\n */\nfunction PuckIcon({ size = 18 }: { size?: number }) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\" />\n <path d=\"M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z\" />\n </svg>\n )\n}\n\n/**\n * Edit with Puck button for use in Payload admin document edit views\n *\n * Links to the Puck editor admin view. The editor is integrated directly\n * into Payload's admin UI.\n *\n * @example\n * ```tsx\n * // In your Payload collection config:\n * {\n * name: 'puckEdit',\n * type: 'ui',\n * admin: {\n * position: 'sidebar',\n * components: {\n * Field: '@delmaredigital/payload-puck/admin/client#EditWithPuckButton',\n * },\n * custom: {\n * label: 'Visual Editor',\n * },\n * },\n * }\n * ```\n */\nexport const EditWithPuckButton: UIFieldClientComponent = (props) => {\n // Get document and config context from Payload\n const { id, collectionSlug } = useDocumentInfo()\n const { config } = useConfig()\n\n // Extract custom props passed via field config\n const customProps = (props as any)?.field?.custom as EditWithPuckButtonProps | undefined\n const label = customProps?.label || 'Visual Editor'\n const iconOnly = customProps?.iconOnly || false\n const collection = customProps?.collectionSlug || collectionSlug || 'pages'\n\n // Get admin route from config\n const adminRoute = config.routes?.admin || '/admin'\n\n // Build editor URL - defaults to admin view\n let editorPath: string\n if (customProps?.editorPathPattern) {\n // Custom pattern provided (for backwards compatibility)\n editorPath = customProps.editorPathPattern\n .replace('{id}', String(id))\n .replace('{collection}', collection)\n } else {\n // Default: use admin view\n editorPath = `${adminRoute}/puck-editor/${collection}/${id}`\n }\n\n if (!id) {\n return null\n }\n\n return (\n <div style={{ marginBottom: '1rem' }}>\n <a\n href={editorPath}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: '8px',\n padding: iconOnly ? '8px' : '10px 16px',\n backgroundColor: 'var(--theme-success-500, #22c55e)',\n color: 'white',\n borderRadius: '6px',\n textDecoration: 'none',\n fontSize: '14px',\n fontWeight: 500,\n transition: 'background-color 0.15s, opacity 0.15s',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.opacity = '0.9'\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.opacity = '1'\n }}\n title={iconOnly ? label : undefined}\n >\n <PuckIcon size={iconOnly ? 20 : 18} />\n {!iconOnly && label}\n </a>\n </div>\n )\n}\n\n/**\n * Standalone version of the button that doesn't rely on Payload context\n *\n * @example\n * ```tsx\n * <EditWithPuckLink\n * id=\"123\"\n * collectionSlug=\"pages\"\n * adminRoute=\"/admin\"\n * />\n * ```\n */\nexport function EditWithPuckLink({\n id,\n collectionSlug = 'pages',\n editorPathPattern,\n label = 'Visual Editor',\n iconOnly = false,\n}: EditWithPuckButtonProps & { id: string; adminRoute?: string }) {\n // Build path - prefer admin view by default\n const path = editorPathPattern\n ? editorPathPattern.replace('{id}', id).replace('{collection}', collectionSlug)\n : `/admin/puck-editor/${collectionSlug}/${id}`\n\n return (\n <a\n href={path}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: '8px',\n padding: iconOnly ? '8px' : '10px 16px',\n backgroundColor: 'var(--theme-success-500, #22c55e)',\n color: 'white',\n borderRadius: '6px',\n textDecoration: 'none',\n fontSize: '14px',\n fontWeight: 500,\n transition: 'opacity 0.15s',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.opacity = '0.9'\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.opacity = '1'\n }}\n title={iconOnly ? label : undefined}\n >\n <PuckIcon size={iconOnly ? 20 : 18} />\n {!iconOnly && label}\n </a>\n )\n}\n\nexport default EditWithPuckButton\n"],"names":["useDocumentInfo","useConfig","PuckIcon","size","svg","xmlns","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","path","d","EditWithPuckButton","props","id","collectionSlug","config","customProps","field","custom","label","iconOnly","collection","adminRoute","routes","admin","editorPath","editorPathPattern","replace","String","div","style","marginBottom","a","href","display","alignItems","gap","padding","backgroundColor","color","borderRadius","textDecoration","fontSize","fontWeight","transition","onMouseEnter","e","currentTarget","opacity","onMouseLeave","title","undefined","EditWithPuckLink"],"mappings":"AAAA;;AAGA,SAASA,eAAe,EAAEC,SAAS,QAAQ,iBAAgB;AAiC3D;;CAEC,GACD,SAASC,SAAS,EAAEC,OAAO,EAAE,EAAqB;IAChD,qBACE,MAACC;QACCC,OAAM;QACNC,OAAOH;QACPI,QAAQJ;QACRK,SAAQ;QACRC,MAAK;QACLC,QAAO;QACPC,aAAY;QACZC,eAAc;QACdC,gBAAe;;0BAEf,KAACC;gBAAKC,GAAE;;0BACR,KAACD;gBAAKC,GAAE;;;;AAGd;AAEA;;;;;;;;;;;;;;;;;;;;;;;CAuBC,GACD,OAAO,MAAMC,qBAA6C,CAACC;IACzD,+CAA+C;IAC/C,MAAM,EAAEC,EAAE,EAAEC,cAAc,EAAE,GAAGnB;IAC/B,MAAM,EAAEoB,MAAM,EAAE,GAAGnB;IAEnB,+CAA+C;IAC/C,MAAMoB,cAAeJ,OAAeK,OAAOC;IAC3C,MAAMC,QAAQH,aAAaG,SAAS;IACpC,MAAMC,WAAWJ,aAAaI,YAAY;IAC1C,MAAMC,aAAaL,aAAaF,kBAAkBA,kBAAkB;IAEpE,8BAA8B;IAC9B,MAAMQ,aAAaP,OAAOQ,MAAM,EAAEC,SAAS;IAE3C,4CAA4C;IAC5C,IAAIC;IACJ,IAAIT,aAAaU,mBAAmB;QAClC,wDAAwD;QACxDD,aAAaT,YAAYU,iBAAiB,CACvCC,OAAO,CAAC,QAAQC,OAAOf,KACvBc,OAAO,CAAC,gBAAgBN;IAC7B,OAAO;QACL,0BAA0B;QAC1BI,aAAa,GAAGH,WAAW,aAAa,EAAED,WAAW,CAAC,EAAER,IAAI;IAC9D;IAEA,IAAI,CAACA,IAAI;QACP,OAAO;IACT;IAEA,qBACE,KAACgB;QAAIC,OAAO;YAAEC,cAAc;QAAO;kBACjC,cAAA,MAACC;YACCC,MAAMR;YACNK,OAAO;gBACLI,SAAS;gBACTC,YAAY;gBACZC,KAAK;gBACLC,SAASjB,WAAW,QAAQ;gBAC5BkB,iBAAiB;gBACjBC,OAAO;gBACPC,cAAc;gBACdC,gBAAgB;gBAChBC,UAAU;gBACVC,YAAY;gBACZC,YAAY;YACd;YACAC,cAAc,CAACC;gBACbA,EAAEC,aAAa,CAACjB,KAAK,CAACkB,OAAO,GAAG;YAClC;YACAC,cAAc,CAACH;gBACbA,EAAEC,aAAa,CAACjB,KAAK,CAACkB,OAAO,GAAG;YAClC;YACAE,OAAO9B,WAAWD,QAAQgC;;8BAE1B,KAACtD;oBAASC,MAAMsB,WAAW,KAAK;;gBAC/B,CAACA,YAAYD;;;;AAItB,EAAC;AAED;;;;;;;;;;;CAWC,GACD,OAAO,SAASiC,iBAAiB,EAC/BvC,EAAE,EACFC,iBAAiB,OAAO,EACxBY,iBAAiB,EACjBP,QAAQ,eAAe,EACvBC,WAAW,KAAK,EAC8C;IAC9D,4CAA4C;IAC5C,MAAMX,OAAOiB,oBACTA,kBAAkBC,OAAO,CAAC,QAAQd,IAAIc,OAAO,CAAC,gBAAgBb,kBAC9D,CAAC,mBAAmB,EAAEA,eAAe,CAAC,EAAED,IAAI;IAEhD,qBACE,MAACmB;QACCC,MAAMxB;QACNqB,OAAO;YACLI,SAAS;YACTC,YAAY;YACZC,KAAK;YACLC,SAASjB,WAAW,QAAQ;YAC5BkB,iBAAiB;YACjBC,OAAO;YACPC,cAAc;YACdC,gBAAgB;YAChBC,UAAU;YACVC,YAAY;YACZC,YAAY;QACd;QACAC,cAAc,CAACC;YACbA,EAAEC,aAAa,CAACjB,KAAK,CAACkB,OAAO,GAAG;QAClC;QACAC,cAAc,CAACH;YACbA,EAAEC,aAAa,CAACjB,KAAK,CAACkB,OAAO,GAAG;QAClC;QACAE,OAAO9B,WAAWD,QAAQgC;;0BAE1B,KAACtD;gBAASC,MAAMsB,WAAW,KAAK;;YAC/B,CAACA,YAAYD;;;AAGpB;AAEA,eAAeR,mBAAkB"}
|
|
@@ -2,9 +2,26 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
/**
|
|
4
4
|
* Pencil/Edit icon component
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
*/ function PuckIcon({ size = 16 }) {
|
|
6
|
+
return /*#__PURE__*/ _jsxs("svg", {
|
|
7
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
8
|
+
width: size,
|
|
9
|
+
height: size,
|
|
10
|
+
viewBox: "0 0 24 24",
|
|
11
|
+
fill: "none",
|
|
12
|
+
stroke: "currentColor",
|
|
13
|
+
strokeWidth: "2",
|
|
14
|
+
strokeLinecap: "round",
|
|
15
|
+
strokeLinejoin: "round",
|
|
16
|
+
children: [
|
|
17
|
+
/*#__PURE__*/ _jsx("path", {
|
|
18
|
+
d: "M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"
|
|
19
|
+
}),
|
|
20
|
+
/*#__PURE__*/ _jsx("path", {
|
|
21
|
+
d: "M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z"
|
|
22
|
+
})
|
|
23
|
+
]
|
|
24
|
+
});
|
|
8
25
|
}
|
|
9
26
|
/**
|
|
10
27
|
* Custom cell component that renders an "Edit with Puck" button in list views
|
|
@@ -28,8 +45,7 @@ function PuckIcon({ size = 16 }) {
|
|
|
28
45
|
* },
|
|
29
46
|
* }
|
|
30
47
|
* ```
|
|
31
|
-
*/
|
|
32
|
-
export const EditWithPuckCell = ({ rowData, field, collectionSlug: contextCollectionSlug, }) => {
|
|
48
|
+
*/ export const EditWithPuckCell = ({ rowData, field, collectionSlug: contextCollectionSlug })=>{
|
|
33
49
|
// Get document ID from row data
|
|
34
50
|
const id = rowData?.id;
|
|
35
51
|
// Get custom config from field
|
|
@@ -39,10 +55,11 @@ export const EditWithPuckCell = ({ rowData, field, collectionSlug: contextCollec
|
|
|
39
55
|
return null;
|
|
40
56
|
}
|
|
41
57
|
// Build editor URL
|
|
42
|
-
const editorPath = customConfig?.editorPathPattern
|
|
43
|
-
|
|
44
|
-
:
|
|
45
|
-
|
|
58
|
+
const editorPath = customConfig?.editorPathPattern ? customConfig.editorPathPattern.replace('{id}', id).replace('{collectionSlug}', collectionSlug) : `/admin/puck/${collectionSlug}/${id}/edit`;
|
|
59
|
+
return /*#__PURE__*/ _jsxs("a", {
|
|
60
|
+
href: editorPath,
|
|
61
|
+
onClick: (e)=>e.stopPropagation(),
|
|
62
|
+
style: {
|
|
46
63
|
display: 'inline-flex',
|
|
47
64
|
alignItems: 'center',
|
|
48
65
|
justifyContent: 'center',
|
|
@@ -55,12 +72,25 @@ export const EditWithPuckCell = ({ rowData, field, collectionSlug: contextCollec
|
|
|
55
72
|
fontWeight: 500,
|
|
56
73
|
gap: '4px',
|
|
57
74
|
transition: 'background-color 0.2s',
|
|
58
|
-
whiteSpace: 'nowrap'
|
|
59
|
-
},
|
|
75
|
+
whiteSpace: 'nowrap'
|
|
76
|
+
},
|
|
77
|
+
onMouseEnter: (e)=>{
|
|
60
78
|
e.currentTarget.style.backgroundColor = '#1d4ed8';
|
|
61
|
-
},
|
|
79
|
+
},
|
|
80
|
+
onMouseLeave: (e)=>{
|
|
62
81
|
e.currentTarget.style.backgroundColor = '#2563eb';
|
|
63
|
-
},
|
|
82
|
+
},
|
|
83
|
+
title: "Visual Editor",
|
|
84
|
+
children: [
|
|
85
|
+
/*#__PURE__*/ _jsx(PuckIcon, {
|
|
86
|
+
size: 14
|
|
87
|
+
}),
|
|
88
|
+
/*#__PURE__*/ _jsx("span", {
|
|
89
|
+
children: "Visual Editor"
|
|
90
|
+
})
|
|
91
|
+
]
|
|
92
|
+
});
|
|
64
93
|
};
|
|
65
94
|
export default EditWithPuckCell;
|
|
95
|
+
|
|
66
96
|
//# sourceMappingURL=EditWithPuckCell.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/admin/EditWithPuckCell.tsx"],"sourcesContent":["'use client'\n\nimport type { DefaultCellComponentProps } from 'payload'\n\n/**\n * Props for configuring the EditWithPuckCell component\n */\nexport interface EditWithPuckCellConfig {\n /**\n * Collection slug for building the editor URL\n * @default 'pages'\n */\n collectionSlug?: string\n /**\n * Custom editor path pattern\n * Use {id} as placeholder for the document ID\n * @default '/admin/puck/{collectionSlug}/{id}/edit'\n */\n editorPathPattern?: string\n}\n\n/**\n * Pencil/Edit icon component\n */\nfunction PuckIcon({ size = 16 }: { size?: number }) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\" />\n <path d=\"M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z\" />\n </svg>\n )\n}\n\n/**\n * Custom cell component that renders an \"Edit with Puck\" button in list views\n *\n * Add this to a UI field in your collection to show the visual editor button\n * in the list view table.\n *\n * @example\n * ```ts\n * // In your collection config:\n * {\n * name: 'puckEdit',\n * type: 'ui',\n * admin: {\n * components: {\n * Cell: '@delmaredigital/payload-puck/admin#EditWithPuckCell',\n * },\n * custom: {\n * collectionSlug: 'pages',\n * },\n * },\n * }\n * ```\n */\nexport const EditWithPuckCell: React.FC<DefaultCellComponentProps> = ({\n rowData,\n field,\n collectionSlug: contextCollectionSlug,\n}) => {\n // Get document ID from row data\n const id = rowData?.id as string | undefined\n\n // Get custom config from field\n const customConfig = (field as any)?.custom as EditWithPuckCellConfig | undefined\n const collectionSlug = customConfig?.collectionSlug || contextCollectionSlug || 'pages'\n\n if (!id) {\n return null\n }\n\n // Build editor URL\n const editorPath = customConfig?.editorPathPattern\n ? customConfig.editorPathPattern.replace('{id}', id).replace('{collectionSlug}', collectionSlug)\n : `/admin/puck/${collectionSlug}/${id}/edit`\n\n return (\n <a\n href={editorPath}\n onClick={(e) => e.stopPropagation()}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '6px 10px',\n backgroundColor: '#2563eb',\n color: '#fff',\n borderRadius: '4px',\n textDecoration: 'none',\n fontSize: '12px',\n fontWeight: 500,\n gap: '4px',\n transition: 'background-color 0.2s',\n whiteSpace: 'nowrap',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#1d4ed8'\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = '#2563eb'\n }}\n title=\"Visual Editor\"\n >\n <PuckIcon size={14} />\n <span>Visual Editor</span>\n </a>\n )\n}\n\nexport default EditWithPuckCell\n"],"names":["PuckIcon","size","svg","xmlns","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","path","d","EditWithPuckCell","rowData","field","collectionSlug","contextCollectionSlug","id","customConfig","custom","editorPath","editorPathPattern","replace","a","href","onClick","e","stopPropagation","style","display","alignItems","justifyContent","padding","backgroundColor","color","borderRadius","textDecoration","fontSize","fontWeight","gap","transition","whiteSpace","onMouseEnter","currentTarget","onMouseLeave","title","span"],"mappings":"AAAA;;AAqBA;;CAEC,GACD,SAASA,SAAS,EAAEC,OAAO,EAAE,EAAqB;IAChD,qBACE,MAACC;QACCC,OAAM;QACNC,OAAOH;QACPI,QAAQJ;QACRK,SAAQ;QACRC,MAAK;QACLC,QAAO;QACPC,aAAY;QACZC,eAAc;QACdC,gBAAe;;0BAEf,KAACC;gBAAKC,GAAE;;0BACR,KAACD;gBAAKC,GAAE;;;;AAGd;AAEA;;;;;;;;;;;;;;;;;;;;;;CAsBC,GACD,OAAO,MAAMC,mBAAwD,CAAC,EACpEC,OAAO,EACPC,KAAK,EACLC,gBAAgBC,qBAAqB,EACtC;IACC,gCAAgC;IAChC,MAAMC,KAAKJ,SAASI;IAEpB,+BAA+B;IAC/B,MAAMC,eAAgBJ,OAAeK;IACrC,MAAMJ,iBAAiBG,cAAcH,kBAAkBC,yBAAyB;IAEhF,IAAI,CAACC,IAAI;QACP,OAAO;IACT;IAEA,mBAAmB;IACnB,MAAMG,aAAaF,cAAcG,oBAC7BH,aAAaG,iBAAiB,CAACC,OAAO,CAAC,QAAQL,IAAIK,OAAO,CAAC,oBAAoBP,kBAC/E,CAAC,YAAY,EAAEA,eAAe,CAAC,EAAEE,GAAG,KAAK,CAAC;IAE9C,qBACE,MAACM;QACCC,MAAMJ;QACNK,SAAS,CAACC,IAAMA,EAAEC,eAAe;QACjCC,OAAO;YACLC,SAAS;YACTC,YAAY;YACZC,gBAAgB;YAChBC,SAAS;YACTC,iBAAiB;YACjBC,OAAO;YACPC,cAAc;YACdC,gBAAgB;YAChBC,UAAU;YACVC,YAAY;YACZC,KAAK;YACLC,YAAY;YACZC,YAAY;QACd;QACAC,cAAc,CAAChB;YACbA,EAAEiB,aAAa,CAACf,KAAK,CAACK,eAAe,GAAG;QAC1C;QACAW,cAAc,CAAClB;YACbA,EAAEiB,aAAa,CAACf,KAAK,CAACK,eAAe,GAAG;QAC1C;QACAY,OAAM;;0BAEN,KAAC/C;gBAASC,MAAM;;0BAChB,KAAC+C;0BAAK;;;;AAGZ,EAAC;AAED,eAAelC,iBAAgB"}
|
|
@@ -80,6 +80,6 @@ export interface PuckEditorViewProps {
|
|
|
80
80
|
* }
|
|
81
81
|
* ```
|
|
82
82
|
*/
|
|
83
|
-
export declare function PuckEditorView({ config, collectionSlug, apiBasePath, backUrl, previewUrl, layoutStyles, layoutKey, plugins, onSaveSuccess, onSaveError, }: PuckEditorViewProps): import("react
|
|
83
|
+
export declare function PuckEditorView({ config, collectionSlug, apiBasePath, backUrl, previewUrl, layoutStyles, layoutKey, plugins, onSaveSuccess, onSaveError, }: PuckEditorViewProps): import("react").JSX.Element;
|
|
84
84
|
export default PuckEditorView;
|
|
85
85
|
//# sourceMappingURL=PuckEditorView.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PuckEditorView.d.ts","sourceRoot":"","sources":["../../src/admin/PuckEditorView.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,IAAI,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAExF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,MAAM,EAAE,UAAU,CAAA;IAClB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,CAAA;IAChD;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IACtE;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;IAC9B;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IACpC;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CACrC;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,cAAwB,EACxB,WAAyB,EACzB,OAAO,EACP,UAAU,EACV,YAAY,EACZ,SAAwB,EACxB,OAAO,EACP,aAAa,EACb,WAAW,GACZ,EAAE,mBAAmB
|
|
1
|
+
{"version":3,"file":"PuckEditorView.d.ts","sourceRoot":"","sources":["../../src/admin/PuckEditorView.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,IAAI,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAExF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,MAAM,EAAE,UAAU,CAAA;IAClB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,CAAA;IAChD;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IACtE;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;IAC9B;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IACpC;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CACrC;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,cAAwB,EACxB,WAAyB,EACzB,OAAO,EACP,UAAU,EACV,YAAY,EACZ,SAAwB,EACxB,OAAO,EACP,aAAa,EACb,WAAW,GACZ,EAAE,mBAAmB,+BAkKrB;AAED,eAAe,cAAc,CAAA"}
|
|
@@ -28,8 +28,7 @@ import { useParams, useSearchParams } from 'next/navigation';
|
|
|
28
28
|
* )
|
|
29
29
|
* }
|
|
30
30
|
* ```
|
|
31
|
-
*/
|
|
32
|
-
export function PuckEditorView({ config, collectionSlug = 'pages', apiBasePath = '/api/puck', backUrl, previewUrl, layoutStyles, layoutKey = 'pageLayout', plugins, onSaveSuccess, onSaveError, }) {
|
|
31
|
+
*/ export function PuckEditorView({ config, collectionSlug = 'pages', apiBasePath = '/api/puck', backUrl, previewUrl, layoutStyles, layoutKey = 'pageLayout', plugins, onSaveSuccess, onSaveError }) {
|
|
33
32
|
const params = useParams();
|
|
34
33
|
const searchParams = useSearchParams();
|
|
35
34
|
// Get page ID from route params or search params
|
|
@@ -39,12 +38,12 @@ export function PuckEditorView({ config, collectionSlug = 'pages', apiBasePath =
|
|
|
39
38
|
const [error, setError] = useState(null);
|
|
40
39
|
const [PuckEditor, setPuckEditor] = useState(null);
|
|
41
40
|
// Dynamically import PuckEditor to avoid SSR issues
|
|
42
|
-
useEffect(()
|
|
43
|
-
import('../editor/PuckEditor').then((mod)
|
|
44
|
-
setPuckEditor(()
|
|
41
|
+
useEffect(()=>{
|
|
42
|
+
import('../editor/PuckEditor.js').then((mod)=>{
|
|
43
|
+
setPuckEditor(()=>mod.PuckEditor);
|
|
45
44
|
});
|
|
46
45
|
}, []);
|
|
47
|
-
useEffect(()
|
|
46
|
+
useEffect(()=>{
|
|
48
47
|
async function fetchPage() {
|
|
49
48
|
if (!pageId) {
|
|
50
49
|
setError('No page ID provided');
|
|
@@ -55,81 +54,168 @@ export function PuckEditorView({ config, collectionSlug = 'pages', apiBasePath =
|
|
|
55
54
|
setLoading(true);
|
|
56
55
|
const response = await fetch(`${apiBasePath}/${collectionSlug}/${pageId}`);
|
|
57
56
|
if (!response.ok) {
|
|
58
|
-
const data = await response.json().catch(()
|
|
57
|
+
const data = await response.json().catch(()=>({}));
|
|
59
58
|
throw new Error(data.error || `Failed to fetch page: ${response.status}`);
|
|
60
59
|
}
|
|
61
60
|
const data = await response.json();
|
|
62
61
|
setPage(data.doc);
|
|
63
|
-
}
|
|
64
|
-
catch (err) {
|
|
62
|
+
} catch (err) {
|
|
65
63
|
setError(err instanceof Error ? err.message : 'An error occurred');
|
|
66
|
-
}
|
|
67
|
-
finally {
|
|
64
|
+
} finally{
|
|
68
65
|
setLoading(false);
|
|
69
66
|
}
|
|
70
67
|
}
|
|
71
68
|
fetchPage();
|
|
72
|
-
}, [
|
|
69
|
+
}, [
|
|
70
|
+
pageId,
|
|
71
|
+
apiBasePath,
|
|
72
|
+
collectionSlug
|
|
73
|
+
]);
|
|
73
74
|
const computedBackUrl = backUrl || `/admin/collections/${collectionSlug}`;
|
|
74
75
|
if (loading || !PuckEditor) {
|
|
75
|
-
return
|
|
76
|
+
return /*#__PURE__*/ _jsx("div", {
|
|
77
|
+
style: {
|
|
76
78
|
display: 'flex',
|
|
77
79
|
height: '100vh',
|
|
78
80
|
alignItems: 'center',
|
|
79
81
|
justifyContent: 'center',
|
|
80
82
|
backgroundColor: '#0f0f0f',
|
|
81
|
-
color: '#fff'
|
|
82
|
-
},
|
|
83
|
+
color: '#fff'
|
|
84
|
+
},
|
|
85
|
+
children: /*#__PURE__*/ _jsxs("div", {
|
|
86
|
+
style: {
|
|
87
|
+
textAlign: 'center'
|
|
88
|
+
},
|
|
89
|
+
children: [
|
|
90
|
+
/*#__PURE__*/ _jsx("div", {
|
|
91
|
+
style: {
|
|
83
92
|
width: '32px',
|
|
84
93
|
height: '32px',
|
|
85
94
|
border: '3px solid #333',
|
|
86
95
|
borderTopColor: '#fff',
|
|
87
96
|
borderRadius: '50%',
|
|
88
97
|
animation: 'spin 1s linear infinite',
|
|
89
|
-
margin: '0 auto 16px'
|
|
90
|
-
}
|
|
98
|
+
margin: '0 auto 16px'
|
|
99
|
+
}
|
|
100
|
+
}),
|
|
101
|
+
/*#__PURE__*/ _jsx("p", {
|
|
102
|
+
style: {
|
|
103
|
+
color: '#888'
|
|
104
|
+
},
|
|
105
|
+
children: "Loading editor..."
|
|
106
|
+
}),
|
|
107
|
+
/*#__PURE__*/ _jsx("style", {
|
|
108
|
+
children: `
|
|
91
109
|
@keyframes spin {
|
|
92
110
|
to { transform: rotate(360deg); }
|
|
93
111
|
}
|
|
94
|
-
`
|
|
112
|
+
`
|
|
113
|
+
})
|
|
114
|
+
]
|
|
115
|
+
})
|
|
116
|
+
});
|
|
95
117
|
}
|
|
96
118
|
if (error) {
|
|
97
|
-
return
|
|
119
|
+
return /*#__PURE__*/ _jsx("div", {
|
|
120
|
+
style: {
|
|
98
121
|
display: 'flex',
|
|
99
122
|
height: '100vh',
|
|
100
123
|
alignItems: 'center',
|
|
101
124
|
justifyContent: 'center',
|
|
102
125
|
backgroundColor: '#0f0f0f',
|
|
103
|
-
color: '#fff'
|
|
104
|
-
},
|
|
126
|
+
color: '#fff'
|
|
127
|
+
},
|
|
128
|
+
children: /*#__PURE__*/ _jsxs("div", {
|
|
129
|
+
style: {
|
|
130
|
+
textAlign: 'center'
|
|
131
|
+
},
|
|
132
|
+
children: [
|
|
133
|
+
/*#__PURE__*/ _jsx("p", {
|
|
134
|
+
style: {
|
|
135
|
+
color: '#f87171',
|
|
136
|
+
marginBottom: '16px'
|
|
137
|
+
},
|
|
138
|
+
children: error
|
|
139
|
+
}),
|
|
140
|
+
/*#__PURE__*/ _jsxs("a", {
|
|
141
|
+
href: computedBackUrl,
|
|
142
|
+
style: {
|
|
105
143
|
color: '#60a5fa',
|
|
106
|
-
textDecoration: 'underline'
|
|
107
|
-
},
|
|
144
|
+
textDecoration: 'underline'
|
|
145
|
+
},
|
|
146
|
+
children: [
|
|
147
|
+
"Back to ",
|
|
148
|
+
collectionSlug
|
|
149
|
+
]
|
|
150
|
+
})
|
|
151
|
+
]
|
|
152
|
+
})
|
|
153
|
+
});
|
|
108
154
|
}
|
|
109
155
|
if (!page) {
|
|
110
|
-
return
|
|
156
|
+
return /*#__PURE__*/ _jsx("div", {
|
|
157
|
+
style: {
|
|
111
158
|
display: 'flex',
|
|
112
159
|
height: '100vh',
|
|
113
160
|
alignItems: 'center',
|
|
114
161
|
justifyContent: 'center',
|
|
115
162
|
backgroundColor: '#0f0f0f',
|
|
116
|
-
color: '#fff'
|
|
117
|
-
},
|
|
163
|
+
color: '#fff'
|
|
164
|
+
},
|
|
165
|
+
children: /*#__PURE__*/ _jsxs("div", {
|
|
166
|
+
style: {
|
|
167
|
+
textAlign: 'center'
|
|
168
|
+
},
|
|
169
|
+
children: [
|
|
170
|
+
/*#__PURE__*/ _jsx("p", {
|
|
171
|
+
style: {
|
|
172
|
+
color: '#888',
|
|
173
|
+
marginBottom: '16px'
|
|
174
|
+
},
|
|
175
|
+
children: "Page not found"
|
|
176
|
+
}),
|
|
177
|
+
/*#__PURE__*/ _jsxs("a", {
|
|
178
|
+
href: computedBackUrl,
|
|
179
|
+
style: {
|
|
118
180
|
color: '#60a5fa',
|
|
119
|
-
textDecoration: 'underline'
|
|
120
|
-
},
|
|
181
|
+
textDecoration: 'underline'
|
|
182
|
+
},
|
|
183
|
+
children: [
|
|
184
|
+
"Back to ",
|
|
185
|
+
collectionSlug
|
|
186
|
+
]
|
|
187
|
+
})
|
|
188
|
+
]
|
|
189
|
+
})
|
|
190
|
+
});
|
|
121
191
|
}
|
|
122
192
|
// Default puck data if none exists
|
|
123
193
|
const initialData = page.puckData || {
|
|
124
194
|
root: {
|
|
125
195
|
props: {
|
|
126
|
-
title: page.title || 'New Page'
|
|
127
|
-
}
|
|
196
|
+
title: page.title || 'New Page'
|
|
197
|
+
}
|
|
128
198
|
},
|
|
129
199
|
content: [],
|
|
130
|
-
zones: {}
|
|
200
|
+
zones: {}
|
|
131
201
|
};
|
|
132
|
-
return
|
|
202
|
+
return /*#__PURE__*/ _jsx(PuckEditor, {
|
|
203
|
+
pageId: page.id,
|
|
204
|
+
initialData: initialData,
|
|
205
|
+
config: config,
|
|
206
|
+
pageTitle: page.title,
|
|
207
|
+
pageSlug: page.slug,
|
|
208
|
+
apiEndpoint: `${apiBasePath}/${collectionSlug}`,
|
|
209
|
+
backUrl: computedBackUrl,
|
|
210
|
+
previewUrl: previewUrl,
|
|
211
|
+
layoutStyles: layoutStyles,
|
|
212
|
+
layoutKey: layoutKey,
|
|
213
|
+
plugins: plugins,
|
|
214
|
+
onSaveSuccess: onSaveSuccess,
|
|
215
|
+
onSaveError: onSaveError,
|
|
216
|
+
initialStatus: page._status
|
|
217
|
+
});
|
|
133
218
|
}
|
|
134
219
|
export default PuckEditorView;
|
|
220
|
+
|
|
135
221
|
//# sourceMappingURL=PuckEditorView.js.map
|