@delmaredigital/payload-puck 0.6.12 → 0.6.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -1
- package/dist/admin/EditWithPuckButton.d.ts +1 -1
- package/dist/admin/EditWithPuckButton.d.ts.map +1 -1
- package/dist/admin/EditWithPuckButton.js +65 -25
- package/dist/admin/EditWithPuckButton.js.map +1 -1
- package/dist/admin/EditWithPuckCell.js +43 -13
- package/dist/admin/EditWithPuckCell.js.map +1 -1
- package/dist/admin/PuckEditorView.d.ts +1 -1
- package/dist/admin/PuckEditorView.d.ts.map +1 -1
- package/dist/admin/PuckEditorView.js +118 -32
- package/dist/admin/PuckEditorView.js.map +1 -1
- package/dist/admin/client.d.ts +2 -2
- package/dist/admin/client.d.ts.map +1 -1
- package/dist/admin/client.js +4 -4
- package/dist/admin/client.js.map +1 -1
- package/dist/admin/generateAdminComponents.js +7 -7
- package/dist/admin/generateAdminComponents.js.map +1 -1
- package/dist/admin/index.d.ts +5 -5
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +3 -2
- package/dist/admin/index.js.map +1 -1
- package/dist/ai/collections/AiContext.js +56 -29
- package/dist/ai/collections/AiContext.js.map +1 -1
- package/dist/ai/collections/AiPrompts.js +24 -19
- package/dist/ai/collections/AiPrompts.js.map +1 -1
- package/dist/ai/createAiApiRoutes.js +28 -19
- package/dist/ai/createAiApiRoutes.js.map +1 -1
- package/dist/ai/createAiGenerate.js +7 -8
- package/dist/ai/createAiGenerate.js.map +1 -1
- package/dist/ai/createAiPlugin.js +7 -9
- package/dist/ai/createAiPlugin.js.map +1 -1
- package/dist/ai/hooks/useAiContext.js +50 -39
- package/dist/ai/hooks/useAiContext.js.map +1 -1
- package/dist/ai/hooks/useAiPrompts.js +33 -25
- package/dist/ai/hooks/useAiPrompts.js.map +1 -1
- package/dist/ai/index.js +9 -10
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/plugins/ContextEditorPanel.d.ts +1 -1
- package/dist/ai/plugins/ContextEditorPanel.d.ts.map +1 -1
- package/dist/ai/plugins/ContextEditorPanel.js +399 -107
- package/dist/ai/plugins/ContextEditorPanel.js.map +1 -1
- package/dist/ai/plugins/PromptEditorPanel.d.ts +1 -1
- package/dist/ai/plugins/PromptEditorPanel.d.ts.map +1 -1
- package/dist/ai/plugins/PromptEditorPanel.js +237 -51
- package/dist/ai/plugins/PromptEditorPanel.js.map +1 -1
- package/dist/ai/plugins/contextEditorPlugin.js +12 -5
- package/dist/ai/plugins/contextEditorPlugin.js.map +1 -1
- package/dist/ai/plugins/promptApiRoutes.js +119 -50
- package/dist/ai/plugins/promptApiRoutes.js.map +1 -1
- package/dist/ai/plugins/promptEditorPlugin.js +12 -5
- package/dist/ai/plugins/promptEditorPlugin.js.map +1 -1
- package/dist/ai/presets/componentAiDefaults.js +108 -83
- package/dist/ai/presets/componentAiDefaults.js.map +1 -1
- package/dist/ai/presets/index.js +12 -18
- package/dist/ai/presets/index.js.map +1 -1
- package/dist/ai/presets/instructions/interactive.js +85 -75
- package/dist/ai/presets/instructions/interactive.js.map +1 -1
- package/dist/ai/presets/instructions/layout.js +122 -117
- package/dist/ai/presets/instructions/layout.js.map +1 -1
- package/dist/ai/presets/instructions/media.js +31 -29
- package/dist/ai/presets/instructions/media.js.map +1 -1
- package/dist/ai/presets/instructions/pagePatterns.js +4 -6
- package/dist/ai/presets/instructions/pagePatterns.js.map +1 -1
- package/dist/ai/presets/instructions/schemas.js +495 -137
- package/dist/ai/presets/instructions/schemas.js.map +1 -1
- package/dist/ai/presets/instructions/typography.js +38 -33
- package/dist/ai/presets/instructions/typography.js.map +1 -1
- package/dist/ai/tools/index.js +92 -55
- package/dist/ai/tools/index.js.map +1 -1
- package/dist/ai/types.js +7 -1
- package/dist/ai/types.js.map +1 -1
- package/dist/ai/utils/injectAiConfig.js +33 -40
- package/dist/ai/utils/injectAiConfig.js.map +1 -1
- package/dist/api/createPuckApiRoutes.d.ts +1 -1
- package/dist/api/createPuckApiRoutes.d.ts.map +1 -1
- package/dist/api/createPuckApiRoutes.js +123 -65
- package/dist/api/createPuckApiRoutes.js.map +1 -1
- package/dist/api/createPuckApiRoutesVersions.d.ts +1 -1
- package/dist/api/createPuckApiRoutesVersions.d.ts.map +1 -1
- package/dist/api/createPuckApiRoutesVersions.js +88 -37
- package/dist/api/createPuckApiRoutesVersions.js.map +1 -1
- package/dist/api/createPuckApiRoutesWithId.d.ts +1 -1
- package/dist/api/createPuckApiRoutesWithId.d.ts.map +1 -1
- package/dist/api/createPuckApiRoutesWithId.js +166 -72
- package/dist/api/createPuckApiRoutesWithId.js.map +1 -1
- package/dist/api/index.d.ts +5 -5
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +6 -6
- package/dist/api/index.js.map +1 -1
- package/dist/api/payload-config.d.js +15 -0
- package/dist/api/payload-config.d.js.map +1 -0
- package/dist/api/types.js +4 -1
- package/dist/api/types.js.map +1 -1
- package/dist/api/utils/mapRootProps.d.ts +1 -1
- package/dist/api/utils/mapRootProps.d.ts.map +1 -1
- package/dist/api/utils/mapRootProps.js +77 -44
- package/dist/api/utils/mapRootProps.js.map +1 -1
- package/dist/collections/Templates.js +24 -20
- package/dist/collections/Templates.js.map +1 -1
- package/dist/components/AccordionClient.d.ts +2 -2
- package/dist/components/AccordionClient.d.ts.map +1 -1
- package/dist/components/AccordionClient.js +81 -22
- package/dist/components/AccordionClient.js.map +1 -1
- package/dist/components/AnimatedWrapper.d.ts +2 -2
- package/dist/components/AnimatedWrapper.d.ts.map +1 -1
- package/dist/components/AnimatedWrapper.js +31 -16
- package/dist/components/AnimatedWrapper.js.map +1 -1
- package/dist/components/exports.js +2 -2
- package/dist/components/exports.js.map +1 -1
- package/dist/components/index.d.ts +5 -5
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +7 -7
- package/dist/components/index.js.map +1 -1
- package/dist/components/interactive/Accordion.d.ts +1 -1
- package/dist/components/interactive/Accordion.d.ts.map +1 -1
- package/dist/components/interactive/Accordion.js +149 -55
- package/dist/components/interactive/Accordion.js.map +1 -1
- package/dist/components/interactive/Accordion.server.d.ts +1 -1
- package/dist/components/interactive/Accordion.server.d.ts.map +1 -1
- package/dist/components/interactive/Accordion.server.js +25 -7
- package/dist/components/interactive/Accordion.server.js.map +1 -1
- package/dist/components/interactive/Button.d.ts +3 -3
- package/dist/components/interactive/Button.d.ts.map +1 -1
- package/dist/components/interactive/Button.js +89 -43
- package/dist/components/interactive/Button.js.map +1 -1
- package/dist/components/interactive/Button.server.d.ts +2 -2
- package/dist/components/interactive/Button.server.d.ts.map +1 -1
- package/dist/components/interactive/Button.server.js +40 -20
- package/dist/components/interactive/Button.server.js.map +1 -1
- package/dist/components/interactive/Card.d.ts +3 -3
- package/dist/components/interactive/Card.d.ts.map +1 -1
- package/dist/components/interactive/Card.js +131 -39
- package/dist/components/interactive/Card.js.map +1 -1
- package/dist/components/interactive/Card.server.d.ts +3 -3
- package/dist/components/interactive/Card.server.d.ts.map +1 -1
- package/dist/components/interactive/Card.server.js +72 -11
- package/dist/components/interactive/Card.server.js.map +1 -1
- package/dist/components/interactive/Divider.d.ts +1 -1
- package/dist/components/interactive/Divider.d.ts.map +1 -1
- package/dist/components/interactive/Divider.js +54 -26
- package/dist/components/interactive/Divider.js.map +1 -1
- package/dist/components/interactive/Divider.server.d.ts +1 -1
- package/dist/components/interactive/Divider.server.d.ts.map +1 -1
- package/dist/components/interactive/Divider.server.js +28 -12
- package/dist/components/interactive/Divider.server.js.map +1 -1
- package/dist/components/interactive/index.d.ts +4 -4
- package/dist/components/interactive/index.d.ts.map +1 -1
- package/dist/components/interactive/index.js +5 -5
- package/dist/components/interactive/index.js.map +1 -1
- package/dist/components/layout/Container.d.ts +1 -1
- package/dist/components/layout/Container.d.ts.map +1 -1
- package/dist/components/layout/Container.js +101 -47
- package/dist/components/layout/Container.js.map +1 -1
- package/dist/components/layout/Container.server.d.ts +1 -1
- package/dist/components/layout/Container.server.d.ts.map +1 -1
- package/dist/components/layout/Container.server.js +67 -19
- package/dist/components/layout/Container.server.js.map +1 -1
- package/dist/components/layout/Flex.d.ts +2 -2
- package/dist/components/layout/Flex.d.ts.map +1 -1
- package/dist/components/layout/Flex.js +124 -55
- package/dist/components/layout/Flex.js.map +1 -1
- package/dist/components/layout/Flex.server.d.ts +1 -1
- package/dist/components/layout/Flex.server.d.ts.map +1 -1
- package/dist/components/layout/Flex.server.js +50 -14
- package/dist/components/layout/Flex.server.js.map +1 -1
- package/dist/components/layout/Grid.d.ts +1 -1
- package/dist/components/layout/Grid.d.ts.map +1 -1
- package/dist/components/layout/Grid.js +93 -44
- package/dist/components/layout/Grid.js.map +1 -1
- package/dist/components/layout/Grid.server.d.ts +1 -1
- package/dist/components/layout/Grid.server.d.ts.map +1 -1
- package/dist/components/layout/Grid.server.js +56 -14
- package/dist/components/layout/Grid.server.js.map +1 -1
- package/dist/components/layout/Section.d.ts +1 -1
- package/dist/components/layout/Section.d.ts.map +1 -1
- package/dist/components/layout/Section.js +147 -64
- package/dist/components/layout/Section.js.map +1 -1
- package/dist/components/layout/Section.server.d.ts +1 -1
- package/dist/components/layout/Section.server.d.ts.map +1 -1
- package/dist/components/layout/Section.server.js +92 -28
- package/dist/components/layout/Section.server.js.map +1 -1
- package/dist/components/layout/Spacer.d.ts +1 -1
- package/dist/components/layout/Spacer.d.ts.map +1 -1
- package/dist/components/layout/Spacer.js +80 -30
- package/dist/components/layout/Spacer.js.map +1 -1
- package/dist/components/layout/Spacer.server.d.ts +1 -1
- package/dist/components/layout/Spacer.server.d.ts.map +1 -1
- package/dist/components/layout/Spacer.server.js +31 -9
- package/dist/components/layout/Spacer.server.js.map +1 -1
- package/dist/components/layout/Template.d.ts +1 -1
- package/dist/components/layout/Template.d.ts.map +1 -1
- package/dist/components/layout/Template.js +58 -30
- package/dist/components/layout/Template.js.map +1 -1
- package/dist/components/layout/Template.server.d.ts +1 -1
- package/dist/components/layout/Template.server.d.ts.map +1 -1
- package/dist/components/layout/Template.server.js +43 -11
- package/dist/components/layout/Template.server.js.map +1 -1
- package/dist/components/layout/index.d.ts +8 -8
- package/dist/components/layout/index.d.ts.map +1 -1
- package/dist/components/layout/index.js +8 -8
- package/dist/components/layout/index.js.map +1 -1
- package/dist/components/media/Image.d.ts +3 -3
- package/dist/components/media/Image.d.ts.map +1 -1
- package/dist/components/media/Image.js +122 -39
- package/dist/components/media/Image.js.map +1 -1
- package/dist/components/media/Image.server.d.ts +3 -3
- package/dist/components/media/Image.server.d.ts.map +1 -1
- package/dist/components/media/Image.server.js +76 -13
- package/dist/components/media/Image.server.js.map +1 -1
- package/dist/components/media/index.d.ts +1 -1
- package/dist/components/media/index.d.ts.map +1 -1
- package/dist/components/media/index.js +2 -2
- package/dist/components/media/index.js.map +1 -1
- package/dist/components/typography/Heading.d.ts +2 -2
- package/dist/components/typography/Heading.d.ts.map +1 -1
- package/dist/components/typography/Heading.js +45 -25
- package/dist/components/typography/Heading.js.map +1 -1
- package/dist/components/typography/Heading.server.d.ts +2 -2
- package/dist/components/typography/Heading.server.d.ts.map +1 -1
- package/dist/components/typography/Heading.server.js +16 -10
- package/dist/components/typography/Heading.server.js.map +1 -1
- package/dist/components/typography/RichText.editor.d.ts +1 -1
- package/dist/components/typography/RichText.editor.d.ts.map +1 -1
- package/dist/components/typography/RichText.editor.js +44 -19
- package/dist/components/typography/RichText.editor.js.map +1 -1
- package/dist/components/typography/RichText.server.d.ts +2 -2
- package/dist/components/typography/RichText.server.d.ts.map +1 -1
- package/dist/components/typography/RichText.server.js +33 -14
- package/dist/components/typography/RichText.server.js.map +1 -1
- package/dist/components/typography/Text.d.ts +2 -2
- package/dist/components/typography/Text.d.ts.map +1 -1
- package/dist/components/typography/Text.js +49 -23
- package/dist/components/typography/Text.js.map +1 -1
- package/dist/components/typography/Text.server.d.ts +2 -2
- package/dist/components/typography/Text.server.d.ts.map +1 -1
- package/dist/components/typography/Text.server.js +21 -8
- package/dist/components/typography/Text.server.js.map +1 -1
- package/dist/components/typography/index.d.ts +4 -4
- package/dist/components/typography/index.d.ts.map +1 -1
- package/dist/components/typography/index.js +5 -5
- package/dist/components/typography/index.js.map +1 -1
- package/dist/config/config.editor.d.ts +3 -3
- package/dist/config/config.editor.d.ts.map +1 -1
- package/dist/config/config.editor.js +119 -54
- package/dist/config/config.editor.js.map +1 -1
- package/dist/config/index.d.ts +4 -4
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +62 -35
- package/dist/config/index.js.map +1 -1
- package/dist/config/merge.d.ts +1 -1
- package/dist/config/merge.d.ts.map +1 -1
- package/dist/config/merge.js +23 -26
- package/dist/config/merge.js.map +1 -1
- package/dist/config/presets.d.ts +4 -4
- package/dist/config/presets.js +195 -75
- package/dist/config/presets.js.map +1 -1
- package/dist/config/types.js +6 -2
- package/dist/config/types.js.map +1 -1
- package/dist/editor/PuckEditor.d.ts +4 -4
- package/dist/editor/PuckEditor.d.ts.map +1 -1
- package/dist/editor/PuckEditor.js +162 -70
- package/dist/editor/PuckEditor.js.map +1 -1
- package/dist/editor/PuckEditorImpl.client.d.ts +4 -4
- package/dist/editor/PuckEditorImpl.client.d.ts.map +1 -1
- package/dist/editor/PuckEditorImpl.client.js +304 -152
- package/dist/editor/PuckEditorImpl.client.js.map +1 -1
- package/dist/editor/components/DarkModeStyles.js +11 -12
- package/dist/editor/components/DarkModeStyles.js.map +1 -1
- package/dist/editor/components/HeaderActions.js +308 -64
- package/dist/editor/components/HeaderActions.js.map +1 -1
- package/dist/editor/components/IframeWrapper.d.ts +1 -1
- package/dist/editor/components/IframeWrapper.d.ts.map +1 -1
- package/dist/editor/components/IframeWrapper.js +82 -58
- package/dist/editor/components/IframeWrapper.js.map +1 -1
- package/dist/editor/components/LoadingState.d.ts +1 -1
- package/dist/editor/components/LoadingState.d.ts.map +1 -1
- package/dist/editor/components/LoadingState.js +17 -3
- package/dist/editor/components/LoadingState.js.map +1 -1
- package/dist/editor/components/PreviewModal.js +234 -78
- package/dist/editor/components/PreviewModal.js.map +1 -1
- package/dist/editor/components/PreviewModeToggle.js +43 -15
- package/dist/editor/components/PreviewModeToggle.js.map +1 -1
- package/dist/editor/components/VersionHistory.js +219 -71
- package/dist/editor/components/VersionHistory.js.map +1 -1
- package/dist/editor/hooks/useDarkMode.js +36 -23
- package/dist/editor/hooks/useDarkMode.js.map +1 -1
- package/dist/editor/hooks/useUnsavedChanges.js +8 -8
- package/dist/editor/hooks/useUnsavedChanges.js.map +1 -1
- package/dist/editor/index.js +5 -6
- package/dist/editor/index.js.map +1 -1
- package/dist/editor/plugins/VersionHistoryPanel.js +236 -75
- package/dist/editor/plugins/VersionHistoryPanel.js.map +1 -1
- package/dist/editor/plugins/index.js +4 -4
- package/dist/editor/plugins/index.js.map +1 -1
- package/dist/editor/plugins/versionHistoryPlugin.js +10 -8
- package/dist/editor/plugins/versionHistoryPlugin.js.map +1 -1
- package/dist/editor/utils/detectPageTree.js +5 -5
- package/dist/editor/utils/detectPageTree.js.map +1 -1
- package/dist/editor/utils/index.js +1 -0
- package/dist/editor/utils/index.js.map +1 -1
- package/dist/editor/utils/injectPageTreeFields.js +13 -9
- package/dist/editor/utils/injectPageTreeFields.js.map +1 -1
- package/dist/endpoints/ai.js +58 -34
- package/dist/endpoints/ai.js.map +1 -1
- package/dist/endpoints/context.js +86 -40
- package/dist/endpoints/context.js.map +1 -1
- package/dist/endpoints/index.js +153 -76
- package/dist/endpoints/index.js.map +1 -1
- package/dist/endpoints/postcss.d.js +5 -0
- package/dist/endpoints/postcss.d.js.map +1 -0
- package/dist/endpoints/prompts.js +81 -39
- package/dist/endpoints/prompts.js.map +1 -1
- package/dist/endpoints/styles.js +34 -36
- package/dist/endpoints/styles.js.map +1 -1
- package/dist/exports/client.js +2 -2
- package/dist/exports/client.js.map +1 -1
- package/dist/exports/rsc.js +2 -2
- package/dist/exports/rsc.js.map +1 -1
- package/dist/fields/AlignmentField.d.ts +1 -1
- package/dist/fields/AlignmentField.d.ts.map +1 -1
- package/dist/fields/AlignmentField.js +93 -30
- package/dist/fields/AlignmentField.js.map +1 -1
- package/dist/fields/AnimationField.d.ts +2 -2
- package/dist/fields/AnimationField.d.ts.map +1 -1
- package/dist/fields/AnimationField.js +558 -84
- package/dist/fields/AnimationField.js.map +1 -1
- package/dist/fields/BackgroundField.d.ts +2 -2
- package/dist/fields/BackgroundField.d.ts.map +1 -1
- package/dist/fields/BackgroundField.js +754 -120
- package/dist/fields/BackgroundField.js.map +1 -1
- package/dist/fields/BorderField.d.ts +2 -2
- package/dist/fields/BorderField.d.ts.map +1 -1
- package/dist/fields/BorderField.js +275 -73
- package/dist/fields/BorderField.js.map +1 -1
- package/dist/fields/ColorPickerField.d.ts +2 -2
- package/dist/fields/ColorPickerField.d.ts.map +1 -1
- package/dist/fields/ColorPickerField.js +210 -68
- package/dist/fields/ColorPickerField.js.map +1 -1
- package/dist/fields/ContentAlignmentField.d.ts +1 -1
- package/dist/fields/ContentAlignmentField.d.ts.map +1 -1
- package/dist/fields/ContentAlignmentField.js +161 -75
- package/dist/fields/ContentAlignmentField.js.map +1 -1
- package/dist/fields/DimensionsField.d.ts +2 -2
- package/dist/fields/DimensionsField.d.ts.map +1 -1
- package/dist/fields/DimensionsField.js +575 -146
- package/dist/fields/DimensionsField.js.map +1 -1
- package/dist/fields/FlexAlignmentField.d.ts +2 -2
- package/dist/fields/FlexAlignmentField.d.ts.map +1 -1
- package/dist/fields/FlexAlignmentField.js +189 -51
- package/dist/fields/FlexAlignmentField.js.map +1 -1
- package/dist/fields/FolderPickerField.d.ts +8 -1
- package/dist/fields/FolderPickerField.d.ts.map +1 -1
- package/dist/fields/FolderPickerField.js +288 -75
- package/dist/fields/FolderPickerField.js.map +1 -1
- package/dist/fields/GradientEditor.d.ts +2 -2
- package/dist/fields/GradientEditor.d.ts.map +1 -1
- package/dist/fields/GradientEditor.js +462 -86
- package/dist/fields/GradientEditor.js.map +1 -1
- package/dist/fields/LockedField.d.ts +15 -2
- package/dist/fields/LockedField.d.ts.map +1 -1
- package/dist/fields/LockedField.js +180 -49
- package/dist/fields/LockedField.js.map +1 -1
- package/dist/fields/MarginField.d.ts +2 -2
- package/dist/fields/MarginField.d.ts.map +1 -1
- package/dist/fields/MarginField.js +144 -46
- package/dist/fields/MarginField.js.map +1 -1
- package/dist/fields/MediaField.d.ts +1 -1
- package/dist/fields/MediaField.d.ts.map +1 -1
- package/dist/fields/MediaField.js +688 -186
- package/dist/fields/MediaField.js.map +1 -1
- package/dist/fields/PaddingField.d.ts +2 -2
- package/dist/fields/PaddingField.d.ts.map +1 -1
- package/dist/fields/PaddingField.js +144 -46
- package/dist/fields/PaddingField.js.map +1 -1
- package/dist/fields/PageSegmentField.d.ts +15 -2
- package/dist/fields/PageSegmentField.d.ts.map +1 -1
- package/dist/fields/PageSegmentField.js +156 -54
- package/dist/fields/PageSegmentField.js.map +1 -1
- package/dist/fields/ResetField.d.ts +1 -1
- package/dist/fields/ResetField.d.ts.map +1 -1
- package/dist/fields/ResetField.js +59 -31
- package/dist/fields/ResetField.js.map +1 -1
- package/dist/fields/ResponsiveField.d.ts +1 -1
- package/dist/fields/ResponsiveField.d.ts.map +1 -1
- package/dist/fields/ResponsiveField.js +233 -90
- package/dist/fields/ResponsiveField.js.map +1 -1
- package/dist/fields/ResponsiveVisibilityField.d.ts +2 -2
- package/dist/fields/ResponsiveVisibilityField.d.ts.map +1 -1
- package/dist/fields/ResponsiveVisibilityField.js +119 -36
- package/dist/fields/ResponsiveVisibilityField.js.map +1 -1
- package/dist/fields/SizeField.d.ts +3 -3
- package/dist/fields/SizeField.d.ts.map +1 -1
- package/dist/fields/SizeField.js +226 -52
- package/dist/fields/SizeField.js.map +1 -1
- package/dist/fields/SlugPreviewField.d.ts +8 -1
- package/dist/fields/SlugPreviewField.d.ts.map +1 -1
- package/dist/fields/SlugPreviewField.js +65 -16
- package/dist/fields/SlugPreviewField.js.map +1 -1
- package/dist/fields/TemplateField.d.ts +1 -1
- package/dist/fields/TemplateField.d.ts.map +1 -1
- package/dist/fields/TemplateField.js +362 -120
- package/dist/fields/TemplateField.js.map +1 -1
- package/dist/fields/TransformField.d.ts +2 -2
- package/dist/fields/TransformField.d.ts.map +1 -1
- package/dist/fields/TransformField.js +517 -81
- package/dist/fields/TransformField.js.map +1 -1
- package/dist/fields/VerticalAlignmentField.d.ts +1 -1
- package/dist/fields/VerticalAlignmentField.d.ts.map +1 -1
- package/dist/fields/VerticalAlignmentField.js +93 -30
- package/dist/fields/VerticalAlignmentField.js.map +1 -1
- package/dist/fields/WidthField.d.ts +2 -2
- package/dist/fields/WidthField.d.ts.map +1 -1
- package/dist/fields/WidthField.js +278 -81
- package/dist/fields/WidthField.js.map +1 -1
- package/dist/fields/index.d.ts +41 -41
- package/dist/fields/index.d.ts.map +1 -1
- package/dist/fields/index.js +37 -43
- package/dist/fields/index.js.map +1 -1
- package/dist/fields/richtext/controls/ColorPickerControl.d.ts +13 -2
- package/dist/fields/richtext/controls/ColorPickerControl.d.ts.map +1 -1
- package/dist/fields/richtext/controls/ColorPickerControl.js +212 -47
- package/dist/fields/richtext/controls/ColorPickerControl.js.map +1 -1
- package/dist/fields/richtext/controls/DropdownPortal.d.ts +2 -2
- package/dist/fields/richtext/controls/DropdownPortal.d.ts.map +1 -1
- package/dist/fields/richtext/controls/DropdownPortal.js +36 -4
- package/dist/fields/richtext/controls/DropdownPortal.js.map +1 -1
- package/dist/fields/richtext/controls/FontSizeControl.d.ts +9 -1
- package/dist/fields/richtext/controls/FontSizeControl.d.ts.map +1 -1
- package/dist/fields/richtext/controls/FontSizeControl.js +109 -24
- package/dist/fields/richtext/controls/FontSizeControl.js.map +1 -1
- package/dist/fields/richtext/controls/HighlightControl.d.ts +12 -1
- package/dist/fields/richtext/controls/HighlightControl.d.ts.map +1 -1
- package/dist/fields/richtext/controls/HighlightControl.js +54 -17
- package/dist/fields/richtext/controls/HighlightControl.js.map +1 -1
- package/dist/fields/richtext/controls/index.d.ts +5 -5
- package/dist/fields/richtext/controls/index.d.ts.map +1 -1
- package/dist/fields/richtext/controls/index.js +8 -11
- package/dist/fields/richtext/controls/index.js.map +1 -1
- package/dist/fields/richtext/controls/shared.js +108 -63
- package/dist/fields/richtext/controls/shared.js.map +1 -1
- package/dist/fields/richtext/createRichTextField.d.ts +18 -4
- package/dist/fields/richtext/createRichTextField.d.ts.map +1 -1
- package/dist/fields/richtext/createRichTextField.js +113 -26
- package/dist/fields/richtext/createRichTextField.js.map +1 -1
- package/dist/fields/richtext/extensions/FontSize.js +26 -20
- package/dist/fields/richtext/extensions/FontSize.js.map +1 -1
- package/dist/fields/richtext/extensions/index.d.ts +1 -1
- package/dist/fields/richtext/extensions/index.d.ts.map +1 -1
- package/dist/fields/richtext/extensions/index.js +2 -2
- package/dist/fields/richtext/extensions/index.js.map +1 -1
- package/dist/fields/richtext/index.d.ts +6 -6
- package/dist/fields/richtext/index.d.ts.map +1 -1
- package/dist/fields/richtext/index.js +8 -8
- package/dist/fields/richtext/index.js.map +1 -1
- package/dist/fields/shared.d.ts +1 -1
- package/dist/fields/shared.d.ts.map +1 -1
- package/dist/fields/shared.js +915 -478
- package/dist/fields/shared.js.map +1 -1
- package/dist/hooks/index.d.ts +2 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +3 -3
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useResponsiveStyles.d.ts +1 -1
- package/dist/hooks/useResponsiveStyles.d.ts.map +1 -1
- package/dist/hooks/useResponsiveStyles.js +36 -32
- package/dist/hooks/useResponsiveStyles.js.map +1 -1
- package/dist/hooks/useScrollAnimation.js +26 -24
- package/dist/hooks/useScrollAnimation.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/layouts/LayoutWrapper.d.ts +3 -3
- package/dist/layouts/LayoutWrapper.d.ts.map +1 -1
- package/dist/layouts/LayoutWrapper.js +115 -51
- package/dist/layouts/LayoutWrapper.js.map +1 -1
- package/dist/layouts/defaults.d.ts +1 -1
- package/dist/layouts/defaults.d.ts.map +1 -1
- package/dist/layouts/defaults.js +23 -31
- package/dist/layouts/defaults.js.map +1 -1
- package/dist/layouts/index.d.ts +4 -4
- package/dist/layouts/index.d.ts.map +1 -1
- package/dist/layouts/index.js +5 -4
- package/dist/layouts/index.js.map +1 -1
- package/dist/layouts/types.js +4 -2
- package/dist/layouts/types.js.map +1 -1
- package/dist/layouts/utils.d.ts +1 -1
- package/dist/layouts/utils.d.ts.map +1 -1
- package/dist/layouts/utils.js +32 -40
- package/dist/layouts/utils.js.map +1 -1
- package/dist/next/index.js +31 -34
- package/dist/next/index.js.map +1 -1
- package/dist/plugin/collections/Pages.d.ts +2 -2
- package/dist/plugin/collections/Pages.d.ts.map +1 -1
- package/dist/plugin/collections/Pages.js +46 -43
- package/dist/plugin/collections/Pages.js.map +1 -1
- package/dist/plugin/fields/index.d.ts +3 -3
- package/dist/plugin/fields/index.d.ts.map +1 -1
- package/dist/plugin/fields/index.js +100 -78
- package/dist/plugin/fields/index.js.map +1 -1
- package/dist/plugin/fields/types.d.ts +1 -1
- package/dist/plugin/fields/types.d.ts.map +1 -1
- package/dist/plugin/fields/types.js +26 -2
- package/dist/plugin/fields/types.js.map +1 -1
- package/dist/plugin/hooks/index.d.ts +1 -1
- package/dist/plugin/hooks/index.d.ts.map +1 -1
- package/dist/plugin/hooks/index.js +2 -2
- package/dist/plugin/hooks/index.js.map +1 -1
- package/dist/plugin/hooks/isHomepageUnique.js +28 -19
- package/dist/plugin/hooks/isHomepageUnique.js.map +1 -1
- package/dist/plugin/index.d.ts +8 -8
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +190 -188
- package/dist/plugin/index.js.map +1 -1
- package/dist/render/HybridPageRenderer.d.ts +2 -2
- package/dist/render/HybridPageRenderer.d.ts.map +1 -1
- package/dist/render/HybridPageRenderer.js +58 -10
- package/dist/render/HybridPageRenderer.js.map +1 -1
- package/dist/render/PageRenderer.d.ts +2 -2
- package/dist/render/PageRenderer.d.ts.map +1 -1
- package/dist/render/PageRenderer.js +31 -14
- package/dist/render/PageRenderer.js.map +1 -1
- package/dist/render/PuckEditor.client.d.ts +1 -1
- package/dist/render/PuckEditor.client.d.ts.map +1 -1
- package/dist/render/PuckEditor.client.js +33 -16
- package/dist/render/PuckEditor.client.js.map +1 -1
- package/dist/render/index.d.ts +5 -5
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +5 -6
- package/dist/render/index.js.map +1 -1
- package/dist/styles/puck-dark-mode.css +101 -0
- package/dist/theme/context.d.ts +2 -2
- package/dist/theme/context.d.ts.map +1 -1
- package/dist/theme/context.js +21 -18
- package/dist/theme/context.js.map +1 -1
- package/dist/theme/defaults.d.ts +1 -1
- package/dist/theme/defaults.d.ts.map +1 -1
- package/dist/theme/defaults.js +83 -37
- package/dist/theme/defaults.js.map +1 -1
- package/dist/theme/example.d.ts +1 -1
- package/dist/theme/example.d.ts.map +1 -1
- package/dist/theme/example.js +68 -30
- package/dist/theme/example.js.map +1 -1
- package/dist/theme/index.d.ts +5 -5
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +6 -5
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/types.js +6 -2
- package/dist/theme/types.js.map +1 -1
- package/dist/theme/utils.d.ts +1 -1
- package/dist/theme/utils.d.ts.map +1 -1
- package/dist/theme/utils.js +24 -25
- package/dist/theme/utils.js.map +1 -1
- package/dist/types/index.d.ts +6 -6
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/index.d.ts +2 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +13 -22
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/migration.d.ts +1 -1
- package/dist/utils/migration.d.ts.map +1 -1
- package/dist/utils/migration.js +43 -49
- package/dist/utils/migration.js.map +1 -1
- package/dist/utils/validation.d.ts +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +36 -43
- package/dist/utils/validation.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +2 -1
- package/dist/version.js.map +1 -1
- package/dist/views/PuckConfigContext.d.ts +1 -1
- package/dist/views/PuckConfigContext.d.ts.map +1 -1
- package/dist/views/PuckConfigContext.js +25 -10
- package/dist/views/PuckConfigContext.js.map +1 -1
- package/dist/views/PuckEditorView.d.ts +1 -1
- package/dist/views/PuckEditorView.d.ts.map +1 -1
- package/dist/views/PuckEditorView.js +106 -38
- package/dist/views/PuckEditorView.js.map +1 -1
- package/dist/views/index.js +2 -2
- package/dist/views/index.js.map +1 -1
- package/package.json +62 -42
|
@@ -1,6 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Flex Component - Server-safe Puck Configuration
|
|
3
|
+
*
|
|
4
|
+
* Flexbox layout following official Puck demo patterns.
|
|
5
|
+
* Uses Tailwind classes for layout, inline styles for dynamic user values.
|
|
6
|
+
*
|
|
7
|
+
* This is a server-safe version with NO fields property (only slot for content).
|
|
8
|
+
* For the full editor version with fields, use Flex.tsx
|
|
9
|
+
*
|
|
10
|
+
* Responsive Controls:
|
|
11
|
+
* - dimensions: Different dimensions at different breakpoints
|
|
12
|
+
* - customPadding: Different padding at different breakpoints
|
|
13
|
+
* - margin: Different margins at different breakpoints
|
|
14
|
+
* - visibility: Show/hide at different breakpoints
|
|
15
|
+
*/ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
16
|
+
import { cn, dimensionsValueToCSS, marginValueToCSS, paddingValueToCSS, borderValueToCSS, backgroundValueToCSS, responsiveValueToCSS, visibilityValueToCSS, justifyContentMap, alignItemsMap } from '../../fields/shared.js';
|
|
17
|
+
import { AnimatedWrapper } from '../AnimatedWrapper.js';
|
|
4
18
|
// Simple ID generator for server-side rendering
|
|
5
19
|
let idCounter = 0;
|
|
6
20
|
function generateUniqueId() {
|
|
@@ -11,12 +25,12 @@ const flexDirectionMap = {
|
|
|
11
25
|
row: 'flex-row',
|
|
12
26
|
column: 'flex-col',
|
|
13
27
|
'row-reverse': 'flex-row-reverse',
|
|
14
|
-
'column-reverse': 'flex-col-reverse'
|
|
28
|
+
'column-reverse': 'flex-col-reverse'
|
|
15
29
|
};
|
|
16
30
|
const flexWrapMap = {
|
|
17
31
|
wrap: 'flex-wrap',
|
|
18
32
|
nowrap: 'flex-nowrap',
|
|
19
|
-
'wrap-reverse': 'flex-wrap-reverse'
|
|
33
|
+
'wrap-reverse': 'flex-wrap-reverse'
|
|
20
34
|
};
|
|
21
35
|
const defaultProps = {
|
|
22
36
|
content: [],
|
|
@@ -32,15 +46,17 @@ const defaultProps = {
|
|
|
32
46
|
dimensions: null,
|
|
33
47
|
border: null,
|
|
34
48
|
animation: null,
|
|
35
|
-
visibility: null
|
|
49
|
+
visibility: null
|
|
36
50
|
};
|
|
37
51
|
export const FlexConfig = {
|
|
38
52
|
label: 'Flex',
|
|
39
53
|
fields: {
|
|
40
|
-
content: {
|
|
54
|
+
content: {
|
|
55
|
+
type: 'slot'
|
|
56
|
+
}
|
|
41
57
|
},
|
|
42
58
|
defaultProps,
|
|
43
|
-
render: ({ content: Content, semanticElement = 'div', direction, justifyContent, alignItems, gap, wrap, background, customPadding, margin, dimensions, border, animation, visibility
|
|
59
|
+
render: ({ content: Content, semanticElement = 'div', direction, justifyContent, alignItems, gap, wrap, background, customPadding, margin, dimensions, border, animation, visibility })=>{
|
|
44
60
|
// Dynamic element based on semanticElement prop
|
|
45
61
|
const Wrapper = semanticElement;
|
|
46
62
|
// Generate unique IDs for CSS targeting (server-safe)
|
|
@@ -53,10 +69,12 @@ export const FlexConfig = {
|
|
|
53
69
|
const backgroundStyles = backgroundValueToCSS(background);
|
|
54
70
|
// Build wrapper styles
|
|
55
71
|
const wrapperStyles = {
|
|
56
|
-
...backgroundStyles
|
|
72
|
+
...backgroundStyles
|
|
57
73
|
};
|
|
58
74
|
// Add padding with responsive support
|
|
59
|
-
const paddingResult = responsiveValueToCSS(customPadding, (v)
|
|
75
|
+
const paddingResult = responsiveValueToCSS(customPadding, (v)=>({
|
|
76
|
+
padding: paddingValueToCSS(v)
|
|
77
|
+
}), wrapperClass);
|
|
60
78
|
Object.assign(wrapperStyles, paddingResult.baseStyles);
|
|
61
79
|
if (paddingResult.mediaQueryCSS) {
|
|
62
80
|
mediaQueries.push(paddingResult.mediaQueryCSS);
|
|
@@ -67,7 +85,9 @@ export const FlexConfig = {
|
|
|
67
85
|
Object.assign(wrapperStyles, borderStyles);
|
|
68
86
|
}
|
|
69
87
|
// Apply margin with responsive support
|
|
70
|
-
const marginResult = responsiveValueToCSS(margin, (v)
|
|
88
|
+
const marginResult = responsiveValueToCSS(margin, (v)=>({
|
|
89
|
+
margin: marginValueToCSS(v)
|
|
90
|
+
}), wrapperClass);
|
|
71
91
|
Object.assign(wrapperStyles, marginResult.baseStyles);
|
|
72
92
|
if (marginResult.mediaQueryCSS) {
|
|
73
93
|
mediaQueries.push(marginResult.mediaQueryCSS);
|
|
@@ -85,7 +105,7 @@ export const FlexConfig = {
|
|
|
85
105
|
// Dynamic styles that need inline (user-controlled values)
|
|
86
106
|
const contentStyles = {
|
|
87
107
|
gap,
|
|
88
|
-
...dimensionsResult.baseStyles
|
|
108
|
+
...dimensionsResult.baseStyles
|
|
89
109
|
};
|
|
90
110
|
if (dimensionsResult.mediaQueryCSS) {
|
|
91
111
|
mediaQueries.push(dimensionsResult.mediaQueryCSS);
|
|
@@ -94,7 +114,23 @@ export const FlexConfig = {
|
|
|
94
114
|
const allMediaQueryCSS = mediaQueries.join('\n');
|
|
95
115
|
// Type assertion for Puck slot content - cast to any to avoid complex React type issues
|
|
96
116
|
const ContentSlot = Content;
|
|
97
|
-
return
|
|
98
|
-
|
|
117
|
+
return /*#__PURE__*/ _jsxs(AnimatedWrapper, {
|
|
118
|
+
animation: animation,
|
|
119
|
+
children: [
|
|
120
|
+
allMediaQueryCSS && /*#__PURE__*/ _jsx("style", {
|
|
121
|
+
children: allMediaQueryCSS
|
|
122
|
+
}),
|
|
123
|
+
/*#__PURE__*/ _jsx(Wrapper, {
|
|
124
|
+
className: wrapperClass,
|
|
125
|
+
style: wrapperStyles,
|
|
126
|
+
children: /*#__PURE__*/ _jsx(ContentSlot, {
|
|
127
|
+
className: contentClasses,
|
|
128
|
+
style: contentStyles
|
|
129
|
+
})
|
|
130
|
+
})
|
|
131
|
+
]
|
|
132
|
+
});
|
|
133
|
+
}
|
|
99
134
|
};
|
|
135
|
+
|
|
100
136
|
//# sourceMappingURL=Flex.server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Flex.server.js","sourceRoot":"","sources":["../../../src/components/layout/Flex.server.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/layout/Flex.server.tsx"],"sourcesContent":["/**\n * Flex Component - Server-safe Puck Configuration\n *\n * Flexbox layout following official Puck demo patterns.\n * Uses Tailwind classes for layout, inline styles for dynamic user values.\n *\n * This is a server-safe version with NO fields property (only slot for content).\n * For the full editor version with fields, use Flex.tsx\n *\n * Responsive Controls:\n * - dimensions: Different dimensions at different breakpoints\n * - customPadding: Different padding at different breakpoints\n * - margin: Different margins at different breakpoints\n * - visibility: Show/hide at different breakpoints\n */\n\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n cn,\n dimensionsValueToCSS,\n marginValueToCSS,\n paddingValueToCSS,\n borderValueToCSS,\n backgroundValueToCSS,\n responsiveValueToCSS,\n visibilityValueToCSS,\n justifyContentMap,\n alignItemsMap,\n type PaddingValue,\n type BorderValue,\n type DimensionsValue,\n type BackgroundValue,\n type AnimationValue,\n type ResponsiveValue,\n type VisibilityValue,\n} from '../../fields/shared.js'\nimport { AnimatedWrapper } from '../AnimatedWrapper.js'\n\n// Simple ID generator for server-side rendering\nlet idCounter = 0\nfunction generateUniqueId(): string {\n return `f${(++idCounter).toString(36)}${Math.random().toString(36).slice(2, 6)}`\n}\n\n// Inline type definitions to avoid importing from client-only FlexAlignmentField\nexport type JustifyContent = 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around'\nexport type AlignItems = 'flex-start' | 'center' | 'flex-end' | 'stretch'\n\n// Tailwind class mappings for flex properties\nconst flexDirectionMap: Record<string, string> = {\n row: 'flex-row',\n column: 'flex-col',\n 'row-reverse': 'flex-row-reverse',\n 'column-reverse': 'flex-col-reverse',\n}\n\nconst flexWrapMap: Record<string, string> = {\n wrap: 'flex-wrap',\n nowrap: 'flex-nowrap',\n 'wrap-reverse': 'flex-wrap-reverse',\n}\n\nexport type FlexSemanticElement = 'div' | 'nav' | 'ul' | 'ol' | 'aside' | 'section'\n\nexport interface FlexProps {\n content: unknown\n semanticElement: FlexSemanticElement\n direction: 'row' | 'column'\n justifyContent: JustifyContent | null\n alignItems: AlignItems | null\n gap: number\n wrap: 'wrap' | 'nowrap'\n // Background\n background: BackgroundValue | null\n // Advanced custom options\n customPadding: ResponsiveValue<PaddingValue> | PaddingValue | null\n margin: ResponsiveValue<PaddingValue> | PaddingValue | null\n dimensions: ResponsiveValue<DimensionsValue> | DimensionsValue | null\n border: BorderValue | null\n animation: AnimationValue | null\n // Responsive visibility\n visibility: VisibilityValue | null\n}\n\nconst defaultProps: FlexProps = {\n content: [],\n semanticElement: 'div',\n direction: 'row',\n justifyContent: null,\n alignItems: null,\n gap: 24,\n wrap: 'wrap',\n background: null,\n customPadding: null,\n margin: null,\n dimensions: null,\n border: null,\n animation: null,\n visibility: null,\n}\n\nexport const FlexConfig: ComponentConfig = {\n label: 'Flex',\n fields: {\n content: { type: 'slot' },\n },\n defaultProps,\n render: ({\n content: Content,\n semanticElement = 'div',\n direction,\n justifyContent,\n alignItems,\n gap,\n wrap,\n background,\n customPadding,\n margin,\n dimensions,\n border,\n animation,\n visibility,\n }) => {\n // Dynamic element based on semanticElement prop\n const Wrapper = semanticElement as React.ElementType\n\n // Generate unique IDs for CSS targeting (server-safe)\n const uniqueId = generateUniqueId()\n const wrapperClass = `puck-flex-${uniqueId}`\n const contentClass = `puck-flex-content-${uniqueId}`\n\n // Collect all media query CSS\n const mediaQueries: string[] = []\n\n // Generate styles from BackgroundValue\n const backgroundStyles = backgroundValueToCSS(background)\n\n // Build wrapper styles\n const wrapperStyles: React.CSSProperties = {\n ...backgroundStyles,\n }\n\n // Add padding with responsive support\n const paddingResult = responsiveValueToCSS(\n customPadding,\n (v) => ({ padding: paddingValueToCSS(v) }),\n wrapperClass\n )\n Object.assign(wrapperStyles, paddingResult.baseStyles)\n if (paddingResult.mediaQueryCSS) {\n mediaQueries.push(paddingResult.mediaQueryCSS)\n }\n\n // Add border if set\n const borderStyles = borderValueToCSS(border)\n if (borderStyles) {\n Object.assign(wrapperStyles, borderStyles)\n }\n\n // Apply margin with responsive support\n const marginResult = responsiveValueToCSS(\n margin,\n (v) => ({ margin: marginValueToCSS(v) }),\n wrapperClass\n )\n Object.assign(wrapperStyles, marginResult.baseStyles)\n if (marginResult.mediaQueryCSS) {\n mediaQueries.push(marginResult.mediaQueryCSS)\n }\n\n // Use dimensions with responsive support\n const dimensionsResult = responsiveValueToCSS(\n dimensions,\n dimensionsValueToCSS,\n contentClass\n )\n\n // Visibility media queries\n const visibilityCSS = visibilityValueToCSS(visibility, wrapperClass)\n if (visibilityCSS) {\n mediaQueries.push(visibilityCSS)\n }\n\n // Build Tailwind classes for flex layout\n // [&>*]:min-w-0 prevents flex children from overflowing (CSS best practice)\n const contentClasses = cn(\n 'flex w-full min-h-[50px]',\n flexDirectionMap[direction],\n justifyContent && justifyContentMap[justifyContent],\n alignItems && alignItemsMap[alignItems],\n flexWrapMap[wrap],\n '[&>*]:min-w-0',\n contentClass,\n )\n\n // Dynamic styles that need inline (user-controlled values)\n const contentStyles: React.CSSProperties = {\n gap,\n ...dimensionsResult.baseStyles,\n }\n if (dimensionsResult.mediaQueryCSS) {\n mediaQueries.push(dimensionsResult.mediaQueryCSS)\n }\n\n // Combine all media queries\n const allMediaQueryCSS = mediaQueries.join('\\n')\n\n // Type assertion for Puck slot content - cast to any to avoid complex React type issues\n const ContentSlot = Content as any\n\n return (\n <AnimatedWrapper animation={animation}>\n {allMediaQueryCSS && <style>{allMediaQueryCSS}</style>}\n <Wrapper className={wrapperClass} style={wrapperStyles}>\n <ContentSlot className={contentClasses} style={contentStyles} />\n </Wrapper>\n </AnimatedWrapper>\n )\n },\n}\n"],"names":["cn","dimensionsValueToCSS","marginValueToCSS","paddingValueToCSS","borderValueToCSS","backgroundValueToCSS","responsiveValueToCSS","visibilityValueToCSS","justifyContentMap","alignItemsMap","AnimatedWrapper","idCounter","generateUniqueId","toString","Math","random","slice","flexDirectionMap","row","column","flexWrapMap","wrap","nowrap","defaultProps","content","semanticElement","direction","justifyContent","alignItems","gap","background","customPadding","margin","dimensions","border","animation","visibility","FlexConfig","label","fields","type","render","Content","Wrapper","uniqueId","wrapperClass","contentClass","mediaQueries","backgroundStyles","wrapperStyles","paddingResult","v","padding","Object","assign","baseStyles","mediaQueryCSS","push","borderStyles","marginResult","dimensionsResult","visibilityCSS","contentClasses","contentStyles","allMediaQueryCSS","join","ContentSlot","style","className"],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* - visibility: Show/hide at different breakpoints
|
|
15
15
|
*/
|
|
16
16
|
import type { ComponentConfig } from '@puckeditor/core';
|
|
17
|
-
import { type PaddingValue, type BorderValue, type DimensionsValue, type BackgroundValue, type AnimationValue, type ResponsiveValue, type VisibilityValue } from '../../fields/shared';
|
|
17
|
+
import { type PaddingValue, type BorderValue, type DimensionsValue, type BackgroundValue, type AnimationValue, type ResponsiveValue, type VisibilityValue } from '../../fields/shared.js';
|
|
18
18
|
export type GridSemanticElement = 'div' | 'ul' | 'ol';
|
|
19
19
|
export interface GridProps {
|
|
20
20
|
content: unknown;
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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"}
|
|
@@ -13,19 +13,18 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
13
13
|
* Responsive Controls:
|
|
14
14
|
* - gap: Different gap at different breakpoints
|
|
15
15
|
* - visibility: Show/hide at different breakpoints
|
|
16
|
-
*/
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
import { createResponsiveVisibilityField } from '../../fields/ResponsiveVisibilityField';
|
|
16
|
+
*/ import { useId } from 'react';
|
|
17
|
+
import { cn, dimensionsValueToCSS, marginValueToCSS, paddingValueToCSS, borderValueToCSS, backgroundValueToCSS, responsiveValueToCSS, visibilityValueToCSS } from '../../fields/shared.js';
|
|
18
|
+
import { AnimatedWrapper } from '../AnimatedWrapper.js';
|
|
19
|
+
import { createPaddingField } from '../../fields/PaddingField.js';
|
|
20
|
+
import { createBorderField } from '../../fields/BorderField.js';
|
|
21
|
+
import { createDimensionsField } from '../../fields/DimensionsField.js';
|
|
22
|
+
import { createMarginField } from '../../fields/MarginField.js';
|
|
23
|
+
import { createResetField } from '../../fields/ResetField.js';
|
|
24
|
+
import { createBackgroundField } from '../../fields/BackgroundField.js';
|
|
25
|
+
import { createAnimationField } from '../../fields/AnimationField.js';
|
|
26
|
+
import { createResponsiveField } from '../../fields/ResponsiveField.js';
|
|
27
|
+
import { createResponsiveVisibilityField } from '../../fields/ResponsiveVisibilityField.js';
|
|
29
28
|
// Default values for responsive fields
|
|
30
29
|
const DEFAULT_PADDING = {
|
|
31
30
|
top: 0,
|
|
@@ -33,12 +32,16 @@ const DEFAULT_PADDING = {
|
|
|
33
32
|
bottom: 0,
|
|
34
33
|
left: 0,
|
|
35
34
|
unit: 'px',
|
|
36
|
-
linked: true
|
|
35
|
+
linked: true
|
|
37
36
|
};
|
|
38
37
|
const DEFAULT_DIMENSIONS = {
|
|
39
38
|
mode: 'full',
|
|
40
39
|
alignment: 'center',
|
|
41
|
-
maxWidth: {
|
|
40
|
+
maxWidth: {
|
|
41
|
+
value: 100,
|
|
42
|
+
unit: '%',
|
|
43
|
+
enabled: true
|
|
44
|
+
}
|
|
42
45
|
};
|
|
43
46
|
const defaultProps = {
|
|
44
47
|
content: [],
|
|
@@ -51,64 +54,85 @@ const defaultProps = {
|
|
|
51
54
|
border: null,
|
|
52
55
|
margin: null,
|
|
53
56
|
animation: null,
|
|
54
|
-
visibility: null
|
|
57
|
+
visibility: null
|
|
55
58
|
};
|
|
56
59
|
export const GridConfig = {
|
|
57
60
|
label: 'Grid',
|
|
58
61
|
fields: {
|
|
59
|
-
_reset: createResetField({
|
|
62
|
+
_reset: createResetField({
|
|
63
|
+
defaultProps
|
|
64
|
+
}),
|
|
60
65
|
content: {
|
|
61
66
|
type: 'slot',
|
|
62
|
-
disallow: [
|
|
67
|
+
disallow: [
|
|
68
|
+
'Section'
|
|
69
|
+
]
|
|
63
70
|
},
|
|
64
71
|
// Responsive visibility control
|
|
65
|
-
visibility: createResponsiveVisibilityField({
|
|
72
|
+
visibility: createResponsiveVisibilityField({
|
|
73
|
+
label: 'Visibility'
|
|
74
|
+
}),
|
|
66
75
|
// Semantic element selection
|
|
67
76
|
semanticElement: {
|
|
68
77
|
type: 'select',
|
|
69
78
|
label: 'HTML Element',
|
|
70
79
|
options: [
|
|
71
|
-
{
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
80
|
+
{
|
|
81
|
+
label: 'Div',
|
|
82
|
+
value: 'div'
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
label: 'Unordered List',
|
|
86
|
+
value: 'ul'
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
label: 'Ordered List',
|
|
90
|
+
value: 'ol'
|
|
91
|
+
}
|
|
92
|
+
]
|
|
75
93
|
},
|
|
76
94
|
numColumns: {
|
|
77
95
|
type: 'number',
|
|
78
96
|
label: 'Number of Columns',
|
|
79
97
|
min: 1,
|
|
80
|
-
max: 12
|
|
98
|
+
max: 12
|
|
81
99
|
},
|
|
82
100
|
gap: {
|
|
83
101
|
type: 'number',
|
|
84
102
|
label: 'Gap (px)',
|
|
85
|
-
min: 0
|
|
103
|
+
min: 0
|
|
86
104
|
},
|
|
87
105
|
// Background
|
|
88
|
-
background: createBackgroundField({
|
|
106
|
+
background: createBackgroundField({
|
|
107
|
+
label: 'Background'
|
|
108
|
+
}),
|
|
89
109
|
// Advanced custom options
|
|
90
|
-
border: createBorderField({
|
|
110
|
+
border: createBorderField({
|
|
111
|
+
label: 'Border'
|
|
112
|
+
}),
|
|
91
113
|
// Responsive dimensions
|
|
92
114
|
dimensions: createResponsiveField({
|
|
93
115
|
label: 'Dimensions (Responsive)',
|
|
94
|
-
innerField: (config)
|
|
95
|
-
defaultValue: DEFAULT_DIMENSIONS
|
|
116
|
+
innerField: (config)=>createDimensionsField(config),
|
|
117
|
+
defaultValue: DEFAULT_DIMENSIONS
|
|
118
|
+
}),
|
|
119
|
+
animation: createAnimationField({
|
|
120
|
+
label: 'Animation'
|
|
96
121
|
}),
|
|
97
|
-
animation: createAnimationField({ label: 'Animation' }),
|
|
98
122
|
// Spacing (grouped at bottom) - Responsive
|
|
99
123
|
margin: createResponsiveField({
|
|
100
124
|
label: 'Margin (Responsive)',
|
|
101
|
-
innerField: (config)
|
|
102
|
-
defaultValue: DEFAULT_PADDING
|
|
125
|
+
innerField: (config)=>createMarginField(config),
|
|
126
|
+
defaultValue: DEFAULT_PADDING
|
|
103
127
|
}),
|
|
104
128
|
customPadding: createResponsiveField({
|
|
105
129
|
label: 'Padding (Responsive)',
|
|
106
|
-
innerField: (config)
|
|
107
|
-
defaultValue: DEFAULT_PADDING
|
|
108
|
-
})
|
|
130
|
+
innerField: (config)=>createPaddingField(config),
|
|
131
|
+
defaultValue: DEFAULT_PADDING
|
|
132
|
+
})
|
|
109
133
|
},
|
|
110
134
|
defaultProps,
|
|
111
|
-
render: ({ content: Content, semanticElement = 'div', numColumns, gap, background, customPadding, dimensions, border, margin, animation, visibility
|
|
135
|
+
render: ({ content: Content, semanticElement = 'div', numColumns, gap, background, customPadding, dimensions, border, margin, animation, visibility })=>{
|
|
112
136
|
// Dynamic element based on semanticElement prop
|
|
113
137
|
const Wrapper = semanticElement;
|
|
114
138
|
// Generate unique IDs for CSS targeting
|
|
@@ -122,10 +146,12 @@ export const GridConfig = {
|
|
|
122
146
|
const backgroundStyles = backgroundValueToCSS(background);
|
|
123
147
|
// Build wrapper styles
|
|
124
148
|
const wrapperStyles = {
|
|
125
|
-
...backgroundStyles
|
|
149
|
+
...backgroundStyles
|
|
126
150
|
};
|
|
127
151
|
// Add padding with responsive support
|
|
128
|
-
const paddingResult = responsiveValueToCSS(customPadding, (v)
|
|
152
|
+
const paddingResult = responsiveValueToCSS(customPadding, (v)=>({
|
|
153
|
+
padding: paddingValueToCSS(v)
|
|
154
|
+
}), wrapperClass);
|
|
129
155
|
Object.assign(wrapperStyles, paddingResult.baseStyles);
|
|
130
156
|
if (paddingResult.mediaQueryCSS) {
|
|
131
157
|
mediaQueries.push(paddingResult.mediaQueryCSS);
|
|
@@ -136,7 +162,9 @@ export const GridConfig = {
|
|
|
136
162
|
Object.assign(wrapperStyles, borderStyles);
|
|
137
163
|
}
|
|
138
164
|
// Add margin with responsive support
|
|
139
|
-
const marginResult = responsiveValueToCSS(margin, (v)
|
|
165
|
+
const marginResult = responsiveValueToCSS(margin, (v)=>({
|
|
166
|
+
margin: marginValueToCSS(v)
|
|
167
|
+
}), wrapperClass);
|
|
140
168
|
Object.assign(wrapperStyles, marginResult.baseStyles);
|
|
141
169
|
if (marginResult.mediaQueryCSS) {
|
|
142
170
|
mediaQueries.push(marginResult.mediaQueryCSS);
|
|
@@ -153,7 +181,7 @@ export const GridConfig = {
|
|
|
153
181
|
// Dynamic styles that need inline (user-controlled values: gap, columns)
|
|
154
182
|
const contentStyles = {
|
|
155
183
|
gap,
|
|
156
|
-
...dimensionsResult.baseStyles
|
|
184
|
+
...dimensionsResult.baseStyles
|
|
157
185
|
};
|
|
158
186
|
if (dimensionsResult.mediaQueryCSS) {
|
|
159
187
|
mediaQueries.push(dimensionsResult.mediaQueryCSS);
|
|
@@ -161,17 +189,38 @@ export const GridConfig = {
|
|
|
161
189
|
// Grid template columns must be inline since numColumns is dynamic
|
|
162
190
|
const gridStyles = {
|
|
163
191
|
...contentStyles,
|
|
164
|
-
'--grid-cols': numColumns
|
|
192
|
+
'--grid-cols': numColumns
|
|
165
193
|
};
|
|
166
194
|
// Combine all media queries
|
|
167
195
|
const allMediaQueryCSS = mediaQueries.join('\n');
|
|
168
|
-
return
|
|
196
|
+
return /*#__PURE__*/ _jsxs(AnimatedWrapper, {
|
|
197
|
+
animation: animation,
|
|
198
|
+
children: [
|
|
199
|
+
allMediaQueryCSS && /*#__PURE__*/ _jsx("style", {
|
|
200
|
+
children: allMediaQueryCSS
|
|
201
|
+
}),
|
|
202
|
+
/*#__PURE__*/ _jsxs(Wrapper, {
|
|
203
|
+
className: wrapperClass,
|
|
204
|
+
style: wrapperStyles,
|
|
205
|
+
children: [
|
|
206
|
+
/*#__PURE__*/ _jsx(Content, {
|
|
207
|
+
className: contentClasses,
|
|
208
|
+
style: gridStyles
|
|
209
|
+
}),
|
|
210
|
+
/*#__PURE__*/ _jsx("style", {
|
|
211
|
+
children: `
|
|
169
212
|
@media (min-width: 768px) {
|
|
170
213
|
.flex.md\\:grid {
|
|
171
214
|
grid-template-columns: repeat(var(--grid-cols), 1fr);
|
|
172
215
|
}
|
|
173
216
|
}
|
|
174
|
-
`
|
|
175
|
-
|
|
217
|
+
`
|
|
218
|
+
})
|
|
219
|
+
]
|
|
220
|
+
})
|
|
221
|
+
]
|
|
222
|
+
});
|
|
223
|
+
}
|
|
176
224
|
};
|
|
225
|
+
|
|
177
226
|
//# sourceMappingURL=Grid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Grid.js","sourceRoot":"","sources":["../../../src/components/layout/Grid.tsx"],"names":[],"mappings":"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"}
|
|
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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"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* - visibility: Show/hide at different breakpoints
|
|
16
16
|
*/
|
|
17
17
|
import type { ComponentConfig } from '@puckeditor/core';
|
|
18
|
-
import { type PaddingValue, type BorderValue, type DimensionsValue, type BackgroundValue, type AnimationValue, type ResponsiveValue, type VisibilityValue } from '../../fields/shared';
|
|
18
|
+
import { type PaddingValue, type BorderValue, type DimensionsValue, type BackgroundValue, type AnimationValue, type ResponsiveValue, type VisibilityValue } from '../../fields/shared.js';
|
|
19
19
|
export type GridSemanticElement = 'div' | 'ul' | 'ol';
|
|
20
20
|
export interface GridProps {
|
|
21
21
|
content: unknown;
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,6 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Grid Component - Server-safe Puck Configuration
|
|
3
|
+
*
|
|
4
|
+
* CSS Grid layout following official Puck demo patterns.
|
|
5
|
+
* Responsive: stacks on mobile (flex column), grid on desktop (md+).
|
|
6
|
+
* Uses Tailwind classes for layout, inline styles for dynamic user values.
|
|
7
|
+
*
|
|
8
|
+
* This is a server-safe version with NO fields property (only slot for content).
|
|
9
|
+
* For the full editor version with fields, use Grid.tsx
|
|
10
|
+
*
|
|
11
|
+
* Responsive Controls:
|
|
12
|
+
* - dimensions: Different dimensions at different breakpoints
|
|
13
|
+
* - customPadding: Different padding at different breakpoints
|
|
14
|
+
* - margin: Different margins at different breakpoints
|
|
15
|
+
* - visibility: Show/hide at different breakpoints
|
|
16
|
+
*/ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
|
+
import { cn, dimensionsValueToCSS, marginValueToCSS, paddingValueToCSS, borderValueToCSS, backgroundValueToCSS, responsiveValueToCSS, visibilityValueToCSS } from '../../fields/shared.js';
|
|
18
|
+
import { AnimatedWrapper } from '../AnimatedWrapper.js';
|
|
4
19
|
// Simple ID generator for server-side rendering
|
|
5
20
|
let idCounter = 0;
|
|
6
21
|
function generateUniqueId() {
|
|
@@ -17,15 +32,17 @@ const defaultProps = {
|
|
|
17
32
|
border: null,
|
|
18
33
|
margin: null,
|
|
19
34
|
animation: null,
|
|
20
|
-
visibility: null
|
|
35
|
+
visibility: null
|
|
21
36
|
};
|
|
22
37
|
export const GridConfig = {
|
|
23
38
|
label: 'Grid',
|
|
24
39
|
fields: {
|
|
25
|
-
content: {
|
|
40
|
+
content: {
|
|
41
|
+
type: 'slot'
|
|
42
|
+
}
|
|
26
43
|
},
|
|
27
44
|
defaultProps,
|
|
28
|
-
render: ({ content: Content, semanticElement = 'div', numColumns, gap, background, customPadding, dimensions, border, margin, animation, visibility
|
|
45
|
+
render: ({ content: Content, semanticElement = 'div', numColumns, gap, background, customPadding, dimensions, border, margin, animation, visibility })=>{
|
|
29
46
|
// Dynamic element based on semanticElement prop
|
|
30
47
|
const Wrapper = semanticElement;
|
|
31
48
|
// Generate unique IDs for CSS targeting (server-safe)
|
|
@@ -38,10 +55,12 @@ export const GridConfig = {
|
|
|
38
55
|
const backgroundStyles = backgroundValueToCSS(background);
|
|
39
56
|
// Build wrapper styles
|
|
40
57
|
const wrapperStyles = {
|
|
41
|
-
...backgroundStyles
|
|
58
|
+
...backgroundStyles
|
|
42
59
|
};
|
|
43
60
|
// Add padding with responsive support
|
|
44
|
-
const paddingResult = responsiveValueToCSS(customPadding, (v)
|
|
61
|
+
const paddingResult = responsiveValueToCSS(customPadding, (v)=>({
|
|
62
|
+
padding: paddingValueToCSS(v)
|
|
63
|
+
}), wrapperClass);
|
|
45
64
|
Object.assign(wrapperStyles, paddingResult.baseStyles);
|
|
46
65
|
if (paddingResult.mediaQueryCSS) {
|
|
47
66
|
mediaQueries.push(paddingResult.mediaQueryCSS);
|
|
@@ -52,7 +71,9 @@ export const GridConfig = {
|
|
|
52
71
|
Object.assign(wrapperStyles, borderStyles);
|
|
53
72
|
}
|
|
54
73
|
// Add margin with responsive support
|
|
55
|
-
const marginResult = responsiveValueToCSS(margin, (v)
|
|
74
|
+
const marginResult = responsiveValueToCSS(margin, (v)=>({
|
|
75
|
+
margin: marginValueToCSS(v)
|
|
76
|
+
}), wrapperClass);
|
|
56
77
|
Object.assign(wrapperStyles, marginResult.baseStyles);
|
|
57
78
|
if (marginResult.mediaQueryCSS) {
|
|
58
79
|
mediaQueries.push(marginResult.mediaQueryCSS);
|
|
@@ -69,7 +90,7 @@ export const GridConfig = {
|
|
|
69
90
|
// Dynamic styles that need inline (user-controlled values: gap, columns)
|
|
70
91
|
const contentStyles = {
|
|
71
92
|
gap,
|
|
72
|
-
...dimensionsResult.baseStyles
|
|
93
|
+
...dimensionsResult.baseStyles
|
|
73
94
|
};
|
|
74
95
|
if (dimensionsResult.mediaQueryCSS) {
|
|
75
96
|
mediaQueries.push(dimensionsResult.mediaQueryCSS);
|
|
@@ -77,19 +98,40 @@ export const GridConfig = {
|
|
|
77
98
|
// Grid template columns must be inline since numColumns is dynamic
|
|
78
99
|
const gridStyles = {
|
|
79
100
|
...contentStyles,
|
|
80
|
-
'--grid-cols': numColumns
|
|
101
|
+
'--grid-cols': numColumns
|
|
81
102
|
};
|
|
82
103
|
// Combine all media queries
|
|
83
104
|
const allMediaQueryCSS = mediaQueries.join('\n');
|
|
84
105
|
// Type assertion for Puck slot content - cast to any to avoid complex React type issues
|
|
85
106
|
const ContentSlot = Content;
|
|
86
|
-
return
|
|
107
|
+
return /*#__PURE__*/ _jsxs(AnimatedWrapper, {
|
|
108
|
+
animation: animation,
|
|
109
|
+
children: [
|
|
110
|
+
allMediaQueryCSS && /*#__PURE__*/ _jsx("style", {
|
|
111
|
+
children: allMediaQueryCSS
|
|
112
|
+
}),
|
|
113
|
+
/*#__PURE__*/ _jsxs(Wrapper, {
|
|
114
|
+
className: wrapperClass,
|
|
115
|
+
style: wrapperStyles,
|
|
116
|
+
children: [
|
|
117
|
+
/*#__PURE__*/ _jsx(ContentSlot, {
|
|
118
|
+
className: contentClasses,
|
|
119
|
+
style: gridStyles
|
|
120
|
+
}),
|
|
121
|
+
/*#__PURE__*/ _jsx("style", {
|
|
122
|
+
children: `
|
|
87
123
|
@media (min-width: 768px) {
|
|
88
124
|
.flex.md\\:grid {
|
|
89
125
|
grid-template-columns: repeat(var(--grid-cols), 1fr);
|
|
90
126
|
}
|
|
91
127
|
}
|
|
92
|
-
`
|
|
93
|
-
|
|
128
|
+
`
|
|
129
|
+
})
|
|
130
|
+
]
|
|
131
|
+
})
|
|
132
|
+
]
|
|
133
|
+
});
|
|
134
|
+
}
|
|
94
135
|
};
|
|
136
|
+
|
|
95
137
|
//# sourceMappingURL=Grid.server.js.map
|