@delmaredigital/payload-puck 0.6.10 → 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 +79 -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 +12 -4
- package/dist/editor/PuckEditor.d.ts.map +1 -1
- package/dist/editor/PuckEditor.js +168 -67
- 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 +192 -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 +42 -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 +137 -41
- 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
|
@@ -7,20 +7,19 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
7
7
|
*
|
|
8
8
|
* Responsive Controls:
|
|
9
9
|
* - visibility: Show/hide at different breakpoints
|
|
10
|
-
*/
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import { createResponsiveVisibilityField } from '../../fields/ResponsiveVisibilityField';
|
|
10
|
+
*/ import { useId } from 'react';
|
|
11
|
+
import { aspectRatioField, aspectRatioMap, cn, marginValueToCSS, paddingValueToCSS, dimensionsValueToCSS, borderValueToCSS, transformValueToCSS, visibilityValueToCSS } from '../../fields/shared.js';
|
|
12
|
+
import { AnimatedWrapper } from '../AnimatedWrapper.js';
|
|
13
|
+
import { createMarginField } from '../../fields/MarginField.js';
|
|
14
|
+
import { createPaddingField } from '../../fields/PaddingField.js';
|
|
15
|
+
import { createDimensionsField } from '../../fields/DimensionsField.js';
|
|
16
|
+
import { createBorderField } from '../../fields/BorderField.js';
|
|
17
|
+
import { createMediaField } from '../../fields/MediaField.js';
|
|
18
|
+
import { createAlignmentField } from '../../fields/AlignmentField.js';
|
|
19
|
+
import { createAnimationField } from '../../fields/AnimationField.js';
|
|
20
|
+
import { createTransformField } from '../../fields/TransformField.js';
|
|
21
|
+
import { createResetField } from '../../fields/ResetField.js';
|
|
22
|
+
import { createResponsiveVisibilityField } from '../../fields/ResponsiveVisibilityField.js';
|
|
24
23
|
// Default padding with standard spacing (replaces hardcoded py-4 px-4)
|
|
25
24
|
const DEFAULT_PADDING = {
|
|
26
25
|
top: 16,
|
|
@@ -28,7 +27,7 @@ const DEFAULT_PADDING = {
|
|
|
28
27
|
bottom: 16,
|
|
29
28
|
left: 16,
|
|
30
29
|
unit: 'px',
|
|
31
|
-
linked: true
|
|
30
|
+
linked: true
|
|
32
31
|
};
|
|
33
32
|
const defaultProps = {
|
|
34
33
|
image: null,
|
|
@@ -42,44 +41,71 @@ const defaultProps = {
|
|
|
42
41
|
alignment: null,
|
|
43
42
|
transform: null,
|
|
44
43
|
animation: null,
|
|
45
|
-
customPadding: DEFAULT_PADDING,
|
|
46
|
-
visibility: null
|
|
44
|
+
customPadding: DEFAULT_PADDING,
|
|
45
|
+
visibility: null
|
|
47
46
|
};
|
|
48
47
|
export const ImageConfig = {
|
|
49
48
|
label: 'Image',
|
|
50
49
|
fields: {
|
|
51
|
-
_reset: createResetField({
|
|
52
|
-
|
|
50
|
+
_reset: createResetField({
|
|
51
|
+
defaultProps
|
|
52
|
+
}),
|
|
53
|
+
image: createMediaField({
|
|
54
|
+
label: 'Image'
|
|
55
|
+
}),
|
|
53
56
|
alt: {
|
|
54
57
|
type: 'text',
|
|
55
|
-
label: 'Alt Text Override'
|
|
58
|
+
label: 'Alt Text Override'
|
|
56
59
|
},
|
|
57
60
|
// Responsive visibility control
|
|
58
|
-
visibility: createResponsiveVisibilityField({
|
|
61
|
+
visibility: createResponsiveVisibilityField({
|
|
62
|
+
label: 'Visibility'
|
|
63
|
+
}),
|
|
59
64
|
aspectRatio: aspectRatioField,
|
|
60
65
|
link: {
|
|
61
66
|
type: 'text',
|
|
62
|
-
label: 'Link URL'
|
|
67
|
+
label: 'Link URL'
|
|
63
68
|
},
|
|
64
69
|
openInNewTab: {
|
|
65
70
|
type: 'radio',
|
|
66
71
|
label: 'Open in New Tab',
|
|
67
72
|
options: [
|
|
68
|
-
{
|
|
69
|
-
|
|
70
|
-
|
|
73
|
+
{
|
|
74
|
+
label: 'Yes',
|
|
75
|
+
value: true
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
label: 'No',
|
|
79
|
+
value: false
|
|
80
|
+
}
|
|
81
|
+
]
|
|
71
82
|
},
|
|
72
|
-
border: createBorderField({
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
83
|
+
border: createBorderField({
|
|
84
|
+
label: 'Border'
|
|
85
|
+
}),
|
|
86
|
+
dimensions: createDimensionsField({
|
|
87
|
+
label: 'Dimensions'
|
|
88
|
+
}),
|
|
89
|
+
alignment: createAlignmentField({
|
|
90
|
+
label: 'Alignment',
|
|
91
|
+
defaultValue: 'center'
|
|
92
|
+
}),
|
|
93
|
+
transform: createTransformField({
|
|
94
|
+
label: 'Transform'
|
|
95
|
+
}),
|
|
96
|
+
animation: createAnimationField({
|
|
97
|
+
label: 'Animation'
|
|
98
|
+
}),
|
|
77
99
|
// Spacing (grouped at bottom)
|
|
78
|
-
margin: createMarginField({
|
|
79
|
-
|
|
100
|
+
margin: createMarginField({
|
|
101
|
+
label: 'Margin'
|
|
102
|
+
}),
|
|
103
|
+
customPadding: createPaddingField({
|
|
104
|
+
label: 'Padding'
|
|
105
|
+
})
|
|
80
106
|
},
|
|
81
107
|
defaultProps,
|
|
82
|
-
render: ({ image, alt, aspectRatio, link, openInNewTab, dimensions, alignment, margin, border, transform, animation, customPadding, visibility })
|
|
108
|
+
render: ({ image, alt, aspectRatio, link, openInNewTab, dimensions, alignment, margin, border, transform, animation, customPadding, visibility })=>{
|
|
83
109
|
// Generate unique ID for CSS targeting
|
|
84
110
|
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
85
111
|
const uniqueId = useId().replace(/:/g, '');
|
|
@@ -88,7 +114,7 @@ export const ImageConfig = {
|
|
|
88
114
|
const visibilityCSS = visibilityValueToCSS(visibility, wrapperClass);
|
|
89
115
|
const dimensionsStyles = dimensionsValueToCSS(dimensions);
|
|
90
116
|
const style = {
|
|
91
|
-
...dimensionsStyles
|
|
117
|
+
...dimensionsStyles
|
|
92
118
|
};
|
|
93
119
|
const marginCSS = marginValueToCSS(margin);
|
|
94
120
|
if (marginCSS) {
|
|
@@ -110,14 +136,71 @@ export const ImageConfig = {
|
|
|
110
136
|
const alignmentClasses = cn('flex', alignmentValue === 'left' && 'justify-start', alignmentValue === 'center' && 'justify-center', alignmentValue === 'right' && 'justify-end');
|
|
111
137
|
// Placeholder if no image
|
|
112
138
|
if (!image?.url) {
|
|
113
|
-
return
|
|
139
|
+
return /*#__PURE__*/ _jsxs(AnimatedWrapper, {
|
|
140
|
+
animation: animation,
|
|
141
|
+
children: [
|
|
142
|
+
visibilityCSS && /*#__PURE__*/ _jsx("style", {
|
|
143
|
+
children: visibilityCSS
|
|
144
|
+
}),
|
|
145
|
+
/*#__PURE__*/ _jsx("div", {
|
|
146
|
+
className: wrapperClass,
|
|
147
|
+
style: Object.keys(style).length > 0 ? style : undefined,
|
|
148
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
149
|
+
className: alignmentClasses,
|
|
150
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
151
|
+
className: cn('relative overflow-hidden rounded-lg w-full max-w-md bg-muted flex items-center justify-center min-h-[200px]', aspectRatioMap[aspectRatio] || ''),
|
|
152
|
+
children: /*#__PURE__*/ _jsx("span", {
|
|
153
|
+
className: "text-muted-foreground",
|
|
154
|
+
children: "No image selected"
|
|
155
|
+
})
|
|
156
|
+
})
|
|
157
|
+
})
|
|
158
|
+
})
|
|
159
|
+
]
|
|
160
|
+
});
|
|
114
161
|
}
|
|
115
162
|
// For auto aspect ratio, use natural image dimensions
|
|
116
163
|
// For fixed aspect ratios, use absolute positioning within aspect-ratio container
|
|
117
164
|
// Note: When using aspect ratios in Flex, set a min-width via Dimensions
|
|
118
|
-
const imageElement = aspectRatio === 'auto' ?
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
165
|
+
const imageElement = aspectRatio === 'auto' ? /*#__PURE__*/ _jsx("div", {
|
|
166
|
+
className: "relative overflow-hidden rounded-lg w-full",
|
|
167
|
+
children: /*#__PURE__*/ _jsx("img", {
|
|
168
|
+
src: image.url,
|
|
169
|
+
alt: alt || image.alt || '',
|
|
170
|
+
className: "w-full h-auto object-cover"
|
|
171
|
+
})
|
|
172
|
+
}) : /*#__PURE__*/ _jsx("div", {
|
|
173
|
+
className: cn('relative overflow-hidden rounded-lg w-full', aspectRatioMap[aspectRatio]),
|
|
174
|
+
children: /*#__PURE__*/ _jsx("img", {
|
|
175
|
+
src: image.url,
|
|
176
|
+
alt: alt || image.alt || '',
|
|
177
|
+
className: "absolute inset-0 w-full h-full object-cover"
|
|
178
|
+
})
|
|
179
|
+
});
|
|
180
|
+
const content = link ? /*#__PURE__*/ _jsx("a", {
|
|
181
|
+
href: link,
|
|
182
|
+
target: openInNewTab ? '_blank' : undefined,
|
|
183
|
+
rel: openInNewTab ? 'noopener noreferrer' : undefined,
|
|
184
|
+
className: "block transition-opacity hover:opacity-90",
|
|
185
|
+
children: imageElement
|
|
186
|
+
}) : imageElement;
|
|
187
|
+
return /*#__PURE__*/ _jsxs(AnimatedWrapper, {
|
|
188
|
+
animation: animation,
|
|
189
|
+
children: [
|
|
190
|
+
visibilityCSS && /*#__PURE__*/ _jsx("style", {
|
|
191
|
+
children: visibilityCSS
|
|
192
|
+
}),
|
|
193
|
+
/*#__PURE__*/ _jsx("div", {
|
|
194
|
+
className: wrapperClass,
|
|
195
|
+
style: Object.keys(style).length > 0 ? style : undefined,
|
|
196
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
197
|
+
className: alignmentClasses,
|
|
198
|
+
children: content
|
|
199
|
+
})
|
|
200
|
+
})
|
|
201
|
+
]
|
|
202
|
+
});
|
|
203
|
+
}
|
|
122
204
|
};
|
|
205
|
+
|
|
123
206
|
//# sourceMappingURL=Image.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Image.js","sourceRoot":"","sources":["../../../src/components/media/Image.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/media/Image.tsx"],"sourcesContent":["/**\n * Image Component - Puck Configuration\n *\n * Standalone image block with optional link wrapper.\n * Server-safe version using standard HTML img element.\n *\n * Responsive Controls:\n * - visibility: Show/hide at different breakpoints\n */\n\nimport { useId } from 'react'\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n aspectRatioField,\n aspectRatioMap,\n cn,\n marginValueToCSS,\n paddingValueToCSS,\n dimensionsValueToCSS,\n borderValueToCSS,\n transformValueToCSS,\n visibilityValueToCSS,\n type PaddingValue,\n type DimensionsValue,\n type BorderValue,\n type AnimationValue,\n type TransformValue,\n type VisibilityValue,\n} from '../../fields/shared.js'\nimport { AnimatedWrapper } from '../AnimatedWrapper.js'\nimport { createMarginField } from '../../fields/MarginField.js'\nimport { createPaddingField } from '../../fields/PaddingField.js'\nimport { createDimensionsField } from '../../fields/DimensionsField.js'\nimport { createBorderField } from '../../fields/BorderField.js'\nimport { createMediaField, type MediaReference } from '../../fields/MediaField.js'\nimport { createAlignmentField, type Alignment } from '../../fields/AlignmentField.js'\nimport { createAnimationField } from '../../fields/AnimationField.js'\nimport { createTransformField } from '../../fields/TransformField.js'\nimport { createResetField } from '../../fields/ResetField.js'\nimport { createResponsiveVisibilityField } from '../../fields/ResponsiveVisibilityField.js'\n\n// Default padding with standard spacing (replaces hardcoded py-4 px-4)\nconst DEFAULT_PADDING: PaddingValue = {\n top: 16,\n right: 16,\n bottom: 16,\n left: 16,\n unit: 'px',\n linked: true,\n}\n\nexport interface ImageProps {\n image: MediaReference | null\n alt: string\n aspectRatio: string\n link: string\n openInNewTab: boolean\n margin: PaddingValue | null\n border: BorderValue | null\n dimensions: DimensionsValue | null\n alignment: Alignment | null\n transform: TransformValue | null\n animation: AnimationValue | null\n customPadding: PaddingValue | null\n visibility: VisibilityValue | null\n}\n\nconst defaultProps: ImageProps = {\n image: null,\n alt: '',\n aspectRatio: 'auto',\n link: '',\n openInNewTab: false,\n margin: null,\n border: null,\n dimensions: null,\n alignment: null,\n transform: null,\n animation: null,\n customPadding: DEFAULT_PADDING, // Default 16px padding, visible in editor\n visibility: null,\n}\n\nexport const ImageConfig: ComponentConfig = {\n label: 'Image',\n fields: {\n _reset: createResetField({ defaultProps }),\n image: createMediaField({ label: 'Image' }),\n alt: {\n type: 'text',\n label: 'Alt Text Override',\n },\n // Responsive visibility control\n visibility: createResponsiveVisibilityField({ label: 'Visibility' }),\n aspectRatio: aspectRatioField,\n link: {\n type: 'text',\n label: 'Link URL',\n },\n openInNewTab: {\n type: 'radio',\n label: 'Open in New Tab',\n options: [\n { label: 'Yes', value: true },\n { label: 'No', value: false },\n ],\n },\n border: createBorderField({ label: 'Border' }),\n dimensions: createDimensionsField({ label: 'Dimensions' }),\n alignment: createAlignmentField({ label: 'Alignment', defaultValue: 'center' }),\n transform: createTransformField({ label: 'Transform' }),\n animation: createAnimationField({ label: 'Animation' }),\n // Spacing (grouped at bottom)\n margin: createMarginField({ label: 'Margin' }),\n customPadding: createPaddingField({ label: 'Padding' }),\n },\n defaultProps,\n render: ({ image, alt, aspectRatio, link, openInNewTab, dimensions, alignment, margin, border, transform, animation, customPadding, visibility }) => {\n // Generate unique ID for CSS targeting\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const uniqueId = useId().replace(/:/g, '')\n const wrapperClass = `puck-image-${uniqueId}`\n\n // Visibility media queries\n const visibilityCSS = visibilityValueToCSS(visibility, wrapperClass)\n const dimensionsStyles = dimensionsValueToCSS(dimensions)\n\n const style: React.CSSProperties = {\n ...dimensionsStyles,\n }\n const marginCSS = marginValueToCSS(margin)\n if (marginCSS) {\n style.margin = marginCSS\n }\n const paddingCSS = paddingValueToCSS(customPadding)\n if (paddingCSS) {\n style.padding = paddingCSS\n }\n const borderStyles = borderValueToCSS(border)\n if (borderStyles) {\n Object.assign(style, borderStyles)\n }\n const transformStyles = transformValueToCSS(transform)\n if (transformStyles) {\n Object.assign(style, transformStyles)\n }\n\n const alignmentValue = alignment ?? 'center'\n const alignmentClasses = cn(\n 'flex',\n alignmentValue === 'left' && 'justify-start',\n alignmentValue === 'center' && 'justify-center',\n alignmentValue === 'right' && 'justify-end'\n )\n\n // Placeholder if no image\n if (!image?.url) {\n return (\n <AnimatedWrapper animation={animation}>\n {visibilityCSS && <style>{visibilityCSS}</style>}\n <div className={wrapperClass} style={Object.keys(style).length > 0 ? style : undefined}>\n <div className={alignmentClasses}>\n <div\n className={cn(\n 'relative overflow-hidden rounded-lg w-full max-w-md bg-muted flex items-center justify-center min-h-[200px]',\n aspectRatioMap[aspectRatio] || ''\n )}\n >\n <span className=\"text-muted-foreground\">No image selected</span>\n </div>\n </div>\n </div>\n </AnimatedWrapper>\n )\n }\n\n // For auto aspect ratio, use natural image dimensions\n // For fixed aspect ratios, use absolute positioning within aspect-ratio container\n // Note: When using aspect ratios in Flex, set a min-width via Dimensions\n const imageElement = aspectRatio === 'auto' ? (\n <div className=\"relative overflow-hidden rounded-lg w-full\">\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={image.url}\n alt={alt || image.alt || ''}\n className=\"w-full h-auto object-cover\"\n />\n </div>\n ) : (\n <div className={cn('relative overflow-hidden rounded-lg w-full', aspectRatioMap[aspectRatio])}>\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={image.url}\n alt={alt || image.alt || ''}\n className=\"absolute inset-0 w-full h-full object-cover\"\n />\n </div>\n )\n\n const content = link ? (\n <a\n href={link}\n target={openInNewTab ? '_blank' : undefined}\n rel={openInNewTab ? 'noopener noreferrer' : undefined}\n className=\"block transition-opacity hover:opacity-90\"\n >\n {imageElement}\n </a>\n ) : (\n imageElement\n )\n\n return (\n <AnimatedWrapper animation={animation}>\n {visibilityCSS && <style>{visibilityCSS}</style>}\n <div className={wrapperClass} style={Object.keys(style).length > 0 ? style : undefined}>\n <div className={alignmentClasses}>{content}</div>\n </div>\n </AnimatedWrapper>\n )\n },\n}\n"],"names":["useId","aspectRatioField","aspectRatioMap","cn","marginValueToCSS","paddingValueToCSS","dimensionsValueToCSS","borderValueToCSS","transformValueToCSS","visibilityValueToCSS","AnimatedWrapper","createMarginField","createPaddingField","createDimensionsField","createBorderField","createMediaField","createAlignmentField","createAnimationField","createTransformField","createResetField","createResponsiveVisibilityField","DEFAULT_PADDING","top","right","bottom","left","unit","linked","defaultProps","image","alt","aspectRatio","link","openInNewTab","margin","border","dimensions","alignment","transform","animation","customPadding","visibility","ImageConfig","label","fields","_reset","type","options","value","defaultValue","render","uniqueId","replace","wrapperClass","visibilityCSS","dimensionsStyles","style","marginCSS","paddingCSS","padding","borderStyles","Object","assign","transformStyles","alignmentValue","alignmentClasses","url","div","className","keys","length","undefined","span","imageElement","img","src","content","a","href","target","rel"],"mappings":"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"}
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
* Safe for use in server components.
|
|
7
7
|
*/
|
|
8
8
|
import type { ComponentConfig } from '@puckeditor/core';
|
|
9
|
-
import { type PaddingValue, type DimensionsValue, type BorderValue, type AnimationValue, type TransformValue, type VisibilityValue } from '../../fields/shared';
|
|
10
|
-
import type { MediaReference } from '../../fields/MediaField';
|
|
11
|
-
import type { Alignment } from '../../fields/AlignmentField';
|
|
9
|
+
import { type PaddingValue, type DimensionsValue, type BorderValue, type AnimationValue, type TransformValue, type VisibilityValue } from '../../fields/shared.js';
|
|
10
|
+
import type { MediaReference } from '../../fields/MediaField.js';
|
|
11
|
+
import type { Alignment } from '../../fields/AlignmentField.js';
|
|
12
12
|
export interface ImageProps {
|
|
13
13
|
image: MediaReference | null;
|
|
14
14
|
alt: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Image.server.d.ts","sourceRoot":"","sources":["../../../src/components/media/Image.server.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EASL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,
|
|
1
|
+
{"version":3,"file":"Image.server.d.ts","sourceRoot":"","sources":["../../../src/components/media/Image.server.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EASL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAkB/D,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,OAAO,CAAA;IACrB,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;IAC1B,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;IAC3B,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,aAAa,EAAE,YAAY,GAAG,IAAI,CAAA;IAClC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;CACnC;AAkBD,eAAO,MAAM,WAAW,EAAE,eAAe,CAAC,UAAU,CA0GnD,CAAA"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Image Component - Server-safe Puck Configuration
|
|
3
|
+
*
|
|
4
|
+
* Standalone image block with optional link wrapper.
|
|
5
|
+
* This version contains only the render function and types - no fields.
|
|
6
|
+
* Safe for use in server components.
|
|
7
|
+
*/ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
import { aspectRatioMap, cn, marginValueToCSS, paddingValueToCSS, dimensionsValueToCSS, borderValueToCSS, transformValueToCSS, visibilityValueToCSS } from '../../fields/shared.js';
|
|
9
|
+
import { AnimatedWrapper } from '../AnimatedWrapper.js';
|
|
4
10
|
// Default padding with standard spacing (replaces hardcoded py-4 px-4)
|
|
5
11
|
const DEFAULT_PADDING = {
|
|
6
12
|
top: 16,
|
|
@@ -8,7 +14,7 @@ const DEFAULT_PADDING = {
|
|
|
8
14
|
bottom: 16,
|
|
9
15
|
left: 16,
|
|
10
16
|
unit: 'px',
|
|
11
|
-
linked: true
|
|
17
|
+
linked: true
|
|
12
18
|
};
|
|
13
19
|
// Simple ID generator for server-side rendering
|
|
14
20
|
let idCounter = 0;
|
|
@@ -27,13 +33,13 @@ const defaultProps = {
|
|
|
27
33
|
alignment: null,
|
|
28
34
|
transform: null,
|
|
29
35
|
animation: null,
|
|
30
|
-
customPadding: DEFAULT_PADDING,
|
|
31
|
-
visibility: null
|
|
36
|
+
customPadding: DEFAULT_PADDING,
|
|
37
|
+
visibility: null
|
|
32
38
|
};
|
|
33
39
|
export const ImageConfig = {
|
|
34
40
|
label: 'Image',
|
|
35
41
|
defaultProps,
|
|
36
|
-
render: ({ image, alt, aspectRatio, link, openInNewTab, dimensions, alignment, margin, border, transform, animation, customPadding, visibility })
|
|
42
|
+
render: ({ image, alt, aspectRatio, link, openInNewTab, dimensions, alignment, margin, border, transform, animation, customPadding, visibility })=>{
|
|
37
43
|
// Generate unique ID for CSS targeting (server-safe)
|
|
38
44
|
const uniqueId = generateUniqueId();
|
|
39
45
|
const wrapperClass = `puck-image-${uniqueId}`;
|
|
@@ -41,7 +47,7 @@ export const ImageConfig = {
|
|
|
41
47
|
const visibilityCSS = visibilityValueToCSS(visibility, wrapperClass);
|
|
42
48
|
const dimensionsStyles = dimensionsValueToCSS(dimensions);
|
|
43
49
|
const style = {
|
|
44
|
-
...dimensionsStyles
|
|
50
|
+
...dimensionsStyles
|
|
45
51
|
};
|
|
46
52
|
const marginCSS = marginValueToCSS(margin);
|
|
47
53
|
if (marginCSS) {
|
|
@@ -63,14 +69,71 @@ export const ImageConfig = {
|
|
|
63
69
|
const alignmentClasses = cn('flex', alignmentValue === 'left' && 'justify-start', alignmentValue === 'center' && 'justify-center', alignmentValue === 'right' && 'justify-end');
|
|
64
70
|
// Placeholder if no image
|
|
65
71
|
if (!image?.url) {
|
|
66
|
-
return
|
|
72
|
+
return /*#__PURE__*/ _jsxs(AnimatedWrapper, {
|
|
73
|
+
animation: animation,
|
|
74
|
+
children: [
|
|
75
|
+
visibilityCSS && /*#__PURE__*/ _jsx("style", {
|
|
76
|
+
children: visibilityCSS
|
|
77
|
+
}),
|
|
78
|
+
/*#__PURE__*/ _jsx("div", {
|
|
79
|
+
className: wrapperClass,
|
|
80
|
+
style: Object.keys(style).length > 0 ? style : undefined,
|
|
81
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
82
|
+
className: alignmentClasses,
|
|
83
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
84
|
+
className: cn('relative overflow-hidden rounded-lg w-full max-w-md bg-muted flex items-center justify-center min-h-[200px]', aspectRatioMap[aspectRatio] || ''),
|
|
85
|
+
children: /*#__PURE__*/ _jsx("span", {
|
|
86
|
+
className: "text-muted-foreground",
|
|
87
|
+
children: "No image selected"
|
|
88
|
+
})
|
|
89
|
+
})
|
|
90
|
+
})
|
|
91
|
+
})
|
|
92
|
+
]
|
|
93
|
+
});
|
|
67
94
|
}
|
|
68
95
|
// For auto aspect ratio, use natural image dimensions
|
|
69
96
|
// For fixed aspect ratios, use absolute positioning within aspect-ratio container
|
|
70
97
|
// Note: When using aspect ratios in Flex, set a min-width via Dimensions
|
|
71
|
-
const imageElement = aspectRatio === 'auto' ?
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
98
|
+
const imageElement = aspectRatio === 'auto' ? /*#__PURE__*/ _jsx("div", {
|
|
99
|
+
className: "relative overflow-hidden rounded-lg w-full",
|
|
100
|
+
children: /*#__PURE__*/ _jsx("img", {
|
|
101
|
+
src: image.url,
|
|
102
|
+
alt: alt || image.alt || '',
|
|
103
|
+
className: "w-full h-auto object-cover"
|
|
104
|
+
})
|
|
105
|
+
}) : /*#__PURE__*/ _jsx("div", {
|
|
106
|
+
className: cn('relative overflow-hidden rounded-lg w-full', aspectRatioMap[aspectRatio]),
|
|
107
|
+
children: /*#__PURE__*/ _jsx("img", {
|
|
108
|
+
src: image.url,
|
|
109
|
+
alt: alt || image.alt || '',
|
|
110
|
+
className: "absolute inset-0 w-full h-full object-cover"
|
|
111
|
+
})
|
|
112
|
+
});
|
|
113
|
+
const content = link ? /*#__PURE__*/ _jsx("a", {
|
|
114
|
+
href: link,
|
|
115
|
+
target: openInNewTab ? '_blank' : undefined,
|
|
116
|
+
rel: openInNewTab ? 'noopener noreferrer' : undefined,
|
|
117
|
+
className: "block transition-opacity hover:opacity-90",
|
|
118
|
+
children: imageElement
|
|
119
|
+
}) : imageElement;
|
|
120
|
+
return /*#__PURE__*/ _jsxs(AnimatedWrapper, {
|
|
121
|
+
animation: animation,
|
|
122
|
+
children: [
|
|
123
|
+
visibilityCSS && /*#__PURE__*/ _jsx("style", {
|
|
124
|
+
children: visibilityCSS
|
|
125
|
+
}),
|
|
126
|
+
/*#__PURE__*/ _jsx("div", {
|
|
127
|
+
className: wrapperClass,
|
|
128
|
+
style: Object.keys(style).length > 0 ? style : undefined,
|
|
129
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
130
|
+
className: alignmentClasses,
|
|
131
|
+
children: content
|
|
132
|
+
})
|
|
133
|
+
})
|
|
134
|
+
]
|
|
135
|
+
});
|
|
136
|
+
}
|
|
75
137
|
};
|
|
138
|
+
|
|
76
139
|
//# sourceMappingURL=Image.server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/components/media/Image.server.tsx"],"sourcesContent":["/**\n * Image Component - Server-safe Puck Configuration\n *\n * Standalone image block with optional link wrapper.\n * This version contains only the render function and types - no fields.\n * Safe for use in server components.\n */\n\nimport type { ComponentConfig } from '@puckeditor/core'\nimport {\n aspectRatioMap,\n cn,\n marginValueToCSS,\n paddingValueToCSS,\n dimensionsValueToCSS,\n borderValueToCSS,\n transformValueToCSS,\n visibilityValueToCSS,\n type PaddingValue,\n type DimensionsValue,\n type BorderValue,\n type AnimationValue,\n type TransformValue,\n type VisibilityValue,\n} from '../../fields/shared.js'\nimport { AnimatedWrapper } from '../AnimatedWrapper.js'\nimport type { MediaReference } from '../../fields/MediaField.js'\nimport type { Alignment } from '../../fields/AlignmentField.js'\n\n// Default padding with standard spacing (replaces hardcoded py-4 px-4)\nconst DEFAULT_PADDING: PaddingValue = {\n top: 16,\n right: 16,\n bottom: 16,\n left: 16,\n unit: 'px',\n linked: true,\n}\n\n// Simple ID generator for server-side rendering\nlet idCounter = 0\nfunction generateUniqueId(): string {\n return `i${(++idCounter).toString(36)}${Math.random().toString(36).slice(2, 6)}`\n}\n\nexport interface ImageProps {\n image: MediaReference | null\n alt: string\n aspectRatio: string\n link: string\n openInNewTab: boolean\n margin: PaddingValue | null\n border: BorderValue | null\n dimensions: DimensionsValue | null\n alignment: Alignment | null\n transform: TransformValue | null\n animation: AnimationValue | null\n customPadding: PaddingValue | null\n visibility: VisibilityValue | null\n}\n\nconst defaultProps: ImageProps = {\n image: null,\n alt: '',\n aspectRatio: 'auto',\n link: '',\n openInNewTab: false,\n margin: null,\n border: null,\n dimensions: null,\n alignment: null,\n transform: null,\n animation: null,\n customPadding: DEFAULT_PADDING, // Default 16px padding\n visibility: null,\n}\n\nexport const ImageConfig: ComponentConfig<ImageProps> = {\n label: 'Image',\n defaultProps,\n render: ({ image, alt, aspectRatio, link, openInNewTab, dimensions, alignment, margin, border, transform, animation, customPadding, visibility }) => {\n // Generate unique ID for CSS targeting (server-safe)\n const uniqueId = generateUniqueId()\n const wrapperClass = `puck-image-${uniqueId}`\n\n // Visibility media queries\n const visibilityCSS = visibilityValueToCSS(visibility, wrapperClass)\n const dimensionsStyles = dimensionsValueToCSS(dimensions)\n\n const style: React.CSSProperties = {\n ...dimensionsStyles,\n }\n const marginCSS = marginValueToCSS(margin)\n if (marginCSS) {\n style.margin = marginCSS\n }\n const paddingCSS = paddingValueToCSS(customPadding)\n if (paddingCSS) {\n style.padding = paddingCSS\n }\n const borderStyles = borderValueToCSS(border)\n if (borderStyles) {\n Object.assign(style, borderStyles)\n }\n const transformStyles = transformValueToCSS(transform)\n if (transformStyles) {\n Object.assign(style, transformStyles)\n }\n\n const alignmentValue = alignment ?? 'center'\n const alignmentClasses = cn(\n 'flex',\n alignmentValue === 'left' && 'justify-start',\n alignmentValue === 'center' && 'justify-center',\n alignmentValue === 'right' && 'justify-end'\n )\n\n // Placeholder if no image\n if (!image?.url) {\n return (\n <AnimatedWrapper animation={animation}>\n {visibilityCSS && <style>{visibilityCSS}</style>}\n <div className={wrapperClass} style={Object.keys(style).length > 0 ? style : undefined}>\n <div className={alignmentClasses}>\n <div\n className={cn(\n 'relative overflow-hidden rounded-lg w-full max-w-md bg-muted flex items-center justify-center min-h-[200px]',\n aspectRatioMap[aspectRatio] || ''\n )}\n >\n <span className=\"text-muted-foreground\">No image selected</span>\n </div>\n </div>\n </div>\n </AnimatedWrapper>\n )\n }\n\n // For auto aspect ratio, use natural image dimensions\n // For fixed aspect ratios, use absolute positioning within aspect-ratio container\n // Note: When using aspect ratios in Flex, set a min-width via Dimensions\n const imageElement = aspectRatio === 'auto' ? (\n <div className=\"relative overflow-hidden rounded-lg w-full\">\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={image.url}\n alt={alt || image.alt || ''}\n className=\"w-full h-auto object-cover\"\n />\n </div>\n ) : (\n <div className={cn('relative overflow-hidden rounded-lg w-full', aspectRatioMap[aspectRatio])}>\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={image.url}\n alt={alt || image.alt || ''}\n className=\"absolute inset-0 w-full h-full object-cover\"\n />\n </div>\n )\n\n const content = link ? (\n <a\n href={link}\n target={openInNewTab ? '_blank' : undefined}\n rel={openInNewTab ? 'noopener noreferrer' : undefined}\n className=\"block transition-opacity hover:opacity-90\"\n >\n {imageElement}\n </a>\n ) : (\n imageElement\n )\n\n return (\n <AnimatedWrapper animation={animation}>\n {visibilityCSS && <style>{visibilityCSS}</style>}\n <div className={wrapperClass} style={Object.keys(style).length > 0 ? style : undefined}>\n <div className={alignmentClasses}>{content}</div>\n </div>\n </AnimatedWrapper>\n )\n },\n}\n"],"names":["aspectRatioMap","cn","marginValueToCSS","paddingValueToCSS","dimensionsValueToCSS","borderValueToCSS","transformValueToCSS","visibilityValueToCSS","AnimatedWrapper","DEFAULT_PADDING","top","right","bottom","left","unit","linked","idCounter","generateUniqueId","toString","Math","random","slice","defaultProps","image","alt","aspectRatio","link","openInNewTab","margin","border","dimensions","alignment","transform","animation","customPadding","visibility","ImageConfig","label","render","uniqueId","wrapperClass","visibilityCSS","dimensionsStyles","style","marginCSS","paddingCSS","padding","borderStyles","Object","assign","transformStyles","alignmentValue","alignmentClasses","url","div","className","keys","length","undefined","span","imageElement","img","src","content","a","href","target","rel"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/media/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/media/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/components/media/index.ts"],"sourcesContent":["/**\n * Media Components\n *\n * Image and media display components.\n */\n\nexport { ImageConfig } from './Image.js'\n"],"names":["ImageConfig"],"mappings":"AAAA;;;;CAIC,GAED,SAASA,WAAW,QAAQ,aAAY"}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* Supports custom margin for spacing control.
|
|
6
6
|
*/
|
|
7
7
|
import type { ComponentConfig } from '@puckeditor/core';
|
|
8
|
-
import { type PaddingValue, type ColorValue, type DimensionsValue, type AnimationValue } from '../../fields/shared';
|
|
9
|
-
import { type Alignment } from '../../fields/AlignmentField';
|
|
8
|
+
import { type PaddingValue, type ColorValue, type DimensionsValue, type AnimationValue } from '../../fields/shared.js';
|
|
9
|
+
import { type Alignment } from '../../fields/AlignmentField.js';
|
|
10
10
|
export interface HeadingProps {
|
|
11
11
|
text: string;
|
|
12
12
|
level: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Heading.d.ts","sourceRoot":"","sources":["../../../src/components/typography/Heading.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EASL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,
|
|
1
|
+
{"version":3,"file":"Heading.d.ts","sourceRoot":"","sources":["../../../src/components/typography/Heading.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EASL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAA;AAK/B,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAKrF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IAC9C,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;IAC3B,SAAS,EAAE,UAAU,GAAG,IAAI,CAAA;IAC5B,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,aAAa,EAAE,YAAY,GAAG,IAAI,CAAA;CACnC;AAaD,eAAO,MAAM,aAAa,EAAE,eAqD3B,CAAA"}
|
|
@@ -4,17 +4,16 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
4
4
|
*
|
|
5
5
|
* H1-H6 headings with customizable styling.
|
|
6
6
|
* Supports custom margin for spacing control.
|
|
7
|
-
*/
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import { createResetField } from '../../fields/ResetField';
|
|
7
|
+
*/ import React, { createElement } from 'react';
|
|
8
|
+
import { headingLevelField, headingLevelMap, alignmentMap, cn, marginValueToCSS, paddingValueToCSS, colorValueToCSS, dimensionsValueToCSS } from '../../fields/shared.js';
|
|
9
|
+
import { AnimatedWrapper } from '../AnimatedWrapper.js';
|
|
10
|
+
import { createMarginField } from '../../fields/MarginField.js';
|
|
11
|
+
import { createPaddingField } from '../../fields/PaddingField.js';
|
|
12
|
+
import { createColorPickerField } from '../../fields/ColorPickerField.js';
|
|
13
|
+
import { createAlignmentField } from '../../fields/AlignmentField.js';
|
|
14
|
+
import { createDimensionsField } from '../../fields/DimensionsField.js';
|
|
15
|
+
import { createAnimationField } from '../../fields/AnimationField.js';
|
|
16
|
+
import { createResetField } from '../../fields/ResetField.js';
|
|
18
17
|
const defaultProps = {
|
|
19
18
|
text: 'Heading Text',
|
|
20
19
|
level: 'h2',
|
|
@@ -23,33 +22,47 @@ const defaultProps = {
|
|
|
23
22
|
dimensions: null,
|
|
24
23
|
animation: null,
|
|
25
24
|
margin: null,
|
|
26
|
-
customPadding: null
|
|
25
|
+
customPadding: null
|
|
27
26
|
};
|
|
28
27
|
export const HeadingConfig = {
|
|
29
28
|
label: 'Heading',
|
|
30
29
|
fields: {
|
|
31
|
-
_reset: createResetField({
|
|
30
|
+
_reset: createResetField({
|
|
31
|
+
defaultProps
|
|
32
|
+
}),
|
|
32
33
|
text: {
|
|
33
34
|
type: 'text',
|
|
34
|
-
label: 'Text'
|
|
35
|
+
label: 'Text'
|
|
35
36
|
},
|
|
36
37
|
level: headingLevelField,
|
|
37
|
-
textColor: createColorPickerField({
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
textColor: createColorPickerField({
|
|
39
|
+
label: 'Text Color'
|
|
40
|
+
}),
|
|
41
|
+
dimensions: createDimensionsField({
|
|
42
|
+
label: 'Dimensions'
|
|
43
|
+
}),
|
|
44
|
+
alignment: createAlignmentField({
|
|
45
|
+
label: 'Alignment'
|
|
46
|
+
}),
|
|
47
|
+
animation: createAnimationField({
|
|
48
|
+
label: 'Animation'
|
|
49
|
+
}),
|
|
41
50
|
// Spacing (grouped at bottom)
|
|
42
|
-
margin: createMarginField({
|
|
43
|
-
|
|
51
|
+
margin: createMarginField({
|
|
52
|
+
label: 'Margin'
|
|
53
|
+
}),
|
|
54
|
+
customPadding: createPaddingField({
|
|
55
|
+
label: 'Padding'
|
|
56
|
+
})
|
|
44
57
|
},
|
|
45
58
|
defaultProps,
|
|
46
|
-
render: ({ text, level, alignment, textColor, dimensions, animation, margin, customPadding })
|
|
59
|
+
render: ({ text, level, alignment, textColor, dimensions, animation, margin, customPadding })=>{
|
|
47
60
|
const tag = level || 'h2';
|
|
48
61
|
const alignmentValue = alignment ?? 'left';
|
|
49
62
|
const classes = cn(headingLevelMap[level] || headingLevelMap.h2, alignmentMap[alignmentValue] || alignmentMap.left);
|
|
50
63
|
const dimensionsStyles = dimensions ? dimensionsValueToCSS(dimensions) : undefined;
|
|
51
64
|
const style = {
|
|
52
|
-
...dimensionsStyles
|
|
65
|
+
...dimensionsStyles
|
|
53
66
|
};
|
|
54
67
|
const marginCSS = marginValueToCSS(margin);
|
|
55
68
|
if (marginCSS) {
|
|
@@ -64,8 +77,15 @@ export const HeadingConfig = {
|
|
|
64
77
|
if (colorCSS) {
|
|
65
78
|
style.color = colorCSS;
|
|
66
79
|
}
|
|
67
|
-
const headingElement = createElement(tag, {
|
|
68
|
-
|
|
69
|
-
|
|
80
|
+
const headingElement = /*#__PURE__*/ createElement(tag, {
|
|
81
|
+
className: classes,
|
|
82
|
+
style: Object.keys(style).length > 0 ? style : undefined
|
|
83
|
+
}, text);
|
|
84
|
+
return /*#__PURE__*/ _jsx(AnimatedWrapper, {
|
|
85
|
+
animation: animation,
|
|
86
|
+
children: headingElement
|
|
87
|
+
});
|
|
88
|
+
}
|
|
70
89
|
};
|
|
90
|
+
|
|
71
91
|
//# sourceMappingURL=Heading.js.map
|