@delmaredigital/payload-puck 0.6.13 → 0.6.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/EditWithPuckButton.d.ts +0 -1
- package/dist/admin/EditWithPuckButton.js +0 -2
- package/dist/admin/EditWithPuckCell.d.ts +0 -1
- package/dist/admin/EditWithPuckCell.js +0 -2
- package/dist/admin/PuckEditorView.d.ts +0 -1
- package/dist/admin/PuckEditorView.js +0 -2
- package/dist/admin/client.d.ts +0 -1
- package/dist/admin/client.js +0 -2
- package/dist/admin/generateAdminComponents.d.ts +0 -1
- package/dist/admin/generateAdminComponents.js +0 -2
- package/dist/admin/index.d.ts +0 -1
- package/dist/admin/index.js +0 -2
- package/dist/ai/collections/AiContext.d.ts +0 -1
- package/dist/ai/collections/AiContext.js +0 -2
- package/dist/ai/collections/AiPrompts.d.ts +0 -1
- package/dist/ai/collections/AiPrompts.js +0 -2
- package/dist/ai/createAiApiRoutes.d.ts +0 -1
- package/dist/ai/createAiApiRoutes.js +0 -2
- package/dist/ai/createAiGenerate.d.ts +0 -1
- package/dist/ai/createAiGenerate.js +0 -2
- package/dist/ai/createAiPlugin.d.ts +0 -1
- package/dist/ai/createAiPlugin.js +0 -2
- package/dist/ai/hooks/useAiContext.d.ts +0 -1
- package/dist/ai/hooks/useAiContext.js +0 -2
- package/dist/ai/hooks/useAiPrompts.d.ts +0 -1
- package/dist/ai/hooks/useAiPrompts.js +0 -2
- package/dist/ai/index.d.ts +0 -1
- package/dist/ai/index.js +0 -2
- package/dist/ai/plugins/ContextEditorPanel.d.ts +0 -1
- package/dist/ai/plugins/ContextEditorPanel.js +0 -2
- package/dist/ai/plugins/PromptEditorPanel.d.ts +0 -1
- package/dist/ai/plugins/PromptEditorPanel.js +0 -2
- package/dist/ai/plugins/contextEditorPlugin.d.ts +0 -1
- package/dist/ai/plugins/contextEditorPlugin.js +0 -2
- package/dist/ai/plugins/promptApiRoutes.d.ts +0 -1
- package/dist/ai/plugins/promptApiRoutes.js +0 -2
- package/dist/ai/plugins/promptEditorPlugin.d.ts +0 -1
- package/dist/ai/plugins/promptEditorPlugin.js +0 -2
- package/dist/ai/presets/componentAiDefaults.d.ts +0 -1
- package/dist/ai/presets/componentAiDefaults.js +0 -2
- package/dist/ai/presets/index.d.ts +0 -1
- package/dist/ai/presets/index.js +0 -2
- package/dist/ai/presets/instructions/interactive.d.ts +0 -1
- package/dist/ai/presets/instructions/interactive.js +0 -2
- package/dist/ai/presets/instructions/layout.d.ts +0 -1
- package/dist/ai/presets/instructions/layout.js +0 -2
- package/dist/ai/presets/instructions/media.d.ts +0 -1
- package/dist/ai/presets/instructions/media.js +0 -2
- package/dist/ai/presets/instructions/pagePatterns.d.ts +0 -1
- package/dist/ai/presets/instructions/pagePatterns.js +0 -2
- package/dist/ai/presets/instructions/schemas.d.ts +0 -1
- package/dist/ai/presets/instructions/schemas.js +0 -2
- package/dist/ai/presets/instructions/typography.d.ts +0 -1
- package/dist/ai/presets/instructions/typography.js +0 -2
- package/dist/ai/tools/index.d.ts +0 -1
- package/dist/ai/tools/index.js +0 -2
- package/dist/ai/types.d.ts +0 -1
- package/dist/ai/types.js +0 -2
- package/dist/ai/utils/injectAiConfig.d.ts +0 -1
- package/dist/ai/utils/injectAiConfig.js +0 -2
- package/dist/api/createPuckApiRoutes.d.ts +0 -1
- package/dist/api/createPuckApiRoutes.js +0 -2
- package/dist/api/createPuckApiRoutesVersions.d.ts +0 -1
- package/dist/api/createPuckApiRoutesVersions.js +0 -2
- package/dist/api/createPuckApiRoutesWithId.d.ts +0 -1
- package/dist/api/createPuckApiRoutesWithId.js +0 -2
- package/dist/api/index.d.ts +0 -1
- package/dist/api/index.js +0 -2
- package/dist/api/payload-config.d.js +1 -2
- package/dist/api/types.d.ts +0 -1
- package/dist/api/types.js +0 -2
- package/dist/api/utils/mapRootProps.d.ts +0 -1
- package/dist/api/utils/mapRootProps.js +0 -2
- package/dist/collections/Templates.d.ts +0 -1
- package/dist/collections/Templates.js +0 -2
- package/dist/components/AccordionClient.d.ts +0 -1
- package/dist/components/AccordionClient.js +0 -2
- package/dist/components/AnimatedWrapper.d.ts +0 -1
- package/dist/components/AnimatedWrapper.js +0 -2
- package/dist/components/exports.d.ts +0 -1
- package/dist/components/exports.js +0 -2
- package/dist/components/index.d.ts +0 -1
- package/dist/components/index.js +0 -2
- package/dist/components/interactive/Accordion.d.ts +0 -1
- package/dist/components/interactive/Accordion.js +0 -2
- package/dist/components/interactive/Accordion.server.d.ts +0 -1
- package/dist/components/interactive/Accordion.server.js +0 -2
- package/dist/components/interactive/Button.d.ts +0 -1
- package/dist/components/interactive/Button.js +0 -2
- package/dist/components/interactive/Button.server.d.ts +0 -1
- package/dist/components/interactive/Button.server.js +0 -2
- package/dist/components/interactive/Card.d.ts +0 -1
- package/dist/components/interactive/Card.js +0 -2
- package/dist/components/interactive/Card.server.d.ts +0 -1
- package/dist/components/interactive/Card.server.js +0 -2
- package/dist/components/interactive/Divider.d.ts +0 -1
- package/dist/components/interactive/Divider.js +0 -2
- package/dist/components/interactive/Divider.server.d.ts +0 -1
- package/dist/components/interactive/Divider.server.js +0 -2
- package/dist/components/interactive/index.d.ts +0 -1
- package/dist/components/interactive/index.js +0 -2
- package/dist/components/layout/Container.d.ts +0 -1
- package/dist/components/layout/Container.js +0 -2
- package/dist/components/layout/Container.server.d.ts +0 -1
- package/dist/components/layout/Container.server.js +0 -2
- package/dist/components/layout/Flex.d.ts +0 -1
- package/dist/components/layout/Flex.js +0 -2
- package/dist/components/layout/Flex.server.d.ts +0 -1
- package/dist/components/layout/Flex.server.js +0 -2
- package/dist/components/layout/Grid.d.ts +0 -1
- package/dist/components/layout/Grid.js +0 -2
- package/dist/components/layout/Grid.server.d.ts +0 -1
- package/dist/components/layout/Grid.server.js +0 -2
- package/dist/components/layout/Section.d.ts +0 -1
- package/dist/components/layout/Section.js +0 -2
- package/dist/components/layout/Section.server.d.ts +0 -1
- package/dist/components/layout/Section.server.js +0 -2
- package/dist/components/layout/Spacer.d.ts +0 -1
- package/dist/components/layout/Spacer.js +0 -2
- package/dist/components/layout/Spacer.server.d.ts +0 -1
- package/dist/components/layout/Spacer.server.js +0 -2
- package/dist/components/layout/Template.d.ts +0 -1
- package/dist/components/layout/Template.js +0 -2
- package/dist/components/layout/Template.server.d.ts +0 -1
- package/dist/components/layout/Template.server.js +0 -2
- package/dist/components/layout/index.d.ts +0 -1
- package/dist/components/layout/index.js +0 -2
- package/dist/components/media/Image.d.ts +0 -1
- package/dist/components/media/Image.js +0 -2
- package/dist/components/media/Image.server.d.ts +0 -1
- package/dist/components/media/Image.server.js +0 -2
- package/dist/components/media/index.d.ts +0 -1
- package/dist/components/media/index.js +0 -2
- package/dist/components/typography/Heading.d.ts +0 -1
- package/dist/components/typography/Heading.js +0 -2
- package/dist/components/typography/Heading.server.d.ts +0 -1
- package/dist/components/typography/Heading.server.js +0 -2
- package/dist/components/typography/RichText.editor.d.ts +0 -1
- package/dist/components/typography/RichText.editor.js +0 -2
- package/dist/components/typography/RichText.server.d.ts +0 -1
- package/dist/components/typography/RichText.server.js +0 -2
- package/dist/components/typography/Text.d.ts +0 -1
- package/dist/components/typography/Text.js +0 -2
- package/dist/components/typography/Text.server.d.ts +0 -1
- package/dist/components/typography/Text.server.js +0 -2
- package/dist/components/typography/index.d.ts +0 -1
- package/dist/components/typography/index.js +0 -2
- package/dist/config/config.editor.d.ts +0 -1
- package/dist/config/config.editor.js +0 -2
- package/dist/config/index.d.ts +0 -1
- package/dist/config/index.js +0 -2
- package/dist/config/merge.d.ts +0 -1
- package/dist/config/merge.js +0 -2
- package/dist/config/presets.d.ts +0 -1
- package/dist/config/presets.js +0 -2
- package/dist/config/types.d.ts +0 -1
- package/dist/config/types.js +0 -2
- package/dist/editor/PuckEditor.d.ts +0 -1
- package/dist/editor/PuckEditor.js +0 -2
- package/dist/editor/PuckEditorImpl.client.d.ts +0 -1
- package/dist/editor/PuckEditorImpl.client.js +0 -2
- package/dist/editor/components/DarkModeStyles.d.ts +0 -1
- package/dist/editor/components/DarkModeStyles.js +0 -2
- package/dist/editor/components/HeaderActions.d.ts +0 -1
- package/dist/editor/components/HeaderActions.js +0 -2
- package/dist/editor/components/IframeWrapper.d.ts +0 -1
- package/dist/editor/components/IframeWrapper.js +0 -2
- package/dist/editor/components/LoadingState.d.ts +0 -1
- package/dist/editor/components/LoadingState.js +0 -2
- package/dist/editor/components/PreviewModal.d.ts +0 -1
- package/dist/editor/components/PreviewModal.js +0 -2
- package/dist/editor/components/PreviewModeToggle.d.ts +0 -1
- package/dist/editor/components/PreviewModeToggle.js +0 -2
- package/dist/editor/components/VersionHistory.d.ts +0 -1
- package/dist/editor/components/VersionHistory.js +0 -2
- package/dist/editor/hooks/useDarkMode.d.ts +0 -1
- package/dist/editor/hooks/useDarkMode.js +0 -2
- package/dist/editor/hooks/useUnsavedChanges.d.ts +0 -1
- package/dist/editor/hooks/useUnsavedChanges.js +0 -2
- package/dist/editor/index.d.ts +0 -1
- package/dist/editor/index.js +0 -2
- package/dist/editor/plugins/VersionHistoryPanel.d.ts +0 -1
- package/dist/editor/plugins/VersionHistoryPanel.js +0 -2
- package/dist/editor/plugins/index.d.ts +0 -1
- package/dist/editor/plugins/index.js +0 -2
- package/dist/editor/plugins/versionHistoryPlugin.d.ts +0 -1
- package/dist/editor/plugins/versionHistoryPlugin.js +0 -2
- package/dist/editor/utils/detectPageTree.d.ts +0 -1
- package/dist/editor/utils/detectPageTree.js +0 -2
- package/dist/editor/utils/index.d.ts +0 -1
- package/dist/editor/utils/index.js +0 -2
- package/dist/editor/utils/injectPageTreeFields.d.ts +0 -1
- package/dist/editor/utils/injectPageTreeFields.js +0 -2
- package/dist/endpoints/ai.d.ts +0 -1
- package/dist/endpoints/ai.js +0 -2
- package/dist/endpoints/context.d.ts +0 -1
- package/dist/endpoints/context.js +0 -2
- package/dist/endpoints/index.d.ts +0 -1
- package/dist/endpoints/index.js +0 -2
- package/dist/endpoints/postcss.d.js +1 -2
- package/dist/endpoints/prompts.d.ts +0 -1
- package/dist/endpoints/prompts.js +0 -2
- package/dist/endpoints/styles.d.ts +0 -1
- package/dist/endpoints/styles.js +0 -2
- package/dist/exports/client.d.ts +0 -1
- package/dist/exports/client.js +0 -2
- package/dist/exports/rsc.d.ts +0 -1
- package/dist/exports/rsc.js +0 -2
- package/dist/fields/AlignmentField.d.ts +0 -1
- package/dist/fields/AlignmentField.js +0 -2
- package/dist/fields/AnimationField.d.ts +0 -1
- package/dist/fields/AnimationField.js +0 -2
- package/dist/fields/BackgroundField.d.ts +0 -1
- package/dist/fields/BackgroundField.js +0 -2
- package/dist/fields/BorderField.d.ts +0 -1
- package/dist/fields/BorderField.js +0 -2
- package/dist/fields/ColorPickerField.d.ts +0 -1
- package/dist/fields/ColorPickerField.js +0 -2
- package/dist/fields/ContentAlignmentField.d.ts +0 -1
- package/dist/fields/ContentAlignmentField.js +0 -2
- package/dist/fields/DimensionsField.d.ts +0 -1
- package/dist/fields/DimensionsField.js +0 -2
- package/dist/fields/FlexAlignmentField.d.ts +0 -1
- package/dist/fields/FlexAlignmentField.js +0 -2
- package/dist/fields/FolderPickerField.d.ts +0 -1
- package/dist/fields/FolderPickerField.js +0 -2
- package/dist/fields/GradientEditor.d.ts +0 -1
- package/dist/fields/GradientEditor.js +0 -2
- package/dist/fields/LockedField.d.ts +0 -1
- package/dist/fields/LockedField.js +0 -2
- package/dist/fields/MarginField.d.ts +0 -1
- package/dist/fields/MarginField.js +0 -2
- package/dist/fields/MediaField.d.ts +0 -1
- package/dist/fields/MediaField.js +0 -2
- package/dist/fields/PaddingField.d.ts +0 -1
- package/dist/fields/PaddingField.js +0 -2
- package/dist/fields/PageSegmentField.d.ts +0 -1
- package/dist/fields/PageSegmentField.js +0 -2
- package/dist/fields/ResetField.d.ts +0 -1
- package/dist/fields/ResetField.js +0 -2
- package/dist/fields/ResponsiveField.d.ts +0 -1
- package/dist/fields/ResponsiveField.js +0 -2
- package/dist/fields/ResponsiveVisibilityField.d.ts +0 -1
- package/dist/fields/ResponsiveVisibilityField.js +0 -2
- package/dist/fields/SizeField.d.ts +0 -1
- package/dist/fields/SizeField.js +0 -2
- package/dist/fields/SlugPreviewField.d.ts +0 -1
- package/dist/fields/SlugPreviewField.js +0 -2
- package/dist/fields/TemplateField.d.ts +0 -1
- package/dist/fields/TemplateField.js +0 -2
- package/dist/fields/TransformField.d.ts +0 -1
- package/dist/fields/TransformField.js +0 -2
- package/dist/fields/VerticalAlignmentField.d.ts +0 -1
- package/dist/fields/VerticalAlignmentField.js +0 -2
- package/dist/fields/WidthField.d.ts +0 -1
- package/dist/fields/WidthField.js +0 -2
- package/dist/fields/index.d.ts +0 -1
- package/dist/fields/index.js +0 -2
- package/dist/fields/richtext/controls/ColorPickerControl.d.ts +0 -1
- package/dist/fields/richtext/controls/ColorPickerControl.js +0 -2
- package/dist/fields/richtext/controls/DropdownPortal.d.ts +0 -1
- package/dist/fields/richtext/controls/DropdownPortal.js +0 -2
- package/dist/fields/richtext/controls/FontSizeControl.d.ts +0 -1
- package/dist/fields/richtext/controls/FontSizeControl.js +0 -2
- package/dist/fields/richtext/controls/HighlightControl.d.ts +0 -1
- package/dist/fields/richtext/controls/HighlightControl.js +0 -2
- package/dist/fields/richtext/controls/index.d.ts +0 -1
- package/dist/fields/richtext/controls/index.js +0 -2
- package/dist/fields/richtext/controls/shared.d.ts +0 -1
- package/dist/fields/richtext/controls/shared.js +0 -2
- package/dist/fields/richtext/createRichTextField.d.ts +0 -1
- package/dist/fields/richtext/createRichTextField.js +0 -2
- package/dist/fields/richtext/extensions/FontSize.d.ts +0 -1
- package/dist/fields/richtext/extensions/FontSize.js +0 -2
- package/dist/fields/richtext/extensions/index.d.ts +0 -1
- package/dist/fields/richtext/extensions/index.js +0 -2
- package/dist/fields/richtext/index.d.ts +0 -1
- package/dist/fields/richtext/index.js +0 -2
- package/dist/fields/shared.d.ts +0 -1
- package/dist/fields/shared.js +0 -2
- package/dist/hooks/index.d.ts +0 -1
- package/dist/hooks/index.js +0 -2
- package/dist/hooks/useResponsiveStyles.d.ts +0 -1
- package/dist/hooks/useResponsiveStyles.js +0 -2
- package/dist/hooks/useScrollAnimation.d.ts +0 -1
- package/dist/hooks/useScrollAnimation.js +0 -2
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -2
- package/dist/layouts/LayoutWrapper.d.ts +0 -1
- package/dist/layouts/LayoutWrapper.js +0 -2
- package/dist/layouts/defaults.d.ts +0 -1
- package/dist/layouts/defaults.js +0 -2
- package/dist/layouts/index.d.ts +0 -1
- package/dist/layouts/index.js +0 -2
- package/dist/layouts/types.d.ts +0 -1
- package/dist/layouts/types.js +0 -2
- package/dist/layouts/utils.d.ts +0 -1
- package/dist/layouts/utils.js +0 -2
- package/dist/next/index.d.ts +0 -1
- package/dist/next/index.js +0 -2
- package/dist/plugin/collections/Pages.d.ts +0 -1
- package/dist/plugin/collections/Pages.js +0 -2
- package/dist/plugin/fields/index.d.ts +0 -1
- package/dist/plugin/fields/index.js +0 -2
- package/dist/plugin/fields/types.d.ts +0 -1
- package/dist/plugin/fields/types.js +0 -2
- package/dist/plugin/hooks/index.d.ts +0 -1
- package/dist/plugin/hooks/index.js +0 -2
- package/dist/plugin/hooks/isHomepageUnique.d.ts +0 -1
- package/dist/plugin/hooks/isHomepageUnique.js +0 -2
- package/dist/plugin/index.d.ts +0 -1
- package/dist/plugin/index.js +0 -2
- package/dist/render/HybridPageRenderer.d.ts +0 -1
- package/dist/render/HybridPageRenderer.js +0 -2
- package/dist/render/PageRenderer.d.ts +0 -1
- package/dist/render/PageRenderer.js +0 -2
- package/dist/render/PuckEditor.client.d.ts +0 -1
- package/dist/render/PuckEditor.client.js +0 -2
- package/dist/render/index.d.ts +0 -1
- package/dist/render/index.js +0 -2
- package/dist/theme/context.d.ts +0 -1
- package/dist/theme/context.js +0 -2
- package/dist/theme/defaults.d.ts +0 -1
- package/dist/theme/defaults.js +0 -2
- package/dist/theme/example.d.ts +0 -1
- package/dist/theme/example.js +0 -2
- package/dist/theme/index.d.ts +0 -1
- package/dist/theme/index.js +0 -2
- package/dist/theme/types.d.ts +0 -1
- package/dist/theme/types.js +0 -2
- package/dist/theme/utils.d.ts +0 -1
- package/dist/theme/utils.js +0 -2
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.js +0 -2
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.js +0 -2
- package/dist/utils/migration.d.ts +0 -1
- package/dist/utils/migration.js +0 -2
- package/dist/utils/validation.d.ts +0 -1
- package/dist/utils/validation.js +0 -2
- package/dist/version.d.ts +1 -2
- package/dist/version.js +1 -3
- package/dist/views/PuckConfigContext.d.ts +0 -1
- package/dist/views/PuckConfigContext.js +0 -2
- package/dist/views/PuckEditorView.d.ts +0 -1
- package/dist/views/PuckEditorView.js +0 -2
- package/dist/views/index.d.ts +0 -1
- package/dist/views/index.js +0 -2
- package/package.json +1 -1
- package/dist/admin/EditWithPuckButton.d.ts.map +0 -1
- package/dist/admin/EditWithPuckButton.js.map +0 -1
- package/dist/admin/EditWithPuckCell.d.ts.map +0 -1
- package/dist/admin/EditWithPuckCell.js.map +0 -1
- package/dist/admin/PuckEditorView.d.ts.map +0 -1
- package/dist/admin/PuckEditorView.js.map +0 -1
- package/dist/admin/client.d.ts.map +0 -1
- package/dist/admin/client.js.map +0 -1
- package/dist/admin/generateAdminComponents.d.ts.map +0 -1
- package/dist/admin/generateAdminComponents.js.map +0 -1
- package/dist/admin/index.d.ts.map +0 -1
- package/dist/admin/index.js.map +0 -1
- package/dist/ai/collections/AiContext.d.ts.map +0 -1
- package/dist/ai/collections/AiContext.js.map +0 -1
- package/dist/ai/collections/AiPrompts.d.ts.map +0 -1
- package/dist/ai/collections/AiPrompts.js.map +0 -1
- package/dist/ai/createAiApiRoutes.d.ts.map +0 -1
- package/dist/ai/createAiApiRoutes.js.map +0 -1
- package/dist/ai/createAiGenerate.d.ts.map +0 -1
- package/dist/ai/createAiGenerate.js.map +0 -1
- package/dist/ai/createAiPlugin.d.ts.map +0 -1
- package/dist/ai/createAiPlugin.js.map +0 -1
- package/dist/ai/hooks/useAiContext.d.ts.map +0 -1
- package/dist/ai/hooks/useAiContext.js.map +0 -1
- package/dist/ai/hooks/useAiPrompts.d.ts.map +0 -1
- package/dist/ai/hooks/useAiPrompts.js.map +0 -1
- package/dist/ai/index.d.ts.map +0 -1
- package/dist/ai/index.js.map +0 -1
- package/dist/ai/plugins/ContextEditorPanel.d.ts.map +0 -1
- package/dist/ai/plugins/ContextEditorPanel.js.map +0 -1
- package/dist/ai/plugins/PromptEditorPanel.d.ts.map +0 -1
- package/dist/ai/plugins/PromptEditorPanel.js.map +0 -1
- package/dist/ai/plugins/contextEditorPlugin.d.ts.map +0 -1
- package/dist/ai/plugins/contextEditorPlugin.js.map +0 -1
- package/dist/ai/plugins/promptApiRoutes.d.ts.map +0 -1
- package/dist/ai/plugins/promptApiRoutes.js.map +0 -1
- package/dist/ai/plugins/promptEditorPlugin.d.ts.map +0 -1
- package/dist/ai/plugins/promptEditorPlugin.js.map +0 -1
- package/dist/ai/presets/componentAiDefaults.d.ts.map +0 -1
- package/dist/ai/presets/componentAiDefaults.js.map +0 -1
- package/dist/ai/presets/index.d.ts.map +0 -1
- package/dist/ai/presets/index.js.map +0 -1
- package/dist/ai/presets/instructions/interactive.d.ts.map +0 -1
- package/dist/ai/presets/instructions/interactive.js.map +0 -1
- package/dist/ai/presets/instructions/layout.d.ts.map +0 -1
- package/dist/ai/presets/instructions/layout.js.map +0 -1
- package/dist/ai/presets/instructions/media.d.ts.map +0 -1
- package/dist/ai/presets/instructions/media.js.map +0 -1
- package/dist/ai/presets/instructions/pagePatterns.d.ts.map +0 -1
- package/dist/ai/presets/instructions/pagePatterns.js.map +0 -1
- package/dist/ai/presets/instructions/schemas.d.ts.map +0 -1
- package/dist/ai/presets/instructions/schemas.js.map +0 -1
- package/dist/ai/presets/instructions/typography.d.ts.map +0 -1
- package/dist/ai/presets/instructions/typography.js.map +0 -1
- package/dist/ai/tools/index.d.ts.map +0 -1
- package/dist/ai/tools/index.js.map +0 -1
- package/dist/ai/types.d.ts.map +0 -1
- package/dist/ai/types.js.map +0 -1
- package/dist/ai/utils/injectAiConfig.d.ts.map +0 -1
- package/dist/ai/utils/injectAiConfig.js.map +0 -1
- package/dist/api/createPuckApiRoutes.d.ts.map +0 -1
- package/dist/api/createPuckApiRoutes.js.map +0 -1
- package/dist/api/createPuckApiRoutesVersions.d.ts.map +0 -1
- package/dist/api/createPuckApiRoutesVersions.js.map +0 -1
- package/dist/api/createPuckApiRoutesWithId.d.ts.map +0 -1
- package/dist/api/createPuckApiRoutesWithId.js.map +0 -1
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js.map +0 -1
- package/dist/api/payload-config.d.js.map +0 -1
- package/dist/api/types.d.ts.map +0 -1
- package/dist/api/types.js.map +0 -1
- package/dist/api/utils/mapRootProps.d.ts.map +0 -1
- package/dist/api/utils/mapRootProps.js.map +0 -1
- package/dist/collections/Templates.d.ts.map +0 -1
- package/dist/collections/Templates.js.map +0 -1
- package/dist/components/AccordionClient.d.ts.map +0 -1
- package/dist/components/AccordionClient.js.map +0 -1
- package/dist/components/AnimatedWrapper.d.ts.map +0 -1
- package/dist/components/AnimatedWrapper.js.map +0 -1
- package/dist/components/exports.d.ts.map +0 -1
- package/dist/components/exports.js.map +0 -1
- package/dist/components/index.d.ts.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/interactive/Accordion.d.ts.map +0 -1
- package/dist/components/interactive/Accordion.js.map +0 -1
- package/dist/components/interactive/Accordion.server.d.ts.map +0 -1
- package/dist/components/interactive/Accordion.server.js.map +0 -1
- package/dist/components/interactive/Button.d.ts.map +0 -1
- package/dist/components/interactive/Button.js.map +0 -1
- package/dist/components/interactive/Button.server.d.ts.map +0 -1
- package/dist/components/interactive/Button.server.js.map +0 -1
- package/dist/components/interactive/Card.d.ts.map +0 -1
- package/dist/components/interactive/Card.js.map +0 -1
- package/dist/components/interactive/Card.server.d.ts.map +0 -1
- package/dist/components/interactive/Card.server.js.map +0 -1
- package/dist/components/interactive/Divider.d.ts.map +0 -1
- package/dist/components/interactive/Divider.js.map +0 -1
- package/dist/components/interactive/Divider.server.d.ts.map +0 -1
- package/dist/components/interactive/Divider.server.js.map +0 -1
- package/dist/components/interactive/index.d.ts.map +0 -1
- package/dist/components/interactive/index.js.map +0 -1
- package/dist/components/layout/Container.d.ts.map +0 -1
- package/dist/components/layout/Container.js.map +0 -1
- package/dist/components/layout/Container.server.d.ts.map +0 -1
- package/dist/components/layout/Container.server.js.map +0 -1
- package/dist/components/layout/Flex.d.ts.map +0 -1
- package/dist/components/layout/Flex.js.map +0 -1
- package/dist/components/layout/Flex.server.d.ts.map +0 -1
- package/dist/components/layout/Flex.server.js.map +0 -1
- package/dist/components/layout/Grid.d.ts.map +0 -1
- package/dist/components/layout/Grid.js.map +0 -1
- package/dist/components/layout/Grid.server.d.ts.map +0 -1
- package/dist/components/layout/Grid.server.js.map +0 -1
- package/dist/components/layout/Section.d.ts.map +0 -1
- package/dist/components/layout/Section.js.map +0 -1
- package/dist/components/layout/Section.server.d.ts.map +0 -1
- package/dist/components/layout/Section.server.js.map +0 -1
- package/dist/components/layout/Spacer.d.ts.map +0 -1
- package/dist/components/layout/Spacer.js.map +0 -1
- package/dist/components/layout/Spacer.server.d.ts.map +0 -1
- package/dist/components/layout/Spacer.server.js.map +0 -1
- package/dist/components/layout/Template.d.ts.map +0 -1
- package/dist/components/layout/Template.js.map +0 -1
- package/dist/components/layout/Template.server.d.ts.map +0 -1
- package/dist/components/layout/Template.server.js.map +0 -1
- package/dist/components/layout/index.d.ts.map +0 -1
- package/dist/components/layout/index.js.map +0 -1
- package/dist/components/media/Image.d.ts.map +0 -1
- package/dist/components/media/Image.js.map +0 -1
- package/dist/components/media/Image.server.d.ts.map +0 -1
- package/dist/components/media/Image.server.js.map +0 -1
- package/dist/components/media/index.d.ts.map +0 -1
- package/dist/components/media/index.js.map +0 -1
- package/dist/components/typography/Heading.d.ts.map +0 -1
- package/dist/components/typography/Heading.js.map +0 -1
- package/dist/components/typography/Heading.server.d.ts.map +0 -1
- package/dist/components/typography/Heading.server.js.map +0 -1
- package/dist/components/typography/RichText.editor.d.ts.map +0 -1
- package/dist/components/typography/RichText.editor.js.map +0 -1
- package/dist/components/typography/RichText.server.d.ts.map +0 -1
- package/dist/components/typography/RichText.server.js.map +0 -1
- package/dist/components/typography/Text.d.ts.map +0 -1
- package/dist/components/typography/Text.js.map +0 -1
- package/dist/components/typography/Text.server.d.ts.map +0 -1
- package/dist/components/typography/Text.server.js.map +0 -1
- package/dist/components/typography/index.d.ts.map +0 -1
- package/dist/components/typography/index.js.map +0 -1
- package/dist/config/config.editor.d.ts.map +0 -1
- package/dist/config/config.editor.js.map +0 -1
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js.map +0 -1
- package/dist/config/merge.d.ts.map +0 -1
- package/dist/config/merge.js.map +0 -1
- package/dist/config/presets.d.ts.map +0 -1
- package/dist/config/presets.js.map +0 -1
- package/dist/config/types.d.ts.map +0 -1
- package/dist/config/types.js.map +0 -1
- package/dist/editor/PuckEditor.d.ts.map +0 -1
- package/dist/editor/PuckEditor.js.map +0 -1
- package/dist/editor/PuckEditorImpl.client.d.ts.map +0 -1
- package/dist/editor/PuckEditorImpl.client.js.map +0 -1
- package/dist/editor/components/DarkModeStyles.d.ts.map +0 -1
- package/dist/editor/components/DarkModeStyles.js.map +0 -1
- package/dist/editor/components/HeaderActions.d.ts.map +0 -1
- package/dist/editor/components/HeaderActions.js.map +0 -1
- package/dist/editor/components/IframeWrapper.d.ts.map +0 -1
- package/dist/editor/components/IframeWrapper.js.map +0 -1
- package/dist/editor/components/LoadingState.d.ts.map +0 -1
- package/dist/editor/components/LoadingState.js.map +0 -1
- package/dist/editor/components/PreviewModal.d.ts.map +0 -1
- package/dist/editor/components/PreviewModal.js.map +0 -1
- package/dist/editor/components/PreviewModeToggle.d.ts.map +0 -1
- package/dist/editor/components/PreviewModeToggle.js.map +0 -1
- package/dist/editor/components/VersionHistory.d.ts.map +0 -1
- package/dist/editor/components/VersionHistory.js.map +0 -1
- package/dist/editor/hooks/useDarkMode.d.ts.map +0 -1
- package/dist/editor/hooks/useDarkMode.js.map +0 -1
- package/dist/editor/hooks/useUnsavedChanges.d.ts.map +0 -1
- package/dist/editor/hooks/useUnsavedChanges.js.map +0 -1
- package/dist/editor/index.d.ts.map +0 -1
- package/dist/editor/index.js.map +0 -1
- package/dist/editor/plugins/VersionHistoryPanel.d.ts.map +0 -1
- package/dist/editor/plugins/VersionHistoryPanel.js.map +0 -1
- package/dist/editor/plugins/index.d.ts.map +0 -1
- package/dist/editor/plugins/index.js.map +0 -1
- package/dist/editor/plugins/versionHistoryPlugin.d.ts.map +0 -1
- package/dist/editor/plugins/versionHistoryPlugin.js.map +0 -1
- package/dist/editor/utils/detectPageTree.d.ts.map +0 -1
- package/dist/editor/utils/detectPageTree.js.map +0 -1
- package/dist/editor/utils/index.d.ts.map +0 -1
- package/dist/editor/utils/index.js.map +0 -1
- package/dist/editor/utils/injectPageTreeFields.d.ts.map +0 -1
- package/dist/editor/utils/injectPageTreeFields.js.map +0 -1
- package/dist/endpoints/ai.d.ts.map +0 -1
- package/dist/endpoints/ai.js.map +0 -1
- package/dist/endpoints/context.d.ts.map +0 -1
- package/dist/endpoints/context.js.map +0 -1
- package/dist/endpoints/index.d.ts.map +0 -1
- package/dist/endpoints/index.js.map +0 -1
- package/dist/endpoints/postcss.d.js.map +0 -1
- package/dist/endpoints/prompts.d.ts.map +0 -1
- package/dist/endpoints/prompts.js.map +0 -1
- package/dist/endpoints/styles.d.ts.map +0 -1
- package/dist/endpoints/styles.js.map +0 -1
- package/dist/exports/client.d.ts.map +0 -1
- package/dist/exports/client.js.map +0 -1
- package/dist/exports/rsc.d.ts.map +0 -1
- package/dist/exports/rsc.js.map +0 -1
- package/dist/fields/AlignmentField.d.ts.map +0 -1
- package/dist/fields/AlignmentField.js.map +0 -1
- package/dist/fields/AnimationField.d.ts.map +0 -1
- package/dist/fields/AnimationField.js.map +0 -1
- package/dist/fields/BackgroundField.d.ts.map +0 -1
- package/dist/fields/BackgroundField.js.map +0 -1
- package/dist/fields/BorderField.d.ts.map +0 -1
- package/dist/fields/BorderField.js.map +0 -1
- package/dist/fields/ColorPickerField.d.ts.map +0 -1
- package/dist/fields/ColorPickerField.js.map +0 -1
- package/dist/fields/ContentAlignmentField.d.ts.map +0 -1
- package/dist/fields/ContentAlignmentField.js.map +0 -1
- package/dist/fields/DimensionsField.d.ts.map +0 -1
- package/dist/fields/DimensionsField.js.map +0 -1
- package/dist/fields/FlexAlignmentField.d.ts.map +0 -1
- package/dist/fields/FlexAlignmentField.js.map +0 -1
- package/dist/fields/FolderPickerField.d.ts.map +0 -1
- package/dist/fields/FolderPickerField.js.map +0 -1
- package/dist/fields/GradientEditor.d.ts.map +0 -1
- package/dist/fields/GradientEditor.js.map +0 -1
- package/dist/fields/LockedField.d.ts.map +0 -1
- package/dist/fields/LockedField.js.map +0 -1
- package/dist/fields/MarginField.d.ts.map +0 -1
- package/dist/fields/MarginField.js.map +0 -1
- package/dist/fields/MediaField.d.ts.map +0 -1
- package/dist/fields/MediaField.js.map +0 -1
- package/dist/fields/PaddingField.d.ts.map +0 -1
- package/dist/fields/PaddingField.js.map +0 -1
- package/dist/fields/PageSegmentField.d.ts.map +0 -1
- package/dist/fields/PageSegmentField.js.map +0 -1
- package/dist/fields/ResetField.d.ts.map +0 -1
- package/dist/fields/ResetField.js.map +0 -1
- package/dist/fields/ResponsiveField.d.ts.map +0 -1
- package/dist/fields/ResponsiveField.js.map +0 -1
- package/dist/fields/ResponsiveVisibilityField.d.ts.map +0 -1
- package/dist/fields/ResponsiveVisibilityField.js.map +0 -1
- package/dist/fields/SizeField.d.ts.map +0 -1
- package/dist/fields/SizeField.js.map +0 -1
- package/dist/fields/SlugPreviewField.d.ts.map +0 -1
- package/dist/fields/SlugPreviewField.js.map +0 -1
- package/dist/fields/TemplateField.d.ts.map +0 -1
- package/dist/fields/TemplateField.js.map +0 -1
- package/dist/fields/TransformField.d.ts.map +0 -1
- package/dist/fields/TransformField.js.map +0 -1
- package/dist/fields/VerticalAlignmentField.d.ts.map +0 -1
- package/dist/fields/VerticalAlignmentField.js.map +0 -1
- package/dist/fields/WidthField.d.ts.map +0 -1
- package/dist/fields/WidthField.js.map +0 -1
- package/dist/fields/index.d.ts.map +0 -1
- package/dist/fields/index.js.map +0 -1
- package/dist/fields/richtext/controls/ColorPickerControl.d.ts.map +0 -1
- package/dist/fields/richtext/controls/ColorPickerControl.js.map +0 -1
- package/dist/fields/richtext/controls/DropdownPortal.d.ts.map +0 -1
- package/dist/fields/richtext/controls/DropdownPortal.js.map +0 -1
- package/dist/fields/richtext/controls/FontSizeControl.d.ts.map +0 -1
- package/dist/fields/richtext/controls/FontSizeControl.js.map +0 -1
- package/dist/fields/richtext/controls/HighlightControl.d.ts.map +0 -1
- package/dist/fields/richtext/controls/HighlightControl.js.map +0 -1
- package/dist/fields/richtext/controls/index.d.ts.map +0 -1
- package/dist/fields/richtext/controls/index.js.map +0 -1
- package/dist/fields/richtext/controls/shared.d.ts.map +0 -1
- package/dist/fields/richtext/controls/shared.js.map +0 -1
- package/dist/fields/richtext/createRichTextField.d.ts.map +0 -1
- package/dist/fields/richtext/createRichTextField.js.map +0 -1
- package/dist/fields/richtext/extensions/FontSize.d.ts.map +0 -1
- package/dist/fields/richtext/extensions/FontSize.js.map +0 -1
- package/dist/fields/richtext/extensions/index.d.ts.map +0 -1
- package/dist/fields/richtext/extensions/index.js.map +0 -1
- package/dist/fields/richtext/index.d.ts.map +0 -1
- package/dist/fields/richtext/index.js.map +0 -1
- package/dist/fields/shared.d.ts.map +0 -1
- package/dist/fields/shared.js.map +0 -1
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/useResponsiveStyles.d.ts.map +0 -1
- package/dist/hooks/useResponsiveStyles.js.map +0 -1
- package/dist/hooks/useScrollAnimation.d.ts.map +0 -1
- package/dist/hooks/useScrollAnimation.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/layouts/LayoutWrapper.d.ts.map +0 -1
- package/dist/layouts/LayoutWrapper.js.map +0 -1
- package/dist/layouts/defaults.d.ts.map +0 -1
- package/dist/layouts/defaults.js.map +0 -1
- package/dist/layouts/index.d.ts.map +0 -1
- package/dist/layouts/index.js.map +0 -1
- package/dist/layouts/types.d.ts.map +0 -1
- package/dist/layouts/types.js.map +0 -1
- package/dist/layouts/utils.d.ts.map +0 -1
- package/dist/layouts/utils.js.map +0 -1
- package/dist/next/index.d.ts.map +0 -1
- package/dist/next/index.js.map +0 -1
- package/dist/plugin/collections/Pages.d.ts.map +0 -1
- package/dist/plugin/collections/Pages.js.map +0 -1
- package/dist/plugin/fields/index.d.ts.map +0 -1
- package/dist/plugin/fields/index.js.map +0 -1
- package/dist/plugin/fields/types.d.ts.map +0 -1
- package/dist/plugin/fields/types.js.map +0 -1
- package/dist/plugin/hooks/index.d.ts.map +0 -1
- package/dist/plugin/hooks/index.js.map +0 -1
- package/dist/plugin/hooks/isHomepageUnique.d.ts.map +0 -1
- package/dist/plugin/hooks/isHomepageUnique.js.map +0 -1
- package/dist/plugin/index.d.ts.map +0 -1
- package/dist/plugin/index.js.map +0 -1
- package/dist/render/HybridPageRenderer.d.ts.map +0 -1
- package/dist/render/HybridPageRenderer.js.map +0 -1
- package/dist/render/PageRenderer.d.ts.map +0 -1
- package/dist/render/PageRenderer.js.map +0 -1
- package/dist/render/PuckEditor.client.d.ts.map +0 -1
- package/dist/render/PuckEditor.client.js.map +0 -1
- package/dist/render/index.d.ts.map +0 -1
- package/dist/render/index.js.map +0 -1
- package/dist/theme/context.d.ts.map +0 -1
- package/dist/theme/context.js.map +0 -1
- package/dist/theme/defaults.d.ts.map +0 -1
- package/dist/theme/defaults.js.map +0 -1
- package/dist/theme/example.d.ts.map +0 -1
- package/dist/theme/example.js.map +0 -1
- package/dist/theme/index.d.ts.map +0 -1
- package/dist/theme/index.js.map +0 -1
- package/dist/theme/types.d.ts.map +0 -1
- package/dist/theme/types.js.map +0 -1
- package/dist/theme/utils.d.ts.map +0 -1
- package/dist/theme/utils.js.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/migration.d.ts.map +0 -1
- package/dist/utils/migration.js.map +0 -1
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js.map +0 -1
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js.map +0 -1
- package/dist/views/PuckConfigContext.d.ts.map +0 -1
- package/dist/views/PuckConfigContext.js.map +0 -1
- package/dist/views/PuckEditorView.d.ts.map +0 -1
- package/dist/views/PuckEditorView.js.map +0 -1
- package/dist/views/index.d.ts.map +0 -1
- package/dist/views/index.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/AccordionClient.tsx"],"sourcesContent":["'use client'\n\n/**\n * AccordionClient - Client component for accordion interactivity\n *\n * This is the actual interactive accordion that uses useState.\n * Imported by the server-safe AccordionConfig to enable client-side expansion.\n */\n\nimport { useState } from 'react'\nimport { ChevronDown } from 'lucide-react'\nimport {\n marginValueToCSS,\n paddingValueToCSS,\n dimensionsValueToCSS,\n backgroundValueToCSS,\n transformValueToCSS,\n colorValueToCSS,\n cn,\n type PaddingValue,\n type DimensionsValue,\n type BackgroundValue,\n type AnimationValue,\n type TransformValue,\n type ColorValue,\n} from '../fields/shared.js'\nimport { AnimatedWrapper } from './AnimatedWrapper.js'\n\ninterface AccordionItemData {\n title: string\n content: string\n defaultOpen: boolean\n}\n\nexport interface AccordionClientProps {\n items: AccordionItemData[]\n allowMultiple: boolean\n textColor: ColorValue | null\n margin: PaddingValue | null\n background: BackgroundValue | null\n dimensions: DimensionsValue | null\n transform: TransformValue | null\n animation: AnimationValue | null\n customPadding: PaddingValue | null\n}\n\n// Accordion Item Component\nfunction AccordionItem({\n item,\n isOpen,\n onToggle,\n textColorCSS,\n}: {\n item: AccordionItemData\n isOpen: boolean\n onToggle: () => void\n textColorCSS?: string\n}) {\n const textStyle: React.CSSProperties = textColorCSS ? { color: textColorCSS } : {}\n\n return (\n <div className=\"border-b border-border last:border-b-0\">\n <button\n type=\"button\"\n onClick={onToggle}\n className=\"flex w-full items-center justify-between py-4 px-4 text-left font-medium transition-all hover:bg-muted/50 text-foreground\"\n style={textStyle}\n >\n <span>{item.title}</span>\n <ChevronDown\n className={cn(\n 'h-4 w-4 shrink-0 transition-transform duration-200',\n isOpen && 'rotate-180'\n )}\n />\n </button>\n <div\n className={cn(\n 'overflow-hidden transition-all duration-200',\n isOpen ? 'max-h-[1000px] opacity-100' : 'max-h-0 opacity-0'\n )}\n >\n <div\n className=\"px-4 pb-4 text-muted-foreground\"\n style={textColorCSS ? { color: textColorCSS } : undefined}\n >\n {item.content}\n </div>\n </div>\n </div>\n )\n}\n\nexport function AccordionClient({\n items,\n allowMultiple,\n textColor,\n margin,\n background,\n dimensions,\n transform,\n animation,\n customPadding,\n}: AccordionClientProps) {\n // Initialize open states from defaultOpen values\n const [openItems, setOpenItems] = useState<Set<number>>(() => {\n const initialOpen = new Set<number>()\n items?.forEach((item, index) => {\n if (item.defaultOpen) {\n initialOpen.add(index)\n }\n })\n return initialOpen\n })\n\n const handleToggle = (index: number) => {\n setOpenItems((prev) => {\n const newSet = new Set(prev)\n if (newSet.has(index)) {\n newSet.delete(index)\n } else {\n if (!allowMultiple) {\n newSet.clear()\n }\n newSet.add(index)\n }\n return newSet\n })\n }\n\n const textColorCSS = colorValueToCSS(textColor)\n const dimensionsStyles = dimensionsValueToCSS(dimensions)\n\n // Theme-aware classes - uses CSS variables for colors\n const accordionClasses = 'rounded-lg border border-border overflow-hidden bg-card'\n\n const backgroundStyles = backgroundValueToCSS(background)\n // Only apply background styles if explicitly set, otherwise let bg-card handle it\n const accordionStyle: React.CSSProperties = backgroundStyles && Object.keys(backgroundStyles).length > 0\n ? backgroundStyles\n : {}\n\n const marginCSS = marginValueToCSS(margin)\n const paddingCSS = paddingValueToCSS(customPadding)\n const transformStyles = transformValueToCSS(transform)\n\n const style: React.CSSProperties = {\n ...dimensionsStyles,\n ...(marginCSS ? { margin: marginCSS } : {}),\n ...(paddingCSS ? { padding: paddingCSS } : {}),\n ...transformStyles,\n }\n\n if (!items || items.length === 0) {\n return (\n <AnimatedWrapper animation={animation}>\n <div style={Object.keys(style).length > 0 ? style : undefined}>\n <div className={accordionClasses} style={accordionStyle}>\n <div className=\"p-4 text-center text-muted-foreground\">\n No accordion items. Add items in the editor.\n </div>\n </div>\n </div>\n </AnimatedWrapper>\n )\n }\n\n return (\n <AnimatedWrapper animation={animation}>\n <div style={Object.keys(style).length > 0 ? style : undefined}>\n <div className={accordionClasses} style={accordionStyle}>\n {items.map((item, index) => (\n <AccordionItem\n key={index}\n item={item}\n isOpen={openItems.has(index)}\n onToggle={() => handleToggle(index)}\n textColorCSS={textColorCSS}\n />\n ))}\n </div>\n </div>\n </AnimatedWrapper>\n )\n}\n"],"names":["useState","ChevronDown","marginValueToCSS","paddingValueToCSS","dimensionsValueToCSS","backgroundValueToCSS","transformValueToCSS","colorValueToCSS","cn","AnimatedWrapper","AccordionItem","item","isOpen","onToggle","textColorCSS","textStyle","color","div","className","button","type","onClick","style","span","title","undefined","content","AccordionClient","items","allowMultiple","textColor","margin","background","dimensions","transform","animation","customPadding","openItems","setOpenItems","initialOpen","Set","forEach","index","defaultOpen","add","handleToggle","prev","newSet","has","delete","clear","dimensionsStyles","accordionClasses","backgroundStyles","accordionStyle","Object","keys","length","marginCSS","paddingCSS","transformStyles","padding","map"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AnimatedWrapper.d.ts","sourceRoot":"","sources":["../../src/components/AnimatedWrapper.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAElE,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAA;AAE5B,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,SAAS,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAAA;IAC5C,+BAA+B;IAC/B,QAAQ,EAAE,SAAS,CAAA;IACnB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oBAAoB;IACpB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,iDAAiD;IACjD,EAAE,CAAC,EAAE,WAAW,CAAA;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,QAAQ,EACR,SAAS,EACT,KAAK,EACL,EAAE,EAAE,SAAiB,GACtB,EAAE,oBAAoB,+BAuEtB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/AnimatedWrapper.tsx"],"sourcesContent":["'use client'\n\n/**\n * AnimatedWrapper - Client component for scroll-triggered animations\n *\n * Wraps children with animation support using IntersectionObserver.\n * Handles both preset entrance animations and custom transitions.\n * Supports 27 animation presets with customizable intensity, easing, and origin.\n */\n\nimport type { ReactNode, CSSProperties, ElementType } from 'react'\nimport { useScrollAnimation } from '../hooks/useScrollAnimation.js'\nimport {\n getEntranceAnimationStyles,\n animationValueToCSS,\n type AnimationValue,\n} from '../fields/shared.js'\n\nexport interface AnimatedWrapperProps {\n /** Animation configuration from the component */\n animation: AnimationValue | null | undefined\n /** Child content to animate */\n children: ReactNode\n /** Additional CSS classes */\n className?: string\n /** Inline styles */\n style?: CSSProperties\n /** HTML element to render as (default: 'div') */\n as?: ElementType\n}\n\n/**\n * Wraps children with scroll-triggered animation support.\n *\n * For preset animations: Applies initial/animate inline styles\n * when element enters viewport.\n *\n * For custom animations: Applies CSS transition properties.\n *\n * If no animation is set, renders children without a wrapper div.\n */\nexport function AnimatedWrapper({\n animation,\n children,\n className,\n style,\n as: Component = 'div',\n}: AnimatedWrapperProps) {\n // Check if animation should be applied\n const hasAnimation = animation && (\n (animation.mode === 'preset' && animation.entrance && animation.entrance !== 'none') ||\n animation.mode === 'custom'\n )\n\n // If no animation, render children directly without wrapper\n if (!hasAnimation) {\n // If there's a className or style, we still need to wrap\n if (className || style) {\n return <Component className={className} style={style}>{children}</Component>\n }\n return <>{children}</>\n }\n\n // Use the scroll animation hook\n const { ref, isInView } = useScrollAnimation({\n triggerOnScroll: animation.triggerOnScroll ?? true,\n threshold: animation.triggerThreshold ?? 0.1,\n once: animation.triggerOnce ?? true,\n rootMargin: animation.triggerMargin,\n })\n\n // Handle preset entrance animations\n if (animation.mode === 'preset') {\n const { initial, animate, duration, delay, easing, origin } = getEntranceAnimationStyles(animation)\n\n // Apply initial or animate styles based on visibility\n const animationStyles = isInView ? animate : initial\n\n // Build transition string with all relevant properties\n const transitionProperties = [\n `opacity ${duration}ms ${easing} ${delay}ms`,\n `transform ${duration}ms ${easing} ${delay}ms`,\n `filter ${duration}ms ${easing} ${delay}ms`,\n ].join(', ')\n\n return (\n <Component\n ref={ref}\n className={className}\n style={{\n ...style,\n ...animationStyles,\n transition: transitionProperties,\n transformOrigin: origin,\n }}\n >\n {children}\n </Component>\n )\n }\n\n // Handle custom transition mode\n const customStyles = animationValueToCSS(animation)\n\n return (\n <Component\n ref={ref}\n className={className}\n style={{\n ...style,\n ...customStyles,\n // Apply opacity for visibility-based transitions\n opacity: isInView ? 1 : 0,\n }}\n >\n {children}\n </Component>\n )\n}\n"],"names":["useScrollAnimation","getEntranceAnimationStyles","animationValueToCSS","AnimatedWrapper","animation","children","className","style","as","Component","hasAnimation","mode","entrance","ref","isInView","triggerOnScroll","threshold","triggerThreshold","once","triggerOnce","rootMargin","triggerMargin","initial","animate","duration","delay","easing","origin","animationStyles","transitionProperties","join","transition","transformOrigin","customStyles","opacity"],"mappings":"AAAA;;AAWA,SAASA,kBAAkB,QAAQ,iCAAgC;AACnE,SACEC,0BAA0B,EAC1BC,mBAAmB,QAEd,sBAAqB;AAe5B;;;;;;;;;CASC,GACD,OAAO,SAASC,gBAAgB,EAC9BC,SAAS,EACTC,QAAQ,EACRC,SAAS,EACTC,KAAK,EACLC,IAAIC,YAAY,KAAK,EACA;IACrB,uCAAuC;IACvC,MAAMC,eAAeN,aACnB,CAAA,AAACA,UAAUO,IAAI,KAAK,YAAYP,UAAUQ,QAAQ,IAAIR,UAAUQ,QAAQ,KAAK,UAC7ER,UAAUO,IAAI,KAAK,QAAO;IAG5B,4DAA4D;IAC5D,IAAI,CAACD,cAAc;QACjB,yDAAyD;QACzD,IAAIJ,aAAaC,OAAO;YACtB,qBAAO,KAACE;gBAAUH,WAAWA;gBAAWC,OAAOA;0BAAQF;;QACzD;QACA,qBAAO;sBAAGA;;IACZ;IAEA,gCAAgC;IAChC,MAAM,EAAEQ,GAAG,EAAEC,QAAQ,EAAE,GAAGd,mBAAmB;QAC3Ce,iBAAiBX,UAAUW,eAAe,IAAI;QAC9CC,WAAWZ,UAAUa,gBAAgB,IAAI;QACzCC,MAAMd,UAAUe,WAAW,IAAI;QAC/BC,YAAYhB,UAAUiB,aAAa;IACrC;IAEA,oCAAoC;IACpC,IAAIjB,UAAUO,IAAI,KAAK,UAAU;QAC/B,MAAM,EAAEW,OAAO,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,MAAM,EAAEC,MAAM,EAAE,GAAG1B,2BAA2BG;QAEzF,sDAAsD;QACtD,MAAMwB,kBAAkBd,WAAWS,UAAUD;QAE7C,uDAAuD;QACvD,MAAMO,uBAAuB;YAC3B,CAAC,QAAQ,EAAEL,SAAS,GAAG,EAAEE,OAAO,CAAC,EAAED,MAAM,EAAE,CAAC;YAC5C,CAAC,UAAU,EAAED,SAAS,GAAG,EAAEE,OAAO,CAAC,EAAED,MAAM,EAAE,CAAC;YAC9C,CAAC,OAAO,EAAED,SAAS,GAAG,EAAEE,OAAO,CAAC,EAAED,MAAM,EAAE,CAAC;SAC5C,CAACK,IAAI,CAAC;QAEP,qBACE,KAACrB;YACCI,KAAKA;YACLP,WAAWA;YACXC,OAAO;gBACL,GAAGA,KAAK;gBACR,GAAGqB,eAAe;gBAClBG,YAAYF;gBACZG,iBAAiBL;YACnB;sBAECtB;;IAGP;IAEA,gCAAgC;IAChC,MAAM4B,eAAe/B,oBAAoBE;IAEzC,qBACE,KAACK;QACCI,KAAKA;QACLP,WAAWA;QACXC,OAAO;YACL,GAAGA,KAAK;YACR,GAAG0B,YAAY;YACf,iDAAiD;YACjDC,SAASpB,WAAW,IAAI;QAC1B;kBAECT;;AAGP"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../src/components/exports.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAOH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAGrD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAGhE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAS5D,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACvF,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AACjF,OAAO,EAAE,YAAY,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAGlE,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACrF,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC5E,OAAO,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAGxF,OAAO,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAG1E,OAAO,EAAE,YAAY,IAAI,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnF,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC7E,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AACtF,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AAM5F,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/exports.ts"],"sourcesContent":["'use client'\n\n/**\n * Individual component config exports\n *\n * This module exports individual Puck component configurations so users can\n * cherry-pick components for their custom configs.\n *\n * @example\n * ```tsx\n * import {\n * SectionConfig,\n * HeadingConfig,\n * TextConfig,\n * } from '@delmaredigital/payload-puck/components'\n *\n * export const myConfig: Config = {\n * components: {\n * Section: SectionConfig,\n * Heading: HeadingConfig,\n * Text: TextConfig,\n * },\n * // ...\n * }\n * ```\n */\n\n// =============================================================================\n// Editor Component Configs (for Puck Editor)\n// =============================================================================\n\n// Layout components\nexport { ContainerConfig } from './layout/Container.js'\nexport { FlexConfig } from './layout/Flex.js'\nexport { GridConfig } from './layout/Grid.js'\nexport { SectionConfig } from './layout/Section.js'\nexport { SpacerConfig } from './layout/Spacer.js'\nexport { TemplateConfig } from './layout/Template.js'\n\n// Typography components\nexport { HeadingConfig } from './typography/Heading.js'\nexport { TextConfig } from './typography/Text.js'\nexport { RichTextEditorConfig } from './typography/RichText.editor.js'\nexport { RichTextConfig } from './typography/RichText.server.js'\n\n// Media components\nexport { ImageConfig } from './media/Image.js'\n\n// Interactive components\nexport { ButtonConfig } from './interactive/Button.js'\nexport { CardConfig } from './interactive/Card.js'\nexport { DividerConfig } from './interactive/Divider.js'\nexport { AccordionConfig } from './interactive/Accordion.js'\n\n// =============================================================================\n// Server Component Configs (for PageRenderer)\n// =============================================================================\n// These are SSR-safe variants without client-side interactivity.\n// Use these when building a custom baseConfig for PageRenderer.\n\n// Layout components (server)\nexport { ContainerConfig as ContainerServerConfig } from './layout/Container.server.js'\nexport { FlexConfig as FlexServerConfig } from './layout/Flex.server.js'\nexport { GridConfig as GridServerConfig } from './layout/Grid.server.js'\nexport { SectionConfig as SectionServerConfig } from './layout/Section.server.js'\nexport { SpacerConfig as SpacerServerConfig } from './layout/Spacer.server.js'\nexport { TemplateServerConfig } from './layout/Template.server.js'\n\n// Typography components (server)\nexport { HeadingConfig as HeadingServerConfig } from './typography/Heading.server.js'\nexport { TextConfig as TextServerConfig } from './typography/Text.server.js'\nexport { RichTextConfig as RichTextServerConfig } from './typography/RichText.server.js'\n\n// Media components (server)\nexport { ImageConfig as ImageServerConfig } from './media/Image.server.js'\n\n// Interactive components (server)\nexport { ButtonConfig as ButtonServerConfig } from './interactive/Button.server.js'\nexport { CardConfig as CardServerConfig } from './interactive/Card.server.js'\nexport { DividerConfig as DividerServerConfig } from './interactive/Divider.server.js'\nexport { AccordionConfig as AccordionServerConfig } from './interactive/Accordion.server.js'\n\n// =============================================================================\n// Animation Components\n// =============================================================================\n\nexport { AnimatedWrapper, type AnimatedWrapperProps } from './AnimatedWrapper.js'\n"],"names":["ContainerConfig","FlexConfig","GridConfig","SectionConfig","SpacerConfig","TemplateConfig","HeadingConfig","TextConfig","RichTextEditorConfig","RichTextConfig","ImageConfig","ButtonConfig","CardConfig","DividerConfig","AccordionConfig","ContainerServerConfig","FlexServerConfig","GridServerConfig","SectionServerConfig","SpacerServerConfig","TemplateServerConfig","HeadingServerConfig","TextServerConfig","RichTextServerConfig","ImageServerConfig","ButtonServerConfig","CardServerConfig","DividerServerConfig","AccordionServerConfig","AnimatedWrapper"],"mappings":"AAAA;AAEA;;;;;;;;;;;;;;;;;;;;;;;CAuBC,GAED,gFAAgF;AAChF,6CAA6C;AAC7C,gFAAgF;AAEhF,oBAAoB;AACpB,SAASA,eAAe,QAAQ,wBAAuB;AACvD,SAASC,UAAU,QAAQ,mBAAkB;AAC7C,SAASC,UAAU,QAAQ,mBAAkB;AAC7C,SAASC,aAAa,QAAQ,sBAAqB;AACnD,SAASC,YAAY,QAAQ,qBAAoB;AACjD,SAASC,cAAc,QAAQ,uBAAsB;AAErD,wBAAwB;AACxB,SAASC,aAAa,QAAQ,0BAAyB;AACvD,SAASC,UAAU,QAAQ,uBAAsB;AACjD,SAASC,oBAAoB,QAAQ,kCAAiC;AACtE,SAASC,cAAc,QAAQ,kCAAiC;AAEhE,mBAAmB;AACnB,SAASC,WAAW,QAAQ,mBAAkB;AAE9C,yBAAyB;AACzB,SAASC,YAAY,QAAQ,0BAAyB;AACtD,SAASC,UAAU,QAAQ,wBAAuB;AAClD,SAASC,aAAa,QAAQ,2BAA0B;AACxD,SAASC,eAAe,QAAQ,6BAA4B;AAE5D,gFAAgF;AAChF,8CAA8C;AAC9C,gFAAgF;AAChF,iEAAiE;AACjE,gEAAgE;AAEhE,6BAA6B;AAC7B,SAASd,mBAAmBe,qBAAqB,QAAQ,+BAA8B;AACvF,SAASd,cAAce,gBAAgB,QAAQ,0BAAyB;AACxE,SAASd,cAAce,gBAAgB,QAAQ,0BAAyB;AACxE,SAASd,iBAAiBe,mBAAmB,QAAQ,6BAA4B;AACjF,SAASd,gBAAgBe,kBAAkB,QAAQ,4BAA2B;AAC9E,SAASC,oBAAoB,QAAQ,8BAA6B;AAElE,iCAAiC;AACjC,SAASd,iBAAiBe,mBAAmB,QAAQ,iCAAgC;AACrF,SAASd,cAAce,gBAAgB,QAAQ,8BAA6B;AAC5E,SAASb,kBAAkBc,oBAAoB,QAAQ,kCAAiC;AAExF,4BAA4B;AAC5B,SAASb,eAAec,iBAAiB,QAAQ,0BAAyB;AAE1E,kCAAkC;AAClC,SAASb,gBAAgBc,kBAAkB,QAAQ,iCAAgC;AACnF,SAASb,cAAcc,gBAAgB,QAAQ,+BAA8B;AAC7E,SAASb,iBAAiBc,mBAAmB,QAAQ,kCAAiC;AACtF,SAASb,mBAAmBc,qBAAqB,QAAQ,oCAAmC;AAE5F,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF,SAASC,eAAe,QAAmC,uBAAsB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,mBAAmB,CAAA;AAGjC,cAAc,uBAAuB,CAAA;AAGrC,cAAc,kBAAkB,CAAA;AAGhC,cAAc,wBAAwB,CAAA;AAGtC,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/index.ts"],"sourcesContent":["/**\n * Puck Component Configurations\n *\n * All component configs for the Puck visual page builder.\n */\n\n// Layout Components\nexport * from './layout/index.js'\n\n// Typography Components\nexport * from './typography/index.js'\n\n// Media Components\nexport * from './media/index.js'\n\n// Interactive Components\nexport * from './interactive/index.js'\n\n// Animation\nexport { AnimatedWrapper, type AnimatedWrapperProps } from './AnimatedWrapper.js'\n"],"names":["AnimatedWrapper"],"mappings":"AAAA;;;;CAIC,GAED,oBAAoB;AACpB,cAAc,oBAAmB;AAEjC,wBAAwB;AACxB,cAAc,wBAAuB;AAErC,mBAAmB;AACnB,cAAc,mBAAkB;AAEhC,yBAAyB;AACzB,cAAc,yBAAwB;AAEtC,YAAY;AACZ,SAASA,eAAe,QAAmC,uBAAsB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Accordion.d.ts","sourceRoot":"","sources":["../../../src/components/interactive/Accordion.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAGvD,OAAO,EAQL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,wBAAwB,CAAA;AAW/B,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,OAAO,CAAA;CACrB;AA0KD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,iBAAiB,EAAE,CAAA;IAC1B,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,UAAU,GAAG,IAAI,CAAA;IAC5B,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,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;AAyBD,eAAO,MAAM,eAAe,EAAE,eA+D7B,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/interactive/Accordion.tsx"],"sourcesContent":["'use client'\n\n/**\n * Accordion Component - Puck Configuration\n *\n * Expandable sections with collapsible content.\n * Uses plain HTML/CSS for the accordion behavior.\n * Supports custom margin for spacing control.\n */\n\nimport type { ComponentConfig } from '@puckeditor/core'\nimport { useState } from 'react'\nimport { ChevronDown } from 'lucide-react'\nimport {\n marginValueToCSS,\n paddingValueToCSS,\n dimensionsValueToCSS,\n backgroundValueToCSS,\n transformValueToCSS,\n colorValueToCSS,\n cn,\n type PaddingValue,\n type DimensionsValue,\n type BackgroundValue,\n type AnimationValue,\n type TransformValue,\n type ColorValue,\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 { createResetField } from '../../fields/ResetField.js'\nimport { createBackgroundField } from '../../fields/BackgroundField.js'\nimport { createAnimationField } from '../../fields/AnimationField.js'\nimport { createTransformField } from '../../fields/TransformField.js'\nimport { createColorPickerField } from '../../fields/ColorPickerField.js'\n\ninterface AccordionItemData {\n title: string\n content: string\n defaultOpen: boolean\n}\n\ninterface AccordionRendererProps {\n items: AccordionItemData[]\n allowMultiple: boolean\n textColor: ColorValue | null\n margin: PaddingValue | null\n background: BackgroundValue | null\n dimensions: DimensionsValue | null\n transform: TransformValue | null\n animation: AnimationValue | null\n customPadding: PaddingValue | null\n}\n\n// Accordion Item Component\nfunction AccordionItem({\n item,\n isOpen,\n onToggle,\n textColorCSS,\n}: {\n item: AccordionItemData\n isOpen: boolean\n onToggle: () => void\n textColorCSS?: string\n}) {\n const textStyle: React.CSSProperties = textColorCSS ? { color: textColorCSS } : {}\n\n return (\n <div className=\"border-b border-border last:border-b-0\">\n <button\n type=\"button\"\n onClick={onToggle}\n className=\"flex w-full items-center justify-between py-4 px-4 text-left font-medium transition-all hover:bg-muted/50 text-foreground\"\n style={textStyle}\n >\n <span>{item.title}</span>\n <ChevronDown\n className={cn(\n 'h-4 w-4 shrink-0 transition-transform duration-200',\n isOpen && 'rotate-180'\n )}\n />\n </button>\n <div\n className={cn(\n 'overflow-hidden transition-all duration-200',\n isOpen ? 'max-h-[1000px] opacity-100' : 'max-h-0 opacity-0'\n )}\n >\n <div\n className=\"px-4 pb-4 text-muted-foreground\"\n style={textColorCSS ? { color: textColorCSS } : undefined}\n >\n {item.content}\n </div>\n </div>\n </div>\n )\n}\n\n// Main Accordion Render Component\nfunction AccordionRenderer({\n items,\n allowMultiple,\n textColor,\n margin,\n background,\n dimensions,\n transform,\n animation,\n customPadding,\n}: AccordionRendererProps) {\n // Initialize open states from defaultOpen values\n const [openItems, setOpenItems] = useState<Set<number>>(() => {\n const initialOpen = new Set<number>()\n items?.forEach((item, index) => {\n if (item.defaultOpen) {\n initialOpen.add(index)\n }\n })\n return initialOpen\n })\n\n const handleToggle = (index: number) => {\n setOpenItems((prev) => {\n const newSet = new Set(prev)\n if (newSet.has(index)) {\n newSet.delete(index)\n } else {\n if (!allowMultiple) {\n newSet.clear()\n }\n newSet.add(index)\n }\n return newSet\n })\n }\n\n const textColorCSS = colorValueToCSS(textColor)\n const dimensionsStyles = dimensionsValueToCSS(dimensions)\n\n // Theme-aware classes - uses CSS variables for colors\n const accordionClasses = 'rounded-lg border border-border overflow-hidden bg-card'\n\n const backgroundStyles = backgroundValueToCSS(background)\n // Only apply background styles if explicitly set, otherwise let bg-card handle it\n const accordionStyle: React.CSSProperties = backgroundStyles && Object.keys(backgroundStyles).length > 0\n ? backgroundStyles\n : {}\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 transformStyles = transformValueToCSS(transform)\n if (transformStyles) {\n Object.assign(style, transformStyles)\n }\n\n if (!items || items.length === 0) {\n return (\n <AnimatedWrapper animation={animation}>\n <div style={Object.keys(style).length > 0 ? style : undefined}>\n <div className={accordionClasses} style={accordionStyle}>\n <div className=\"p-4 text-center text-muted-foreground\">\n No accordion items. Add items in the editor.\n </div>\n </div>\n </div>\n </AnimatedWrapper>\n )\n }\n\n return (\n <AnimatedWrapper animation={animation}>\n <div style={Object.keys(style).length > 0 ? style : undefined}>\n <div className={accordionClasses} style={accordionStyle}>\n {items.map((item, index) => (\n <AccordionItem\n key={index}\n item={item}\n isOpen={openItems.has(index)}\n onToggle={() => handleToggle(index)}\n textColorCSS={textColorCSS}\n />\n ))}\n </div>\n </div>\n </AnimatedWrapper>\n )\n}\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 AccordionProps {\n items: AccordionItemData[]\n allowMultiple: boolean\n textColor: ColorValue | null\n margin: PaddingValue | null\n background: BackgroundValue | null\n dimensions: DimensionsValue | null\n transform: TransformValue | null\n animation: AnimationValue | null\n customPadding: PaddingValue | null\n}\n\nconst defaultProps: AccordionProps = {\n items: [\n {\n title: 'What is this?',\n content: 'This is an accordion component that can expand and collapse.',\n defaultOpen: false,\n },\n {\n title: 'How do I use it?',\n content: 'Click on each item to expand or collapse it.',\n defaultOpen: false,\n },\n ],\n allowMultiple: false,\n textColor: null,\n margin: null,\n background: 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 AccordionConfig: ComponentConfig = {\n label: 'Accordion',\n fields: {\n _reset: createResetField({ defaultProps }),\n items: {\n type: 'array',\n label: 'Items',\n arrayFields: {\n title: {\n type: 'text',\n label: 'Title',\n },\n content: {\n type: 'textarea',\n label: 'Content',\n },\n defaultOpen: {\n type: 'radio',\n label: 'Default Open',\n options: [\n { label: 'Yes', value: true },\n { label: 'No', value: false },\n ],\n },\n },\n defaultItemProps: (index: number) => ({\n title: `Accordion Item ${index + 1}`,\n content: '',\n defaultOpen: index === 0,\n }),\n getItemSummary: (item: AccordionItemData) => item.title || 'Untitled',\n },\n allowMultiple: {\n type: 'radio',\n label: 'Allow Multiple Open',\n options: [\n { label: 'Yes', value: true },\n { label: 'No', value: false },\n ],\n },\n textColor: createColorPickerField({ label: 'Text Color' }),\n background: createBackgroundField({ label: 'Background' }),\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: (props) => (\n <AccordionRenderer\n items={props.items}\n allowMultiple={props.allowMultiple}\n textColor={props.textColor}\n margin={props.margin}\n background={props.background}\n dimensions={props.dimensions}\n transform={props.transform}\n animation={props.animation}\n customPadding={props.customPadding}\n />\n ),\n}\n"],"names":["useState","ChevronDown","marginValueToCSS","paddingValueToCSS","dimensionsValueToCSS","backgroundValueToCSS","transformValueToCSS","colorValueToCSS","cn","AnimatedWrapper","createMarginField","createPaddingField","createDimensionsField","createResetField","createBackgroundField","createAnimationField","createTransformField","createColorPickerField","AccordionItem","item","isOpen","onToggle","textColorCSS","textStyle","color","div","className","button","type","onClick","style","span","title","undefined","content","AccordionRenderer","items","allowMultiple","textColor","margin","background","dimensions","transform","animation","customPadding","openItems","setOpenItems","initialOpen","Set","forEach","index","defaultOpen","add","handleToggle","prev","newSet","has","delete","clear","dimensionsStyles","accordionClasses","backgroundStyles","accordionStyle","Object","keys","length","marginCSS","paddingCSS","padding","transformStyles","assign","map","DEFAULT_PADDING","top","right","bottom","left","unit","linked","defaultProps","AccordionConfig","label","fields","_reset","arrayFields","options","value","defaultItemProps","getItemSummary","render","props"],"mappings":"AAAA;;AAWA,SAASA,QAAQ,QAAQ,QAAO;AAChC,SAASC,WAAW,QAAQ,eAAc;AAC1C,SACEC,gBAAgB,EAChBC,iBAAiB,EACjBC,oBAAoB,EACpBC,oBAAoB,EACpBC,mBAAmB,EACnBC,eAAe,EACfC,EAAE,QAOG,yBAAwB;AAC/B,SAASC,eAAe,QAAQ,wBAAuB;AACvD,SAASC,iBAAiB,QAAQ,8BAA6B;AAC/D,SAASC,kBAAkB,QAAQ,+BAA8B;AACjE,SAASC,qBAAqB,QAAQ,kCAAiC;AACvE,SAASC,gBAAgB,QAAQ,6BAA4B;AAC7D,SAASC,qBAAqB,QAAQ,kCAAiC;AACvE,SAASC,oBAAoB,QAAQ,iCAAgC;AACrE,SAASC,oBAAoB,QAAQ,iCAAgC;AACrE,SAASC,sBAAsB,QAAQ,mCAAkC;AAoBzE,2BAA2B;AAC3B,SAASC,cAAc,EACrBC,IAAI,EACJC,MAAM,EACNC,QAAQ,EACRC,YAAY,EAMb;IACC,MAAMC,YAAiCD,eAAe;QAAEE,OAAOF;IAAa,IAAI,CAAC;IAEjF,qBACE,MAACG;QAAIC,WAAU;;0BACb,MAACC;gBACCC,MAAK;gBACLC,SAASR;gBACTK,WAAU;gBACVI,OAAOP;;kCAEP,KAACQ;kCAAMZ,KAAKa,KAAK;;kCACjB,KAAC/B;wBACCyB,WAAWlB,GACT,sDACAY,UAAU;;;;0BAIhB,KAACK;gBACCC,WAAWlB,GACT,+CACAY,SAAS,+BAA+B;0BAG1C,cAAA,KAACK;oBACCC,WAAU;oBACVI,OAAOR,eAAe;wBAAEE,OAAOF;oBAAa,IAAIW;8BAE/Cd,KAAKe,OAAO;;;;;AAKvB;AAEA,kCAAkC;AAClC,SAASC,kBAAkB,EACzBC,KAAK,EACLC,aAAa,EACbC,SAAS,EACTC,MAAM,EACNC,UAAU,EACVC,UAAU,EACVC,SAAS,EACTC,SAAS,EACTC,aAAa,EACU;IACvB,iDAAiD;IACjD,MAAM,CAACC,WAAWC,aAAa,GAAG9C,SAAsB;QACtD,MAAM+C,cAAc,IAAIC;QACxBZ,OAAOa,QAAQ,CAAC9B,MAAM+B;YACpB,IAAI/B,KAAKgC,WAAW,EAAE;gBACpBJ,YAAYK,GAAG,CAACF;YAClB;QACF;QACA,OAAOH;IACT;IAEA,MAAMM,eAAe,CAACH;QACpBJ,aAAa,CAACQ;YACZ,MAAMC,SAAS,IAAIP,IAAIM;YACvB,IAAIC,OAAOC,GAAG,CAACN,QAAQ;gBACrBK,OAAOE,MAAM,CAACP;YAChB,OAAO;gBACL,IAAI,CAACb,eAAe;oBAClBkB,OAAOG,KAAK;gBACd;gBACAH,OAAOH,GAAG,CAACF;YACb;YACA,OAAOK;QACT;IACF;IAEA,MAAMjC,eAAef,gBAAgB+B;IACrC,MAAMqB,mBAAmBvD,qBAAqBqC;IAE9C,sDAAsD;IACtD,MAAMmB,mBAAmB;IAEzB,MAAMC,mBAAmBxD,qBAAqBmC;IAC9C,kFAAkF;IAClF,MAAMsB,iBAAsCD,oBAAoBE,OAAOC,IAAI,CAACH,kBAAkBI,MAAM,GAAG,IACnGJ,mBACA,CAAC;IAEL,MAAM/B,QAA6B;QACjC,GAAG6B,gBAAgB;IACrB;IACA,MAAMO,YAAYhE,iBAAiBqC;IACnC,IAAI2B,WAAW;QACbpC,MAAMS,MAAM,GAAG2B;IACjB;IACA,MAAMC,aAAahE,kBAAkByC;IACrC,IAAIuB,YAAY;QACdrC,MAAMsC,OAAO,GAAGD;IAClB;IACA,MAAME,kBAAkB/D,oBAAoBoC;IAC5C,IAAI2B,iBAAiB;QACnBN,OAAOO,MAAM,CAACxC,OAAOuC;IACvB;IAEA,IAAI,CAACjC,SAASA,MAAM6B,MAAM,KAAK,GAAG;QAChC,qBACE,KAACxD;YAAgBkC,WAAWA;sBAC1B,cAAA,KAAClB;gBAAIK,OAAOiC,OAAOC,IAAI,CAAClC,OAAOmC,MAAM,GAAG,IAAInC,QAAQG;0BAClD,cAAA,KAACR;oBAAIC,WAAWkC;oBAAkB9B,OAAOgC;8BACvC,cAAA,KAACrC;wBAAIC,WAAU;kCAAwC;;;;;IAOjE;IAEA,qBACE,KAACjB;QAAgBkC,WAAWA;kBAC1B,cAAA,KAAClB;YAAIK,OAAOiC,OAAOC,IAAI,CAAClC,OAAOmC,MAAM,GAAG,IAAInC,QAAQG;sBAClD,cAAA,KAACR;gBAAIC,WAAWkC;gBAAkB9B,OAAOgC;0BACtC1B,MAAMmC,GAAG,CAAC,CAACpD,MAAM+B,sBAChB,KAAChC;wBAECC,MAAMA;wBACNC,QAAQyB,UAAUW,GAAG,CAACN;wBACtB7B,UAAU,IAAMgC,aAAaH;wBAC7B5B,cAAcA;uBAJT4B;;;;AAWnB;AAEA,6EAA6E;AAC7E,MAAMsB,kBAAgC;IACpCC,KAAK;IACLC,OAAO;IACPC,QAAQ;IACRC,MAAM;IACNC,MAAM;IACNC,QAAQ;AACV;AAcA,MAAMC,eAA+B;IACnC3C,OAAO;QACL;YACEJ,OAAO;YACPE,SAAS;YACTiB,aAAa;QACf;QACA;YACEnB,OAAO;YACPE,SAAS;YACTiB,aAAa;QACf;KACD;IACDd,eAAe;IACfC,WAAW;IACXC,QAAQ;IACRC,YAAY;IACZC,YAAY;IACZC,WAAW;IACXC,WAAW;IACXC,eAAe4B;AACjB;AAEA,OAAO,MAAMQ,kBAAmC;IAC9CC,OAAO;IACPC,QAAQ;QACNC,QAAQtE,iBAAiB;YAAEkE;QAAa;QACxC3C,OAAO;YACLR,MAAM;YACNqD,OAAO;YACPG,aAAa;gBACXpD,OAAO;oBACLJ,MAAM;oBACNqD,OAAO;gBACT;gBACA/C,SAAS;oBACPN,MAAM;oBACNqD,OAAO;gBACT;gBACA9B,aAAa;oBACXvB,MAAM;oBACNqD,OAAO;oBACPI,SAAS;wBACP;4BAAEJ,OAAO;4BAAOK,OAAO;wBAAK;wBAC5B;4BAAEL,OAAO;4BAAMK,OAAO;wBAAM;qBAC7B;gBACH;YACF;YACAC,kBAAkB,CAACrC,QAAmB,CAAA;oBACpClB,OAAO,CAAC,eAAe,EAAEkB,QAAQ,GAAG;oBACpChB,SAAS;oBACTiB,aAAaD,UAAU;gBACzB,CAAA;YACAsC,gBAAgB,CAACrE,OAA4BA,KAAKa,KAAK,IAAI;QAC7D;QACAK,eAAe;YACbT,MAAM;YACNqD,OAAO;YACPI,SAAS;gBACP;oBAAEJ,OAAO;oBAAOK,OAAO;gBAAK;gBAC5B;oBAAEL,OAAO;oBAAMK,OAAO;gBAAM;aAC7B;QACH;QACAhD,WAAWrB,uBAAuB;YAAEgE,OAAO;QAAa;QACxDzC,YAAY1B,sBAAsB;YAAEmE,OAAO;QAAa;QACxDxC,YAAY7B,sBAAsB;YAAEqE,OAAO;QAAa;QACxDvC,WAAW1B,qBAAqB;YAAEiE,OAAO;QAAY;QACrDtC,WAAW5B,qBAAqB;YAAEkE,OAAO;QAAY;QACrD,8BAA8B;QAC9B1C,QAAQ7B,kBAAkB;YAAEuE,OAAO;QAAS;QAC5CrC,eAAejC,mBAAmB;YAAEsE,OAAO;QAAU;IACvD;IACAF;IACAU,QAAQ,CAACC,sBACP,KAACvD;YACCC,OAAOsD,MAAMtD,KAAK;YAClBC,eAAeqD,MAAMrD,aAAa;YAClCC,WAAWoD,MAAMpD,SAAS;YAC1BC,QAAQmD,MAAMnD,MAAM;YACpBC,YAAYkD,MAAMlD,UAAU;YAC5BC,YAAYiD,MAAMjD,UAAU;YAC5BC,WAAWgD,MAAMhD,SAAS;YAC1BC,WAAW+C,MAAM/C,SAAS;YAC1BC,eAAe8C,MAAM9C,aAAa;;AAGxC,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Accordion.server.d.ts","sourceRoot":"","sources":["../../../src/components/interactive/Accordion.server.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,eAAe,EACf,cAAc,EACd,cAAc,EACd,UAAU,EACX,MAAM,wBAAwB,CAAA;AAG/B,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,iBAAiB,EAAE,CAAA;IAC1B,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,UAAU,GAAG,IAAI,CAAA;IAC5B,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,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;AAyBD,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,cAAc,CAgB3D,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/interactive/Accordion.server.tsx"],"sourcesContent":["/**\n * Accordion Component - Server-safe Puck Configuration\n *\n * Expandable sections with collapsible content.\n * This version contains only the render function and types - no fields.\n * The render function returns a client component (AccordionClient) that\n * handles the interactive state.\n */\n\nimport type { ComponentConfig } from '@puckeditor/core'\nimport type {\n PaddingValue,\n DimensionsValue,\n BackgroundValue,\n AnimationValue,\n TransformValue,\n ColorValue,\n} from '../../fields/shared.js'\nimport { AccordionClient } from '../AccordionClient.js'\n\ninterface AccordionItemData {\n title: string\n content: string\n defaultOpen: boolean\n}\n\nexport interface AccordionProps {\n items: AccordionItemData[]\n allowMultiple: boolean\n textColor: ColorValue | null\n margin: PaddingValue | null\n background: BackgroundValue | null\n dimensions: DimensionsValue | null\n transform: TransformValue | null\n animation: AnimationValue | null\n customPadding: PaddingValue | null\n}\n\nconst defaultProps: AccordionProps = {\n items: [\n {\n title: 'What is this?',\n content: 'This is an accordion component that can expand and collapse.',\n defaultOpen: false,\n },\n {\n title: 'How do I use it?',\n content: 'Click on each item to expand or collapse it.',\n defaultOpen: false,\n },\n ],\n allowMultiple: false,\n textColor: null,\n margin: null,\n background: null,\n dimensions: null,\n transform: null,\n animation: null,\n customPadding: null,\n}\n\nexport const AccordionConfig: ComponentConfig<AccordionProps> = {\n label: 'Accordion',\n defaultProps,\n render: (props) => (\n <AccordionClient\n items={props.items}\n allowMultiple={props.allowMultiple}\n textColor={props.textColor}\n margin={props.margin}\n background={props.background}\n dimensions={props.dimensions}\n transform={props.transform}\n animation={props.animation}\n customPadding={props.customPadding}\n />\n ),\n}\n"],"names":["AccordionClient","defaultProps","items","title","content","defaultOpen","allowMultiple","textColor","margin","background","dimensions","transform","animation","customPadding","AccordionConfig","label","render","props"],"mappings":"AAAA;;;;;;;CAOC;AAWD,SAASA,eAAe,QAAQ,wBAAuB;AAoBvD,MAAMC,eAA+B;IACnCC,OAAO;QACL;YACEC,OAAO;YACPC,SAAS;YACTC,aAAa;QACf;QACA;YACEF,OAAO;YACPC,SAAS;YACTC,aAAa;QACf;KACD;IACDC,eAAe;IACfC,WAAW;IACXC,QAAQ;IACRC,YAAY;IACZC,YAAY;IACZC,WAAW;IACXC,WAAW;IACXC,eAAe;AACjB;AAEA,OAAO,MAAMC,kBAAmD;IAC9DC,OAAO;IACPd;IACAe,QAAQ,CAACC,sBACP,KAACjB;YACCE,OAAOe,MAAMf,KAAK;YAClBI,eAAeW,MAAMX,aAAa;YAClCC,WAAWU,MAAMV,SAAS;YAC1BC,QAAQS,MAAMT,MAAM;YACpBC,YAAYQ,MAAMR,UAAU;YAC5BC,YAAYO,MAAMP,UAAU;YAC5BC,WAAWM,MAAMN,SAAS;YAC1BC,WAAWK,MAAML,SAAS;YAC1BC,eAAeI,MAAMJ,aAAa;;AAGxC,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/interactive/Button.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAQL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAA;AAM/B,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,gCAAgC,CAAA;AACrF,OAAO,EAAmD,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAU3G,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,qBAAqB,EAAE,UAAU,GAAG,IAAI,CAAA;IACxC,eAAe,EAAE,UAAU,GAAG,IAAI,CAAA;IAClC,YAAY,EAAE,WAAW,GAAG,IAAI,CAAA;IAChC,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;CACnC;AA8BD,eAAO,MAAM,YAAY,EAAE,eAqI1B,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/interactive/Button.tsx"],"sourcesContent":["/**\n * Button Component - Puck Configuration\n *\n * CTA button with customizable styling and link support.\n */\n\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n buttonVariantField,\n cn,\n marginValueToCSS,\n paddingValueToCSS,\n colorValueToCSS,\n borderValueToCSS,\n transformValueToCSS,\n type PaddingValue,\n type ColorValue,\n type BorderValue,\n type AnimationValue,\n type TransformValue,\n} from '../../fields/shared.js'\nimport { AnimatedWrapper } from '../AnimatedWrapper.js'\nimport { createMarginField } from '../../fields/MarginField.js'\nimport { createColorPickerField } from '../../fields/ColorPickerField.js'\nimport { createBorderField } from '../../fields/BorderField.js'\nimport { createPaddingField } from '../../fields/PaddingField.js'\nimport { createAlignmentField, type Alignment } from '../../fields/AlignmentField.js'\nimport { createSizeField, sizeValueToCSS, getSizeClasses, type SizeValue } from '../../fields/SizeField.js'\nimport { createAnimationField } from '../../fields/AnimationField.js'\nimport { createTransformField } from '../../fields/TransformField.js'\nimport { createResetField } from '../../fields/ResetField.js'\nimport {\n DEFAULT_BUTTON_VARIANTS,\n DEFAULT_FOCUS_RING,\n getVariantClasses,\n} from '../../theme/index.js'\n\nexport interface ButtonProps {\n text: string\n link: string\n variant: string\n size: SizeValue | null\n openInNewTab: string\n margin: PaddingValue | null\n customBackgroundColor: ColorValue | null\n customTextColor: ColorValue | null\n customBorder: BorderValue | null\n alignment: Alignment | null\n transform: TransformValue | null\n animation: AnimationValue | null\n customPadding: PaddingValue | null\n}\n\nconst sizeStyles: Record<string, string> = {\n sm: 'h-8 px-3 text-sm',\n default: 'h-10 px-4',\n lg: 'h-12 px-8 text-lg',\n}\n\nconst alignmentWrapperMap: Record<string, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n}\n\nconst defaultProps: ButtonProps = {\n text: 'Click Me',\n link: '',\n variant: 'default',\n size: null,\n openInNewTab: 'no',\n margin: null,\n customBackgroundColor: null,\n customTextColor: null,\n customBorder: null,\n alignment: null,\n transform: null,\n animation: null,\n customPadding: null,\n}\n\nexport const ButtonConfig: ComponentConfig = {\n label: 'Button',\n fields: {\n _reset: createResetField({ defaultProps }),\n text: {\n type: 'text',\n label: 'Button Text',\n },\n link: {\n type: 'text',\n label: 'Link URL',\n },\n variant: buttonVariantField,\n size: createSizeField({ label: 'Size' }),\n openInNewTab: {\n type: 'radio',\n label: 'Open in New Tab',\n options: [\n { label: 'No', value: 'no' },\n { label: 'Yes', value: 'yes' },\n ],\n },\n customBackgroundColor: createColorPickerField({ label: 'Custom Background', showOpacity: true }),\n customTextColor: createColorPickerField({ label: 'Custom Text Color', showOpacity: true }),\n customBorder: createBorderField({ label: 'Custom Border' }),\n alignment: createAlignmentField({ label: 'Alignment' }),\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: ({ text, link, variant, size, openInNewTab, alignment, margin, customBackgroundColor, customTextColor, customBorder, transform, animation, customPadding }) => {\n // Determine if custom styles should override preset variant/size styles\n const hasCustomBackground = customBackgroundColor?.hex\n const hasCustomTextColor = customTextColor?.hex\n const hasCustomPadding = customPadding\n const hasCustomSize = size?.mode === 'custom'\n\n // Get variant classes from defaults (SSR-safe, no hooks)\n const variantClasses = getVariantClasses(DEFAULT_BUTTON_VARIANTS, variant, 'default')\n\n // Get size classes for preset modes, or empty for custom mode\n const sizeClasses = getSizeClasses(size, sizeStyles)\n\n // Build button classes - exclude variant/size classes if custom styles are set\n const buttonClasses = cn(\n 'inline-flex items-center justify-center font-medium transition-colors',\n `focus:outline-none focus:ring-2 focus:ring-offset-2 ${DEFAULT_FOCUS_RING}`,\n 'disabled:opacity-50 disabled:pointer-events-none',\n // Only apply variant styles if no custom background/text color\n !hasCustomBackground && !hasCustomTextColor && variantClasses,\n // Only apply background portion of variant if no custom background\n hasCustomBackground && !hasCustomTextColor && 'hover:opacity-90',\n // Only apply size classes if not using custom size or custom padding\n !hasCustomPadding && !hasCustomSize && sizeClasses,\n // Apply rounded-md unless custom border has radius\n !customBorder?.radius && 'rounded-md'\n )\n\n // Build inline styles for the button\n const buttonStyle: React.CSSProperties = {}\n\n // Apply custom background color\n if (hasCustomBackground) {\n buttonStyle.backgroundColor = colorValueToCSS(customBackgroundColor)\n }\n\n // Apply custom text color\n if (hasCustomTextColor) {\n buttonStyle.color = colorValueToCSS(customTextColor)\n }\n\n // Apply custom border\n const borderStyles = borderValueToCSS(customBorder)\n if (borderStyles) {\n Object.assign(buttonStyle, borderStyles)\n }\n\n // Apply custom size (only if mode is custom)\n const customSizeStyles = sizeValueToCSS(size)\n if (customSizeStyles) {\n Object.assign(buttonStyle, customSizeStyles)\n }\n\n // Apply custom padding (overrides size padding if set)\n const paddingCSS = paddingValueToCSS(customPadding)\n if (paddingCSS) {\n buttonStyle.padding = paddingCSS\n }\n\n // Apply transform\n const transformStyles = transformValueToCSS(transform)\n if (transformStyles) {\n Object.assign(buttonStyle, transformStyles)\n }\n\n const buttonElement = link ? (\n <a\n href={link}\n target={openInNewTab === 'yes' ? '_blank' : undefined}\n rel={openInNewTab === 'yes' ? 'noopener noreferrer' : undefined}\n className={buttonClasses}\n style={buttonStyle}\n >\n {text}\n </a>\n ) : (\n <button type=\"button\" className={buttonClasses} style={buttonStyle}>\n {text}\n </button>\n )\n\n const wrapperStyle: React.CSSProperties = {}\n const marginCSS = marginValueToCSS(margin)\n if (marginCSS) {\n wrapperStyle.margin = marginCSS\n }\n\n // Get alignment value, defaulting to 'left'\n const alignmentValue = alignment ?? 'left'\n\n return (\n <AnimatedWrapper\n animation={animation}\n className={alignmentWrapperMap[alignmentValue] || alignmentWrapperMap.left}\n style={wrapperStyle}\n >\n {buttonElement}\n </AnimatedWrapper>\n )\n },\n}\n"],"names":["buttonVariantField","cn","marginValueToCSS","paddingValueToCSS","colorValueToCSS","borderValueToCSS","transformValueToCSS","AnimatedWrapper","createMarginField","createColorPickerField","createBorderField","createPaddingField","createAlignmentField","createSizeField","sizeValueToCSS","getSizeClasses","createAnimationField","createTransformField","createResetField","DEFAULT_BUTTON_VARIANTS","DEFAULT_FOCUS_RING","getVariantClasses","sizeStyles","sm","default","lg","alignmentWrapperMap","left","center","right","defaultProps","text","link","variant","size","openInNewTab","margin","customBackgroundColor","customTextColor","customBorder","alignment","transform","animation","customPadding","ButtonConfig","label","fields","_reset","type","options","value","showOpacity","render","hasCustomBackground","hex","hasCustomTextColor","hasCustomPadding","hasCustomSize","mode","variantClasses","sizeClasses","buttonClasses","radius","buttonStyle","backgroundColor","color","borderStyles","Object","assign","customSizeStyles","paddingCSS","padding","transformStyles","buttonElement","a","href","target","undefined","rel","className","style","button","wrapperStyle","marginCSS","alignmentValue"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Button.server.d.ts","sourceRoot":"","sources":["../../../src/components/interactive/Button.server.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EASL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,wBAAwB,CAAA;AAE/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAI/D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,qBAAqB,EAAE,UAAU,GAAG,IAAI,CAAA;IACxC,eAAe,EAAE,UAAU,GAAG,IAAI,CAAA;IAClC,YAAY,EAAE,WAAW,GAAG,IAAI,CAAA;IAChC,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;CACnC;AA8BD,eAAO,MAAM,YAAY,EAAE,eAAe,CAAC,WAAW,CAuGrD,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/interactive/Button.server.tsx"],"sourcesContent":["/**\n * Button Component - Server-safe Puck Configuration\n *\n * CTA button with customizable styling and link support.\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 cn,\n marginValueToCSS,\n paddingValueToCSS,\n colorValueToCSS,\n borderValueToCSS,\n transformValueToCSS,\n sizeValueToCSS,\n getSizeClasses,\n type PaddingValue,\n type ColorValue,\n type BorderValue,\n type AnimationValue,\n type TransformValue,\n type SizeValue,\n} from '../../fields/shared.js'\nimport { AnimatedWrapper } from '../AnimatedWrapper.js'\nimport type { Alignment } from '../../fields/AlignmentField.js'\nimport { DEFAULT_BUTTON_VARIANTS, DEFAULT_FOCUS_RING } from '../../theme/defaults.js'\nimport { getVariantClasses } from '../../theme/utils.js'\n\nexport interface ButtonProps {\n text: string\n link: string\n variant: string\n size: SizeValue | null\n openInNewTab: string\n margin: PaddingValue | null\n customBackgroundColor: ColorValue | null\n customTextColor: ColorValue | null\n customBorder: BorderValue | null\n alignment: Alignment | null\n transform: TransformValue | null\n animation: AnimationValue | null\n customPadding: PaddingValue | null\n}\n\nconst sizeStyles: Record<string, string> = {\n sm: 'h-8 px-3 text-sm',\n default: 'h-10 px-4',\n lg: 'h-12 px-8 text-lg',\n}\n\nconst alignmentWrapperMap: Record<string, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n}\n\nconst defaultProps: ButtonProps = {\n text: 'Click Me',\n link: '',\n variant: 'default',\n size: null,\n openInNewTab: 'no',\n margin: null,\n customBackgroundColor: null,\n customTextColor: null,\n customBorder: null,\n alignment: null,\n transform: null,\n animation: null,\n customPadding: null,\n}\n\nexport const ButtonConfig: ComponentConfig<ButtonProps> = {\n label: 'Button',\n defaultProps,\n render: ({ text, link, variant, size, openInNewTab, alignment, margin, customBackgroundColor, customTextColor, customBorder, transform, animation, customPadding }) => {\n // Determine if custom styles should override preset variant/size styles\n const hasCustomBackground = customBackgroundColor?.hex\n const hasCustomTextColor = customTextColor?.hex\n const hasCustomPadding = customPadding\n const hasCustomSize = size?.mode === 'custom'\n\n // Get variant classes from defaults (SSR-safe, no hooks)\n const variantClasses = getVariantClasses(DEFAULT_BUTTON_VARIANTS, variant, 'default')\n\n // Get size classes for preset modes, or empty for custom mode\n const sizeClasses = getSizeClasses(size, sizeStyles)\n\n // Build button classes - exclude variant/size classes if custom styles are set\n const buttonClasses = cn(\n 'inline-flex items-center justify-center font-medium transition-colors',\n `focus:outline-none focus:ring-2 focus:ring-offset-2 ${DEFAULT_FOCUS_RING}`,\n 'disabled:opacity-50 disabled:pointer-events-none',\n // Only apply variant styles if no custom background/text color\n !hasCustomBackground && !hasCustomTextColor && variantClasses,\n // Only apply background portion of variant if no custom background\n hasCustomBackground && !hasCustomTextColor && 'hover:opacity-90',\n // Only apply size classes if not using custom size or custom padding\n !hasCustomPadding && !hasCustomSize && sizeClasses,\n // Apply rounded-md unless custom border has radius\n !customBorder?.radius && 'rounded-md'\n )\n\n // Build inline styles for the button\n const buttonStyle: React.CSSProperties = {}\n\n // Apply custom background color\n if (hasCustomBackground) {\n buttonStyle.backgroundColor = colorValueToCSS(customBackgroundColor)\n }\n\n // Apply custom text color\n if (hasCustomTextColor) {\n buttonStyle.color = colorValueToCSS(customTextColor)\n }\n\n // Apply custom border\n const borderStyles = borderValueToCSS(customBorder)\n if (borderStyles) {\n Object.assign(buttonStyle, borderStyles)\n }\n\n // Apply custom size (only if mode is custom)\n const customSizeStyles = sizeValueToCSS(size)\n if (customSizeStyles) {\n Object.assign(buttonStyle, customSizeStyles)\n }\n\n // Apply custom padding (overrides size padding if set)\n const paddingCSS = paddingValueToCSS(customPadding)\n if (paddingCSS) {\n buttonStyle.padding = paddingCSS\n }\n\n // Apply transform\n const transformStyles = transformValueToCSS(transform)\n if (transformStyles) {\n Object.assign(buttonStyle, transformStyles)\n }\n\n const buttonElement = link ? (\n <a\n href={link}\n target={openInNewTab === 'yes' ? '_blank' : undefined}\n rel={openInNewTab === 'yes' ? 'noopener noreferrer' : undefined}\n className={buttonClasses}\n style={buttonStyle}\n >\n {text}\n </a>\n ) : (\n <button type=\"button\" className={buttonClasses} style={buttonStyle}>\n {text}\n </button>\n )\n\n const wrapperStyle: React.CSSProperties = {}\n const marginCSS = marginValueToCSS(margin)\n if (marginCSS) {\n wrapperStyle.margin = marginCSS\n }\n\n // Get alignment value, defaulting to 'left'\n const alignmentValue = alignment ?? 'left'\n\n return (\n <AnimatedWrapper\n animation={animation}\n className={alignmentWrapperMap[alignmentValue] || alignmentWrapperMap.left}\n style={wrapperStyle}\n >\n {buttonElement}\n </AnimatedWrapper>\n )\n },\n}\n"],"names":["cn","marginValueToCSS","paddingValueToCSS","colorValueToCSS","borderValueToCSS","transformValueToCSS","sizeValueToCSS","getSizeClasses","AnimatedWrapper","DEFAULT_BUTTON_VARIANTS","DEFAULT_FOCUS_RING","getVariantClasses","sizeStyles","sm","default","lg","alignmentWrapperMap","left","center","right","defaultProps","text","link","variant","size","openInNewTab","margin","customBackgroundColor","customTextColor","customBorder","alignment","transform","animation","customPadding","ButtonConfig","label","render","hasCustomBackground","hex","hasCustomTextColor","hasCustomPadding","hasCustomSize","mode","variantClasses","sizeClasses","buttonClasses","radius","buttonStyle","backgroundColor","color","borderStyles","Object","assign","customSizeStyles","paddingCSS","padding","transformStyles","buttonElement","a","href","target","undefined","rel","className","style","button","type","wrapperStyle","marginCSS","alignmentValue"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../src/components/interactive/Card.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAUL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAA;AAQ/B,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAGrF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAYhE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,OAAO,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,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,cAAc,EAAE,YAAY,GAAG,IAAI,CAAA;CACpC;AAmBD,eAAO,MAAM,UAAU,EAAE,eAwJxB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/interactive/Card.tsx"],"sourcesContent":["/**\n * Card Component - Puck Configuration\n *\n * Content card with image, heading, and text.\n */\n\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n shadowField,\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 { createMarginField } from '../../fields/MarginField.js'\nimport { createPaddingField } from '../../fields/PaddingField.js'\nimport { createResetField } from '../../fields/ResetField.js'\nimport { createBackgroundField } from '../../fields/BackgroundField.js'\nimport { createBorderField } from '../../fields/BorderField.js'\nimport { createDimensionsField } from '../../fields/DimensionsField.js'\nimport { createAlignmentField, type Alignment } from '../../fields/AlignmentField.js'\nimport { createAnimationField } from '../../fields/AnimationField.js'\nimport { createTransformField } from '../../fields/TransformField.js'\nimport type { MediaReference } from '../../fields/MediaField.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 // Renamed from customPadding for clarity\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, visible in editor\n}\n\nexport const CardConfig: ComponentConfig = {\n label: 'Card',\n fields: {\n _reset: createResetField({ defaultProps }),\n image: {\n type: 'object',\n label: 'Image',\n objectFields: {\n id: { type: 'text', label: 'Media ID' },\n url: { type: 'text', label: 'URL' },\n alt: { type: 'text', label: 'Alt Text' },\n },\n },\n heading: {\n type: 'text',\n label: 'Heading',\n },\n text: {\n type: 'textarea',\n label: 'Text',\n },\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 shadow: shadowField,\n background: createBackgroundField({ label: 'Background' }),\n border: createBorderField({ label: 'Border' }),\n dimensions: createDimensionsField({ label: 'Dimensions' }),\n alignment: createAlignmentField({ label: 'Alignment' }),\n transform: createTransformField({ label: 'Transform' }),\n animation: createAnimationField({ label: 'Animation' }),\n // Spacing (grouped at bottom)\n margin: createMarginField({ label: 'Margin' }),\n contentPadding: createPaddingField({ label: 'Content Padding' }),\n },\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":["shadowField","shadowMap","cn","marginValueToCSS","paddingValueToCSS","backgroundValueToCSS","borderValueToCSS","dimensionsValueToCSS","transformValueToCSS","AnimatedWrapper","createMarginField","createPaddingField","createResetField","createBackgroundField","createBorderField","createDimensionsField","createAlignmentField","createAnimationField","createTransformField","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","fields","_reset","type","objectFields","id","url","alt","options","value","render","hasBorderRadius","radius","cardClasses","wrapperStyle","marginCSS","dimensionsStyles","Object","assign","transformStyles","alignmentValue","alignmentClasses","backgroundStyles","cardStyle","borderStyles","contentStyle","contentPaddingCSS","padding","cardContent","div","className","style","img","src","span","h3","p","a","href","target","undefined","rel"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Card.server.d.ts","sourceRoot":"","sources":["../../../src/components/interactive/Card.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,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAY/D,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,OAAO,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,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,cAAc,EAAE,YAAY,GAAG,IAAI,CAAA;CACpC;AAmBD,eAAO,MAAM,UAAU,EAAE,eAAe,CAAC,SAAS,CA8GjD,CAAA"}
|
|
@@ -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":"AAAA;;;;;;;;;;;;;;CAcC;AAGD,SACEA,EAAE,EACFC,oBAAoB,EACpBC,gBAAgB,EAChBC,iBAAiB,EACjBC,gBAAgB,EAChBC,oBAAoB,EACpBC,oBAAoB,EACpBC,oBAAoB,EACpBC,iBAAiB,EACjBC,aAAa,QAQR,yBAAwB;AAC/B,SAASC,eAAe,QAAQ,wBAAuB;AAEvD,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;AAMA,8CAA8C;AAC9C,MAAMC,mBAA2C;IAC/CC,KAAK;IACLC,QAAQ;IACR,eAAe;IACf,kBAAkB;AACpB;AAEA,MAAMC,cAAsC;IAC1CC,MAAM;IACNC,QAAQ;IACR,gBAAgB;AAClB;AAwBA,MAAMC,eAA0B;IAC9BC,SAAS,EAAE;IACXC,iBAAiB;IACjBC,WAAW;IACXC,gBAAgB;IAChBC,YAAY;IACZC,KAAK;IACLR,MAAM;IACNS,YAAY;IACZC,eAAe;IACfC,QAAQ;IACRC,YAAY;IACZC,QAAQ;IACRC,WAAW;IACXC,YAAY;AACd;AAEA,OAAO,MAAMC,aAA8B;IACzCC,OAAO;IACPC,QAAQ;QACNf,SAAS;YAAEgB,MAAM;QAAO;IAC1B;IACAjB;IACAkB,QAAQ,CAAC,EACPjB,SAASkB,OAAO,EAChBjB,kBAAkB,KAAK,EACvBC,SAAS,EACTC,cAAc,EACdC,UAAU,EACVC,GAAG,EACHR,IAAI,EACJS,UAAU,EACVC,aAAa,EACbC,MAAM,EACNC,UAAU,EACVC,MAAM,EACNC,SAAS,EACTC,UAAU,EACX;QACC,gDAAgD;QAChD,MAAMO,UAAUlB;QAEhB,sDAAsD;QACtD,MAAMmB,WAAWhC;QACjB,MAAMiC,eAAe,CAAC,UAAU,EAAED,UAAU;QAC5C,MAAME,eAAe,CAAC,kBAAkB,EAAEF,UAAU;QAEpD,8BAA8B;QAC9B,MAAMG,eAAyB,EAAE;QAEjC,uCAAuC;QACvC,MAAMC,mBAAmB3C,qBAAqByB;QAE9C,uBAAuB;QACvB,MAAMmB,gBAAqC;YACzC,GAAGD,gBAAgB;QACrB;QAEA,sCAAsC;QACtC,MAAME,gBAAgB5C,qBACpByB,eACA,CAACoB,IAAO,CAAA;gBAAEC,SAASjD,kBAAkBgD;YAAG,CAAA,GACxCN;QAEFQ,OAAOC,MAAM,CAACL,eAAeC,cAAcK,UAAU;QACrD,IAAIL,cAAcM,aAAa,EAAE;YAC/BT,aAAaU,IAAI,CAACP,cAAcM,aAAa;QAC/C;QAEA,oBAAoB;QACpB,MAAME,eAAetD,iBAAiB8B;QACtC,IAAIwB,cAAc;YAChBL,OAAOC,MAAM,CAACL,eAAeS;QAC/B;QAEA,uCAAuC;QACvC,MAAMC,eAAerD,qBACnB0B,QACA,CAACmB,IAAO,CAAA;gBAAEnB,QAAQ9B,iBAAiBiD;YAAG,CAAA,GACtCN;QAEFQ,OAAOC,MAAM,CAACL,eAAeU,aAAaJ,UAAU;QACpD,IAAII,aAAaH,aAAa,EAAE;YAC9BT,aAAaU,IAAI,CAACE,aAAaH,aAAa;QAC9C;QAEA,yCAAyC;QACzC,MAAMI,mBAAmBtD,qBACvB2B,YACAhC,sBACA6C;QAGF,2BAA2B;QAC3B,MAAMe,gBAAgBtD,qBAAqB6B,YAAYS;QACvD,IAAIgB,eAAe;YACjBd,aAAaU,IAAI,CAACI;QACpB;QAEA,yCAAyC;QACzC,4EAA4E;QAC5E,MAAMC,iBAAiB9D,GACrB,4BACAiB,gBAAgB,CAACS,UAAU,EAC3BC,kBAAkBnB,iBAAiB,CAACmB,eAAe,EACnDC,cAAcnB,aAAa,CAACmB,WAAW,EACvCR,WAAW,CAACC,KAAK,EACjB,iBACAyB;QAGF,2DAA2D;QAC3D,MAAMiB,gBAAqC;YACzClC;YACA,GAAG+B,iBAAiBL,UAAU;QAChC;QACA,IAAIK,iBAAiBJ,aAAa,EAAE;YAClCT,aAAaU,IAAI,CAACG,iBAAiBJ,aAAa;QAClD;QAEA,4BAA4B;QAC5B,MAAMQ,mBAAmBjB,aAAakB,IAAI,CAAC;QAE3C,wFAAwF;QACxF,MAAMC,cAAcxB;QAEpB,qBACE,MAAChC;YAAgByB,WAAWA;;gBACzB6B,kCAAoB,KAACG;8BAAOH;;8BAC7B,KAACrB;oBAAQyB,WAAWvB;oBAAcsB,OAAOlB;8BACvC,cAAA,KAACiB;wBAAYE,WAAWN;wBAAgBK,OAAOJ;;;;;IAIvD;AACF,EAAC"}
|
|
@@ -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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"}
|