@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/interactive/Card.server.tsx"],"sourcesContent":["/**\n * Card Component - Server-safe Puck Configuration\n *\n * Content card with image, heading, and text.\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 shadowMap,\n cn,\n marginValueToCSS,\n paddingValueToCSS,\n backgroundValueToCSS,\n borderValueToCSS,\n dimensionsValueToCSS,\n transformValueToCSS,\n type PaddingValue,\n type BackgroundValue,\n type BorderValue,\n type DimensionsValue,\n type AnimationValue,\n type TransformValue,\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 content padding for card (replaces hardcoded p-4)\nconst DEFAULT_CONTENT_PADDING: PaddingValue = {\n top: 16,\n right: 16,\n bottom: 16,\n left: 16,\n unit: 'px',\n linked: true,\n}\n\nexport interface CardProps {\n image: MediaReference | null\n heading: string\n text: string\n link: string\n openInNewTab: boolean\n shadow: string\n margin: PaddingValue | null\n background: BackgroundValue | null\n border: BorderValue | null\n dimensions: DimensionsValue | null\n alignment: Alignment | null\n transform: TransformValue | null\n animation: AnimationValue | null\n contentPadding: PaddingValue | null\n}\n\nconst defaultProps: CardProps = {\n image: null,\n heading: 'Card Heading',\n text: 'Card description text goes here.',\n link: '',\n openInNewTab: false,\n shadow: 'md',\n margin: null,\n background: null,\n border: null,\n dimensions: null,\n alignment: null,\n transform: null,\n animation: null,\n contentPadding: DEFAULT_CONTENT_PADDING, // Default 16px padding\n}\n\nexport const CardConfig: ComponentConfig<CardProps> = {\n label: 'Card',\n defaultProps,\n render: ({ image, heading, text, link, openInNewTab, shadow, background, dimensions, alignment, margin, border, transform, animation, contentPadding }) => {\n // Check if border has radius, if so don't apply rounded-lg\n const hasBorderRadius = border?.radius && border.radius > 0\n const cardClasses = cn(\n 'overflow-hidden transition-all bg-card',\n !hasBorderRadius && 'rounded-lg',\n shadowMap[shadow] || '',\n link && 'hover:shadow-lg cursor-pointer'\n )\n\n // Wrapper style for margin, dimensions, alignment, transform, animation\n const wrapperStyle: React.CSSProperties = {}\n const marginCSS = marginValueToCSS(margin)\n if (marginCSS) {\n wrapperStyle.margin = marginCSS\n }\n const dimensionsStyles = dimensionsValueToCSS(dimensions)\n if (dimensionsStyles) {\n Object.assign(wrapperStyle, dimensionsStyles)\n }\n const transformStyles = transformValueToCSS(transform)\n if (transformStyles) {\n Object.assign(wrapperStyle, transformStyles)\n }\n\n // Alignment classes for wrapper\n const alignmentValue = alignment ?? 'left'\n const alignmentClasses = cn(\n 'flex',\n alignmentValue === 'left' && 'justify-start',\n alignmentValue === 'center' && 'justify-center',\n alignmentValue === 'right' && 'justify-end'\n )\n\n // Card background styles from BackgroundValue\n const backgroundStyles = backgroundValueToCSS(background)\n const cardStyle: React.CSSProperties = {\n ...backgroundStyles,\n }\n // Note: bg-card class handles default background (theme-aware)\n // Apply border to card\n const borderStyles = borderValueToCSS(border)\n if (borderStyles) {\n Object.assign(cardStyle, borderStyles)\n }\n\n // Content section style with configurable padding\n const contentStyle: React.CSSProperties = {}\n const contentPaddingCSS = paddingValueToCSS(contentPadding)\n if (contentPaddingCSS) {\n contentStyle.padding = contentPaddingCSS\n }\n\n const cardContent = (\n <div className={cardClasses} style={cardStyle}>\n {/* Image */}\n {image?.url ? (\n <div className=\"relative aspect-video w-full overflow-hidden\">\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={image.url}\n alt={image.alt || heading || ''}\n className=\"w-full h-full object-cover\"\n />\n </div>\n ) : (\n <div className=\"aspect-video w-full bg-muted flex items-center justify-center\">\n <span className=\"text-muted-foreground\">No image</span>\n </div>\n )}\n\n {/* Content */}\n <div style={contentStyle}>\n {heading && (\n <h3 className=\"text-lg font-semibold text-foreground mb-2\">{heading}</h3>\n )}\n {text && <p className=\"text-muted-foreground text-sm\">{text}</p>}\n </div>\n </div>\n )\n\n if (link) {\n return (\n <AnimatedWrapper animation={animation}>\n <div className={alignmentClasses}>\n <a\n href={link}\n target={openInNewTab ? '_blank' : undefined}\n rel={openInNewTab ? 'noopener noreferrer' : undefined}\n className=\"block\"\n style={wrapperStyle}\n >\n {cardContent}\n </a>\n </div>\n </AnimatedWrapper>\n )\n }\n\n return (\n <AnimatedWrapper animation={animation}>\n <div className={alignmentClasses}>\n <div style={wrapperStyle}>{cardContent}</div>\n </div>\n </AnimatedWrapper>\n )\n },\n}\n"],"names":["shadowMap","cn","marginValueToCSS","paddingValueToCSS","backgroundValueToCSS","borderValueToCSS","dimensionsValueToCSS","transformValueToCSS","AnimatedWrapper","DEFAULT_CONTENT_PADDING","top","right","bottom","left","unit","linked","defaultProps","image","heading","text","link","openInNewTab","shadow","margin","background","border","dimensions","alignment","transform","animation","contentPadding","CardConfig","label","render","hasBorderRadius","radius","cardClasses","wrapperStyle","marginCSS","dimensionsStyles","Object","assign","transformStyles","alignmentValue","alignmentClasses","backgroundStyles","cardStyle","borderStyles","contentStyle","contentPaddingCSS","padding","cardContent","div","className","style","url","img","src","alt","span","h3","p","a","href","target","undefined","rel"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Divider.d.ts","sourceRoot":"","sources":["../../../src/components/interactive/Divider.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EASL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAA;AAoB/B,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,UAAU,GAAG,IAAI,CAAA;IACxB,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,aAAa,EAAE,YAAY,GAAG,IAAI,CAAA;CACnC;AAYD,eAAO,MAAM,aAAa,EAAE,eAqD3B,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/interactive/Divider.tsx"],"sourcesContent":["/**\n * Divider Component - Puck Configuration\n *\n * Horizontal line separator with customizable style.\n */\n\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n dividerStyleField,\n dividerStyleMap,\n cn,\n marginValueToCSS,\n paddingValueToCSS,\n colorValueToCSS,\n dimensionsValueToCSS,\n transformValueToCSS,\n type PaddingValue,\n type ColorValue,\n type DimensionsValue,\n type AnimationValue,\n type TransformValue,\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 { createDimensionsField } from '../../fields/DimensionsField.js'\nimport { createAnimationField } from '../../fields/AnimationField.js'\nimport { createTransformField } from '../../fields/TransformField.js'\nimport { createResetField } from '../../fields/ResetField.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 DividerProps {\n style: string\n color: ColorValue | null\n margin: PaddingValue | null\n dimensions: DimensionsValue | null\n transform: TransformValue | null\n animation: AnimationValue | null\n customPadding: PaddingValue | null\n}\n\nconst defaultProps: DividerProps = {\n style: 'solid',\n color: null,\n margin: null,\n dimensions: null,\n transform: null,\n animation: null,\n customPadding: DEFAULT_PADDING, // Default 16px horizontal padding, visible in editor\n}\n\nexport const DividerConfig: ComponentConfig = {\n label: 'Divider',\n fields: {\n _reset: createResetField({ defaultProps }),\n style: dividerStyleField,\n color: createColorPickerField({ label: 'Color' }),\n dimensions: createDimensionsField({ label: 'Dimensions' }),\n transform: createTransformField({ label: 'Transform' }),\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: ({ style, color, dimensions, margin, transform, animation, customPadding }) => {\n const dimensionsStyles = dimensionsValueToCSS(dimensions)\n\n const wrapperStyle: React.CSSProperties = {\n ...dimensionsStyles,\n }\n const marginCSS = marginValueToCSS(margin)\n if (marginCSS) {\n wrapperStyle.margin = marginCSS\n }\n const paddingCSS = paddingValueToCSS(customPadding)\n if (paddingCSS) {\n wrapperStyle.padding = paddingCSS\n }\n const transformStyles = transformValueToCSS(transform)\n if (transformStyles) {\n Object.assign(wrapperStyle, transformStyles)\n }\n\n // Only set color if explicitly provided, otherwise use CSS variable\n const customColor = colorValueToCSS(color)\n const hrStyle: React.CSSProperties | undefined = customColor\n ? { borderColor: customColor }\n : undefined\n\n return (\n <AnimatedWrapper animation={animation}>\n <div style={Object.keys(wrapperStyle).length > 0 ? wrapperStyle : undefined}>\n <hr\n className={cn(\n 'border-t border-border',\n dividerStyleMap[style] || dividerStyleMap.solid\n )}\n style={hrStyle}\n />\n </div>\n </AnimatedWrapper>\n )\n },\n}\n"],"names":["dividerStyleField","dividerStyleMap","cn","marginValueToCSS","paddingValueToCSS","colorValueToCSS","dimensionsValueToCSS","transformValueToCSS","AnimatedWrapper","createMarginField","createPaddingField","createColorPickerField","createDimensionsField","createAnimationField","createTransformField","createResetField","DEFAULT_PADDING","top","right","bottom","left","unit","linked","defaultProps","style","color","margin","dimensions","transform","animation","customPadding","DividerConfig","label","fields","_reset","render","dimensionsStyles","wrapperStyle","marginCSS","paddingCSS","padding","transformStyles","Object","assign","customColor","hrStyle","borderColor","undefined","div","keys","length","hr","className","solid"],"mappings":"AAAA;;;;CAIC;AAGD,SACEA,iBAAiB,EACjBC,eAAe,EACfC,EAAE,EACFC,gBAAgB,EAChBC,iBAAiB,EACjBC,eAAe,EACfC,oBAAoB,EACpBC,mBAAmB,QAMd,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,qBAAqB,QAAQ,kCAAiC;AACvE,SAASC,oBAAoB,QAAQ,iCAAgC;AACrE,SAASC,oBAAoB,QAAQ,iCAAgC;AACrE,SAASC,gBAAgB,QAAQ,6BAA4B;AAE7D,6EAA6E;AAC7E,MAAMC,kBAAgC;IACpCC,KAAK;IACLC,OAAO;IACPC,QAAQ;IACRC,MAAM;IACNC,MAAM;IACNC,QAAQ;AACV;AAYA,MAAMC,eAA6B;IACjCC,OAAO;IACPC,OAAO;IACPC,QAAQ;IACRC,YAAY;IACZC,WAAW;IACXC,WAAW;IACXC,eAAed;AACjB;AAEA,OAAO,MAAMe,gBAAiC;IAC5CC,OAAO;IACPC,QAAQ;QACNC,QAAQnB,iBAAiB;YAAEQ;QAAa;QACxCC,OAAOxB;QACPyB,OAAOd,uBAAuB;YAAEqB,OAAO;QAAQ;QAC/CL,YAAYf,sBAAsB;YAAEoB,OAAO;QAAa;QACxDJ,WAAWd,qBAAqB;YAAEkB,OAAO;QAAY;QACrDH,WAAWhB,qBAAqB;YAAEmB,OAAO;QAAY;QACrD,8BAA8B;QAC9BN,QAAQjB,kBAAkB;YAAEuB,OAAO;QAAS;QAC5CF,eAAepB,mBAAmB;YAAEsB,OAAO;QAAU;IACvD;IACAT;IACAY,QAAQ,CAAC,EAAEX,KAAK,EAAEC,KAAK,EAAEE,UAAU,EAAED,MAAM,EAAEE,SAAS,EAAEC,SAAS,EAAEC,aAAa,EAAE;QAChF,MAAMM,mBAAmB9B,qBAAqBqB;QAE9C,MAAMU,eAAoC;YACxC,GAAGD,gBAAgB;QACrB;QACA,MAAME,YAAYnC,iBAAiBuB;QACnC,IAAIY,WAAW;YACbD,aAAaX,MAAM,GAAGY;QACxB;QACA,MAAMC,aAAanC,kBAAkB0B;QACrC,IAAIS,YAAY;YACdF,aAAaG,OAAO,GAAGD;QACzB;QACA,MAAME,kBAAkBlC,oBAAoBqB;QAC5C,IAAIa,iBAAiB;YACnBC,OAAOC,MAAM,CAACN,cAAcI;QAC9B;QAEA,oEAAoE;QACpE,MAAMG,cAAcvC,gBAAgBoB;QACpC,MAAMoB,UAA2CD,cAC7C;YAAEE,aAAaF;QAAY,IAC3BG;QAEJ,qBACE,KAACvC;YAAgBqB,WAAWA;sBAC1B,cAAA,KAACmB;gBAAIxB,OAAOkB,OAAOO,IAAI,CAACZ,cAAca,MAAM,GAAG,IAAIb,eAAeU;0BAChE,cAAA,KAACI;oBACCC,WAAWlD,GACT,0BACAD,eAAe,CAACuB,MAAM,IAAIvB,gBAAgBoD,KAAK;oBAEjD7B,OAAOqB;;;;IAKjB;AACF,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Divider.server.d.ts","sourceRoot":"","sources":["../../../src/components/interactive/Divider.server.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAQL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAA;AAa/B,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,UAAU,GAAG,IAAI,CAAA;IACxB,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,aAAa,EAAE,YAAY,GAAG,IAAI,CAAA;CACnC;AAYD,eAAO,MAAM,aAAa,EAAE,eAAe,CAAC,YAAY,CA0CvD,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/interactive/Divider.server.tsx"],"sourcesContent":["/**\n * Divider Component - Server-safe Puck Configuration\n *\n * Horizontal line separator with customizable style.\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 dividerStyleMap,\n cn,\n marginValueToCSS,\n paddingValueToCSS,\n colorValueToCSS,\n dimensionsValueToCSS,\n transformValueToCSS,\n type PaddingValue,\n type ColorValue,\n type DimensionsValue,\n type AnimationValue,\n type TransformValue,\n} from '../../fields/shared.js'\nimport { AnimatedWrapper } from '../AnimatedWrapper.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 DividerProps {\n style: string\n color: ColorValue | null\n margin: PaddingValue | null\n dimensions: DimensionsValue | null\n transform: TransformValue | null\n animation: AnimationValue | null\n customPadding: PaddingValue | null\n}\n\nconst defaultProps: DividerProps = {\n style: 'solid',\n color: null,\n margin: null,\n dimensions: null,\n transform: null,\n animation: null,\n customPadding: DEFAULT_PADDING, // Default 16px horizontal padding\n}\n\nexport const DividerConfig: ComponentConfig<DividerProps> = {\n label: 'Divider',\n defaultProps,\n render: ({ style, color, dimensions, margin, transform, animation, customPadding }) => {\n const dimensionsStyles = dimensionsValueToCSS(dimensions)\n\n const wrapperStyle: React.CSSProperties = {\n ...dimensionsStyles,\n }\n const marginCSS = marginValueToCSS(margin)\n if (marginCSS) {\n wrapperStyle.margin = marginCSS\n }\n const paddingCSS = paddingValueToCSS(customPadding)\n if (paddingCSS) {\n wrapperStyle.padding = paddingCSS\n }\n const transformStyles = transformValueToCSS(transform)\n if (transformStyles) {\n Object.assign(wrapperStyle, transformStyles)\n }\n\n // Only set color if explicitly provided, otherwise use CSS variable\n const customColor = colorValueToCSS(color)\n const hrStyle: React.CSSProperties | undefined = customColor\n ? { borderColor: customColor }\n : undefined\n\n return (\n <AnimatedWrapper animation={animation}>\n <div style={Object.keys(wrapperStyle).length > 0 ? wrapperStyle : undefined}>\n <hr\n className={cn(\n 'border-t border-border',\n dividerStyleMap[style] || dividerStyleMap.solid\n )}\n style={hrStyle}\n />\n </div>\n </AnimatedWrapper>\n )\n },\n}\n"],"names":["dividerStyleMap","cn","marginValueToCSS","paddingValueToCSS","colorValueToCSS","dimensionsValueToCSS","transformValueToCSS","AnimatedWrapper","DEFAULT_PADDING","top","right","bottom","left","unit","linked","defaultProps","style","color","margin","dimensions","transform","animation","customPadding","DividerConfig","label","render","dimensionsStyles","wrapperStyle","marginCSS","paddingCSS","padding","transformStyles","Object","assign","customColor","hrStyle","borderColor","undefined","div","keys","length","hr","className","solid"],"mappings":"AAAA;;;;;;CAMC;AAGD,SACEA,eAAe,EACfC,EAAE,EACFC,gBAAgB,EAChBC,iBAAiB,EACjBC,eAAe,EACfC,oBAAoB,EACpBC,mBAAmB,QAMd,yBAAwB;AAC/B,SAASC,eAAe,QAAQ,wBAAuB;AAEvD,6EAA6E;AAC7E,MAAMC,kBAAgC;IACpCC,KAAK;IACLC,OAAO;IACPC,QAAQ;IACRC,MAAM;IACNC,MAAM;IACNC,QAAQ;AACV;AAYA,MAAMC,eAA6B;IACjCC,OAAO;IACPC,OAAO;IACPC,QAAQ;IACRC,YAAY;IACZC,WAAW;IACXC,WAAW;IACXC,eAAed;AACjB;AAEA,OAAO,MAAMe,gBAA+C;IAC1DC,OAAO;IACPT;IACAU,QAAQ,CAAC,EAAET,KAAK,EAAEC,KAAK,EAAEE,UAAU,EAAED,MAAM,EAAEE,SAAS,EAAEC,SAAS,EAAEC,aAAa,EAAE;QAChF,MAAMI,mBAAmBrB,qBAAqBc;QAE9C,MAAMQ,eAAoC;YACxC,GAAGD,gBAAgB;QACrB;QACA,MAAME,YAAY1B,iBAAiBgB;QACnC,IAAIU,WAAW;YACbD,aAAaT,MAAM,GAAGU;QACxB;QACA,MAAMC,aAAa1B,kBAAkBmB;QACrC,IAAIO,YAAY;YACdF,aAAaG,OAAO,GAAGD;QACzB;QACA,MAAME,kBAAkBzB,oBAAoBc;QAC5C,IAAIW,iBAAiB;YACnBC,OAAOC,MAAM,CAACN,cAAcI;QAC9B;QAEA,oEAAoE;QACpE,MAAMG,cAAc9B,gBAAgBa;QACpC,MAAMkB,UAA2CD,cAC7C;YAAEE,aAAaF;QAAY,IAC3BG;QAEJ,qBACE,KAAC9B;YAAgBc,WAAWA;sBAC1B,cAAA,KAACiB;gBAAItB,OAAOgB,OAAOO,IAAI,CAACZ,cAAca,MAAM,GAAG,IAAIb,eAAeU;0BAChE,cAAA,KAACI;oBACCC,WAAWzC,GACT,0BACAD,eAAe,CAACgB,MAAM,IAAIhB,gBAAgB2C,KAAK;oBAEjD3B,OAAOmB;;;;IAKjB;AACF,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/interactive/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/interactive/index.ts"],"sourcesContent":["/**\n * Interactive Components\n *\n * Buttons, cards, and other interactive elements.\n */\n\nexport { ButtonConfig } from './Button.js'\nexport { CardConfig } from './Card.js'\nexport { DividerConfig } from './Divider.js'\nexport { AccordionConfig } from './Accordion.js'\n"],"names":["ButtonConfig","CardConfig","DividerConfig","AccordionConfig"],"mappings":"AAAA;;;;CAIC,GAED,SAASA,YAAY,QAAQ,cAAa;AAC1C,SAASC,UAAU,QAAQ,YAAW;AACtC,SAASC,aAAa,QAAQ,eAAc;AAC5C,SAASC,eAAe,QAAQ,iBAAgB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Container.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAQL,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAA;AA6B/B,MAAM,MAAM,wBAAwB,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAA;AAE9E,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,EAAE,wBAAwB,CAAA;IACzC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,UAAU,EAAE,eAAe,CAAC,eAAe,CAAC,GAAG,eAAe,GAAG,IAAI,CAAA;IACrE,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;IAC1B,OAAO,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IAC5D,MAAM,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IAC3D,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;CACjC;AAcD,eAAO,MAAM,eAAe,EAAE,eA8K7B,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/layout/Container.tsx"],"sourcesContent":["/**\n * Container Component - Puck Configuration\n *\n * Simple organizational wrapper for grouping content.\n * Uses Puck's slot system for nesting other components.\n *\n * For two-layer layouts (full-bleed background with constrained content),\n * use the Section component instead.\n *\n * Responsive Controls:\n * - dimensions: Different max-width/min-height at different breakpoints\n * - padding: Different padding at different breakpoints\n * - margin: Different margins at different breakpoints\n * - visibility: Show/hide at different breakpoints\n */\n\nimport { useId } from 'react'\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n dimensionsValueToCSS,\n borderValueToCSS,\n paddingValueToCSS,\n marginValueToCSS,\n backgroundValueToCSS,\n responsiveValueToCSS,\n visibilityValueToCSS,\n type PaddingValue,\n type BorderValue,\n type DimensionsValue,\n type BackgroundValue,\n type AnimationValue,\n type ResponsiveValue,\n type VisibilityValue,\n} from '../../fields/shared.js'\nimport { AnimatedWrapper } from '../AnimatedWrapper.js'\nimport { createPaddingField } from '../../fields/PaddingField.js'\nimport { createBorderField } from '../../fields/BorderField.js'\nimport { createDimensionsField } from '../../fields/DimensionsField.js'\nimport { createMarginField } from '../../fields/MarginField.js'\nimport { createResetField } from '../../fields/ResetField.js'\nimport { createBackgroundField } from '../../fields/BackgroundField.js'\nimport { createAnimationField } from '../../fields/AnimationField.js'\nimport { createResponsiveField } from '../../fields/ResponsiveField.js'\nimport { createResponsiveVisibilityField } from '../../fields/ResponsiveVisibilityField.js'\n\n// Default padding (none)\nconst DEFAULT_PADDING: PaddingValue = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n unit: 'px',\n linked: true,\n}\n\n// Default dimensions (full width)\nconst DEFAULT_DIMENSIONS: DimensionsValue = {\n mode: 'full',\n alignment: 'center',\n maxWidth: { value: 100, unit: '%', enabled: true },\n}\n\nexport type ContainerSemanticElement = 'div' | 'article' | 'aside' | 'section'\n\nexport interface ContainerProps {\n content: unknown\n semanticElement: ContainerSemanticElement\n visibility: VisibilityValue | null\n dimensions: ResponsiveValue<DimensionsValue> | DimensionsValue | null\n background: BackgroundValue | null\n border: BorderValue | null\n padding: ResponsiveValue<PaddingValue> | PaddingValue | null\n margin: ResponsiveValue<PaddingValue> | PaddingValue | null\n animation: AnimationValue | null\n}\n\nconst defaultProps: ContainerProps = {\n content: [],\n semanticElement: 'div',\n visibility: null,\n dimensions: null,\n background: null,\n border: null,\n padding: null,\n margin: null,\n animation: null,\n}\n\nexport const ContainerConfig: ComponentConfig = {\n label: 'Container',\n fields: {\n _reset: createResetField({ defaultProps }),\n content: {\n type: 'slot',\n },\n // Visibility first\n visibility: createResponsiveVisibilityField({ label: 'Visibility' }),\n // Semantic element selection\n semanticElement: {\n type: 'select',\n label: 'HTML Element',\n options: [\n { label: 'Div', value: 'div' },\n { label: 'Article', value: 'article' },\n { label: 'Aside', value: 'aside' },\n { label: 'Section', value: 'section' },\n ],\n },\n // Dimensions\n dimensions: createResponsiveField({\n label: 'Dimensions',\n innerField: (config) => createDimensionsField(config),\n defaultValue: DEFAULT_DIMENSIONS,\n }),\n // Styling\n background: createBackgroundField({ label: 'Background' }),\n border: createBorderField({ label: 'Border' }),\n // Spacing\n padding: createResponsiveField({\n label: 'Padding',\n innerField: (config) => createPaddingField(config),\n defaultValue: DEFAULT_PADDING,\n }),\n margin: createResponsiveField({\n label: 'Margin',\n innerField: (config) => createMarginField(config),\n defaultValue: DEFAULT_PADDING,\n }),\n // Animation\n animation: createAnimationField({ label: 'Animation' }),\n },\n defaultProps,\n render: ({\n content: Content,\n semanticElement = 'div',\n visibility,\n dimensions,\n background,\n border,\n padding,\n margin,\n animation,\n }) => {\n // Dynamic element based on semanticElement prop\n const Wrapper = semanticElement as React.ElementType\n\n // Generate unique ID for CSS targeting\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const uniqueId = useId().replace(/:/g, '')\n const containerClass = `puck-container-${uniqueId}`\n\n // Collect all media query CSS\n const mediaQueries: string[] = []\n\n // Build container styles\n const containerStyles: React.CSSProperties = {}\n\n // Background\n const backgroundStyles = backgroundValueToCSS(background)\n if (backgroundStyles) {\n Object.assign(containerStyles, backgroundStyles)\n }\n\n // Border\n const borderStyles = borderValueToCSS(border)\n if (borderStyles) {\n Object.assign(containerStyles, borderStyles)\n }\n\n // Dimensions with responsive support\n const dimensionsResult = responsiveValueToCSS(\n dimensions,\n dimensionsValueToCSS,\n containerClass\n )\n Object.assign(containerStyles, dimensionsResult.baseStyles)\n if (dimensionsResult.mediaQueryCSS) {\n mediaQueries.push(dimensionsResult.mediaQueryCSS)\n }\n\n // Check if minHeight is set - if so, we need flex layout to make slot expand\n const hasMinHeight = (() => {\n if (!dimensions) return false\n // Check if it's a responsive value\n if (typeof dimensions === 'object' && 'xs' in dimensions) {\n const responsiveDims = dimensions as ResponsiveValue<DimensionsValue>\n return Object.values(responsiveDims).some((v) => {\n if (!v || typeof v !== 'object') return false\n const dim = v as DimensionsValue\n return dim.minHeight?.enabled && dim.minHeight?.value > 0\n })\n }\n // Non-responsive value\n const dim = dimensions as DimensionsValue\n return dim.minHeight?.enabled && dim.minHeight?.value > 0\n })()\n\n // Add flex layout when minHeight is set to make content stretch\n if (hasMinHeight) {\n containerStyles.display = 'flex'\n containerStyles.flexDirection = 'column'\n }\n\n // Padding with responsive support\n const paddingResult = responsiveValueToCSS(\n padding,\n (v) => ({ padding: paddingValueToCSS(v) }),\n containerClass\n )\n Object.assign(containerStyles, paddingResult.baseStyles)\n if (paddingResult.mediaQueryCSS) {\n mediaQueries.push(paddingResult.mediaQueryCSS)\n }\n\n // Margin with responsive support\n const marginResult = responsiveValueToCSS(\n margin,\n (v) => ({ margin: marginValueToCSS(v) }),\n containerClass\n )\n Object.assign(containerStyles, marginResult.baseStyles)\n if (marginResult.mediaQueryCSS) {\n mediaQueries.push(marginResult.mediaQueryCSS)\n }\n\n // Visibility media queries\n const visibilityCSS = visibilityValueToCSS(visibility, containerClass)\n if (visibilityCSS) {\n mediaQueries.push(visibilityCSS)\n }\n\n // Combine all media queries\n const allMediaQueryCSS = mediaQueries.join('\\n')\n\n // Check if we have any styling\n const hasStyles = Object.keys(containerStyles).length > 0\n\n // When minHeight is set, wrap Content to ensure slot expands\n const renderContent = () => {\n if (hasMinHeight) {\n return (\n <div style={{ flex: 1, display: 'flex', flexDirection: 'column', minHeight: 0 }}>\n <Content style={{ flex: 1 }} />\n </div>\n )\n }\n return <Content />\n }\n\n return (\n <AnimatedWrapper animation={animation}>\n {allMediaQueryCSS && <style>{allMediaQueryCSS}</style>}\n {hasStyles ? (\n <Wrapper className={containerClass} style={containerStyles}>\n {renderContent()}\n </Wrapper>\n ) : (\n <Content className={containerClass} />\n )}\n </AnimatedWrapper>\n )\n },\n}\n"],"names":["useId","dimensionsValueToCSS","borderValueToCSS","paddingValueToCSS","marginValueToCSS","backgroundValueToCSS","responsiveValueToCSS","visibilityValueToCSS","AnimatedWrapper","createPaddingField","createBorderField","createDimensionsField","createMarginField","createResetField","createBackgroundField","createAnimationField","createResponsiveField","createResponsiveVisibilityField","DEFAULT_PADDING","top","right","bottom","left","unit","linked","DEFAULT_DIMENSIONS","mode","alignment","maxWidth","value","enabled","defaultProps","content","semanticElement","visibility","dimensions","background","border","padding","margin","animation","ContainerConfig","label","fields","_reset","type","options","innerField","config","defaultValue","render","Content","Wrapper","uniqueId","replace","containerClass","mediaQueries","containerStyles","backgroundStyles","Object","assign","borderStyles","dimensionsResult","baseStyles","mediaQueryCSS","push","hasMinHeight","responsiveDims","values","some","v","dim","minHeight","display","flexDirection","paddingResult","marginResult","visibilityCSS","allMediaQueryCSS","join","hasStyles","keys","length","renderContent","div","style","flex","className"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Container.server.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Container.server.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAQL,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAA;AAS/B,MAAM,MAAM,wBAAwB,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAA;AAE9E,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,EAAE,wBAAwB,CAAA;IACzC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,UAAU,EAAE,eAAe,CAAC,eAAe,CAAC,GAAG,eAAe,GAAG,IAAI,CAAA;IACrE,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;IAC1B,OAAO,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IAC5D,MAAM,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IAC3D,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;CACjC;AAcD,eAAO,MAAM,eAAe,EAAE,eA0I7B,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/layout/Container.server.tsx"],"sourcesContent":["/**\n * Container Component - Server-safe Puck Configuration\n *\n * Simple organizational wrapper for grouping content.\n * Uses Puck's slot system for nesting other components.\n *\n * This is a server-safe version with minimal fields (only slot for content).\n * For the full editor version with fields, use Container.tsx\n *\n * For two-layer layouts (full-bleed background with constrained content),\n * use the Section component instead.\n *\n * Responsive Controls:\n * - dimensions: Different max-width/min-height at different breakpoints\n * - padding: Different padding at different breakpoints\n * - margin: Different margins at different breakpoints\n * - visibility: Show/hide at different breakpoints\n */\n\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n dimensionsValueToCSS,\n borderValueToCSS,\n paddingValueToCSS,\n marginValueToCSS,\n backgroundValueToCSS,\n responsiveValueToCSS,\n visibilityValueToCSS,\n type PaddingValue,\n type BorderValue,\n type DimensionsValue,\n type BackgroundValue,\n type AnimationValue,\n type ResponsiveValue,\n type VisibilityValue,\n} from '../../fields/shared.js'\nimport { AnimatedWrapper } from '../AnimatedWrapper.js'\n\n// Simple ID generator for server-side rendering\nlet idCounter = 0\nfunction generateUniqueId(): string {\n return `c${(++idCounter).toString(36)}${Math.random().toString(36).slice(2, 6)}`\n}\n\nexport type ContainerSemanticElement = 'div' | 'article' | 'aside' | 'section'\n\nexport interface ContainerProps {\n content: unknown\n semanticElement: ContainerSemanticElement\n visibility: VisibilityValue | null\n dimensions: ResponsiveValue<DimensionsValue> | DimensionsValue | null\n background: BackgroundValue | null\n border: BorderValue | null\n padding: ResponsiveValue<PaddingValue> | PaddingValue | null\n margin: ResponsiveValue<PaddingValue> | PaddingValue | null\n animation: AnimationValue | null\n}\n\nconst defaultProps: ContainerProps = {\n content: [],\n semanticElement: 'div',\n visibility: null,\n dimensions: null,\n background: null,\n border: null,\n padding: null,\n margin: null,\n animation: null,\n}\n\nexport const ContainerConfig: ComponentConfig = {\n label: 'Container',\n fields: {\n content: { type: 'slot' },\n },\n defaultProps,\n render: ({\n content: Content,\n semanticElement = 'div',\n visibility,\n dimensions,\n background,\n border,\n padding,\n margin,\n animation,\n }) => {\n // Dynamic element based on semanticElement prop\n const Wrapper = semanticElement as React.ElementType\n\n // Generate unique ID for CSS targeting (server-safe)\n const uniqueId = generateUniqueId()\n const containerClass = `puck-container-${uniqueId}`\n\n // Collect all media query CSS\n const mediaQueries: string[] = []\n\n // Build container styles\n const containerStyles: React.CSSProperties = {}\n\n // Background\n const backgroundStyles = backgroundValueToCSS(background)\n if (backgroundStyles) {\n Object.assign(containerStyles, backgroundStyles)\n }\n\n // Border\n const borderStyles = borderValueToCSS(border)\n if (borderStyles) {\n Object.assign(containerStyles, borderStyles)\n }\n\n // Dimensions with responsive support\n const dimensionsResult = responsiveValueToCSS(\n dimensions,\n dimensionsValueToCSS,\n containerClass\n )\n Object.assign(containerStyles, dimensionsResult.baseStyles)\n if (dimensionsResult.mediaQueryCSS) {\n mediaQueries.push(dimensionsResult.mediaQueryCSS)\n }\n\n // Check if minHeight is set - if so, we need flex layout to make slot expand\n const hasMinHeight = (() => {\n if (!dimensions) return false\n // Check if it's a responsive value\n if (typeof dimensions === 'object' && 'xs' in dimensions) {\n const responsiveDims = dimensions as ResponsiveValue<DimensionsValue>\n return Object.values(responsiveDims).some((v) => {\n if (!v || typeof v !== 'object') return false\n const dim = v as DimensionsValue\n return dim.minHeight?.enabled && dim.minHeight?.value > 0\n })\n }\n // Non-responsive value\n const dim = dimensions as DimensionsValue\n return dim.minHeight?.enabled && dim.minHeight?.value > 0\n })()\n\n // Add flex layout when minHeight is set to make content stretch\n if (hasMinHeight) {\n containerStyles.display = 'flex'\n containerStyles.flexDirection = 'column'\n }\n\n // Padding with responsive support\n const paddingResult = responsiveValueToCSS(\n padding,\n (v) => ({ padding: paddingValueToCSS(v) }),\n containerClass\n )\n Object.assign(containerStyles, paddingResult.baseStyles)\n if (paddingResult.mediaQueryCSS) {\n mediaQueries.push(paddingResult.mediaQueryCSS)\n }\n\n // Margin with responsive support\n const marginResult = responsiveValueToCSS(\n margin,\n (v) => ({ margin: marginValueToCSS(v) }),\n containerClass\n )\n Object.assign(containerStyles, marginResult.baseStyles)\n if (marginResult.mediaQueryCSS) {\n mediaQueries.push(marginResult.mediaQueryCSS)\n }\n\n // Visibility media queries\n const visibilityCSS = visibilityValueToCSS(visibility, containerClass)\n if (visibilityCSS) {\n mediaQueries.push(visibilityCSS)\n }\n\n // Combine all media queries\n const allMediaQueryCSS = mediaQueries.join('\\n')\n\n // Check if we have any styling\n const hasStyles = Object.keys(containerStyles).length > 0\n\n // Type assertion for Puck slot content\n const ContentSlot = Content as any\n\n // When minHeight is set, wrap Content to ensure slot expands\n const renderContent = () => {\n if (hasMinHeight) {\n return (\n <div style={{ flex: 1, display: 'flex', flexDirection: 'column', minHeight: 0 }}>\n <ContentSlot style={{ flex: 1 }} />\n </div>\n )\n }\n return <ContentSlot />\n }\n\n return (\n <AnimatedWrapper animation={animation}>\n {allMediaQueryCSS && <style>{allMediaQueryCSS}</style>}\n {hasStyles ? (\n <Wrapper className={containerClass} style={containerStyles}>\n {renderContent()}\n </Wrapper>\n ) : (\n <ContentSlot className={containerClass} />\n )}\n </AnimatedWrapper>\n )\n },\n}\n"],"names":["dimensionsValueToCSS","borderValueToCSS","paddingValueToCSS","marginValueToCSS","backgroundValueToCSS","responsiveValueToCSS","visibilityValueToCSS","AnimatedWrapper","idCounter","generateUniqueId","toString","Math","random","slice","defaultProps","content","semanticElement","visibility","dimensions","background","border","padding","margin","animation","ContainerConfig","label","fields","type","render","Content","Wrapper","uniqueId","containerClass","mediaQueries","containerStyles","backgroundStyles","Object","assign","borderStyles","dimensionsResult","baseStyles","mediaQueryCSS","push","hasMinHeight","responsiveDims","values","some","v","dim","minHeight","enabled","value","display","flexDirection","paddingResult","marginResult","visibilityCSS","allMediaQueryCSS","join","hasStyles","keys","length","ContentSlot","renderContent","div","style","flex","className"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Flex.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Flex.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAWL,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAA;AAW/B,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,oCAAoC,CAAA;AAgC3C,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,CAAA;AAEnF,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,EAAE,mBAAmB,CAAA;IACpC,SAAS,EAAE,KAAK,GAAG,QAAQ,CAAA;IAC3B,cAAc,EAAE,cAAc,GAAG,IAAI,CAAA;IACrC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAA;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;IAEvB,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAElC,aAAa,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IAClE,MAAM,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IAC3D,UAAU,EAAE,eAAe,CAAC,eAAe,CAAC,GAAG,eAAe,GAAG,IAAI,CAAA;IACrE,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;IAC1B,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAEhC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;CACnC;AAmBD,eAAO,MAAM,UAAU,EAAE,eAoLxB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/layout/Flex.tsx"],"sourcesContent":["/**\n * Flex Component - Puck Configuration\n *\n * Flexbox layout following official Puck demo patterns.\n * Uses Tailwind classes for layout, inline styles for dynamic user values.\n *\n * Supports both preset options and advanced custom styling:\n * - Background: unified BackgroundField (solid, gradient, or image)\n * - Advanced: customPadding, customWidth, border\n *\n * Responsive Controls:\n * - dimensions: Different dimensions at different breakpoints\n * - customPadding: Different padding at different breakpoints\n * - margin: Different margins at different breakpoints\n * - visibility: Show/hide at different breakpoints\n */\n\nimport { useId } from 'react'\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n cn,\n dimensionsValueToCSS,\n marginValueToCSS,\n paddingValueToCSS,\n borderValueToCSS,\n backgroundValueToCSS,\n responsiveValueToCSS,\n visibilityValueToCSS,\n justifyContentMap,\n alignItemsMap,\n type PaddingValue,\n type BorderValue,\n type DimensionsValue,\n type BackgroundValue,\n type AnimationValue,\n type ResponsiveValue,\n type VisibilityValue,\n} from '../../fields/shared.js'\nimport { AnimatedWrapper } from '../AnimatedWrapper.js'\nimport { createPaddingField } from '../../fields/PaddingField.js'\nimport { createBorderField } from '../../fields/BorderField.js'\nimport { createDimensionsField } from '../../fields/DimensionsField.js'\nimport { createResetField } from '../../fields/ResetField.js'\nimport { createMarginField } from '../../fields/MarginField.js'\nimport { createBackgroundField } from '../../fields/BackgroundField.js'\nimport { createAnimationField } from '../../fields/AnimationField.js'\nimport { createResponsiveField } from '../../fields/ResponsiveField.js'\nimport { createResponsiveVisibilityField } from '../../fields/ResponsiveVisibilityField.js'\nimport {\n createJustifyContentField,\n createAlignItemsField,\n type JustifyContent,\n type AlignItems,\n} from '../../fields/FlexAlignmentField.js'\n\n// Tailwind class mappings for flex properties\nconst flexDirectionMap: Record<string, string> = {\n row: 'flex-row',\n column: 'flex-col',\n 'row-reverse': 'flex-row-reverse',\n 'column-reverse': 'flex-col-reverse',\n}\n\nconst flexWrapMap: Record<string, string> = {\n wrap: 'flex-wrap',\n nowrap: 'flex-nowrap',\n 'wrap-reverse': 'flex-wrap-reverse',\n}\n\n// Default values for responsive fields\nconst DEFAULT_PADDING: PaddingValue = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n unit: 'px',\n linked: true,\n}\n\nconst DEFAULT_DIMENSIONS: DimensionsValue = {\n mode: 'full',\n alignment: 'center',\n maxWidth: { value: 100, unit: '%', enabled: true },\n}\n\nexport type FlexSemanticElement = 'div' | 'nav' | 'ul' | 'ol' | 'aside' | 'section'\n\nexport interface FlexProps {\n content: unknown\n semanticElement: FlexSemanticElement\n direction: 'row' | 'column'\n justifyContent: JustifyContent | null\n alignItems: AlignItems | null\n gap: number\n wrap: 'wrap' | 'nowrap'\n // Background\n background: BackgroundValue | null\n // Advanced custom options\n customPadding: ResponsiveValue<PaddingValue> | PaddingValue | null\n margin: ResponsiveValue<PaddingValue> | PaddingValue | null\n dimensions: ResponsiveValue<DimensionsValue> | DimensionsValue | null\n border: BorderValue | null\n animation: AnimationValue | null\n // Responsive visibility\n visibility: VisibilityValue | null\n}\n\nconst defaultProps: FlexProps = {\n content: [],\n semanticElement: 'div',\n direction: 'row',\n justifyContent: null,\n alignItems: null,\n gap: 24,\n wrap: 'wrap',\n background: null,\n customPadding: null,\n margin: null,\n dimensions: null,\n border: null,\n animation: null,\n visibility: null,\n}\n\nexport const FlexConfig: ComponentConfig = {\n label: 'Flex',\n fields: {\n _reset: createResetField({ defaultProps }),\n content: {\n type: 'slot',\n disallow: ['Section'],\n },\n // Responsive visibility control\n visibility: createResponsiveVisibilityField({ label: 'Visibility' }),\n // Semantic element selection\n semanticElement: {\n type: 'select',\n label: 'HTML Element',\n options: [\n { label: 'Div', value: 'div' },\n { label: 'Nav', value: 'nav' },\n { label: 'Unordered List', value: 'ul' },\n { label: 'Ordered List', value: 'ol' },\n { label: 'Aside', value: 'aside' },\n { label: 'Section', value: 'section' },\n ],\n },\n direction: {\n type: 'radio',\n label: 'Direction',\n options: [\n { label: 'Row', value: 'row' },\n { label: 'Column', value: 'column' },\n ],\n },\n justifyContent: createJustifyContentField({ label: 'Justify Content' }),\n alignItems: createAlignItemsField({ label: 'Align Items' }),\n gap: {\n type: 'number',\n label: 'Gap (px)',\n min: 0,\n },\n wrap: {\n type: 'radio',\n label: 'Wrap',\n options: [\n { label: 'Yes', value: 'wrap' },\n { label: 'No', value: 'nowrap' },\n ],\n },\n // Background\n background: createBackgroundField({ label: 'Background' }),\n // Advanced custom options\n border: createBorderField({ label: 'Border' }),\n // Responsive dimensions\n dimensions: createResponsiveField({\n label: 'Dimensions (Responsive)',\n innerField: (config) => createDimensionsField(config),\n defaultValue: DEFAULT_DIMENSIONS,\n }),\n animation: createAnimationField({ label: 'Animation' }),\n // Spacing (grouped at bottom) - Responsive\n margin: createResponsiveField({\n label: 'Margin (Responsive)',\n innerField: (config) => createMarginField(config),\n defaultValue: DEFAULT_PADDING,\n }),\n customPadding: createResponsiveField({\n label: 'Padding (Responsive)',\n innerField: (config) => createPaddingField(config),\n defaultValue: DEFAULT_PADDING,\n }),\n },\n defaultProps,\n render: ({\n content: Content,\n semanticElement = 'div',\n direction,\n justifyContent,\n alignItems,\n gap,\n wrap,\n background,\n customPadding,\n margin,\n dimensions,\n border,\n animation,\n visibility,\n }) => {\n // Dynamic element based on semanticElement prop\n const Wrapper = semanticElement as React.ElementType\n\n // Generate unique IDs for CSS targeting\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const uniqueId = useId().replace(/:/g, '')\n const wrapperClass = `puck-flex-${uniqueId}`\n const contentClass = `puck-flex-content-${uniqueId}`\n\n // Collect all media query CSS\n const mediaQueries: string[] = []\n\n // Generate styles from BackgroundValue\n const backgroundStyles = backgroundValueToCSS(background)\n\n // Build wrapper styles\n const wrapperStyles: React.CSSProperties = {\n ...backgroundStyles,\n }\n\n // Add padding with responsive support\n const paddingResult = responsiveValueToCSS(\n customPadding,\n (v) => ({ padding: paddingValueToCSS(v) }),\n wrapperClass\n )\n Object.assign(wrapperStyles, paddingResult.baseStyles)\n if (paddingResult.mediaQueryCSS) {\n mediaQueries.push(paddingResult.mediaQueryCSS)\n }\n\n // Add border if set\n const borderStyles = borderValueToCSS(border)\n if (borderStyles) {\n Object.assign(wrapperStyles, borderStyles)\n }\n\n // Apply margin with responsive support\n const marginResult = responsiveValueToCSS(\n margin,\n (v) => ({ margin: marginValueToCSS(v) }),\n wrapperClass\n )\n Object.assign(wrapperStyles, marginResult.baseStyles)\n if (marginResult.mediaQueryCSS) {\n mediaQueries.push(marginResult.mediaQueryCSS)\n }\n\n // Use dimensions with responsive support\n const dimensionsResult = responsiveValueToCSS(\n dimensions,\n dimensionsValueToCSS,\n contentClass\n )\n\n // Visibility media queries\n const visibilityCSS = visibilityValueToCSS(visibility, wrapperClass)\n if (visibilityCSS) {\n mediaQueries.push(visibilityCSS)\n }\n\n // Build Tailwind classes for flex layout\n // [&>*]:min-w-0 prevents flex children from overflowing (CSS best practice)\n const contentClasses = cn(\n 'flex w-full min-h-[50px]',\n flexDirectionMap[direction],\n justifyContent && justifyContentMap[justifyContent],\n alignItems && alignItemsMap[alignItems],\n flexWrapMap[wrap],\n '[&>*]:min-w-0',\n contentClass,\n )\n\n // Dynamic styles that need inline (user-controlled values)\n const contentStyles: React.CSSProperties = {\n gap,\n ...dimensionsResult.baseStyles,\n }\n if (dimensionsResult.mediaQueryCSS) {\n mediaQueries.push(dimensionsResult.mediaQueryCSS)\n }\n\n // Combine all media queries\n const allMediaQueryCSS = mediaQueries.join('\\n')\n\n return (\n <AnimatedWrapper animation={animation}>\n {allMediaQueryCSS && <style>{allMediaQueryCSS}</style>}\n <Wrapper className={wrapperClass} style={wrapperStyles}>\n <Content className={contentClasses} style={contentStyles} />\n </Wrapper>\n </AnimatedWrapper>\n )\n },\n}\n"],"names":["useId","cn","dimensionsValueToCSS","marginValueToCSS","paddingValueToCSS","borderValueToCSS","backgroundValueToCSS","responsiveValueToCSS","visibilityValueToCSS","justifyContentMap","alignItemsMap","AnimatedWrapper","createPaddingField","createBorderField","createDimensionsField","createResetField","createMarginField","createBackgroundField","createAnimationField","createResponsiveField","createResponsiveVisibilityField","createJustifyContentField","createAlignItemsField","flexDirectionMap","row","column","flexWrapMap","wrap","nowrap","DEFAULT_PADDING","top","right","bottom","left","unit","linked","DEFAULT_DIMENSIONS","mode","alignment","maxWidth","value","enabled","defaultProps","content","semanticElement","direction","justifyContent","alignItems","gap","background","customPadding","margin","dimensions","border","animation","visibility","FlexConfig","label","fields","_reset","type","disallow","options","min","innerField","config","defaultValue","render","Content","Wrapper","uniqueId","replace","wrapperClass","contentClass","mediaQueries","backgroundStyles","wrapperStyles","paddingResult","v","padding","Object","assign","baseStyles","mediaQueryCSS","push","borderStyles","marginResult","dimensionsResult","visibilityCSS","contentClasses","contentStyles","allMediaQueryCSS","join","style","className"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Flex.server.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Flex.server.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAWL,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAA;AAU/B,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,eAAe,GAAG,cAAc,CAAA;AACpG,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAA;AAgBzE,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,CAAA;AAEnF,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,EAAE,mBAAmB,CAAA;IACpC,SAAS,EAAE,KAAK,GAAG,QAAQ,CAAA;IAC3B,cAAc,EAAE,cAAc,GAAG,IAAI,CAAA;IACrC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAA;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;IAEvB,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAElC,aAAa,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IAClE,MAAM,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IAC3D,UAAU,EAAE,eAAe,CAAC,eAAe,CAAC,GAAG,eAAe,GAAG,IAAI,CAAA;IACrE,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;IAC1B,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAEhC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;CACnC;AAmBD,eAAO,MAAM,UAAU,EAAE,eAsHxB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/layout/Flex.server.tsx"],"sourcesContent":["/**\n * Flex Component - Server-safe Puck Configuration\n *\n * Flexbox layout following official Puck demo patterns.\n * Uses Tailwind classes for layout, inline styles for dynamic user values.\n *\n * This is a server-safe version with NO fields property (only slot for content).\n * For the full editor version with fields, use Flex.tsx\n *\n * Responsive Controls:\n * - dimensions: Different dimensions at different breakpoints\n * - customPadding: Different padding at different breakpoints\n * - margin: Different margins at different breakpoints\n * - visibility: Show/hide at different breakpoints\n */\n\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n cn,\n dimensionsValueToCSS,\n marginValueToCSS,\n paddingValueToCSS,\n borderValueToCSS,\n backgroundValueToCSS,\n responsiveValueToCSS,\n visibilityValueToCSS,\n justifyContentMap,\n alignItemsMap,\n type PaddingValue,\n type BorderValue,\n type DimensionsValue,\n type BackgroundValue,\n type AnimationValue,\n type ResponsiveValue,\n type VisibilityValue,\n} from '../../fields/shared.js'\nimport { AnimatedWrapper } from '../AnimatedWrapper.js'\n\n// Simple ID generator for server-side rendering\nlet idCounter = 0\nfunction generateUniqueId(): string {\n return `f${(++idCounter).toString(36)}${Math.random().toString(36).slice(2, 6)}`\n}\n\n// Inline type definitions to avoid importing from client-only FlexAlignmentField\nexport type JustifyContent = 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around'\nexport type AlignItems = 'flex-start' | 'center' | 'flex-end' | 'stretch'\n\n// Tailwind class mappings for flex properties\nconst flexDirectionMap: Record<string, string> = {\n row: 'flex-row',\n column: 'flex-col',\n 'row-reverse': 'flex-row-reverse',\n 'column-reverse': 'flex-col-reverse',\n}\n\nconst flexWrapMap: Record<string, string> = {\n wrap: 'flex-wrap',\n nowrap: 'flex-nowrap',\n 'wrap-reverse': 'flex-wrap-reverse',\n}\n\nexport type FlexSemanticElement = 'div' | 'nav' | 'ul' | 'ol' | 'aside' | 'section'\n\nexport interface FlexProps {\n content: unknown\n semanticElement: FlexSemanticElement\n direction: 'row' | 'column'\n justifyContent: JustifyContent | null\n alignItems: AlignItems | null\n gap: number\n wrap: 'wrap' | 'nowrap'\n // Background\n background: BackgroundValue | null\n // Advanced custom options\n customPadding: ResponsiveValue<PaddingValue> | PaddingValue | null\n margin: ResponsiveValue<PaddingValue> | PaddingValue | null\n dimensions: ResponsiveValue<DimensionsValue> | DimensionsValue | null\n border: BorderValue | null\n animation: AnimationValue | null\n // Responsive visibility\n visibility: VisibilityValue | null\n}\n\nconst defaultProps: FlexProps = {\n content: [],\n semanticElement: 'div',\n direction: 'row',\n justifyContent: null,\n alignItems: null,\n gap: 24,\n wrap: 'wrap',\n background: null,\n customPadding: null,\n margin: null,\n dimensions: null,\n border: null,\n animation: null,\n visibility: null,\n}\n\nexport const FlexConfig: ComponentConfig = {\n label: 'Flex',\n fields: {\n content: { type: 'slot' },\n },\n defaultProps,\n render: ({\n content: Content,\n semanticElement = 'div',\n direction,\n justifyContent,\n alignItems,\n gap,\n wrap,\n background,\n customPadding,\n margin,\n dimensions,\n border,\n animation,\n visibility,\n }) => {\n // Dynamic element based on semanticElement prop\n const Wrapper = semanticElement as React.ElementType\n\n // Generate unique IDs for CSS targeting (server-safe)\n const uniqueId = generateUniqueId()\n const wrapperClass = `puck-flex-${uniqueId}`\n const contentClass = `puck-flex-content-${uniqueId}`\n\n // Collect all media query CSS\n const mediaQueries: string[] = []\n\n // Generate styles from BackgroundValue\n const backgroundStyles = backgroundValueToCSS(background)\n\n // Build wrapper styles\n const wrapperStyles: React.CSSProperties = {\n ...backgroundStyles,\n }\n\n // Add padding with responsive support\n const paddingResult = responsiveValueToCSS(\n customPadding,\n (v) => ({ padding: paddingValueToCSS(v) }),\n wrapperClass\n )\n Object.assign(wrapperStyles, paddingResult.baseStyles)\n if (paddingResult.mediaQueryCSS) {\n mediaQueries.push(paddingResult.mediaQueryCSS)\n }\n\n // Add border if set\n const borderStyles = borderValueToCSS(border)\n if (borderStyles) {\n Object.assign(wrapperStyles, borderStyles)\n }\n\n // Apply margin with responsive support\n const marginResult = responsiveValueToCSS(\n margin,\n (v) => ({ margin: marginValueToCSS(v) }),\n wrapperClass\n )\n Object.assign(wrapperStyles, marginResult.baseStyles)\n if (marginResult.mediaQueryCSS) {\n mediaQueries.push(marginResult.mediaQueryCSS)\n }\n\n // Use dimensions with responsive support\n const dimensionsResult = responsiveValueToCSS(\n dimensions,\n dimensionsValueToCSS,\n contentClass\n )\n\n // Visibility media queries\n const visibilityCSS = visibilityValueToCSS(visibility, wrapperClass)\n if (visibilityCSS) {\n mediaQueries.push(visibilityCSS)\n }\n\n // Build Tailwind classes for flex layout\n // [&>*]:min-w-0 prevents flex children from overflowing (CSS best practice)\n const contentClasses = cn(\n 'flex w-full min-h-[50px]',\n flexDirectionMap[direction],\n justifyContent && justifyContentMap[justifyContent],\n alignItems && alignItemsMap[alignItems],\n flexWrapMap[wrap],\n '[&>*]:min-w-0',\n contentClass,\n )\n\n // Dynamic styles that need inline (user-controlled values)\n const contentStyles: React.CSSProperties = {\n gap,\n ...dimensionsResult.baseStyles,\n }\n if (dimensionsResult.mediaQueryCSS) {\n mediaQueries.push(dimensionsResult.mediaQueryCSS)\n }\n\n // Combine all media queries\n const allMediaQueryCSS = mediaQueries.join('\\n')\n\n // Type assertion for Puck slot content - cast to any to avoid complex React type issues\n const ContentSlot = Content as any\n\n return (\n <AnimatedWrapper animation={animation}>\n {allMediaQueryCSS && <style>{allMediaQueryCSS}</style>}\n <Wrapper className={wrapperClass} style={wrapperStyles}>\n <ContentSlot className={contentClasses} style={contentStyles} />\n </Wrapper>\n </AnimatedWrapper>\n )\n },\n}\n"],"names":["cn","dimensionsValueToCSS","marginValueToCSS","paddingValueToCSS","borderValueToCSS","backgroundValueToCSS","responsiveValueToCSS","visibilityValueToCSS","justifyContentMap","alignItemsMap","AnimatedWrapper","idCounter","generateUniqueId","toString","Math","random","slice","flexDirectionMap","row","column","flexWrapMap","wrap","nowrap","defaultProps","content","semanticElement","direction","justifyContent","alignItems","gap","background","customPadding","margin","dimensions","border","animation","visibility","FlexConfig","label","fields","type","render","Content","Wrapper","uniqueId","wrapperClass","contentClass","mediaQueries","backgroundStyles","wrapperStyles","paddingResult","v","padding","Object","assign","baseStyles","mediaQueryCSS","push","borderStyles","marginResult","dimensionsResult","visibilityCSS","contentClasses","contentStyles","allMediaQueryCSS","join","ContentSlot","style","className"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Grid.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Grid.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAUL,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAA;AA4B/B,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAA;AAErD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,EAAE,mBAAmB,CAAA;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;IAEX,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAElC,aAAa,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IAClE,UAAU,EAAE,eAAe,CAAC,eAAe,CAAC,GAAG,eAAe,GAAG,IAAI,CAAA;IACrE,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;IAC1B,MAAM,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IAC3D,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAEhC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;CACnC;AAgBD,eAAO,MAAM,UAAU,EAAE,eA6KxB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/layout/Grid.tsx"],"sourcesContent":["/**\n * Grid Component - Puck Configuration\n *\n * CSS Grid layout following official Puck demo patterns.\n * Responsive: stacks on mobile (flex column), grid on desktop (md+).\n * Uses Tailwind classes for layout, inline styles for dynamic user values.\n *\n * Supports both preset options and advanced custom styling:\n * - Background: unified BackgroundField (solid, gradient, or image)\n * - Advanced: customPadding, customWidth, border\n *\n * Responsive Controls:\n * - gap: Different gap at different breakpoints\n * - visibility: Show/hide at different breakpoints\n */\n\nimport { useId } from 'react'\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n cn,\n dimensionsValueToCSS,\n marginValueToCSS,\n paddingValueToCSS,\n borderValueToCSS,\n backgroundValueToCSS,\n responsiveValueToCSS,\n visibilityValueToCSS,\n isResponsiveValue,\n type PaddingValue,\n type BorderValue,\n type DimensionsValue,\n type BackgroundValue,\n type AnimationValue,\n type ResponsiveValue,\n type VisibilityValue,\n} from '../../fields/shared.js'\nimport { AnimatedWrapper } from '../AnimatedWrapper.js'\nimport { createPaddingField } from '../../fields/PaddingField.js'\nimport { createBorderField } from '../../fields/BorderField.js'\nimport { createDimensionsField } from '../../fields/DimensionsField.js'\nimport { createMarginField } from '../../fields/MarginField.js'\nimport { createResetField } from '../../fields/ResetField.js'\nimport { createBackgroundField } from '../../fields/BackgroundField.js'\nimport { createAnimationField } from '../../fields/AnimationField.js'\nimport { createResponsiveField } from '../../fields/ResponsiveField.js'\nimport { createResponsiveVisibilityField } from '../../fields/ResponsiveVisibilityField.js'\n\n// Default values for responsive fields\nconst DEFAULT_PADDING: PaddingValue = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n unit: 'px',\n linked: true,\n}\n\nconst DEFAULT_DIMENSIONS: DimensionsValue = {\n mode: 'full',\n alignment: 'center',\n maxWidth: { value: 100, unit: '%', enabled: true },\n}\n\nexport type GridSemanticElement = 'div' | 'ul' | 'ol'\n\nexport interface GridProps {\n content: unknown\n semanticElement: GridSemanticElement\n numColumns: number\n gap: number\n // Background\n background: BackgroundValue | null\n // Advanced custom options\n customPadding: ResponsiveValue<PaddingValue> | PaddingValue | null\n dimensions: ResponsiveValue<DimensionsValue> | DimensionsValue | null\n border: BorderValue | null\n margin: ResponsiveValue<PaddingValue> | PaddingValue | null\n animation: AnimationValue | null\n // Responsive visibility\n visibility: VisibilityValue | null\n}\n\nconst defaultProps: GridProps = {\n content: [],\n semanticElement: 'div',\n numColumns: 3,\n gap: 24,\n background: null,\n customPadding: null,\n dimensions: null,\n border: null,\n margin: null,\n animation: null,\n visibility: null,\n}\n\nexport const GridConfig: ComponentConfig = {\n label: 'Grid',\n fields: {\n _reset: createResetField({ defaultProps }),\n content: {\n type: 'slot',\n disallow: ['Section'],\n },\n // Responsive visibility control\n visibility: createResponsiveVisibilityField({ label: 'Visibility' }),\n // Semantic element selection\n semanticElement: {\n type: 'select',\n label: 'HTML Element',\n options: [\n { label: 'Div', value: 'div' },\n { label: 'Unordered List', value: 'ul' },\n { label: 'Ordered List', value: 'ol' },\n ],\n },\n numColumns: {\n type: 'number',\n label: 'Number of Columns',\n min: 1,\n max: 12,\n },\n gap: {\n type: 'number',\n label: 'Gap (px)',\n min: 0,\n },\n // Background\n background: createBackgroundField({ label: 'Background' }),\n // Advanced custom options\n border: createBorderField({ label: 'Border' }),\n // Responsive dimensions\n dimensions: createResponsiveField({\n label: 'Dimensions (Responsive)',\n innerField: (config) => createDimensionsField(config),\n defaultValue: DEFAULT_DIMENSIONS,\n }),\n animation: createAnimationField({ label: 'Animation' }),\n // Spacing (grouped at bottom) - Responsive\n margin: createResponsiveField({\n label: 'Margin (Responsive)',\n innerField: (config) => createMarginField(config),\n defaultValue: DEFAULT_PADDING,\n }),\n customPadding: createResponsiveField({\n label: 'Padding (Responsive)',\n innerField: (config) => createPaddingField(config),\n defaultValue: DEFAULT_PADDING,\n }),\n },\n defaultProps,\n render: ({\n content: Content,\n semanticElement = 'div',\n numColumns,\n gap,\n background,\n customPadding,\n dimensions,\n border,\n margin,\n animation,\n visibility,\n }) => {\n // Dynamic element based on semanticElement prop\n const Wrapper = semanticElement as React.ElementType\n\n // Generate unique IDs for CSS targeting\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const uniqueId = useId().replace(/:/g, '')\n const wrapperClass = `puck-grid-${uniqueId}`\n const contentClass = `puck-grid-content-${uniqueId}`\n\n // Collect all media query CSS\n const mediaQueries: string[] = []\n\n // Generate styles from BackgroundValue\n const backgroundStyles = backgroundValueToCSS(background)\n\n // Build wrapper styles\n const wrapperStyles: React.CSSProperties = {\n ...backgroundStyles,\n }\n\n // Add padding with responsive support\n const paddingResult = responsiveValueToCSS(\n customPadding,\n (v) => ({ padding: paddingValueToCSS(v) }),\n wrapperClass\n )\n Object.assign(wrapperStyles, paddingResult.baseStyles)\n if (paddingResult.mediaQueryCSS) {\n mediaQueries.push(paddingResult.mediaQueryCSS)\n }\n\n // Add border if set\n const borderStyles = borderValueToCSS(border)\n if (borderStyles) {\n Object.assign(wrapperStyles, borderStyles)\n }\n\n // Add margin with responsive support\n const marginResult = responsiveValueToCSS(\n margin,\n (v) => ({ margin: marginValueToCSS(v) }),\n wrapperClass\n )\n Object.assign(wrapperStyles, marginResult.baseStyles)\n if (marginResult.mediaQueryCSS) {\n mediaQueries.push(marginResult.mediaQueryCSS)\n }\n\n // Use dimensions with responsive support\n const dimensionsResult = responsiveValueToCSS(\n dimensions,\n dimensionsValueToCSS,\n contentClass\n )\n\n // Visibility media queries\n const visibilityCSS = visibilityValueToCSS(visibility, wrapperClass)\n if (visibilityCSS) {\n mediaQueries.push(visibilityCSS)\n }\n\n // Tailwind classes for responsive grid: flex column on mobile, grid on md+\n const contentClasses = cn(\n 'flex flex-col w-full',\n 'md:grid',\n contentClass,\n )\n\n // Dynamic styles that need inline (user-controlled values: gap, columns)\n const contentStyles: React.CSSProperties = {\n gap,\n ...dimensionsResult.baseStyles,\n }\n if (dimensionsResult.mediaQueryCSS) {\n mediaQueries.push(dimensionsResult.mediaQueryCSS)\n }\n\n // Grid template columns must be inline since numColumns is dynamic\n const gridStyles: React.CSSProperties = {\n ...contentStyles,\n '--grid-cols': numColumns,\n } as React.CSSProperties\n\n // Combine all media queries\n const allMediaQueryCSS = mediaQueries.join('\\n')\n\n return (\n <AnimatedWrapper animation={animation}>\n {allMediaQueryCSS && <style>{allMediaQueryCSS}</style>}\n <Wrapper className={wrapperClass} style={wrapperStyles}>\n <Content\n className={contentClasses}\n style={gridStyles}\n />\n <style>{`\n @media (min-width: 768px) {\n .flex.md\\\\:grid {\n grid-template-columns: repeat(var(--grid-cols), 1fr);\n }\n }\n `}</style>\n </Wrapper>\n </AnimatedWrapper>\n )\n },\n}\n"],"names":["useId","cn","dimensionsValueToCSS","marginValueToCSS","paddingValueToCSS","borderValueToCSS","backgroundValueToCSS","responsiveValueToCSS","visibilityValueToCSS","AnimatedWrapper","createPaddingField","createBorderField","createDimensionsField","createMarginField","createResetField","createBackgroundField","createAnimationField","createResponsiveField","createResponsiveVisibilityField","DEFAULT_PADDING","top","right","bottom","left","unit","linked","DEFAULT_DIMENSIONS","mode","alignment","maxWidth","value","enabled","defaultProps","content","semanticElement","numColumns","gap","background","customPadding","dimensions","border","margin","animation","visibility","GridConfig","label","fields","_reset","type","disallow","options","min","max","innerField","config","defaultValue","render","Content","Wrapper","uniqueId","replace","wrapperClass","contentClass","mediaQueries","backgroundStyles","wrapperStyles","paddingResult","v","padding","Object","assign","baseStyles","mediaQueryCSS","push","borderStyles","marginResult","dimensionsResult","visibilityCSS","contentClasses","contentStyles","gridStyles","allMediaQueryCSS","join","style","className"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Grid.server.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Grid.server.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EASL,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAA;AAS/B,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAA;AAErD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,EAAE,mBAAmB,CAAA;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;IAEX,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAElC,aAAa,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IAClE,UAAU,EAAE,eAAe,CAAC,eAAe,CAAC,GAAG,eAAe,GAAG,IAAI,CAAA;IACrE,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;IAC1B,MAAM,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IAC3D,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAEhC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;CACnC;AAgBD,eAAO,MAAM,UAAU,EAAE,eA2HxB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/layout/Grid.server.tsx"],"sourcesContent":["/**\n * Grid Component - Server-safe Puck Configuration\n *\n * CSS Grid layout following official Puck demo patterns.\n * Responsive: stacks on mobile (flex column), grid on desktop (md+).\n * Uses Tailwind classes for layout, inline styles for dynamic user values.\n *\n * This is a server-safe version with NO fields property (only slot for content).\n * For the full editor version with fields, use Grid.tsx\n *\n * Responsive Controls:\n * - dimensions: Different dimensions at different breakpoints\n * - customPadding: Different padding at different breakpoints\n * - margin: Different margins at different breakpoints\n * - visibility: Show/hide at different breakpoints\n */\n\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n cn,\n dimensionsValueToCSS,\n marginValueToCSS,\n paddingValueToCSS,\n borderValueToCSS,\n backgroundValueToCSS,\n responsiveValueToCSS,\n visibilityValueToCSS,\n type PaddingValue,\n type BorderValue,\n type DimensionsValue,\n type BackgroundValue,\n type AnimationValue,\n type ResponsiveValue,\n type VisibilityValue,\n} from '../../fields/shared.js'\nimport { AnimatedWrapper } from '../AnimatedWrapper.js'\n\n// Simple ID generator for server-side rendering\nlet idCounter = 0\nfunction generateUniqueId(): string {\n return `g${(++idCounter).toString(36)}${Math.random().toString(36).slice(2, 6)}`\n}\n\nexport type GridSemanticElement = 'div' | 'ul' | 'ol'\n\nexport interface GridProps {\n content: unknown\n semanticElement: GridSemanticElement\n numColumns: number\n gap: number\n // Background\n background: BackgroundValue | null\n // Advanced custom options\n customPadding: ResponsiveValue<PaddingValue> | PaddingValue | null\n dimensions: ResponsiveValue<DimensionsValue> | DimensionsValue | null\n border: BorderValue | null\n margin: ResponsiveValue<PaddingValue> | PaddingValue | null\n animation: AnimationValue | null\n // Responsive visibility\n visibility: VisibilityValue | null\n}\n\nconst defaultProps: GridProps = {\n content: [],\n semanticElement: 'div',\n numColumns: 3,\n gap: 24,\n background: null,\n customPadding: null,\n dimensions: null,\n border: null,\n margin: null,\n animation: null,\n visibility: null,\n}\n\nexport const GridConfig: ComponentConfig = {\n label: 'Grid',\n fields: {\n content: { type: 'slot' },\n },\n defaultProps,\n render: ({\n content: Content,\n semanticElement = 'div',\n numColumns,\n gap,\n background,\n customPadding,\n dimensions,\n border,\n margin,\n animation,\n visibility,\n }) => {\n // Dynamic element based on semanticElement prop\n const Wrapper = semanticElement as React.ElementType\n\n // Generate unique IDs for CSS targeting (server-safe)\n const uniqueId = generateUniqueId()\n const wrapperClass = `puck-grid-${uniqueId}`\n const contentClass = `puck-grid-content-${uniqueId}`\n\n // Collect all media query CSS\n const mediaQueries: string[] = []\n\n // Generate styles from BackgroundValue\n const backgroundStyles = backgroundValueToCSS(background)\n\n // Build wrapper styles\n const wrapperStyles: React.CSSProperties = {\n ...backgroundStyles,\n }\n\n // Add padding with responsive support\n const paddingResult = responsiveValueToCSS(\n customPadding,\n (v) => ({ padding: paddingValueToCSS(v) }),\n wrapperClass\n )\n Object.assign(wrapperStyles, paddingResult.baseStyles)\n if (paddingResult.mediaQueryCSS) {\n mediaQueries.push(paddingResult.mediaQueryCSS)\n }\n\n // Add border if set\n const borderStyles = borderValueToCSS(border)\n if (borderStyles) {\n Object.assign(wrapperStyles, borderStyles)\n }\n\n // Add margin with responsive support\n const marginResult = responsiveValueToCSS(\n margin,\n (v) => ({ margin: marginValueToCSS(v) }),\n wrapperClass\n )\n Object.assign(wrapperStyles, marginResult.baseStyles)\n if (marginResult.mediaQueryCSS) {\n mediaQueries.push(marginResult.mediaQueryCSS)\n }\n\n // Use dimensions with responsive support\n const dimensionsResult = responsiveValueToCSS(\n dimensions,\n dimensionsValueToCSS,\n contentClass\n )\n\n // Visibility media queries\n const visibilityCSS = visibilityValueToCSS(visibility, wrapperClass)\n if (visibilityCSS) {\n mediaQueries.push(visibilityCSS)\n }\n\n // Tailwind classes for responsive grid: flex column on mobile, grid on md+\n const contentClasses = cn(\n 'flex flex-col w-full',\n 'md:grid',\n contentClass,\n )\n\n // Dynamic styles that need inline (user-controlled values: gap, columns)\n const contentStyles: React.CSSProperties = {\n gap,\n ...dimensionsResult.baseStyles,\n }\n if (dimensionsResult.mediaQueryCSS) {\n mediaQueries.push(dimensionsResult.mediaQueryCSS)\n }\n\n // Grid template columns must be inline since numColumns is dynamic\n const gridStyles: React.CSSProperties = {\n ...contentStyles,\n '--grid-cols': numColumns,\n } as React.CSSProperties\n\n // Combine all media queries\n const allMediaQueryCSS = mediaQueries.join('\\n')\n\n // Type assertion for Puck slot content - cast to any to avoid complex React type issues\n const ContentSlot = Content as any\n\n return (\n <AnimatedWrapper animation={animation}>\n {allMediaQueryCSS && <style>{allMediaQueryCSS}</style>}\n <Wrapper className={wrapperClass} style={wrapperStyles}>\n <ContentSlot className={contentClasses} style={gridStyles} />\n <style>{`\n @media (min-width: 768px) {\n .flex.md\\\\:grid {\n grid-template-columns: repeat(var(--grid-cols), 1fr);\n }\n }\n `}</style>\n </Wrapper>\n </AnimatedWrapper>\n )\n },\n}\n"],"names":["cn","dimensionsValueToCSS","marginValueToCSS","paddingValueToCSS","borderValueToCSS","backgroundValueToCSS","responsiveValueToCSS","visibilityValueToCSS","AnimatedWrapper","idCounter","generateUniqueId","toString","Math","random","slice","defaultProps","content","semanticElement","numColumns","gap","background","customPadding","dimensions","border","margin","animation","visibility","GridConfig","label","fields","type","render","Content","Wrapper","uniqueId","wrapperClass","contentClass","mediaQueries","backgroundStyles","wrapperStyles","paddingResult","v","padding","Object","assign","baseStyles","mediaQueryCSS","push","borderStyles","marginResult","dimensionsResult","visibilityCSS","contentClasses","contentStyles","gridStyles","allMediaQueryCSS","join","ContentSlot","style","className"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Section.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Section.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EASL,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAA;AAiD/B,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAA;AAE5G,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,EAAE,eAAe,CAAA;IAEhC,iBAAiB,EAAE,eAAe,GAAG,IAAI,CAAA;IACzC,aAAa,EAAE,WAAW,GAAG,IAAI,CAAA;IACjC,cAAc,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IACnE,aAAa,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IAElE,iBAAiB,EAAE,eAAe,CAAC,eAAe,CAAC,GAAG,eAAe,GAAG,IAAI,CAAA;IAC5E,iBAAiB,EAAE,eAAe,GAAG,IAAI,CAAA;IACzC,aAAa,EAAE,WAAW,GAAG,IAAI,CAAA;IACjC,cAAc,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IAEnE,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;CACnC;AAqBD,eAAO,MAAM,aAAa,EAAE,eA8N3B,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/layout/Section.tsx"],"sourcesContent":["/**\n * Section Component - Puck Configuration\n *\n * Full-width section with two-layer architecture:\n * - Section layer (outer): Full-bleed background, border, padding, margin\n * - Content layer (inner): Constrained content area with max-width, background, border, padding\n *\n * This design enables common patterns like hero sections with full-bleed backgrounds\n * but centered content.\n *\n * Responsive Controls:\n * - contentDimensions: Different max-width/min-height at different breakpoints\n * - sectionPadding: Different section padding at different breakpoints\n * - contentPadding: Different content padding at different breakpoints\n * - sectionMargin: Different margins at different breakpoints\n * - visibility: Show/hide at different breakpoints\n */\n\nimport { useId } from 'react'\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n cn,\n dimensionsValueToCSS,\n marginValueToCSS,\n paddingValueToCSS,\n borderValueToCSS,\n backgroundValueToCSS,\n responsiveValueToCSS,\n visibilityValueToCSS,\n type PaddingValue,\n type BorderValue,\n type DimensionsValue,\n type BackgroundValue,\n type AnimationValue,\n type ResponsiveValue,\n type VisibilityValue,\n} from '../../fields/shared.js'\nimport { AnimatedWrapper } from '../AnimatedWrapper.js'\nimport { createPaddingField } from '../../fields/PaddingField.js'\nimport { createBorderField } from '../../fields/BorderField.js'\nimport { createDimensionsField } from '../../fields/DimensionsField.js'\nimport { createMarginField } from '../../fields/MarginField.js'\nimport { createResetField } from '../../fields/ResetField.js'\nimport { createBackgroundField } from '../../fields/BackgroundField.js'\nimport { createAnimationField } from '../../fields/AnimationField.js'\nimport { createResponsiveField } from '../../fields/ResponsiveField.js'\nimport { createResponsiveVisibilityField } from '../../fields/ResponsiveVisibilityField.js'\n\n// Default padding (none) - used for margin fields\nconst DEFAULT_PADDING: PaddingValue = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n unit: 'px',\n linked: true,\n}\n\n// Default section padding - standard vertical spacing for sections\nconst DEFAULT_SECTION_PADDING: PaddingValue = {\n top: 48,\n right: 0,\n bottom: 48,\n left: 0,\n unit: 'px',\n linked: false,\n}\n\n// Default content dimensions - 1200px max-width centered\nconst DEFAULT_CONTENT_DIMENSIONS: DimensionsValue = {\n mode: 'contained',\n alignment: 'center',\n maxWidth: { value: 1200, unit: 'px', enabled: true },\n}\n\n// Default content padding with standard horizontal spacing\nconst DEFAULT_CONTENT_PADDING: PaddingValue = {\n top: 0,\n right: 16,\n bottom: 0,\n left: 16,\n unit: 'px',\n linked: false,\n}\n\nexport type SemanticElement = 'section' | 'article' | 'aside' | 'nav' | 'div' | 'header' | 'footer' | 'main'\n\nexport interface SectionProps {\n id: string\n content: unknown\n semanticElement: SemanticElement\n // Section layer (outer, full-width)\n sectionBackground: BackgroundValue | null\n sectionBorder: BorderValue | null\n sectionPadding: ResponsiveValue<PaddingValue> | PaddingValue | null\n sectionMargin: ResponsiveValue<PaddingValue> | PaddingValue | null\n // Content layer (inner, constrained)\n contentDimensions: ResponsiveValue<DimensionsValue> | DimensionsValue | null\n contentBackground: BackgroundValue | null\n contentBorder: BorderValue | null\n contentPadding: ResponsiveValue<PaddingValue> | PaddingValue | null\n // Other\n animation: AnimationValue | null\n visibility: VisibilityValue | null\n}\n\nconst defaultProps: SectionProps = {\n id: '',\n content: [],\n semanticElement: 'section',\n // Section layer defaults - padding gives sections proper spacing\n sectionBackground: null,\n sectionBorder: null,\n sectionPadding: { xs: DEFAULT_SECTION_PADDING },\n sectionMargin: null,\n // Content layer defaults - 1200px max-width so two-layer design is immediately visible\n contentDimensions: { xs: DEFAULT_CONTENT_DIMENSIONS },\n contentBackground: null,\n contentBorder: null,\n contentPadding: { xs: DEFAULT_CONTENT_PADDING },\n // Other\n animation: null,\n visibility: null,\n}\n\nexport const SectionConfig: ComponentConfig = {\n label: 'Section',\n fields: {\n _reset: createResetField({ defaultProps }),\n // Visibility first\n visibility: createResponsiveVisibilityField({ label: 'Visibility' }),\n // Semantic element selection\n semanticElement: {\n type: 'select',\n label: 'HTML Element',\n options: [\n { label: 'Section', value: 'section' },\n { label: 'Article', value: 'article' },\n { label: 'Aside', value: 'aside' },\n { label: 'Nav', value: 'nav' },\n { label: 'Header', value: 'header' },\n { label: 'Footer', value: 'footer' },\n { label: 'Main', value: 'main' },\n { label: 'Div', value: 'div' },\n ],\n },\n // Section ID for anchors\n id: {\n type: 'text',\n label: 'Section ID',\n },\n content: {\n type: 'slot',\n },\n // Section layer (outer)\n sectionBackground: createBackgroundField({ label: 'Section Background' }),\n sectionBorder: createBorderField({ label: 'Section Border' }),\n sectionPadding: createResponsiveField({\n label: 'Section Padding',\n innerField: (config) => createPaddingField(config),\n defaultValue: DEFAULT_PADDING,\n }),\n sectionMargin: createResponsiveField({\n label: 'Section Margin',\n innerField: (config) => createMarginField(config),\n defaultValue: DEFAULT_PADDING,\n }),\n // Content layer (inner)\n contentDimensions: createResponsiveField({\n label: 'Content Dimensions',\n innerField: (config) => createDimensionsField(config),\n defaultValue: DEFAULT_CONTENT_DIMENSIONS,\n }),\n contentBackground: createBackgroundField({ label: 'Content Background' }),\n contentBorder: createBorderField({ label: 'Content Border' }),\n contentPadding: createResponsiveField({\n label: 'Content Padding',\n innerField: (config) => createPaddingField(config),\n defaultValue: DEFAULT_PADDING,\n }),\n // Animation\n animation: createAnimationField({ label: 'Animation' }),\n },\n defaultProps,\n render: ({\n id,\n content: Content,\n semanticElement = 'section',\n sectionBackground,\n sectionBorder,\n sectionPadding,\n sectionMargin,\n contentDimensions,\n contentBackground,\n contentBorder,\n contentPadding,\n animation,\n visibility,\n }) => {\n // Dynamic element based on semanticElement prop\n const Wrapper = semanticElement as React.ElementType\n // Generate unique IDs for CSS targeting\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const uniqueId = useId().replace(/:/g, '')\n const sectionClass = `puck-section-${uniqueId}`\n const contentClass = `puck-section-content-${uniqueId}`\n\n // Collect all media query CSS\n const mediaQueries: string[] = []\n\n // === Section layer styles (outer, full-width) ===\n const sectionBackgroundStyles = backgroundValueToCSS(sectionBackground)\n const sectionStyles: React.CSSProperties = {\n ...sectionBackgroundStyles,\n }\n\n // Section border\n const sectionBorderStyles = borderValueToCSS(sectionBorder)\n if (sectionBorderStyles) {\n Object.assign(sectionStyles, sectionBorderStyles)\n }\n\n // Section padding with responsive support\n const sectionPaddingResult = responsiveValueToCSS(\n sectionPadding,\n (v) => ({ padding: paddingValueToCSS(v) }),\n sectionClass\n )\n Object.assign(sectionStyles, sectionPaddingResult.baseStyles)\n if (sectionPaddingResult.mediaQueryCSS) {\n mediaQueries.push(sectionPaddingResult.mediaQueryCSS)\n }\n\n // Section margin with responsive support\n const sectionMarginResult = responsiveValueToCSS(\n sectionMargin,\n (v) => ({ margin: marginValueToCSS(v) }),\n sectionClass\n )\n Object.assign(sectionStyles, sectionMarginResult.baseStyles)\n if (sectionMarginResult.mediaQueryCSS) {\n mediaQueries.push(sectionMarginResult.mediaQueryCSS)\n }\n\n // Visibility media queries\n const visibilityCSS = visibilityValueToCSS(visibility, sectionClass)\n if (visibilityCSS) {\n mediaQueries.push(visibilityCSS)\n }\n\n // === Content layer styles (inner, constrained) ===\n const contentBackgroundStyles = backgroundValueToCSS(contentBackground)\n const contentStyles: React.CSSProperties = {\n ...contentBackgroundStyles,\n }\n\n // Content dimensions with responsive support\n const contentDimensionsResult = responsiveValueToCSS(\n contentDimensions,\n dimensionsValueToCSS,\n contentClass\n )\n Object.assign(contentStyles, contentDimensionsResult.baseStyles)\n if (contentDimensionsResult.mediaQueryCSS) {\n mediaQueries.push(contentDimensionsResult.mediaQueryCSS)\n }\n\n // Check if minHeight is set - if so, we need flex layout to make slot expand\n const hasMinHeight = (() => {\n if (!contentDimensions) return false\n // Check if it's a responsive value\n if (typeof contentDimensions === 'object' && 'xs' in contentDimensions) {\n const responsiveDims = contentDimensions as ResponsiveValue<DimensionsValue>\n return Object.values(responsiveDims).some((v) => {\n if (!v || typeof v !== 'object') return false\n const dim = v as DimensionsValue\n return dim.minHeight?.enabled && dim.minHeight?.value > 0\n })\n }\n // Non-responsive value\n const dim = contentDimensions as DimensionsValue\n return dim.minHeight?.enabled && dim.minHeight?.value > 0\n })()\n\n // Add flex layout when minHeight is set to make content stretch\n if (hasMinHeight) {\n contentStyles.display = 'flex'\n contentStyles.flexDirection = 'column'\n }\n\n // Content border\n const contentBorderStyles = borderValueToCSS(contentBorder)\n if (contentBorderStyles) {\n Object.assign(contentStyles, contentBorderStyles)\n }\n\n // Content padding with responsive support\n const contentPaddingResult = responsiveValueToCSS(\n contentPadding,\n (v) => ({ padding: paddingValueToCSS(v) }),\n contentClass\n )\n Object.assign(contentStyles, contentPaddingResult.baseStyles)\n if (contentPaddingResult.mediaQueryCSS) {\n mediaQueries.push(contentPaddingResult.mediaQueryCSS)\n }\n\n const sectionClasses = cn('relative w-full', sectionClass)\n const contentClasses = cn('relative z-10', contentClass)\n\n // Check if we have any content styling\n const hasContentStyles = Object.keys(contentStyles).length > 0\n\n // Combine all media queries\n const allMediaQueryCSS = mediaQueries.join('\\n')\n\n // When minHeight is set, wrap Content to ensure slot expands\n const renderContent = () => {\n if (hasMinHeight) {\n return (\n <div style={{ flex: 1, display: 'flex', flexDirection: 'column', minHeight: 0 }}>\n <Content style={{ flex: 1 }} />\n </div>\n )\n }\n return <Content />\n }\n\n return (\n <AnimatedWrapper animation={animation}>\n {allMediaQueryCSS && <style>{allMediaQueryCSS}</style>}\n <Wrapper\n id={id || undefined}\n className={sectionClasses}\n style={sectionStyles}\n >\n {hasContentStyles ? (\n <div className={contentClasses} style={contentStyles}>\n {renderContent()}\n </div>\n ) : (\n <Content className={contentClasses} />\n )}\n </Wrapper>\n </AnimatedWrapper>\n )\n },\n}\n"],"names":["useId","cn","dimensionsValueToCSS","marginValueToCSS","paddingValueToCSS","borderValueToCSS","backgroundValueToCSS","responsiveValueToCSS","visibilityValueToCSS","AnimatedWrapper","createPaddingField","createBorderField","createDimensionsField","createMarginField","createResetField","createBackgroundField","createAnimationField","createResponsiveField","createResponsiveVisibilityField","DEFAULT_PADDING","top","right","bottom","left","unit","linked","DEFAULT_SECTION_PADDING","DEFAULT_CONTENT_DIMENSIONS","mode","alignment","maxWidth","value","enabled","DEFAULT_CONTENT_PADDING","defaultProps","id","content","semanticElement","sectionBackground","sectionBorder","sectionPadding","xs","sectionMargin","contentDimensions","contentBackground","contentBorder","contentPadding","animation","visibility","SectionConfig","label","fields","_reset","type","options","innerField","config","defaultValue","render","Content","Wrapper","uniqueId","replace","sectionClass","contentClass","mediaQueries","sectionBackgroundStyles","sectionStyles","sectionBorderStyles","Object","assign","sectionPaddingResult","v","padding","baseStyles","mediaQueryCSS","push","sectionMarginResult","margin","visibilityCSS","contentBackgroundStyles","contentStyles","contentDimensionsResult","hasMinHeight","responsiveDims","values","some","dim","minHeight","display","flexDirection","contentBorderStyles","contentPaddingResult","sectionClasses","contentClasses","hasContentStyles","keys","length","allMediaQueryCSS","join","renderContent","div","style","flex","undefined","className"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Section.server.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Section.server.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EASL,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAA;AAoC/B,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAA;AAE5G,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,EAAE,eAAe,CAAA;IAEhC,iBAAiB,EAAE,eAAe,GAAG,IAAI,CAAA;IACzC,aAAa,EAAE,WAAW,GAAG,IAAI,CAAA;IACjC,cAAc,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IACnE,aAAa,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IAElE,iBAAiB,EAAE,eAAe,CAAC,eAAe,CAAC,GAAG,eAAe,GAAG,IAAI,CAAA;IAC5E,iBAAiB,EAAE,eAAe,GAAG,IAAI,CAAA;IACzC,aAAa,EAAE,WAAW,GAAG,IAAI,CAAA;IACjC,cAAc,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IAEnE,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;CACnC;AAqBD,eAAO,MAAM,aAAa,EAAE,eA2K3B,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/layout/Section.server.tsx"],"sourcesContent":["/**\n * Section Component - Server-safe Puck Configuration\n *\n * Full-width section with two-layer architecture:\n * - Section layer (outer): Full-bleed background, border, padding, margin\n * - Content layer (inner): Constrained content area with max-width, background, border, padding\n *\n * This is a server-safe version with minimal fields (only slot for content).\n * For the full editor version with fields, use Section.tsx\n *\n * Responsive Controls:\n * - contentDimensions: Different max-width/min-height at different breakpoints\n * - sectionPadding: Different section padding at different breakpoints\n * - contentPadding: Different content padding at different breakpoints\n * - sectionMargin: Different margins at different breakpoints\n * - visibility: Show/hide at different breakpoints\n */\n\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n cn,\n dimensionsValueToCSS,\n marginValueToCSS,\n paddingValueToCSS,\n borderValueToCSS,\n backgroundValueToCSS,\n responsiveValueToCSS,\n visibilityValueToCSS,\n type PaddingValue,\n type BorderValue,\n type DimensionsValue,\n type BackgroundValue,\n type AnimationValue,\n type ResponsiveValue,\n type VisibilityValue,\n} from '../../fields/shared.js'\nimport { AnimatedWrapper } from '../AnimatedWrapper.js'\n\n// Simple ID generator for server-side rendering\nlet idCounter = 0\nfunction generateUniqueId(): string {\n return `s${(++idCounter).toString(36)}${Math.random().toString(36).slice(2, 6)}`\n}\n\n// Default section padding - standard vertical spacing for sections\nconst DEFAULT_SECTION_PADDING: PaddingValue = {\n top: 48,\n right: 0,\n bottom: 48,\n left: 0,\n unit: 'px',\n linked: false,\n}\n\n// Default content dimensions - 1200px max-width centered\nconst DEFAULT_CONTENT_DIMENSIONS: DimensionsValue = {\n mode: 'contained',\n alignment: 'center',\n maxWidth: { value: 1200, unit: 'px', enabled: true },\n}\n\n// Default content padding with standard horizontal spacing\nconst DEFAULT_CONTENT_PADDING: PaddingValue = {\n top: 0,\n right: 16,\n bottom: 0,\n left: 16,\n unit: 'px',\n linked: false,\n}\n\nexport type SemanticElement = 'section' | 'article' | 'aside' | 'nav' | 'div' | 'header' | 'footer' | 'main'\n\nexport interface SectionProps {\n id: string\n content: unknown\n semanticElement: SemanticElement\n // Section layer (outer, full-width)\n sectionBackground: BackgroundValue | null\n sectionBorder: BorderValue | null\n sectionPadding: ResponsiveValue<PaddingValue> | PaddingValue | null\n sectionMargin: ResponsiveValue<PaddingValue> | PaddingValue | null\n // Content layer (inner, constrained)\n contentDimensions: ResponsiveValue<DimensionsValue> | DimensionsValue | null\n contentBackground: BackgroundValue | null\n contentBorder: BorderValue | null\n contentPadding: ResponsiveValue<PaddingValue> | PaddingValue | null\n // Other\n animation: AnimationValue | null\n visibility: VisibilityValue | null\n}\n\nconst defaultProps: SectionProps = {\n id: '',\n content: [],\n semanticElement: 'section',\n // Section layer defaults - padding gives sections proper spacing\n sectionBackground: null,\n sectionBorder: null,\n sectionPadding: { xs: DEFAULT_SECTION_PADDING },\n sectionMargin: null,\n // Content layer defaults - 1200px max-width so two-layer design is immediately visible\n contentDimensions: { xs: DEFAULT_CONTENT_DIMENSIONS },\n contentBackground: null,\n contentBorder: null,\n contentPadding: { xs: DEFAULT_CONTENT_PADDING },\n // Other\n animation: null,\n visibility: null,\n}\n\nexport const SectionConfig: ComponentConfig = {\n label: 'Section',\n fields: {\n content: { type: 'slot' },\n },\n defaultProps,\n render: ({\n id,\n content: Content,\n semanticElement = 'section',\n sectionBackground,\n sectionBorder,\n sectionPadding,\n sectionMargin,\n contentDimensions,\n contentBackground,\n contentBorder,\n contentPadding,\n animation,\n visibility,\n }) => {\n // Dynamic element based on semanticElement prop\n const Wrapper = semanticElement as React.ElementType\n // Generate unique IDs for CSS targeting (server-safe)\n const uniqueId = generateUniqueId()\n const sectionClass = `puck-section-${uniqueId}`\n const contentClass = `puck-section-content-${uniqueId}`\n\n // Collect all media query CSS\n const mediaQueries: string[] = []\n\n // === Section layer styles (outer, full-width) ===\n const sectionBackgroundStyles = backgroundValueToCSS(sectionBackground)\n const sectionStyles: React.CSSProperties = {\n ...sectionBackgroundStyles,\n }\n\n // Section border\n const sectionBorderStyles = borderValueToCSS(sectionBorder)\n if (sectionBorderStyles) {\n Object.assign(sectionStyles, sectionBorderStyles)\n }\n\n // Section padding with responsive support\n const sectionPaddingResult = responsiveValueToCSS(\n sectionPadding,\n (v) => ({ padding: paddingValueToCSS(v) }),\n sectionClass\n )\n Object.assign(sectionStyles, sectionPaddingResult.baseStyles)\n if (sectionPaddingResult.mediaQueryCSS) {\n mediaQueries.push(sectionPaddingResult.mediaQueryCSS)\n }\n\n // Section margin with responsive support\n const sectionMarginResult = responsiveValueToCSS(\n sectionMargin,\n (v) => ({ margin: marginValueToCSS(v) }),\n sectionClass\n )\n Object.assign(sectionStyles, sectionMarginResult.baseStyles)\n if (sectionMarginResult.mediaQueryCSS) {\n mediaQueries.push(sectionMarginResult.mediaQueryCSS)\n }\n\n // Visibility media queries\n const visibilityCSS = visibilityValueToCSS(visibility, sectionClass)\n if (visibilityCSS) {\n mediaQueries.push(visibilityCSS)\n }\n\n // === Content layer styles (inner, constrained) ===\n const contentBackgroundStyles = backgroundValueToCSS(contentBackground)\n const contentStyles: React.CSSProperties = {\n ...contentBackgroundStyles,\n }\n\n // Content dimensions with responsive support\n const contentDimensionsResult = responsiveValueToCSS(\n contentDimensions,\n dimensionsValueToCSS,\n contentClass\n )\n Object.assign(contentStyles, contentDimensionsResult.baseStyles)\n if (contentDimensionsResult.mediaQueryCSS) {\n mediaQueries.push(contentDimensionsResult.mediaQueryCSS)\n }\n\n // Check if minHeight is set - if so, we need flex layout to make slot expand\n const hasMinHeight = (() => {\n if (!contentDimensions) return false\n // Check if it's a responsive value\n if (typeof contentDimensions === 'object' && 'xs' in contentDimensions) {\n const responsiveDims = contentDimensions as ResponsiveValue<DimensionsValue>\n return Object.values(responsiveDims).some((v) => {\n if (!v || typeof v !== 'object') return false\n const dim = v as DimensionsValue\n return dim.minHeight?.enabled && dim.minHeight?.value > 0\n })\n }\n // Non-responsive value\n const dim = contentDimensions as DimensionsValue\n return dim.minHeight?.enabled && dim.minHeight?.value > 0\n })()\n\n // Add flex layout when minHeight is set to make content stretch\n if (hasMinHeight) {\n contentStyles.display = 'flex'\n contentStyles.flexDirection = 'column'\n }\n\n // Content border\n const contentBorderStyles = borderValueToCSS(contentBorder)\n if (contentBorderStyles) {\n Object.assign(contentStyles, contentBorderStyles)\n }\n\n // Content padding with responsive support\n const contentPaddingResult = responsiveValueToCSS(\n contentPadding,\n (v) => ({ padding: paddingValueToCSS(v) }),\n contentClass\n )\n Object.assign(contentStyles, contentPaddingResult.baseStyles)\n if (contentPaddingResult.mediaQueryCSS) {\n mediaQueries.push(contentPaddingResult.mediaQueryCSS)\n }\n\n const sectionClasses = cn('relative w-full', sectionClass)\n const contentClasses = cn('relative z-10', contentClass)\n\n // Check if we have any content styling\n const hasContentStyles = Object.keys(contentStyles).length > 0\n\n // Combine all media queries\n const allMediaQueryCSS = mediaQueries.join('\\n')\n\n // Type assertion for Puck slot content\n const ContentSlot = Content as any\n\n // When minHeight is set, wrap Content to ensure slot expands\n const renderContent = () => {\n if (hasMinHeight) {\n return (\n <div style={{ flex: 1, display: 'flex', flexDirection: 'column', minHeight: 0 }}>\n <ContentSlot style={{ flex: 1 }} />\n </div>\n )\n }\n return <ContentSlot />\n }\n\n return (\n <AnimatedWrapper animation={animation}>\n {allMediaQueryCSS && <style>{allMediaQueryCSS}</style>}\n <Wrapper\n id={id || undefined}\n className={sectionClasses}\n style={sectionStyles}\n >\n {hasContentStyles ? (\n <div className={contentClasses} style={contentStyles}>\n {renderContent()}\n </div>\n ) : (\n <ContentSlot className={contentClasses} />\n )}\n </Wrapper>\n </AnimatedWrapper>\n )\n },\n}\n"],"names":["cn","dimensionsValueToCSS","marginValueToCSS","paddingValueToCSS","borderValueToCSS","backgroundValueToCSS","responsiveValueToCSS","visibilityValueToCSS","AnimatedWrapper","idCounter","generateUniqueId","toString","Math","random","slice","DEFAULT_SECTION_PADDING","top","right","bottom","left","unit","linked","DEFAULT_CONTENT_DIMENSIONS","mode","alignment","maxWidth","value","enabled","DEFAULT_CONTENT_PADDING","defaultProps","id","content","semanticElement","sectionBackground","sectionBorder","sectionPadding","xs","sectionMargin","contentDimensions","contentBackground","contentBorder","contentPadding","animation","visibility","SectionConfig","label","fields","type","render","Content","Wrapper","uniqueId","sectionClass","contentClass","mediaQueries","sectionBackgroundStyles","sectionStyles","sectionBorderStyles","Object","assign","sectionPaddingResult","v","padding","baseStyles","mediaQueryCSS","push","sectionMarginResult","margin","visibilityCSS","contentBackgroundStyles","contentStyles","contentDimensionsResult","hasMinHeight","responsiveDims","values","some","dim","minHeight","display","flexDirection","contentBorderStyles","contentPaddingResult","sectionClasses","contentClasses","hasContentStyles","keys","length","allMediaQueryCSS","join","ContentSlot","renderContent","div","style","flex","undefined","className"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Spacer.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Spacer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAA4B,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAA;AA0CvF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,UAAU,GAAG,YAAY,GAAG,MAAM,CAAA;IAC7C,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;CACnC;AAQD,eAAO,MAAM,YAAY,EAAE,eAoD1B,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/layout/Spacer.tsx"],"sourcesContent":["/**\n * Spacer Component - Puck Configuration\n *\n * Simple spacing component for adding vertical or horizontal space.\n * Uses Tailwind classes for layout and sizing from predefined options.\n *\n * Responsive Controls:\n * - visibility: Show/hide at different breakpoints\n */\n\nimport { useId } from 'react'\nimport type { ComponentConfig } from '@puckeditor/core'\nimport { cn, visibilityValueToCSS, type VisibilityValue } from '../../fields/shared.js'\nimport { createResetField } from '../../fields/ResetField.js'\nimport { createResponsiveVisibilityField } from '../../fields/ResponsiveVisibilityField.js'\n\nconst spacingOptions = [\n { label: '8px', value: '8px' },\n { label: '16px', value: '16px' },\n { label: '24px', value: '24px' },\n { label: '32px', value: '32px' },\n { label: '48px', value: '48px' },\n { label: '64px', value: '64px' },\n { label: '80px', value: '80px' },\n { label: '96px', value: '96px' },\n { label: '128px', value: '128px' },\n]\n\n// Tailwind height classes for predefined spacing options\nconst heightMap: Record<string, string> = {\n '8px': 'h-2',\n '16px': 'h-4',\n '24px': 'h-6',\n '32px': 'h-8',\n '48px': 'h-12',\n '64px': 'h-16',\n '80px': 'h-20',\n '96px': 'h-24',\n '128px': 'h-32',\n}\n\n// Tailwind width classes for predefined spacing options\nconst widthMap: Record<string, string> = {\n '8px': 'w-2',\n '16px': 'w-4',\n '24px': 'w-6',\n '32px': 'w-8',\n '48px': 'w-12',\n '64px': 'w-16',\n '80px': 'w-20',\n '96px': 'w-24',\n '128px': 'w-32',\n}\n\nexport interface SpacerProps {\n size: string\n direction: 'vertical' | 'horizontal' | 'both'\n visibility: VisibilityValue | null\n}\n\nconst defaultProps: SpacerProps = {\n size: '24px',\n direction: 'vertical',\n visibility: null,\n}\n\nexport const SpacerConfig: ComponentConfig = {\n label: 'Spacer',\n fields: {\n _reset: createResetField({ defaultProps }),\n // Responsive visibility control\n visibility: createResponsiveVisibilityField({ label: 'Visibility' }),\n size: {\n type: 'select',\n label: 'Size',\n options: spacingOptions,\n },\n direction: {\n type: 'radio',\n label: 'Direction',\n options: [\n { label: 'Vertical', value: 'vertical' },\n { label: 'Horizontal', value: 'horizontal' },\n { label: 'Both', value: 'both' },\n ],\n },\n },\n defaultProps,\n render: ({ size, direction, visibility }) => {\n // Generate unique ID for CSS targeting\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const uniqueId = useId().replace(/:/g, '')\n const wrapperClass = `puck-spacer-${uniqueId}`\n\n // Visibility media queries\n const visibilityCSS = visibilityValueToCSS(visibility, wrapperClass)\n\n const getClasses = (): string => {\n const heightClass = heightMap[size] || 'h-6'\n const widthClass = widthMap[size] || 'w-6'\n\n if (direction === 'vertical') {\n return `block ${heightClass} w-full`\n }\n if (direction === 'horizontal') {\n return `inline-block ${widthClass} h-full`\n }\n // both\n return `block ${heightClass} ${widthClass}`\n }\n\n return (\n <>\n {visibilityCSS && <style>{visibilityCSS}</style>}\n <div className={cn(getClasses(), wrapperClass)} aria-hidden=\"true\" />\n </>\n )\n },\n}\n"],"names":["useId","cn","visibilityValueToCSS","createResetField","createResponsiveVisibilityField","spacingOptions","label","value","heightMap","widthMap","defaultProps","size","direction","visibility","SpacerConfig","fields","_reset","type","options","render","uniqueId","replace","wrapperClass","visibilityCSS","getClasses","heightClass","widthClass","style","div","className","aria-hidden"],"mappings":";AAAA;;;;;;;;CAQC,GAED,SAASA,KAAK,QAAQ,QAAO;AAE7B,SAASC,EAAE,EAAEC,oBAAoB,QAA8B,yBAAwB;AACvF,SAASC,gBAAgB,QAAQ,6BAA4B;AAC7D,SAASC,+BAA+B,QAAQ,4CAA2C;AAE3F,MAAMC,iBAAiB;IACrB;QAAEC,OAAO;QAAOC,OAAO;IAAM;IAC7B;QAAED,OAAO;QAAQC,OAAO;IAAO;IAC/B;QAAED,OAAO;QAAQC,OAAO;IAAO;IAC/B;QAAED,OAAO;QAAQC,OAAO;IAAO;IAC/B;QAAED,OAAO;QAAQC,OAAO;IAAO;IAC/B;QAAED,OAAO;QAAQC,OAAO;IAAO;IAC/B;QAAED,OAAO;QAAQC,OAAO;IAAO;IAC/B;QAAED,OAAO;QAAQC,OAAO;IAAO;IAC/B;QAAED,OAAO;QAASC,OAAO;IAAQ;CAClC;AAED,yDAAyD;AACzD,MAAMC,YAAoC;IACxC,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,SAAS;AACX;AAEA,wDAAwD;AACxD,MAAMC,WAAmC;IACvC,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,SAAS;AACX;AAQA,MAAMC,eAA4B;IAChCC,MAAM;IACNC,WAAW;IACXC,YAAY;AACd;AAEA,OAAO,MAAMC,eAAgC;IAC3CR,OAAO;IACPS,QAAQ;QACNC,QAAQb,iBAAiB;YAAEO;QAAa;QACxC,gCAAgC;QAChCG,YAAYT,gCAAgC;YAAEE,OAAO;QAAa;QAClEK,MAAM;YACJM,MAAM;YACNX,OAAO;YACPY,SAASb;QACX;QACAO,WAAW;YACTK,MAAM;YACNX,OAAO;YACPY,SAAS;gBACP;oBAAEZ,OAAO;oBAAYC,OAAO;gBAAW;gBACvC;oBAAED,OAAO;oBAAcC,OAAO;gBAAa;gBAC3C;oBAAED,OAAO;oBAAQC,OAAO;gBAAO;aAChC;QACH;IACF;IACAG;IACAS,QAAQ,CAAC,EAAER,IAAI,EAAEC,SAAS,EAAEC,UAAU,EAAE;QACtC,uCAAuC;QACvC,sDAAsD;QACtD,MAAMO,WAAWpB,QAAQqB,OAAO,CAAC,MAAM;QACvC,MAAMC,eAAe,CAAC,YAAY,EAAEF,UAAU;QAE9C,2BAA2B;QAC3B,MAAMG,gBAAgBrB,qBAAqBW,YAAYS;QAEvD,MAAME,aAAa;YACjB,MAAMC,cAAcjB,SAAS,CAACG,KAAK,IAAI;YACvC,MAAMe,aAAajB,QAAQ,CAACE,KAAK,IAAI;YAErC,IAAIC,cAAc,YAAY;gBAC5B,OAAO,CAAC,MAAM,EAAEa,YAAY,OAAO,CAAC;YACtC;YACA,IAAIb,cAAc,cAAc;gBAC9B,OAAO,CAAC,aAAa,EAAEc,WAAW,OAAO,CAAC;YAC5C;YACA,OAAO;YACP,OAAO,CAAC,MAAM,EAAED,YAAY,CAAC,EAAEC,YAAY;QAC7C;QAEA,qBACE;;gBACGH,+BAAiB,KAACI;8BAAOJ;;8BAC1B,KAACK;oBAAIC,WAAW5B,GAAGuB,cAAcF;oBAAeQ,eAAY;;;;IAGlE;AACF,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Spacer.server.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Spacer.server.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAA4B,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAkCvF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,UAAU,GAAG,YAAY,GAAG,MAAM,CAAA;IAC7C,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;CACnC;AAQD,eAAO,MAAM,YAAY,EAAE,eAAe,CAAC,WAAW,CAgCrD,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/layout/Spacer.server.tsx"],"sourcesContent":["/**\n * Spacer Component - Server-safe Puck Configuration\n *\n * Simple spacing component for adding vertical or horizontal space.\n * Uses Tailwind classes for layout and sizing from predefined options.\n *\n * This is a server-safe version with NO fields property.\n * For the full editor version with fields, use Spacer.tsx\n *\n * Responsive Controls:\n * - visibility: Show/hide at different breakpoints\n */\n\nimport type { ComponentConfig } from '@puckeditor/core'\nimport { cn, visibilityValueToCSS, type VisibilityValue } from '../../fields/shared.js'\n\n// Simple ID generator for server-side rendering\nlet idCounter = 0\nfunction generateUniqueId(): string {\n return `sp${(++idCounter).toString(36)}${Math.random().toString(36).slice(2, 6)}`\n}\n\n// Tailwind height classes for predefined spacing options\nconst heightMap: Record<string, string> = {\n '8px': 'h-2',\n '16px': 'h-4',\n '24px': 'h-6',\n '32px': 'h-8',\n '48px': 'h-12',\n '64px': 'h-16',\n '80px': 'h-20',\n '96px': 'h-24',\n '128px': 'h-32',\n}\n\n// Tailwind width classes for predefined spacing options\nconst widthMap: Record<string, string> = {\n '8px': 'w-2',\n '16px': 'w-4',\n '24px': 'w-6',\n '32px': 'w-8',\n '48px': 'w-12',\n '64px': 'w-16',\n '80px': 'w-20',\n '96px': 'w-24',\n '128px': 'w-32',\n}\n\nexport interface SpacerProps {\n size: string\n direction: 'vertical' | 'horizontal' | 'both'\n visibility: VisibilityValue | null\n}\n\nconst defaultProps: SpacerProps = {\n size: '24px',\n direction: 'vertical',\n visibility: null,\n}\n\nexport const SpacerConfig: ComponentConfig<SpacerProps> = {\n label: 'Spacer',\n defaultProps,\n render: ({ size, direction, visibility }) => {\n // Generate unique ID for CSS targeting (server-safe)\n const uniqueId = generateUniqueId()\n const wrapperClass = `puck-spacer-${uniqueId}`\n\n // Visibility media queries\n const visibilityCSS = visibilityValueToCSS(visibility, wrapperClass)\n\n const getClasses = (): string => {\n const heightClass = heightMap[size] || 'h-6'\n const widthClass = widthMap[size] || 'w-6'\n\n if (direction === 'vertical') {\n return `block ${heightClass} w-full`\n }\n if (direction === 'horizontal') {\n return `inline-block ${widthClass} h-full`\n }\n // both\n return `block ${heightClass} ${widthClass}`\n }\n\n return (\n <>\n {visibilityCSS && <style>{visibilityCSS}</style>}\n <div className={cn(getClasses(), wrapperClass)} aria-hidden=\"true\" />\n </>\n )\n },\n}\n"],"names":["cn","visibilityValueToCSS","idCounter","generateUniqueId","toString","Math","random","slice","heightMap","widthMap","defaultProps","size","direction","visibility","SpacerConfig","label","render","uniqueId","wrapperClass","visibilityCSS","getClasses","heightClass","widthClass","style","div","className","aria-hidden"],"mappings":"AAAA;;;;;;;;;;;CAWC;AAGD,SAASA,EAAE,EAAEC,oBAAoB,QAA8B,yBAAwB;AAEvF,gDAAgD;AAChD,IAAIC,YAAY;AAChB,SAASC;IACP,OAAO,CAAC,EAAE,EAAE,AAAC,CAAA,EAAED,SAAQ,EAAGE,QAAQ,CAAC,MAAMC,KAAKC,MAAM,GAAGF,QAAQ,CAAC,IAAIG,KAAK,CAAC,GAAG,IAAI;AACnF;AAEA,yDAAyD;AACzD,MAAMC,YAAoC;IACxC,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,SAAS;AACX;AAEA,wDAAwD;AACxD,MAAMC,WAAmC;IACvC,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,SAAS;AACX;AAQA,MAAMC,eAA4B;IAChCC,MAAM;IACNC,WAAW;IACXC,YAAY;AACd;AAEA,OAAO,MAAMC,eAA6C;IACxDC,OAAO;IACPL;IACAM,QAAQ,CAAC,EAAEL,IAAI,EAAEC,SAAS,EAAEC,UAAU,EAAE;QACtC,qDAAqD;QACrD,MAAMI,WAAWd;QACjB,MAAMe,eAAe,CAAC,YAAY,EAAED,UAAU;QAE9C,2BAA2B;QAC3B,MAAME,gBAAgBlB,qBAAqBY,YAAYK;QAEvD,MAAME,aAAa;YACjB,MAAMC,cAAcb,SAAS,CAACG,KAAK,IAAI;YACvC,MAAMW,aAAab,QAAQ,CAACE,KAAK,IAAI;YAErC,IAAIC,cAAc,YAAY;gBAC5B,OAAO,CAAC,MAAM,EAAES,YAAY,OAAO,CAAC;YACtC;YACA,IAAIT,cAAc,cAAc;gBAC9B,OAAO,CAAC,aAAa,EAAEU,WAAW,OAAO,CAAC;YAC5C;YACA,OAAO;YACP,OAAO,CAAC,MAAM,EAAED,YAAY,CAAC,EAAEC,YAAY;QAC7C;QAEA,qBACE;;gBACGH,+BAAiB,KAACI;8BAAOJ;;8BAC1B,KAACK;oBAAIC,WAAWzB,GAAGoB,cAAcF;oBAAeQ,eAAY;;;;IAGlE;AACF,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Template.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Template.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAOL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAA;AA6B/B,MAAM,WAAW,aAAa;IAC5B,iCAAiC;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,4BAA4B;IAC5B,UAAU,EAAE,eAAe,CAAC,eAAe,CAAC,GAAG,eAAe,GAAG,IAAI,CAAA;IACrE,yBAAyB;IACzB,aAAa,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IAClE,wBAAwB;IACxB,MAAM,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IAC3D,4BAA4B;IAC5B,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;CACnC;AAmBD,eAAO,MAAM,cAAc,EAAE,eAiG5B,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/layout/Template.tsx"],"sourcesContent":["/**\n * Template Component - Puck Configuration\n *\n * A reusable template container that allows saving and loading\n * pre-configured component arrangements from the Payload CMS.\n *\n * Use this component to:\n * - Create reusable page sections\n * - Save common component patterns as templates\n * - Quickly load pre-built layouts\n *\n * Responsive Controls:\n * - dimensions: Different dimensions at different breakpoints\n * - customPadding: Different padding at different breakpoints\n * - margin: Different margins at different breakpoints\n * - visibility: Show/hide at different breakpoints\n */\n\nimport { useId } from 'react'\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n cn,\n dimensionsValueToCSS,\n marginValueToCSS,\n paddingValueToCSS,\n responsiveValueToCSS,\n visibilityValueToCSS,\n type PaddingValue,\n type DimensionsValue,\n type ResponsiveValue,\n type VisibilityValue,\n} from '../../fields/shared.js'\nimport { createResetField } from '../../fields/ResetField.js'\nimport { createTemplateField } from '../../fields/TemplateField.js'\nimport { createPaddingField } from '../../fields/PaddingField.js'\nimport { createMarginField } from '../../fields/MarginField.js'\nimport { createDimensionsField } from '../../fields/DimensionsField.js'\nimport { createResponsiveField } from '../../fields/ResponsiveField.js'\nimport { createResponsiveVisibilityField } from '../../fields/ResponsiveVisibilityField.js'\n\n// Default values for responsive fields\nconst DEFAULT_PADDING: PaddingValue = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n unit: 'px',\n linked: true,\n}\n\nconst DEFAULT_DIMENSIONS: DimensionsValue = {\n mode: 'full',\n alignment: 'center',\n maxWidth: { value: 100, unit: '%', enabled: true },\n}\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface TemplateProps {\n /** Slot for nested components */\n content: unknown\n /** ID of the currently loaded template (or null if none) */\n templateId: string | null\n /** Responsive dimensions */\n dimensions: ResponsiveValue<DimensionsValue> | DimensionsValue | null\n /** Responsive padding */\n customPadding: ResponsiveValue<PaddingValue> | PaddingValue | null\n /** Responsive margin */\n margin: ResponsiveValue<PaddingValue> | PaddingValue | null\n /** Responsive visibility */\n visibility: VisibilityValue | null\n}\n\n// =============================================================================\n// Default Props\n// =============================================================================\n\nconst defaultProps: TemplateProps = {\n content: [],\n templateId: null,\n dimensions: null,\n customPadding: null,\n margin: null,\n visibility: null,\n}\n\n// =============================================================================\n// Component Configuration\n// =============================================================================\n\nexport const TemplateConfig: ComponentConfig = {\n label: 'Template',\n fields: {\n _reset: createResetField({ defaultProps }),\n templateId: createTemplateField({ label: 'Template' }),\n content: {\n type: 'slot',\n },\n // Responsive visibility control\n visibility: createResponsiveVisibilityField({ label: 'Visibility' }),\n // Responsive dimensions\n dimensions: createResponsiveField({\n label: 'Dimensions (Responsive)',\n innerField: (config) => createDimensionsField(config),\n defaultValue: DEFAULT_DIMENSIONS,\n }),\n // Spacing (grouped at bottom) - Responsive\n margin: createResponsiveField({\n label: 'Margin (Responsive)',\n innerField: (config) => createMarginField(config),\n defaultValue: DEFAULT_PADDING,\n }),\n customPadding: createResponsiveField({\n label: 'Padding (Responsive)',\n innerField: (config) => createPaddingField(config),\n defaultValue: DEFAULT_PADDING,\n }),\n },\n defaultProps,\n render: ({ content: Content, dimensions, customPadding, margin, visibility }) => {\n // Generate unique IDs for CSS targeting\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const uniqueId = useId().replace(/:/g, '')\n const wrapperClass = `puck-template-${uniqueId}`\n const contentClass = `puck-template-content-${uniqueId}`\n\n // Collect all media query CSS\n const mediaQueries: string[] = []\n\n // Build wrapper styles\n const wrapperStyles: React.CSSProperties = {}\n\n // Add padding with responsive support\n const paddingResult = responsiveValueToCSS(\n customPadding,\n (v) => ({ padding: paddingValueToCSS(v) }),\n wrapperClass\n )\n Object.assign(wrapperStyles, paddingResult.baseStyles)\n if (paddingResult.mediaQueryCSS) {\n mediaQueries.push(paddingResult.mediaQueryCSS)\n }\n\n // Add margin with responsive support\n const marginResult = responsiveValueToCSS(\n margin,\n (v) => ({ margin: marginValueToCSS(v) }),\n wrapperClass\n )\n Object.assign(wrapperStyles, marginResult.baseStyles)\n if (marginResult.mediaQueryCSS) {\n mediaQueries.push(marginResult.mediaQueryCSS)\n }\n\n // Visibility media queries\n const visibilityCSS = visibilityValueToCSS(visibility, wrapperClass)\n if (visibilityCSS) {\n mediaQueries.push(visibilityCSS)\n }\n\n // Use dimensions with responsive support\n const dimensionsResult = responsiveValueToCSS(\n dimensions,\n dimensionsValueToCSS,\n contentClass\n )\n if (dimensionsResult.mediaQueryCSS) {\n mediaQueries.push(dimensionsResult.mediaQueryCSS)\n }\n\n // Combine all media queries\n const allMediaQueryCSS = mediaQueries.join('\\n')\n\n // Content is a slot component that Puck provides\n // It renders all the nested components within this template\n return (\n <>\n {allMediaQueryCSS && <style>{allMediaQueryCSS}</style>}\n <div\n className={cn('template-wrapper', wrapperClass)}\n style={Object.keys(wrapperStyles).length > 0 ? wrapperStyles : undefined}\n >\n <Content className={contentClass} style={dimensionsResult.baseStyles} />\n </div>\n </>\n )\n },\n}\n"],"names":["useId","cn","dimensionsValueToCSS","marginValueToCSS","paddingValueToCSS","responsiveValueToCSS","visibilityValueToCSS","createResetField","createTemplateField","createPaddingField","createMarginField","createDimensionsField","createResponsiveField","createResponsiveVisibilityField","DEFAULT_PADDING","top","right","bottom","left","unit","linked","DEFAULT_DIMENSIONS","mode","alignment","maxWidth","value","enabled","defaultProps","content","templateId","dimensions","customPadding","margin","visibility","TemplateConfig","label","fields","_reset","type","innerField","config","defaultValue","render","Content","uniqueId","replace","wrapperClass","contentClass","mediaQueries","wrapperStyles","paddingResult","v","padding","Object","assign","baseStyles","mediaQueryCSS","push","marginResult","visibilityCSS","dimensionsResult","allMediaQueryCSS","join","style","div","className","keys","length","undefined"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Template.server.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Template.server.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAOL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAA;AAY/B,MAAM,WAAW,aAAa;IAC5B,iCAAiC;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,4BAA4B;IAC5B,UAAU,EAAE,eAAe,CAAC,eAAe,CAAC,GAAG,eAAe,GAAG,IAAI,CAAA;IACrE,yBAAyB;IACzB,aAAa,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IAClE,wBAAwB;IACxB,MAAM,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IAC3D,4BAA4B;IAC5B,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;CACnC;AAmBD,eAAO,MAAM,oBAAoB,EAAE,eAmFlC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/layout/Template.server.tsx"],"sourcesContent":["/**\n * Template Component - Server-safe Configuration\n *\n * A reusable template container for rendering nested components.\n * This server-safe version excludes the TemplateField (which requires client-side APIs).\n *\n * For the full editor experience with template loading, use Template.tsx\n *\n * Responsive Controls:\n * - dimensions: Different dimensions at different breakpoints\n * - customPadding: Different padding at different breakpoints\n * - margin: Different margins at different breakpoints\n * - visibility: Show/hide at different breakpoints\n */\n\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n cn,\n dimensionsValueToCSS,\n marginValueToCSS,\n paddingValueToCSS,\n responsiveValueToCSS,\n visibilityValueToCSS,\n type PaddingValue,\n type DimensionsValue,\n type ResponsiveValue,\n type VisibilityValue,\n} from '../../fields/shared.js'\n\n// Simple ID generator for server-side rendering\nlet idCounter = 0\nfunction generateUniqueId(): string {\n return `t${(++idCounter).toString(36)}${Math.random().toString(36).slice(2, 6)}`\n}\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface TemplateProps {\n /** Slot for nested components */\n content: unknown\n /** ID of the currently loaded template (for tracking only) */\n templateId: string | null\n /** Responsive dimensions */\n dimensions: ResponsiveValue<DimensionsValue> | DimensionsValue | null\n /** Responsive padding */\n customPadding: ResponsiveValue<PaddingValue> | PaddingValue | null\n /** Responsive margin */\n margin: ResponsiveValue<PaddingValue> | PaddingValue | null\n /** Responsive visibility */\n visibility: VisibilityValue | null\n}\n\n// =============================================================================\n// Default Props\n// =============================================================================\n\nconst defaultProps: TemplateProps = {\n content: [],\n templateId: null,\n dimensions: null,\n customPadding: null,\n margin: null,\n visibility: null,\n}\n\n// =============================================================================\n// Component Configuration (Server-safe)\n// =============================================================================\n\nexport const TemplateServerConfig: ComponentConfig = {\n label: 'Template',\n fields: {\n // In server config, templateId is just for reference (no loading UI)\n templateId: {\n type: 'text',\n label: 'Template ID',\n },\n content: {\n type: 'slot',\n },\n },\n defaultProps,\n render: ({ content: Content, dimensions, customPadding, margin, visibility }) => {\n // Generate unique IDs for CSS targeting (server-safe)\n const uniqueId = generateUniqueId()\n const wrapperClass = `puck-template-${uniqueId}`\n const contentClass = `puck-template-content-${uniqueId}`\n\n // Collect all media query CSS\n const mediaQueries: string[] = []\n\n // Build wrapper styles\n const wrapperStyles: React.CSSProperties = {}\n\n // Add padding with responsive support\n const paddingResult = responsiveValueToCSS(\n customPadding,\n (v) => ({ padding: paddingValueToCSS(v) }),\n wrapperClass\n )\n Object.assign(wrapperStyles, paddingResult.baseStyles)\n if (paddingResult.mediaQueryCSS) {\n mediaQueries.push(paddingResult.mediaQueryCSS)\n }\n\n // Add margin with responsive support\n const marginResult = responsiveValueToCSS(\n margin,\n (v) => ({ margin: marginValueToCSS(v) }),\n wrapperClass\n )\n Object.assign(wrapperStyles, marginResult.baseStyles)\n if (marginResult.mediaQueryCSS) {\n mediaQueries.push(marginResult.mediaQueryCSS)\n }\n\n // Visibility media queries\n const visibilityCSS = visibilityValueToCSS(visibility, wrapperClass)\n if (visibilityCSS) {\n mediaQueries.push(visibilityCSS)\n }\n\n // Use dimensions with responsive support\n const dimensionsResult = responsiveValueToCSS(\n dimensions,\n dimensionsValueToCSS,\n contentClass\n )\n if (dimensionsResult.mediaQueryCSS) {\n mediaQueries.push(dimensionsResult.mediaQueryCSS)\n }\n\n // Combine all media queries\n const allMediaQueryCSS = mediaQueries.join('\\n')\n\n // Type assertion for Puck slot content\n const ContentSlot = Content as any\n\n // Content is a slot component that Puck provides\n // It renders all the nested components within this template\n return (\n <>\n {allMediaQueryCSS && <style>{allMediaQueryCSS}</style>}\n <div\n className={cn('template-wrapper', wrapperClass)}\n style={Object.keys(wrapperStyles).length > 0 ? wrapperStyles : undefined}\n >\n <ContentSlot className={contentClass} style={dimensionsResult.baseStyles} />\n </div>\n </>\n )\n },\n}\n"],"names":["cn","dimensionsValueToCSS","marginValueToCSS","paddingValueToCSS","responsiveValueToCSS","visibilityValueToCSS","idCounter","generateUniqueId","toString","Math","random","slice","defaultProps","content","templateId","dimensions","customPadding","margin","visibility","TemplateServerConfig","label","fields","type","render","Content","uniqueId","wrapperClass","contentClass","mediaQueries","wrapperStyles","paddingResult","v","padding","Object","assign","baseStyles","mediaQueryCSS","push","marginResult","visibilityCSS","dimensionsResult","allMediaQueryCSS","join","ContentSlot","style","div","className","keys","length","undefined"],"mappings":"AAAA;;;;;;;;;;;;;CAaC;AAGD,SACEA,EAAE,EACFC,oBAAoB,EACpBC,gBAAgB,EAChBC,iBAAiB,EACjBC,oBAAoB,EACpBC,oBAAoB,QAKf,yBAAwB;AAE/B,gDAAgD;AAChD,IAAIC,YAAY;AAChB,SAASC;IACP,OAAO,CAAC,CAAC,EAAE,AAAC,CAAA,EAAED,SAAQ,EAAGE,QAAQ,CAAC,MAAMC,KAAKC,MAAM,GAAGF,QAAQ,CAAC,IAAIG,KAAK,CAAC,GAAG,IAAI;AAClF;AAqBA,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF,MAAMC,eAA8B;IAClCC,SAAS,EAAE;IACXC,YAAY;IACZC,YAAY;IACZC,eAAe;IACfC,QAAQ;IACRC,YAAY;AACd;AAEA,gFAAgF;AAChF,wCAAwC;AACxC,gFAAgF;AAEhF,OAAO,MAAMC,uBAAwC;IACnDC,OAAO;IACPC,QAAQ;QACN,qEAAqE;QACrEP,YAAY;YACVQ,MAAM;YACNF,OAAO;QACT;QACAP,SAAS;YACPS,MAAM;QACR;IACF;IACAV;IACAW,QAAQ,CAAC,EAAEV,SAASW,OAAO,EAAET,UAAU,EAAEC,aAAa,EAAEC,MAAM,EAAEC,UAAU,EAAE;QAC1E,sDAAsD;QACtD,MAAMO,WAAWlB;QACjB,MAAMmB,eAAe,CAAC,cAAc,EAAED,UAAU;QAChD,MAAME,eAAe,CAAC,sBAAsB,EAAEF,UAAU;QAExD,8BAA8B;QAC9B,MAAMG,eAAyB,EAAE;QAEjC,uBAAuB;QACvB,MAAMC,gBAAqC,CAAC;QAE5C,sCAAsC;QACtC,MAAMC,gBAAgB1B,qBACpBY,eACA,CAACe,IAAO,CAAA;gBAAEC,SAAS7B,kBAAkB4B;YAAG,CAAA,GACxCL;QAEFO,OAAOC,MAAM,CAACL,eAAeC,cAAcK,UAAU;QACrD,IAAIL,cAAcM,aAAa,EAAE;YAC/BR,aAAaS,IAAI,CAACP,cAAcM,aAAa;QAC/C;QAEA,qCAAqC;QACrC,MAAME,eAAelC,qBACnBa,QACA,CAACc,IAAO,CAAA;gBAAEd,QAAQf,iBAAiB6B;YAAG,CAAA,GACtCL;QAEFO,OAAOC,MAAM,CAACL,eAAeS,aAAaH,UAAU;QACpD,IAAIG,aAAaF,aAAa,EAAE;YAC9BR,aAAaS,IAAI,CAACC,aAAaF,aAAa;QAC9C;QAEA,2BAA2B;QAC3B,MAAMG,gBAAgBlC,qBAAqBa,YAAYQ;QACvD,IAAIa,eAAe;YACjBX,aAAaS,IAAI,CAACE;QACpB;QAEA,yCAAyC;QACzC,MAAMC,mBAAmBpC,qBACvBW,YACAd,sBACA0B;QAEF,IAAIa,iBAAiBJ,aAAa,EAAE;YAClCR,aAAaS,IAAI,CAACG,iBAAiBJ,aAAa;QAClD;QAEA,4BAA4B;QAC5B,MAAMK,mBAAmBb,aAAac,IAAI,CAAC;QAE3C,uCAAuC;QACvC,MAAMC,cAAcnB;QAEpB,iDAAiD;QACjD,4DAA4D;QAC5D,qBACE;;gBACGiB,kCAAoB,KAACG;8BAAOH;;8BAC7B,KAACI;oBACCC,WAAW9C,GAAG,oBAAoB0B;oBAClCkB,OAAOX,OAAOc,IAAI,CAAClB,eAAemB,MAAM,GAAG,IAAInB,gBAAgBoB;8BAE/D,cAAA,KAACN;wBAAYG,WAAWnB;wBAAciB,OAAOJ,iBAAiBL,UAAU;;;;;IAIhF;AACF,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/layout/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/layout/index.ts"],"sourcesContent":["/**\n * Layout Components\n *\n * Structural components for page layout and content organization.\n */\n\nexport { ContainerConfig } from './Container.js'\nexport { FlexConfig } from './Flex.js'\nexport { GridConfig } from './Grid.js'\nexport { SectionConfig } from './Section.js'\nexport { SpacerConfig } from './Spacer.js'\nexport { TemplateConfig } from './Template.js'\nexport { TemplateServerConfig } from './Template.server.js'\nexport type { TemplateProps } from './Template.js'\n"],"names":["ContainerConfig","FlexConfig","GridConfig","SectionConfig","SpacerConfig","TemplateConfig","TemplateServerConfig"],"mappings":"AAAA;;;;CAIC,GAED,SAASA,eAAe,QAAQ,iBAAgB;AAChD,SAASC,UAAU,QAAQ,YAAW;AACtC,SAASC,UAAU,QAAQ,YAAW;AACtC,SAASC,aAAa,QAAQ,eAAc;AAC5C,SAASC,YAAY,QAAQ,cAAa;AAC1C,SAASC,cAAc,QAAQ,gBAAe;AAC9C,SAASC,oBAAoB,QAAQ,uBAAsB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../../src/components/media/Image.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAUL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAA;AAM/B,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAClF,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAgBrF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,OAAO,CAAA;IACrB,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;IAC1B,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;IAC3B,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,aAAa,EAAE,YAAY,GAAG,IAAI,CAAA;IAClC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;CACnC;AAkBD,eAAO,MAAM,WAAW,EAAE,eA0IzB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/media/Image.tsx"],"sourcesContent":["/**\n * Image Component - Puck Configuration\n *\n * Standalone image block with optional link wrapper.\n * Server-safe version using standard HTML img element.\n *\n * Responsive Controls:\n * - visibility: Show/hide at different breakpoints\n */\n\nimport { useId } from 'react'\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n aspectRatioField,\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 { createMarginField } from '../../fields/MarginField.js'\nimport { createPaddingField } from '../../fields/PaddingField.js'\nimport { createDimensionsField } from '../../fields/DimensionsField.js'\nimport { createBorderField } from '../../fields/BorderField.js'\nimport { createMediaField, type MediaReference } from '../../fields/MediaField.js'\nimport { createAlignmentField, type Alignment } from '../../fields/AlignmentField.js'\nimport { createAnimationField } from '../../fields/AnimationField.js'\nimport { createTransformField } from '../../fields/TransformField.js'\nimport { createResetField } from '../../fields/ResetField.js'\nimport { createResponsiveVisibilityField } from '../../fields/ResponsiveVisibilityField.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\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, visible in editor\n visibility: null,\n}\n\nexport const ImageConfig: ComponentConfig = {\n label: 'Image',\n fields: {\n _reset: createResetField({ defaultProps }),\n image: createMediaField({ label: 'Image' }),\n alt: {\n type: 'text',\n label: 'Alt Text Override',\n },\n // Responsive visibility control\n visibility: createResponsiveVisibilityField({ label: 'Visibility' }),\n aspectRatio: aspectRatioField,\n link: {\n type: 'text',\n label: 'Link URL',\n },\n openInNewTab: {\n type: 'radio',\n label: 'Open in New Tab',\n options: [\n { label: 'Yes', value: true },\n { label: 'No', value: false },\n ],\n },\n border: createBorderField({ label: 'Border' }),\n dimensions: createDimensionsField({ label: 'Dimensions' }),\n alignment: createAlignmentField({ label: 'Alignment', defaultValue: 'center' }),\n transform: createTransformField({ label: 'Transform' }),\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: ({ image, alt, aspectRatio, link, openInNewTab, dimensions, alignment, margin, border, transform, animation, customPadding, visibility }) => {\n // Generate unique ID for CSS targeting\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const uniqueId = useId().replace(/:/g, '')\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":["useId","aspectRatioField","aspectRatioMap","cn","marginValueToCSS","paddingValueToCSS","dimensionsValueToCSS","borderValueToCSS","transformValueToCSS","visibilityValueToCSS","AnimatedWrapper","createMarginField","createPaddingField","createDimensionsField","createBorderField","createMediaField","createAlignmentField","createAnimationField","createTransformField","createResetField","createResponsiveVisibilityField","DEFAULT_PADDING","top","right","bottom","left","unit","linked","defaultProps","image","alt","aspectRatio","link","openInNewTab","margin","border","dimensions","alignment","transform","animation","customPadding","visibility","ImageConfig","label","fields","_reset","type","options","value","defaultValue","render","uniqueId","replace","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":"Image.server.d.ts","sourceRoot":"","sources":["../../../src/components/media/Image.server.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EASL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAkB/D,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,OAAO,CAAA;IACrB,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;IAC1B,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;IAC3B,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,aAAa,EAAE,YAAY,GAAG,IAAI,CAAA;IAClC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;CACnC;AAkBD,eAAO,MAAM,WAAW,EAAE,eAAe,CAAC,UAAU,CA0GnD,CAAA"}
|