@delmaredigital/payload-puck 0.6.13 → 0.6.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -3
- 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 +5 -4
- package/dist/ai/createAiGenerate.d.ts +0 -1
- package/dist/ai/createAiGenerate.js +5 -4
- package/dist/ai/createAiPlugin.d.ts +0 -1
- package/dist/ai/createAiPlugin.js +4 -4
- 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 +109 -3
- 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 +18 -1
- package/dist/editor/PuckEditor.js +0 -2
- package/dist/editor/PuckEditorImpl.client.d.ts +10 -1
- package/dist/editor/PuckEditorImpl.client.js +3 -3
- 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 +13 -1
- package/dist/endpoints/ai.js +6 -3
- 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 +2 -3
- 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 +20 -20
- 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/components/media/Image.server.tsx"],"sourcesContent":["/**\n * Image Component - Server-safe Puck Configuration\n *\n * Standalone image block with optional link wrapper.\n * This version contains only the render function and types - no fields.\n * Safe for use in server components.\n */\n\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n aspectRatioMap,\n cn,\n marginValueToCSS,\n paddingValueToCSS,\n dimensionsValueToCSS,\n borderValueToCSS,\n transformValueToCSS,\n visibilityValueToCSS,\n type PaddingValue,\n type DimensionsValue,\n type BorderValue,\n type AnimationValue,\n type TransformValue,\n type VisibilityValue,\n} from '../../fields/shared.js'\nimport { AnimatedWrapper } from '../AnimatedWrapper.js'\nimport type { MediaReference } from '../../fields/MediaField.js'\nimport type { Alignment } from '../../fields/AlignmentField.js'\n\n// Default padding with standard spacing (replaces hardcoded py-4 px-4)\nconst DEFAULT_PADDING: PaddingValue = {\n top: 16,\n right: 16,\n bottom: 16,\n left: 16,\n unit: 'px',\n linked: true,\n}\n\n// Simple ID generator for server-side rendering\nlet idCounter = 0\nfunction generateUniqueId(): string {\n return `i${(++idCounter).toString(36)}${Math.random().toString(36).slice(2, 6)}`\n}\n\nexport interface ImageProps {\n image: MediaReference | null\n alt: string\n aspectRatio: string\n link: string\n openInNewTab: boolean\n margin: PaddingValue | null\n border: BorderValue | null\n dimensions: DimensionsValue | null\n alignment: Alignment | null\n transform: TransformValue | null\n animation: AnimationValue | null\n customPadding: PaddingValue | null\n visibility: VisibilityValue | null\n}\n\nconst defaultProps: ImageProps = {\n image: null,\n alt: '',\n aspectRatio: 'auto',\n link: '',\n openInNewTab: false,\n margin: null,\n border: null,\n dimensions: null,\n alignment: null,\n transform: null,\n animation: null,\n customPadding: DEFAULT_PADDING, // Default 16px padding\n visibility: null,\n}\n\nexport const ImageConfig: ComponentConfig<ImageProps> = {\n label: 'Image',\n defaultProps,\n render: ({ image, alt, aspectRatio, link, openInNewTab, dimensions, alignment, margin, border, transform, animation, customPadding, visibility }) => {\n // Generate unique ID for CSS targeting (server-safe)\n const uniqueId = generateUniqueId()\n const wrapperClass = `puck-image-${uniqueId}`\n\n // Visibility media queries\n const visibilityCSS = visibilityValueToCSS(visibility, wrapperClass)\n const dimensionsStyles = dimensionsValueToCSS(dimensions)\n\n const style: React.CSSProperties = {\n ...dimensionsStyles,\n }\n const marginCSS = marginValueToCSS(margin)\n if (marginCSS) {\n style.margin = marginCSS\n }\n const paddingCSS = paddingValueToCSS(customPadding)\n if (paddingCSS) {\n style.padding = paddingCSS\n }\n const borderStyles = borderValueToCSS(border)\n if (borderStyles) {\n Object.assign(style, borderStyles)\n }\n const transformStyles = transformValueToCSS(transform)\n if (transformStyles) {\n Object.assign(style, transformStyles)\n }\n\n const alignmentValue = alignment ?? 'center'\n const alignmentClasses = cn(\n 'flex',\n alignmentValue === 'left' && 'justify-start',\n alignmentValue === 'center' && 'justify-center',\n alignmentValue === 'right' && 'justify-end'\n )\n\n // Placeholder if no image\n if (!image?.url) {\n return (\n <AnimatedWrapper animation={animation}>\n {visibilityCSS && <style>{visibilityCSS}</style>}\n <div className={wrapperClass} style={Object.keys(style).length > 0 ? style : undefined}>\n <div className={alignmentClasses}>\n <div\n className={cn(\n 'relative overflow-hidden rounded-lg w-full max-w-md bg-muted flex items-center justify-center min-h-[200px]',\n aspectRatioMap[aspectRatio] || ''\n )}\n >\n <span className=\"text-muted-foreground\">No image selected</span>\n </div>\n </div>\n </div>\n </AnimatedWrapper>\n )\n }\n\n // For auto aspect ratio, use natural image dimensions\n // For fixed aspect ratios, use absolute positioning within aspect-ratio container\n // Note: When using aspect ratios in Flex, set a min-width via Dimensions\n const imageElement = aspectRatio === 'auto' ? (\n <div className=\"relative overflow-hidden rounded-lg w-full\">\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={image.url}\n alt={alt || image.alt || ''}\n className=\"w-full h-auto object-cover\"\n />\n </div>\n ) : (\n <div className={cn('relative overflow-hidden rounded-lg w-full', aspectRatioMap[aspectRatio])}>\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={image.url}\n alt={alt || image.alt || ''}\n className=\"absolute inset-0 w-full h-full object-cover\"\n />\n </div>\n )\n\n const content = link ? (\n <a\n href={link}\n target={openInNewTab ? '_blank' : undefined}\n rel={openInNewTab ? 'noopener noreferrer' : undefined}\n className=\"block transition-opacity hover:opacity-90\"\n >\n {imageElement}\n </a>\n ) : (\n imageElement\n )\n\n return (\n <AnimatedWrapper animation={animation}>\n {visibilityCSS && <style>{visibilityCSS}</style>}\n <div className={wrapperClass} style={Object.keys(style).length > 0 ? style : undefined}>\n <div className={alignmentClasses}>{content}</div>\n </div>\n </AnimatedWrapper>\n )\n },\n}\n"],"names":["aspectRatioMap","cn","marginValueToCSS","paddingValueToCSS","dimensionsValueToCSS","borderValueToCSS","transformValueToCSS","visibilityValueToCSS","AnimatedWrapper","DEFAULT_PADDING","top","right","bottom","left","unit","linked","idCounter","generateUniqueId","toString","Math","random","slice","defaultProps","image","alt","aspectRatio","link","openInNewTab","margin","border","dimensions","alignment","transform","animation","customPadding","visibility","ImageConfig","label","render","uniqueId","wrapperClass","visibilityCSS","dimensionsStyles","style","marginCSS","paddingCSS","padding","borderStyles","Object","assign","transformStyles","alignmentValue","alignmentClasses","url","div","className","keys","length","undefined","span","imageElement","img","src","content","a","href","target","rel"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/media/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/media/index.ts"],"sourcesContent":["/**\n * Media Components\n *\n * Image and media display components.\n */\n\nexport { ImageConfig } from './Image.js'\n"],"names":["ImageConfig"],"mappings":"AAAA;;;;CAIC,GAED,SAASA,WAAW,QAAQ,aAAY"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Heading.d.ts","sourceRoot":"","sources":["../../../src/components/typography/Heading.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EASL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAA;AAK/B,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAKrF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IAC9C,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;IAC3B,SAAS,EAAE,UAAU,GAAG,IAAI,CAAA;IAC5B,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,aAAa,EAAE,YAAY,GAAG,IAAI,CAAA;CACnC;AAaD,eAAO,MAAM,aAAa,EAAE,eAqD3B,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/typography/Heading.tsx"],"sourcesContent":["/**\n * Heading Component - Puck Configuration\n *\n * H1-H6 headings with customizable styling.\n * Supports custom margin for spacing control.\n */\n\nimport React, { createElement } from 'react'\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n headingLevelField,\n headingLevelMap,\n alignmentMap,\n cn,\n marginValueToCSS,\n paddingValueToCSS,\n colorValueToCSS,\n dimensionsValueToCSS,\n type PaddingValue,\n type ColorValue,\n type DimensionsValue,\n type AnimationValue,\n} from '../../fields/shared.js'\nimport { AnimatedWrapper } from '../AnimatedWrapper.js'\nimport { createMarginField } from '../../fields/MarginField.js'\nimport { createPaddingField } from '../../fields/PaddingField.js'\nimport { createColorPickerField } from '../../fields/ColorPickerField.js'\nimport { createAlignmentField, type Alignment } from '../../fields/AlignmentField.js'\nimport { createDimensionsField } from '../../fields/DimensionsField.js'\nimport { createAnimationField } from '../../fields/AnimationField.js'\nimport { createResetField } from '../../fields/ResetField.js'\n\nexport interface HeadingProps {\n text: string\n level: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'\n alignment: Alignment | null\n textColor: ColorValue | null\n dimensions: DimensionsValue | null\n animation: AnimationValue | null\n margin: PaddingValue | null\n customPadding: PaddingValue | null\n}\n\nconst defaultProps: HeadingProps = {\n text: 'Heading Text',\n level: 'h2',\n alignment: null,\n textColor: null,\n dimensions: null,\n animation: null,\n margin: null,\n customPadding: null,\n}\n\nexport const HeadingConfig: ComponentConfig = {\n label: 'Heading',\n fields: {\n _reset: createResetField({ defaultProps }),\n text: {\n type: 'text',\n label: 'Text',\n },\n level: headingLevelField,\n textColor: createColorPickerField({ label: 'Text Color' }),\n dimensions: createDimensionsField({ label: 'Dimensions' }),\n alignment: createAlignmentField({ label: 'Alignment' }),\n animation: createAnimationField({ label: 'Animation' }),\n // Spacing (grouped at bottom)\n margin: createMarginField({ label: 'Margin' }),\n customPadding: createPaddingField({ label: 'Padding' }),\n },\n defaultProps,\n render: ({ text, level, alignment, textColor, dimensions, animation, margin, customPadding }) => {\n const tag = level || 'h2'\n const alignmentValue = alignment ?? 'left'\n const classes = cn(\n headingLevelMap[level] || headingLevelMap.h2,\n alignmentMap[alignmentValue] || alignmentMap.left\n )\n\n const dimensionsStyles = dimensions ? dimensionsValueToCSS(dimensions) : undefined\n\n const style: React.CSSProperties = {\n ...dimensionsStyles,\n }\n const marginCSS = marginValueToCSS(margin)\n if (marginCSS) {\n style.margin = marginCSS\n }\n const paddingCSS = paddingValueToCSS(customPadding)\n if (paddingCSS) {\n style.padding = paddingCSS\n }\n // Apply text color from ColorValue\n const colorCSS = colorValueToCSS(textColor)\n if (colorCSS) {\n style.color = colorCSS\n }\n\n const headingElement = createElement(tag, { className: classes, style: Object.keys(style).length > 0 ? style : undefined }, text)\n\n return (\n <AnimatedWrapper animation={animation}>\n {headingElement}\n </AnimatedWrapper>\n )\n },\n}\n"],"names":["React","createElement","headingLevelField","headingLevelMap","alignmentMap","cn","marginValueToCSS","paddingValueToCSS","colorValueToCSS","dimensionsValueToCSS","AnimatedWrapper","createMarginField","createPaddingField","createColorPickerField","createAlignmentField","createDimensionsField","createAnimationField","createResetField","defaultProps","text","level","alignment","textColor","dimensions","animation","margin","customPadding","HeadingConfig","label","fields","_reset","type","render","tag","alignmentValue","classes","h2","left","dimensionsStyles","undefined","style","marginCSS","paddingCSS","padding","colorCSS","color","headingElement","className","Object","keys","length"],"mappings":";AAAA;;;;;CAKC,GAED,OAAOA,SAASC,aAAa,QAAQ,QAAO;AAE5C,SACEC,iBAAiB,EACjBC,eAAe,EACfC,YAAY,EACZC,EAAE,EACFC,gBAAgB,EAChBC,iBAAiB,EACjBC,eAAe,EACfC,oBAAoB,QAKf,yBAAwB;AAC/B,SAASC,eAAe,QAAQ,wBAAuB;AACvD,SAASC,iBAAiB,QAAQ,8BAA6B;AAC/D,SAASC,kBAAkB,QAAQ,+BAA8B;AACjE,SAASC,sBAAsB,QAAQ,mCAAkC;AACzE,SAASC,oBAAoB,QAAwB,iCAAgC;AACrF,SAASC,qBAAqB,QAAQ,kCAAiC;AACvE,SAASC,oBAAoB,QAAQ,iCAAgC;AACrE,SAASC,gBAAgB,QAAQ,6BAA4B;AAa7D,MAAMC,eAA6B;IACjCC,MAAM;IACNC,OAAO;IACPC,WAAW;IACXC,WAAW;IACXC,YAAY;IACZC,WAAW;IACXC,QAAQ;IACRC,eAAe;AACjB;AAEA,OAAO,MAAMC,gBAAiC;IAC5CC,OAAO;IACPC,QAAQ;QACNC,QAAQb,iBAAiB;YAAEC;QAAa;QACxCC,MAAM;YACJY,MAAM;YACNH,OAAO;QACT;QACAR,OAAOlB;QACPoB,WAAWT,uBAAuB;YAAEe,OAAO;QAAa;QACxDL,YAAYR,sBAAsB;YAAEa,OAAO;QAAa;QACxDP,WAAWP,qBAAqB;YAAEc,OAAO;QAAY;QACrDJ,WAAWR,qBAAqB;YAAEY,OAAO;QAAY;QACrD,8BAA8B;QAC9BH,QAAQd,kBAAkB;YAAEiB,OAAO;QAAS;QAC5CF,eAAed,mBAAmB;YAAEgB,OAAO;QAAU;IACvD;IACAV;IACAc,QAAQ,CAAC,EAAEb,IAAI,EAAEC,KAAK,EAAEC,SAAS,EAAEC,SAAS,EAAEC,UAAU,EAAEC,SAAS,EAAEC,MAAM,EAAEC,aAAa,EAAE;QAC1F,MAAMO,MAAMb,SAAS;QACrB,MAAMc,iBAAiBb,aAAa;QACpC,MAAMc,UAAU9B,GACdF,eAAe,CAACiB,MAAM,IAAIjB,gBAAgBiC,EAAE,EAC5ChC,YAAY,CAAC8B,eAAe,IAAI9B,aAAaiC,IAAI;QAGnD,MAAMC,mBAAmBf,aAAad,qBAAqBc,cAAcgB;QAEzE,MAAMC,QAA6B;YACjC,GAAGF,gBAAgB;QACrB;QACA,MAAMG,YAAYnC,iBAAiBmB;QACnC,IAAIgB,WAAW;YACbD,MAAMf,MAAM,GAAGgB;QACjB;QACA,MAAMC,aAAanC,kBAAkBmB;QACrC,IAAIgB,YAAY;YACdF,MAAMG,OAAO,GAAGD;QAClB;QACA,mCAAmC;QACnC,MAAME,WAAWpC,gBAAgBc;QACjC,IAAIsB,UAAU;YACZJ,MAAMK,KAAK,GAAGD;QAChB;QAEA,MAAME,+BAAiB7C,cAAcgC,KAAK;YAAEc,WAAWZ;YAASK,OAAOQ,OAAOC,IAAI,CAACT,OAAOU,MAAM,GAAG,IAAIV,QAAQD;QAAU,GAAGpB;QAE5H,qBACE,KAACT;YAAgBc,WAAWA;sBACzBsB;;IAGP;AACF,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Heading.server.d.ts","sourceRoot":"","sources":["../../../src/components/typography/Heading.server.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAQL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAE/D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IAC9C,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;IAC3B,SAAS,EAAE,UAAU,GAAG,IAAI,CAAA;IAC5B,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,aAAa,EAAE,YAAY,GAAG,IAAI,CAAA;CACnC;AAaD,eAAO,MAAM,aAAa,EAAE,eAAe,CAAC,YAAY,CAsCvD,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/typography/Heading.server.tsx"],"sourcesContent":["/**\n * Heading Component - Server-Safe Puck Configuration\n *\n * H1-H6 headings with customizable styling.\n * This version excludes field definitions for server-side rendering.\n */\n\nimport { createElement } from 'react'\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n headingLevelMap,\n alignmentMap,\n cn,\n marginValueToCSS,\n paddingValueToCSS,\n colorValueToCSS,\n dimensionsValueToCSS,\n type PaddingValue,\n type ColorValue,\n type DimensionsValue,\n type AnimationValue,\n} from '../../fields/shared.js'\nimport { AnimatedWrapper } from '../AnimatedWrapper.js'\nimport type { Alignment } from '../../fields/AlignmentField.js'\n\nexport interface HeadingProps {\n text: string\n level: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'\n alignment: Alignment | null\n textColor: ColorValue | null\n dimensions: DimensionsValue | null\n animation: AnimationValue | null\n margin: PaddingValue | null\n customPadding: PaddingValue | null\n}\n\nconst defaultProps: HeadingProps = {\n text: 'Heading Text',\n level: 'h2',\n alignment: null,\n textColor: null,\n dimensions: null,\n animation: null,\n margin: null,\n customPadding: null,\n}\n\nexport const HeadingConfig: ComponentConfig<HeadingProps> = {\n label: 'Heading',\n defaultProps,\n render: ({ text, level, alignment, textColor, dimensions, animation, margin, customPadding }) => {\n const tag = level || 'h2'\n const alignmentValue = alignment ?? 'left'\n const classes = cn(\n headingLevelMap[level] || headingLevelMap.h2,\n alignmentMap[alignmentValue] || alignmentMap.left\n )\n\n const dimensionsStyles = dimensions ? dimensionsValueToCSS(dimensions) : undefined\n\n const style: React.CSSProperties = {\n ...dimensionsStyles,\n }\n const marginCSS = marginValueToCSS(margin)\n if (marginCSS) {\n style.margin = marginCSS\n }\n const paddingCSS = paddingValueToCSS(customPadding)\n if (paddingCSS) {\n style.padding = paddingCSS\n }\n // Apply text color from ColorValue\n const colorCSS = colorValueToCSS(textColor)\n if (colorCSS) {\n style.color = colorCSS\n }\n\n const headingElement = createElement(tag, { className: classes, style: Object.keys(style).length > 0 ? style : undefined }, text)\n\n return (\n <AnimatedWrapper animation={animation}>\n {headingElement}\n </AnimatedWrapper>\n )\n },\n}\n"],"names":["createElement","headingLevelMap","alignmentMap","cn","marginValueToCSS","paddingValueToCSS","colorValueToCSS","dimensionsValueToCSS","AnimatedWrapper","defaultProps","text","level","alignment","textColor","dimensions","animation","margin","customPadding","HeadingConfig","label","render","tag","alignmentValue","classes","h2","left","dimensionsStyles","undefined","style","marginCSS","paddingCSS","padding","colorCSS","color","headingElement","className","Object","keys","length"],"mappings":";AAAA;;;;;CAKC,GAED,SAASA,aAAa,QAAQ,QAAO;AAErC,SACEC,eAAe,EACfC,YAAY,EACZC,EAAE,EACFC,gBAAgB,EAChBC,iBAAiB,EACjBC,eAAe,EACfC,oBAAoB,QAKf,yBAAwB;AAC/B,SAASC,eAAe,QAAQ,wBAAuB;AAcvD,MAAMC,eAA6B;IACjCC,MAAM;IACNC,OAAO;IACPC,WAAW;IACXC,WAAW;IACXC,YAAY;IACZC,WAAW;IACXC,QAAQ;IACRC,eAAe;AACjB;AAEA,OAAO,MAAMC,gBAA+C;IAC1DC,OAAO;IACPV;IACAW,QAAQ,CAAC,EAAEV,IAAI,EAAEC,KAAK,EAAEC,SAAS,EAAEC,SAAS,EAAEC,UAAU,EAAEC,SAAS,EAAEC,MAAM,EAAEC,aAAa,EAAE;QAC1F,MAAMI,MAAMV,SAAS;QACrB,MAAMW,iBAAiBV,aAAa;QACpC,MAAMW,UAAUpB,GACdF,eAAe,CAACU,MAAM,IAAIV,gBAAgBuB,EAAE,EAC5CtB,YAAY,CAACoB,eAAe,IAAIpB,aAAauB,IAAI;QAGnD,MAAMC,mBAAmBZ,aAAaP,qBAAqBO,cAAca;QAEzE,MAAMC,QAA6B;YACjC,GAAGF,gBAAgB;QACrB;QACA,MAAMG,YAAYzB,iBAAiBY;QACnC,IAAIa,WAAW;YACbD,MAAMZ,MAAM,GAAGa;QACjB;QACA,MAAMC,aAAazB,kBAAkBY;QACrC,IAAIa,YAAY;YACdF,MAAMG,OAAO,GAAGD;QAClB;QACA,mCAAmC;QACnC,MAAME,WAAW1B,gBAAgBO;QACjC,IAAImB,UAAU;YACZJ,MAAMK,KAAK,GAAGD;QAChB;QAEA,MAAME,+BAAiBlC,cAAcqB,KAAK;YAAEc,WAAWZ;YAASK,OAAOQ,OAAOC,IAAI,CAACT,OAAOU,MAAM,GAAG,IAAIV,QAAQD;QAAU,GAAGjB;QAE5H,qBACE,KAACF;YAAgBO,WAAWA;sBACzBmB;;IAGP;AACF,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RichText.editor.d.ts","sourceRoot":"","sources":["../../../src/components/typography/RichText.editor.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAkB,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAA;AAO/B,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,aAAa,EAAE,YAAY,GAAG,IAAI,CAAA;IAClC,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AA0DD,eAAO,MAAM,oBAAoB,EAAE,eAsBlC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/typography/RichText.editor.tsx"],"sourcesContent":["'use client'\n\n/**\n * RichText Component - Puck Editor Configuration\n *\n * Uses Puck's native richtext field with custom extensions for:\n * - Text colors with opacity (RGBA)\n * - Highlight with multicolor support\n * - Font sizes (presets + custom)\n * - Superscript and subscript\n *\n * Supports contentEditable for inline canvas editing.\n * Requires @tailwindcss/typography - uses the `prose` class for styling.\n */\n\nimport React, { useMemo } from 'react'\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n marginValueToCSS,\n paddingValueToCSS,\n dimensionsValueToCSS,\n type PaddingValue,\n type DimensionsValue,\n} from '../../fields/shared.js'\nimport { createMarginField } from '../../fields/MarginField.js'\nimport { createPaddingField } from '../../fields/PaddingField.js'\nimport { createDimensionsField } from '../../fields/DimensionsField.js'\nimport { createResetField } from '../../fields/ResetField.js'\nimport { createRichTextField } from '../../fields/richtext/index.js'\n\nexport interface RichTextEditorProps {\n content: React.ReactNode // Puck richtext returns React elements for contentEditable\n dimensions: DimensionsValue | null\n margin: PaddingValue | null\n customPadding: PaddingValue | null\n id?: string // Puck adds this automatically\n}\n\nconst defaultProps: RichTextEditorProps = {\n content: '<p>Click to start editing...</p>',\n dimensions: null,\n margin: null,\n customPadding: null,\n}\n\n// =============================================================================\n// Render Component for Editor Config\n// =============================================================================\n\n// Uses Puck's native richtext field which supports inline contentEditable editing.\n// Content is rendered directly as {content} - Puck handles the rest.\n\nfunction RichTextRender({\n content,\n dimensions,\n margin,\n customPadding,\n}: RichTextEditorProps) {\n // Build styles\n const style = useMemo(() => {\n const s: React.CSSProperties = {}\n\n const dimensionsStyles = dimensions ? dimensionsValueToCSS(dimensions) : undefined\n if (dimensionsStyles) {\n Object.assign(s, dimensionsStyles)\n }\n\n const marginCSS = marginValueToCSS(margin)\n if (marginCSS) {\n s.margin = marginCSS\n }\n\n const customPaddingCSS = paddingValueToCSS(customPadding)\n if (customPaddingCSS) {\n s.padding = customPaddingCSS\n }\n\n return Object.keys(s).length > 0 ? s : undefined\n }, [dimensions, margin, customPadding])\n\n // Render content directly - Puck's richtext field handles both:\n // - Editor: Returns React elements for contentEditable inline editing\n // - Frontend <Render>: Returns HTML string which React renders\n return (\n <section className=\"relative overflow-hidden\" style={style}>\n <div className=\"prose dark:prose-invert max-w-none\">{content}</div>\n </section>\n )\n}\n\n// =============================================================================\n// Puck Component Config\n// =============================================================================\n\nexport const RichTextEditorConfig: ComponentConfig = {\n label: 'Rich Text',\n fields: {\n _reset: createResetField({ defaultProps }),\n content: createRichTextField({\n label: 'Content',\n contentEditable: true, // Enable inline canvas editing\n }),\n dimensions: createDimensionsField({ label: 'Dimensions' }),\n margin: createMarginField({ label: 'Margin' }),\n customPadding: createPaddingField({ label: 'Padding' }),\n },\n defaultProps,\n render: (props) => (\n <RichTextRender\n content={props.content}\n dimensions={props.dimensions}\n margin={props.margin}\n customPadding={props.customPadding}\n id={props.id}\n />\n ),\n}\n"],"names":["React","useMemo","marginValueToCSS","paddingValueToCSS","dimensionsValueToCSS","createMarginField","createPaddingField","createDimensionsField","createResetField","createRichTextField","defaultProps","content","dimensions","margin","customPadding","RichTextRender","style","s","dimensionsStyles","undefined","Object","assign","marginCSS","customPaddingCSS","padding","keys","length","section","className","div","RichTextEditorConfig","label","fields","_reset","contentEditable","render","props","id"],"mappings":"AAAA;;AAEA;;;;;;;;;;;CAWC,GAED,OAAOA,SAASC,OAAO,QAAQ,QAAO;AAEtC,SACEC,gBAAgB,EAChBC,iBAAiB,EACjBC,oBAAoB,QAGf,yBAAwB;AAC/B,SAASC,iBAAiB,QAAQ,8BAA6B;AAC/D,SAASC,kBAAkB,QAAQ,+BAA8B;AACjE,SAASC,qBAAqB,QAAQ,kCAAiC;AACvE,SAASC,gBAAgB,QAAQ,6BAA4B;AAC7D,SAASC,mBAAmB,QAAQ,iCAAgC;AAUpE,MAAMC,eAAoC;IACxCC,SAAS;IACTC,YAAY;IACZC,QAAQ;IACRC,eAAe;AACjB;AAEA,gFAAgF;AAChF,qCAAqC;AACrC,gFAAgF;AAEhF,mFAAmF;AACnF,qEAAqE;AAErE,SAASC,eAAe,EACtBJ,OAAO,EACPC,UAAU,EACVC,MAAM,EACNC,aAAa,EACO;IACpB,eAAe;IACf,MAAME,QAAQf,QAAQ;QACpB,MAAMgB,IAAyB,CAAC;QAEhC,MAAMC,mBAAmBN,aAAaR,qBAAqBQ,cAAcO;QACzE,IAAID,kBAAkB;YACpBE,OAAOC,MAAM,CAACJ,GAAGC;QACnB;QAEA,MAAMI,YAAYpB,iBAAiBW;QACnC,IAAIS,WAAW;YACbL,EAAEJ,MAAM,GAAGS;QACb;QAEA,MAAMC,mBAAmBpB,kBAAkBW;QAC3C,IAAIS,kBAAkB;YACpBN,EAAEO,OAAO,GAAGD;QACd;QAEA,OAAOH,OAAOK,IAAI,CAACR,GAAGS,MAAM,GAAG,IAAIT,IAAIE;IACzC,GAAG;QAACP;QAAYC;QAAQC;KAAc;IAEtC,gEAAgE;IAChE,sEAAsE;IACtE,+DAA+D;IAC/D,qBACE,KAACa;QAAQC,WAAU;QAA2BZ,OAAOA;kBACnD,cAAA,KAACa;YAAID,WAAU;sBAAsCjB;;;AAG3D;AAEA,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAEhF,OAAO,MAAMmB,uBAAwC;IACnDC,OAAO;IACPC,QAAQ;QACNC,QAAQzB,iBAAiB;YAAEE;QAAa;QACxCC,SAASF,oBAAoB;YAC3BsB,OAAO;YACPG,iBAAiB;QACnB;QACAtB,YAAYL,sBAAsB;YAAEwB,OAAO;QAAa;QACxDlB,QAAQR,kBAAkB;YAAE0B,OAAO;QAAS;QAC5CjB,eAAeR,mBAAmB;YAAEyB,OAAO;QAAU;IACvD;IACArB;IACAyB,QAAQ,CAACC,sBACP,KAACrB;YACCJ,SAASyB,MAAMzB,OAAO;YACtBC,YAAYwB,MAAMxB,UAAU;YAC5BC,QAAQuB,MAAMvB,MAAM;YACpBC,eAAesB,MAAMtB,aAAa;YAClCuB,IAAID,MAAMC,EAAE;;AAGlB,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RichText.server.d.ts","sourceRoot":"","sources":["../../../src/components/typography/RichText.server.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EAOL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAY/D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;IAC3B,SAAS,EAAE,UAAU,GAAG,IAAI,CAAA;IAC5B,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,aAAa,EAAE,YAAY,GAAG,IAAI,CAAA;CACnC;AAYD,eAAO,MAAM,cAAc,EAAE,eAAe,CAAC,aAAa,CA8CzD,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/typography/RichText.server.tsx"],"sourcesContent":["/**\n * RichText Component - Server-Safe Puck Configuration\n *\n * Rich text content with customizable styling.\n * This version excludes field definitions for server-side rendering.\n *\n * Requires @tailwindcss/typography - uses the `prose` class for styling.\n */\n\nimport React from 'react'\nimport type { ComponentConfig } from '@puckeditor/core'\nimport parse from 'html-react-parser'\nimport {\n cn,\n marginValueToCSS,\n paddingValueToCSS,\n dimensionsValueToCSS,\n colorValueToCSS,\n alignmentMap,\n type PaddingValue,\n type DimensionsValue,\n type ColorValue,\n type AnimationValue,\n} from '../../fields/shared.js'\nimport { AnimatedWrapper } from '../AnimatedWrapper.js'\nimport type { Alignment } from '../../fields/AlignmentField.js'\n\n// Default padding with standard horizontal spacing (replaces hardcoded px-4)\nconst DEFAULT_PADDING: PaddingValue = {\n top: 0,\n right: 16,\n bottom: 0,\n left: 16,\n unit: 'px',\n linked: false,\n}\n\nexport interface RichTextProps {\n content: React.ReactNode // Puck richtext returns React elements or HTML strings\n alignment: Alignment | null\n textColor: ColorValue | null\n dimensions: DimensionsValue | null\n animation: AnimationValue | null\n margin: PaddingValue | null\n customPadding: PaddingValue | null\n}\n\nconst defaultProps: RichTextProps = {\n content: '<p>Enter your content here...</p>',\n alignment: null,\n textColor: null,\n dimensions: null,\n animation: null,\n margin: null,\n customPadding: DEFAULT_PADDING, // Default 16px horizontal padding\n}\n\nexport const RichTextConfig: ComponentConfig<RichTextProps> = {\n label: 'Rich Text',\n defaultProps,\n render: ({ content, alignment, textColor, dimensions, animation, margin, customPadding }) => {\n const dimensionsStyles = dimensions ? dimensionsValueToCSS(dimensions) : undefined\n\n const style: React.CSSProperties = {\n ...dimensionsStyles,\n }\n const marginCSS = marginValueToCSS(margin)\n if (marginCSS) {\n style.margin = marginCSS\n }\n const customPaddingCSS = paddingValueToCSS(customPadding)\n if (customPaddingCSS) {\n style.padding = customPaddingCSS\n }\n // Apply text color from ColorValue\n const colorCSS = colorValueToCSS(textColor)\n if (colorCSS) {\n style.color = colorCSS\n }\n\n const alignmentValue = alignment ?? 'left'\n const alignmentClass = alignmentMap[alignmentValue] || alignmentMap.left\n\n // Handle empty content - check for null/undefined or empty string\n const isEmpty = !content || (typeof content === 'string' && (content === '' || content === '<p></p>'))\n\n // Parse HTML strings to React elements, pass through React elements as-is\n const renderedContent = isEmpty\n ? <p><em>No content available</em></p>\n : typeof content === 'string'\n ? parse(content)\n : content\n\n return (\n <AnimatedWrapper animation={animation}>\n <section className={cn('relative overflow-hidden', alignmentClass)} style={Object.keys(style).length > 0 ? style : undefined}>\n <div className=\"prose dark:prose-invert max-w-none\">\n {renderedContent}\n </div>\n </section>\n </AnimatedWrapper>\n )\n },\n}\n"],"names":["React","parse","cn","marginValueToCSS","paddingValueToCSS","dimensionsValueToCSS","colorValueToCSS","alignmentMap","AnimatedWrapper","DEFAULT_PADDING","top","right","bottom","left","unit","linked","defaultProps","content","alignment","textColor","dimensions","animation","margin","customPadding","RichTextConfig","label","render","dimensionsStyles","undefined","style","marginCSS","customPaddingCSS","padding","colorCSS","color","alignmentValue","alignmentClass","isEmpty","renderedContent","p","em","section","className","Object","keys","length","div"],"mappings":";AAAA;;;;;;;CAOC,GAED,OAAOA,WAAW,QAAO;AAEzB,OAAOC,WAAW,oBAAmB;AACrC,SACEC,EAAE,EACFC,gBAAgB,EAChBC,iBAAiB,EACjBC,oBAAoB,EACpBC,eAAe,EACfC,YAAY,QAKP,yBAAwB;AAC/B,SAASC,eAAe,QAAQ,wBAAuB;AAGvD,6EAA6E;AAC7E,MAAMC,kBAAgC;IACpCC,KAAK;IACLC,OAAO;IACPC,QAAQ;IACRC,MAAM;IACNC,MAAM;IACNC,QAAQ;AACV;AAYA,MAAMC,eAA8B;IAClCC,SAAS;IACTC,WAAW;IACXC,WAAW;IACXC,YAAY;IACZC,WAAW;IACXC,QAAQ;IACRC,eAAed;AACjB;AAEA,OAAO,MAAMe,iBAAiD;IAC5DC,OAAO;IACPT;IACAU,QAAQ,CAAC,EAAET,OAAO,EAAEC,SAAS,EAAEC,SAAS,EAAEC,UAAU,EAAEC,SAAS,EAAEC,MAAM,EAAEC,aAAa,EAAE;QACtF,MAAMI,mBAAmBP,aAAaf,qBAAqBe,cAAcQ;QAEzE,MAAMC,QAA6B;YACjC,GAAGF,gBAAgB;QACrB;QACA,MAAMG,YAAY3B,iBAAiBmB;QACnC,IAAIQ,WAAW;YACbD,MAAMP,MAAM,GAAGQ;QACjB;QACA,MAAMC,mBAAmB3B,kBAAkBmB;QAC3C,IAAIQ,kBAAkB;YACpBF,MAAMG,OAAO,GAAGD;QAClB;QACA,mCAAmC;QACnC,MAAME,WAAW3B,gBAAgBa;QACjC,IAAIc,UAAU;YACZJ,MAAMK,KAAK,GAAGD;QAChB;QAEA,MAAME,iBAAiBjB,aAAa;QACpC,MAAMkB,iBAAiB7B,YAAY,CAAC4B,eAAe,IAAI5B,aAAaM,IAAI;QAExE,kEAAkE;QAClE,MAAMwB,UAAU,CAACpB,WAAY,OAAOA,YAAY,YAAaA,CAAAA,YAAY,MAAMA,YAAY,SAAQ;QAEnG,0EAA0E;QAC1E,MAAMqB,kBAAkBD,wBACpB,KAACE;sBAAE,cAAA,KAACC;0BAAG;;aACP,OAAOvB,YAAY,WACjBhB,MAAMgB,WACNA;QAEN,qBACE,KAACT;YAAgBa,WAAWA;sBAC1B,cAAA,KAACoB;gBAAQC,WAAWxC,GAAG,4BAA4BkC;gBAAiBP,OAAOc,OAAOC,IAAI,CAACf,OAAOgB,MAAM,GAAG,IAAIhB,QAAQD;0BACjH,cAAA,KAACkB;oBAAIJ,WAAU;8BACZJ;;;;IAKX;AACF,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../src/components/typography/Text.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EASL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAA;AAK/B,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAKrF,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;IAC3B,SAAS,EAAE,UAAU,GAAG,IAAI,CAAA;IAC5B,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,aAAa,EAAE,YAAY,GAAG,IAAI,CAAA;CACnC;AAaD,eAAO,MAAM,UAAU,EAAE,eAsDxB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/typography/Text.tsx"],"sourcesContent":["/**\n * Text Component - Puck Configuration\n *\n * Simple paragraph text with customizable styling.\n */\n\nimport type React from 'react'\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n textSizeField,\n textSizeMap,\n alignmentMap,\n cn,\n marginValueToCSS,\n paddingValueToCSS,\n colorValueToCSS,\n dimensionsValueToCSS,\n type PaddingValue,\n type ColorValue,\n type DimensionsValue,\n type AnimationValue,\n} from '../../fields/shared.js'\nimport { AnimatedWrapper } from '../AnimatedWrapper.js'\nimport { createMarginField } from '../../fields/MarginField.js'\nimport { createPaddingField } from '../../fields/PaddingField.js'\nimport { createColorPickerField } from '../../fields/ColorPickerField.js'\nimport { createAlignmentField, type Alignment } from '../../fields/AlignmentField.js'\nimport { createDimensionsField } from '../../fields/DimensionsField.js'\nimport { createAnimationField } from '../../fields/AnimationField.js'\nimport { createResetField } from '../../fields/ResetField.js'\n\nexport interface TextProps {\n content: string\n size: string\n alignment: Alignment | null\n textColor: ColorValue | null\n dimensions: DimensionsValue | null\n animation: AnimationValue | null\n margin: PaddingValue | null\n customPadding: PaddingValue | null\n}\n\nconst defaultProps: TextProps = {\n content: 'Enter your text here...',\n size: 'base',\n alignment: null,\n textColor: null,\n dimensions: null,\n animation: null,\n margin: null,\n customPadding: null,\n}\n\nexport const TextConfig: ComponentConfig = {\n label: 'Text',\n fields: {\n _reset: createResetField({ defaultProps }),\n content: {\n type: 'textarea',\n label: 'Content',\n },\n size: textSizeField,\n textColor: createColorPickerField({ label: 'Text Color' }),\n dimensions: createDimensionsField({ label: 'Dimensions' }),\n alignment: createAlignmentField({ label: 'Alignment' }),\n animation: createAnimationField({ label: 'Animation' }),\n // Spacing (grouped at bottom)\n margin: createMarginField({ label: 'Margin' }),\n customPadding: createPaddingField({ label: 'Padding' }),\n },\n defaultProps,\n render: ({ content, size, alignment, textColor, dimensions, animation, margin, customPadding }) => {\n const dimensionsStyles = dimensions ? dimensionsValueToCSS(dimensions) : undefined\n\n const style: React.CSSProperties = {\n ...dimensionsStyles,\n }\n const marginCSS = marginValueToCSS(margin)\n if (marginCSS) {\n style.margin = marginCSS\n }\n const paddingCSS = paddingValueToCSS(customPadding)\n if (paddingCSS) {\n style.padding = paddingCSS\n }\n // Apply text color from ColorValue\n const colorCSS = colorValueToCSS(textColor)\n if (colorCSS) {\n style.color = colorCSS\n }\n\n const alignmentValue = alignment ?? 'left'\n\n return (\n <AnimatedWrapper animation={animation}>\n <p\n className={cn(\n textSizeMap[size] || textSizeMap.base,\n alignmentMap[alignmentValue] || alignmentMap.left\n )}\n style={Object.keys(style).length > 0 ? style : undefined}\n >\n {content}\n </p>\n </AnimatedWrapper>\n )\n },\n}\n"],"names":["textSizeField","textSizeMap","alignmentMap","cn","marginValueToCSS","paddingValueToCSS","colorValueToCSS","dimensionsValueToCSS","AnimatedWrapper","createMarginField","createPaddingField","createColorPickerField","createAlignmentField","createDimensionsField","createAnimationField","createResetField","defaultProps","content","size","alignment","textColor","dimensions","animation","margin","customPadding","TextConfig","label","fields","_reset","type","render","dimensionsStyles","undefined","style","marginCSS","paddingCSS","padding","colorCSS","color","alignmentValue","p","className","base","left","Object","keys","length"],"mappings":"AAAA;;;;CAIC;AAID,SACEA,aAAa,EACbC,WAAW,EACXC,YAAY,EACZC,EAAE,EACFC,gBAAgB,EAChBC,iBAAiB,EACjBC,eAAe,EACfC,oBAAoB,QAKf,yBAAwB;AAC/B,SAASC,eAAe,QAAQ,wBAAuB;AACvD,SAASC,iBAAiB,QAAQ,8BAA6B;AAC/D,SAASC,kBAAkB,QAAQ,+BAA8B;AACjE,SAASC,sBAAsB,QAAQ,mCAAkC;AACzE,SAASC,oBAAoB,QAAwB,iCAAgC;AACrF,SAASC,qBAAqB,QAAQ,kCAAiC;AACvE,SAASC,oBAAoB,QAAQ,iCAAgC;AACrE,SAASC,gBAAgB,QAAQ,6BAA4B;AAa7D,MAAMC,eAA0B;IAC9BC,SAAS;IACTC,MAAM;IACNC,WAAW;IACXC,WAAW;IACXC,YAAY;IACZC,WAAW;IACXC,QAAQ;IACRC,eAAe;AACjB;AAEA,OAAO,MAAMC,aAA8B;IACzCC,OAAO;IACPC,QAAQ;QACNC,QAAQb,iBAAiB;YAAEC;QAAa;QACxCC,SAAS;YACPY,MAAM;YACNH,OAAO;QACT;QACAR,MAAMlB;QACNoB,WAAWT,uBAAuB;YAAEe,OAAO;QAAa;QACxDL,YAAYR,sBAAsB;YAAEa,OAAO;QAAa;QACxDP,WAAWP,qBAAqB;YAAEc,OAAO;QAAY;QACrDJ,WAAWR,qBAAqB;YAAEY,OAAO;QAAY;QACrD,8BAA8B;QAC9BH,QAAQd,kBAAkB;YAAEiB,OAAO;QAAS;QAC5CF,eAAed,mBAAmB;YAAEgB,OAAO;QAAU;IACvD;IACAV;IACAc,QAAQ,CAAC,EAAEb,OAAO,EAAEC,IAAI,EAAEC,SAAS,EAAEC,SAAS,EAAEC,UAAU,EAAEC,SAAS,EAAEC,MAAM,EAAEC,aAAa,EAAE;QAC5F,MAAMO,mBAAmBV,aAAad,qBAAqBc,cAAcW;QAEzE,MAAMC,QAA6B;YACjC,GAAGF,gBAAgB;QACrB;QACA,MAAMG,YAAY9B,iBAAiBmB;QACnC,IAAIW,WAAW;YACbD,MAAMV,MAAM,GAAGW;QACjB;QACA,MAAMC,aAAa9B,kBAAkBmB;QACrC,IAAIW,YAAY;YACdF,MAAMG,OAAO,GAAGD;QAClB;QACA,mCAAmC;QACnC,MAAME,WAAW/B,gBAAgBc;QACjC,IAAIiB,UAAU;YACZJ,MAAMK,KAAK,GAAGD;QAChB;QAEA,MAAME,iBAAiBpB,aAAa;QAEpC,qBACE,KAACX;YAAgBc,WAAWA;sBAC1B,cAAA,KAACkB;gBACCC,WAAWtC,GACTF,WAAW,CAACiB,KAAK,IAAIjB,YAAYyC,IAAI,EACrCxC,YAAY,CAACqC,eAAe,IAAIrC,aAAayC,IAAI;gBAEnDV,OAAOW,OAAOC,IAAI,CAACZ,OAAOa,MAAM,GAAG,IAAIb,QAAQD;0BAE9Cf;;;IAIT;AACF,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Text.server.d.ts","sourceRoot":"","sources":["../../../src/components/typography/Text.server.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAQL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAE/D,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;IAC3B,SAAS,EAAE,UAAU,GAAG,IAAI,CAAA;IAC5B,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,aAAa,EAAE,YAAY,GAAG,IAAI,CAAA;CACnC;AAaD,eAAO,MAAM,UAAU,EAAE,eAAe,CAAC,SAAS,CAuCjD,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/typography/Text.server.tsx"],"sourcesContent":["/**\n * Text Component - Server-Safe Puck Configuration\n *\n * Simple paragraph text with customizable styling.\n * This version excludes field definitions for server-side rendering.\n */\n\nimport type React from 'react'\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n textSizeMap,\n alignmentMap,\n cn,\n marginValueToCSS,\n paddingValueToCSS,\n colorValueToCSS,\n dimensionsValueToCSS,\n type PaddingValue,\n type ColorValue,\n type DimensionsValue,\n type AnimationValue,\n} from '../../fields/shared.js'\nimport { AnimatedWrapper } from '../AnimatedWrapper.js'\nimport type { Alignment } from '../../fields/AlignmentField.js'\n\nexport interface TextProps {\n content: string\n size: string\n alignment: Alignment | null\n textColor: ColorValue | null\n dimensions: DimensionsValue | null\n animation: AnimationValue | null\n margin: PaddingValue | null\n customPadding: PaddingValue | null\n}\n\nconst defaultProps: TextProps = {\n content: 'Enter your text here...',\n size: 'base',\n alignment: null,\n textColor: null,\n dimensions: null,\n animation: null,\n margin: null,\n customPadding: null,\n}\n\nexport const TextConfig: ComponentConfig<TextProps> = {\n label: 'Text',\n defaultProps,\n render: ({ content, size, alignment, textColor, dimensions, animation, margin, customPadding }) => {\n const dimensionsStyles = dimensions ? dimensionsValueToCSS(dimensions) : undefined\n\n const style: React.CSSProperties = {\n ...dimensionsStyles,\n }\n const marginCSS = marginValueToCSS(margin)\n if (marginCSS) {\n style.margin = marginCSS\n }\n const paddingCSS = paddingValueToCSS(customPadding)\n if (paddingCSS) {\n style.padding = paddingCSS\n }\n // Apply text color from ColorValue\n const colorCSS = colorValueToCSS(textColor)\n if (colorCSS) {\n style.color = colorCSS\n }\n\n const alignmentValue = alignment ?? 'left'\n\n return (\n <AnimatedWrapper animation={animation}>\n <p\n className={cn(\n textSizeMap[size] || textSizeMap.base,\n alignmentMap[alignmentValue] || alignmentMap.left\n )}\n style={Object.keys(style).length > 0 ? style : undefined}\n >\n {content}\n </p>\n </AnimatedWrapper>\n )\n },\n}\n"],"names":["textSizeMap","alignmentMap","cn","marginValueToCSS","paddingValueToCSS","colorValueToCSS","dimensionsValueToCSS","AnimatedWrapper","defaultProps","content","size","alignment","textColor","dimensions","animation","margin","customPadding","TextConfig","label","render","dimensionsStyles","undefined","style","marginCSS","paddingCSS","padding","colorCSS","color","alignmentValue","p","className","base","left","Object","keys","length"],"mappings":"AAAA;;;;;CAKC;AAID,SACEA,WAAW,EACXC,YAAY,EACZC,EAAE,EACFC,gBAAgB,EAChBC,iBAAiB,EACjBC,eAAe,EACfC,oBAAoB,QAKf,yBAAwB;AAC/B,SAASC,eAAe,QAAQ,wBAAuB;AAcvD,MAAMC,eAA0B;IAC9BC,SAAS;IACTC,MAAM;IACNC,WAAW;IACXC,WAAW;IACXC,YAAY;IACZC,WAAW;IACXC,QAAQ;IACRC,eAAe;AACjB;AAEA,OAAO,MAAMC,aAAyC;IACpDC,OAAO;IACPV;IACAW,QAAQ,CAAC,EAAEV,OAAO,EAAEC,IAAI,EAAEC,SAAS,EAAEC,SAAS,EAAEC,UAAU,EAAEC,SAAS,EAAEC,MAAM,EAAEC,aAAa,EAAE;QAC5F,MAAMI,mBAAmBP,aAAaP,qBAAqBO,cAAcQ;QAEzE,MAAMC,QAA6B;YACjC,GAAGF,gBAAgB;QACrB;QACA,MAAMG,YAAYpB,iBAAiBY;QACnC,IAAIQ,WAAW;YACbD,MAAMP,MAAM,GAAGQ;QACjB;QACA,MAAMC,aAAapB,kBAAkBY;QACrC,IAAIQ,YAAY;YACdF,MAAMG,OAAO,GAAGD;QAClB;QACA,mCAAmC;QACnC,MAAME,WAAWrB,gBAAgBO;QACjC,IAAIc,UAAU;YACZJ,MAAMK,KAAK,GAAGD;QAChB;QAEA,MAAME,iBAAiBjB,aAAa;QAEpC,qBACE,KAACJ;YAAgBO,WAAWA;sBAC1B,cAAA,KAACe;gBACCC,WAAW5B,GACTF,WAAW,CAACU,KAAK,IAAIV,YAAY+B,IAAI,EACrC9B,YAAY,CAAC2B,eAAe,IAAI3B,aAAa+B,IAAI;gBAEnDV,OAAOW,OAAOC,IAAI,CAACZ,OAAOa,MAAM,GAAG,IAAIb,QAAQD;0BAE9CZ;;;IAIT;AACF,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/typography/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/typography/index.ts"],"sourcesContent":["/**\n * Typography Components\n *\n * Text and heading components for content display.\n */\n\nexport { HeadingConfig } from './Heading.js'\nexport { TextConfig } from './Text.js'\nexport { RichTextEditorConfig } from './RichText.editor.js'\nexport { RichTextConfig } from './RichText.server.js'\n"],"names":["HeadingConfig","TextConfig","RichTextEditorConfig","RichTextConfig"],"mappings":"AAAA;;;;CAIC,GAED,SAASA,aAAa,QAAQ,eAAc;AAC5C,SAASC,UAAU,QAAQ,YAAW;AACtC,SAASC,oBAAoB,QAAQ,uBAAsB;AAC3D,SAASC,cAAc,QAAQ,uBAAsB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.editor.d.ts","sourceRoot":"","sources":["../../src/config/config.editor.tsx"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAwB,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AA0BtC;;;;GAIG;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAiEE;YAAE,QAAQ,EAAE,SAAS,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;mBAuBhB,eAAe,CAAC,GAAG,CAAC;cAC9B,eAAe,CAAC,GAAG,CAAC;cACpB,eAAe,CAAC,GAAG,CAAC;iBACd,eAAe,CAAC,GAAG,CAAC;gBACtB,eAAe,CAAC,GAAG,CAAC;kBAChB,eAAe,CAAC,GAAG,CAAC;iBAEtB,eAAe,CAAC,GAAG,CAAC;cAC1B,eAAe,CAAC,GAAG,CAAC;kBACN,eAAe,CAAC,GAAG,CAAC;eAEhC,eAAe,CAAC,GAAG,CAAC;gBAElB,eAAe,CAAC,GAAG,CAAC;cACxB,eAAe,CAAC,GAAG,CAAC;iBACd,eAAe,CAAC,GAAG,CAAC;mBAChB,eAAe,CAAC,GAAG,CAAC;;CAEhC,CAAA;AAGtB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAGzC,OAAO,EACL,UAAU,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,cAAc,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/config.editor.tsx"],"sourcesContent":["'use client'\n\n/**\n * Client-side Puck configuration with custom fields\n *\n * This config includes all components plus client-only features like:\n * - TipTap rich text editor for RichText\n * - Accordion (requires useState)\n *\n * Use this config for the Puck visual editor.\n */\n\nimport type { Config as PuckConfig, ComponentConfig } from '@puckeditor/core'\nimport type { ReactNode } from 'react'\nimport { createBackgroundField } from '../fields/BackgroundField.js'\nimport { lockedSlugField, lockedHomepageField } from '../fields/LockedField.js'\n\n// Layout Components\nimport { ContainerConfig } from '../components/layout/Container.js'\nimport { FlexConfig } from '../components/layout/Flex.js'\nimport { GridConfig } from '../components/layout/Grid.js'\nimport { SectionConfig } from '../components/layout/Section.js'\nimport { SpacerConfig } from '../components/layout/Spacer.js'\nimport { TemplateConfig } from '../components/layout/Template.js'\n\n// Typography Components\nimport { HeadingConfig } from '../components/typography/Heading.js'\nimport { TextConfig } from '../components/typography/Text.js'\nimport { RichTextEditorConfig } from '../components/typography/RichText.editor.js'\n\n// Media Components\nimport { ImageConfig } from '../components/media/Image.js'\n\n// Interactive Components\nimport { ButtonConfig } from '../components/interactive/Button.js'\nimport { CardConfig } from '../components/interactive/Card.js'\nimport { DividerConfig } from '../components/interactive/Divider.js'\nimport { AccordionConfig } from '../components/interactive/Accordion.js'\n\n/**\n * Editor Puck configuration with all components including client-only ones\n *\n * Use this config for the Puck <Editor /> component.\n */\n// Using type assertion since Puck's strict typing conflicts with our generic configs\nexport const editorConfig = {\n root: {\n fields: {\n // Page identity (locked fields)\n slug: lockedSlugField,\n isHomepage: lockedHomepageField,\n // Page settings\n title: {\n type: 'text',\n label: 'Page Title',\n },\n pageLayout: {\n type: 'select',\n label: 'Page Layout',\n options: [\n { label: 'Default', value: 'default' },\n { label: 'Landing', value: 'landing' },\n { label: 'Full Width', value: 'full-width' },\n ],\n },\n // Page-level overrides\n showHeader: {\n type: 'radio',\n label: 'Show Header',\n options: [\n { label: 'Use Layout Default', value: 'default' },\n { label: 'Show', value: 'show' },\n { label: 'Hide', value: 'hide' },\n ],\n },\n showFooter: {\n type: 'radio',\n label: 'Show Footer',\n options: [\n { label: 'Use Layout Default', value: 'default' },\n { label: 'Show', value: 'show' },\n { label: 'Hide', value: 'hide' },\n ],\n },\n pageBackground: createBackgroundField({\n label: 'Page Background',\n }),\n pageMaxWidth: {\n type: 'select',\n label: 'Page Width',\n options: [\n { label: 'Use Layout Default', value: 'default' },\n { label: 'Narrow (720px)', value: '720px' },\n { label: 'Standard (1000px)', value: '1000px' },\n { label: 'Wide (1200px)', value: '1200px' },\n { label: 'Extra Wide (1400px)', value: '1400px' },\n { label: 'Full Width', value: '100%' },\n ],\n },\n },\n defaultProps: {\n slug: '',\n isHomepage: false,\n title: 'New Page',\n pageLayout: 'default',\n showHeader: 'default',\n showFooter: 'default',\n pageBackground: null,\n pageMaxWidth: 'default',\n },\n render: ({ children }: { children: ReactNode }) => <>{children}</>,\n },\n categories: {\n layout: {\n title: 'Layout',\n components: ['Container', 'Flex', 'Grid', 'Section', 'Spacer', 'Template'],\n defaultExpanded: true,\n },\n typography: {\n title: 'Typography',\n components: ['Heading', 'Text', 'RichText'],\n },\n media: {\n title: 'Media',\n components: ['Image'],\n },\n interactive: {\n title: 'Interactive',\n components: ['Button', 'Card', 'Divider', 'Accordion'],\n },\n },\n components: {\n // Layout\n Container: ContainerConfig as ComponentConfig<any>,\n Flex: FlexConfig as ComponentConfig<any>,\n Grid: GridConfig as ComponentConfig<any>,\n Section: SectionConfig as ComponentConfig<any>,\n Spacer: SpacerConfig as ComponentConfig<any>,\n Template: TemplateConfig as ComponentConfig<any>,\n // Typography\n Heading: HeadingConfig as ComponentConfig<any>,\n Text: TextConfig as ComponentConfig<any>,\n RichText: RichTextEditorConfig as ComponentConfig<any>, // Uses TipTap\n // Media\n Image: ImageConfig as ComponentConfig<any>,\n // Interactive\n Button: ButtonConfig as ComponentConfig<any>,\n Card: CardConfig as ComponentConfig<any>,\n Divider: DividerConfig as ComponentConfig<any>,\n Accordion: AccordionConfig as ComponentConfig<any>, // Client-only\n },\n} satisfies PuckConfig\n\n// Re-export merge utility for convenience\nexport { mergeConfigs } from './merge.js'\n\n// Re-export presets for extending configs\nexport {\n fullConfig,\n minimalConfig,\n defaultRoot,\n pageTreeRoot,\n extendConfig,\n} from './presets.js'\n"],"names":["createBackgroundField","lockedSlugField","lockedHomepageField","ContainerConfig","FlexConfig","GridConfig","SectionConfig","SpacerConfig","TemplateConfig","HeadingConfig","TextConfig","RichTextEditorConfig","ImageConfig","ButtonConfig","CardConfig","DividerConfig","AccordionConfig","editorConfig","root","fields","slug","isHomepage","title","type","label","pageLayout","options","value","showHeader","showFooter","pageBackground","pageMaxWidth","defaultProps","render","children","categories","layout","components","defaultExpanded","typography","media","interactive","Container","Flex","Grid","Section","Spacer","Template","Heading","Text","RichText","Image","Button","Card","Divider","Accordion","mergeConfigs","fullConfig","minimalConfig","defaultRoot","pageTreeRoot","extendConfig"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAmB,MAAM,kBAAkB,CAAA;AAE7E,OAAO,EAAqC,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAwB9F;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,gBAAgB,EAAoB,GAAG,UAAU,CA8DtF;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,YAAgC,CAAA;AAGvD,OAAO,EAAE,YAAY,EAAE,YAAY,IAAI,YAAY,EAAE,MAAM,YAAY,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAG1F,YAAY,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA"}
|
package/dist/config/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/index.tsx"],"sourcesContent":["/**\n * Server-safe Puck configuration\n *\n * This config is safe for server-side rendering and should be used\n * with the PageRenderer component.\n */\n\nimport type { Config as PuckConfig, ComponentConfig } from '@puckeditor/core'\nimport type { ReactNode } from 'react'\nimport { DEFAULT_LAYOUTS, layoutsToOptions, type LayoutDefinition } from '../layouts/index.js'\n\n// Layout Components (server-safe versions)\nimport { ContainerConfig } from '../components/layout/Container.server.js'\nimport { FlexConfig } from '../components/layout/Flex.server.js'\nimport { GridConfig } from '../components/layout/Grid.server.js'\nimport { SectionConfig } from '../components/layout/Section.server.js'\nimport { SpacerConfig } from '../components/layout/Spacer.server.js'\nimport { TemplateServerConfig } from '../components/layout/Template.server.js'\n\n// Typography Components (server-safe versions)\nimport { HeadingConfig } from '../components/typography/Heading.server.js'\nimport { TextConfig } from '../components/typography/Text.server.js'\nimport { RichTextConfig } from '../components/typography/RichText.server.js'\n\n// Media Components (server-safe versions)\nimport { ImageConfig } from '../components/media/Image.server.js'\n\n// Interactive Components (server-safe versions)\nimport { ButtonConfig } from '../components/interactive/Button.server.js'\nimport { CardConfig } from '../components/interactive/Card.server.js'\nimport { DividerConfig } from '../components/interactive/Divider.server.js'\nimport { AccordionConfig } from '../components/interactive/Accordion.server.js'\n\n/**\n * Creates a Puck configuration with custom layouts\n *\n * @param layouts - Custom layout definitions\n * @returns Puck configuration with the specified layouts\n *\n * @example\n * ```tsx\n * import { createConfig, DEFAULT_LAYOUTS, createLayout } from '@delmaredigital/payload-puck/config'\n *\n * const customConfig = createConfig([\n * ...DEFAULT_LAYOUTS,\n * createLayout({\n * value: 'blog',\n * label: 'Blog Post',\n * maxWidth: '720px',\n * }),\n * ])\n * ```\n */\nexport function createConfig(layouts: LayoutDefinition[] = DEFAULT_LAYOUTS): PuckConfig {\n const layoutOptions = layoutsToOptions(layouts)\n\n return {\n root: {\n fields: {\n title: {\n type: 'text',\n label: 'Page Title',\n },\n pageLayout: {\n type: 'select',\n label: 'Page Layout',\n options: layoutOptions.map(({ value, label }) => ({ value, label })),\n },\n },\n defaultProps: {\n title: 'New Page',\n pageLayout: 'default',\n },\n render: ({ children }: { children: ReactNode }) => <>{children}</>,\n },\n categories: {\n layout: {\n title: 'Layout',\n components: ['Container', 'Flex', 'Grid', 'Section', 'Spacer', 'Template'],\n defaultExpanded: true,\n },\n typography: {\n title: 'Typography',\n components: ['Heading', 'Text', 'RichText'],\n },\n media: {\n title: 'Media',\n components: ['Image'],\n },\n interactive: {\n title: 'Interactive',\n components: ['Button', 'Card', 'Divider', 'Accordion'],\n },\n },\n components: {\n // Layout\n Container: ContainerConfig as ComponentConfig<any>,\n Flex: FlexConfig as ComponentConfig<any>,\n Grid: GridConfig as ComponentConfig<any>,\n Section: SectionConfig as ComponentConfig<any>,\n Spacer: SpacerConfig as ComponentConfig<any>,\n Template: TemplateServerConfig as ComponentConfig<any>,\n // Typography\n Heading: HeadingConfig as ComponentConfig<any>,\n Text: TextConfig as ComponentConfig<any>,\n RichText: RichTextConfig as ComponentConfig<any>,\n // Media\n Image: ImageConfig as ComponentConfig<any>,\n // Interactive\n Button: ButtonConfig as ComponentConfig<any>,\n Card: CardConfig as ComponentConfig<any>,\n Divider: DividerConfig as ComponentConfig<any>,\n Accordion: AccordionConfig as ComponentConfig<any>,\n },\n } satisfies PuckConfig\n}\n\n/**\n * Base Puck configuration with server-safe component configs\n *\n * All components have server-safe versions (.server.tsx) that render\n * without client-side interactivity. Use editorConfig from ./config.editor\n * for the full interactive editor experience.\n *\n * For custom layouts, use createConfig() instead.\n */\nexport const baseConfig = createConfig(DEFAULT_LAYOUTS)\n\n// Re-export merge utility and layout helpers\nexport { mergeConfigs, mergeConfigs as extendConfig } from './merge.js'\nexport { DEFAULT_LAYOUTS, createLayout, type LayoutDefinition } from '../layouts/index.js'\n\n// Re-export server-specific types\nexport type { ServerComponentConfig, ServerRootConfig, SlotField } from './types.js'\n"],"names":["DEFAULT_LAYOUTS","layoutsToOptions","ContainerConfig","FlexConfig","GridConfig","SectionConfig","SpacerConfig","TemplateServerConfig","HeadingConfig","TextConfig","RichTextConfig","ImageConfig","ButtonConfig","CardConfig","DividerConfig","AccordionConfig","createConfig","layouts","layoutOptions","root","fields","title","type","label","pageLayout","options","map","value","defaultProps","render","children","categories","layout","components","defaultExpanded","typography","media","interactive","Container","Flex","Grid","Section","Spacer","Template","Heading","Text","RichText","Image","Button","Card","Divider","Accordion","baseConfig","mergeConfigs","extendConfig","createLayout"],"mappings":"AAAA;;;;;CAKC;AAID,SAASA,eAAe,EAAEC,gBAAgB,QAA+B,sBAAqB;AAE9F,2CAA2C;AAC3C,SAASC,eAAe,QAAQ,2CAA0C;AAC1E,SAASC,UAAU,QAAQ,sCAAqC;AAChE,SAASC,UAAU,QAAQ,sCAAqC;AAChE,SAASC,aAAa,QAAQ,yCAAwC;AACtE,SAASC,YAAY,QAAQ,wCAAuC;AACpE,SAASC,oBAAoB,QAAQ,0CAAyC;AAE9E,+CAA+C;AAC/C,SAASC,aAAa,QAAQ,6CAA4C;AAC1E,SAASC,UAAU,QAAQ,0CAAyC;AACpE,SAASC,cAAc,QAAQ,8CAA6C;AAE5E,0CAA0C;AAC1C,SAASC,WAAW,QAAQ,sCAAqC;AAEjE,gDAAgD;AAChD,SAASC,YAAY,QAAQ,6CAA4C;AACzE,SAASC,UAAU,QAAQ,2CAA0C;AACrE,SAASC,aAAa,QAAQ,8CAA6C;AAC3E,SAASC,eAAe,QAAQ,gDAA+C;AAE/E;;;;;;;;;;;;;;;;;;;CAmBC,GACD,OAAO,SAASC,aAAaC,UAA8BjB,eAAe;IACxE,MAAMkB,gBAAgBjB,iBAAiBgB;IAEvC,OAAO;QACLE,MAAM;YACJC,QAAQ;gBACNC,OAAO;oBACLC,MAAM;oBACNC,OAAO;gBACT;gBACAC,YAAY;oBACVF,MAAM;oBACNC,OAAO;oBACPE,SAASP,cAAcQ,GAAG,CAAC,CAAC,EAAEC,KAAK,EAAEJ,KAAK,EAAE,GAAM,CAAA;4BAAEI;4BAAOJ;wBAAM,CAAA;gBACnE;YACF;YACAK,cAAc;gBACZP,OAAO;gBACPG,YAAY;YACd;YACAK,QAAQ,CAAC,EAAEC,QAAQ,EAA2B,iBAAK;8BAAGA;;QACxD;QACAC,YAAY;YACVC,QAAQ;gBACNX,OAAO;gBACPY,YAAY;oBAAC;oBAAa;oBAAQ;oBAAQ;oBAAW;oBAAU;iBAAW;gBAC1EC,iBAAiB;YACnB;YACAC,YAAY;gBACVd,OAAO;gBACPY,YAAY;oBAAC;oBAAW;oBAAQ;iBAAW;YAC7C;YACAG,OAAO;gBACLf,OAAO;gBACPY,YAAY;oBAAC;iBAAQ;YACvB;YACAI,aAAa;gBACXhB,OAAO;gBACPY,YAAY;oBAAC;oBAAU;oBAAQ;oBAAW;iBAAY;YACxD;QACF;QACAA,YAAY;YACV,SAAS;YACTK,WAAWpC;YACXqC,MAAMpC;YACNqC,MAAMpC;YACNqC,SAASpC;YACTqC,QAAQpC;YACRqC,UAAUpC;YACV,aAAa;YACbqC,SAASpC;YACTqC,MAAMpC;YACNqC,UAAUpC;YACV,QAAQ;YACRqC,OAAOpC;YACP,cAAc;YACdqC,QAAQpC;YACRqC,MAAMpC;YACNqC,SAASpC;YACTqC,WAAWpC;QACb;IACF;AACF;AAEA;;;;;;;;CAQC,GACD,OAAO,MAAMqC,aAAapC,aAAahB,iBAAgB;AAEvD,6CAA6C;AAC7C,SAASqD,YAAY,EAAEA,gBAAgBC,YAAY,QAAQ,aAAY;AACvE,SAAStD,eAAe,EAAEuD,YAAY,QAA+B,sBAAqB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/config/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAE3D;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,UAAU,CAkEpE"}
|
package/dist/config/merge.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/merge.ts"],"sourcesContent":["import type { Config as PuckConfig } from '@puckeditor/core'\nimport type { MergeConfigOptions } from '../types/index.js'\n\n/**\n * Merges Puck configurations together\n *\n * @example\n * ```typescript\n * import { extendConfig, fullConfig } from '@delmaredigital/payload-puck/config/editor'\n *\n * const puckConfig = extendConfig({\n * base: fullConfig,\n * components: {\n * CustomHero: myHeroConfig,\n * },\n * categories: {\n * custom: { title: 'Custom', components: ['CustomHero'] },\n * },\n * exclude: ['CallToAction'], // Remove if not needed\n * })\n * ```\n */\nexport function mergeConfigs(options: MergeConfigOptions): PuckConfig {\n const { base, components = {}, categories = {}, root, exclude = [] } = options\n\n // Filter out excluded components from base\n const filteredBaseComponents = Object.fromEntries(\n Object.entries(base.components || {}).filter(([key]) => !exclude.includes(key))\n )\n\n // Merge categories\n const mergedCategories: PuckConfig['categories'] = {}\n\n // First, process base categories (filtering excluded components)\n for (const [key, category] of Object.entries(base.categories || {})) {\n if (category) {\n mergedCategories[key] = {\n ...category,\n components: category.components?.filter((c) => !exclude.includes(String(c))) || [],\n }\n }\n }\n\n // Then, merge in new categories\n for (const [key, category] of Object.entries(categories)) {\n if (category) {\n if (mergedCategories[key]) {\n // Merge with existing category\n mergedCategories[key] = {\n ...mergedCategories[key],\n ...category,\n components: [\n ...(mergedCategories[key]?.components || []),\n ...(category.components || []),\n ],\n }\n } else {\n // Add new category\n mergedCategories[key] = category\n }\n }\n }\n\n // Merge root config\n const mergedRoot = root\n ? {\n ...base.root,\n ...root,\n fields: {\n ...base.root?.fields,\n ...root.fields,\n },\n defaultProps: {\n ...base.root?.defaultProps,\n ...root.defaultProps,\n },\n }\n : base.root\n\n return {\n ...base,\n root: mergedRoot,\n categories: mergedCategories,\n components: {\n ...filteredBaseComponents,\n ...components,\n },\n }\n}\n"],"names":["mergeConfigs","options","base","components","categories","root","exclude","filteredBaseComponents","Object","fromEntries","entries","filter","key","includes","mergedCategories","category","c","String","mergedRoot","fields","defaultProps"],"mappings":"AAGA;;;;;;;;;;;;;;;;;;CAkBC,GACD,OAAO,SAASA,aAAaC,OAA2B;IACtD,MAAM,EAAEC,IAAI,EAAEC,aAAa,CAAC,CAAC,EAAEC,aAAa,CAAC,CAAC,EAAEC,IAAI,EAAEC,UAAU,EAAE,EAAE,GAAGL;IAEvE,2CAA2C;IAC3C,MAAMM,yBAAyBC,OAAOC,WAAW,CAC/CD,OAAOE,OAAO,CAACR,KAAKC,UAAU,IAAI,CAAC,GAAGQ,MAAM,CAAC,CAAC,CAACC,IAAI,GAAK,CAACN,QAAQO,QAAQ,CAACD;IAG5E,mBAAmB;IACnB,MAAME,mBAA6C,CAAC;IAEpD,iEAAiE;IACjE,KAAK,MAAM,CAACF,KAAKG,SAAS,IAAIP,OAAOE,OAAO,CAACR,KAAKE,UAAU,IAAI,CAAC,GAAI;QACnE,IAAIW,UAAU;YACZD,gBAAgB,CAACF,IAAI,GAAG;gBACtB,GAAGG,QAAQ;gBACXZ,YAAYY,SAASZ,UAAU,EAAEQ,OAAO,CAACK,IAAM,CAACV,QAAQO,QAAQ,CAACI,OAAOD,QAAQ,EAAE;YACpF;QACF;IACF;IAEA,gCAAgC;IAChC,KAAK,MAAM,CAACJ,KAAKG,SAAS,IAAIP,OAAOE,OAAO,CAACN,YAAa;QACxD,IAAIW,UAAU;YACZ,IAAID,gBAAgB,CAACF,IAAI,EAAE;gBACzB,+BAA+B;gBAC/BE,gBAAgB,CAACF,IAAI,GAAG;oBACtB,GAAGE,gBAAgB,CAACF,IAAI;oBACxB,GAAGG,QAAQ;oBACXZ,YAAY;2BACNW,gBAAgB,CAACF,IAAI,EAAET,cAAc,EAAE;2BACvCY,SAASZ,UAAU,IAAI,EAAE;qBAC9B;gBACH;YACF,OAAO;gBACL,mBAAmB;gBACnBW,gBAAgB,CAACF,IAAI,GAAGG;YAC1B;QACF;IACF;IAEA,oBAAoB;IACpB,MAAMG,aAAab,OACf;QACE,GAAGH,KAAKG,IAAI;QACZ,GAAGA,IAAI;QACPc,QAAQ;YACN,GAAGjB,KAAKG,IAAI,EAAEc,MAAM;YACpB,GAAGd,KAAKc,MAAM;QAChB;QACAC,cAAc;YACZ,GAAGlB,KAAKG,IAAI,EAAEe,YAAY;YAC1B,GAAGf,KAAKe,YAAY;QACtB;IACF,IACAlB,KAAKG,IAAI;IAEb,OAAO;QACL,GAAGH,IAAI;QACPG,MAAMa;QACNd,YAAYU;QACZX,YAAY;YACV,GAAGI,sBAAsB;YACzB,GAAGJ,UAAU;QACf;IACF;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/config/presets.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAwB,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AA2BtC;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAgEC;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE;CAC/C,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAwEA;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE;CAC/C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BArGE;YAAE,QAAQ,EAAE,SAAS,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;mBA4Hd,eAAe,CAAC,GAAG,CAAC;cAC9B,eAAe,CAAC,GAAG,CAAC;cACpB,eAAe,CAAC,GAAG,CAAC;iBACd,eAAe,CAAC,GAAG,CAAC;gBACtB,eAAe,CAAC,GAAG,CAAC;kBAChB,eAAe,CAAC,GAAG,CAAC;iBAEtB,eAAe,CAAC,GAAG,CAAC;cAC1B,eAAe,CAAC,GAAG,CAAC;kBACN,eAAe,CAAC,GAAG,CAAC;eAEhC,eAAe,CAAC,GAAG,CAAC;gBAElB,eAAe,CAAC,GAAG,CAAC;cACxB,eAAe,CAAC,GAAG,CAAC;iBACd,eAAe,CAAC,GAAG,CAAC;mBAChB,eAAe,CAAC,GAAG,CAAC;;CAEhC,CAAA;AAEtB;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BArJD;YAAE,QAAQ,EAAE,SAAS,CAAA;SAAE;;;;;;;;;;;;;;iBAmKlB,eAAe,CAAC,GAAG,CAAC;iBACpB,eAAe,CAAC,GAAG,CAAC;cAC1B,eAAe,CAAC,GAAG,CAAC;eAClB,eAAe,CAAC,GAAG,CAAC;gBAClB,eAAe,CAAC,GAAG,CAAC;;CAE1B,CAAA;AAGtB,OAAO,EAAE,YAAY,EAAE,YAAY,IAAI,YAAY,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/presets.tsx"],"sourcesContent":["'use client'\n\n/**\n * Pre-built Puck configuration presets\n *\n * These presets provide ready-to-use configurations that can be extended\n * with custom components.\n *\n * @example\n * ```tsx\n * import { fullConfig, extendConfig } from '@delmaredigital/payload-puck/config'\n * import { MyHeroConfig } from '@/components/puck/Hero'\n *\n * export const puckConfig = extendConfig({\n * base: fullConfig,\n * components: {\n * Hero: MyHeroConfig,\n * },\n * categories: {\n * custom: { title: 'Custom', components: ['Hero'] },\n * },\n * })\n * ```\n */\n\nimport type { Config as PuckConfig, ComponentConfig } from '@puckeditor/core'\nimport type { ReactNode } from 'react'\n\n// Import component configs\nimport {\n ContainerConfig,\n FlexConfig,\n GridConfig,\n SectionConfig,\n SpacerConfig,\n TemplateConfig,\n HeadingConfig,\n TextConfig,\n RichTextEditorConfig,\n ImageConfig,\n ButtonConfig,\n CardConfig,\n DividerConfig,\n AccordionConfig,\n} from '../components/exports.js'\n\n// Import field factories for root config\nimport { createBackgroundField } from '../fields/BackgroundField.js'\nimport { lockedSlugField, lockedHomepageField } from '../fields/LockedField.js'\nimport { createFolderPickerField } from '../fields/FolderPickerField.js'\nimport { createLockedPageSegmentField } from '../fields/PageSegmentField.js'\nimport { createSlugPreviewField } from '../fields/SlugPreviewField.js'\n\n/**\n * Default root configuration used by presets\n */\nexport const defaultRoot = {\n fields: {\n // Page identity (locked fields)\n slug: lockedSlugField,\n isHomepage: lockedHomepageField,\n // Page settings\n title: {\n type: 'text' as const,\n label: 'Page Title',\n },\n pageLayout: {\n type: 'select' as const,\n label: 'Page Layout',\n options: [\n { label: 'Default', value: 'default' },\n { label: 'Landing', value: 'landing' },\n { label: 'Full Width', value: 'full-width' },\n ],\n },\n // Page-level overrides\n showHeader: {\n type: 'radio' as const,\n label: 'Show Header',\n options: [\n { label: 'Use Layout Default', value: 'default' },\n { label: 'Show', value: 'show' },\n { label: 'Hide', value: 'hide' },\n ],\n },\n showFooter: {\n type: 'radio' as const,\n label: 'Show Footer',\n options: [\n { label: 'Use Layout Default', value: 'default' },\n { label: 'Show', value: 'show' },\n { label: 'Hide', value: 'hide' },\n ],\n },\n pageBackground: createBackgroundField({\n label: 'Page Background',\n }),\n pageMaxWidth: {\n type: 'select' as const,\n label: 'Page Width',\n options: [\n { label: 'Use Layout Default', value: 'default' },\n { label: 'Narrow (720px)', value: '720px' },\n { label: 'Standard (1000px)', value: '1000px' },\n { label: 'Wide (1200px)', value: '1200px' },\n { label: 'Extra Wide (1400px)', value: '1400px' },\n { label: 'Full Width', value: '100%' },\n ],\n },\n },\n defaultProps: {\n slug: '',\n isHomepage: false,\n title: 'New Page',\n pageLayout: 'default',\n showHeader: 'default',\n showFooter: 'default',\n pageBackground: null,\n pageMaxWidth: 'default',\n },\n render: ({ children }: { children: ReactNode }) => <>{children}</>,\n}\n\n/**\n * Root configuration for use with @delmaredigital/payload-page-tree\n *\n * Replaces the standard locked slug field with:\n * - Folder picker (select which folder the page belongs to)\n * - Page segment (editable URL segment for this page)\n * - Slug preview (read-only computed URL)\n *\n * @example\n * ```tsx\n * import { pageTreeRoot, fullConfig, extendConfig } from '@delmaredigital/payload-puck/config'\n *\n * export const puckConfig = extendConfig({\n * base: fullConfig,\n * root: pageTreeRoot,\n * })\n * ```\n */\nexport const pageTreeRoot = {\n fields: {\n // Page identity\n title: {\n type: 'text' as const,\n label: 'Page Title',\n },\n // Page-tree specific fields\n folder: createFolderPickerField({ label: 'Folder' }),\n pageSegment: createLockedPageSegmentField({ label: 'Page Segment' }),\n slug: createSlugPreviewField({\n label: 'URL Slug',\n hint: 'Auto-generated from folder + page segment',\n }),\n isHomepage: lockedHomepageField,\n // Page settings\n pageLayout: {\n type: 'select' as const,\n label: 'Page Layout',\n options: [\n { label: 'Default', value: 'default' },\n { label: 'Landing', value: 'landing' },\n { label: 'Full Width', value: 'full-width' },\n ],\n },\n // Page-level overrides\n showHeader: {\n type: 'radio' as const,\n label: 'Show Header',\n options: [\n { label: 'Use Layout Default', value: 'default' },\n { label: 'Show', value: 'show' },\n { label: 'Hide', value: 'hide' },\n ],\n },\n showFooter: {\n type: 'radio' as const,\n label: 'Show Footer',\n options: [\n { label: 'Use Layout Default', value: 'default' },\n { label: 'Show', value: 'show' },\n { label: 'Hide', value: 'hide' },\n ],\n },\n pageBackground: createBackgroundField({\n label: 'Page Background',\n }),\n pageMaxWidth: {\n type: 'select' as const,\n label: 'Page Width',\n options: [\n { label: 'Use Layout Default', value: 'default' },\n { label: 'Narrow (720px)', value: '720px' },\n { label: 'Standard (1000px)', value: '1000px' },\n { label: 'Wide (1200px)', value: '1200px' },\n { label: 'Extra Wide (1400px)', value: '1400px' },\n { label: 'Full Width', value: '100%' },\n ],\n },\n },\n defaultProps: {\n title: 'New Page',\n folder: null,\n pageSegment: '',\n slug: '',\n isHomepage: false,\n pageLayout: 'default',\n showHeader: 'default',\n showFooter: 'default',\n pageBackground: null,\n pageMaxWidth: 'default',\n },\n render: ({ children }: { children: ReactNode }) => <>{children}</>,\n}\n\n/**\n * Full configuration with all built-in components\n *\n * Use this as a base and extend with custom components via `extendConfig()`.\n */\nexport const fullConfig = {\n root: defaultRoot,\n categories: {\n layout: {\n title: 'Layout',\n components: ['Container', 'Flex', 'Grid', 'Section', 'Spacer', 'Template'],\n defaultExpanded: true,\n },\n typography: {\n title: 'Typography',\n components: ['Heading', 'Text', 'RichText'],\n },\n media: {\n title: 'Media',\n components: ['Image'],\n },\n interactive: {\n title: 'Interactive',\n components: ['Button', 'Card', 'Divider', 'Accordion'],\n },\n },\n components: {\n // Layout\n Container: ContainerConfig as ComponentConfig<any>,\n Flex: FlexConfig as ComponentConfig<any>,\n Grid: GridConfig as ComponentConfig<any>,\n Section: SectionConfig as ComponentConfig<any>,\n Spacer: SpacerConfig as ComponentConfig<any>,\n Template: TemplateConfig as ComponentConfig<any>,\n // Typography\n Heading: HeadingConfig as ComponentConfig<any>,\n Text: TextConfig as ComponentConfig<any>,\n RichText: RichTextEditorConfig as ComponentConfig<any>,\n // Media\n Image: ImageConfig as ComponentConfig<any>,\n // Interactive\n Button: ButtonConfig as ComponentConfig<any>,\n Card: CardConfig as ComponentConfig<any>,\n Divider: DividerConfig as ComponentConfig<any>,\n Accordion: AccordionConfig as ComponentConfig<any>,\n },\n} satisfies PuckConfig\n\n/**\n * Minimal configuration with essential components only\n *\n * Good for simple landing pages or when you want a cleaner editor sidebar.\n */\nexport const minimalConfig = {\n root: defaultRoot,\n categories: {\n layout: {\n title: 'Layout',\n components: ['Section'],\n defaultExpanded: true,\n },\n content: {\n title: 'Content',\n components: ['Heading', 'Text', 'Image', 'Button'],\n },\n },\n components: {\n Section: SectionConfig as ComponentConfig<any>,\n Heading: HeadingConfig as ComponentConfig<any>,\n Text: TextConfig as ComponentConfig<any>,\n Image: ImageConfig as ComponentConfig<any>,\n Button: ButtonConfig as ComponentConfig<any>,\n },\n} satisfies PuckConfig\n\n// Re-export mergeConfigs as extendConfig for convenience\nexport { mergeConfigs, mergeConfigs as extendConfig } from './merge.js'\n"],"names":["ContainerConfig","FlexConfig","GridConfig","SectionConfig","SpacerConfig","TemplateConfig","HeadingConfig","TextConfig","RichTextEditorConfig","ImageConfig","ButtonConfig","CardConfig","DividerConfig","AccordionConfig","createBackgroundField","lockedSlugField","lockedHomepageField","createFolderPickerField","createLockedPageSegmentField","createSlugPreviewField","defaultRoot","fields","slug","isHomepage","title","type","label","pageLayout","options","value","showHeader","showFooter","pageBackground","pageMaxWidth","defaultProps","render","children","pageTreeRoot","folder","pageSegment","hint","fullConfig","root","categories","layout","components","defaultExpanded","typography","media","interactive","Container","Flex","Grid","Section","Spacer","Template","Heading","Text","RichText","Image","Button","Card","Divider","Accordion","minimalConfig","content","mergeConfigs","extendConfig"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,WAAW,qBAAqB,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACpE;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,YAAY,CAAC,EAAE,KAAK,CAAA;IAEpB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAElC;;;;;;;OAOG;IACH,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG;QAAE,IAAI,CAAC,EAAE;YAAE,SAAS,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,SAAS,CAAA;CACtF;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB,CAC/B,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE/D;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IAE7B;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAA;IAEd;;OAEG;IACH,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,KAAK,SAAS,CAAA;CAC9D"}
|
package/dist/config/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/types.ts"],"sourcesContent":["/**\n * Server-specific Puck configuration types\n *\n * These types are designed for server-side rendering where field definitions\n * are not needed (only the render function matters).\n */\n\nimport type { ReactNode } from 'react'\n\n/**\n * Slot field definition - the only field type needed in server configs\n *\n * When a component has child content (slots), Puck needs the slot field\n * defined so it can transform the slot data into a renderable component.\n */\nexport interface SlotField {\n type: 'slot'\n}\n\n/**\n * Server-safe component configuration\n *\n * Use this type for component configs in `.server.tsx` files.\n * Unlike Puck's full `ComponentConfig`, this type:\n * - Makes `fields` truly optional (no TypeScript pressure to define them)\n * - Only expects slot fields when components have child content\n * - Focuses on what servers actually need: `render` and `defaultProps`\n *\n * @example\n * ```tsx\n * // Component WITHOUT slots - no fields needed\n * import type { ServerComponentConfig } from '@delmaredigital/payload-puck/config'\n *\n * export const ButtonConfig: ServerComponentConfig<ButtonProps> = {\n * label: 'Button',\n * defaultProps,\n * render: ({ text, link }) => <a href={link}>{text}</a>\n * }\n * ```\n *\n * @example\n * ```tsx\n * // Component WITH slots - only slot field needed\n * import type { ServerComponentConfig } from '@delmaredigital/payload-puck/config'\n *\n * export const SectionConfig: ServerComponentConfig<SectionProps> = {\n * label: 'Section',\n * fields: { content: { type: 'slot' } },\n * defaultProps,\n * render: ({ content: Content }) => <section><Content /></section>\n * }\n * ```\n */\nexport interface ServerComponentConfig<Props = Record<string, unknown>> {\n /**\n * Display label for the component in the editor sidebar\n */\n label?: string\n\n /**\n * Default prop values for new instances of this component\n */\n defaultProps?: Props\n\n /**\n * Slot fields only - define these when your component has child content areas\n *\n * For server configs, you only need to define slot fields. Other field types\n * (text, number, select, etc.) are only used by the editor and can be omitted.\n *\n * @example\n * ```tsx\n * fields: {\n * content: { type: 'slot' }, // Main content area\n * sidebar: { type: 'slot' }, // Optional sidebar slot\n * }\n * ```\n */\n fields?: Record<string, SlotField>\n\n /**\n * Render function for the component\n *\n * This is called during server-side rendering. Must be a pure function\n * without React hooks or client-side interactivity.\n *\n * Slot props are transformed by Puck into renderable components.\n */\n render: (props: Props & { puck?: { isEditing?: boolean }; id?: string }) => ReactNode\n}\n\n/**\n * Server-safe root configuration\n *\n * Use this for the root config in server-side Puck configurations.\n */\nexport interface ServerRootConfig<\n Props extends Record<string, unknown> = Record<string, unknown>,\n> {\n /**\n * Default prop values for the root\n */\n defaultProps?: Partial<Props>\n\n /**\n * Root fields are not needed for server rendering\n */\n fields?: never\n\n /**\n * Render function for the root wrapper\n */\n render: (props: Props & { children: ReactNode }) => ReactNode\n}\n"],"names":[],"mappings":"AAAA;;;;;CAKC,GAsFD;;;;CAIC,GACD,WAiBC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PuckEditor.d.ts","sourceRoot":"","sources":["../../src/editor/PuckEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/editor/PuckEditor.tsx"],"sourcesContent":["'use client'\n\nimport { useMemo } from 'react'\nimport dynamic from 'next/dynamic'\nimport type { Config as PuckConfig, Data, Plugin as PuckPlugin, Overrides as PuckOverrides } from '@puckeditor/core'\nimport type { ReactNode } from 'react'\nimport type { LayoutStyle } from './components/IframeWrapper.js'\nimport type { ThemeConfig } from '../theme/index.js'\nimport type { LayoutDefinition } from '../layouts/index.js'\nimport type { AiExamplePrompt, ComponentAiOverrides } from '../ai/types.js'\nimport { LoadingState } from './components/LoadingState.js'\nimport { injectPageTreeFields } from './utils/injectPageTreeFields.js'\nimport { hasPageTreeFields } from './utils/detectPageTree.js'\nimport { usePuckConfig } from '../views/PuckConfigContext.js'\nimport { injectAiConfig, hasAiConfig } from '../ai/utils/injectAiConfig.js'\nimport { comprehensiveComponentAiConfig } from '../ai/presets/index.js'\n\n// Dynamic import with ssr: false to prevent hydration mismatch\n// Puck generates random IDs for drag-and-drop that differ between server/client\nconst PuckEditorImpl = dynamic(\n () => import('./PuckEditorImpl.client.js').then((mod) => mod.PuckEditorImpl),\n {\n ssr: false,\n loading: () => <LoadingState />,\n }\n)\n\nexport interface PuckEditorProps {\n /**\n * Page ID for save operations\n */\n pageId: string\n /**\n * Initial Puck data to load\n */\n initialData: Data\n /**\n * Puck configuration with components and settings.\n * If not provided, will attempt to read from PuckConfigContext.\n */\n config?: PuckConfig\n /**\n * Page title for display\n */\n pageTitle: string\n /**\n * Page slug for preview URL\n */\n pageSlug: string\n /**\n * API endpoint for save operations\n * @default '/api/puck/pages'\n */\n apiEndpoint?: string\n /**\n * URL to navigate to when back button is clicked\n */\n backUrl?: string\n /**\n * Preview URL or function to generate preview URL from slug\n */\n previewUrl?: string | ((slug: string) => string)\n /**\n * URL prefix for preview (e.g., '/acme' for org-scoped pages).\n * When provided, the preview URL will be built as:\n * - Homepage: `{prefix}`\n * - Regular pages: `{prefix}/{slug}`\n * This is useful for Server Components where functions can't be passed.\n */\n previewUrlPrefix?: string\n /**\n * Whether to enable viewport switching\n * @default true\n */\n enableViewports?: boolean\n /**\n * Additional Puck plugins to use.\n * The headingAnalyzer plugin is included by default.\n * Set to `false` to disable all default plugins.\n */\n plugins?: PuckPlugin[] | false\n /**\n * Layout definitions for the editor preview.\n * The editor reads header, footer, editorBackground, and editorDarkMode\n * from the layout definition matching the selected pageLayout.\n */\n layouts?: LayoutDefinition[]\n /**\n * Layout style configurations for theme-aware preview\n * @deprecated Use `layouts` prop instead. layoutStyles will be removed in a future version.\n */\n layoutStyles?: Record<string, LayoutStyle>\n /**\n * Key in root.props to read layout value from\n * @default 'pageLayout'\n */\n layoutKey?: string\n /**\n * Custom actions to render at the start of the header\n */\n headerActionsStart?: ReactNode\n /**\n * Custom actions to render at the end of the header\n */\n headerActionsEnd?: ReactNode\n /**\n * Puck overrides to merge with defaults\n */\n overrides?: Partial<PuckOverrides>\n /**\n * Callback on successful save\n */\n onSaveSuccess?: (data: Data) => void\n /**\n * Callback on save error\n */\n onSaveError?: (error: Error) => void\n /**\n * Callback when data changes\n */\n onChange?: (data: Data) => void\n /**\n * Initial document status from Payload (_status field)\n * Automatically populated when using PuckEditorView\n */\n initialStatus?: 'draft' | 'published'\n /**\n * Theme configuration for customizing component styles\n * When provided, components will use themed styles\n */\n theme?: ThemeConfig\n\n // Page-tree integration props\n\n /**\n * Enable page-tree integration (folder picker, page segment, computed slug).\n * When true, injects folder/pageSegment/slug fields into root config.\n * Requires @delmaredigital/payload-page-tree plugin to be installed.\n * @default false\n */\n hasPageTree?: boolean\n /**\n * Initial folder ID for page-tree integration.\n * Only used when hasPageTree is true.\n */\n folder?: string | null\n /**\n * Initial page segment for page-tree integration.\n * Only used when hasPageTree is true.\n */\n pageSegment?: string\n\n // Editor iframe styling props\n\n /**\n * Stylesheet URLs to inject into the editor iframe.\n * Use this to provide frontend CSS (Tailwind, CSS variables, etc.)\n * that header/footer components need for proper styling.\n * Takes precedence over stylesheets from PuckConfigProvider.\n *\n * @example\n * ```tsx\n * <PuckEditor\n * editorStylesheets={['/editor-styles.css']}\n * // ...\n * />\n * ```\n */\n editorStylesheets?: string[]\n /**\n * Raw CSS to inject into the editor iframe.\n * Useful for CSS variables or style overrides.\n * Takes precedence over CSS from PuckConfigProvider.\n *\n * @example\n * ```tsx\n * <PuckEditor\n * editorCss=\":root { --primary: blue; }\"\n * // ...\n * />\n * ```\n */\n editorCss?: string\n\n // AI integration props\n\n /**\n * Enable AI features in the editor.\n * When true, adds the AI chat plugin to the editor.\n * Requires @puckeditor/plugin-ai to be installed and\n * PUCK_API_KEY environment variable to be set.\n * @default false\n */\n enableAi?: boolean\n\n /**\n * AI plugin configuration options.\n * Only used when enableAi is true.\n */\n aiOptions?: {\n /**\n * API host for AI requests.\n * @default '/api/puck/ai'\n */\n host?: string\n /**\n * Example prompts to show in the chat interface.\n * Users can click these to quickly send common prompts.\n */\n examplePrompts?: AiExamplePrompt[]\n }\n\n /**\n * Example prompts from plugin config.\n * These are merged with aiOptions.examplePrompts if both are provided.\n * Typically set automatically by PuckEditorView from plugin config.\n */\n aiExamplePrompts?: AiExamplePrompt[]\n\n /**\n * Whether the puck-ai-prompts collection is enabled.\n * When true, the prompt editor plugin is added to the plugin rail.\n * Typically set automatically by PuckEditorView from plugin config.\n */\n hasPromptsCollection?: boolean\n\n /**\n * Whether the puck-ai-context collection is enabled.\n * When true, the context editor plugin is added to the plugin rail.\n * Typically set automatically by PuckEditorView from plugin config.\n */\n hasContextCollection?: boolean\n\n /**\n * Custom component AI instructions to override or extend defaults.\n * When AI is enabled, built-in component instructions are auto-applied.\n * Use this to customize instructions for your brand/use case.\n * Typically set automatically by PuckEditorView from plugin config.\n */\n aiComponentInstructions?: ComponentAiOverrides\n\n /**\n * Enable experimental full screen canvas mode.\n * When enabled, the canvas takes up the full viewport with a floating viewport switcher.\n * This is an experimental Puck feature.\n * @default false\n */\n experimentalFullScreenCanvas?: boolean\n\n // Dark mode props\n\n /**\n * Auto-detect dark mode from PayloadCMS admin.\n * When true (default), dark mode CSS is automatically injected when Payload is in dark mode.\n * Set to false to disable automatic dark mode detection.\n * @default true\n */\n autoDetectDarkMode?: boolean\n\n /**\n * Show the preview dark mode toggle near the viewport switcher.\n * Allows toggling the preview iframe between light/dark modes independently.\n * @default true\n */\n showPreviewDarkModeToggle?: boolean\n\n /**\n * Initial state for the preview dark mode toggle.\n * Only used when showPreviewDarkModeToggle is true.\n * @default false (light mode)\n */\n initialPreviewDarkMode?: boolean\n}\n\n/**\n * Puck Editor - The primary editor component\n *\n * A full-featured visual page builder with:\n * - Save draft and publish functionality\n * - Unsaved changes tracking with beforeunload warning\n * - Interactive/Edit mode toggle\n * - Theme-aware preview backgrounds\n * - Responsive viewport switching\n * - Optional page-tree integration (folder-based URL structure)\n *\n * @example Basic usage\n * ```tsx\n * 'use client'\n *\n * import { PuckEditor } from '@delmaredigital/payload-puck/editor'\n * import { editorConfig } from '@delmaredigital/payload-puck/config/editor'\n *\n * export function PageEditor({ page }) {\n * return (\n * <PuckEditor\n * pageId={page.id}\n * initialData={page.puckData}\n * config={editorConfig}\n * pageTitle={page.title}\n * pageSlug={page.slug}\n * apiEndpoint=\"/api/puck/pages\"\n * backUrl=\"/admin/pages\"\n * />\n * )\n * }\n * ```\n *\n * @example With page-tree integration\n * ```tsx\n * <PuckEditor\n * pageId={page.id}\n * initialData={page.puckData}\n * config={editorConfig}\n * pageTitle={page.title}\n * pageSlug={page.slug}\n * apiEndpoint=\"/api/puck/pages\"\n * hasPageTree={true}\n * folder={page.folder}\n * pageSegment={page.pageSegment}\n * />\n * ```\n */\nexport function PuckEditor({\n pageId,\n initialData,\n config: configProp,\n pageTitle,\n pageSlug,\n apiEndpoint,\n backUrl,\n previewUrl,\n previewUrlPrefix,\n enableViewports,\n plugins,\n layouts: layoutsProp,\n layoutStyles,\n layoutKey,\n headerActionsStart,\n headerActionsEnd,\n overrides,\n onSaveSuccess,\n onSaveError,\n onChange,\n initialStatus,\n theme: themeProp,\n // Page-tree props\n hasPageTree = false,\n folder,\n pageSegment,\n // Editor iframe styling props\n editorStylesheets: editorStylesheetsProp,\n editorCss: editorCssProp,\n // AI integration props\n enableAi = false,\n aiOptions,\n aiExamplePrompts,\n hasPromptsCollection = false,\n hasContextCollection = false,\n aiComponentInstructions,\n experimentalFullScreenCanvas = false,\n // Dark mode props\n autoDetectDarkMode = true,\n showPreviewDarkModeToggle = true,\n initialPreviewDarkMode = false,\n}: PuckEditorProps) {\n // Get config from context as fallback\n const {\n config: configFromContext,\n layouts: layoutsFromContext,\n theme: themeFromContext,\n plugins: pluginsFromContext,\n editorStylesheets: editorStylesheetsFromContext,\n editorCss: editorCssFromContext,\n } = usePuckConfig()\n\n // Use prop config if provided, otherwise fall back to context\n const baseConfig = configProp || configFromContext\n const theme = themeProp || themeFromContext\n\n // Merge plugins from props and context\n // Props take precedence and are added first, context plugins follow\n const mergedPlugins = useMemo(() => {\n // If plugins prop is false, disable all plugins (including context ones)\n if (plugins === false) return false\n // If plugins prop is provided (not undefined), it takes precedence\n // But also include context plugins\n const propPlugins = plugins || []\n const contextPlugins = pluginsFromContext || []\n const combined = [...propPlugins, ...contextPlugins]\n return combined.length > 0 ? combined : undefined\n }, [plugins, pluginsFromContext])\n\n // Props take precedence over context for editor stylesheets\n const editorStylesheets = editorStylesheetsProp || editorStylesheetsFromContext\n const editorCss = editorCssProp || editorCssFromContext\n\n // Merge layouts from props and context\n // Props may have metadata (value, label, editorBackground) but no React components\n // Context may have React components (header, footer) that can't be serialized through props\n // Merge by matching on 'value', combining properties, preferring context for components\n const layouts = useMemo(() => {\n // If no layouts from either source, return undefined\n if (!layoutsProp && !layoutsFromContext) return undefined\n // If only one source, use it\n if (!layoutsProp) return layoutsFromContext\n if (!layoutsFromContext) return layoutsProp\n\n // Merge: for each prop layout, find matching context layout and combine\n return layoutsProp.map((propLayout) => {\n const contextLayout = layoutsFromContext.find((c) => c.value === propLayout.value)\n if (!contextLayout) return propLayout\n\n // Combine: prop values first, then context values (context provides components)\n return {\n ...propLayout,\n // Context provides React components (these can't be serialized through server props)\n header: propLayout.header || contextLayout.header,\n footer: propLayout.footer || contextLayout.footer,\n // Context may also provide other values not in props\n editorBackground: propLayout.editorBackground || contextLayout.editorBackground,\n editorDarkMode: propLayout.editorDarkMode ?? contextLayout.editorDarkMode,\n stickyHeaderHeight: propLayout.stickyHeaderHeight ?? contextLayout.stickyHeaderHeight,\n styles: propLayout.styles || contextLayout.styles,\n }\n })\n }, [layoutsProp, layoutsFromContext])\n\n // Conditionally inject page-tree fields and AI config into config\n const finalConfig = useMemo(() => {\n if (!baseConfig) return null\n\n let config = baseConfig\n\n // Inject AI component instructions when AI is enabled\n if (enableAi && !hasAiConfig(config)) {\n // Merge comprehensive instructions with user-provided overrides\n const mergedAiConfig = aiComponentInstructions\n ? { ...comprehensiveComponentAiConfig, ...aiComponentInstructions }\n : comprehensiveComponentAiConfig\n\n config = injectAiConfig(config, mergedAiConfig)\n }\n\n // Inject page-tree fields if enabled\n if (hasPageTree && !hasPageTreeFields(config)) {\n config = injectPageTreeFields(config)\n }\n\n return config\n }, [baseConfig, hasPageTree, enableAi, aiComponentInstructions])\n\n // Merge page-tree initial values into initialData\n const finalInitialData = useMemo(() => {\n if (!hasPageTree) return initialData\n\n return {\n ...initialData,\n root: {\n ...initialData.root,\n props: {\n ...(initialData.root as any)?.props,\n // Only set if provided and hasPageTree is true\n ...(folder !== undefined && { folder }),\n ...(pageSegment !== undefined && { pageSegment }),\n },\n },\n }\n }, [initialData, hasPageTree, folder, pageSegment])\n\n // Show error if no config available\n if (!finalConfig) {\n return (\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n height: 'calc(100vh - 120px)',\n padding: '40px',\n textAlign: 'center',\n }}\n >\n <div\n style={{\n backgroundColor: 'var(--theme-elevation-50)',\n border: '1px solid var(--theme-elevation-150)',\n borderRadius: '8px',\n padding: '32px 48px',\n maxWidth: '560px',\n }}\n >\n <h2\n style={{\n color: 'var(--theme-elevation-800)',\n fontSize: '18px',\n fontWeight: 600,\n margin: '0 0 12px 0',\n }}\n >\n Puck Configuration Required\n </h2>\n <p\n style={{\n color: 'var(--theme-elevation-500)',\n fontSize: '14px',\n lineHeight: 1.6,\n margin: '0 0 16px 0',\n }}\n >\n Either pass <code style={{ backgroundColor: 'var(--theme-elevation-100)', padding: '2px 6px', borderRadius: '4px', fontSize: '13px' }}>config</code> prop directly, or wrap your application with{' '}\n <code style={{ backgroundColor: 'var(--theme-elevation-100)', padding: '2px 6px', borderRadius: '4px', fontSize: '13px' }}>PuckConfigProvider</code>\n </p>\n <pre\n style={{\n backgroundColor: 'var(--theme-elevation-100)',\n padding: '16px',\n borderRadius: '6px',\n fontSize: '12px',\n textAlign: 'left',\n overflow: 'auto',\n margin: 0,\n }}\n >\n{`// Option 1: Pass config directly\n<PuckEditor config={editorConfig} ... />\n\n// Option 2: Use context provider\n<PuckConfigProvider config={editorConfig}>\n <PuckEditor ... />\n</PuckConfigProvider>`}\n </pre>\n </div>\n </div>\n )\n }\n\n // Merge example prompts from plugin config and aiOptions prop\n const mergedAiOptions = useMemo(() => {\n if (!enableAi) return undefined\n\n const mergedPrompts = [\n ...(aiExamplePrompts || []),\n ...(aiOptions?.examplePrompts || []),\n ]\n\n return {\n host: aiOptions?.host || '/api/puck/ai',\n examplePrompts: mergedPrompts.length > 0 ? mergedPrompts : undefined,\n }\n }, [enableAi, aiExamplePrompts, aiOptions])\n\n // Compute preview URL from prefix (for Server Component compatibility)\n // previewUrlPrefix takes precedence if provided\n const finalPreviewUrl = useMemo(() => {\n if (previewUrlPrefix) {\n // Convert prefix to a function that builds the full URL\n return (slug: string) => (slug ? `${previewUrlPrefix}/${slug}` : previewUrlPrefix)\n }\n return previewUrl\n }, [previewUrlPrefix, previewUrl])\n\n return (\n <PuckEditorImpl\n pageId={pageId}\n initialData={finalInitialData}\n config={finalConfig}\n pageTitle={pageTitle}\n pageSlug={pageSlug}\n apiEndpoint={apiEndpoint}\n backUrl={backUrl}\n previewUrl={finalPreviewUrl}\n enableViewports={enableViewports}\n plugins={mergedPlugins}\n layouts={layouts}\n layoutStyles={layoutStyles}\n layoutKey={layoutKey}\n headerActionsStart={headerActionsStart}\n headerActionsEnd={headerActionsEnd}\n overrides={overrides}\n onSaveSuccess={onSaveSuccess}\n onSaveError={onSaveError}\n onChange={onChange}\n initialStatus={initialStatus}\n theme={theme}\n editorStylesheets={editorStylesheets}\n editorCss={editorCss}\n enableAi={enableAi}\n aiOptions={mergedAiOptions}\n hasPromptsCollection={hasPromptsCollection}\n hasContextCollection={hasContextCollection}\n experimentalFullScreenCanvas={experimentalFullScreenCanvas}\n autoDetectDarkMode={autoDetectDarkMode}\n showPreviewDarkModeToggle={showPreviewDarkModeToggle}\n initialPreviewDarkMode={initialPreviewDarkMode}\n />\n )\n}\n"],"names":["useMemo","dynamic","LoadingState","injectPageTreeFields","hasPageTreeFields","usePuckConfig","injectAiConfig","hasAiConfig","comprehensiveComponentAiConfig","PuckEditorImpl","then","mod","ssr","loading","PuckEditor","pageId","initialData","config","configProp","pageTitle","pageSlug","apiEndpoint","backUrl","previewUrl","previewUrlPrefix","enableViewports","plugins","layouts","layoutsProp","layoutStyles","layoutKey","headerActionsStart","headerActionsEnd","overrides","onSaveSuccess","onSaveError","onChange","initialStatus","theme","themeProp","hasPageTree","folder","pageSegment","editorStylesheets","editorStylesheetsProp","editorCss","editorCssProp","enableAi","aiOptions","aiExamplePrompts","hasPromptsCollection","hasContextCollection","aiComponentInstructions","experimentalFullScreenCanvas","autoDetectDarkMode","showPreviewDarkModeToggle","initialPreviewDarkMode","configFromContext","layoutsFromContext","themeFromContext","pluginsFromContext","editorStylesheetsFromContext","editorCssFromContext","baseConfig","mergedPlugins","propPlugins","contextPlugins","combined","length","undefined","map","propLayout","contextLayout","find","c","value","header","footer","editorBackground","editorDarkMode","stickyHeaderHeight","styles","finalConfig","mergedAiConfig","finalInitialData","root","props","div","style","display","flexDirection","alignItems","justifyContent","height","padding","textAlign","backgroundColor","border","borderRadius","maxWidth","h2","color","fontSize","fontWeight","margin","p","lineHeight","code","pre","overflow","mergedAiOptions","mergedPrompts","examplePrompts","host","finalPreviewUrl","slug"],"mappings":"AAAA;;AAEA,SAASA,OAAO,QAAQ,QAAO;AAC/B,OAAOC,aAAa,eAAc;AAOlC,SAASC,YAAY,QAAQ,+BAA8B;AAC3D,SAASC,oBAAoB,QAAQ,kCAAiC;AACtE,SAASC,iBAAiB,QAAQ,4BAA2B;AAC7D,SAASC,aAAa,QAAQ,gCAA+B;AAC7D,SAASC,cAAc,EAAEC,WAAW,QAAQ,gCAA+B;AAC3E,SAASC,8BAA8B,QAAQ,yBAAwB;AAEvE,+DAA+D;AAC/D,gFAAgF;AAChF,MAAMC,iBAAiBR,QACrB,IAAM,MAAM,CAAC,8BAA8BS,IAAI,CAAC,CAACC,MAAQA,IAAIF,cAAc,GAC3E;IACEG,KAAK;IACLC,SAAS,kBAAM,KAACX;AAClB;AA0PF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CC,GACD,OAAO,SAASY,WAAW,EACzBC,MAAM,EACNC,WAAW,EACXC,QAAQC,UAAU,EAClBC,SAAS,EACTC,QAAQ,EACRC,WAAW,EACXC,OAAO,EACPC,UAAU,EACVC,gBAAgB,EAChBC,eAAe,EACfC,OAAO,EACPC,SAASC,WAAW,EACpBC,YAAY,EACZC,SAAS,EACTC,kBAAkB,EAClBC,gBAAgB,EAChBC,SAAS,EACTC,aAAa,EACbC,WAAW,EACXC,QAAQ,EACRC,aAAa,EACbC,OAAOC,SAAS,EAChB,kBAAkB;AAClBC,cAAc,KAAK,EACnBC,MAAM,EACNC,WAAW,EACX,8BAA8B;AAC9BC,mBAAmBC,qBAAqB,EACxCC,WAAWC,aAAa,EACxB,uBAAuB;AACvBC,WAAW,KAAK,EAChBC,SAAS,EACTC,gBAAgB,EAChBC,uBAAuB,KAAK,EAC5BC,uBAAuB,KAAK,EAC5BC,uBAAuB,EACvBC,+BAA+B,KAAK,EACpC,kBAAkB;AAClBC,qBAAqB,IAAI,EACzBC,4BAA4B,IAAI,EAChCC,yBAAyB,KAAK,EACd;IAChB,sCAAsC;IACtC,MAAM,EACJvC,QAAQwC,iBAAiB,EACzB9B,SAAS+B,kBAAkB,EAC3BpB,OAAOqB,gBAAgB,EACvBjC,SAASkC,kBAAkB,EAC3BjB,mBAAmBkB,4BAA4B,EAC/ChB,WAAWiB,oBAAoB,EAChC,GAAGzD;IAEJ,8DAA8D;IAC9D,MAAM0D,aAAa7C,cAAcuC;IACjC,MAAMnB,QAAQC,aAAaoB;IAE3B,uCAAuC;IACvC,oEAAoE;IACpE,MAAMK,gBAAgBhE,QAAQ;QAC5B,yEAAyE;QACzE,IAAI0B,YAAY,OAAO,OAAO;QAC9B,mEAAmE;QACnE,mCAAmC;QACnC,MAAMuC,cAAcvC,WAAW,EAAE;QACjC,MAAMwC,iBAAiBN,sBAAsB,EAAE;QAC/C,MAAMO,WAAW;eAAIF;eAAgBC;SAAe;QACpD,OAAOC,SAASC,MAAM,GAAG,IAAID,WAAWE;IAC1C,GAAG;QAAC3C;QAASkC;KAAmB;IAEhC,4DAA4D;IAC5D,MAAMjB,oBAAoBC,yBAAyBiB;IACnD,MAAMhB,YAAYC,iBAAiBgB;IAEnC,uCAAuC;IACvC,mFAAmF;IACnF,4FAA4F;IAC5F,wFAAwF;IACxF,MAAMnC,UAAU3B,QAAQ;QACtB,qDAAqD;QACrD,IAAI,CAAC4B,eAAe,CAAC8B,oBAAoB,OAAOW;QAChD,6BAA6B;QAC7B,IAAI,CAACzC,aAAa,OAAO8B;QACzB,IAAI,CAACA,oBAAoB,OAAO9B;QAEhC,wEAAwE;QACxE,OAAOA,YAAY0C,GAAG,CAAC,CAACC;YACtB,MAAMC,gBAAgBd,mBAAmBe,IAAI,CAAC,CAACC,IAAMA,EAAEC,KAAK,KAAKJ,WAAWI,KAAK;YACjF,IAAI,CAACH,eAAe,OAAOD;YAE3B,gFAAgF;YAChF,OAAO;gBACL,GAAGA,UAAU;gBACb,qFAAqF;gBACrFK,QAAQL,WAAWK,MAAM,IAAIJ,cAAcI,MAAM;gBACjDC,QAAQN,WAAWM,MAAM,IAAIL,cAAcK,MAAM;gBACjD,qDAAqD;gBACrDC,kBAAkBP,WAAWO,gBAAgB,IAAIN,cAAcM,gBAAgB;gBAC/EC,gBAAgBR,WAAWQ,cAAc,IAAIP,cAAcO,cAAc;gBACzEC,oBAAoBT,WAAWS,kBAAkB,IAAIR,cAAcQ,kBAAkB;gBACrFC,QAAQV,WAAWU,MAAM,IAAIT,cAAcS,MAAM;YACnD;QACF;IACF,GAAG;QAACrD;QAAa8B;KAAmB;IAEpC,kEAAkE;IAClE,MAAMwB,cAAclF,QAAQ;QAC1B,IAAI,CAAC+D,YAAY,OAAO;QAExB,IAAI9C,SAAS8C;QAEb,sDAAsD;QACtD,IAAIhB,YAAY,CAACxC,YAAYU,SAAS;YACpC,gEAAgE;YAChE,MAAMkE,iBAAiB/B,0BACnB;gBAAE,GAAG5C,8BAA8B;gBAAE,GAAG4C,uBAAuB;YAAC,IAChE5C;YAEJS,SAASX,eAAeW,QAAQkE;QAClC;QAEA,qCAAqC;QACrC,IAAI3C,eAAe,CAACpC,kBAAkBa,SAAS;YAC7CA,SAASd,qBAAqBc;QAChC;QAEA,OAAOA;IACT,GAAG;QAAC8C;QAAYvB;QAAaO;QAAUK;KAAwB;IAE/D,kDAAkD;IAClD,MAAMgC,mBAAmBpF,QAAQ;QAC/B,IAAI,CAACwC,aAAa,OAAOxB;QAEzB,OAAO;YACL,GAAGA,WAAW;YACdqE,MAAM;gBACJ,GAAGrE,YAAYqE,IAAI;gBACnBC,OAAO;oBACL,GAAItE,YAAYqE,IAAI,EAAUC,KAAK;oBACnC,+CAA+C;oBAC/C,GAAI7C,WAAW4B,aAAa;wBAAE5B;oBAAO,CAAC;oBACtC,GAAIC,gBAAgB2B,aAAa;wBAAE3B;oBAAY,CAAC;gBAClD;YACF;QACF;IACF,GAAG;QAAC1B;QAAawB;QAAaC;QAAQC;KAAY;IAElD,oCAAoC;IACpC,IAAI,CAACwC,aAAa;QAChB,qBACE,KAACK;YACCC,OAAO;gBACLC,SAAS;gBACTC,eAAe;gBACfC,YAAY;gBACZC,gBAAgB;gBAChBC,QAAQ;gBACRC,SAAS;gBACTC,WAAW;YACb;sBAEA,cAAA,MAACR;gBACCC,OAAO;oBACLQ,iBAAiB;oBACjBC,QAAQ;oBACRC,cAAc;oBACdJ,SAAS;oBACTK,UAAU;gBACZ;;kCAEA,KAACC;wBACCZ,OAAO;4BACLa,OAAO;4BACPC,UAAU;4BACVC,YAAY;4BACZC,QAAQ;wBACV;kCACD;;kCAGD,MAACC;wBACCjB,OAAO;4BACLa,OAAO;4BACPC,UAAU;4BACVI,YAAY;4BACZF,QAAQ;wBACV;;4BACD;0CACa,KAACG;gCAAKnB,OAAO;oCAAEQ,iBAAiB;oCAA8BF,SAAS;oCAAWI,cAAc;oCAAOI,UAAU;gCAAO;0CAAG;;4BAAa;4BAA8C;0CAClM,KAACK;gCAAKnB,OAAO;oCAAEQ,iBAAiB;oCAA8BF,SAAS;oCAAWI,cAAc;oCAAOI,UAAU;gCAAO;0CAAG;;;;kCAE7H,KAACM;wBACCpB,OAAO;4BACLQ,iBAAiB;4BACjBF,SAAS;4BACTI,cAAc;4BACdI,UAAU;4BACVP,WAAW;4BACXc,UAAU;4BACVL,QAAQ;wBACV;kCAEX,CAAC;;;;;;qBAMmB,CAAC;;;;;IAKpB;IAEA,8DAA8D;IAC9D,MAAMM,kBAAkB9G,QAAQ;QAC9B,IAAI,CAAC+C,UAAU,OAAOsB;QAEtB,MAAM0C,gBAAgB;eAChB9D,oBAAoB,EAAE;eACtBD,WAAWgE,kBAAkB,EAAE;SACpC;QAED,OAAO;YACLC,MAAMjE,WAAWiE,QAAQ;YACzBD,gBAAgBD,cAAc3C,MAAM,GAAG,IAAI2C,gBAAgB1C;QAC7D;IACF,GAAG;QAACtB;QAAUE;QAAkBD;KAAU;IAE1C,uEAAuE;IACvE,gDAAgD;IAChD,MAAMkE,kBAAkBlH,QAAQ;QAC9B,IAAIwB,kBAAkB;YACpB,wDAAwD;YACxD,OAAO,CAAC2F,OAAkBA,OAAO,GAAG3F,iBAAiB,CAAC,EAAE2F,MAAM,GAAG3F;QACnE;QACA,OAAOD;IACT,GAAG;QAACC;QAAkBD;KAAW;IAEjC,qBACE,KAACd;QACCM,QAAQA;QACRC,aAAaoE;QACbnE,QAAQiE;QACR/D,WAAWA;QACXC,UAAUA;QACVC,aAAaA;QACbC,SAASA;QACTC,YAAY2F;QACZzF,iBAAiBA;QACjBC,SAASsC;QACTrC,SAASA;QACTE,cAAcA;QACdC,WAAWA;QACXC,oBAAoBA;QACpBC,kBAAkBA;QAClBC,WAAWA;QACXC,eAAeA;QACfC,aAAaA;QACbC,UAAUA;QACVC,eAAeA;QACfC,OAAOA;QACPK,mBAAmBA;QACnBE,WAAWA;QACXE,UAAUA;QACVC,WAAW8D;QACX5D,sBAAsBA;QACtBC,sBAAsBA;QACtBE,8BAA8BA;QAC9BC,oBAAoBA;QACpBC,2BAA2BA;QAC3BC,wBAAwBA;;AAG9B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PuckEditorImpl.client.d.ts","sourceRoot":"","sources":["../../src/editor/PuckEditorImpl.client.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/editor/PuckEditorImpl.client.tsx"],"sourcesContent":["'use client'\n\nimport { useState, useCallback, useMemo, useRef, type ReactNode, createElement } from 'react'\nimport { useRouter } from 'next/navigation'\nimport { Puck, type Config as PuckConfig, type Data, type Plugin as PuckPlugin, type Overrides as PuckOverrides } from '@puckeditor/core'\nimport '@puckeditor/core/puck.css'\nimport headingAnalyzer from '@puckeditor/plugin-heading-analyzer'\nimport '@puckeditor/plugin-heading-analyzer/dist/index.css'\nimport { createAiPlugin } from '@puckeditor/plugin-ai'\nimport '@puckeditor/plugin-ai/styles.css'\nimport './ai-plugin-overrides.css'\n\nimport { Maximize2 } from 'lucide-react'\nimport { HeaderActions } from './components/HeaderActions.js'\nimport { IframeWrapper, type LayoutStyle } from './components/IframeWrapper.js'\nimport { PreviewModal } from './components/PreviewModal.js'\nimport { DarkModeStyles } from './components/DarkModeStyles.js'\nimport { useUnsavedChanges } from './hooks/useUnsavedChanges.js'\nimport { createVersionHistoryPlugin } from './plugins/versionHistoryPlugin.js'\nimport { ThemeProvider, type ThemeConfig } from '../theme/index.js'\nimport { usePuckConfig } from '../views/PuckConfigContext.js'\nimport type { LayoutDefinition } from '../layouts/index.js'\nimport type { AiExamplePrompt } from '../ai/types.js'\nimport { useAiPrompts } from '../ai/hooks/useAiPrompts.js'\n\n/**\n * Default viewports for responsive preview\n */\nconst DEFAULT_VIEWPORTS = [\n {\n width: 360,\n height: 'auto' as const,\n label: 'Mobile',\n icon: 'Smartphone' as const,\n },\n {\n width: 768,\n height: 'auto' as const,\n label: 'Tablet',\n icon: 'Tablet' as const,\n },\n {\n width: 1280,\n height: 'auto' as const,\n label: 'Desktop',\n icon: 'Monitor' as const,\n },\n {\n width: '100%' as const,\n height: 'auto' as const,\n label: 'Full Width',\n icon: createElement(Maximize2, { size: 16 }),\n },\n]\n\n/**\n * Extended Data type to include our root props\n */\ninterface PuckDataWithMeta extends Data {\n root: {\n props?: {\n title?: string\n slug?: string\n pageLayout?: string\n // Page-tree integration fields\n folder?: string | null\n pageSegment?: string\n // Homepage field\n isHomepage?: boolean\n [key: string]: unknown\n }\n }\n}\n\nexport interface PuckEditorImplProps {\n /**\n * Page ID for save operations\n */\n pageId: string\n /**\n * Initial Puck data to load\n */\n initialData: Data\n /**\n * Puck configuration with components and settings\n */\n config: PuckConfig\n /**\n * Page title for display\n */\n pageTitle: string\n /**\n * Page slug for preview URL\n */\n pageSlug: string\n /**\n * API endpoint for save operations\n * @default '/api/puck/pages'\n */\n apiEndpoint?: string\n /**\n * URL to navigate to when back button is clicked\n */\n backUrl?: string\n /**\n * Preview URL or function to generate preview URL from slug\n */\n previewUrl?: string | ((slug: string) => string)\n /**\n * Whether to enable viewport switching\n * @default true\n */\n enableViewports?: boolean\n /**\n * Additional Puck plugins to use.\n * The headingAnalyzer plugin is included by default.\n * Set to `false` to disable all default plugins.\n */\n plugins?: PuckPlugin[] | false\n /**\n * Layout definitions for the editor preview.\n * The editor reads header, footer, editorBackground, and editorDarkMode\n * from the layout definition matching the selected pageLayout.\n */\n layouts?: LayoutDefinition[]\n /**\n * Layout style configurations for theme-aware preview\n * @deprecated Use `layouts` prop instead. layoutStyles will be removed in a future version.\n */\n layoutStyles?: Record<string, LayoutStyle>\n /**\n * Key in root.props to read layout value from\n * @default 'pageLayout'\n */\n layoutKey?: string\n /**\n * Custom actions to render at the start of the header\n */\n headerActionsStart?: ReactNode\n /**\n * Custom actions to render at the end of the header\n */\n headerActionsEnd?: ReactNode\n /**\n * Puck overrides to merge with defaults\n */\n overrides?: Partial<PuckOverrides>\n /**\n * Callback on successful save\n */\n onSaveSuccess?: (data: Data) => void\n /**\n * Callback on save error\n */\n onSaveError?: (error: Error) => void\n /**\n * Callback when data changes\n */\n onChange?: (data: Data) => void\n /**\n * Initial document status from Payload (_status field)\n * Used to show draft/published badge in the header\n */\n initialStatus?: 'draft' | 'published'\n\n /**\n * Theme configuration for customizing component styles\n * When provided, components will use themed styles\n */\n theme?: ThemeConfig\n\n /**\n * Stylesheet URLs to inject into the editor iframe.\n * Merged with stylesheets from PuckConfigProvider context.\n */\n editorStylesheets?: string[]\n /**\n * Raw CSS to inject into the editor iframe.\n * Merged with CSS from PuckConfigProvider context.\n */\n editorCss?: string\n\n // AI integration props\n\n /**\n * Enable AI features in the editor.\n * When true, adds the AI chat plugin.\n * @default false\n */\n enableAi?: boolean\n\n /**\n * AI plugin configuration options.\n * Only used when enableAi is true.\n */\n aiOptions?: {\n host?: string\n examplePrompts?: AiExamplePrompt[]\n }\n\n /**\n * Whether the puck-ai-prompts collection is enabled.\n * When true, adds the prompt editor plugin to the plugin rail.\n * @default false\n */\n hasPromptsCollection?: boolean\n\n /**\n * Whether the puck-ai-context collection is enabled.\n * When true, adds the context editor plugin to the plugin rail.\n * @default false\n */\n hasContextCollection?: boolean\n\n /**\n * Enable experimental full screen canvas mode.\n * When enabled, the canvas takes up the full viewport with a floating viewport switcher.\n * @default false\n */\n experimentalFullScreenCanvas?: boolean\n\n // Dark mode props\n\n /**\n * Auto-detect dark mode from PayloadCMS admin.\n * When true (default), dark mode CSS is automatically injected when Payload is in dark mode.\n * Set to false to disable automatic dark mode detection.\n * @default true\n */\n autoDetectDarkMode?: boolean\n\n /**\n * Show the preview dark mode toggle near the viewport switcher.\n * Allows toggling the preview iframe between light/dark modes independently.\n * @default true\n */\n showPreviewDarkModeToggle?: boolean\n\n /**\n * Initial state for the preview dark mode toggle.\n * Only used when showPreviewDarkModeToggle is true.\n * @default false (light mode)\n */\n initialPreviewDarkMode?: boolean\n}\n\n/**\n * Full-featured Puck editor implementation\n *\n * Provides a complete editing experience with:\n * - Save draft and publish functionality\n * - Unsaved changes tracking with beforeunload warning\n * - Interactive/Edit mode toggle\n * - Theme-aware preview backgrounds\n * - Responsive viewport switching\n * - Custom header actions\n *\n * Internal implementation component - use PuckEditor instead.\n * @internal\n */\nexport function PuckEditorImpl({\n pageId,\n initialData,\n config,\n pageTitle,\n pageSlug,\n apiEndpoint = '/api/puck/pages',\n backUrl,\n previewUrl,\n enableViewports = true,\n plugins,\n layouts,\n layoutStyles,\n layoutKey = 'pageLayout',\n headerActionsStart,\n headerActionsEnd,\n overrides: customOverrides,\n onSaveSuccess,\n onSaveError,\n onChange: onChangeProp,\n initialStatus,\n theme,\n editorStylesheets: editorStylesheetsProp,\n editorCss: editorCssProp,\n enableAi = false,\n aiOptions,\n hasPromptsCollection = false,\n hasContextCollection = false,\n experimentalFullScreenCanvas = false,\n autoDetectDarkMode = true,\n showPreviewDarkModeToggle = true,\n initialPreviewDarkMode = false,\n}: PuckEditorImplProps) {\n const router = useRouter()\n const [isSaving, setIsSaving] = useState(false)\n const [lastSaved, setLastSaved] = useState<Date | null>(null)\n const [saveError, setSaveError] = useState<string | null>(null)\n const [documentStatus, setDocumentStatus] = useState<'draft' | 'published' | undefined>(initialStatus)\n // Track if document was ever published (initially or during this session)\n const [wasPublished, setWasPublished] = useState(initialStatus === 'published')\n const { hasUnsavedChanges, markClean, markDirty } = useUnsavedChanges()\n\n // Preview modal state\n const [isPreviewOpen, setIsPreviewOpen] = useState(false)\n\n // Preview dark mode state (for toggling dark/light in preview iframe)\n const [previewDarkMode, setPreviewDarkMode] = useState(initialPreviewDarkMode)\n\n // Inject slug into initial data if not present\n const dataWithSlug = useMemo<PuckDataWithMeta>(() => {\n const data = initialData as PuckDataWithMeta\n return {\n ...data,\n root: {\n ...data.root,\n props: {\n ...data.root?.props,\n slug: data.root?.props?.slug || pageSlug,\n },\n },\n }\n }, [initialData, pageSlug])\n\n // Use a ref to track latest data without causing re-renders\n const latestDataRef = useRef<PuckDataWithMeta>(dataWithSlug)\n\n // Get editor stylesheets from PuckConfigProvider context (as fallback)\n const { editorStylesheets: contextStylesheets, editorCss: contextCss } = usePuckConfig()\n\n // Props take precedence over context\n const baseStylesheets = editorStylesheetsProp || contextStylesheets\n const baseCss = editorCssProp || contextCss\n\n // Get current layout to merge layout-specific stylesheets\n const currentLayoutValue = dataWithSlug.root?.props?.pageLayout || 'default'\n const currentLayout = useMemo(() => {\n return layouts?.find((l) => l.value === currentLayoutValue)\n }, [layouts, currentLayoutValue])\n\n // Merge base stylesheets (props/context) + layout-specific settings\n const mergedEditorStylesheets = useMemo(() => {\n const fromBase = baseStylesheets || []\n const fromLayout = currentLayout?.editorStylesheets || []\n return [...fromBase, ...fromLayout]\n }, [baseStylesheets, currentLayout?.editorStylesheets])\n\n // Merge base CSS (props/context) + layout-specific settings\n const mergedEditorCss = useMemo(() => {\n const parts = [baseCss, currentLayout?.editorCss].filter(Boolean) as string[]\n return parts.length > 0 ? parts.join('\\n') : undefined\n }, [baseCss, currentLayout?.editorCss])\n\n // Helper to make save request with optional homepage swap\n const makeSaveRequest = useCallback(\n async (\n data: Data,\n options: { publish?: boolean; swapHomepage?: boolean } = {}\n ): Promise<Response> => {\n const typedData = data as PuckDataWithMeta\n return fetch(`${apiEndpoint}/${pageId}`, {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n puckData: data,\n title: typedData.root?.props?.title || pageTitle,\n slug: typedData.root?.props?.slug || pageSlug,\n isHomepage: typedData.root?.props?.isHomepage,\n swapHomepage: options.swapHomepage,\n // Page-tree integration: include folder and pageSegment if present\n folder: typedData.root?.props?.folder,\n pageSegment: typedData.root?.props?.pageSegment,\n ...(options.publish ? { _status: 'published' } : { draft: true }),\n }),\n })\n },\n [apiEndpoint, pageId, pageTitle, pageSlug]\n )\n\n // Handle homepage conflict - prompt user to swap\n const handleHomepageConflict = useCallback(\n async (\n existingHomepage: { id: string; title: string; slug: string },\n data: Data,\n publish: boolean\n ): Promise<boolean> => {\n const confirmed = confirm(\n `\"${existingHomepage.title}\" (/${existingHomepage.slug}) is currently set as the homepage.\\n\\nDo you want to make this page the homepage instead?`\n )\n if (!confirmed) {\n return false\n }\n\n // Retry with swapHomepage flag\n const response = await makeSaveRequest(data, { publish, swapHomepage: true })\n if (!response.ok) {\n const errorData = await response.json()\n throw new Error(errorData.error || errorData.message || 'Failed to swap homepage')\n }\n return true\n },\n [makeSaveRequest]\n )\n\n // Handle save (as draft)\n const handleSave = useCallback(\n async (data: Data) => {\n setIsSaving(true)\n const typedData = data as PuckDataWithMeta\n try {\n const response = await makeSaveRequest(data, { publish: false })\n\n if (!response.ok) {\n const errorData = await response.json()\n\n // Check for homepage conflict error\n if (errorData.data?.existingHomepage) {\n const swapped = await handleHomepageConflict(\n errorData.data.existingHomepage,\n data,\n false\n )\n if (!swapped) {\n // User cancelled - don't show error, just return\n setIsSaving(false)\n return\n }\n // Successfully swapped - continue to success handling below\n } else {\n const errorMessage = errorData.error || errorData.message || 'Failed to save page'\n const err = new Error(errorMessage) as Error & { field?: string; details?: unknown }\n err.field = errorData.field\n err.details = errorData.details\n throw err\n }\n }\n\n setLastSaved(new Date())\n setSaveError(null) // Clear any previous error\n // After saving as draft, update status to draft (shows \"Unpublished Changes\" if was published)\n setDocumentStatus('draft')\n markClean()\n onSaveSuccess?.(data)\n } catch (error) {\n console.error('Error saving page:', error)\n setSaveError(error instanceof Error ? error.message : 'Unknown error')\n onSaveError?.(error instanceof Error ? error : new Error('Unknown error'))\n } finally {\n setIsSaving(false)\n }\n },\n [makeSaveRequest, handleHomepageConflict, markClean, onSaveSuccess, onSaveError]\n )\n\n // Handle publish\n const handlePublish = useCallback(\n async (data: Data) => {\n setIsSaving(true)\n const typedData = data as PuckDataWithMeta\n try {\n const response = await makeSaveRequest(data, { publish: true })\n\n if (!response.ok) {\n const errorData = await response.json()\n\n // Check for homepage conflict error\n if (errorData.data?.existingHomepage) {\n const swapped = await handleHomepageConflict(\n errorData.data.existingHomepage,\n data,\n true\n )\n if (!swapped) {\n // User cancelled - don't show error, just return\n setIsSaving(false)\n return\n }\n // Successfully swapped - continue to success handling below\n } else {\n const errorMessage = errorData.error || errorData.message || 'Failed to publish page'\n const err = new Error(errorMessage) as Error & { field?: string; details?: unknown }\n err.field = errorData.field\n err.details = errorData.details\n throw err\n }\n }\n\n setLastSaved(new Date())\n setSaveError(null) // Clear any previous error\n setDocumentStatus('published') // Update status after successful publish\n setWasPublished(true) // Mark as having been published\n markClean()\n onSaveSuccess?.(data)\n } catch (error) {\n console.error('Error publishing page:', error)\n setSaveError(error instanceof Error ? error.message : 'Unknown error')\n onSaveError?.(error instanceof Error ? error : new Error('Unknown error'))\n } finally {\n setIsSaving(false)\n }\n },\n [makeSaveRequest, handleHomepageConflict, markClean, onSaveSuccess, onSaveError]\n )\n\n // Handle unpublish (revert to draft)\n const handleUnpublish = useCallback(\n async () => {\n if (!confirm('This will unpublish the page and return it to draft status. Continue?')) {\n return\n }\n\n setIsSaving(true)\n try {\n const response = await fetch(`${apiEndpoint}/${pageId}`, {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n _status: 'draft',\n }),\n })\n\n if (!response.ok) {\n const errorData = await response.json()\n const errorMessage = errorData.error || errorData.message || 'Failed to unpublish page'\n throw new Error(errorMessage)\n }\n\n setLastSaved(new Date())\n setSaveError(null)\n setDocumentStatus('draft')\n } catch (error) {\n console.error('Error unpublishing page:', error)\n setSaveError(error instanceof Error ? error.message : 'Unknown error')\n } finally {\n setIsSaving(false)\n }\n },\n [apiEndpoint, pageId]\n )\n\n // Handle data change\n const handleChange = useCallback(\n (data: Data) => {\n latestDataRef.current = data as PuckDataWithMeta\n markDirty()\n onChangeProp?.(data)\n },\n [markDirty, onChangeProp]\n )\n\n // Handle back navigation\n const handleBack = useCallback(() => {\n if (hasUnsavedChanges) {\n if (!confirm('You have unsaved changes. Are you sure you want to leave?')) {\n return\n }\n }\n if (backUrl) {\n router.push(backUrl)\n } else {\n router.back()\n }\n }, [hasUnsavedChanges, router, backUrl])\n\n // Handle preview (opens in new tab)\n const handlePreview = useCallback(() => {\n const rootProps = latestDataRef.current?.root?.props\n const currentSlug = rootProps?.slug || pageSlug\n const isHomepage = rootProps?.isHomepage === true\n let url: string\n if (typeof previewUrl === 'function') {\n // If homepage, pass '/' to the function, otherwise pass the slug\n url = previewUrl(isHomepage ? '' : currentSlug)\n } else if (previewUrl) {\n url = previewUrl\n } else {\n // If homepage, navigate to root, otherwise use slug\n url = isHomepage ? '/' : `/${currentSlug}`\n }\n window.open(url, '_blank')\n }, [pageSlug, previewUrl])\n\n // Handle opening preview modal\n const handleOpenPreview = useCallback(() => {\n setIsPreviewOpen(true)\n }, [])\n\n // Handle save from preview modal (returns Promise for navigation flow)\n const handleSaveFromPreview = useCallback(async () => {\n const data = latestDataRef.current\n setIsSaving(true)\n try {\n const response = await fetch(`${apiEndpoint}/${pageId}`, {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n puckData: data,\n title: data?.root?.props?.title || pageTitle,\n slug: data?.root?.props?.slug || pageSlug,\n // Page-tree integration: include folder and pageSegment if present\n folder: data?.root?.props?.folder,\n pageSegment: data?.root?.props?.pageSegment,\n draft: true,\n }),\n })\n\n if (!response.ok) {\n const errorData = await response.json()\n const errorMessage = errorData.error || errorData.message || 'Failed to save page'\n throw new Error(errorMessage)\n }\n\n setLastSaved(new Date())\n setSaveError(null)\n setDocumentStatus('draft')\n markClean()\n onSaveSuccess?.(data)\n } catch (error) {\n console.error('Error saving page:', error)\n setSaveError(error instanceof Error ? error.message : 'Unknown error')\n onSaveError?.(error instanceof Error ? error : new Error('Unknown error'))\n throw error // Re-throw so preview modal knows save failed\n } finally {\n setIsSaving(false)\n }\n }, [apiEndpoint, pageId, pageTitle, pageSlug, markClean, onSaveSuccess, onSaveError])\n\n // Memoized overrides\n const overrides = useMemo<Partial<PuckOverrides>>(\n () => ({\n headerActions: ({ children }: { children: ReactNode }) => (\n <HeaderActions\n onBack={handleBack}\n onPreview={handlePreview}\n onSave={handleSave}\n onPublish={handlePublish}\n onUnpublish={handleUnpublish}\n onOpenPreview={handleOpenPreview}\n isSaving={isSaving}\n hasUnsavedChanges={hasUnsavedChanges}\n lastSaved={lastSaved}\n documentStatus={documentStatus}\n wasPublished={wasPublished}\n actionsStart={headerActionsStart}\n actionsEnd={headerActionsEnd}\n pageId={pageId}\n apiEndpoint={apiEndpoint}\n saveError={saveError}\n onDismissError={() => setSaveError(null)}\n showVersionHistory={false}\n showPreviewDarkModeToggle={showPreviewDarkModeToggle}\n previewDarkMode={previewDarkMode}\n onPreviewDarkModeChange={setPreviewDarkMode}\n >\n {children}\n </HeaderActions>\n ),\n // Always wrap iframe for richtext styles injection and theme-aware background\n iframe: ({ children, document }: { children: ReactNode; document?: Document }) => (\n <IframeWrapper\n document={document}\n layouts={layouts}\n layoutStyles={layoutStyles}\n layoutKey={layoutKey}\n editorStylesheets={mergedEditorStylesheets}\n editorCss={mergedEditorCss}\n previewDarkModeOverride={showPreviewDarkModeToggle ? previewDarkMode : undefined}\n >\n {children}\n </IframeWrapper>\n ),\n // Merge custom overrides\n ...customOverrides,\n }),\n [\n handleBack,\n handlePreview,\n handleSave,\n handlePublish,\n handleUnpublish,\n handleOpenPreview,\n isSaving,\n hasUnsavedChanges,\n lastSaved,\n saveError,\n documentStatus,\n wasPublished,\n headerActionsStart,\n headerActionsEnd,\n pageId,\n apiEndpoint,\n layouts,\n layoutStyles,\n layoutKey,\n customOverrides,\n mergedEditorStylesheets,\n mergedEditorCss,\n showPreviewDarkModeToggle,\n previewDarkMode,\n setPreviewDarkMode,\n ]\n )\n\n // Default plugins - headingAnalyzer is always included unless plugins is explicitly false\n const defaultPlugins: PuckPlugin[] = [headingAnalyzer]\n\n // Version history plugin for the plugin rail\n const versionHistoryPlugin = useMemo(() => {\n if (!pageId) return null\n return createVersionHistoryPlugin({\n pageId,\n apiEndpoint,\n onRestoreSuccess: markClean,\n })\n }, [pageId, apiEndpoint, markClean])\n\n // Fetch AI prompts client-side when prompts collection is enabled\n // This allows prompts to update in real-time when edited via the prompt editor panel\n const { prompts: clientPrompts, loading: promptsLoading } = useAiPrompts(\n '/api/puck/ai-prompts',\n enableAi && hasPromptsCollection\n )\n\n // Use refs to store the latest prompts so onClick handlers can access current values\n // without causing the plugin to be recreated (which would cause Puck to remount panels)\n const clientPromptsRef = useRef(clientPrompts)\n clientPromptsRef.current = clientPrompts\n const staticPromptsRef = useRef(aiOptions?.examplePrompts)\n staticPromptsRef.current = aiOptions?.examplePrompts\n\n // AI plugin - statically imported, only instantiated when enabled\n // IMPORTANT: We intentionally exclude clientPrompts and aiOptions.examplePrompts from deps\n // to prevent plugin recreation. The onClick handlers use refs to access current prompts.\n const aiPlugin = useMemo(() => {\n if (!enableAi) return null\n // Don't create plugin until prompts are loaded (when using prompts collection)\n if (hasPromptsCollection && promptsLoading) return null\n\n // Use client-fetched prompts when prompts collection is enabled,\n // otherwise fall back to static props from config\n // NOTE: We read from refs in onClick to get current values without causing re-renders\n const getPrompts = () => hasPromptsCollection\n ? (clientPromptsRef.current || [])\n : (staticPromptsRef.current || [])\n\n // Get initial prompts for labels (labels are stable, only prompts text might change)\n const initialPrompts = getPrompts()\n\n // Convert our { label, prompt } format to plugin's { label, onClick } format\n // The plugin expects onClick to send the message via window.__PUCK_AI.sendMessage\n const convertedPrompts = initialPrompts.map((item, index) => ({\n label: item.label,\n onClick: () => {\n // Access current prompts via ref to get latest values\n const currentPrompts = getPrompts()\n const currentPrompt = currentPrompts[index]?.prompt || item.prompt\n // Use Puck AI's global API to send the prompt as a user message\n // sendMessage accepts { text: string } as a simpler format\n if (typeof window !== 'undefined' && (window as any).__PUCK_AI?.sendMessage) {\n ;(window as any).__PUCK_AI.sendMessage({ text: currentPrompt })\n }\n },\n }))\n\n return createAiPlugin({\n host: aiOptions?.host || '/api/puck/ai',\n chat: {\n examplePrompts: convertedPrompts.length > 0 ? convertedPrompts : undefined,\n },\n })\n // eslint-disable-next-line react-hooks/exhaustive-deps -- intentionally omit prompt arrays to prevent recreation\n }, [enableAi, hasPromptsCollection, promptsLoading, aiOptions?.host])\n\n // Prompt editor plugin - for managing AI prompts in the plugin rail\n const promptEditorPlugin = useMemo(() => {\n if (!enableAi || !hasPromptsCollection) return null\n\n try {\n // Dynamic require to avoid errors if module not available\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const { createPromptEditorPlugin } = require('../ai/plugins/promptEditorPlugin')\n return createPromptEditorPlugin({\n apiEndpoint: '/api/puck/ai-prompts',\n })\n } catch (e) {\n console.warn('[PuckEditor] Failed to load prompt editor plugin:', e)\n return null\n }\n }, [enableAi, hasPromptsCollection])\n\n // Context editor plugin - for managing AI context in the plugin rail\n const contextEditorPlugin = useMemo(() => {\n if (!enableAi || !hasContextCollection) return null\n\n try {\n // Dynamic require to avoid errors if module not available\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const { createContextEditorPlugin } = require('../ai/plugins/contextEditorPlugin')\n return createContextEditorPlugin({\n apiEndpoint: '/api/puck/ai-context',\n })\n } catch (e) {\n console.warn('[PuckEditor] Failed to load context editor plugin:', e)\n return null\n }\n }, [enableAi, hasContextCollection])\n\n const resolvedPlugins = useMemo(() => {\n if (plugins === false) return undefined\n const base = !plugins || plugins.length === 0 ? defaultPlugins : [...defaultPlugins, ...plugins]\n\n // Add version history plugin if available\n if (versionHistoryPlugin) {\n base.push(versionHistoryPlugin)\n }\n\n // Add AI plugin if enabled\n if (aiPlugin) {\n base.push(aiPlugin)\n }\n\n // Add prompt editor plugin if enabled\n if (promptEditorPlugin) {\n base.push(promptEditorPlugin)\n }\n\n // Add context editor plugin if enabled\n if (contextEditorPlugin) {\n base.push(contextEditorPlugin)\n }\n\n return base\n }, [plugins, versionHistoryPlugin, aiPlugin, promptEditorPlugin, contextEditorPlugin])\n\n const editorContent = (\n <>\n {/* Dark mode CSS injection - automatically detects PayloadCMS dark mode */}\n {autoDetectDarkMode && <DarkModeStyles />}\n <div className=\"h-screen\">\n <Puck\n config={config}\n data={dataWithSlug}\n onChange={handleChange}\n onPublish={handlePublish}\n headerTitle={`${pageTitle} /${pageSlug}`}\n plugins={resolvedPlugins}\n viewports={enableViewports ? DEFAULT_VIEWPORTS : undefined}\n overrides={overrides}\n iframe={{ waitForStyles: true }}\n _experimentalFullScreenCanvas={experimentalFullScreenCanvas}\n />\n </div>\n <PreviewModal\n isOpen={isPreviewOpen}\n onClose={() => setIsPreviewOpen(false)}\n data={latestDataRef.current}\n pageTitle={pageTitle}\n onOpenInNewTab={handlePreview}\n layouts={layouts}\n hasUnsavedChanges={hasUnsavedChanges}\n onSave={handleSaveFromPreview}\n isSaving={isSaving}\n editorStylesheets={mergedEditorStylesheets}\n editorCss={mergedEditorCss}\n config={config}\n />\n </>\n )\n\n // Wrap with ThemeProvider if theme is provided\n if (theme) {\n return <ThemeProvider theme={theme}>{editorContent}</ThemeProvider>\n }\n\n return editorContent\n}\n"],"names":["useState","useCallback","useMemo","useRef","createElement","useRouter","Puck","headingAnalyzer","createAiPlugin","Maximize2","HeaderActions","IframeWrapper","PreviewModal","DarkModeStyles","useUnsavedChanges","createVersionHistoryPlugin","ThemeProvider","usePuckConfig","useAiPrompts","DEFAULT_VIEWPORTS","width","height","label","icon","size","PuckEditorImpl","pageId","initialData","config","pageTitle","pageSlug","apiEndpoint","backUrl","previewUrl","enableViewports","plugins","layouts","layoutStyles","layoutKey","headerActionsStart","headerActionsEnd","overrides","customOverrides","onSaveSuccess","onSaveError","onChange","onChangeProp","initialStatus","theme","editorStylesheets","editorStylesheetsProp","editorCss","editorCssProp","enableAi","aiOptions","hasPromptsCollection","hasContextCollection","experimentalFullScreenCanvas","autoDetectDarkMode","showPreviewDarkModeToggle","initialPreviewDarkMode","router","isSaving","setIsSaving","lastSaved","setLastSaved","saveError","setSaveError","documentStatus","setDocumentStatus","wasPublished","setWasPublished","hasUnsavedChanges","markClean","markDirty","isPreviewOpen","setIsPreviewOpen","previewDarkMode","setPreviewDarkMode","dataWithSlug","data","root","props","slug","latestDataRef","contextStylesheets","contextCss","baseStylesheets","baseCss","currentLayoutValue","pageLayout","currentLayout","find","l","value","mergedEditorStylesheets","fromBase","fromLayout","mergedEditorCss","parts","filter","Boolean","length","join","undefined","makeSaveRequest","options","typedData","fetch","method","headers","body","JSON","stringify","puckData","title","isHomepage","swapHomepage","folder","pageSegment","publish","_status","draft","handleHomepageConflict","existingHomepage","confirmed","confirm","response","ok","errorData","json","Error","error","message","handleSave","swapped","errorMessage","err","field","details","Date","console","handlePublish","handleUnpublish","handleChange","current","handleBack","push","back","handlePreview","rootProps","currentSlug","url","window","open","handleOpenPreview","handleSaveFromPreview","headerActions","children","onBack","onPreview","onSave","onPublish","onUnpublish","onOpenPreview","actionsStart","actionsEnd","onDismissError","showVersionHistory","onPreviewDarkModeChange","iframe","document","previewDarkModeOverride","defaultPlugins","versionHistoryPlugin","onRestoreSuccess","prompts","clientPrompts","loading","promptsLoading","clientPromptsRef","staticPromptsRef","examplePrompts","aiPlugin","getPrompts","initialPrompts","convertedPrompts","map","item","index","onClick","currentPrompts","currentPrompt","prompt","__PUCK_AI","sendMessage","text","host","chat","promptEditorPlugin","createPromptEditorPlugin","require","e","warn","contextEditorPlugin","createContextEditorPlugin","resolvedPlugins","base","editorContent","div","className","headerTitle","viewports","waitForStyles","_experimentalFullScreenCanvas","isOpen","onClose","onOpenInNewTab"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DarkModeStyles.d.ts","sourceRoot":"","sources":["../../../src/editor/components/DarkModeStyles.tsx"],"names":[],"mappings":"AAsIA,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,EAAE,YAAY,EAAE,EAAE,mBAAmB,QAsCnE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/editor/components/DarkModeStyles.tsx"],"sourcesContent":["'use client'\n\nimport { useEffect } from 'react'\nimport { useDarkMode } from '../hooks/useDarkMode.js'\n\n/**\n * Dark mode CSS to inject. This contains all Puck color variable overrides.\n * We inline this rather than importing a CSS file to avoid build complexity.\n */\nconst DARK_MODE_CSS = `\n/**\n * Puck Editor Dark Mode CSS Overrides\n *\n * Puck's UI is always light-themed (no built-in dark mode).\n * When Payload CMS is in dark mode, we need to ensure Puck's\n * form inputs remain readable (dark text on light background).\n *\n * This CSS overrides PayloadCMS theme CSS variables within Puck UI\n * to force light-mode values, ensuring proper contrast.\n */\n\n/* Override PayloadCMS theme CSS variables to light-mode values within Puck UI */\n.dark [class*=\"Puck\"],\n.dark [class*=\"puck-\"],\n[data-theme=\"dark\"] [class*=\"Puck\"],\n[data-theme=\"dark\"] [class*=\"puck-\"] {\n /* Force light-mode PayloadCMS elevation values */\n --theme-elevation-0: rgb(255, 255, 255);\n --theme-elevation-50: rgb(245, 245, 245);\n --theme-elevation-100: rgb(235, 235, 235);\n --theme-elevation-150: rgb(221, 221, 221);\n --theme-elevation-200: rgb(208, 208, 208);\n --theme-elevation-250: rgb(195, 195, 195);\n --theme-elevation-300: rgb(181, 181, 181);\n --theme-elevation-350: rgb(168, 168, 168);\n --theme-elevation-400: rgb(154, 154, 154);\n --theme-elevation-450: rgb(141, 141, 141);\n --theme-elevation-500: rgb(128, 128, 128);\n --theme-elevation-550: rgb(114, 114, 114);\n --theme-elevation-600: rgb(101, 101, 101);\n --theme-elevation-650: rgb(87, 87, 87);\n --theme-elevation-700: rgb(74, 74, 74);\n --theme-elevation-750: rgb(60, 60, 60);\n --theme-elevation-800: rgb(47, 47, 47);\n --theme-elevation-850: rgb(34, 34, 34);\n --theme-elevation-900: rgb(20, 20, 20);\n --theme-elevation-950: rgb(7, 7, 7);\n --theme-elevation-1000: rgb(0, 0, 0);\n\n /* Force light-mode derived theme variables */\n --theme-bg: rgb(255, 255, 255);\n --theme-input-bg: rgb(255, 255, 255);\n --theme-text: rgb(47, 47, 47);\n\n /* Reset text color inheritance from Payload's dark mode */\n color: #1f2937;\n}\n\n/* Ensure form inputs have dark text */\n.dark [class*=\"Puck\"] input,\n.dark [class*=\"Puck\"] textarea,\n.dark [class*=\"Puck\"] select,\n.dark [class*=\"puck-\"] input,\n.dark [class*=\"puck-\"] textarea,\n.dark [class*=\"puck-\"] select,\n[data-theme=\"dark\"] [class*=\"Puck\"] input,\n[data-theme=\"dark\"] [class*=\"Puck\"] textarea,\n[data-theme=\"dark\"] [class*=\"Puck\"] select,\n[data-theme=\"dark\"] [class*=\"puck-\"] input,\n[data-theme=\"dark\"] [class*=\"puck-\"] textarea,\n[data-theme=\"dark\"] [class*=\"puck-\"] select {\n color: #1f2937 !important;\n background-color: #ffffff !important;\n}\n\n/* Ensure labels and text in Puck panels are dark */\n.dark [class*=\"Puck\"] label,\n.dark [class*=\"Puck\"] span,\n.dark [class*=\"Puck\"] p,\n.dark [class*=\"puck-\"] label,\n.dark [class*=\"puck-\"] span,\n.dark [class*=\"puck-\"] p,\n[data-theme=\"dark\"] [class*=\"Puck\"] label,\n[data-theme=\"dark\"] [class*=\"Puck\"] span,\n[data-theme=\"dark\"] [class*=\"Puck\"] p,\n[data-theme=\"dark\"] [class*=\"puck-\"] label,\n[data-theme=\"dark\"] [class*=\"puck-\"] span,\n[data-theme=\"dark\"] [class*=\"puck-\"] p {\n color: #1f2937;\n}\n\n/* Ensure buttons maintain proper styling */\n.dark [class*=\"Puck\"] button,\n.dark [class*=\"puck-\"] button,\n[data-theme=\"dark\"] [class*=\"Puck\"] button,\n[data-theme=\"dark\"] [class*=\"puck-\"] button {\n color: inherit;\n}\n\n/* Fix placeholder text */\n.dark [class*=\"Puck\"] input::placeholder,\n.dark [class*=\"Puck\"] textarea::placeholder,\n.dark [class*=\"puck-\"] input::placeholder,\n.dark [class*=\"puck-\"] textarea::placeholder,\n[data-theme=\"dark\"] [class*=\"Puck\"] input::placeholder,\n[data-theme=\"dark\"] [class*=\"Puck\"] textarea::placeholder,\n[data-theme=\"dark\"] [class*=\"puck-\"] input::placeholder,\n[data-theme=\"dark\"] [class*=\"puck-\"] textarea::placeholder {\n color: #9ca3af !important;\n}\n\n/* Ensure headings in Puck are visible */\n.dark [class*=\"Puck\"] h1,\n.dark [class*=\"Puck\"] h2,\n.dark [class*=\"Puck\"] h3,\n.dark [class*=\"Puck\"] h4,\n.dark [class*=\"puck-\"] h1,\n.dark [class*=\"puck-\"] h2,\n.dark [class*=\"puck-\"] h3,\n.dark [class*=\"puck-\"] h4,\n[data-theme=\"dark\"] [class*=\"Puck\"] h1,\n[data-theme=\"dark\"] [class*=\"Puck\"] h2,\n[data-theme=\"dark\"] [class*=\"Puck\"] h3,\n[data-theme=\"dark\"] [class*=\"Puck\"] h4,\n[data-theme=\"dark\"] [class*=\"puck-\"] h1,\n[data-theme=\"dark\"] [class*=\"puck-\"] h2,\n[data-theme=\"dark\"] [class*=\"puck-\"] h3,\n[data-theme=\"dark\"] [class*=\"puck-\"] h4 {\n color: #1f2937;\n}\n`.trim()\n\nconst STYLE_ID = 'puck-dark-mode-styles'\n\nexport interface DarkModeStylesProps {\n /**\n * Override automatic dark mode detection.\n * When true, always inject dark mode styles.\n * When false, never inject dark mode styles.\n * When undefined, use automatic detection.\n */\n forceEnabled?: boolean\n}\n\n/**\n * Injects dark mode CSS overrides for Puck when dark mode is detected.\n *\n * This component uses the useDarkMode hook to detect when PayloadCMS admin\n * is in dark mode (via .dark class) or when OS preference is dark mode.\n * It then injects/removes the CSS overrides accordingly.\n *\n * @example\n * ```tsx\n * function MyEditor() {\n * return (\n * <>\n * <DarkModeStyles />\n * <Puck ... />\n * </>\n * )\n * }\n * ```\n */\nexport function DarkModeStyles({ forceEnabled }: DarkModeStylesProps) {\n const { isDarkMode } = useDarkMode()\n\n // Determine if we should inject styles\n const shouldInject = forceEnabled ?? isDarkMode\n\n useEffect(() => {\n if (typeof document === 'undefined') return\n\n // Check if style element already exists\n let styleElement = document.getElementById(STYLE_ID) as HTMLStyleElement | null\n\n if (shouldInject) {\n // Inject styles if not already present\n if (!styleElement) {\n styleElement = document.createElement('style')\n styleElement.id = STYLE_ID\n styleElement.textContent = DARK_MODE_CSS\n document.head.appendChild(styleElement)\n }\n } else {\n // Remove styles if present\n if (styleElement) {\n styleElement.remove()\n }\n }\n\n // Cleanup on unmount\n return () => {\n const el = document.getElementById(STYLE_ID)\n if (el) {\n el.remove()\n }\n }\n }, [shouldInject])\n\n // This component doesn't render anything\n return null\n}\n"],"names":["useEffect","useDarkMode","DARK_MODE_CSS","trim","STYLE_ID","DarkModeStyles","forceEnabled","isDarkMode","shouldInject","document","styleElement","getElementById","createElement","id","textContent","head","appendChild","remove","el"],"mappings":"AAAA;AAEA,SAASA,SAAS,QAAQ,QAAO;AACjC,SAASC,WAAW,QAAQ,0BAAyB;AAErD;;;CAGC,GACD,MAAMC,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyHvB,CAAC,CAACC,IAAI;AAEN,MAAMC,WAAW;AAYjB;;;;;;;;;;;;;;;;;;CAkBC,GACD,OAAO,SAASC,eAAe,EAAEC,YAAY,EAAuB;IAClE,MAAM,EAAEC,UAAU,EAAE,GAAGN;IAEvB,uCAAuC;IACvC,MAAMO,eAAeF,gBAAgBC;IAErCP,UAAU;QACR,IAAI,OAAOS,aAAa,aAAa;QAErC,wCAAwC;QACxC,IAAIC,eAAeD,SAASE,cAAc,CAACP;QAE3C,IAAII,cAAc;YAChB,uCAAuC;YACvC,IAAI,CAACE,cAAc;gBACjBA,eAAeD,SAASG,aAAa,CAAC;gBACtCF,aAAaG,EAAE,GAAGT;gBAClBM,aAAaI,WAAW,GAAGZ;gBAC3BO,SAASM,IAAI,CAACC,WAAW,CAACN;YAC5B;QACF,OAAO;YACL,2BAA2B;YAC3B,IAAIA,cAAc;gBAChBA,aAAaO,MAAM;YACrB;QACF;QAEA,qBAAqB;QACrB,OAAO;YACL,MAAMC,KAAKT,SAASE,cAAc,CAACP;YACnC,IAAIc,IAAI;gBACNA,GAAGD,MAAM;YACX;QACF;IACF,GAAG;QAACT;KAAa;IAEjB,yCAAyC;IACzC,OAAO;AACT"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"HeaderActions.d.ts","sourceRoot":"","sources":["../../../src/editor/components/HeaderActions.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,SAAS,EAAsB,MAAM,OAAO,CAAA;AAC7E,OAAO,EAAiB,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAqB3D,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAA;IACnB;;OAEG;IACH,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB;;OAEG;IACH,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB;;OAEG;IACH,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC5B;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAChC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAA;IACjB;;OAEG;IACH,iBAAiB,EAAE,OAAO,CAAA;IAC1B;;OAEG;IACH,SAAS,EAAE,IAAI,GAAG,IAAI,CAAA;IACtB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,WAAW,CAAA;IACtC;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAA;IACtB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;IAI3B;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAA;IACnC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;OAEG;IACH,uBAAuB,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAA;CACxD;AAkMD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,0DAsSxB,CAAA"}
|