@delmaredigital/payload-puck 0.6.13 → 0.6.14
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/dist/admin/EditWithPuckButton.d.ts +0 -1
- package/dist/admin/EditWithPuckButton.js +0 -2
- package/dist/admin/EditWithPuckCell.d.ts +0 -1
- package/dist/admin/EditWithPuckCell.js +0 -2
- package/dist/admin/PuckEditorView.d.ts +0 -1
- package/dist/admin/PuckEditorView.js +0 -2
- package/dist/admin/client.d.ts +0 -1
- package/dist/admin/client.js +0 -2
- package/dist/admin/generateAdminComponents.d.ts +0 -1
- package/dist/admin/generateAdminComponents.js +0 -2
- package/dist/admin/index.d.ts +0 -1
- package/dist/admin/index.js +0 -2
- package/dist/ai/collections/AiContext.d.ts +0 -1
- package/dist/ai/collections/AiContext.js +0 -2
- package/dist/ai/collections/AiPrompts.d.ts +0 -1
- package/dist/ai/collections/AiPrompts.js +0 -2
- package/dist/ai/createAiApiRoutes.d.ts +0 -1
- package/dist/ai/createAiApiRoutes.js +0 -2
- package/dist/ai/createAiGenerate.d.ts +0 -1
- package/dist/ai/createAiGenerate.js +0 -2
- package/dist/ai/createAiPlugin.d.ts +0 -1
- package/dist/ai/createAiPlugin.js +0 -2
- package/dist/ai/hooks/useAiContext.d.ts +0 -1
- package/dist/ai/hooks/useAiContext.js +0 -2
- package/dist/ai/hooks/useAiPrompts.d.ts +0 -1
- package/dist/ai/hooks/useAiPrompts.js +0 -2
- package/dist/ai/index.d.ts +0 -1
- package/dist/ai/index.js +0 -2
- package/dist/ai/plugins/ContextEditorPanel.d.ts +0 -1
- package/dist/ai/plugins/ContextEditorPanel.js +0 -2
- package/dist/ai/plugins/PromptEditorPanel.d.ts +0 -1
- package/dist/ai/plugins/PromptEditorPanel.js +0 -2
- package/dist/ai/plugins/contextEditorPlugin.d.ts +0 -1
- package/dist/ai/plugins/contextEditorPlugin.js +0 -2
- package/dist/ai/plugins/promptApiRoutes.d.ts +0 -1
- package/dist/ai/plugins/promptApiRoutes.js +0 -2
- package/dist/ai/plugins/promptEditorPlugin.d.ts +0 -1
- package/dist/ai/plugins/promptEditorPlugin.js +0 -2
- package/dist/ai/presets/componentAiDefaults.d.ts +0 -1
- package/dist/ai/presets/componentAiDefaults.js +0 -2
- package/dist/ai/presets/index.d.ts +0 -1
- package/dist/ai/presets/index.js +0 -2
- package/dist/ai/presets/instructions/interactive.d.ts +0 -1
- package/dist/ai/presets/instructions/interactive.js +0 -2
- package/dist/ai/presets/instructions/layout.d.ts +0 -1
- package/dist/ai/presets/instructions/layout.js +0 -2
- package/dist/ai/presets/instructions/media.d.ts +0 -1
- package/dist/ai/presets/instructions/media.js +0 -2
- package/dist/ai/presets/instructions/pagePatterns.d.ts +0 -1
- package/dist/ai/presets/instructions/pagePatterns.js +0 -2
- package/dist/ai/presets/instructions/schemas.d.ts +0 -1
- package/dist/ai/presets/instructions/schemas.js +0 -2
- package/dist/ai/presets/instructions/typography.d.ts +0 -1
- package/dist/ai/presets/instructions/typography.js +0 -2
- package/dist/ai/tools/index.d.ts +0 -1
- package/dist/ai/tools/index.js +0 -2
- package/dist/ai/types.d.ts +0 -1
- package/dist/ai/types.js +0 -2
- package/dist/ai/utils/injectAiConfig.d.ts +0 -1
- package/dist/ai/utils/injectAiConfig.js +0 -2
- package/dist/api/createPuckApiRoutes.d.ts +0 -1
- package/dist/api/createPuckApiRoutes.js +0 -2
- package/dist/api/createPuckApiRoutesVersions.d.ts +0 -1
- package/dist/api/createPuckApiRoutesVersions.js +0 -2
- package/dist/api/createPuckApiRoutesWithId.d.ts +0 -1
- package/dist/api/createPuckApiRoutesWithId.js +0 -2
- package/dist/api/index.d.ts +0 -1
- package/dist/api/index.js +0 -2
- package/dist/api/payload-config.d.js +1 -2
- package/dist/api/types.d.ts +0 -1
- package/dist/api/types.js +0 -2
- package/dist/api/utils/mapRootProps.d.ts +0 -1
- package/dist/api/utils/mapRootProps.js +0 -2
- package/dist/collections/Templates.d.ts +0 -1
- package/dist/collections/Templates.js +0 -2
- package/dist/components/AccordionClient.d.ts +0 -1
- package/dist/components/AccordionClient.js +0 -2
- package/dist/components/AnimatedWrapper.d.ts +0 -1
- package/dist/components/AnimatedWrapper.js +0 -2
- package/dist/components/exports.d.ts +0 -1
- package/dist/components/exports.js +0 -2
- package/dist/components/index.d.ts +0 -1
- package/dist/components/index.js +0 -2
- package/dist/components/interactive/Accordion.d.ts +0 -1
- package/dist/components/interactive/Accordion.js +0 -2
- package/dist/components/interactive/Accordion.server.d.ts +0 -1
- package/dist/components/interactive/Accordion.server.js +0 -2
- package/dist/components/interactive/Button.d.ts +0 -1
- package/dist/components/interactive/Button.js +0 -2
- package/dist/components/interactive/Button.server.d.ts +0 -1
- package/dist/components/interactive/Button.server.js +0 -2
- package/dist/components/interactive/Card.d.ts +0 -1
- package/dist/components/interactive/Card.js +0 -2
- package/dist/components/interactive/Card.server.d.ts +0 -1
- package/dist/components/interactive/Card.server.js +0 -2
- package/dist/components/interactive/Divider.d.ts +0 -1
- package/dist/components/interactive/Divider.js +0 -2
- package/dist/components/interactive/Divider.server.d.ts +0 -1
- package/dist/components/interactive/Divider.server.js +0 -2
- package/dist/components/interactive/index.d.ts +0 -1
- package/dist/components/interactive/index.js +0 -2
- package/dist/components/layout/Container.d.ts +0 -1
- package/dist/components/layout/Container.js +0 -2
- package/dist/components/layout/Container.server.d.ts +0 -1
- package/dist/components/layout/Container.server.js +0 -2
- package/dist/components/layout/Flex.d.ts +0 -1
- package/dist/components/layout/Flex.js +0 -2
- package/dist/components/layout/Flex.server.d.ts +0 -1
- package/dist/components/layout/Flex.server.js +0 -2
- package/dist/components/layout/Grid.d.ts +0 -1
- package/dist/components/layout/Grid.js +0 -2
- package/dist/components/layout/Grid.server.d.ts +0 -1
- package/dist/components/layout/Grid.server.js +0 -2
- package/dist/components/layout/Section.d.ts +0 -1
- package/dist/components/layout/Section.js +0 -2
- package/dist/components/layout/Section.server.d.ts +0 -1
- package/dist/components/layout/Section.server.js +0 -2
- package/dist/components/layout/Spacer.d.ts +0 -1
- package/dist/components/layout/Spacer.js +0 -2
- package/dist/components/layout/Spacer.server.d.ts +0 -1
- package/dist/components/layout/Spacer.server.js +0 -2
- package/dist/components/layout/Template.d.ts +0 -1
- package/dist/components/layout/Template.js +0 -2
- package/dist/components/layout/Template.server.d.ts +0 -1
- package/dist/components/layout/Template.server.js +0 -2
- package/dist/components/layout/index.d.ts +0 -1
- package/dist/components/layout/index.js +0 -2
- package/dist/components/media/Image.d.ts +0 -1
- package/dist/components/media/Image.js +0 -2
- package/dist/components/media/Image.server.d.ts +0 -1
- package/dist/components/media/Image.server.js +0 -2
- package/dist/components/media/index.d.ts +0 -1
- package/dist/components/media/index.js +0 -2
- package/dist/components/typography/Heading.d.ts +0 -1
- package/dist/components/typography/Heading.js +0 -2
- package/dist/components/typography/Heading.server.d.ts +0 -1
- package/dist/components/typography/Heading.server.js +0 -2
- package/dist/components/typography/RichText.editor.d.ts +0 -1
- package/dist/components/typography/RichText.editor.js +0 -2
- package/dist/components/typography/RichText.server.d.ts +0 -1
- package/dist/components/typography/RichText.server.js +0 -2
- package/dist/components/typography/Text.d.ts +0 -1
- package/dist/components/typography/Text.js +0 -2
- package/dist/components/typography/Text.server.d.ts +0 -1
- package/dist/components/typography/Text.server.js +0 -2
- package/dist/components/typography/index.d.ts +0 -1
- package/dist/components/typography/index.js +0 -2
- package/dist/config/config.editor.d.ts +0 -1
- package/dist/config/config.editor.js +0 -2
- package/dist/config/index.d.ts +0 -1
- package/dist/config/index.js +0 -2
- package/dist/config/merge.d.ts +0 -1
- package/dist/config/merge.js +0 -2
- package/dist/config/presets.d.ts +0 -1
- package/dist/config/presets.js +0 -2
- package/dist/config/types.d.ts +0 -1
- package/dist/config/types.js +0 -2
- package/dist/editor/PuckEditor.d.ts +0 -1
- package/dist/editor/PuckEditor.js +0 -2
- package/dist/editor/PuckEditorImpl.client.d.ts +0 -1
- package/dist/editor/PuckEditorImpl.client.js +0 -2
- package/dist/editor/components/DarkModeStyles.d.ts +0 -1
- package/dist/editor/components/DarkModeStyles.js +0 -2
- package/dist/editor/components/HeaderActions.d.ts +0 -1
- package/dist/editor/components/HeaderActions.js +0 -2
- package/dist/editor/components/IframeWrapper.d.ts +0 -1
- package/dist/editor/components/IframeWrapper.js +0 -2
- package/dist/editor/components/LoadingState.d.ts +0 -1
- package/dist/editor/components/LoadingState.js +0 -2
- package/dist/editor/components/PreviewModal.d.ts +0 -1
- package/dist/editor/components/PreviewModal.js +0 -2
- package/dist/editor/components/PreviewModeToggle.d.ts +0 -1
- package/dist/editor/components/PreviewModeToggle.js +0 -2
- package/dist/editor/components/VersionHistory.d.ts +0 -1
- package/dist/editor/components/VersionHistory.js +0 -2
- package/dist/editor/hooks/useDarkMode.d.ts +0 -1
- package/dist/editor/hooks/useDarkMode.js +0 -2
- package/dist/editor/hooks/useUnsavedChanges.d.ts +0 -1
- package/dist/editor/hooks/useUnsavedChanges.js +0 -2
- package/dist/editor/index.d.ts +0 -1
- package/dist/editor/index.js +0 -2
- package/dist/editor/plugins/VersionHistoryPanel.d.ts +0 -1
- package/dist/editor/plugins/VersionHistoryPanel.js +0 -2
- package/dist/editor/plugins/index.d.ts +0 -1
- package/dist/editor/plugins/index.js +0 -2
- package/dist/editor/plugins/versionHistoryPlugin.d.ts +0 -1
- package/dist/editor/plugins/versionHistoryPlugin.js +0 -2
- package/dist/editor/utils/detectPageTree.d.ts +0 -1
- package/dist/editor/utils/detectPageTree.js +0 -2
- package/dist/editor/utils/index.d.ts +0 -1
- package/dist/editor/utils/index.js +0 -2
- package/dist/editor/utils/injectPageTreeFields.d.ts +0 -1
- package/dist/editor/utils/injectPageTreeFields.js +0 -2
- package/dist/endpoints/ai.d.ts +0 -1
- package/dist/endpoints/ai.js +0 -2
- package/dist/endpoints/context.d.ts +0 -1
- package/dist/endpoints/context.js +0 -2
- package/dist/endpoints/index.d.ts +0 -1
- package/dist/endpoints/index.js +0 -2
- package/dist/endpoints/postcss.d.js +1 -2
- package/dist/endpoints/prompts.d.ts +0 -1
- package/dist/endpoints/prompts.js +0 -2
- package/dist/endpoints/styles.d.ts +0 -1
- package/dist/endpoints/styles.js +0 -2
- package/dist/exports/client.d.ts +0 -1
- package/dist/exports/client.js +0 -2
- package/dist/exports/rsc.d.ts +0 -1
- package/dist/exports/rsc.js +0 -2
- package/dist/fields/AlignmentField.d.ts +0 -1
- package/dist/fields/AlignmentField.js +0 -2
- package/dist/fields/AnimationField.d.ts +0 -1
- package/dist/fields/AnimationField.js +0 -2
- package/dist/fields/BackgroundField.d.ts +0 -1
- package/dist/fields/BackgroundField.js +0 -2
- package/dist/fields/BorderField.d.ts +0 -1
- package/dist/fields/BorderField.js +0 -2
- package/dist/fields/ColorPickerField.d.ts +0 -1
- package/dist/fields/ColorPickerField.js +0 -2
- package/dist/fields/ContentAlignmentField.d.ts +0 -1
- package/dist/fields/ContentAlignmentField.js +0 -2
- package/dist/fields/DimensionsField.d.ts +0 -1
- package/dist/fields/DimensionsField.js +0 -2
- package/dist/fields/FlexAlignmentField.d.ts +0 -1
- package/dist/fields/FlexAlignmentField.js +0 -2
- package/dist/fields/FolderPickerField.d.ts +0 -1
- package/dist/fields/FolderPickerField.js +0 -2
- package/dist/fields/GradientEditor.d.ts +0 -1
- package/dist/fields/GradientEditor.js +0 -2
- package/dist/fields/LockedField.d.ts +0 -1
- package/dist/fields/LockedField.js +0 -2
- package/dist/fields/MarginField.d.ts +0 -1
- package/dist/fields/MarginField.js +0 -2
- package/dist/fields/MediaField.d.ts +0 -1
- package/dist/fields/MediaField.js +0 -2
- package/dist/fields/PaddingField.d.ts +0 -1
- package/dist/fields/PaddingField.js +0 -2
- package/dist/fields/PageSegmentField.d.ts +0 -1
- package/dist/fields/PageSegmentField.js +0 -2
- package/dist/fields/ResetField.d.ts +0 -1
- package/dist/fields/ResetField.js +0 -2
- package/dist/fields/ResponsiveField.d.ts +0 -1
- package/dist/fields/ResponsiveField.js +0 -2
- package/dist/fields/ResponsiveVisibilityField.d.ts +0 -1
- package/dist/fields/ResponsiveVisibilityField.js +0 -2
- package/dist/fields/SizeField.d.ts +0 -1
- package/dist/fields/SizeField.js +0 -2
- package/dist/fields/SlugPreviewField.d.ts +0 -1
- package/dist/fields/SlugPreviewField.js +0 -2
- package/dist/fields/TemplateField.d.ts +0 -1
- package/dist/fields/TemplateField.js +0 -2
- package/dist/fields/TransformField.d.ts +0 -1
- package/dist/fields/TransformField.js +0 -2
- package/dist/fields/VerticalAlignmentField.d.ts +0 -1
- package/dist/fields/VerticalAlignmentField.js +0 -2
- package/dist/fields/WidthField.d.ts +0 -1
- package/dist/fields/WidthField.js +0 -2
- package/dist/fields/index.d.ts +0 -1
- package/dist/fields/index.js +0 -2
- package/dist/fields/richtext/controls/ColorPickerControl.d.ts +0 -1
- package/dist/fields/richtext/controls/ColorPickerControl.js +0 -2
- package/dist/fields/richtext/controls/DropdownPortal.d.ts +0 -1
- package/dist/fields/richtext/controls/DropdownPortal.js +0 -2
- package/dist/fields/richtext/controls/FontSizeControl.d.ts +0 -1
- package/dist/fields/richtext/controls/FontSizeControl.js +0 -2
- package/dist/fields/richtext/controls/HighlightControl.d.ts +0 -1
- package/dist/fields/richtext/controls/HighlightControl.js +0 -2
- package/dist/fields/richtext/controls/index.d.ts +0 -1
- package/dist/fields/richtext/controls/index.js +0 -2
- package/dist/fields/richtext/controls/shared.d.ts +0 -1
- package/dist/fields/richtext/controls/shared.js +0 -2
- package/dist/fields/richtext/createRichTextField.d.ts +0 -1
- package/dist/fields/richtext/createRichTextField.js +0 -2
- package/dist/fields/richtext/extensions/FontSize.d.ts +0 -1
- package/dist/fields/richtext/extensions/FontSize.js +0 -2
- package/dist/fields/richtext/extensions/index.d.ts +0 -1
- package/dist/fields/richtext/extensions/index.js +0 -2
- package/dist/fields/richtext/index.d.ts +0 -1
- package/dist/fields/richtext/index.js +0 -2
- package/dist/fields/shared.d.ts +0 -1
- package/dist/fields/shared.js +0 -2
- package/dist/hooks/index.d.ts +0 -1
- package/dist/hooks/index.js +0 -2
- package/dist/hooks/useResponsiveStyles.d.ts +0 -1
- package/dist/hooks/useResponsiveStyles.js +0 -2
- package/dist/hooks/useScrollAnimation.d.ts +0 -1
- package/dist/hooks/useScrollAnimation.js +0 -2
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -2
- package/dist/layouts/LayoutWrapper.d.ts +0 -1
- package/dist/layouts/LayoutWrapper.js +0 -2
- package/dist/layouts/defaults.d.ts +0 -1
- package/dist/layouts/defaults.js +0 -2
- package/dist/layouts/index.d.ts +0 -1
- package/dist/layouts/index.js +0 -2
- package/dist/layouts/types.d.ts +0 -1
- package/dist/layouts/types.js +0 -2
- package/dist/layouts/utils.d.ts +0 -1
- package/dist/layouts/utils.js +0 -2
- package/dist/next/index.d.ts +0 -1
- package/dist/next/index.js +0 -2
- package/dist/plugin/collections/Pages.d.ts +0 -1
- package/dist/plugin/collections/Pages.js +0 -2
- package/dist/plugin/fields/index.d.ts +0 -1
- package/dist/plugin/fields/index.js +0 -2
- package/dist/plugin/fields/types.d.ts +0 -1
- package/dist/plugin/fields/types.js +0 -2
- package/dist/plugin/hooks/index.d.ts +0 -1
- package/dist/plugin/hooks/index.js +0 -2
- package/dist/plugin/hooks/isHomepageUnique.d.ts +0 -1
- package/dist/plugin/hooks/isHomepageUnique.js +0 -2
- package/dist/plugin/index.d.ts +0 -1
- package/dist/plugin/index.js +0 -2
- package/dist/render/HybridPageRenderer.d.ts +0 -1
- package/dist/render/HybridPageRenderer.js +0 -2
- package/dist/render/PageRenderer.d.ts +0 -1
- package/dist/render/PageRenderer.js +0 -2
- package/dist/render/PuckEditor.client.d.ts +0 -1
- package/dist/render/PuckEditor.client.js +0 -2
- package/dist/render/index.d.ts +0 -1
- package/dist/render/index.js +0 -2
- package/dist/theme/context.d.ts +0 -1
- package/dist/theme/context.js +0 -2
- package/dist/theme/defaults.d.ts +0 -1
- package/dist/theme/defaults.js +0 -2
- package/dist/theme/example.d.ts +0 -1
- package/dist/theme/example.js +0 -2
- package/dist/theme/index.d.ts +0 -1
- package/dist/theme/index.js +0 -2
- package/dist/theme/types.d.ts +0 -1
- package/dist/theme/types.js +0 -2
- package/dist/theme/utils.d.ts +0 -1
- package/dist/theme/utils.js +0 -2
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.js +0 -2
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.js +0 -2
- package/dist/utils/migration.d.ts +0 -1
- package/dist/utils/migration.js +0 -2
- package/dist/utils/validation.d.ts +0 -1
- package/dist/utils/validation.js +0 -2
- package/dist/version.d.ts +1 -2
- package/dist/version.js +1 -3
- package/dist/views/PuckConfigContext.d.ts +0 -1
- package/dist/views/PuckConfigContext.js +0 -2
- package/dist/views/PuckEditorView.d.ts +0 -1
- package/dist/views/PuckEditorView.js +0 -2
- package/dist/views/index.d.ts +0 -1
- package/dist/views/index.js +0 -2
- package/package.json +1 -1
- package/dist/admin/EditWithPuckButton.d.ts.map +0 -1
- package/dist/admin/EditWithPuckButton.js.map +0 -1
- package/dist/admin/EditWithPuckCell.d.ts.map +0 -1
- package/dist/admin/EditWithPuckCell.js.map +0 -1
- package/dist/admin/PuckEditorView.d.ts.map +0 -1
- package/dist/admin/PuckEditorView.js.map +0 -1
- package/dist/admin/client.d.ts.map +0 -1
- package/dist/admin/client.js.map +0 -1
- package/dist/admin/generateAdminComponents.d.ts.map +0 -1
- package/dist/admin/generateAdminComponents.js.map +0 -1
- package/dist/admin/index.d.ts.map +0 -1
- package/dist/admin/index.js.map +0 -1
- package/dist/ai/collections/AiContext.d.ts.map +0 -1
- package/dist/ai/collections/AiContext.js.map +0 -1
- package/dist/ai/collections/AiPrompts.d.ts.map +0 -1
- package/dist/ai/collections/AiPrompts.js.map +0 -1
- package/dist/ai/createAiApiRoutes.d.ts.map +0 -1
- package/dist/ai/createAiApiRoutes.js.map +0 -1
- package/dist/ai/createAiGenerate.d.ts.map +0 -1
- package/dist/ai/createAiGenerate.js.map +0 -1
- package/dist/ai/createAiPlugin.d.ts.map +0 -1
- package/dist/ai/createAiPlugin.js.map +0 -1
- package/dist/ai/hooks/useAiContext.d.ts.map +0 -1
- package/dist/ai/hooks/useAiContext.js.map +0 -1
- package/dist/ai/hooks/useAiPrompts.d.ts.map +0 -1
- package/dist/ai/hooks/useAiPrompts.js.map +0 -1
- package/dist/ai/index.d.ts.map +0 -1
- package/dist/ai/index.js.map +0 -1
- package/dist/ai/plugins/ContextEditorPanel.d.ts.map +0 -1
- package/dist/ai/plugins/ContextEditorPanel.js.map +0 -1
- package/dist/ai/plugins/PromptEditorPanel.d.ts.map +0 -1
- package/dist/ai/plugins/PromptEditorPanel.js.map +0 -1
- package/dist/ai/plugins/contextEditorPlugin.d.ts.map +0 -1
- package/dist/ai/plugins/contextEditorPlugin.js.map +0 -1
- package/dist/ai/plugins/promptApiRoutes.d.ts.map +0 -1
- package/dist/ai/plugins/promptApiRoutes.js.map +0 -1
- package/dist/ai/plugins/promptEditorPlugin.d.ts.map +0 -1
- package/dist/ai/plugins/promptEditorPlugin.js.map +0 -1
- package/dist/ai/presets/componentAiDefaults.d.ts.map +0 -1
- package/dist/ai/presets/componentAiDefaults.js.map +0 -1
- package/dist/ai/presets/index.d.ts.map +0 -1
- package/dist/ai/presets/index.js.map +0 -1
- package/dist/ai/presets/instructions/interactive.d.ts.map +0 -1
- package/dist/ai/presets/instructions/interactive.js.map +0 -1
- package/dist/ai/presets/instructions/layout.d.ts.map +0 -1
- package/dist/ai/presets/instructions/layout.js.map +0 -1
- package/dist/ai/presets/instructions/media.d.ts.map +0 -1
- package/dist/ai/presets/instructions/media.js.map +0 -1
- package/dist/ai/presets/instructions/pagePatterns.d.ts.map +0 -1
- package/dist/ai/presets/instructions/pagePatterns.js.map +0 -1
- package/dist/ai/presets/instructions/schemas.d.ts.map +0 -1
- package/dist/ai/presets/instructions/schemas.js.map +0 -1
- package/dist/ai/presets/instructions/typography.d.ts.map +0 -1
- package/dist/ai/presets/instructions/typography.js.map +0 -1
- package/dist/ai/tools/index.d.ts.map +0 -1
- package/dist/ai/tools/index.js.map +0 -1
- package/dist/ai/types.d.ts.map +0 -1
- package/dist/ai/types.js.map +0 -1
- package/dist/ai/utils/injectAiConfig.d.ts.map +0 -1
- package/dist/ai/utils/injectAiConfig.js.map +0 -1
- package/dist/api/createPuckApiRoutes.d.ts.map +0 -1
- package/dist/api/createPuckApiRoutes.js.map +0 -1
- package/dist/api/createPuckApiRoutesVersions.d.ts.map +0 -1
- package/dist/api/createPuckApiRoutesVersions.js.map +0 -1
- package/dist/api/createPuckApiRoutesWithId.d.ts.map +0 -1
- package/dist/api/createPuckApiRoutesWithId.js.map +0 -1
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js.map +0 -1
- package/dist/api/payload-config.d.js.map +0 -1
- package/dist/api/types.d.ts.map +0 -1
- package/dist/api/types.js.map +0 -1
- package/dist/api/utils/mapRootProps.d.ts.map +0 -1
- package/dist/api/utils/mapRootProps.js.map +0 -1
- package/dist/collections/Templates.d.ts.map +0 -1
- package/dist/collections/Templates.js.map +0 -1
- package/dist/components/AccordionClient.d.ts.map +0 -1
- package/dist/components/AccordionClient.js.map +0 -1
- package/dist/components/AnimatedWrapper.d.ts.map +0 -1
- package/dist/components/AnimatedWrapper.js.map +0 -1
- package/dist/components/exports.d.ts.map +0 -1
- package/dist/components/exports.js.map +0 -1
- package/dist/components/index.d.ts.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/interactive/Accordion.d.ts.map +0 -1
- package/dist/components/interactive/Accordion.js.map +0 -1
- package/dist/components/interactive/Accordion.server.d.ts.map +0 -1
- package/dist/components/interactive/Accordion.server.js.map +0 -1
- package/dist/components/interactive/Button.d.ts.map +0 -1
- package/dist/components/interactive/Button.js.map +0 -1
- package/dist/components/interactive/Button.server.d.ts.map +0 -1
- package/dist/components/interactive/Button.server.js.map +0 -1
- package/dist/components/interactive/Card.d.ts.map +0 -1
- package/dist/components/interactive/Card.js.map +0 -1
- package/dist/components/interactive/Card.server.d.ts.map +0 -1
- package/dist/components/interactive/Card.server.js.map +0 -1
- package/dist/components/interactive/Divider.d.ts.map +0 -1
- package/dist/components/interactive/Divider.js.map +0 -1
- package/dist/components/interactive/Divider.server.d.ts.map +0 -1
- package/dist/components/interactive/Divider.server.js.map +0 -1
- package/dist/components/interactive/index.d.ts.map +0 -1
- package/dist/components/interactive/index.js.map +0 -1
- package/dist/components/layout/Container.d.ts.map +0 -1
- package/dist/components/layout/Container.js.map +0 -1
- package/dist/components/layout/Container.server.d.ts.map +0 -1
- package/dist/components/layout/Container.server.js.map +0 -1
- package/dist/components/layout/Flex.d.ts.map +0 -1
- package/dist/components/layout/Flex.js.map +0 -1
- package/dist/components/layout/Flex.server.d.ts.map +0 -1
- package/dist/components/layout/Flex.server.js.map +0 -1
- package/dist/components/layout/Grid.d.ts.map +0 -1
- package/dist/components/layout/Grid.js.map +0 -1
- package/dist/components/layout/Grid.server.d.ts.map +0 -1
- package/dist/components/layout/Grid.server.js.map +0 -1
- package/dist/components/layout/Section.d.ts.map +0 -1
- package/dist/components/layout/Section.js.map +0 -1
- package/dist/components/layout/Section.server.d.ts.map +0 -1
- package/dist/components/layout/Section.server.js.map +0 -1
- package/dist/components/layout/Spacer.d.ts.map +0 -1
- package/dist/components/layout/Spacer.js.map +0 -1
- package/dist/components/layout/Spacer.server.d.ts.map +0 -1
- package/dist/components/layout/Spacer.server.js.map +0 -1
- package/dist/components/layout/Template.d.ts.map +0 -1
- package/dist/components/layout/Template.js.map +0 -1
- package/dist/components/layout/Template.server.d.ts.map +0 -1
- package/dist/components/layout/Template.server.js.map +0 -1
- package/dist/components/layout/index.d.ts.map +0 -1
- package/dist/components/layout/index.js.map +0 -1
- package/dist/components/media/Image.d.ts.map +0 -1
- package/dist/components/media/Image.js.map +0 -1
- package/dist/components/media/Image.server.d.ts.map +0 -1
- package/dist/components/media/Image.server.js.map +0 -1
- package/dist/components/media/index.d.ts.map +0 -1
- package/dist/components/media/index.js.map +0 -1
- package/dist/components/typography/Heading.d.ts.map +0 -1
- package/dist/components/typography/Heading.js.map +0 -1
- package/dist/components/typography/Heading.server.d.ts.map +0 -1
- package/dist/components/typography/Heading.server.js.map +0 -1
- package/dist/components/typography/RichText.editor.d.ts.map +0 -1
- package/dist/components/typography/RichText.editor.js.map +0 -1
- package/dist/components/typography/RichText.server.d.ts.map +0 -1
- package/dist/components/typography/RichText.server.js.map +0 -1
- package/dist/components/typography/Text.d.ts.map +0 -1
- package/dist/components/typography/Text.js.map +0 -1
- package/dist/components/typography/Text.server.d.ts.map +0 -1
- package/dist/components/typography/Text.server.js.map +0 -1
- package/dist/components/typography/index.d.ts.map +0 -1
- package/dist/components/typography/index.js.map +0 -1
- package/dist/config/config.editor.d.ts.map +0 -1
- package/dist/config/config.editor.js.map +0 -1
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js.map +0 -1
- package/dist/config/merge.d.ts.map +0 -1
- package/dist/config/merge.js.map +0 -1
- package/dist/config/presets.d.ts.map +0 -1
- package/dist/config/presets.js.map +0 -1
- package/dist/config/types.d.ts.map +0 -1
- package/dist/config/types.js.map +0 -1
- package/dist/editor/PuckEditor.d.ts.map +0 -1
- package/dist/editor/PuckEditor.js.map +0 -1
- package/dist/editor/PuckEditorImpl.client.d.ts.map +0 -1
- package/dist/editor/PuckEditorImpl.client.js.map +0 -1
- package/dist/editor/components/DarkModeStyles.d.ts.map +0 -1
- package/dist/editor/components/DarkModeStyles.js.map +0 -1
- package/dist/editor/components/HeaderActions.d.ts.map +0 -1
- package/dist/editor/components/HeaderActions.js.map +0 -1
- package/dist/editor/components/IframeWrapper.d.ts.map +0 -1
- package/dist/editor/components/IframeWrapper.js.map +0 -1
- package/dist/editor/components/LoadingState.d.ts.map +0 -1
- package/dist/editor/components/LoadingState.js.map +0 -1
- package/dist/editor/components/PreviewModal.d.ts.map +0 -1
- package/dist/editor/components/PreviewModal.js.map +0 -1
- package/dist/editor/components/PreviewModeToggle.d.ts.map +0 -1
- package/dist/editor/components/PreviewModeToggle.js.map +0 -1
- package/dist/editor/components/VersionHistory.d.ts.map +0 -1
- package/dist/editor/components/VersionHistory.js.map +0 -1
- package/dist/editor/hooks/useDarkMode.d.ts.map +0 -1
- package/dist/editor/hooks/useDarkMode.js.map +0 -1
- package/dist/editor/hooks/useUnsavedChanges.d.ts.map +0 -1
- package/dist/editor/hooks/useUnsavedChanges.js.map +0 -1
- package/dist/editor/index.d.ts.map +0 -1
- package/dist/editor/index.js.map +0 -1
- package/dist/editor/plugins/VersionHistoryPanel.d.ts.map +0 -1
- package/dist/editor/plugins/VersionHistoryPanel.js.map +0 -1
- package/dist/editor/plugins/index.d.ts.map +0 -1
- package/dist/editor/plugins/index.js.map +0 -1
- package/dist/editor/plugins/versionHistoryPlugin.d.ts.map +0 -1
- package/dist/editor/plugins/versionHistoryPlugin.js.map +0 -1
- package/dist/editor/utils/detectPageTree.d.ts.map +0 -1
- package/dist/editor/utils/detectPageTree.js.map +0 -1
- package/dist/editor/utils/index.d.ts.map +0 -1
- package/dist/editor/utils/index.js.map +0 -1
- package/dist/editor/utils/injectPageTreeFields.d.ts.map +0 -1
- package/dist/editor/utils/injectPageTreeFields.js.map +0 -1
- package/dist/endpoints/ai.d.ts.map +0 -1
- package/dist/endpoints/ai.js.map +0 -1
- package/dist/endpoints/context.d.ts.map +0 -1
- package/dist/endpoints/context.js.map +0 -1
- package/dist/endpoints/index.d.ts.map +0 -1
- package/dist/endpoints/index.js.map +0 -1
- package/dist/endpoints/postcss.d.js.map +0 -1
- package/dist/endpoints/prompts.d.ts.map +0 -1
- package/dist/endpoints/prompts.js.map +0 -1
- package/dist/endpoints/styles.d.ts.map +0 -1
- package/dist/endpoints/styles.js.map +0 -1
- package/dist/exports/client.d.ts.map +0 -1
- package/dist/exports/client.js.map +0 -1
- package/dist/exports/rsc.d.ts.map +0 -1
- package/dist/exports/rsc.js.map +0 -1
- package/dist/fields/AlignmentField.d.ts.map +0 -1
- package/dist/fields/AlignmentField.js.map +0 -1
- package/dist/fields/AnimationField.d.ts.map +0 -1
- package/dist/fields/AnimationField.js.map +0 -1
- package/dist/fields/BackgroundField.d.ts.map +0 -1
- package/dist/fields/BackgroundField.js.map +0 -1
- package/dist/fields/BorderField.d.ts.map +0 -1
- package/dist/fields/BorderField.js.map +0 -1
- package/dist/fields/ColorPickerField.d.ts.map +0 -1
- package/dist/fields/ColorPickerField.js.map +0 -1
- package/dist/fields/ContentAlignmentField.d.ts.map +0 -1
- package/dist/fields/ContentAlignmentField.js.map +0 -1
- package/dist/fields/DimensionsField.d.ts.map +0 -1
- package/dist/fields/DimensionsField.js.map +0 -1
- package/dist/fields/FlexAlignmentField.d.ts.map +0 -1
- package/dist/fields/FlexAlignmentField.js.map +0 -1
- package/dist/fields/FolderPickerField.d.ts.map +0 -1
- package/dist/fields/FolderPickerField.js.map +0 -1
- package/dist/fields/GradientEditor.d.ts.map +0 -1
- package/dist/fields/GradientEditor.js.map +0 -1
- package/dist/fields/LockedField.d.ts.map +0 -1
- package/dist/fields/LockedField.js.map +0 -1
- package/dist/fields/MarginField.d.ts.map +0 -1
- package/dist/fields/MarginField.js.map +0 -1
- package/dist/fields/MediaField.d.ts.map +0 -1
- package/dist/fields/MediaField.js.map +0 -1
- package/dist/fields/PaddingField.d.ts.map +0 -1
- package/dist/fields/PaddingField.js.map +0 -1
- package/dist/fields/PageSegmentField.d.ts.map +0 -1
- package/dist/fields/PageSegmentField.js.map +0 -1
- package/dist/fields/ResetField.d.ts.map +0 -1
- package/dist/fields/ResetField.js.map +0 -1
- package/dist/fields/ResponsiveField.d.ts.map +0 -1
- package/dist/fields/ResponsiveField.js.map +0 -1
- package/dist/fields/ResponsiveVisibilityField.d.ts.map +0 -1
- package/dist/fields/ResponsiveVisibilityField.js.map +0 -1
- package/dist/fields/SizeField.d.ts.map +0 -1
- package/dist/fields/SizeField.js.map +0 -1
- package/dist/fields/SlugPreviewField.d.ts.map +0 -1
- package/dist/fields/SlugPreviewField.js.map +0 -1
- package/dist/fields/TemplateField.d.ts.map +0 -1
- package/dist/fields/TemplateField.js.map +0 -1
- package/dist/fields/TransformField.d.ts.map +0 -1
- package/dist/fields/TransformField.js.map +0 -1
- package/dist/fields/VerticalAlignmentField.d.ts.map +0 -1
- package/dist/fields/VerticalAlignmentField.js.map +0 -1
- package/dist/fields/WidthField.d.ts.map +0 -1
- package/dist/fields/WidthField.js.map +0 -1
- package/dist/fields/index.d.ts.map +0 -1
- package/dist/fields/index.js.map +0 -1
- package/dist/fields/richtext/controls/ColorPickerControl.d.ts.map +0 -1
- package/dist/fields/richtext/controls/ColorPickerControl.js.map +0 -1
- package/dist/fields/richtext/controls/DropdownPortal.d.ts.map +0 -1
- package/dist/fields/richtext/controls/DropdownPortal.js.map +0 -1
- package/dist/fields/richtext/controls/FontSizeControl.d.ts.map +0 -1
- package/dist/fields/richtext/controls/FontSizeControl.js.map +0 -1
- package/dist/fields/richtext/controls/HighlightControl.d.ts.map +0 -1
- package/dist/fields/richtext/controls/HighlightControl.js.map +0 -1
- package/dist/fields/richtext/controls/index.d.ts.map +0 -1
- package/dist/fields/richtext/controls/index.js.map +0 -1
- package/dist/fields/richtext/controls/shared.d.ts.map +0 -1
- package/dist/fields/richtext/controls/shared.js.map +0 -1
- package/dist/fields/richtext/createRichTextField.d.ts.map +0 -1
- package/dist/fields/richtext/createRichTextField.js.map +0 -1
- package/dist/fields/richtext/extensions/FontSize.d.ts.map +0 -1
- package/dist/fields/richtext/extensions/FontSize.js.map +0 -1
- package/dist/fields/richtext/extensions/index.d.ts.map +0 -1
- package/dist/fields/richtext/extensions/index.js.map +0 -1
- package/dist/fields/richtext/index.d.ts.map +0 -1
- package/dist/fields/richtext/index.js.map +0 -1
- package/dist/fields/shared.d.ts.map +0 -1
- package/dist/fields/shared.js.map +0 -1
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/useResponsiveStyles.d.ts.map +0 -1
- package/dist/hooks/useResponsiveStyles.js.map +0 -1
- package/dist/hooks/useScrollAnimation.d.ts.map +0 -1
- package/dist/hooks/useScrollAnimation.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/layouts/LayoutWrapper.d.ts.map +0 -1
- package/dist/layouts/LayoutWrapper.js.map +0 -1
- package/dist/layouts/defaults.d.ts.map +0 -1
- package/dist/layouts/defaults.js.map +0 -1
- package/dist/layouts/index.d.ts.map +0 -1
- package/dist/layouts/index.js.map +0 -1
- package/dist/layouts/types.d.ts.map +0 -1
- package/dist/layouts/types.js.map +0 -1
- package/dist/layouts/utils.d.ts.map +0 -1
- package/dist/layouts/utils.js.map +0 -1
- package/dist/next/index.d.ts.map +0 -1
- package/dist/next/index.js.map +0 -1
- package/dist/plugin/collections/Pages.d.ts.map +0 -1
- package/dist/plugin/collections/Pages.js.map +0 -1
- package/dist/plugin/fields/index.d.ts.map +0 -1
- package/dist/plugin/fields/index.js.map +0 -1
- package/dist/plugin/fields/types.d.ts.map +0 -1
- package/dist/plugin/fields/types.js.map +0 -1
- package/dist/plugin/hooks/index.d.ts.map +0 -1
- package/dist/plugin/hooks/index.js.map +0 -1
- package/dist/plugin/hooks/isHomepageUnique.d.ts.map +0 -1
- package/dist/plugin/hooks/isHomepageUnique.js.map +0 -1
- package/dist/plugin/index.d.ts.map +0 -1
- package/dist/plugin/index.js.map +0 -1
- package/dist/render/HybridPageRenderer.d.ts.map +0 -1
- package/dist/render/HybridPageRenderer.js.map +0 -1
- package/dist/render/PageRenderer.d.ts.map +0 -1
- package/dist/render/PageRenderer.js.map +0 -1
- package/dist/render/PuckEditor.client.d.ts.map +0 -1
- package/dist/render/PuckEditor.client.js.map +0 -1
- package/dist/render/index.d.ts.map +0 -1
- package/dist/render/index.js.map +0 -1
- package/dist/theme/context.d.ts.map +0 -1
- package/dist/theme/context.js.map +0 -1
- package/dist/theme/defaults.d.ts.map +0 -1
- package/dist/theme/defaults.js.map +0 -1
- package/dist/theme/example.d.ts.map +0 -1
- package/dist/theme/example.js.map +0 -1
- package/dist/theme/index.d.ts.map +0 -1
- package/dist/theme/index.js.map +0 -1
- package/dist/theme/types.d.ts.map +0 -1
- package/dist/theme/types.js.map +0 -1
- package/dist/theme/utils.d.ts.map +0 -1
- package/dist/theme/utils.js.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/migration.d.ts.map +0 -1
- package/dist/utils/migration.js.map +0 -1
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js.map +0 -1
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js.map +0 -1
- package/dist/views/PuckConfigContext.d.ts.map +0 -1
- package/dist/views/PuckConfigContext.js.map +0 -1
- package/dist/views/PuckEditorView.d.ts.map +0 -1
- package/dist/views/PuckEditorView.js.map +0 -1
- package/dist/views/index.d.ts.map +0 -1
- package/dist/views/index.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/layouts/index.ts"],"sourcesContent":["/**\n * Layouts Module\n *\n * Dynamic page layout system for payload-puck.\n *\n * @example\n * ```tsx\n * import {\n * DEFAULT_LAYOUTS,\n * createLayout,\n * mergeLayouts,\n * } from '@delmaredigital/payload-puck/layouts'\n *\n * // Create custom layouts\n * const customLayouts = mergeLayouts(DEFAULT_LAYOUTS, [\n * createLayout({\n * value: 'blog',\n * label: 'Blog Post',\n * maxWidth: '720px',\n * classes: { container: 'mx-auto px-4 prose' },\n * }),\n * ])\n * ```\n */\n\n// Types\nexport type {\n LayoutOption,\n LayoutClasses,\n LayoutStyles,\n LayoutDefinition,\n LayoutConfig,\n LayoutWrapperProps,\n} from './types.js'\n\n// Defaults\nexport {\n defaultLayout,\n landingLayout,\n fullWidthLayout,\n narrowLayout,\n wideLayout,\n DEFAULT_LAYOUTS,\n EXTENDED_LAYOUTS,\n DEFAULT_LAYOUT_CONFIG,\n} from './defaults.js'\n\n// Utilities\nexport {\n resolveLayoutConfig,\n getLayout,\n layoutsToOptions,\n layoutsToPayloadOptions,\n createLayout,\n mergeLayouts,\n createRenderLayouts,\n} from './utils.js'\n\n// Components\nexport { LayoutWrapper, type LayoutWrapperProps as LayoutWrapperComponentProps, type PageOverrides } from './LayoutWrapper.js'\n"],"names":["defaultLayout","landingLayout","fullWidthLayout","narrowLayout","wideLayout","DEFAULT_LAYOUTS","EXTENDED_LAYOUTS","DEFAULT_LAYOUT_CONFIG","resolveLayoutConfig","getLayout","layoutsToOptions","layoutsToPayloadOptions","createLayout","mergeLayouts","createRenderLayouts","LayoutWrapper"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;CAuBC,GAED,QAAQ;AAUR,WAAW;AACX,SACEA,aAAa,EACbC,aAAa,EACbC,eAAe,EACfC,YAAY,EACZC,UAAU,EACVC,eAAe,EACfC,gBAAgB,EAChBC,qBAAqB,QAChB,gBAAe;AAEtB,YAAY;AACZ,SACEC,mBAAmB,EACnBC,SAAS,EACTC,gBAAgB,EAChBC,uBAAuB,EACvBC,YAAY,EACZC,YAAY,EACZC,mBAAmB,QACd,aAAY;AAEnB,aAAa;AACb,SAASC,aAAa,QAAoF,qBAAoB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/layouts/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAEpE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAA;IACb,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,mDAAmD;IACnD,SAAS,CAAC,EAAE,aAAa,CAAA;IACzB,yCAAyC;IACzC,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,2BAA2B;IAC3B,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,CAAC,CAAA;IACtD,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,wCAAwC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACvC;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;;;;;;;;;;;OAaG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAA;IACnB,MAAM,EAAE,gBAAgB,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/layouts/types.ts"],"sourcesContent":["/**\n * Layout System Types\n *\n * Defines the structure for page layouts that affect how content is rendered.\n */\n\nimport type { ReactNode, CSSProperties, ComponentType } from 'react'\n\n/**\n * A layout option shown in the Puck editor's layout selector\n */\nexport interface LayoutOption {\n /** Unique identifier for the layout */\n value: string\n /** Display name in the editor */\n label: string\n /** Optional description shown in the editor */\n description?: string\n}\n\n/**\n * CSS class configuration for a layout\n */\nexport interface LayoutClasses {\n /** Classes applied to the outermost wrapper */\n wrapper?: string\n /** Classes applied to the main content container */\n container?: string\n /** Classes applied to the content area */\n content?: string\n}\n\n/**\n * Style configuration for a layout\n */\nexport interface LayoutStyles {\n /** Styles applied to the outermost wrapper */\n wrapper?: CSSProperties\n /** Styles applied to the main content container */\n container?: CSSProperties\n /** Styles applied to the content area */\n content?: CSSProperties\n}\n\n/**\n * Complete layout definition\n */\nexport interface LayoutDefinition extends LayoutOption {\n /** CSS classes to apply */\n classes?: LayoutClasses\n /** Inline styles to apply */\n styles?: LayoutStyles\n /** Custom wrapper component (overrides default rendering) */\n wrapper?: React.ComponentType<{ children: ReactNode }>\n /** Max width constraint (e.g., '1200px', '100%') */\n maxWidth?: string\n /** Whether the layout uses full viewport width */\n fullWidth?: boolean\n /** Additional data attributes to add */\n dataAttributes?: Record<string, string>\n /**\n * Header component to render above the page content.\n *\n * **Editor vs Render considerations:**\n * - Include in layouts for `PuckConfigProvider` so the editor iframe shows realistic preview\n * - For `PageRenderer`/`HybridPageRenderer`, consider using `createRenderLayouts()` to strip\n * header/footer if your host app's root layout already provides them (avoids double headers)\n *\n * @see createRenderLayouts\n */\n header?: ComponentType\n /**\n * Footer component to render below the page content.\n *\n * **Editor vs Render considerations:**\n * - Include in layouts for `PuckConfigProvider` so the editor iframe shows realistic preview\n * - For `PageRenderer`/`HybridPageRenderer`, consider using `createRenderLayouts()` to strip\n * header/footer if your host app's root layout already provides them (avoids double footers)\n *\n * @see createRenderLayouts\n */\n footer?: ComponentType\n /**\n * Background color/gradient for the editor preview.\n * Applied to the iframe body in the Puck editor.\n * @default '#ffffff'\n */\n editorBackground?: string\n /**\n * Whether this layout uses dark mode styling in the editor preview.\n * Controls text color and theme class on the iframe.\n * @default false\n */\n editorDarkMode?: boolean\n /**\n * Height of a sticky/fixed header in pixels.\n * Used to add padding-top to the content area in the editor preview\n * so content doesn't render behind the header.\n * @example 64 // for a 64px tall sticky header\n */\n stickyHeaderHeight?: number\n /**\n * Whether to push the footer to the bottom of the viewport.\n * Uses flexbox to ensure the footer stays at the bottom even when\n * page content is minimal. Set to `false` to allow footer to flow\n * naturally after content.\n * @default true\n */\n stickyFooter?: boolean\n /**\n * Additional stylesheet URLs to inject into the editor iframe for this layout.\n * Merged with stylesheets from PuckConfigProvider.\n * Use this for layout-specific styles that differ from the global editor styles.\n *\n * @example\n * ```tsx\n * {\n * value: 'landing',\n * label: 'Landing',\n * editorStylesheets: ['/landing-styles.css'],\n * }\n * ```\n */\n editorStylesheets?: string[]\n /**\n * Additional CSS to inject into the editor iframe for this layout.\n * Merged with CSS from PuckConfigProvider.\n * Use this for layout-specific CSS variables or style overrides.\n *\n * @example\n * ```tsx\n * {\n * value: 'dark-theme',\n * label: 'Dark Theme',\n * editorCss: ':root { --background: #1a1a1a; }',\n * }\n * ```\n */\n editorCss?: string\n}\n\n/**\n * Layout configuration passed to the plugin/renderer\n */\nexport interface LayoutConfig {\n /** Available layouts */\n layouts: LayoutDefinition[]\n /** Default layout value to use */\n defaultLayout?: string\n}\n\n/**\n * Props passed to a custom layout wrapper component\n */\nexport interface LayoutWrapperProps {\n children: ReactNode\n layout: LayoutDefinition\n pageTitle?: string\n}\n"],"names":[],"mappings":"AAAA;;;;CAIC,GAmJD;;CAEC,GACD,WAIC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/layouts/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAG9E;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAOhF;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,KAAK,EAAE,MAAM,EACb,QAAQ,SAAY,GACnB,gBAAgB,GAAG,SAAS,CAW9B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,YAAY,EAAE,CAM5E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,gBAAgB,EAAE,GAC1B,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAKzC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG;IAClD,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd,GACA,gBAAgB,CAIlB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,gBAAgB,EAAE,EACxB,MAAM,EAAE,gBAAgB,EAAE,EAC1B,OAAO,CAAC,EAAE;IACR,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB,GACA,gBAAgB,EAAE,CAuBpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAEzF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/layouts/utils.ts"],"sourcesContent":["/**\n * Layout Utilities\n *\n * Functions for working with layout configurations.\n */\n\nimport type { LayoutDefinition, LayoutConfig, LayoutOption } from './types.js'\nimport { DEFAULT_LAYOUTS, DEFAULT_LAYOUT_CONFIG } from './defaults.js'\n\n/**\n * Resolves a layout config, merging with defaults if needed\n */\nexport function resolveLayoutConfig(config?: Partial<LayoutConfig>): LayoutConfig {\n if (!config) return DEFAULT_LAYOUT_CONFIG\n\n return {\n layouts: config.layouts ?? DEFAULT_LAYOUTS,\n defaultLayout: config.defaultLayout ?? 'default',\n }\n}\n\n/**\n * Gets a layout definition by value\n */\nexport function getLayout(\n layouts: LayoutDefinition[],\n value: string,\n fallback = 'default'\n): LayoutDefinition | undefined {\n const layout = layouts.find((l) => l.value === value)\n if (layout) return layout\n\n // Try fallback\n if (value !== fallback) {\n return layouts.find((l) => l.value === fallback)\n }\n\n // Return first layout if nothing matches\n return layouts[0]\n}\n\n/**\n * Converts layout definitions to Puck select options\n */\nexport function layoutsToOptions(layouts: LayoutDefinition[]): LayoutOption[] {\n return layouts.map(({ value, label, description }) => ({\n value,\n label,\n description,\n }))\n}\n\n/**\n * Converts layout definitions to Payload select options\n */\nexport function layoutsToPayloadOptions(\n layouts: LayoutDefinition[]\n): Array<{ label: string; value: string }> {\n return layouts.map(({ value, label }) => ({\n label,\n value,\n }))\n}\n\n/**\n * Creates a custom layout definition\n */\nexport function createLayout(\n config: Omit<LayoutDefinition, 'value' | 'label'> & {\n value: string\n label: string\n }\n): LayoutDefinition {\n return {\n ...config,\n }\n}\n\n/**\n * Merges layout configurations\n */\nexport function mergeLayouts(\n base: LayoutDefinition[],\n custom: LayoutDefinition[],\n options?: {\n /** Replace base layouts instead of merging */\n replace?: boolean\n /** Exclude these layout values from base */\n exclude?: string[]\n }\n): LayoutDefinition[] {\n if (options?.replace) {\n return custom\n }\n\n let result = [...base]\n\n // Exclude specified layouts\n if (options?.exclude) {\n result = result.filter((l) => !options.exclude!.includes(l.value))\n }\n\n // Merge/override with custom layouts\n for (const customLayout of custom) {\n const existingIndex = result.findIndex((l) => l.value === customLayout.value)\n if (existingIndex >= 0) {\n result[existingIndex] = customLayout\n } else {\n result.push(customLayout)\n }\n }\n\n return result\n}\n\n/**\n * Creates render-ready layouts by stripping header/footer components.\n *\n * Use this when your host application already provides a global header/footer\n * via its root layout (e.g., Next.js layout.tsx), and you want to avoid\n * double headers/footers when rendering Puck pages.\n *\n * **Why this exists:**\n * - Editor layouts need header/footer components for realistic preview in the Puck editor iframe\n * - Render layouts typically should NOT include header/footer since the host app provides them\n *\n * @example\n * ```tsx\n * // In your host app's page renderer:\n * import { HybridPageRenderer, createRenderLayouts } from '@delmaredigital/payload-puck/render'\n * import { siteLayouts } from '@/lib/puck-layouts' // layouts with header/footer for editor\n *\n * // Strip header/footer for rendering (host app layout provides them)\n * const renderLayouts = createRenderLayouts(siteLayouts)\n *\n * export function PageRenderer({ page }) {\n * return (\n * <HybridPageRenderer\n * page={page}\n * layouts={renderLayouts}\n * legacyRenderer={(blocks) => <BlockRenderer blocks={blocks} />}\n * />\n * )\n * }\n * ```\n *\n * @param editorLayouts - Layouts configured for the Puck editor (with header/footer)\n * @returns Layouts without header/footer components, suitable for PageRenderer/HybridPageRenderer\n */\nexport function createRenderLayouts(editorLayouts: LayoutDefinition[]): LayoutDefinition[] {\n return editorLayouts.map(({ header, footer, ...rest }) => rest)\n}\n"],"names":["DEFAULT_LAYOUTS","DEFAULT_LAYOUT_CONFIG","resolveLayoutConfig","config","layouts","defaultLayout","getLayout","value","fallback","layout","find","l","layoutsToOptions","map","label","description","layoutsToPayloadOptions","createLayout","mergeLayouts","base","custom","options","replace","result","exclude","filter","includes","customLayout","existingIndex","findIndex","push","createRenderLayouts","editorLayouts","header","footer","rest"],"mappings":"AAAA;;;;CAIC,GAGD,SAASA,eAAe,EAAEC,qBAAqB,QAAQ,gBAAe;AAEtE;;CAEC,GACD,OAAO,SAASC,oBAAoBC,MAA8B;IAChE,IAAI,CAACA,QAAQ,OAAOF;IAEpB,OAAO;QACLG,SAASD,OAAOC,OAAO,IAAIJ;QAC3BK,eAAeF,OAAOE,aAAa,IAAI;IACzC;AACF;AAEA;;CAEC,GACD,OAAO,SAASC,UACdF,OAA2B,EAC3BG,KAAa,EACbC,WAAW,SAAS;IAEpB,MAAMC,SAASL,QAAQM,IAAI,CAAC,CAACC,IAAMA,EAAEJ,KAAK,KAAKA;IAC/C,IAAIE,QAAQ,OAAOA;IAEnB,eAAe;IACf,IAAIF,UAAUC,UAAU;QACtB,OAAOJ,QAAQM,IAAI,CAAC,CAACC,IAAMA,EAAEJ,KAAK,KAAKC;IACzC;IAEA,yCAAyC;IACzC,OAAOJ,OAAO,CAAC,EAAE;AACnB;AAEA;;CAEC,GACD,OAAO,SAASQ,iBAAiBR,OAA2B;IAC1D,OAAOA,QAAQS,GAAG,CAAC,CAAC,EAAEN,KAAK,EAAEO,KAAK,EAAEC,WAAW,EAAE,GAAM,CAAA;YACrDR;YACAO;YACAC;QACF,CAAA;AACF;AAEA;;CAEC,GACD,OAAO,SAASC,wBACdZ,OAA2B;IAE3B,OAAOA,QAAQS,GAAG,CAAC,CAAC,EAAEN,KAAK,EAAEO,KAAK,EAAE,GAAM,CAAA;YACxCA;YACAP;QACF,CAAA;AACF;AAEA;;CAEC,GACD,OAAO,SAASU,aACdd,MAGC;IAED,OAAO;QACL,GAAGA,MAAM;IACX;AACF;AAEA;;CAEC,GACD,OAAO,SAASe,aACdC,IAAwB,EACxBC,MAA0B,EAC1BC,OAKC;IAED,IAAIA,SAASC,SAAS;QACpB,OAAOF;IACT;IAEA,IAAIG,SAAS;WAAIJ;KAAK;IAEtB,4BAA4B;IAC5B,IAAIE,SAASG,SAAS;QACpBD,SAASA,OAAOE,MAAM,CAAC,CAACd,IAAM,CAACU,QAAQG,OAAO,CAAEE,QAAQ,CAACf,EAAEJ,KAAK;IAClE;IAEA,qCAAqC;IACrC,KAAK,MAAMoB,gBAAgBP,OAAQ;QACjC,MAAMQ,gBAAgBL,OAAOM,SAAS,CAAC,CAAClB,IAAMA,EAAEJ,KAAK,KAAKoB,aAAapB,KAAK;QAC5E,IAAIqB,iBAAiB,GAAG;YACtBL,MAAM,CAACK,cAAc,GAAGD;QAC1B,OAAO;YACLJ,OAAOO,IAAI,CAACH;QACd;IACF;IAEA,OAAOJ;AACT;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCC,GACD,OAAO,SAASQ,oBAAoBC,aAAiC;IACnE,OAAOA,cAAcnB,GAAG,CAAC,CAAC,EAAEoB,MAAM,EAAEC,MAAM,EAAE,GAAGC,MAAM,GAAKA;AAC5D"}
|
package/dist/next/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/next/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAItC;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,2BAA2B,CAAA;AAwG/D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,IAO7C,YAAY,UAAU,KAAG,UAAU,CAiB5C;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzD"}
|
package/dist/next/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/next/index.ts"],"sourcesContent":["/**\n * Next.js Configuration Wrapper for Puck CSS\n *\n * Compiles CSS at build time using the project's PostCSS/Tailwind configuration.\n * This ensures the editor iframe styles work in production (Vercel, etc.) where\n * source files aren't available at runtime.\n *\n * @example\n * ```js\n * // next.config.js\n * import { withPuckCSS } from '@delmaredigital/payload-puck/next'\n * import { withPayload } from '@payloadcms/next/withPayload'\n *\n * export default withPuckCSS({\n * cssInput: 'src/app/(frontend)/globals.css',\n * })(withPayload(nextConfig))\n * ```\n */\n\nimport type { NextConfig } from 'next'\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs'\nimport { dirname, join, resolve } from 'path'\n\n/**\n * Options for the withPuckCSS wrapper\n */\nexport interface WithPuckCSSOptions {\n /**\n * Path to the source CSS file (relative to project root)\n * @example 'src/app/(frontend)/globals.css'\n */\n cssInput: string\n\n /**\n * Output path for compiled CSS (relative to public/)\n * @default 'puck-editor-styles.css'\n */\n cssOutput?: string\n\n /**\n * Whether to skip compilation in development\n * @default true\n */\n skipInDev?: boolean\n}\n\n/**\n * Default output filename for compiled CSS\n */\nexport const PUCK_CSS_OUTPUT_DEFAULT = 'puck-editor-styles.css'\n\n/**\n * Compile CSS using PostCSS with the project's configuration\n */\nasync function compileCss(css: string, filePath: string): Promise<string> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let postcss: any\n try {\n postcss = (await import('postcss')).default\n } catch {\n console.warn('[payload-puck] PostCSS not found. CSS will not be compiled.')\n return css\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let processor: any\n\n try {\n // Try to load project's postcss.config.js\n const loadConfigModule = await import('postcss-load-config')\n const postcssLoadConfig = loadConfigModule.default\n const { plugins } = await postcssLoadConfig({}, process.cwd())\n processor = postcss(plugins)\n } catch {\n // Fall back to direct Tailwind import\n try {\n const tailwindcss = (await import('@tailwindcss/postcss')).default\n processor = postcss([tailwindcss])\n } catch {\n try {\n const tailwindcss = (await import('tailwindcss')).default\n processor = postcss([tailwindcss])\n } catch {\n console.warn('[payload-puck] No Tailwind CSS found. CSS will not be compiled.')\n return css\n }\n }\n }\n\n const result = await processor.process(css, { from: filePath })\n return result.css\n}\n\n/**\n * Webpack plugin that compiles CSS at build time\n */\nclass PuckCSSWebpackPlugin {\n private options: Required<WithPuckCSSOptions>\n private compiled = false\n\n constructor(options: Required<WithPuckCSSOptions>) {\n this.options = options\n }\n\n apply(compiler: { hooks: { beforeCompile: { tapPromise: (name: string, fn: () => Promise<void>) => void } } }) {\n compiler.hooks.beforeCompile.tapPromise('PuckCSSWebpackPlugin', async () => {\n // Only compile once per build\n if (this.compiled) return\n this.compiled = true\n\n const { cssInput, cssOutput, skipInDev } = this.options\n\n // Skip in development if configured\n if (skipInDev && process.env.NODE_ENV === 'development') {\n console.log('[payload-puck] Skipping CSS compilation in development')\n return\n }\n\n const inputPath = resolve(process.cwd(), cssInput)\n const outputPath = resolve(process.cwd(), 'public', cssOutput)\n\n // Check if source file exists\n if (!existsSync(inputPath)) {\n console.error(`[payload-puck] CSS source file not found: ${inputPath}`)\n return\n }\n\n try {\n console.log(`[payload-puck] Compiling CSS: ${cssInput} -> public/${cssOutput}`)\n\n // Read source CSS\n const rawCss = readFileSync(inputPath, 'utf-8')\n\n // Compile with PostCSS/Tailwind\n const compiledCss = await compileCss(rawCss, inputPath)\n\n // Ensure public directory exists\n const outputDir = dirname(outputPath)\n if (!existsSync(outputDir)) {\n mkdirSync(outputDir, { recursive: true })\n }\n\n // Write compiled CSS\n writeFileSync(outputPath, compiledCss, 'utf-8')\n\n console.log(`[payload-puck] CSS compiled successfully (${(compiledCss.length / 1024).toFixed(1)}KB)`)\n } catch (error) {\n console.error('[payload-puck] CSS compilation failed:', error)\n }\n })\n }\n}\n\n/**\n * Next.js configuration wrapper that compiles Puck editor CSS at build time\n *\n * @param options - Configuration options\n * @returns A function that wraps your Next.js config\n *\n * @example\n * ```js\n * import { withPuckCSS } from '@delmaredigital/payload-puck/next'\n *\n * export default withPuckCSS({\n * cssInput: 'src/app/(frontend)/globals.css',\n * })(nextConfig)\n * ```\n */\nexport function withPuckCSS(options: WithPuckCSSOptions) {\n const resolvedOptions: Required<WithPuckCSSOptions> = {\n cssInput: options.cssInput,\n cssOutput: options.cssOutput ?? PUCK_CSS_OUTPUT_DEFAULT,\n skipInDev: options.skipInDev ?? true,\n }\n\n return (nextConfig: NextConfig): NextConfig => {\n return {\n ...nextConfig,\n webpack: (webpackConfig, context) => {\n // Add our CSS compilation plugin\n webpackConfig.plugins = webpackConfig.plugins || []\n webpackConfig.plugins.push(new PuckCSSWebpackPlugin(resolvedOptions))\n\n // Call existing webpack config if present\n if (typeof nextConfig.webpack === 'function') {\n return nextConfig.webpack(webpackConfig, context)\n }\n\n return webpackConfig\n },\n }\n }\n}\n\n/**\n * Get the URL path for the compiled CSS file\n * Use this in your plugin configuration\n */\nexport function getPuckCSSPath(cssOutput?: string): string {\n return `/${cssOutput ?? PUCK_CSS_OUTPUT_DEFAULT}`\n}\n"],"names":["existsSync","mkdirSync","readFileSync","writeFileSync","dirname","resolve","PUCK_CSS_OUTPUT_DEFAULT","compileCss","css","filePath","postcss","default","console","warn","processor","loadConfigModule","postcssLoadConfig","plugins","process","cwd","tailwindcss","result","from","PuckCSSWebpackPlugin","options","compiled","apply","compiler","hooks","beforeCompile","tapPromise","cssInput","cssOutput","skipInDev","env","NODE_ENV","log","inputPath","outputPath","error","rawCss","compiledCss","outputDir","recursive","length","toFixed","withPuckCSS","resolvedOptions","nextConfig","webpack","webpackConfig","context","push","getPuckCSSPath"],"mappings":"AAAA;;;;;;;;;;;;;;;;;CAiBC,GAGD,SAASA,UAAU,EAAEC,SAAS,EAAEC,YAAY,EAAEC,aAAa,QAAQ,KAAI;AACvE,SAASC,OAAO,EAAQC,OAAO,QAAQ,OAAM;AAyB7C;;CAEC,GACD,OAAO,MAAMC,0BAA0B,yBAAwB;AAE/D;;CAEC,GACD,eAAeC,WAAWC,GAAW,EAAEC,QAAgB;IACrD,8DAA8D;IAC9D,IAAIC;IACJ,IAAI;QACFA,UAAU,AAAC,CAAA,MAAM,MAAM,CAAC,UAAS,EAAGC,OAAO;IAC7C,EAAE,OAAM;QACNC,QAAQC,IAAI,CAAC;QACb,OAAOL;IACT;IAEA,8DAA8D;IAC9D,IAAIM;IAEJ,IAAI;QACF,0CAA0C;QAC1C,MAAMC,mBAAmB,MAAM,MAAM,CAAC;QACtC,MAAMC,oBAAoBD,iBAAiBJ,OAAO;QAClD,MAAM,EAAEM,OAAO,EAAE,GAAG,MAAMD,kBAAkB,CAAC,GAAGE,QAAQC,GAAG;QAC3DL,YAAYJ,QAAQO;IACtB,EAAE,OAAM;QACN,sCAAsC;QACtC,IAAI;YACF,MAAMG,cAAc,AAAC,CAAA,MAAM,MAAM,CAAC,uBAAsB,EAAGT,OAAO;YAClEG,YAAYJ,QAAQ;gBAACU;aAAY;QACnC,EAAE,OAAM;YACN,IAAI;gBACF,MAAMA,cAAc,AAAC,CAAA,MAAM,MAAM,CAAC,cAAa,EAAGT,OAAO;gBACzDG,YAAYJ,QAAQ;oBAACU;iBAAY;YACnC,EAAE,OAAM;gBACNR,QAAQC,IAAI,CAAC;gBACb,OAAOL;YACT;QACF;IACF;IAEA,MAAMa,SAAS,MAAMP,UAAUI,OAAO,CAACV,KAAK;QAAEc,MAAMb;IAAS;IAC7D,OAAOY,OAAOb,GAAG;AACnB;AAEA;;CAEC,GACD,MAAMe;IACIC,QAAqC;IACrCC,WAAW,MAAK;IAExB,YAAYD,OAAqC,CAAE;QACjD,IAAI,CAACA,OAAO,GAAGA;IACjB;IAEAE,MAAMC,QAAuG,EAAE;QAC7GA,SAASC,KAAK,CAACC,aAAa,CAACC,UAAU,CAAC,wBAAwB;YAC9D,8BAA8B;YAC9B,IAAI,IAAI,CAACL,QAAQ,EAAE;YACnB,IAAI,CAACA,QAAQ,GAAG;YAEhB,MAAM,EAAEM,QAAQ,EAAEC,SAAS,EAAEC,SAAS,EAAE,GAAG,IAAI,CAACT,OAAO;YAEvD,oCAAoC;YACpC,IAAIS,aAAaf,QAAQgB,GAAG,CAACC,QAAQ,KAAK,eAAe;gBACvDvB,QAAQwB,GAAG,CAAC;gBACZ;YACF;YAEA,MAAMC,YAAYhC,QAAQa,QAAQC,GAAG,IAAIY;YACzC,MAAMO,aAAajC,QAAQa,QAAQC,GAAG,IAAI,UAAUa;YAEpD,8BAA8B;YAC9B,IAAI,CAAChC,WAAWqC,YAAY;gBAC1BzB,QAAQ2B,KAAK,CAAC,CAAC,0CAA0C,EAAEF,WAAW;gBACtE;YACF;YAEA,IAAI;gBACFzB,QAAQwB,GAAG,CAAC,CAAC,8BAA8B,EAAEL,SAAS,WAAW,EAAEC,WAAW;gBAE9E,kBAAkB;gBAClB,MAAMQ,SAAStC,aAAamC,WAAW;gBAEvC,gCAAgC;gBAChC,MAAMI,cAAc,MAAMlC,WAAWiC,QAAQH;gBAE7C,iCAAiC;gBACjC,MAAMK,YAAYtC,QAAQkC;gBAC1B,IAAI,CAACtC,WAAW0C,YAAY;oBAC1BzC,UAAUyC,WAAW;wBAAEC,WAAW;oBAAK;gBACzC;gBAEA,qBAAqB;gBACrBxC,cAAcmC,YAAYG,aAAa;gBAEvC7B,QAAQwB,GAAG,CAAC,CAAC,0CAA0C,EAAE,AAACK,CAAAA,YAAYG,MAAM,GAAG,IAAG,EAAGC,OAAO,CAAC,GAAG,GAAG,CAAC;YACtG,EAAE,OAAON,OAAO;gBACd3B,QAAQ2B,KAAK,CAAC,0CAA0CA;YAC1D;QACF;IACF;AACF;AAEA;;;;;;;;;;;;;;CAcC,GACD,OAAO,SAASO,YAAYtB,OAA2B;IACrD,MAAMuB,kBAAgD;QACpDhB,UAAUP,QAAQO,QAAQ;QAC1BC,WAAWR,QAAQQ,SAAS,IAAI1B;QAChC2B,WAAWT,QAAQS,SAAS,IAAI;IAClC;IAEA,OAAO,CAACe;QACN,OAAO;YACL,GAAGA,UAAU;YACbC,SAAS,CAACC,eAAeC;gBACvB,iCAAiC;gBACjCD,cAAcjC,OAAO,GAAGiC,cAAcjC,OAAO,IAAI,EAAE;gBACnDiC,cAAcjC,OAAO,CAACmC,IAAI,CAAC,IAAI7B,qBAAqBwB;gBAEpD,0CAA0C;gBAC1C,IAAI,OAAOC,WAAWC,OAAO,KAAK,YAAY;oBAC5C,OAAOD,WAAWC,OAAO,CAACC,eAAeC;gBAC3C;gBAEA,OAAOD;YACT;QACF;IACF;AACF;AAEA;;;CAGC,GACD,OAAO,SAASG,eAAerB,SAAkB;IAC/C,OAAO,CAAC,CAAC,EAAEA,aAAa1B,yBAAyB;AACnD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Pages.d.ts","sourceRoot":"","sources":["../../../src/plugin/collections/Pages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,gBAAgB,EAAS,MAAM,SAAS,CAAA;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAkB7D;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,GACzB,gBAAgB,CAuIlB;AAID,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugin/collections/Pages.ts"],"sourcesContent":["import type { Access, CollectionConfig, Field } from 'payload'\nimport type { PuckPluginOptions } from '../../types/index.js'\nimport { DEFAULT_LAYOUTS } from '../../layouts/defaults.js'\nimport { layoutsToPayloadOptions } from '../../layouts/utils.js'\nimport {\n puckDataField,\n createEditorVersionField,\n createPageLayoutField,\n isHomepageField,\n seoFieldGroup,\n conversionFieldGroup,\n} from '../fields/index.js'\nimport { createIsHomepageUniqueHook } from '../hooks/isHomepageUnique.js'\n\n/**\n * Default access function - allows all\n */\nconst defaultAccess: Access = () => true\n\n/**\n * Generates a Pages collection configuration for Puck\n */\nexport function generatePagesCollection(\n slug: string,\n options: PuckPluginOptions\n): CollectionConfig {\n const {\n collectionOverrides = {},\n access = {},\n layouts = DEFAULT_LAYOUTS,\n additionalFields = [],\n } = options\n\n const baseFields: Field[] = [\n // Core Fields (title and slug with duplication hooks - unique to collection generation)\n {\n name: 'title',\n type: 'text',\n required: true,\n hooks: {\n beforeDuplicate: [\n ({ value }) => {\n if (!value) return value\n const copyMatch = value.match(/^(.+) \\(Copy(?: (\\d+))?\\)$/)\n if (copyMatch) {\n const baseName = copyMatch[1]\n const copyNum = copyMatch[2] ? parseInt(copyMatch[2], 10) + 1 : 2\n return `${baseName} (Copy ${copyNum})`\n }\n return `${value} (Copy)`\n },\n ],\n },\n },\n {\n name: 'slug',\n type: 'text',\n required: true,\n unique: true,\n index: true,\n admin: {\n position: 'sidebar',\n description: 'URL path for this page (auto-generated from title)',\n },\n hooks: {\n beforeValidate: [\n ({ data, value }) => {\n if (data && !value && data.title) {\n return (data.title as string)\n .toLowerCase()\n .replace(/[^\\w\\s-]/g, '')\n .replace(/\\s+/g, '-')\n .replace(/-+/g, '-')\n .trim()\n }\n return value\n },\n ],\n beforeDuplicate: [\n ({ value }) => {\n if (!value) return value\n const copyMatch = value.match(/^(.+)-copy(?:-(\\d+))?$/)\n if (copyMatch) {\n const baseName = copyMatch[1]\n const copyNum = copyMatch[2] ? parseInt(copyMatch[2], 10) + 1 : 2\n return `${baseName}-copy-${copyNum}`\n }\n return `${value}-copy`\n },\n ],\n },\n },\n\n // Page Layout\n createPageLayoutField(layouts, true),\n\n // Editor Version\n createEditorVersionField('puck', true),\n\n // Homepage Flag\n isHomepageField,\n\n // Puck Data (hidden - managed via visual editor)\n puckDataField,\n\n // SEO Fields\n seoFieldGroup,\n\n // Conversion Tracking Fields\n conversionFieldGroup,\n\n // Additional fields from options\n ...additionalFields,\n ]\n\n return {\n slug,\n admin: {\n useAsTitle: 'title',\n group: 'Content',\n defaultColumns: ['title', 'slug', '_status', 'updatedAt'],\n ...(collectionOverrides.admin ?? {}),\n },\n access: {\n read: access.read ?? defaultAccess,\n create: access.create ?? defaultAccess,\n update: access.update ?? defaultAccess,\n delete: access.delete ?? defaultAccess,\n ...(collectionOverrides.access ?? {}),\n },\n hooks: {\n // Properly merge hook arrays - don't let spread operator overwrite\n beforeChange: [\n createIsHomepageUniqueHook(),\n ...(collectionOverrides.hooks?.beforeChange ?? []),\n ],\n beforeValidate: collectionOverrides.hooks?.beforeValidate,\n beforeDelete: collectionOverrides.hooks?.beforeDelete,\n beforeRead: collectionOverrides.hooks?.beforeRead,\n afterChange: collectionOverrides.hooks?.afterChange,\n afterDelete: collectionOverrides.hooks?.afterDelete,\n afterRead: collectionOverrides.hooks?.afterRead,\n afterOperation: collectionOverrides.hooks?.afterOperation,\n afterForgotPassword: collectionOverrides.hooks?.afterForgotPassword,\n afterLogin: collectionOverrides.hooks?.afterLogin,\n afterLogout: collectionOverrides.hooks?.afterLogout,\n afterRefresh: collectionOverrides.hooks?.afterRefresh,\n afterMe: collectionOverrides.hooks?.afterMe,\n },\n versions:\n typeof collectionOverrides.versions === 'object'\n ? { drafts: true, ...collectionOverrides.versions }\n : { drafts: true },\n fields: baseFields,\n ...collectionOverrides,\n // Ensure fields aren't overwritten by collectionOverrides\n ...(collectionOverrides.fields && {\n fields: [...baseFields, ...collectionOverrides.fields],\n }),\n }\n}\n\n// Note: puckDataField is now exported from '../fields/index.js' for hybrid collection integration\n// Re-export for backwards compatibility\nexport { puckDataField } from '../fields/index.js'\n"],"names":["DEFAULT_LAYOUTS","puckDataField","createEditorVersionField","createPageLayoutField","isHomepageField","seoFieldGroup","conversionFieldGroup","createIsHomepageUniqueHook","defaultAccess","generatePagesCollection","slug","options","collectionOverrides","access","layouts","additionalFields","baseFields","name","type","required","hooks","beforeDuplicate","value","copyMatch","match","baseName","copyNum","parseInt","unique","index","admin","position","description","beforeValidate","data","title","toLowerCase","replace","trim","useAsTitle","group","defaultColumns","read","create","update","delete","beforeChange","beforeDelete","beforeRead","afterChange","afterDelete","afterRead","afterOperation","afterForgotPassword","afterLogin","afterLogout","afterRefresh","afterMe","versions","drafts","fields"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugin/fields/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AACtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAE5G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAQ9D;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,KAO3B,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,GAAE,QAAQ,GAAG,MAAe,EACxC,OAAO,GAAE,OAAc,EACvB,qBAAqB,GAAE,MAAiB,GACvC,KAAK,CA6CP;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAA8C,CAAA;AAE/E;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,GAAE,gBAAgB,EAAoB,EAC7C,OAAO,GAAE,OAAc,GACtB,KAAK,CAYP;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,KAA+B,CAAA;AAE7D;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,KAQ7B,CAAA;AAMD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,KA6D3B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,oBAAoB,EAQ1D,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,0BAA0B,CACxC,eAAe,GAAE,oBAAoB,EAA6B,EAClE,OAAO,GAAE,OAAc,GACtB,KAAK,CA0CP;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,KAAoC,CAAA;AAMvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,KAAK,EAAE,CA8CzE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,8BAAmC,GAAG;IACrF,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;CACjC,CAiBA;AAGD,YAAY,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugin/fields/index.ts"],"sourcesContent":["/**\n * Puck Field Utilities\n *\n * Provides reusable field definitions for adding Puck support to existing collections.\n * Use getPuckFields() for easy integration, or import individual fields for granular control.\n *\n * @example\n * ```typescript\n * // Option 1: Use getPuckFields() for recommended defaults\n * import { getPuckFields } from '@delmaredigital/payload-puck'\n *\n * const Pages: CollectionConfig = {\n * slug: 'pages',\n * fields: [\n * // Your existing fields...\n * ...getPuckFields({ includeSEO: false }),\n * ],\n * }\n *\n * // Option 2: Import individual fields\n * import { puckDataField, editorVersionField } from '@delmaredigital/payload-puck'\n *\n * const Pages: CollectionConfig = {\n * slug: 'pages',\n * fields: [\n * // Your existing fields...\n * puckDataField,\n * editorVersionField,\n * ],\n * }\n * ```\n */\n\nimport type { CollectionConfig, Field } from 'payload'\nimport type { GetPuckFieldsOptions, GetPuckCollectionConfigOptions, ConversionTypeOption } from './types.js'\nimport { createIsHomepageUniqueHook } from '../hooks/isHomepageUnique.js'\nimport type { LayoutDefinition } from '../../layouts/types.js'\nimport { DEFAULT_LAYOUTS } from '../../layouts/defaults.js'\nimport { layoutsToPayloadOptions } from '../../layouts/utils.js'\n\n// =============================================================================\n// Core Fields\n// =============================================================================\n\n/**\n * Puck data field - stores the visual editor JSON data.\n * This field is always hidden in the admin UI as it's managed via the visual editor.\n */\nexport const puckDataField: Field = {\n name: 'puckData',\n type: 'json',\n admin: {\n hidden: true,\n description: 'Puck editor data - managed via visual editor',\n },\n}\n\n/**\n * Creates an editor version field with smart detection for hybrid setups.\n *\n * The field uses a beforeValidate hook to intelligently determine the editor version:\n * - New pages: Default to 'puck' (or custom defaultValue)\n * - Existing pages with legacy blocks but no puckData: Set to 'legacy'\n * - Existing pages with puckData: Set to 'puck'\n *\n * This prevents existing legacy content from being incorrectly marked as 'puck'\n * when the field is first added to a collection.\n *\n * @param defaultValue - The default editor version for NEW pages ('puck' or 'legacy')\n * @param sidebar - Whether to position in the sidebar (default: true)\n * @param legacyBlocksFieldName - Name of the legacy blocks field to check (default: 'layout')\n */\nexport function createEditorVersionField(\n defaultValue: 'legacy' | 'puck' = 'puck',\n sidebar: boolean = true,\n legacyBlocksFieldName: string = 'layout'\n): Field {\n return {\n name: 'editorVersion',\n type: 'select',\n // NO defaultValue here - we use the hook to intelligently detect the value\n // This prevents migrations from blindly setting 'puck' on legacy pages\n options: [\n { label: 'Legacy (Payload Blocks)', value: 'legacy' },\n { label: 'Puck Visual Editor', value: 'puck' },\n ],\n admin: {\n position: sidebar ? 'sidebar' : undefined,\n description: 'Which editor was used to create this page',\n },\n hooks: {\n beforeValidate: [\n ({ value, data, operation }) => {\n // If value is explicitly set (and not null/undefined), keep it\n if (value) return value\n\n // Detect based on content - works for both new and existing documents\n const legacyBlocks = data?.[legacyBlocksFieldName]\n const hasLegacyBlocks = Array.isArray(legacyBlocks) && legacyBlocks.length > 0\n\n const puckData = data?.puckData as { content?: unknown[] } | null | undefined\n const hasPuckData =\n puckData?.content && Array.isArray(puckData.content) && puckData.content.length > 0\n\n // If has legacy blocks but no puck data, it's a legacy page\n if (hasLegacyBlocks && !hasPuckData) {\n return 'legacy'\n }\n\n // If has puck data, it's a puck page\n if (hasPuckData) {\n return 'puck'\n }\n\n // For new documents with no content yet, use configured default\n // For existing documents with no content, also use default\n return defaultValue\n },\n ],\n },\n }\n}\n\n/**\n * Pre-configured editor version field with 'puck' as default.\n * Use createEditorVersionField() for custom configuration.\n */\nexport const editorVersionField: Field = createEditorVersionField('puck', true)\n\n/**\n * Creates a page layout field with custom layouts.\n *\n * @param layouts - Array of layout definitions (defaults to DEFAULT_LAYOUTS)\n * @param sidebar - Whether to position in the sidebar (default: true)\n */\nexport function createPageLayoutField(\n layouts: LayoutDefinition[] = DEFAULT_LAYOUTS,\n sidebar: boolean = true\n): Field {\n return {\n name: 'pageLayout',\n type: 'select',\n required: true,\n defaultValue: 'default',\n options: layoutsToPayloadOptions(layouts),\n admin: {\n position: sidebar ? 'sidebar' : undefined,\n description: 'Overall page structure and layout style',\n },\n }\n}\n\n/**\n * Pre-configured page layout field with DEFAULT_LAYOUTS.\n * Use createPageLayoutField() for custom layouts.\n */\nexport const pageLayoutField: Field = createPageLayoutField()\n\n/**\n * Homepage flag field - marks a page as the site homepage.\n */\nexport const isHomepageField: Field = {\n name: 'isHomepage',\n type: 'checkbox',\n defaultValue: false,\n admin: {\n position: 'sidebar',\n description: 'Mark this page as the homepage',\n },\n}\n\n// =============================================================================\n// Field Groups\n// =============================================================================\n\n/**\n * SEO/Meta field group with all metadata fields.\n * Uses the official @payloadcms/plugin-seo convention: meta.title, meta.description\n *\n * Includes: title, description, image, noindex, nofollow, excludeFromSitemap\n */\nexport const seoFieldGroup: Field = {\n name: 'meta',\n type: 'group',\n label: 'SEO',\n admin: {\n position: 'sidebar',\n },\n fields: [\n {\n name: 'title',\n type: 'text',\n label: 'Meta Title',\n admin: {\n description: 'Override the page title for search engines',\n },\n },\n {\n name: 'description',\n type: 'textarea',\n label: 'Meta Description',\n admin: {\n description: 'Description shown in search engine results',\n },\n },\n {\n name: 'image',\n type: 'upload',\n relationTo: 'media',\n label: 'Open Graph Image',\n admin: {\n description: 'Image shown when sharing on social media',\n },\n },\n {\n name: 'noindex',\n type: 'checkbox',\n label: 'No Index',\n defaultValue: false,\n admin: {\n description: 'Prevent search engines from indexing this page',\n },\n },\n {\n name: 'nofollow',\n type: 'checkbox',\n label: 'No Follow',\n defaultValue: false,\n admin: {\n description: 'Prevent search engines from following links on this page',\n },\n },\n {\n name: 'excludeFromSitemap',\n type: 'checkbox',\n label: 'Exclude from Sitemap',\n defaultValue: false,\n admin: {\n description: 'Exclude this page from the XML sitemap',\n },\n },\n ],\n}\n\n/**\n * Default conversion type options\n */\nexport const DEFAULT_CONVERSION_TYPES: ConversionTypeOption[] = [\n { label: 'Lead', value: 'lead' },\n { label: 'Registration', value: 'registration' },\n { label: 'Purchase', value: 'purchase' },\n { label: 'Donation', value: 'donation' },\n { label: 'Newsletter Signup', value: 'newsletter' },\n { label: 'Contact Form', value: 'contact' },\n { label: 'Custom', value: 'custom' },\n]\n\n/**\n * Creates a conversion tracking field group with custom options.\n *\n * @param conversionTypes - Custom conversion type options (defaults to DEFAULT_CONVERSION_TYPES)\n * @param sidebar - Whether to position in the sidebar (default: true)\n *\n * @example\n * ```typescript\n * // Use default conversion types\n * ...getPuckFields({ includeConversion: true })\n *\n * // Use custom conversion types\n * ...getPuckFields({\n * includeConversion: true,\n * conversionTypeOptions: [\n * { label: 'Registration', value: 'registration' },\n * { label: 'Donation', value: 'donation' },\n * { label: 'Course Start', value: 'course_start' },\n * { label: 'Custom', value: 'custom' },\n * ],\n * })\n * ```\n */\nexport function createConversionFieldGroup(\n conversionTypes: ConversionTypeOption[] = DEFAULT_CONVERSION_TYPES,\n sidebar: boolean = true\n): Field {\n return {\n name: 'conversionTracking',\n type: 'group',\n label: 'Conversion Tracking',\n admin: {\n position: sidebar ? 'sidebar' : undefined,\n description: 'Configure conversion tracking for analytics',\n },\n fields: [\n {\n name: 'isConversionPage',\n type: 'checkbox',\n label: 'Is Conversion Page',\n defaultValue: false,\n admin: {\n description:\n 'Check this if this page represents a completed conversion (e.g., thank you page)',\n },\n },\n {\n name: 'conversionType',\n type: 'select',\n label: 'Conversion Type',\n options: conversionTypes,\n admin: {\n description: 'Type of conversion this page represents',\n condition: (data, siblingData) => siblingData?.isConversionPage === true,\n },\n },\n {\n name: 'conversionValue',\n type: 'number',\n label: 'Conversion Value',\n defaultValue: 0,\n admin: {\n description: 'Monetary value of this conversion (0 for non-monetary conversions)',\n condition: (data, siblingData) => siblingData?.isConversionPage === true,\n },\n },\n ],\n }\n}\n\n/**\n * Pre-configured conversion tracking field group with default options.\n * Use createConversionFieldGroup() for custom conversion types.\n */\nexport const conversionFieldGroup: Field = createConversionFieldGroup()\n\n// =============================================================================\n// Main Utility Function\n// =============================================================================\n\n/**\n * Returns an array of Puck-related field definitions for hybrid collection integration.\n *\n * Use this when you have an existing collection with legacy Payload blocks and want\n * to ADD Puck support without replacing your entire collection configuration.\n *\n * @param options - Configuration options for which fields to include\n * @returns Array of Field definitions to spread into your collection's fields array\n *\n * @example\n * ```typescript\n * import { getPuckFields } from '@delmaredigital/payload-puck'\n *\n * export const Pages: CollectionConfig = {\n * slug: 'pages',\n * fields: [\n * // Your existing fields\n * { name: 'title', type: 'text', required: true },\n * { name: 'slug', type: 'text', required: true },\n *\n * // Legacy Payload blocks (keep these!)\n * { name: 'layout', type: 'blocks', blocks: [...] },\n *\n * // Add Puck fields for hybrid editing\n * ...getPuckFields({\n * includeSEO: false, // You have your own SEO fields\n * includeConversion: true, // Include conversion tracking\n * includeEditorVersion: true,\n * }),\n * ],\n * }\n * ```\n */\nexport function getPuckFields(options: GetPuckFieldsOptions = {}): Field[] {\n const {\n includeSEO = true,\n includeConversion = false,\n includeEditorVersion = true,\n includePageLayout = true,\n includeIsHomepage = false,\n layouts = DEFAULT_LAYOUTS,\n defaultEditorVersion = 'puck',\n legacyBlocksFieldName = 'layout',\n sidebarPosition = true,\n conversionTypeOptions,\n } = options\n\n const fields: Field[] = []\n\n // Core puckData field (always included - this is essential for Puck)\n fields.push(puckDataField)\n\n // Editor version field (discriminator for hybrid rendering)\n // Uses smart detection to preserve legacy pages when field is first added\n if (includeEditorVersion) {\n fields.push(createEditorVersionField(defaultEditorVersion, sidebarPosition, legacyBlocksFieldName))\n }\n\n // Page layout field\n if (includePageLayout) {\n fields.push(createPageLayoutField(layouts, sidebarPosition))\n }\n\n // Homepage flag\n if (includeIsHomepage) {\n fields.push(isHomepageField)\n }\n\n // SEO group\n if (includeSEO) {\n fields.push(seoFieldGroup)\n }\n\n // Conversion tracking group (with optional custom conversion types)\n if (includeConversion) {\n fields.push(createConversionFieldGroup(conversionTypeOptions, sidebarPosition))\n }\n\n return fields\n}\n\n/**\n * Returns Puck-related fields AND hooks for hybrid collection integration.\n *\n * This is the recommended way to add Puck support to an existing collection\n * when you need the isHomepage field, as it ensures the uniqueness hook is included.\n *\n * @param options - Configuration options for which fields and hooks to include\n * @returns Object with fields array and hooks object to spread into your collection\n *\n * @example\n * ```typescript\n * import { getPuckCollectionConfig } from '@delmaredigital/payload-puck'\n *\n * const { fields, hooks } = getPuckCollectionConfig({\n * includeIsHomepage: true,\n * includeSEO: false,\n * })\n *\n * export const Pages: CollectionConfig = {\n * slug: 'pages',\n * hooks: {\n * ...hooks,\n * // Your other hooks...\n * beforeChange: [\n * ...(hooks.beforeChange ?? []),\n * // Your custom beforeChange hooks...\n * ],\n * },\n * fields: [\n * { name: 'title', type: 'text', required: true },\n * { name: 'slug', type: 'text', required: true },\n * ...fields,\n * ],\n * }\n * ```\n */\nexport function getPuckCollectionConfig(options: GetPuckCollectionConfigOptions = {}): {\n fields: Field[]\n hooks: CollectionConfig['hooks']\n} {\n const { includeHomepageHook = true, includeIsHomepage = false, ...fieldOptions } = options\n\n // Get the fields using the existing getPuckFields function\n const fields = getPuckFields({ includeIsHomepage, ...fieldOptions })\n\n // Build hooks object\n const hooks: CollectionConfig['hooks'] = {}\n\n // Add isHomepage uniqueness hook if:\n // - includeIsHomepage is true (the field is being added)\n // - includeHomepageHook is not explicitly false\n if (includeIsHomepage && includeHomepageHook !== false) {\n hooks.beforeChange = [createIsHomepageUniqueHook()]\n }\n\n return { fields, hooks }\n}\n\n// Re-export types\nexport type { GetPuckFieldsOptions, GetPuckCollectionConfigOptions, ConversionTypeOption } from './types.js'\n"],"names":["createIsHomepageUniqueHook","DEFAULT_LAYOUTS","layoutsToPayloadOptions","puckDataField","name","type","admin","hidden","description","createEditorVersionField","defaultValue","sidebar","legacyBlocksFieldName","options","label","value","position","undefined","hooks","beforeValidate","data","operation","legacyBlocks","hasLegacyBlocks","Array","isArray","length","puckData","hasPuckData","content","editorVersionField","createPageLayoutField","layouts","required","pageLayoutField","isHomepageField","seoFieldGroup","fields","relationTo","DEFAULT_CONVERSION_TYPES","createConversionFieldGroup","conversionTypes","condition","siblingData","isConversionPage","conversionFieldGroup","getPuckFields","includeSEO","includeConversion","includeEditorVersion","includePageLayout","includeIsHomepage","defaultEditorVersion","sidebarPosition","conversionTypeOptions","push","getPuckCollectionConfig","includeHomepageHook","fieldOptions","beforeChange"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/plugin/fields/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE9D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IAEpB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAE3B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAE9B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAE3B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAE3B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAE5B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;IAExC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAE9B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IAEzB;;;;;;;;;;;;;;;OAeG;IACH,qBAAqB,CAAC,EAAE,oBAAoB,EAAE,CAAA;CAC/C;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,8BAA+B,SAAQ,oBAAoB;IAC1E;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugin/fields/types.ts"],"sourcesContent":["/**\n * Types for Puck field utilities\n *\n * These types support the getPuckFields() utility for hybrid collection integration.\n */\n\nimport type { LayoutDefinition } from '../../layouts/types.js'\n\n/**\n * Conversion type option for the conversion tracking field\n */\nexport interface ConversionTypeOption {\n label: string\n value: string\n}\n\n/**\n * Options for getPuckFields() utility function\n *\n * Use this to configure which Puck-related fields to include\n * when adding Puck support to an existing collection.\n *\n * @example\n * ```typescript\n * import { getPuckFields } from '@delmaredigital/payload-puck'\n *\n * const Pages: CollectionConfig = {\n * slug: 'pages',\n * fields: [\n * // Your existing fields...\n * { name: 'layout', type: 'blocks', blocks: [...] },\n *\n * // Add Puck support\n * ...getPuckFields({\n * includeSEO: false, // Using your own SEO fields\n * includeConversion: true,\n * }),\n * ],\n * }\n * ```\n */\nexport interface GetPuckFieldsOptions {\n /**\n * Include SEO field group using official @payloadcms/plugin-seo convention\n * (meta.title, meta.description, meta.image, noindex, nofollow, excludeFromSitemap)\n * @default true\n */\n includeSEO?: boolean\n\n /**\n * Include conversion tracking field group (isConversionPage, conversionType, conversionValue)\n * @default false\n */\n includeConversion?: boolean\n\n /**\n * Include editor version field ('legacy' | 'puck' discriminator)\n * @default true\n */\n includeEditorVersion?: boolean\n\n /**\n * Include page layout selector field\n * @default true\n */\n includePageLayout?: boolean\n\n /**\n * Include isHomepage checkbox field\n * @default false\n */\n includeIsHomepage?: boolean\n\n /**\n * Custom layouts for the page layout selector.\n * If not provided, uses the plugin's DEFAULT_LAYOUTS.\n *\n * Only the `value` and `label` properties are used for the Payload field.\n * Header/footer components are used by the editor and renderer.\n */\n layouts?: LayoutDefinition[]\n\n /**\n * Default editor version value for new pages.\n * @default 'puck'\n */\n defaultEditorVersion?: 'legacy' | 'puck'\n\n /**\n * Name of the legacy blocks field to check when detecting editor version.\n * Used by the smart detection hook to determine if existing pages have legacy content.\n * @default 'layout'\n */\n legacyBlocksFieldName?: string\n\n /**\n * Whether to place applicable fields in the sidebar.\n * @default true\n */\n sidebarPosition?: boolean\n\n /**\n * Custom conversion type options for the conversion tracking field.\n * Only used when includeConversion is true.\n *\n * @example\n * ```typescript\n * ...getPuckFields({\n * includeConversion: true,\n * conversionTypeOptions: [\n * { label: 'Registration', value: 'registration' },\n * { label: 'Donation', value: 'donation' },\n * { label: 'Course Start', value: 'course_start' },\n * ],\n * })\n * ```\n */\n conversionTypeOptions?: ConversionTypeOption[]\n}\n\n/**\n * Options for getPuckCollectionConfig() utility function\n *\n * Extends GetPuckFieldsOptions with hook configuration for hybrid collection integration.\n * Returns both fields AND hooks so you don't have to manually configure the isHomepage hook.\n *\n * @example\n * ```typescript\n * import { getPuckCollectionConfig } from '@delmaredigital/payload-puck'\n *\n * const { fields, hooks } = getPuckCollectionConfig({\n * includeIsHomepage: true,\n * includeSEO: false,\n * })\n *\n * const Pages: CollectionConfig = {\n * slug: 'pages',\n * hooks,\n * fields: [\n * { name: 'title', type: 'text', required: true },\n * ...fields,\n * ],\n * }\n * ```\n */\nexport interface GetPuckCollectionConfigOptions extends GetPuckFieldsOptions {\n /**\n * Include isHomepage uniqueness hook in returned hooks.\n * Only takes effect when includeIsHomepage is true.\n * @default true (when includeIsHomepage is true)\n */\n includeHomepageHook?: boolean\n}\n"],"names":[],"mappings":"AAAA;;;;CAIC,GAoHD;;;;;;;;;;;;;;;;;;;;;;;;CAwBC,GACD,WAOC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugin/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,0BAA0B,EAC1B,aAAa,EACb,qBAAqB,EACrB,KAAK,2BAA2B,EAChC,KAAK,oBAAoB,GAC1B,MAAM,uBAAuB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugin/hooks/index.ts"],"sourcesContent":["/**\n * Puck Plugin Hooks\n *\n * Reusable Payload hooks for Puck-enabled collections.\n */\n\nexport {\n createIsHomepageUniqueHook,\n unsetHomepage,\n HomepageConflictError,\n type IsHomepageUniqueHookOptions,\n type ExistingHomepageInfo,\n} from './isHomepageUnique.js'\n"],"names":["createIsHomepageUniqueHook","unsetHomepage","HomepageConflictError"],"mappings":"AAAA;;;;CAIC,GAED,SACEA,0BAA0B,EAC1BC,aAAa,EACbC,qBAAqB,QAGhB,wBAAuB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isHomepageUnique.d.ts","sourceRoot":"","sources":["../../../src/plugin/hooks/isHomepageUnique.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAElC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;IACjD,gBAAgB,EAAE,oBAAoB,CAAA;gBAE1B,gBAAgB,EAAE,oBAAoB;CAWnD;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,GAAE,2BAAgC,GACxC,0BAA0B,CAgD5B;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAYf"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugin/hooks/isHomepageUnique.ts"],"sourcesContent":["import type { CollectionBeforeChangeHook } from 'payload'\nimport { APIError } from 'payload'\n\n/**\n * Information about an existing homepage page\n */\nexport interface ExistingHomepageInfo {\n id: string\n title: string\n slug: string\n}\n\n/**\n * Error thrown when attempting to set a second page as homepage.\n * Contains information about the existing homepage for client-side handling.\n */\nexport class HomepageConflictError extends APIError {\n existingHomepage: ExistingHomepageInfo\n\n constructor(existingHomepage: ExistingHomepageInfo) {\n super(\n `Another page is already set as homepage: \"${existingHomepage.title}\" (/${existingHomepage.slug})`,\n 400,\n // Pass existingHomepage in the data parameter so it appears in the API response\n { existingHomepage },\n true // isPublic - allows the message to be shown to the client\n )\n this.name = 'HomepageConflictError'\n this.existingHomepage = existingHomepage\n }\n}\n\n/**\n * Options for the isHomepage uniqueness hook\n */\nexport interface IsHomepageUniqueHookOptions {\n /**\n * Collection slug to query for existing homepage.\n * Defaults to the current collection.\n */\n collectionSlug?: string\n}\n\n/**\n * Creates a beforeChange hook that ensures only one page can have isHomepage: true.\n *\n * When a user tries to set isHomepage to true on a page, this hook:\n * 1. Checks if another page already has isHomepage: true\n * 2. If found, throws a HomepageConflictError with the existing page info\n * 3. The client can then prompt the user to swap homepages\n *\n * @example\n * ```typescript\n * import { createIsHomepageUniqueHook } from '@delmaredigital/payload-puck/plugin'\n *\n * const Pages: CollectionConfig = {\n * slug: 'pages',\n * hooks: {\n * beforeChange: [createIsHomepageUniqueHook()],\n * },\n * fields: [...],\n * }\n * ```\n */\nexport function createIsHomepageUniqueHook(\n options: IsHomepageUniqueHookOptions = {}\n): CollectionBeforeChangeHook {\n return async ({ data, originalDoc, req, collection, context }) => {\n // Skip if explicitly bypassed (used during homepage swap)\n if (context?.skipIsHomepageHook) {\n return data\n }\n\n // Only check if isHomepage is being set to true\n const isSettingHomepage = data?.isHomepage === true\n const wasHomepage = originalDoc?.isHomepage === true\n\n // Skip if not setting as homepage, or if it was already homepage\n if (!isSettingHomepage || wasHomepage) {\n return data\n }\n\n const collectionSlug = options.collectionSlug || collection.slug\n\n // Query for existing homepage (excluding current document)\n const existingHomepage = await req.payload.find({\n collection: collectionSlug,\n where: {\n and: [\n { isHomepage: { equals: true } },\n // Exclude current document if it has an ID\n ...(originalDoc?.id ? [{ id: { not_equals: originalDoc.id } }] : []),\n ],\n },\n limit: 1,\n depth: 0,\n })\n\n if (existingHomepage.docs.length > 0) {\n const existing = existingHomepage.docs[0] as {\n id: string\n title?: string\n slug?: string\n }\n\n throw new HomepageConflictError({\n id: String(existing.id),\n title: existing.title || 'Untitled',\n slug: existing.slug || '',\n })\n }\n\n return data\n }\n}\n\n/**\n * Unsets isHomepage on the specified page.\n * Used when swapping homepages.\n */\nexport async function unsetHomepage(\n payload: any,\n collectionSlug: string,\n pageId: string\n): Promise<void> {\n await payload.update({\n collection: collectionSlug,\n id: pageId,\n data: {\n isHomepage: false,\n },\n // Skip hooks to avoid infinite loops\n context: {\n skipIsHomepageHook: true,\n },\n })\n}\n"],"names":["APIError","HomepageConflictError","existingHomepage","title","slug","name","createIsHomepageUniqueHook","options","data","originalDoc","req","collection","context","skipIsHomepageHook","isSettingHomepage","isHomepage","wasHomepage","collectionSlug","payload","find","where","and","equals","id","not_equals","limit","depth","docs","length","existing","String","unsetHomepage","pageId","update"],"mappings":"AACA,SAASA,QAAQ,QAAQ,UAAS;AAWlC;;;CAGC,GACD,OAAO,MAAMC,8BAA8BD;IACzCE,iBAAsC;IAEtC,YAAYA,gBAAsC,CAAE;QAClD,KAAK,CACH,CAAC,0CAA0C,EAAEA,iBAAiBC,KAAK,CAAC,IAAI,EAAED,iBAAiBE,IAAI,CAAC,CAAC,CAAC,EAClG,KACA,gFAAgF;QAChF;YAAEF;QAAiB,GACnB,KAAK,0DAA0D;;QAEjE,IAAI,CAACG,IAAI,GAAG;QACZ,IAAI,CAACH,gBAAgB,GAAGA;IAC1B;AACF;AAaA;;;;;;;;;;;;;;;;;;;;CAoBC,GACD,OAAO,SAASI,2BACdC,UAAuC,CAAC,CAAC;IAEzC,OAAO,OAAO,EAAEC,IAAI,EAAEC,WAAW,EAAEC,GAAG,EAAEC,UAAU,EAAEC,OAAO,EAAE;QAC3D,0DAA0D;QAC1D,IAAIA,SAASC,oBAAoB;YAC/B,OAAOL;QACT;QAEA,gDAAgD;QAChD,MAAMM,oBAAoBN,MAAMO,eAAe;QAC/C,MAAMC,cAAcP,aAAaM,eAAe;QAEhD,iEAAiE;QACjE,IAAI,CAACD,qBAAqBE,aAAa;YACrC,OAAOR;QACT;QAEA,MAAMS,iBAAiBV,QAAQU,cAAc,IAAIN,WAAWP,IAAI;QAEhE,2DAA2D;QAC3D,MAAMF,mBAAmB,MAAMQ,IAAIQ,OAAO,CAACC,IAAI,CAAC;YAC9CR,YAAYM;YACZG,OAAO;gBACLC,KAAK;oBACH;wBAAEN,YAAY;4BAAEO,QAAQ;wBAAK;oBAAE;oBAC/B,2CAA2C;uBACvCb,aAAac,KAAK;wBAAC;4BAAEA,IAAI;gCAAEC,YAAYf,YAAYc,EAAE;4BAAC;wBAAE;qBAAE,GAAG,EAAE;iBACpE;YACH;YACAE,OAAO;YACPC,OAAO;QACT;QAEA,IAAIxB,iBAAiByB,IAAI,CAACC,MAAM,GAAG,GAAG;YACpC,MAAMC,WAAW3B,iBAAiByB,IAAI,CAAC,EAAE;YAMzC,MAAM,IAAI1B,sBAAsB;gBAC9BsB,IAAIO,OAAOD,SAASN,EAAE;gBACtBpB,OAAO0B,SAAS1B,KAAK,IAAI;gBACzBC,MAAMyB,SAASzB,IAAI,IAAI;YACzB;QACF;QAEA,OAAOI;IACT;AACF;AAEA;;;CAGC,GACD,OAAO,eAAeuB,cACpBb,OAAY,EACZD,cAAsB,EACtBe,MAAc;IAEd,MAAMd,QAAQe,MAAM,CAAC;QACnBtB,YAAYM;QACZM,IAAIS;QACJxB,MAAM;YACJO,YAAY;QACd;QACA,qCAAqC;QACrCH,SAAS;YACPC,oBAAoB;QACtB;IACF;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA6C,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AACvF,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAA8B,MAAM,mBAAmB,CAAA;AA4EvG;;GAEG;AACH,iBAAS,qBAAqB,CAC5B,cAAc,EAAE,MAAM,EACtB,WAAW,GAAE,eAAoB,GAChC,KAAK,CAyBP;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,iBAAsB,GAAG,MAAM,CA2VxE;AAGD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAGjE,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,aAAa,EACb,kBAAkB,EAClB,wBAAwB,EACxB,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,oBAAoB,GACrB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAAE,qBAAqB,EAAE,CAAA;AAGhC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAG7D,OAAO,EACL,0BAA0B,EAC1B,aAAa,EACb,qBAAqB,GACtB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AAGnE,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC3E,YAAY,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAA"}
|
package/dist/plugin/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/plugin/index.ts"],"sourcesContent":["import type { CollectionConfig, Config as PayloadConfig, Field, Plugin } from 'payload'\nimport type { PuckPluginOptions, PuckAdminConfig, PageTreeIntegrationOptions } from '../types/index.js'\nimport { generatePagesCollection } from './collections/Pages.js'\nimport { TemplatesCollection } from '../collections/Templates.js'\nimport { AiPromptsCollection } from '../ai/collections/AiPrompts.js'\nimport { AiContextCollection } from '../ai/collections/AiContext.js'\nimport { getPuckFields } from './fields/index.js'\nimport { createIsHomepageUniqueHook } from './hooks/isHomepageUnique.js'\nimport {\n createListHandler,\n createCreateHandler,\n createGetHandler,\n createUpdateHandler,\n createDeleteHandler,\n createVersionsHandler,\n createRestoreHandler,\n} from '../endpoints/index.js'\nimport { createStylesHandler, PUCK_STYLES_ENDPOINT } from '../endpoints/styles.js'\nimport { createAiEndpointHandler } from '../endpoints/ai.js'\nimport {\n createPromptsListHandler,\n createPromptsCreateHandler,\n createPromptsUpdateHandler,\n createPromptsDeleteHandler,\n} from '../endpoints/prompts.js'\nimport {\n createContextListHandler,\n createContextCreateHandler,\n createContextUpdateHandler,\n createContextDeleteHandler,\n} from '../endpoints/context.js'\n\n/**\n * Get all field names from a collection's fields array (including nested group fields and tabs)\n */\nfunction getExistingFieldNames(fields: Field[]): Set<string> {\n const names = new Set<string>()\n\n function addFieldNames(fieldsToCheck: Field[]) {\n for (const field of fieldsToCheck) {\n // Add the field name if it has one\n if ('name' in field && field.name) {\n names.add(field.name)\n }\n\n // Check nested fields in groups, rows, collapsibles, etc.\n if ('fields' in field && Array.isArray(field.fields)) {\n addFieldNames(field.fields)\n }\n\n // Check fields inside tabs\n if (field.type === 'tabs' && 'tabs' in field && Array.isArray(field.tabs)) {\n for (const tab of field.tabs) {\n if ('fields' in tab && Array.isArray(tab.fields)) {\n addFieldNames(tab.fields)\n }\n }\n }\n }\n }\n\n addFieldNames(fields)\n return names\n}\n\n/**\n * Filter out fields that already exist in the target collection\n */\nfunction filterExistingFields(fieldsToAdd: Field[], existingNames: Set<string>): Field[] {\n return fieldsToAdd.filter((field) => {\n if ('name' in field && field.name) {\n return !existingNames.has(field.name)\n }\n return true // Keep fields without names (like UI fields)\n })\n}\n\n/**\n * Generates the UI field configuration for the Edit with Puck button\n */\nfunction generatePuckEditField(\n collectionSlug: string,\n adminConfig: PuckAdminConfig = {}\n): Field {\n const {\n editorPathPattern = '/pages/{id}/edit',\n buttonLabel = 'Visual Editor',\n buttonPosition, // undefined = main area (default), 'sidebar' = sidebar\n } = adminConfig\n\n return {\n name: 'puckEdit',\n type: 'ui',\n admin: {\n // Only set position if explicitly specified (sidebar)\n // undefined means main form area in Payload\n ...(buttonPosition && { position: buttonPosition }),\n components: {\n Field: '@delmaredigital/payload-puck/admin/client#EditWithPuckButton',\n Cell: '@delmaredigital/payload-puck/admin/client#EditWithPuckCell',\n },\n custom: {\n collectionSlug,\n editorPathPattern,\n label: buttonLabel,\n },\n },\n }\n}\n\n/**\n * Creates a Payload plugin that integrates Puck visual page builder\n *\n * This plugin:\n * - Generates a Pages collection with puckData field\n * - Registers the Puck editor as an admin view at /admin/puck-editor/:collection/:id\n * - Adds an \"Edit with Puck\" button in the admin document view\n * - Optionally registers API endpoints for CRUD operations\n *\n * The Puck editor is fully integrated into Payload's admin UI.\n *\n * @example\n * ```typescript\n * import { createPuckPlugin } from '@delmaredigital/payload-puck/plugin'\n *\n * export default buildConfig({\n * plugins: [\n * createPuckPlugin({\n * pagesCollection: 'pages',\n * access: {\n * read: () => true,\n * create: ({ req }) => !!req.user,\n * update: ({ req }) => !!req.user,\n * delete: ({ req }) => req.user?.role === 'admin',\n * },\n * admin: {\n * buttonLabel: 'Visual Editor',\n * },\n * }),\n * ],\n * })\n * ```\n */\nexport function createPuckPlugin(options: PuckPluginOptions = {}): Plugin {\n const {\n pagesCollection = 'pages',\n autoGenerateCollection = true,\n admin: pluginAdminConfig = {},\n enableAdminView = true,\n adminViewPath = '/puck-editor',\n enableEndpoints = true,\n pageTreeIntegration, // No default - undefined means auto-detect\n editorStylesheet,\n editorStylesheetUrls = [],\n editorStylesheetCompiled,\n ai: aiConfig,\n previewUrl,\n } = options\n\n const { addEditButton = true } = pluginAdminConfig\n\n // Parse page-tree integration config\n // - undefined: auto-detect at runtime (null stored, view will check for pageSegment field)\n // - false: explicitly disabled (store false to prevent auto-detection)\n // - true: use defaults\n // - object: use custom field names\n let pageTreeConfig: PageTreeIntegrationOptions | false | null = null\n if (pageTreeIntegration === undefined) {\n // Not specified - store null to trigger auto-detection in the view\n pageTreeConfig = null\n } else if (pageTreeIntegration === false) {\n // Explicitly disabled - store false to prevent auto-detection\n pageTreeConfig = false\n } else if (pageTreeIntegration === true) {\n // Explicitly enabled with defaults\n pageTreeConfig = {\n folderSlug: 'payload-folders',\n segmentFieldName: 'pathSegment',\n pageSegmentFieldName: 'pageSegment',\n folderFieldName: 'folder',\n }\n } else {\n // Custom config object\n pageTreeConfig = {\n folderSlug: pageTreeIntegration.folderSlug ?? 'payload-folders',\n segmentFieldName: pageTreeIntegration.segmentFieldName ?? 'pathSegment',\n pageSegmentFieldName: pageTreeIntegration.pageSegmentFieldName ?? 'pageSegment',\n folderFieldName: pageTreeIntegration.folderFieldName ?? 'folder',\n }\n }\n\n return (incomingConfig: PayloadConfig): PayloadConfig => {\n // Generate Pages collection if auto-generate is enabled\n let collections = incomingConfig.collections || []\n\n // Always add the Templates collection if it doesn't exist\n const templatesCollectionExists = collections.some(\n (c) => c.slug === 'puck-templates'\n )\n if (!templatesCollectionExists) {\n collections = [...collections, TemplatesCollection]\n }\n\n // Add AI Prompts collection if AI is enabled with promptsCollection\n if (aiConfig?.enabled && aiConfig?.promptsCollection) {\n const aiPromptsExists = collections.some(\n (c) => c.slug === 'puck-ai-prompts'\n )\n if (!aiPromptsExists) {\n collections = [...collections, AiPromptsCollection]\n }\n }\n\n // Add AI Context collection if AI is enabled with contextCollection\n if (aiConfig?.enabled && aiConfig?.contextCollection) {\n const aiContextExists = collections.some(\n (c) => c.slug === 'puck-ai-context'\n )\n if (!aiContextExists) {\n collections = [...collections, AiContextCollection]\n }\n }\n\n if (autoGenerateCollection) {\n // Check if collection already exists\n const existingCollectionIndex = collections.findIndex(\n (c) => c.slug === pagesCollection\n )\n\n // Generate the edit button field if enabled\n const editButtonField = addEditButton\n ? [generatePuckEditField(pagesCollection, pluginAdminConfig)]\n : []\n\n if (existingCollectionIndex >= 0) {\n // Collection exists - only add Puck fields that don't already exist\n const existingCollection = collections[existingCollectionIndex]\n const existingFields = existingCollection.fields || []\n const existingFieldNames = getExistingFieldNames(existingFields)\n\n // Determine if isHomepage should be added\n const shouldAddIsHomepage = !existingFieldNames.has('isHomepage')\n\n // Get Puck-specific fields (not the full collection with title/slug)\n // This avoids duplicating fields the user may have already defined\n const puckFields = getPuckFields({\n includeSEO: !existingFieldNames.has('meta'),\n includeConversion: !existingFieldNames.has('conversionTracking'),\n includeEditorVersion: !existingFieldNames.has('editorVersion'),\n includePageLayout: !existingFieldNames.has('pageLayout'),\n includeIsHomepage: shouldAddIsHomepage,\n layouts: options.layouts,\n })\n\n // Filter out any remaining duplicates (e.g., puckData if user already has it)\n const fieldsToAdd = filterExistingFields(puckFields, existingFieldNames)\n\n // Only add edit button if puckEdit doesn't exist\n const editFieldsToAdd = existingFieldNames.has('puckEdit') ? [] : editButtonField\n\n // Merge hooks - add isHomepage uniqueness hook if we're adding the field\n const existingHooks = existingCollection.hooks || {}\n const mergedHooks = shouldAddIsHomepage\n ? {\n ...existingHooks,\n beforeChange: [\n createIsHomepageUniqueHook(),\n ...(existingHooks.beforeChange ?? []),\n ],\n }\n : existingHooks\n\n collections = [\n ...collections.slice(0, existingCollectionIndex),\n {\n ...existingCollection,\n // Ensure drafts are enabled for Puck\n versions:\n typeof existingCollection.versions === 'object'\n ? { drafts: true, ...existingCollection.versions }\n : existingCollection.versions ?? { drafts: true },\n hooks: mergedHooks,\n fields: [\n ...existingFields,\n ...fieldsToAdd,\n ...editFieldsToAdd,\n ],\n },\n ...collections.slice(existingCollectionIndex + 1),\n ]\n } else {\n // Add new collection with edit button field\n const generatedCollection = generatePagesCollection(pagesCollection, options)\n collections = [\n ...collections,\n {\n ...generatedCollection,\n fields: [...generatedCollection.fields, ...editButtonField],\n },\n ]\n }\n }\n\n // Build the admin config with view registration\n const payloadAdminConfig: PayloadConfig['admin'] = {\n ...incomingConfig.admin,\n }\n\n // Register the Puck editor admin view if enabled\n if (enableAdminView) {\n payloadAdminConfig.components = {\n ...payloadAdminConfig.components,\n views: {\n ...payloadAdminConfig.components?.views,\n puckEditor: {\n Component: '@delmaredigital/payload-puck/rsc#PuckEditorView',\n path: `${adminViewPath}/:segments*` as `/${string}`,\n },\n },\n }\n }\n\n // Register API endpoints if enabled\n const puckCollections = [pagesCollection]\n const endpointOptions = { collections: puckCollections }\n\n // Build styles endpoint URL list for PuckConfigProvider\n // In production, prefer the pre-compiled static CSS file if provided\n // In development, use runtime compilation endpoint for hot reload\n const isProduction = process.env.NODE_ENV === 'production'\n const useCompiledCss = isProduction && editorStylesheetCompiled\n\n const editorStylesheets: string[] = [\n ...(useCompiledCss\n ? [editorStylesheetCompiled]\n : editorStylesheet\n ? [PUCK_STYLES_ENDPOINT]\n : []),\n ...editorStylesheetUrls,\n ]\n\n const endpoints = enableEndpoints\n ? [\n ...(incomingConfig.endpoints || []),\n // Styles endpoint MUST be first - exact match before parameterized routes\n ...(editorStylesheet\n ? [\n {\n path: '/puck/styles',\n method: 'get' as const,\n handler: createStylesHandler(editorStylesheet),\n },\n ]\n : []),\n // AI endpoint (exact match, before parameterized routes)\n ...(aiConfig?.enabled\n ? [\n {\n path: '/puck/ai',\n method: 'post' as const,\n handler: createAiEndpointHandler({ context: aiConfig.context, tools: aiConfig.tools }),\n },\n ]\n : []),\n // AI Prompts CRUD endpoints (exact match, before parameterized routes)\n ...(aiConfig?.enabled && aiConfig?.promptsCollection\n ? [\n {\n path: '/puck/ai-prompts',\n method: 'get' as const,\n handler: createPromptsListHandler(),\n },\n {\n path: '/puck/ai-prompts',\n method: 'post' as const,\n handler: createPromptsCreateHandler(),\n },\n {\n path: '/puck/ai-prompts/:id',\n method: 'patch' as const,\n handler: createPromptsUpdateHandler(),\n },\n {\n path: '/puck/ai-prompts/:id',\n method: 'delete' as const,\n handler: createPromptsDeleteHandler(),\n },\n ]\n : []),\n // AI Context CRUD endpoints (exact match, before parameterized routes)\n ...(aiConfig?.enabled && aiConfig?.contextCollection\n ? [\n {\n path: '/puck/ai-context',\n method: 'get' as const,\n handler: createContextListHandler(),\n },\n {\n path: '/puck/ai-context',\n method: 'post' as const,\n handler: createContextCreateHandler(),\n },\n {\n path: '/puck/ai-context/:id',\n method: 'patch' as const,\n handler: createContextUpdateHandler(),\n },\n {\n path: '/puck/ai-context/:id',\n method: 'delete' as const,\n handler: createContextDeleteHandler(),\n },\n ]\n : []),\n // Collection endpoints (parameterized routes)\n {\n path: '/puck/:collection',\n method: 'get' as const,\n handler: createListHandler(endpointOptions),\n },\n {\n path: '/puck/:collection',\n method: 'post' as const,\n handler: createCreateHandler(endpointOptions),\n },\n {\n path: '/puck/:collection/:id',\n method: 'get' as const,\n handler: createGetHandler(endpointOptions),\n },\n {\n path: '/puck/:collection/:id',\n method: 'patch' as const,\n handler: createUpdateHandler(endpointOptions),\n },\n {\n path: '/puck/:collection/:id',\n method: 'delete' as const,\n handler: createDeleteHandler(endpointOptions),\n },\n {\n path: '/puck/:collection/:id/versions',\n method: 'get' as const,\n handler: createVersionsHandler(endpointOptions),\n },\n {\n path: '/puck/:collection/:id/restore',\n method: 'post' as const,\n handler: createRestoreHandler(endpointOptions),\n },\n ]\n : incomingConfig.endpoints || []\n\n return {\n ...incomingConfig,\n admin: payloadAdminConfig,\n collections,\n endpoints,\n // Store options in custom for the view to access\n custom: {\n ...incomingConfig.custom,\n puck: {\n collections: puckCollections,\n layouts: options.layouts,\n // Page-tree integration config (null if not enabled)\n pageTree: pageTreeConfig,\n // Editor stylesheets for iframe\n editorStylesheets: editorStylesheets.length > 0 ? editorStylesheets : undefined,\n // Preview URL configuration\n previewUrl,\n // AI configuration\n ai: aiConfig?.enabled\n ? {\n enabled: true,\n context: aiConfig.context,\n examplePrompts: aiConfig.examplePrompts,\n promptsCollection: aiConfig.promptsCollection,\n contextCollection: aiConfig.contextCollection,\n }\n : undefined,\n },\n },\n onInit: async (payload) => {\n // Call existing onInit if present\n if (incomingConfig.onInit) {\n await incomingConfig.onInit(payload)\n }\n },\n }\n }\n}\n\n// Re-export collection utilities\nexport { generatePagesCollection } from './collections/Pages.js'\nexport { TemplatesCollection } from '../collections/Templates.js'\n\n// Re-export field utilities for hybrid collection integration\nexport {\n getPuckFields,\n getPuckCollectionConfig,\n puckDataField,\n editorVersionField,\n createEditorVersionField,\n pageLayoutField,\n createPageLayoutField,\n isHomepageField,\n seoFieldGroup,\n conversionFieldGroup,\n} from './fields/index.js'\n\n// Export the edit button generator for hybrid collections\nexport { generatePuckEditField }\n\n// Export styles endpoint constant\nexport { PUCK_STYLES_ENDPOINT } from '../endpoints/styles.js'\n\n// Re-export hooks for hybrid collection integration\nexport {\n createIsHomepageUniqueHook,\n unsetHomepage,\n HomepageConflictError,\n} from './hooks/index.js'\nexport type { IsHomepageUniqueHookOptions } from './hooks/index.js'\n\n// Re-export types\nexport type { PuckPluginOptions, PuckAdminConfig } from '../types/index.js'\nexport type { GetPuckFieldsOptions, GetPuckCollectionConfigOptions } from './fields/types.js'\n"],"names":["generatePagesCollection","TemplatesCollection","AiPromptsCollection","AiContextCollection","getPuckFields","createIsHomepageUniqueHook","createListHandler","createCreateHandler","createGetHandler","createUpdateHandler","createDeleteHandler","createVersionsHandler","createRestoreHandler","createStylesHandler","PUCK_STYLES_ENDPOINT","createAiEndpointHandler","createPromptsListHandler","createPromptsCreateHandler","createPromptsUpdateHandler","createPromptsDeleteHandler","createContextListHandler","createContextCreateHandler","createContextUpdateHandler","createContextDeleteHandler","getExistingFieldNames","fields","names","Set","addFieldNames","fieldsToCheck","field","name","add","Array","isArray","type","tabs","tab","filterExistingFields","fieldsToAdd","existingNames","filter","has","generatePuckEditField","collectionSlug","adminConfig","editorPathPattern","buttonLabel","buttonPosition","admin","position","components","Field","Cell","custom","label","createPuckPlugin","options","pagesCollection","autoGenerateCollection","pluginAdminConfig","enableAdminView","adminViewPath","enableEndpoints","pageTreeIntegration","editorStylesheet","editorStylesheetUrls","editorStylesheetCompiled","ai","aiConfig","previewUrl","addEditButton","pageTreeConfig","undefined","folderSlug","segmentFieldName","pageSegmentFieldName","folderFieldName","incomingConfig","collections","templatesCollectionExists","some","c","slug","enabled","promptsCollection","aiPromptsExists","contextCollection","aiContextExists","existingCollectionIndex","findIndex","editButtonField","existingCollection","existingFields","existingFieldNames","shouldAddIsHomepage","puckFields","includeSEO","includeConversion","includeEditorVersion","includePageLayout","includeIsHomepage","layouts","editFieldsToAdd","existingHooks","hooks","mergedHooks","beforeChange","slice","versions","drafts","generatedCollection","payloadAdminConfig","views","puckEditor","Component","path","puckCollections","endpointOptions","isProduction","process","env","NODE_ENV","useCompiledCss","editorStylesheets","endpoints","method","handler","context","tools","puck","pageTree","length","examplePrompts","onInit","payload","getPuckCollectionConfig","puckDataField","editorVersionField","createEditorVersionField","pageLayoutField","createPageLayoutField","isHomepageField","seoFieldGroup","conversionFieldGroup","unsetHomepage","HomepageConflictError"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
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,mBAAmB,CAAA;AACxE,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,+BA8BlC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,GAAG,cAAc,CAwB1E"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/render/HybridPageRenderer.tsx"],"sourcesContent":["/**\n * Hybrid Page Renderer\n *\n * Renders pages that can be either Puck-edited or legacy Payload block-based.\n * For new projects using only Puck, legacyRenderer is optional.\n *\n * @example New project (Puck-only)\n * ```tsx\n * import { HybridPageRenderer } from '@delmaredigital/payload-puck/render'\n * import { puckConfig } from '@/puck/config'\n *\n * export async function PageRenderer({ slug }) {\n * const page = await fetchPage(slug)\n * return <HybridPageRenderer page={page} config={puckConfig} />\n * }\n * ```\n *\n * @example Migration (with legacy blocks)\n * ```tsx\n * import { HybridPageRenderer } from '@delmaredigital/payload-puck/render'\n * import { puckConfig } from '@/puck/config'\n * import { siteLayouts } from '@/lib/puck-layouts'\n * import { BlockRenderer } from '@/components/blocks/BlockRenderer'\n *\n * export async function PageRenderer({ slug }) {\n * const page = await fetchPage(slug)\n *\n * return (\n * <HybridPageRenderer\n * page={page}\n * config={puckConfig}\n * layouts={siteLayouts}\n * legacyRenderer={(blocks) => <BlockRenderer blocks={blocks} />}\n * />\n * )\n * }\n * ```\n */\n\nimport type { Config as PuckConfig, Data as PuckData } from '@puckeditor/core'\nimport { PageRenderer, type PageRendererProps } from './PageRenderer.js'\nimport type { ReactNode } from 'react'\n\n/**\n * Loose input type that accepts Payload's generic JSON field types.\n * Use with `toHybridPageData()` to convert to `HybridPageData`.\n */\nexport interface HybridPageDataInput {\n editorVersion?: string | null\n puckData?: unknown\n [key: string]: unknown\n}\n\n/**\n * Page data shape for hybrid rendering\n */\nexport interface HybridPageData {\n /**\n * Which editor was used to create the page\n * - 'puck': Page was created/edited with Puck visual editor\n * - 'legacy': Page uses traditional Payload block fields\n */\n editorVersion?: 'legacy' | 'puck'\n\n /**\n * Puck editor data (for pages with editorVersion: 'puck')\n */\n puckData?: PuckData | null\n\n /**\n * Legacy blocks array (for pages with editorVersion: 'legacy')\n * The field name varies by project (e.g., 'layout', 'blocks', 'content')\n */\n [key: string]: unknown\n}\n\nexport interface HybridPageRendererProps<TBlocks = unknown[]>\n extends Omit<PageRendererProps, 'data'> {\n /**\n * Page document containing editorVersion, puckData, and optionally legacy blocks\n */\n page: HybridPageData\n\n /**\n * Render function for legacy Payload blocks.\n * Called when editorVersion is 'legacy' or when puckData is not available.\n *\n * Optional for new projects that will only have Puck pages. If not provided\n * and legacy blocks are encountered, the fallback will be rendered instead.\n *\n * Use the generic type parameter to get proper typing for your blocks:\n * @example\n * ```tsx\n * <HybridPageRenderer<NonNullable<Page['layout']>>\n * legacyRenderer={(blocks) => <RenderBlocks blocks={blocks} />}\n * />\n * ```\n *\n * @param blocks - The legacy blocks array from the page\n * @returns React node to render\n */\n legacyRenderer?: (blocks: TBlocks) => ReactNode\n\n /**\n * Name of the field containing legacy blocks\n * @default 'layout'\n */\n legacyBlocksField?: string\n\n /**\n * Fallback content when no content is available\n * @default <div>No content available</div>\n */\n fallback?: ReactNode\n}\n\n/**\n * Renders a page using either Puck or legacy Payload blocks\n *\n * Decision logic:\n * 1. If editorVersion is 'puck' AND puckData has content → render with PageRenderer\n * 2. If legacy blocks exist AND legacyRenderer is provided → render with legacyRenderer\n * 3. Otherwise → render fallback\n */\nexport function HybridPageRenderer<TBlocks = unknown[]>({\n page,\n legacyRenderer,\n legacyBlocksField = 'layout',\n fallback = <div>No content available</div>,\n config,\n layouts,\n wrapper,\n className,\n}: HybridPageRendererProps<TBlocks>) {\n // Check for Puck content\n const puckData = page.puckData as PuckData | null | undefined\n const hasPuckContent =\n puckData?.content && Array.isArray(puckData.content) && puckData.content.length > 0\n\n // Check for legacy content\n const legacyBlocks = page[legacyBlocksField] as TBlocks | undefined\n const hasLegacyContent = Array.isArray(legacyBlocks) && legacyBlocks.length > 0\n\n // Render Puck pages\n if (page.editorVersion === 'puck' && hasPuckContent) {\n return (\n <PageRenderer\n data={puckData as PuckData}\n config={config}\n layouts={layouts}\n wrapper={wrapper}\n className={className}\n />\n )\n }\n\n // Render legacy pages (only if legacyRenderer is provided)\n if (hasLegacyContent && legacyRenderer) {\n return <>{legacyRenderer(legacyBlocks as TBlocks)}</>\n }\n\n // Fallback for empty pages\n return <>{fallback}</>\n}\n\n/**\n * Converts a loosely-typed page object (e.g., from Payload's generated types)\n * to a properly typed `HybridPageData`.\n *\n * Use this when Payload's generated types for JSON fields are too generic\n * and don't match `HybridPageData`.\n *\n * @example\n * ```tsx\n * import { HybridPageRenderer, toHybridPageData } from '@delmaredigital/payload-puck/render'\n *\n * // page comes from Payload with generic JSON types\n * const page = await payload.findByID({ collection: 'pages', id })\n *\n * <HybridPageRenderer\n * page={toHybridPageData(page)}\n * config={config}\n * legacyRenderer={(blocks) => <BlockRenderer blocks={blocks} />}\n * />\n * ```\n *\n * @param page - Page object with loosely-typed fields\n * @returns Properly typed HybridPageData\n * @throws Error if editorVersion is present but invalid\n */\nexport function toHybridPageData(page: HybridPageDataInput): HybridPageData {\n const { editorVersion, puckData, ...rest } = page\n\n // Validate editorVersion if present\n if (editorVersion !== undefined && editorVersion !== null) {\n if (editorVersion !== 'legacy' && editorVersion !== 'puck') {\n throw new Error(\n `Invalid editorVersion: \"${editorVersion}\". Expected \"legacy\", \"puck\", or undefined.`\n )\n }\n }\n\n // Validate puckData shape if present (basic check)\n if (puckData !== undefined && puckData !== null) {\n if (typeof puckData !== 'object') {\n throw new Error(`Invalid puckData: expected object, got ${typeof puckData}`)\n }\n }\n\n return {\n ...rest,\n editorVersion: editorVersion as HybridPageData['editorVersion'],\n puckData: puckData as HybridPageData['puckData'],\n }\n}\n"],"names":["PageRenderer","HybridPageRenderer","page","legacyRenderer","legacyBlocksField","fallback","div","config","layouts","wrapper","className","puckData","hasPuckContent","content","Array","isArray","length","legacyBlocks","hasLegacyContent","editorVersion","data","toHybridPageData","rest","undefined","Error"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCC;AAGD,SAASA,YAAY,QAAgC,oBAAmB;AA4ExE;;;;;;;CAOC,GACD,OAAO,SAASC,mBAAwC,EACtDC,IAAI,EACJC,cAAc,EACdC,oBAAoB,QAAQ,EAC5BC,yBAAW,KAACC;cAAI;EAA0B,EAC1CC,MAAM,EACNC,OAAO,EACPC,OAAO,EACPC,SAAS,EACwB;IACjC,yBAAyB;IACzB,MAAMC,WAAWT,KAAKS,QAAQ;IAC9B,MAAMC,iBACJD,UAAUE,WAAWC,MAAMC,OAAO,CAACJ,SAASE,OAAO,KAAKF,SAASE,OAAO,CAACG,MAAM,GAAG;IAEpF,2BAA2B;IAC3B,MAAMC,eAAef,IAAI,CAACE,kBAAkB;IAC5C,MAAMc,mBAAmBJ,MAAMC,OAAO,CAACE,iBAAiBA,aAAaD,MAAM,GAAG;IAE9E,oBAAoB;IACpB,IAAId,KAAKiB,aAAa,KAAK,UAAUP,gBAAgB;QACnD,qBACE,KAACZ;YACCoB,MAAMT;YACNJ,QAAQA;YACRC,SAASA;YACTC,SAASA;YACTC,WAAWA;;IAGjB;IAEA,2DAA2D;IAC3D,IAAIQ,oBAAoBf,gBAAgB;QACtC,qBAAO;sBAAGA,eAAec;;IAC3B;IAEA,2BAA2B;IAC3B,qBAAO;kBAAGZ;;AACZ;AAEA;;;;;;;;;;;;;;;;;;;;;;;;CAwBC,GACD,OAAO,SAASgB,iBAAiBnB,IAAyB;IACxD,MAAM,EAAEiB,aAAa,EAAER,QAAQ,EAAE,GAAGW,MAAM,GAAGpB;IAE7C,oCAAoC;IACpC,IAAIiB,kBAAkBI,aAAaJ,kBAAkB,MAAM;QACzD,IAAIA,kBAAkB,YAAYA,kBAAkB,QAAQ;YAC1D,MAAM,IAAIK,MACR,CAAC,wBAAwB,EAAEL,cAAc,2CAA2C,CAAC;QAEzF;IACF;IAEA,mDAAmD;IACnD,IAAIR,aAAaY,aAAaZ,aAAa,MAAM;QAC/C,IAAI,OAAOA,aAAa,UAAU;YAChC,MAAM,IAAIa,MAAM,CAAC,uCAAuC,EAAE,OAAOb,UAAU;QAC7E;IACF;IAEA,OAAO;QACL,GAAGW,IAAI;QACPH,eAAeA;QACfR,UAAUA;IACZ;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PageRenderer.d.ts","sourceRoot":"","sources":["../../src/render/PageRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE9E,OAAO,EAA6C,KAAK,gBAAgB,EAAsB,MAAM,qBAAqB,CAAA;AAG1H,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAA;IAEd;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAA;IAEnB;;OAEG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC,CAAA;IAE5D;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;;OAGG;IACH,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,MAAmB,EACnB,OAAO,EAAE,OAAO,EAChB,SAAS,EACT,OAAyB,GAC1B,EAAE,iBAAiB,+BAyDnB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/render/PageRenderer.tsx"],"sourcesContent":["import { Render } from '@puckeditor/core'\nimport type { Config as PuckConfig, Data as PuckData } from '@puckeditor/core'\nimport { baseConfig } from '../config/index.js'\nimport { LayoutWrapper, getLayout, DEFAULT_LAYOUTS, type LayoutDefinition, type PageOverrides } from '../layouts/index.js'\nimport type { BackgroundValue } from '../fields/shared.js'\n\nexport interface PageRendererProps {\n /**\n * Puck data to render\n */\n data: PuckData\n\n /**\n * Puck configuration to use\n * @default baseConfig\n */\n config?: PuckConfig\n\n /**\n * Optional wrapper component (takes precedence over layout)\n */\n wrapper?: React.ComponentType<{ children: React.ReactNode }>\n\n /**\n * Optional className for the wrapper\n */\n className?: string\n\n /**\n * Available layouts for this page\n * @default DEFAULT_LAYOUTS\n */\n layouts?: LayoutDefinition[]\n}\n\n/**\n * Renders a Puck page using the provided data and configuration\n *\n * @example\n * ```tsx\n * import { PageRenderer } from '@delmaredigital/payload-puck/render'\n * import { baseConfig } from '@delmaredigital/payload-puck/config'\n * import { ThemeProvider } from '@delmaredigital/payload-puck/theme'\n *\n * export default async function Page({ params }) {\n * const page = await getPage(params.slug)\n *\n * // Wrap with ThemeProvider if using theming\n * return (\n * <ThemeProvider theme={myTheme}>\n * <PageRenderer data={page.puckData} config={baseConfig} />\n * </ThemeProvider>\n * )\n * }\n * ```\n */\nexport function PageRenderer({\n data,\n config = baseConfig,\n wrapper: Wrapper,\n className,\n layouts = DEFAULT_LAYOUTS,\n}: PageRendererProps) {\n // Handle empty or invalid data\n if (!data || !data.content) {\n return (\n <div className={className}>\n <p>No content available</p>\n </div>\n )\n }\n\n const content = <Render config={config} data={data} />\n\n // Extract root props for page-level settings\n const rootProps = data.root?.props as {\n pageLayout?: string\n showHeader?: 'default' | 'show' | 'hide'\n showFooter?: 'default' | 'show' | 'hide'\n pageBackground?: BackgroundValue | null\n pageMaxWidth?: string\n } | undefined\n\n // Build page overrides from root props\n const overrides: PageOverrides = {\n showHeader: rootProps?.showHeader,\n showFooter: rootProps?.showFooter,\n background: rootProps?.pageBackground,\n maxWidth: rootProps?.pageMaxWidth,\n }\n\n // Build the component tree\n let result = content\n\n // Custom wrapper takes precedence\n if (Wrapper) {\n result = <Wrapper>{result}</Wrapper>\n } else {\n // Apply layout from puck root props\n const pageLayout = rootProps?.pageLayout\n const layout = pageLayout ? getLayout(layouts, pageLayout) : undefined\n\n if (layout) {\n result = (\n <LayoutWrapper layout={layout} className={className} overrides={overrides}>\n {result}\n </LayoutWrapper>\n )\n } else if (className || overrides.background) {\n // No layout but has background or className - use LayoutWrapper without layout\n result = (\n <LayoutWrapper className={className} overrides={overrides}>\n {result}\n </LayoutWrapper>\n )\n }\n }\n\n return result\n}\n"],"names":["Render","baseConfig","LayoutWrapper","getLayout","DEFAULT_LAYOUTS","PageRenderer","data","config","wrapper","Wrapper","className","layouts","content","div","p","rootProps","root","props","overrides","showHeader","showFooter","background","pageBackground","maxWidth","pageMaxWidth","result","pageLayout","layout","undefined"],"mappings":";AAAA,SAASA,MAAM,QAAQ,mBAAkB;AAEzC,SAASC,UAAU,QAAQ,qBAAoB;AAC/C,SAASC,aAAa,EAAEC,SAAS,EAAEC,eAAe,QAAmD,sBAAqB;AAgC1H;;;;;;;;;;;;;;;;;;;;CAoBC,GACD,OAAO,SAASC,aAAa,EAC3BC,IAAI,EACJC,SAASN,UAAU,EACnBO,SAASC,OAAO,EAChBC,SAAS,EACTC,UAAUP,eAAe,EACP;IAClB,+BAA+B;IAC/B,IAAI,CAACE,QAAQ,CAACA,KAAKM,OAAO,EAAE;QAC1B,qBACE,KAACC;YAAIH,WAAWA;sBACd,cAAA,KAACI;0BAAE;;;IAGT;IAEA,MAAMF,wBAAU,KAACZ;QAAOO,QAAQA;QAAQD,MAAMA;;IAE9C,6CAA6C;IAC7C,MAAMS,YAAYT,KAAKU,IAAI,EAAEC;IAQ7B,uCAAuC;IACvC,MAAMC,YAA2B;QAC/BC,YAAYJ,WAAWI;QACvBC,YAAYL,WAAWK;QACvBC,YAAYN,WAAWO;QACvBC,UAAUR,WAAWS;IACvB;IAEA,2BAA2B;IAC3B,IAAIC,SAASb;IAEb,kCAAkC;IAClC,IAAIH,SAAS;QACXgB,uBAAS,KAAChB;sBAASgB;;IACrB,OAAO;QACL,oCAAoC;QACpC,MAAMC,aAAaX,WAAWW;QAC9B,MAAMC,SAASD,aAAavB,UAAUQ,SAASe,cAAcE;QAE7D,IAAID,QAAQ;YACVF,uBACE,KAACvB;gBAAcyB,QAAQA;gBAAQjB,WAAWA;gBAAWQ,WAAWA;0BAC7DO;;QAGP,OAAO,IAAIf,aAAaQ,UAAUG,UAAU,EAAE;YAC5C,+EAA+E;YAC/EI,uBACE,KAACvB;gBAAcQ,WAAWA;gBAAWQ,WAAWA;0BAC7CO;;QAGP;IACF;IAEA,OAAOA;AACT"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PuckEditor.client.d.ts","sourceRoot":"","sources":["../../src/render/PuckEditor.client.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAQ,KAAK,MAAM,IAAI,UAAU,EAAE,KAAK,IAAI,IAAI,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAEzF,OAAO,2BAA2B,CAAA;AAElC,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,EAAE,UAAU,CAAA;IAElB;;OAEG;IACH,WAAW,CAAC,EAAE,QAAQ,CAAA;IAEtB;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEjD;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAA;IAEnC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAE/B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,WAAW,EACX,MAAM,EACN,QAAQ,EACR,UAAU,EACV,aAAa,EACb,iBAAwB,GACzB,EAAE,eAAe,+BAgDjB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/render/PuckEditor.client.tsx"],"sourcesContent":["'use client'\n\nimport { Puck, type Config as PuckConfig, type Data as PuckData } from '@puckeditor/core'\nimport { useCallback, useState } from 'react'\nimport '@puckeditor/core/puck.css'\n\nexport interface PuckEditorProps {\n /**\n * Puck configuration with components and settings\n */\n config: PuckConfig\n\n /**\n * Initial Puck data to load\n */\n initialData?: PuckData\n\n /**\n * Callback when data is saved\n */\n onSave?: (data: PuckData) => void | Promise<void>\n\n /**\n * Callback when data changes\n */\n onChange?: (data: PuckData) => void\n\n /**\n * URL to redirect to after publishing\n */\n publishUrl?: string\n\n /**\n * Header actions to render in the editor header\n */\n headerActions?: React.ReactNode\n\n /**\n * Whether to show the publish button\n * @default true\n */\n showPublishButton?: boolean\n}\n\n/**\n * Client-side Puck visual editor component\n *\n * This component wraps the Puck editor for use in Next.js applications.\n * It must be used in a client component ('use client').\n *\n * @example\n * ```tsx\n * 'use client'\n *\n * import { PuckEditor } from '@delmaredigital/payload-puck/render'\n * import { editorConfig } from '@delmaredigital/payload-puck/config/editor'\n *\n * export function PageEditor({ page }) {\n * const handleSave = async (data) => {\n * await fetch(`/api/pages/${page.id}`, {\n * method: 'PATCH',\n * body: JSON.stringify({ puckData: data }),\n * })\n * }\n *\n * return (\n * <PuckEditor\n * config={editorConfig}\n * initialData={page.puckData}\n * onSave={handleSave}\n * />\n * )\n * }\n * ```\n */\nexport function PuckEditor({\n config,\n initialData,\n onSave,\n onChange,\n publishUrl,\n headerActions,\n showPublishButton = true,\n}: PuckEditorProps) {\n const [isSaving, setIsSaving] = useState(false)\n\n const handlePublish = useCallback(\n async (data: PuckData) => {\n if (!onSave) return\n\n setIsSaving(true)\n try {\n await onSave(data)\n if (publishUrl) {\n window.location.href = publishUrl\n }\n } catch (error) {\n console.error('Error saving page:', error)\n } finally {\n setIsSaving(false)\n }\n },\n [onSave, publishUrl]\n )\n\n // Default empty data\n const defaultData: PuckData = {\n root: { props: {} },\n content: [],\n zones: {},\n }\n\n return (\n <Puck\n config={config}\n data={initialData || defaultData}\n onPublish={showPublishButton ? handlePublish : undefined}\n onChange={onChange}\n overrides={{\n headerActions: ({ children }) => (\n <>\n {isSaving && (\n <span className=\"text-sm text-gray-500 mr-4\">Saving...</span>\n )}\n {headerActions}\n {children}\n </>\n ),\n }}\n />\n )\n}\n"],"names":["Puck","useCallback","useState","PuckEditor","config","initialData","onSave","onChange","publishUrl","headerActions","showPublishButton","isSaving","setIsSaving","handlePublish","data","window","location","href","error","console","defaultData","root","props","content","zones","onPublish","undefined","overrides","children","span","className"],"mappings":"AAAA;;AAEA,SAASA,IAAI,QAA0D,mBAAkB;AACzF,SAASC,WAAW,EAAEC,QAAQ,QAAQ,QAAO;AAC7C,OAAO,4BAA2B;AAwClC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BC,GACD,OAAO,SAASC,WAAW,EACzBC,MAAM,EACNC,WAAW,EACXC,MAAM,EACNC,QAAQ,EACRC,UAAU,EACVC,aAAa,EACbC,oBAAoB,IAAI,EACR;IAChB,MAAM,CAACC,UAAUC,YAAY,GAAGV,SAAS;IAEzC,MAAMW,gBAAgBZ,YACpB,OAAOa;QACL,IAAI,CAACR,QAAQ;QAEbM,YAAY;QACZ,IAAI;YACF,MAAMN,OAAOQ;YACb,IAAIN,YAAY;gBACdO,OAAOC,QAAQ,CAACC,IAAI,GAAGT;YACzB;QACF,EAAE,OAAOU,OAAO;YACdC,QAAQD,KAAK,CAAC,sBAAsBA;QACtC,SAAU;YACRN,YAAY;QACd;IACF,GACA;QAACN;QAAQE;KAAW;IAGtB,qBAAqB;IACrB,MAAMY,cAAwB;QAC5BC,MAAM;YAAEC,OAAO,CAAC;QAAE;QAClBC,SAAS,EAAE;QACXC,OAAO,CAAC;IACV;IAEA,qBACE,KAACxB;QACCI,QAAQA;QACRU,MAAMT,eAAee;QACrBK,WAAWf,oBAAoBG,gBAAgBa;QAC/CnB,UAAUA;QACVoB,WAAW;YACTlB,eAAe,CAAC,EAAEmB,QAAQ,EAAE,iBAC1B;;wBACGjB,0BACC,KAACkB;4BAAKC,WAAU;sCAA6B;;wBAE9CrB;wBACAmB;;;QAGP;;AAGN"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/render/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC9E,YAAY,EACV,uBAAuB,EACvB,cAAc,EACd,mBAAmB,GACpB,MAAM,yBAAyB,CAAA;AAGhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA"}
|
package/dist/render/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/render/index.ts"],"sourcesContent":["/**\n * Rendering components for Puck pages\n *\n * This module only exports server-safe components.\n * For the client-side editor, use '@delmaredigital/payload-puck/editor'\n */\n\nexport { PageRenderer } from './PageRenderer.js'\nexport type { PageRendererProps } from './PageRenderer.js'\n\nexport { HybridPageRenderer, toHybridPageData } from './HybridPageRenderer.js'\nexport type {\n HybridPageRendererProps,\n HybridPageData,\n HybridPageDataInput,\n} from './HybridPageRenderer.js'\n\n// Re-export createRenderLayouts for convenience (commonly used with renderers)\nexport { createRenderLayouts } from '../layouts/utils.js'\n\n// Note: PuckEditor has been moved to '@delmaredigital/payload-puck/editor'\n// to avoid RSC import issues with the client-only Puck component\n"],"names":["PageRenderer","HybridPageRenderer","toHybridPageData","createRenderLayouts"],"mappings":"AAAA;;;;;CAKC,GAED,SAASA,YAAY,QAAQ,oBAAmB;AAGhD,SAASC,kBAAkB,EAAEC,gBAAgB,QAAQ,0BAAyB;AAO9E,+EAA+E;AAC/E,SAASC,mBAAmB,QAAQ,sBAAqB,CAEzD,2EAA2E;CAC3E,iEAAiE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/theme/context.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAqB,aAAa,EAAE,MAAM,YAAY,CAAA;AAM/E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAA;IACnB,mCAAmC;IACnC,KAAK,CAAC,EAAE,WAAW,CAAA;CACpB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,kBAAkB,+BAWpE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,QAAQ,IAAI,aAAa,CAIxC;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,aAAa,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAG7C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/theme/context.tsx"],"sourcesContent":["'use client'\n\n/**\n * Theme Context\n *\n * React context for distributing theme configuration to Puck components.\n * The useTheme() hook returns defaults when no provider is present,\n * ensuring backwards compatibility.\n */\n\nimport { createContext, useContext, useMemo, type ReactNode } from 'react'\nimport type { ThemeConfig, ThemeContextValue, ResolvedTheme } from './types.js'\nimport { DEFAULT_THEME } from './defaults.js'\nimport { resolveTheme } from './utils.js'\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null)\n\nexport interface ThemeProviderProps {\n children: ReactNode\n /** Theme configuration to apply */\n theme?: ThemeConfig\n}\n\n/**\n * Provides theme configuration to descendant Puck components\n *\n * @example\n * ```tsx\n * <ThemeProvider theme={{\n * buttonVariants: {\n * default: { classes: 'bg-primary text-white hover:bg-primary/90' }\n * }\n * }}>\n * <PageRenderer data={data} />\n * </ThemeProvider>\n * ```\n */\nexport function ThemeProvider({ children, theme }: ThemeProviderProps) {\n const resolvedTheme = useMemo(() => resolveTheme(theme), [theme])\n\n const value = useMemo<ThemeContextValue>(\n () => ({\n theme: resolvedTheme,\n }),\n [resolvedTheme]\n )\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>\n}\n\n/**\n * Hook to access the current theme\n *\n * Returns DEFAULT_THEME if no ThemeProvider is present,\n * ensuring components work standalone for backwards compatibility.\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const theme = useTheme()\n * const buttonClasses = getVariantClasses(theme.buttonVariants, 'primary')\n * return <button className={buttonClasses}>Click me</button>\n * }\n * ```\n */\nexport function useTheme(): ResolvedTheme {\n const context = useContext(ThemeContext)\n // Return defaults if no provider - ensures backwards compatibility\n return context?.theme ?? DEFAULT_THEME\n}\n\n/**\n * Gets the default theme for server components\n *\n * Use this when you need theme values in a server component\n * where hooks cannot be used.\n */\nexport function getDefaultTheme(): ResolvedTheme {\n return DEFAULT_THEME\n}\n\n/**\n * Hook to check if a ThemeProvider is present\n *\n * Useful for conditional logic based on whether theming is configured.\n */\nexport function useHasThemeProvider(): boolean {\n const context = useContext(ThemeContext)\n return context !== null\n}\n"],"names":["createContext","useContext","useMemo","DEFAULT_THEME","resolveTheme","ThemeContext","ThemeProvider","children","theme","resolvedTheme","value","Provider","useTheme","context","getDefaultTheme","useHasThemeProvider"],"mappings":"AAAA;;AAEA;;;;;;CAMC,GAED,SAASA,aAAa,EAAEC,UAAU,EAAEC,OAAO,QAAwB,QAAO;AAE1E,SAASC,aAAa,QAAQ,gBAAe;AAC7C,SAASC,YAAY,QAAQ,aAAY;AAEzC,MAAMC,6BAAeL,cAAwC;AAQ7D;;;;;;;;;;;;;CAaC,GACD,OAAO,SAASM,cAAc,EAAEC,QAAQ,EAAEC,KAAK,EAAsB;IACnE,MAAMC,gBAAgBP,QAAQ,IAAME,aAAaI,QAAQ;QAACA;KAAM;IAEhE,MAAME,QAAQR,QACZ,IAAO,CAAA;YACLM,OAAOC;QACT,CAAA,GACA;QAACA;KAAc;IAGjB,qBAAO,KAACJ,aAAaM,QAAQ;QAACD,OAAOA;kBAAQH;;AAC/C;AAEA;;;;;;;;;;;;;;CAcC,GACD,OAAO,SAASK;IACd,MAAMC,UAAUZ,WAAWI;IAC3B,mEAAmE;IACnE,OAAOQ,SAASL,SAASL;AAC3B;AAEA;;;;;CAKC,GACD,OAAO,SAASW;IACd,OAAOX;AACT;AAEA;;;;CAIC,GACD,OAAO,SAASY;IACd,MAAMF,UAAUZ,WAAWI;IAC3B,OAAOQ,YAAY;AACrB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/theme/defaults.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,aAAa,EACd,MAAM,YAAY,CAAA;AAEnB;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,mBAOrC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,mBAMzC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,gBAI3C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,WAAW,EAW9C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,oBAAoB,CAAA;AAEnD;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,aAM3B,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/theme/defaults.ts"],"sourcesContent":["/**\n * Default Theme Values\n *\n * These defaults ensure backwards compatibility - components render\n * identically to before theming was introduced when no theme is provided.\n */\n\nimport type {\n ButtonVariantStyles,\n BackgroundStyles,\n ColorPreset,\n ResolvedTheme,\n} from './types.js'\n\n/**\n * Default button variant styles\n * Uses semantic Tailwind classes that map to CSS variables (--primary, --secondary, etc.)\n * This allows consuming apps to customize colors via their theme CSS variables.\n */\nexport const DEFAULT_BUTTON_VARIANTS: ButtonVariantStyles = {\n default: { classes: 'bg-primary text-primary-foreground hover:bg-primary/90' },\n secondary: { classes: 'bg-secondary text-secondary-foreground hover:bg-secondary/80' },\n outline: { classes: 'border border-input bg-background hover:bg-accent hover:text-accent-foreground' },\n ghost: { classes: 'bg-transparent hover:bg-accent hover:text-accent-foreground' },\n destructive: { classes: 'bg-destructive text-destructive-foreground hover:bg-destructive/90' },\n link: { classes: 'text-primary underline-offset-4 hover:underline bg-transparent' },\n}\n\n/**\n * Default CTA button variant styles\n * Uses semantic Tailwind classes that map to CSS variables.\n */\nexport const DEFAULT_CTA_BUTTON_VARIANTS: ButtonVariantStyles = {\n primary: { classes: 'bg-primary text-primary-foreground hover:bg-primary/90' },\n secondary: { classes: 'bg-secondary text-secondary-foreground hover:bg-secondary/80' },\n outline: { classes: 'border border-input bg-background hover:bg-accent hover:text-accent-foreground' },\n ghost: { classes: 'bg-transparent hover:bg-accent hover:text-accent-foreground' },\n link: { classes: 'text-primary underline-offset-4 hover:underline bg-transparent' },\n}\n\n/**\n * Default CTA background styles\n * Uses semantic Tailwind classes that map to CSS variables.\n */\nexport const DEFAULT_CTA_BACKGROUND_STYLES: BackgroundStyles = {\n default: 'bg-muted',\n dark: 'bg-foreground text-background',\n light: 'bg-background',\n}\n\n/**\n * Default color picker presets\n * Matches DEFAULT_PRESETS from ColorPickerField.tsx\n */\nexport const DEFAULT_COLOR_PRESETS: ColorPreset[] = [\n { hex: '#ffffff', label: 'White' },\n { hex: '#f9fafb', label: 'Gray 50' },\n { hex: '#f3f4f6', label: 'Gray 100' },\n { hex: '#1f2937', label: 'Gray 800' },\n { hex: '#111827', label: 'Gray 900' },\n { hex: '#000000', label: 'Black' },\n { hex: '#3b82f6', label: 'Blue' },\n { hex: '#10b981', label: 'Green' },\n { hex: '#f59e0b', label: 'Amber' },\n { hex: '#ef4444', label: 'Red' },\n]\n\n/**\n * Default focus ring color class\n * Uses semantic ring color from CSS variables\n */\nexport const DEFAULT_FOCUS_RING = 'focus:ring-ring'\n\n/**\n * Complete default theme\n * Used when no ThemeProvider is present or no theme config is provided\n */\nexport const DEFAULT_THEME: ResolvedTheme = {\n buttonVariants: DEFAULT_BUTTON_VARIANTS,\n ctaButtonVariants: DEFAULT_CTA_BUTTON_VARIANTS,\n ctaBackgroundStyles: DEFAULT_CTA_BACKGROUND_STYLES,\n colorPresets: DEFAULT_COLOR_PRESETS,\n focusRingColor: DEFAULT_FOCUS_RING,\n}\n"],"names":["DEFAULT_BUTTON_VARIANTS","default","classes","secondary","outline","ghost","destructive","link","DEFAULT_CTA_BUTTON_VARIANTS","primary","DEFAULT_CTA_BACKGROUND_STYLES","dark","light","DEFAULT_COLOR_PRESETS","hex","label","DEFAULT_FOCUS_RING","DEFAULT_THEME","buttonVariants","ctaButtonVariants","ctaBackgroundStyles","colorPresets","focusRingColor"],"mappings":"AAAA;;;;;CAKC,GASD;;;;CAIC,GACD,OAAO,MAAMA,0BAA+C;IAC1DC,SAAS;QAAEC,SAAS;IAAyD;IAC7EC,WAAW;QAAED,SAAS;IAA+D;IACrFE,SAAS;QAAEF,SAAS;IAAiF;IACrGG,OAAO;QAAEH,SAAS;IAA8D;IAChFI,aAAa;QAAEJ,SAAS;IAAqE;IAC7FK,MAAM;QAAEL,SAAS;IAAiE;AACpF,EAAC;AAED;;;CAGC,GACD,OAAO,MAAMM,8BAAmD;IAC9DC,SAAS;QAAEP,SAAS;IAAyD;IAC7EC,WAAW;QAAED,SAAS;IAA+D;IACrFE,SAAS;QAAEF,SAAS;IAAiF;IACrGG,OAAO;QAAEH,SAAS;IAA8D;IAChFK,MAAM;QAAEL,SAAS;IAAiE;AACpF,EAAC;AAED;;;CAGC,GACD,OAAO,MAAMQ,gCAAkD;IAC7DT,SAAS;IACTU,MAAM;IACNC,OAAO;AACT,EAAC;AAED;;;CAGC,GACD,OAAO,MAAMC,wBAAuC;IAClD;QAAEC,KAAK;QAAWC,OAAO;IAAQ;IACjC;QAAED,KAAK;QAAWC,OAAO;IAAU;IACnC;QAAED,KAAK;QAAWC,OAAO;IAAW;IACpC;QAAED,KAAK;QAAWC,OAAO;IAAW;IACpC;QAAED,KAAK;QAAWC,OAAO;IAAW;IACpC;QAAED,KAAK;QAAWC,OAAO;IAAQ;IACjC;QAAED,KAAK;QAAWC,OAAO;IAAO;IAChC;QAAED,KAAK;QAAWC,OAAO;IAAQ;IACjC;QAAED,KAAK;QAAWC,OAAO;IAAQ;IACjC;QAAED,KAAK;QAAWC,OAAO;IAAM;CAChC,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,qBAAqB,kBAAiB;AAEnD;;;CAGC,GACD,OAAO,MAAMC,gBAA+B;IAC1CC,gBAAgBlB;IAChBmB,mBAAmBX;IACnBY,qBAAqBV;IACrBW,cAAcR;IACdS,gBAAgBN;AAClB,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"example.d.ts","sourceRoot":"","sources":["../../src/theme/example.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,EAAE,WAiE1B,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/theme/example.ts"],"sourcesContent":["/**\n * Example Theme Configuration\n *\n * Copy this file to your project and customize it to match your design system.\n *\n * Usage:\n * 1. Copy this file to your project (e.g., src/lib/puck-theme.ts)\n * 2. Customize the values to match your CSS variables/design tokens\n * 3. Import and pass to PageRenderer or PuckEditor:\n *\n * ```tsx\n * import { puckTheme } from '@/lib/puck-theme'\n *\n * <PageRenderer data={data} config={config} theme={puckTheme} />\n * ```\n */\n\nimport type { ThemeConfig } from './types.js'\n\n/**\n * Example theme using shadcn/ui CSS variables\n *\n * This example assumes you have CSS variables like:\n * --primary, --primary-foreground\n * --secondary, --secondary-foreground\n * --accent, --accent-foreground\n * --muted, --muted-foreground\n * --destructive, --destructive-foreground\n * --ring (for focus rings)\n */\nexport const exampleTheme: ThemeConfig = {\n // Button component variants\n buttonVariants: {\n default: {\n classes: 'bg-primary text-primary-foreground hover:bg-primary/90',\n },\n secondary: {\n classes: 'bg-secondary text-secondary-foreground hover:bg-secondary/80',\n },\n outline: {\n classes: 'border border-input bg-background hover:bg-accent hover:text-accent-foreground',\n },\n ghost: {\n classes: 'hover:bg-accent hover:text-accent-foreground',\n },\n destructive: {\n classes: 'bg-destructive text-destructive-foreground hover:bg-destructive/90',\n },\n link: {\n classes: 'text-primary underline-offset-4 hover:underline',\n },\n },\n\n // CTA button variants\n ctaButtonVariants: {\n primary: {\n classes: 'bg-primary text-primary-foreground hover:bg-primary/90',\n },\n secondary: {\n classes: 'bg-secondary text-secondary-foreground hover:bg-secondary/80',\n },\n outline: {\n classes: 'border border-input bg-background hover:bg-accent hover:text-accent-foreground',\n },\n },\n\n // CTA background styles\n ctaBackgroundStyles: {\n default: 'bg-muted',\n dark: 'bg-primary text-primary-foreground',\n light: 'bg-background',\n },\n\n // Focus ring class\n focusRingColor: 'focus:ring-ring',\n\n // Color picker presets - customize with your brand colors\n colorPresets: [\n { hex: '#ffffff', label: 'White' },\n { hex: '#f8fafc', label: 'Slate 50' },\n { hex: '#f1f5f9', label: 'Slate 100' },\n { hex: '#e2e8f0', label: 'Slate 200' },\n { hex: '#64748b', label: 'Slate 500' },\n { hex: '#334155', label: 'Slate 700' },\n { hex: '#1e293b', label: 'Slate 800' },\n { hex: '#0f172a', label: 'Slate 900' },\n { hex: '#000000', label: 'Black' },\n { hex: '#3b82f6', label: 'Blue' },\n { hex: '#10b981', label: 'Green' },\n { hex: '#f59e0b', label: 'Amber' },\n { hex: '#ef4444', label: 'Red' },\n ],\n\n // Set to true to add your presets to defaults instead of replacing\n extendColorPresets: false,\n}\n"],"names":["exampleTheme","buttonVariants","default","classes","secondary","outline","ghost","destructive","link","ctaButtonVariants","primary","ctaBackgroundStyles","dark","light","focusRingColor","colorPresets","hex","label","extendColorPresets"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAID;;;;;;;;;;CAUC,GACD,OAAO,MAAMA,eAA4B;IACvC,4BAA4B;IAC5BC,gBAAgB;QACdC,SAAS;YACPC,SAAS;QACX;QACAC,WAAW;YACTD,SAAS;QACX;QACAE,SAAS;YACPF,SAAS;QACX;QACAG,OAAO;YACLH,SAAS;QACX;QACAI,aAAa;YACXJ,SAAS;QACX;QACAK,MAAM;YACJL,SAAS;QACX;IACF;IAEA,sBAAsB;IACtBM,mBAAmB;QACjBC,SAAS;YACPP,SAAS;QACX;QACAC,WAAW;YACTD,SAAS;QACX;QACAE,SAAS;YACPF,SAAS;QACX;IACF;IAEA,wBAAwB;IACxBQ,qBAAqB;QACnBT,SAAS;QACTU,MAAM;QACNC,OAAO;IACT;IAEA,mBAAmB;IACnBC,gBAAgB;IAEhB,0DAA0D;IAC1DC,cAAc;QACZ;YAAEC,KAAK;YAAWC,OAAO;QAAQ;QACjC;YAAED,KAAK;YAAWC,OAAO;QAAW;QACpC;YAAED,KAAK;YAAWC,OAAO;QAAY;QACrC;YAAED,KAAK;YAAWC,OAAO;QAAY;QACrC;YAAED,KAAK;YAAWC,OAAO;QAAY;QACrC;YAAED,KAAK;YAAWC,OAAO;QAAY;QACrC;YAAED,KAAK;YAAWC,OAAO;QAAY;QACrC;YAAED,KAAK;YAAWC,OAAO;QAAY;QACrC;YAAED,KAAK;YAAWC,OAAO;QAAQ;QACjC;YAAED,KAAK;YAAWC,OAAO;QAAO;QAChC;YAAED,KAAK;YAAWC,OAAO;QAAQ;QACjC;YAAED,KAAK;YAAWC,OAAO;QAAQ;QACjC;YAAED,KAAK;YAAWC,OAAO;QAAM;KAChC;IAED,mEAAmE;IACnEC,oBAAoB;AACtB,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,iBAAiB,GAClB,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,aAAa,EACb,QAAQ,EACR,eAAe,EACf,mBAAmB,EACnB,KAAK,kBAAkB,GACxB,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,GACd,MAAM,eAAe,CAAA;AAGtB,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAGlF,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA"}
|
package/dist/theme/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/theme/index.ts"],"sourcesContent":["/**\n * Theme Module\n *\n * Provides dynamic theming capabilities for payload-puck components.\n *\n * @example\n * ```tsx\n * import { ThemeProvider, useTheme, getVariantClasses } from '@delmaredigital/payload-puck/theme'\n *\n * // In your app\n * <ThemeProvider theme={{\n * buttonVariants: {\n * default: { classes: 'bg-primary text-primary-foreground' }\n * }\n * }}>\n * <PageRenderer data={data} />\n * </ThemeProvider>\n *\n * // In a component\n * function CustomButton({ variant }) {\n * const theme = useTheme()\n * const classes = getVariantClasses(theme.buttonVariants, variant)\n * return <button className={classes}>...</button>\n * }\n * ```\n */\n\n// Types\nexport type {\n ButtonVariantConfig,\n ButtonVariantStyles,\n ColorPreset,\n BackgroundStyles,\n ThemeConfig,\n ResolvedTheme,\n ThemeContextValue,\n} from './types.js'\n\n// Context & Provider\nexport {\n ThemeProvider,\n useTheme,\n getDefaultTheme,\n useHasThemeProvider,\n type ThemeProviderProps,\n} from './context.js'\n\n// Defaults\nexport {\n DEFAULT_BUTTON_VARIANTS,\n DEFAULT_CTA_BUTTON_VARIANTS,\n DEFAULT_CTA_BACKGROUND_STYLES,\n DEFAULT_COLOR_PRESETS,\n DEFAULT_FOCUS_RING,\n DEFAULT_THEME,\n} from './defaults.js'\n\n// Utilities\nexport { resolveTheme, getVariantClasses, getBackgroundClasses } from './utils.js'\n\n// Example theme (copy and customize for your project)\nexport { exampleTheme } from './example.js'\n"],"names":["ThemeProvider","useTheme","getDefaultTheme","useHasThemeProvider","DEFAULT_BUTTON_VARIANTS","DEFAULT_CTA_BUTTON_VARIANTS","DEFAULT_CTA_BACKGROUND_STYLES","DEFAULT_COLOR_PRESETS","DEFAULT_FOCUS_RING","DEFAULT_THEME","resolveTheme","getVariantClasses","getBackgroundClasses","exampleTheme"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;CAyBC,GAED,QAAQ;AAWR,qBAAqB;AACrB,SACEA,aAAa,EACbC,QAAQ,EACRC,eAAe,EACfC,mBAAmB,QAEd,eAAc;AAErB,WAAW;AACX,SACEC,uBAAuB,EACvBC,2BAA2B,EAC3BC,6BAA6B,EAC7BC,qBAAqB,EACrBC,kBAAkB,EAClBC,aAAa,QACR,gBAAe;AAEtB,YAAY;AACZ,SAASC,YAAY,EAAEC,iBAAiB,EAAEC,oBAAoB,QAAQ,aAAY;AAElF,sDAAsD;AACtD,SAASC,YAAY,QAAQ,eAAc"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/theme/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAA;IACf,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAC7B,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAC7B,SAAS,CAAC,EAAE,mBAAmB,CAAA;IAC/B,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAC7B,KAAK,CAAC,EAAE,mBAAmB,CAAA;IAC3B,WAAW,CAAC,EAAE,mBAAmB,CAAA;IACjC,IAAI,CAAC,EAAE,mBAAmB,CAAA;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAAA;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAA;IACX,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAE7C;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAEhD;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAE/C;;;OAGG;IACH,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAE5B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAE5B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,mBAAmB,CAAA;IACnC,iBAAiB,EAAE,mBAAmB,CAAA;IACtC,mBAAmB,EAAE,gBAAgB,CAAA;IACrC,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,cAAc,EAAE,MAAM,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,aAAa,CAAA;CACrB"}
|
package/dist/theme/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/theme/types.ts"],"sourcesContent":["/**\n * Theme Type Definitions\n *\n * Defines all theme-related TypeScript interfaces for the payload-puck plugin.\n * These types enable consuming applications to customize button variants,\n * color presets, and other visual styles.\n */\n\n/**\n * Configuration for a single button variant\n */\nexport interface ButtonVariantConfig {\n /** Tailwind classes for the variant */\n classes: string\n /** Optional CSS variable reference for dynamic theming */\n cssVariable?: string\n}\n\n/**\n * Map of button variant names to their configurations\n */\nexport interface ButtonVariantStyles {\n default?: ButtonVariantConfig\n primary?: ButtonVariantConfig\n secondary?: ButtonVariantConfig\n outline?: ButtonVariantConfig\n ghost?: ButtonVariantConfig\n destructive?: ButtonVariantConfig\n link?: ButtonVariantConfig\n [key: string]: ButtonVariantConfig | undefined\n}\n\n/**\n * Color preset for the color picker\n */\nexport interface ColorPreset {\n /** Hex color value (e.g., '#3b82f6') */\n hex: string\n /** Display label for the preset */\n label: string\n /** Optional CSS variable reference (e.g., 'var(--color-primary)') */\n cssVariable?: string\n}\n\n/**\n * Background style configurations for CTA components\n */\nexport interface BackgroundStyles {\n default?: string\n dark?: string\n light?: string\n [key: string]: string | undefined\n}\n\n/**\n * Theme configuration provided by consuming applications\n * All properties are optional and will be merged with defaults\n */\nexport interface ThemeConfig {\n /**\n * Button variant styles\n * Merged with default button variants\n */\n buttonVariants?: Partial<ButtonVariantStyles>\n\n /**\n * CTA button variant styles\n * Merged with default CTA button variants\n */\n ctaButtonVariants?: Partial<ButtonVariantStyles>\n\n /**\n * CTA background styles\n * Merged with default background styles\n */\n ctaBackgroundStyles?: Partial<BackgroundStyles>\n\n /**\n * Color picker preset colors\n * If provided, replaces defaults unless extendColorPresets is true\n */\n colorPresets?: ColorPreset[]\n\n /**\n * Whether to extend default color presets (true) or replace them (false)\n * @default false\n */\n extendColorPresets?: boolean\n\n /**\n * Focus ring color class (e.g., 'focus:ring-primary')\n * @default 'focus:ring-blue-500'\n */\n focusRingColor?: string\n}\n\n/**\n * Fully resolved theme with all defaults applied\n * This is what components receive via useTheme()\n */\nexport interface ResolvedTheme {\n buttonVariants: ButtonVariantStyles\n ctaButtonVariants: ButtonVariantStyles\n ctaBackgroundStyles: BackgroundStyles\n colorPresets: ColorPreset[]\n focusRingColor: string\n}\n\n/**\n * Theme context value provided by ThemeProvider\n */\nexport interface ThemeContextValue {\n theme: ResolvedTheme\n}\n"],"names":[],"mappings":"AAAA;;;;;;CAMC,GAED;;CAEC,GAkGD;;CAEC,GACD,WAEC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/theme/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,YAAY,CAAA;AAUnB;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,aAAa,CAahE;AA+CD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,SAAY,GACnB,MAAM,CAQR;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,MAAM,EACb,QAAQ,SAAY,GACnB,MAAM,CAER"}
|
package/dist/theme/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/theme/utils.ts"],"sourcesContent":["/**\n * Theme Resolution Utilities\n *\n * Functions for merging user-provided theme config with defaults\n * and safely accessing theme values.\n */\n\nimport type {\n ThemeConfig,\n ResolvedTheme,\n ButtonVariantStyles,\n BackgroundStyles,\n} from './types.js'\nimport {\n DEFAULT_BUTTON_VARIANTS,\n DEFAULT_CTA_BUTTON_VARIANTS,\n DEFAULT_CTA_BACKGROUND_STYLES,\n DEFAULT_COLOR_PRESETS,\n DEFAULT_FOCUS_RING,\n DEFAULT_THEME,\n} from './defaults.js'\n\n/**\n * Merges user-provided theme config with defaults to create a fully resolved theme\n */\nexport function resolveTheme(config?: ThemeConfig): ResolvedTheme {\n if (!config) return DEFAULT_THEME\n\n return {\n buttonVariants: mergeVariants(DEFAULT_BUTTON_VARIANTS, config.buttonVariants),\n ctaButtonVariants: mergeVariants(DEFAULT_CTA_BUTTON_VARIANTS, config.ctaButtonVariants),\n ctaBackgroundStyles: mergeBackgroundStyles(\n DEFAULT_CTA_BACKGROUND_STYLES,\n config.ctaBackgroundStyles\n ),\n colorPresets: resolveColorPresets(config),\n focusRingColor: config.focusRingColor ?? DEFAULT_FOCUS_RING,\n }\n}\n\n/**\n * Merges variant overrides with defaults\n */\nfunction mergeVariants(\n defaults: ButtonVariantStyles,\n overrides?: Partial<ButtonVariantStyles>\n): ButtonVariantStyles {\n if (!overrides) return defaults\n\n const result: ButtonVariantStyles = { ...defaults }\n for (const key of Object.keys(overrides)) {\n const override = overrides[key]\n if (override) {\n result[key] = override\n }\n }\n return result\n}\n\n/**\n * Merges background style overrides with defaults\n */\nfunction mergeBackgroundStyles(\n defaults: BackgroundStyles,\n overrides?: Partial<BackgroundStyles>\n): BackgroundStyles {\n if (!overrides) return defaults\n return { ...defaults, ...overrides }\n}\n\n/**\n * Resolves color presets based on config\n */\nfunction resolveColorPresets(config: ThemeConfig) {\n if (!config.colorPresets) {\n return DEFAULT_COLOR_PRESETS\n }\n\n if (config.extendColorPresets) {\n return [...DEFAULT_COLOR_PRESETS, ...config.colorPresets]\n }\n\n return config.colorPresets\n}\n\n/**\n * Safely gets variant classes from a variant styles object\n *\n * @param variants - The button variant styles object\n * @param variant - The variant key to look up\n * @param fallback - Fallback variant key if the requested variant doesn't exist\n * @returns The CSS classes string for the variant\n */\nexport function getVariantClasses(\n variants: ButtonVariantStyles,\n variant: string,\n fallback = 'default'\n): string {\n const config = variants[variant]\n if (config?.classes) {\n return config.classes\n }\n\n const fallbackConfig = variants[fallback]\n return fallbackConfig?.classes ?? ''\n}\n\n/**\n * Safely gets background style classes\n *\n * @param styles - The background styles object\n * @param style - The style key to look up\n * @param fallback - Fallback style key if the requested style doesn't exist\n * @returns The CSS classes string for the background\n */\nexport function getBackgroundClasses(\n styles: BackgroundStyles,\n style: string,\n fallback = 'default'\n): string {\n return styles[style] ?? styles[fallback] ?? ''\n}\n"],"names":["DEFAULT_BUTTON_VARIANTS","DEFAULT_CTA_BUTTON_VARIANTS","DEFAULT_CTA_BACKGROUND_STYLES","DEFAULT_COLOR_PRESETS","DEFAULT_FOCUS_RING","DEFAULT_THEME","resolveTheme","config","buttonVariants","mergeVariants","ctaButtonVariants","ctaBackgroundStyles","mergeBackgroundStyles","colorPresets","resolveColorPresets","focusRingColor","defaults","overrides","result","key","Object","keys","override","extendColorPresets","getVariantClasses","variants","variant","fallback","classes","fallbackConfig","getBackgroundClasses","styles","style"],"mappings":"AAAA;;;;;CAKC,GAQD,SACEA,uBAAuB,EACvBC,2BAA2B,EAC3BC,6BAA6B,EAC7BC,qBAAqB,EACrBC,kBAAkB,EAClBC,aAAa,QACR,gBAAe;AAEtB;;CAEC,GACD,OAAO,SAASC,aAAaC,MAAoB;IAC/C,IAAI,CAACA,QAAQ,OAAOF;IAEpB,OAAO;QACLG,gBAAgBC,cAAcT,yBAAyBO,OAAOC,cAAc;QAC5EE,mBAAmBD,cAAcR,6BAA6BM,OAAOG,iBAAiB;QACtFC,qBAAqBC,sBACnBV,+BACAK,OAAOI,mBAAmB;QAE5BE,cAAcC,oBAAoBP;QAClCQ,gBAAgBR,OAAOQ,cAAc,IAAIX;IAC3C;AACF;AAEA;;CAEC,GACD,SAASK,cACPO,QAA6B,EAC7BC,SAAwC;IAExC,IAAI,CAACA,WAAW,OAAOD;IAEvB,MAAME,SAA8B;QAAE,GAAGF,QAAQ;IAAC;IAClD,KAAK,MAAMG,OAAOC,OAAOC,IAAI,CAACJ,WAAY;QACxC,MAAMK,WAAWL,SAAS,CAACE,IAAI;QAC/B,IAAIG,UAAU;YACZJ,MAAM,CAACC,IAAI,GAAGG;QAChB;IACF;IACA,OAAOJ;AACT;AAEA;;CAEC,GACD,SAASN,sBACPI,QAA0B,EAC1BC,SAAqC;IAErC,IAAI,CAACA,WAAW,OAAOD;IACvB,OAAO;QAAE,GAAGA,QAAQ;QAAE,GAAGC,SAAS;IAAC;AACrC;AAEA;;CAEC,GACD,SAASH,oBAAoBP,MAAmB;IAC9C,IAAI,CAACA,OAAOM,YAAY,EAAE;QACxB,OAAOV;IACT;IAEA,IAAII,OAAOgB,kBAAkB,EAAE;QAC7B,OAAO;eAAIpB;eAA0BI,OAAOM,YAAY;SAAC;IAC3D;IAEA,OAAON,OAAOM,YAAY;AAC5B;AAEA;;;;;;;CAOC,GACD,OAAO,SAASW,kBACdC,QAA6B,EAC7BC,OAAe,EACfC,WAAW,SAAS;IAEpB,MAAMpB,SAASkB,QAAQ,CAACC,QAAQ;IAChC,IAAInB,QAAQqB,SAAS;QACnB,OAAOrB,OAAOqB,OAAO;IACvB;IAEA,MAAMC,iBAAiBJ,QAAQ,CAACE,SAAS;IACzC,OAAOE,gBAAgBD,WAAW;AACpC;AAEA;;;;;;;CAOC,GACD,OAAO,SAASE,qBACdC,MAAwB,EACxBC,KAAa,EACbL,WAAW,SAAS;IAEpB,OAAOI,MAAM,CAACC,MAAM,IAAID,MAAM,CAACJ,SAAS,IAAI;AAC9C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/types/index.ts"],"sourcesContent":["import type { Access, CollectionConfig, Config as PayloadConfig, Field } from 'payload'\nimport type { Config as PuckConfig, Data as PuckData } from '@puckeditor/core'\nimport type { ThemeConfig } from '../theme/types.js'\nimport type { LayoutDefinition, LayoutConfig } from '../layouts/types.js'\nimport type { PuckPluginAiConfig, AiExamplePrompt } from '../ai/types.js'\n\n// =============================================================================\n// Plugin Configuration Types\n// =============================================================================\n\n/**\n * Admin UI configuration for the Puck plugin\n */\nexport interface PuckAdminConfig {\n /**\n * Whether to add the visual editor button to the collection\n * @default true\n */\n addEditButton?: boolean\n\n /**\n * Custom URL pattern for the Puck editor (for backwards compatibility)\n * By default, the plugin uses the integrated admin view at /admin/puck-editor/:collection/:id\n * Use {id} as placeholder for document ID, {collection} for collection slug\n * @deprecated The editor is now integrated into Payload admin. Only use this for custom external editors.\n */\n editorPathPattern?: string\n\n /**\n * Button label text\n * @default 'Visual Editor'\n */\n buttonLabel?: string\n\n /**\n * Position of the edit button in admin sidebar\n * @default 'sidebar'\n */\n buttonPosition?: 'sidebar' | 'main'\n}\n\n/**\n * Configuration options for the Puck plugin\n */\nexport interface PuckPluginOptions {\n /**\n * Collection slug for pages\n * @default 'pages'\n */\n pagesCollection?: string\n\n /**\n * Whether to auto-generate the Pages collection\n * Set to false if you want to define your own collection\n * @default true\n */\n autoGenerateCollection?: boolean\n\n /**\n * Custom collection config to merge with defaults\n */\n collectionOverrides?: Partial<CollectionConfig>\n\n /**\n * Access control for Puck operations\n * Uses Payload's Access type for full compatibility\n */\n access?: {\n read?: Access\n create?: Access\n update?: Access\n delete?: Access\n }\n\n /**\n * Page layout configuration\n * Define custom layouts that affect how page content is rendered\n * @default DEFAULT_LAYOUTS\n */\n layouts?: LayoutDefinition[]\n\n /**\n * Additional fields to add to the Pages collection\n */\n additionalFields?: Field[]\n\n /**\n * Admin UI configuration\n * Configure how the visual editor integrates with Payload admin\n */\n admin?: PuckAdminConfig\n\n /**\n * Theme configuration for customizing button styles, colors, and presets\n * All values are optional and will fall back to defaults\n */\n theme?: ThemeConfig\n\n /**\n * Whether to enable the integrated admin view\n * When enabled, the Puck editor is accessible at /admin/puck-editor/:collection/:id\n * @default true\n */\n enableAdminView?: boolean\n\n /**\n * Custom path for the admin view (without /admin prefix)\n * @default '/puck-editor'\n */\n adminViewPath?: string\n\n /**\n * Whether to enable built-in API endpoints\n * When enabled, endpoints are registered at /api/puck/:collection/:id\n * @default true\n */\n enableEndpoints?: boolean\n\n /**\n * Integration with @delmaredigital/payload-page-tree plugin\n *\n * **Auto-detection:** The Puck editor automatically detects if page-tree is active\n * by checking for the `pageSegment` field on the collection. No configuration needed\n * in most cases.\n *\n * Use this option only if you need to:\n * - Explicitly disable page-tree integration: `pageTreeIntegration: false`\n * - Override default field names if you customized page-tree config\n *\n * @example\n * ```typescript\n * // Usually not needed - auto-detected!\n * createPuckPlugin({\n * pagesCollection: 'pages',\n * })\n *\n * // Override field names if customized:\n * createPuckPlugin({\n * pageTreeIntegration: {\n * folderSlug: 'my-folders',\n * pageSegmentFieldName: 'urlSegment',\n * },\n * })\n *\n * // Explicitly disable even if page-tree is present:\n * createPuckPlugin({\n * pageTreeIntegration: false,\n * })\n * ```\n */\n pageTreeIntegration?: boolean | PageTreeIntegrationOptions\n\n /**\n * Path to CSS file for editor iframe styling.\n * The plugin compiles this file with PostCSS/Tailwind and serves it at /api/puck/styles.\n * This allows the editor preview to display your frontend styles (CSS variables, Tailwind utilities).\n *\n * @example 'src/app/(frontend)/globals.css'\n * @example 'src/styles/globals.css'\n */\n editorStylesheet?: string\n\n /**\n * Additional stylesheet URLs to load in the editor iframe.\n * Use this for external stylesheets like Google Fonts that can't be compiled.\n *\n * @example ['https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700']\n */\n editorStylesheetUrls?: string[]\n\n /**\n * Path to pre-compiled CSS file for production use.\n * When set, the editor will load this static file instead of using the runtime compilation endpoint.\n * Use with `withPuckCSS()` from `@delmaredigital/payload-puck/next` to compile CSS at build time.\n *\n * @example '/puck-editor-styles.css'\n *\n * @example\n * ```typescript\n * // next.config.js\n * import { withPuckCSS } from '@delmaredigital/payload-puck/next'\n * export default withPuckCSS({ cssInput: 'src/globals.css' })(nextConfig)\n *\n * // payload.config.ts\n * createPuckPlugin({\n * editorStylesheet: 'src/globals.css', // For dev (runtime compilation)\n * editorStylesheetCompiled: '/puck-editor-styles.css', // For prod (static file)\n * })\n * ```\n */\n editorStylesheetCompiled?: string\n\n /**\n * AI configuration for the plugin.\n * Enables AI-powered page generation in the editor.\n *\n * @example\n * ```typescript\n * createPuckPlugin({\n * ai: {\n * enabled: true,\n * context: 'We are Acme Corp. You build our landing pages.',\n * promptsCollection: true, // Auto-create puck-ai-prompts collection\n * },\n * })\n * ```\n */\n ai?: PuckPluginAiConfig\n\n /**\n * Preview URL for the \"View\" button in the editor.\n *\n * Can be:\n * - A string: Static URL prefix (e.g., '/' or '/preview')\n * - A function receiving the page document: Returns a string prefix or a slug-to-URL function\n *\n * **RSC Serialization:** Since PuckEditorView is a React Server Component, functions\n * cannot be passed directly to the client. Instead, the server:\n * 1. Calls your function with the page document\n * 2. If the result is a function, calls it with `''` (empty string) to extract the base prefix\n * 3. Passes the string prefix to the client, which reconstructs the URL function\n *\n * **Important:** When returning a function, it MUST return just the prefix when called\n * with an empty/falsy slug. Use this pattern:\n * ```typescript\n * return (slug) => slug ? `/${prefix}/${slug}` : `/${prefix}`\n * ```\n *\n * @example\n * ```typescript\n * // Simple static prefix (pages at /about, /contact, etc.)\n * previewUrl: '/'\n *\n * // Dynamic prefix based on page data (org-scoped pages)\n * previewUrl: (page) => {\n * const orgSlug = page.organization?.slug || 'default'\n * // Return a function - MUST return just prefix when slug is empty\n * return (slug) => slug ? `/${orgSlug}/${slug}` : `/${orgSlug}`\n * }\n *\n * // Or return the prefix string directly\n * previewUrl: (page) => `/${page.organization?.slug || 'default'}`\n * ```\n */\n previewUrl?: string | ((page: any) => string | ((slug: string) => string))\n}\n\n/**\n * Configuration options for page-tree integration\n */\nexport interface PageTreeIntegrationOptions {\n /**\n * Collection slug for folders\n * @default 'payload-folders'\n */\n folderSlug?: string\n\n /**\n * Field name for folder path segments\n * @default 'pathSegment'\n */\n segmentFieldName?: string\n\n /**\n * Field name for page segments\n * @default 'pageSegment'\n */\n pageSegmentFieldName?: string\n\n /**\n * Field name for the folder relationship\n * @default 'folder'\n */\n folderFieldName?: string\n}\n\n// =============================================================================\n// Page Data Types\n// =============================================================================\n\n/**\n * Root properties for a Puck page\n */\nexport interface PuckRootProps {\n title?: string\n pageLayout?: string\n [key: string]: unknown\n}\n\n/**\n * Complete Puck page data structure\n */\nexport interface PuckPageData extends PuckData {\n root: {\n props: PuckRootProps\n }\n}\n\n/**\n * SEO/Meta configuration for a page.\n * Uses the official @payloadcms/plugin-seo convention.\n */\nexport interface PageMeta {\n title?: string\n description?: string\n image?: string | { id: string; url: string; alt?: string }\n noindex?: boolean\n nofollow?: boolean\n excludeFromSitemap?: boolean\n}\n\n/**\n * @deprecated Use PageMeta instead. This alias is kept for backwards compatibility.\n */\nexport type PageSEO = PageMeta\n\n/**\n * Conversion type options\n */\nexport type ConversionType =\n | 'lead'\n | 'registration'\n | 'purchase'\n | 'donation'\n | 'newsletter'\n | 'contact'\n | 'custom'\n\n/**\n * Conversion tracking configuration for a page\n */\nexport interface PageConversionTracking {\n isConversionPage?: boolean\n conversionType?: ConversionType\n conversionValue?: number\n}\n\n/**\n * Editor version options\n */\nexport type EditorVersion = 'legacy' | 'puck'\n\n/**\n * Page document from Payload\n */\nexport interface PageDocument {\n id: string\n title: string\n slug: string\n pageLayout: string\n editorVersion?: EditorVersion\n isHomepage: boolean\n puckData: PuckPageData | null\n meta?: PageMeta\n conversionTracking?: PageConversionTracking\n createdAt: string\n updatedAt: string\n _status?: 'draft' | 'published'\n // Page-tree fields (when pageTreeIntegration is enabled)\n folder?: string | { id: string; name?: string; pathSegment?: string }\n pageSegment?: string\n}\n\n/**\n * Puck root props when page-tree integration is enabled\n */\nexport interface PageTreeRootProps extends PuckRootProps {\n folder?: string | null\n pageSegment?: string\n}\n\n// =============================================================================\n// Component Types\n// =============================================================================\n\n/**\n * Shared props for all Puck components\n */\nexport interface SharedComponentProps {\n id?: string\n maxWidth?: 'narrow' | 'medium' | 'wide' | 'full'\n verticalPadding?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n visibility?: 'always' | 'authenticated' | 'guest'\n}\n\n/**\n * Media object from Payload\n */\nexport interface MediaObject {\n id: string\n url: string\n alt?: string\n width?: number\n height?: number\n filename?: string\n mimeType?: string\n sizes?: {\n thumbnail?: { url: string; width: number; height: number }\n medium?: { url: string; width: number; height: number }\n large?: { url: string; width: number; height: number }\n }\n}\n\n// =============================================================================\n// Config Types\n// =============================================================================\n\n/**\n * Options for merging Puck configurations\n */\nexport interface MergeConfigOptions {\n /**\n * Base config to extend\n */\n base: PuckConfig\n\n /**\n * Additional components to add\n */\n components?: PuckConfig['components']\n\n /**\n * Additional categories to add/merge\n */\n categories?: PuckConfig['categories']\n\n /**\n * Root config overrides\n */\n root?: Partial<PuckConfig['root']>\n\n /**\n * Components to exclude from base\n */\n exclude?: string[]\n}\n\n// =============================================================================\n// Field Types\n// =============================================================================\n\n/**\n * Props for the MediaField custom field\n */\nexport interface MediaFieldProps {\n value: MediaObject | string | null\n onChange: (value: MediaObject | string | null) => void\n label?: string\n allowedTypes?: string[]\n}\n\n/**\n * Props for the ColorPickerField custom field\n */\nexport interface ColorPickerFieldProps {\n value: string\n onChange: (value: string) => void\n label?: string\n showOpacity?: boolean\n}\n\n// =============================================================================\n// Re-exports from Puck\n// =============================================================================\n\nexport type { Config as PuckConfig, Data as PuckData } from '@puckeditor/core'\nexport type { ThemeConfig } from '../theme/types.js'\n\n// =============================================================================\n// Re-exports for Hybrid Integration\n// =============================================================================\n\nexport type { GetPuckFieldsOptions } from '../plugin/fields/types.js'\n\n// Re-export AI types for convenience\nexport type { PuckPluginAiConfig, AiExamplePrompt } from '../ai/types.js'\n"],"names":[],"mappings":"AA0dA,qCAAqC;AACrC,WAAyE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAMH,OAAO,EAEL,mBAAmB,EAEnB,mBAAmB,EAEnB,YAAY,EAEZ,cAAc,EAEd,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,0BAA0B,EAE1B,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,GACtB,MAAM,gBAAgB,CAAA;AAMvB,OAAO,EAEL,gBAAgB,EAEhB,UAAU,EACV,eAAe,EAEf,cAAc,EAEd,iBAAiB,EAEjB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACvB,MAAM,iBAAiB,CAAA"}
|
package/dist/utils/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/index.ts"],"sourcesContent":["/**\n * Migration and Validation Utilities\n *\n * This module provides utilities for migrating legacy Payload CMS pages\n * to Puck format and validating Puck data structures.\n *\n * @example\n * ```ts\n * import {\n * migrateLegacyToPuck,\n * validatePuckData,\n * getMigrationPreview,\n * blockTypeMap,\n * } from '@delmaredigital/payload-puck/utils'\n *\n * // Preview migration\n * const preview = getMigrationPreview(legacyPage)\n * console.log('Blocks to migrate:', preview.blockCount)\n * console.log('Warnings:', preview.warnings)\n *\n * // Perform migration\n * const puckData = migrateLegacyToPuck(legacyPage)\n *\n * // Validate result\n * const validation = validatePuckData(puckData)\n * if (validation.valid) {\n * await payload.update({ collection: 'pages', id: pageId, data: { puckData } })\n * }\n * ```\n */\n\n// =============================================================================\n// Migration Exports\n// =============================================================================\n\nexport {\n // Main migration function\n migrateLegacyToPuck,\n // Preview function\n getMigrationPreview,\n // Block type mapping\n blockTypeMap,\n // ID generation\n generatePuckId,\n // Prop transformation utilities\n transformBlockProps,\n transformMediaReference,\n transformRichText,\n transformRelationshipArray,\n // Types\n type LegacyBlock,\n type LegacyPage,\n type MediaReference,\n type PuckContentItem,\n type MigrateLegacyOptions,\n type MigrationPreview,\n} from './migration.js'\n\n// =============================================================================\n// Validation Exports\n// =============================================================================\n\nexport {\n // Main validation function\n validatePuckData,\n // Type guards\n isPuckData,\n isPuckRootProps,\n // Assertion helper\n assertPuckData,\n // JSON parsing helper\n parsePuckDataJson,\n // Types\n type ValidationResult,\n type ValidationOptions,\n} from './validation.js'\n"],"names":["migrateLegacyToPuck","getMigrationPreview","blockTypeMap","generatePuckId","transformBlockProps","transformMediaReference","transformRichText","transformRelationshipArray","validatePuckData","isPuckData","isPuckRootProps","assertPuckData","parsePuckDataJson"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BC,GAED,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,SACE,0BAA0B;AAC1BA,mBAAmB,EACnB,mBAAmB;AACnBC,mBAAmB,EACnB,qBAAqB;AACrBC,YAAY,EACZ,gBAAgB;AAChBC,cAAc,EACd,gCAAgC;AAChCC,mBAAmB,EACnBC,uBAAuB,EACvBC,iBAAiB,EACjBC,0BAA0B,QAQrB,iBAAgB;AAEvB,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,SACE,2BAA2B;AAC3BC,gBAAgB,EAChB,cAAc;AACdC,UAAU,EACVC,eAAe,EACf,mBAAmB;AACnBC,cAAc,EACd,sBAAsB;AACtBC,iBAAiB,QAIZ,kBAAiB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../src/utils/migration.ts"],"names":[],"mappings":"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"}
|