@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorPickerControl.js","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/ColorPickerControl.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/fields/richtext/controls/ColorPickerControl.tsx"],"sourcesContent":["'use client'\n\n/**\n * ColorPickerControl - Text color control for Puck RichText toolbar\n *\n * A dropdown color picker with:\n * - Native color input\n * - Hex input with validation\n * - Opacity slider (RGBA support)\n * - Theme color presets\n * - \"Theme Color (Auto)\" option for dark/light mode adaptation\n */\n\nimport React, { useState, useCallback, type CSSProperties } from 'react'\nimport { Palette, ChevronDown } from 'lucide-react'\nimport { useTheme } from '../../../theme/index.js'\nimport { parseColor, normalizeHex, hexToRgba, controlStyles } from './shared.js'\nimport { Dropdown } from './DropdownPortal.js'\nimport type { Editor } from '@tiptap/react'\n\ninterface ColorPickerControlProps {\n editor: Editor\n currentColor: string | undefined\n}\n\nexport function ColorPickerControl({ editor, currentColor }: ColorPickerControlProps) {\n const [isOpen, setIsOpen] = useState(false)\n\n const handleColorChange = useCallback(\n (color: string | null) => {\n if (color) {\n editor.chain().focus().setColor(color).run()\n } else {\n editor.chain().focus().unsetColor().run()\n }\n },\n [editor]\n )\n\n const close = useCallback(() => setIsOpen(false), [])\n\n const hasColor = Boolean(currentColor)\n\n const trigger = (\n <button\n type=\"button\"\n title=\"Text Color\"\n style={{\n ...controlStyles.dropdownTrigger,\n ...(hasColor ? controlStyles.dropdownTriggerActive : {}),\n }}\n >\n <Palette style={controlStyles.icon} />\n <ChevronDown style={{ width: '12px', height: '12px' }} />\n {/* Color indicator */}\n {currentColor && (\n <span\n style={{\n position: 'absolute',\n bottom: '2px',\n left: '50%',\n transform: 'translateX(-50%)',\n width: '12px',\n height: '3px',\n borderRadius: '1px',\n backgroundColor: currentColor,\n }}\n />\n )}\n </button>\n )\n\n return (\n <div style={{ position: 'relative' }}>\n <Dropdown isOpen={isOpen} onOpenChange={setIsOpen} trigger={trigger} minWidth={260}>\n <ColorPickerPanel\n currentColor={currentColor}\n onColorChange={handleColorChange}\n onClose={close}\n mode=\"text\"\n />\n </Dropdown>\n </div>\n )\n}\n\n// =============================================================================\n// Color Picker Panel (shared between text and highlight)\n// =============================================================================\n\ninterface ColorPickerPanelProps {\n currentColor: string | undefined\n onColorChange: (color: string | null) => void\n onClose: () => void\n mode: 'text' | 'highlight'\n showOpacity?: boolean\n}\n\nexport function ColorPickerPanel({\n currentColor,\n onColorChange,\n onClose,\n mode,\n showOpacity = true,\n}: ColorPickerPanelProps) {\n const theme = useTheme()\n const presets = theme.colorPresets\n const parsed = parseColor(currentColor)\n\n const [hex, setHex] = useState(parsed.hex)\n const [hexInput, setHexInput] = useState(parsed.hex)\n const [opacity, setOpacity] = useState(parsed.opacity)\n const [hoverTheme, setHoverTheme] = useState(false)\n\n // Apply color (converts to rgba if opacity < 100)\n const applyColor = useCallback(\n (h: string, o: number) => {\n if (o < 100) {\n onColorChange(hexToRgba(h, o))\n } else {\n onColorChange(h)\n }\n },\n [onColorChange]\n )\n\n const handleColorInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const newHex = e.target.value\n setHex(newHex)\n setHexInput(newHex)\n applyColor(newHex, opacity)\n },\n [opacity, applyColor]\n )\n\n const handleHexInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const input = e.target.value\n setHexInput(input)\n const normalized = normalizeHex(input)\n if (normalized) {\n setHex(normalized)\n applyColor(normalized, opacity)\n }\n },\n [opacity, applyColor]\n )\n\n const handleHexInputBlur = useCallback(() => {\n setHexInput(hex)\n }, [hex])\n\n const handleOpacityChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const newOpacity = parseInt(e.target.value, 10)\n setOpacity(newOpacity)\n applyColor(hex, newOpacity)\n },\n [hex, applyColor]\n )\n\n const handlePresetClick = useCallback(\n (preset: { hex: string; label: string }) => {\n setHex(preset.hex)\n setHexInput(preset.hex)\n setOpacity(100)\n applyColor(preset.hex, 100)\n onClose()\n },\n [applyColor, onClose]\n )\n\n const handleClearColor = useCallback(() => {\n onColorChange(null)\n onClose()\n }, [onColorChange, onClose])\n\n const previewColor = hexToRgba(hex, opacity)\n\n return (\n <div style={controlStyles.colorPickerContainer as CSSProperties}>\n {/* Theme/Auto color option */}\n <button\n type=\"button\"\n onClick={handleClearColor}\n onMouseEnter={() => setHoverTheme(true)}\n onMouseLeave={() => setHoverTheme(false)}\n style={{\n ...controlStyles.colorPickerThemeButton,\n ...(hoverTheme ? { backgroundColor: 'var(--puck-color-grey-01)' } : {}),\n }}\n >\n <span style={controlStyles.colorPickerThemeSwatch} />\n {mode === 'text' ? 'Theme Color (Auto)' : 'Remove Highlight'}\n </button>\n\n {/* Color picker row: native picker + hex input + preview */}\n <div style={controlStyles.colorPickerRow}>\n <input\n type=\"color\"\n value={hex}\n onChange={handleColorInputChange}\n style={controlStyles.colorPickerInput}\n title=\"Pick a color\"\n />\n <input\n type=\"text\"\n value={hexInput}\n onChange={handleHexInputChange}\n onBlur={handleHexInputBlur}\n placeholder=\"#000000\"\n style={controlStyles.colorPickerHexInput}\n />\n <div\n style={controlStyles.colorPickerPreview as CSSProperties}\n title={`${hex} at ${opacity}% opacity`}\n >\n <div style={controlStyles.colorPickerCheckerboard as CSSProperties} />\n <div\n style={{ ...(controlStyles.colorPickerOverlay as CSSProperties), backgroundColor: previewColor }}\n />\n </div>\n </div>\n\n {/* Opacity slider */}\n {showOpacity && (\n <div style={controlStyles.colorPickerOpacitySection as CSSProperties}>\n <div style={controlStyles.colorPickerOpacityHeader}>\n <label style={controlStyles.colorPickerOpacityLabel}>Opacity</label>\n <span style={controlStyles.colorPickerOpacityValue}>{opacity}%</span>\n </div>\n <div style={controlStyles.colorPickerOpacitySlider as CSSProperties}>\n <div style={controlStyles.colorPickerCheckerboard as CSSProperties} />\n <div\n style={{\n ...(controlStyles.colorPickerOverlay as CSSProperties),\n background: `linear-gradient(to right, transparent 0%, ${hex} 100%)`,\n }}\n />\n <input\n type=\"range\"\n min=\"0\"\n max=\"100\"\n value={opacity}\n onChange={handleOpacityChange}\n style={controlStyles.colorPickerOpacityInputRange as CSSProperties}\n />\n <div\n style={{\n ...(controlStyles.colorPickerOpacityThumb as CSSProperties),\n left: `calc(${opacity}% - 2px)`,\n }}\n />\n </div>\n </div>\n )}\n\n {/* Preset swatches */}\n {presets.length > 0 && (\n <div>\n <div style={controlStyles.colorPickerPresetsLabel}>Presets</div>\n <div style={controlStyles.colorPickerPresetsGrid as CSSProperties}>\n {presets.map((preset) => {\n const isSelected = hex.toLowerCase() === preset.hex.toLowerCase()\n return (\n <button\n key={preset.hex}\n type=\"button\"\n onClick={() => handlePresetClick(preset)}\n style={{\n ...(isSelected\n ? controlStyles.colorPickerPresetButtonSelected\n : controlStyles.colorPickerPresetButton),\n backgroundColor: preset.hex,\n }}\n title={preset.label}\n />\n )\n })}\n </div>\n </div>\n )}\n </div>\n )\n}\n"],"names":["React","useState","useCallback","Palette","ChevronDown","useTheme","parseColor","normalizeHex","hexToRgba","controlStyles","Dropdown","ColorPickerControl","editor","currentColor","isOpen","setIsOpen","handleColorChange","color","chain","focus","setColor","run","unsetColor","close","hasColor","Boolean","trigger","button","type","title","style","dropdownTrigger","dropdownTriggerActive","icon","width","height","span","position","bottom","left","transform","borderRadius","backgroundColor","div","onOpenChange","minWidth","ColorPickerPanel","onColorChange","onClose","mode","showOpacity","theme","presets","colorPresets","parsed","hex","setHex","hexInput","setHexInput","opacity","setOpacity","hoverTheme","setHoverTheme","applyColor","h","o","handleColorInputChange","e","newHex","target","value","handleHexInputChange","input","normalized","handleHexInputBlur","handleOpacityChange","newOpacity","parseInt","handlePresetClick","preset","handleClearColor","previewColor","colorPickerContainer","onClick","onMouseEnter","onMouseLeave","colorPickerThemeButton","colorPickerThemeSwatch","colorPickerRow","onChange","colorPickerInput","onBlur","placeholder","colorPickerHexInput","colorPickerPreview","colorPickerCheckerboard","colorPickerOverlay","colorPickerOpacitySection","colorPickerOpacityHeader","label","colorPickerOpacityLabel","colorPickerOpacityValue","colorPickerOpacitySlider","background","min","max","colorPickerOpacityInputRange","colorPickerOpacityThumb","length","colorPickerPresetsLabel","colorPickerPresetsGrid","map","isSelected","toLowerCase","colorPickerPresetButtonSelected","colorPickerPresetButton"],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* causes the editor to blur, clearing currentRichText state and breaking all menu
|
|
12
12
|
* controls (including native Puck ones like HeadingSelect).
|
|
13
13
|
*/
|
|
14
|
-
import { type ReactNode } from 'react';
|
|
14
|
+
import React, { type ReactNode } from 'react';
|
|
15
15
|
interface DropdownProps {
|
|
16
16
|
isOpen: boolean;
|
|
17
17
|
onOpenChange: (open: boolean) => void;
|
|
@@ -19,6 +19,6 @@ interface DropdownProps {
|
|
|
19
19
|
children: ReactNode;
|
|
20
20
|
minWidth?: number;
|
|
21
21
|
}
|
|
22
|
-
export declare function Dropdown({ isOpen, onOpenChange, trigger, children, minWidth }: DropdownProps):
|
|
22
|
+
export declare function Dropdown({ isOpen, onOpenChange, trigger, children, minWidth }: DropdownProps): React.JSX.Element;
|
|
23
23
|
export { Dropdown as DropdownPortal };
|
|
24
24
|
//# sourceMappingURL=DropdownPortal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownPortal.d.ts","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/DropdownPortal.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,
|
|
1
|
+
{"version":3,"file":"DropdownPortal.d.ts","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/DropdownPortal.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAQ7C,UAAU,aAAa;IACrB,MAAM,EAAE,OAAO,CAAA;IACf,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,OAAO,EAAE,SAAS,CAAA;IAClB,QAAQ,EAAE,SAAS,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,QAAQ,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAc,EAAE,EAAE,aAAa,qBAuBlG;AAGD,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,CAAA"}
|
|
@@ -1,16 +1,48 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Dropdown - Renders dropdown content using Radix Popover for proper focus management
|
|
5
|
+
*
|
|
6
|
+
* Uses @radix-ui/react-popover which provides:
|
|
7
|
+
* - Proper focus management that integrates with Puck's dirty state tracking
|
|
8
|
+
* - Automatic close on escape and click outside
|
|
9
|
+
* - Focus restoration to trigger element on close
|
|
10
|
+
*
|
|
11
|
+
* IMPORTANT: Uses data-puck-rte-menu attribute so Puck's blur handler recognizes
|
|
12
|
+
* this dropdown as part of the rich text menu. Without this, clicking the dropdown
|
|
13
|
+
* causes the editor to blur, clearing currentRichText state and breaking all menu
|
|
14
|
+
* controls (including native Puck ones like HeadingSelect).
|
|
15
|
+
*/ import React from 'react';
|
|
16
|
+
import { Root as PopoverRoot, Trigger as PopoverTrigger, Portal as PopoverPortal, Content as PopoverContent } from '@radix-ui/react-popover';
|
|
4
17
|
export function Dropdown({ isOpen, onOpenChange, trigger, children, minWidth = 160 }) {
|
|
5
|
-
return
|
|
18
|
+
return /*#__PURE__*/ _jsxs(PopoverRoot, {
|
|
19
|
+
open: isOpen,
|
|
20
|
+
onOpenChange: onOpenChange,
|
|
21
|
+
children: [
|
|
22
|
+
/*#__PURE__*/ _jsx(PopoverTrigger, {
|
|
23
|
+
asChild: true,
|
|
24
|
+
children: trigger
|
|
25
|
+
}),
|
|
26
|
+
/*#__PURE__*/ _jsx(PopoverPortal, {
|
|
27
|
+
children: /*#__PURE__*/ _jsx(PopoverContent, {
|
|
28
|
+
align: "start",
|
|
29
|
+
sideOffset: 4,
|
|
30
|
+
style: {
|
|
6
31
|
backgroundColor: 'var(--puck-color-white)',
|
|
7
32
|
border: '1px solid var(--puck-color-grey-09)',
|
|
8
33
|
borderRadius: '8px',
|
|
9
34
|
boxShadow: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',
|
|
10
35
|
zIndex: 99999,
|
|
11
|
-
minWidth
|
|
12
|
-
},
|
|
36
|
+
minWidth
|
|
37
|
+
},
|
|
38
|
+
"data-puck-rte-menu": true,
|
|
39
|
+
children: children
|
|
40
|
+
})
|
|
41
|
+
})
|
|
42
|
+
]
|
|
43
|
+
});
|
|
13
44
|
}
|
|
14
45
|
// Keep the old export name for backwards compatibility during migration
|
|
15
46
|
export { Dropdown as DropdownPortal };
|
|
47
|
+
|
|
16
48
|
//# sourceMappingURL=DropdownPortal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../../src/fields/richtext/controls/DropdownPortal.tsx"],"sourcesContent":["'use client'\n\n/**\n * Dropdown - Renders dropdown content using Radix Popover for proper focus management\n *\n * Uses @radix-ui/react-popover which provides:\n * - Proper focus management that integrates with Puck's dirty state tracking\n * - Automatic close on escape and click outside\n * - Focus restoration to trigger element on close\n *\n * IMPORTANT: Uses data-puck-rte-menu attribute so Puck's blur handler recognizes\n * this dropdown as part of the rich text menu. Without this, clicking the dropdown\n * causes the editor to blur, clearing currentRichText state and breaking all menu\n * controls (including native Puck ones like HeadingSelect).\n */\n\nimport React, { type ReactNode } from 'react'\nimport {\n Root as PopoverRoot,\n Trigger as PopoverTrigger,\n Portal as PopoverPortal,\n Content as PopoverContent,\n} from '@radix-ui/react-popover'\n\ninterface DropdownProps {\n isOpen: boolean\n onOpenChange: (open: boolean) => void\n trigger: ReactNode\n children: ReactNode\n minWidth?: number\n}\n\nexport function Dropdown({ isOpen, onOpenChange, trigger, children, minWidth = 160 }: DropdownProps) {\n return (\n <PopoverRoot open={isOpen} onOpenChange={onOpenChange}>\n <PopoverTrigger asChild>{trigger}</PopoverTrigger>\n <PopoverPortal>\n <PopoverContent\n align=\"start\"\n sideOffset={4}\n style={{\n backgroundColor: 'var(--puck-color-white)',\n border: '1px solid var(--puck-color-grey-09)',\n borderRadius: '8px',\n boxShadow: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\n zIndex: 99999,\n minWidth,\n }}\n data-puck-rte-menu\n >\n {children}\n </PopoverContent>\n </PopoverPortal>\n </PopoverRoot>\n )\n}\n\n// Keep the old export name for backwards compatibility during migration\nexport { Dropdown as DropdownPortal }\n"],"names":["React","Root","PopoverRoot","Trigger","PopoverTrigger","Portal","PopoverPortal","Content","PopoverContent","Dropdown","isOpen","onOpenChange","trigger","children","minWidth","open","asChild","align","sideOffset","style","backgroundColor","border","borderRadius","boxShadow","zIndex","data-puck-rte-menu","DropdownPortal"],"mappings":"AAAA;;AAEA;;;;;;;;;;;;CAYC,GAED,OAAOA,WAA+B,QAAO;AAC7C,SACEC,QAAQC,WAAW,EACnBC,WAAWC,cAAc,EACzBC,UAAUC,aAAa,EACvBC,WAAWC,cAAc,QACpB,0BAAyB;AAUhC,OAAO,SAASC,SAAS,EAAEC,MAAM,EAAEC,YAAY,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,WAAW,GAAG,EAAiB;IACjG,qBACE,MAACZ;QAAYa,MAAML;QAAQC,cAAcA;;0BACvC,KAACP;gBAAeY,OAAO;0BAAEJ;;0BACzB,KAACN;0BACC,cAAA,KAACE;oBACCS,OAAM;oBACNC,YAAY;oBACZC,OAAO;wBACLC,iBAAiB;wBACjBC,QAAQ;wBACRC,cAAc;wBACdC,WAAW;wBACXC,QAAQ;wBACRV;oBACF;oBACAW,oBAAkB;8BAEjBZ;;;;;AAKX;AAEA,wEAAwE;AACxE,SAASJ,YAAYiB,cAAc,GAAE"}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FontSizeControl - Font size control for Puck RichText toolbar
|
|
3
|
+
*
|
|
4
|
+
* A dropdown with:
|
|
5
|
+
* - 9 preset sizes (XS to 4XL)
|
|
6
|
+
* - Custom size input with px/rem/em unit selection
|
|
7
|
+
*/
|
|
8
|
+
import React from 'react';
|
|
1
9
|
import type { Editor } from '@tiptap/react';
|
|
2
10
|
interface FontSizeControlProps {
|
|
3
11
|
editor: Editor;
|
|
4
12
|
currentSize: string | undefined;
|
|
5
13
|
}
|
|
6
|
-
export declare function FontSizeControl({ editor, currentSize }: FontSizeControlProps):
|
|
14
|
+
export declare function FontSizeControl({ editor, currentSize }: FontSizeControlProps): React.JSX.Element;
|
|
7
15
|
export {};
|
|
8
16
|
//# sourceMappingURL=FontSizeControl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FontSizeControl.d.ts","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/FontSizeControl.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FontSizeControl.d.ts","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/FontSizeControl.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,KAAoD,MAAM,OAAO,CAAA;AAIxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAE3C,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;CAChC;AAED,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,oBAAoB,qBA6H5E"}
|
|
@@ -6,56 +6,141 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
6
6
|
* A dropdown with:
|
|
7
7
|
* - 9 preset sizes (XS to 4XL)
|
|
8
8
|
* - Custom size input with px/rem/em unit selection
|
|
9
|
-
*/
|
|
10
|
-
import { useState, useCallback } from 'react';
|
|
9
|
+
*/ import React, { useState, useCallback } from 'react';
|
|
11
10
|
import { ALargeSmall, ChevronDown } from 'lucide-react';
|
|
12
|
-
import { FONT_SIZES, FONT_SIZE_UNITS, controlStyles } from './shared';
|
|
13
|
-
import { Dropdown } from './DropdownPortal';
|
|
11
|
+
import { FONT_SIZES, FONT_SIZE_UNITS, controlStyles } from './shared.js';
|
|
12
|
+
import { Dropdown } from './DropdownPortal.js';
|
|
14
13
|
export function FontSizeControl({ editor, currentSize }) {
|
|
15
14
|
const [isOpen, setIsOpen] = useState(false);
|
|
16
15
|
const [customValue, setCustomValue] = useState('');
|
|
17
16
|
const [customUnit, setCustomUnit] = useState('px');
|
|
18
|
-
const handlePresetClick = useCallback((value)
|
|
17
|
+
const handlePresetClick = useCallback((value)=>{
|
|
19
18
|
if (value) {
|
|
20
19
|
editor.chain().focus().setFontSize(value).run();
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
20
|
+
} else {
|
|
23
21
|
editor.chain().focus().unsetFontSize().run();
|
|
24
22
|
}
|
|
25
23
|
setIsOpen(false);
|
|
26
|
-
}, [
|
|
27
|
-
|
|
24
|
+
}, [
|
|
25
|
+
editor
|
|
26
|
+
]);
|
|
27
|
+
const handleCustomApply = useCallback(()=>{
|
|
28
28
|
if (customValue) {
|
|
29
29
|
const size = `${customValue}${customUnit}`;
|
|
30
30
|
editor.chain().focus().setFontSize(size).run();
|
|
31
31
|
setIsOpen(false);
|
|
32
32
|
setCustomValue('');
|
|
33
33
|
}
|
|
34
|
-
}, [
|
|
35
|
-
|
|
34
|
+
}, [
|
|
35
|
+
editor,
|
|
36
|
+
customValue,
|
|
37
|
+
customUnit
|
|
38
|
+
]);
|
|
39
|
+
const handleCustomKeyDown = useCallback((e)=>{
|
|
36
40
|
if (e.key === 'Enter') {
|
|
37
41
|
e.preventDefault();
|
|
38
42
|
handleCustomApply();
|
|
39
43
|
}
|
|
40
|
-
}, [
|
|
44
|
+
}, [
|
|
45
|
+
handleCustomApply
|
|
46
|
+
]);
|
|
41
47
|
// Find current preset label if any
|
|
42
|
-
const currentPreset = FONT_SIZES.find((s)
|
|
48
|
+
const currentPreset = FONT_SIZES.find((s)=>s.value === currentSize);
|
|
43
49
|
const hasCustomSize = currentSize && !currentPreset;
|
|
44
|
-
const trigger =
|
|
50
|
+
const trigger = /*#__PURE__*/ _jsxs("button", {
|
|
51
|
+
type: "button",
|
|
52
|
+
title: "Font Size",
|
|
53
|
+
style: {
|
|
45
54
|
...controlStyles.dropdownTrigger,
|
|
46
|
-
...
|
|
47
|
-
},
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
55
|
+
...currentSize ? controlStyles.dropdownTriggerActive : {}
|
|
56
|
+
},
|
|
57
|
+
children: [
|
|
58
|
+
/*#__PURE__*/ _jsx(ALargeSmall, {
|
|
59
|
+
style: controlStyles.icon
|
|
60
|
+
}),
|
|
61
|
+
/*#__PURE__*/ _jsx(ChevronDown, {
|
|
62
|
+
style: {
|
|
63
|
+
width: '12px',
|
|
64
|
+
height: '12px'
|
|
65
|
+
}
|
|
66
|
+
})
|
|
67
|
+
]
|
|
68
|
+
});
|
|
69
|
+
return /*#__PURE__*/ _jsx("div", {
|
|
70
|
+
style: {
|
|
71
|
+
position: 'relative'
|
|
72
|
+
},
|
|
73
|
+
children: /*#__PURE__*/ _jsxs(Dropdown, {
|
|
74
|
+
isOpen: isOpen,
|
|
75
|
+
onOpenChange: setIsOpen,
|
|
76
|
+
trigger: trigger,
|
|
77
|
+
minWidth: 200,
|
|
78
|
+
children: [
|
|
79
|
+
/*#__PURE__*/ _jsx("div", {
|
|
80
|
+
style: controlStyles.dropdownLabel,
|
|
81
|
+
children: "Presets"
|
|
82
|
+
}),
|
|
83
|
+
/*#__PURE__*/ _jsx("div", {
|
|
84
|
+
style: controlStyles.fontSizeGrid,
|
|
85
|
+
children: FONT_SIZES.map((size)=>{
|
|
86
|
+
const isActive = size.value === currentSize || !size.value && !currentSize;
|
|
87
|
+
return /*#__PURE__*/ _jsx("button", {
|
|
88
|
+
type: "button",
|
|
89
|
+
onClick: ()=>handlePresetClick(size.value),
|
|
90
|
+
title: size.px,
|
|
91
|
+
style: {
|
|
51
92
|
...controlStyles.fontSizeButton,
|
|
52
|
-
...
|
|
53
|
-
},
|
|
54
|
-
|
|
93
|
+
...isActive ? controlStyles.fontSizeButtonActive : {}
|
|
94
|
+
},
|
|
95
|
+
children: size.label
|
|
96
|
+
}, size.label);
|
|
97
|
+
})
|
|
98
|
+
}),
|
|
99
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
100
|
+
style: controlStyles.customSizeRow,
|
|
101
|
+
children: [
|
|
102
|
+
/*#__PURE__*/ _jsx("input", {
|
|
103
|
+
type: "number",
|
|
104
|
+
placeholder: "16",
|
|
105
|
+
min: "8",
|
|
106
|
+
max: "200",
|
|
107
|
+
value: customValue,
|
|
108
|
+
onChange: (e)=>setCustomValue(e.target.value),
|
|
109
|
+
onKeyDown: handleCustomKeyDown,
|
|
110
|
+
style: controlStyles.customSizeInput
|
|
111
|
+
}),
|
|
112
|
+
/*#__PURE__*/ _jsx("select", {
|
|
113
|
+
value: customUnit,
|
|
114
|
+
onChange: (e)=>setCustomUnit(e.target.value),
|
|
115
|
+
style: controlStyles.customSizeSelect,
|
|
116
|
+
children: FONT_SIZE_UNITS.map((unit)=>/*#__PURE__*/ _jsx("option", {
|
|
117
|
+
value: unit,
|
|
118
|
+
children: unit
|
|
119
|
+
}, unit))
|
|
120
|
+
}),
|
|
121
|
+
/*#__PURE__*/ _jsx("button", {
|
|
122
|
+
type: "button",
|
|
123
|
+
onClick: handleCustomApply,
|
|
124
|
+
style: controlStyles.customSizeApply,
|
|
125
|
+
children: "Apply"
|
|
126
|
+
})
|
|
127
|
+
]
|
|
128
|
+
}),
|
|
129
|
+
hasCustomSize && /*#__PURE__*/ _jsxs("div", {
|
|
130
|
+
style: {
|
|
55
131
|
padding: '8px 12px',
|
|
56
132
|
fontSize: '12px',
|
|
57
133
|
color: 'var(--puck-color-grey-05)',
|
|
58
|
-
borderTop: '1px solid var(--puck-color-grey-03)'
|
|
59
|
-
},
|
|
134
|
+
borderTop: '1px solid var(--puck-color-grey-03)'
|
|
135
|
+
},
|
|
136
|
+
children: [
|
|
137
|
+
"Current: ",
|
|
138
|
+
currentSize
|
|
139
|
+
]
|
|
140
|
+
})
|
|
141
|
+
]
|
|
142
|
+
})
|
|
143
|
+
});
|
|
60
144
|
}
|
|
145
|
+
|
|
61
146
|
//# sourceMappingURL=FontSizeControl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../../src/fields/richtext/controls/FontSizeControl.tsx"],"sourcesContent":["'use client'\n\n/**\n * FontSizeControl - Font size control for Puck RichText toolbar\n *\n * A dropdown with:\n * - 9 preset sizes (XS to 4XL)\n * - Custom size input with px/rem/em unit selection\n */\n\nimport React, { useState, useCallback, type CSSProperties } from 'react'\nimport { ALargeSmall, ChevronDown } from 'lucide-react'\nimport { FONT_SIZES, FONT_SIZE_UNITS, controlStyles } from './shared.js'\nimport { Dropdown } from './DropdownPortal.js'\nimport type { Editor } from '@tiptap/react'\n\ninterface FontSizeControlProps {\n editor: Editor\n currentSize: string | undefined\n}\n\nexport function FontSizeControl({ editor, currentSize }: FontSizeControlProps) {\n const [isOpen, setIsOpen] = useState(false)\n const [customValue, setCustomValue] = useState('')\n const [customUnit, setCustomUnit] = useState<'px' | 'rem' | 'em'>('px')\n\n const handlePresetClick = useCallback(\n (value: string | null) => {\n if (value) {\n editor.chain().focus().setFontSize(value).run()\n } else {\n editor.chain().focus().unsetFontSize().run()\n }\n setIsOpen(false)\n },\n [editor]\n )\n\n const handleCustomApply = useCallback(() => {\n if (customValue) {\n const size = `${customValue}${customUnit}`\n editor.chain().focus().setFontSize(size).run()\n setIsOpen(false)\n setCustomValue('')\n }\n }, [editor, customValue, customUnit])\n\n const handleCustomKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n e.preventDefault()\n handleCustomApply()\n }\n },\n [handleCustomApply]\n )\n\n // Find current preset label if any\n const currentPreset = FONT_SIZES.find((s) => s.value === currentSize)\n const hasCustomSize = currentSize && !currentPreset\n\n const trigger = (\n <button\n type=\"button\"\n title=\"Font Size\"\n style={{\n ...controlStyles.dropdownTrigger,\n ...(currentSize ? controlStyles.dropdownTriggerActive : {}),\n }}\n >\n <ALargeSmall style={controlStyles.icon} />\n <ChevronDown style={{ width: '12px', height: '12px' }} />\n </button>\n )\n\n return (\n <div style={{ position: 'relative' }}>\n <Dropdown isOpen={isOpen} onOpenChange={setIsOpen} trigger={trigger} minWidth={200}>\n {/* Preset label */}\n <div style={controlStyles.dropdownLabel}>Presets</div>\n\n {/* Preset grid */}\n <div style={controlStyles.fontSizeGrid as CSSProperties}>\n {FONT_SIZES.map((size) => {\n const isActive = size.value === currentSize || (!size.value && !currentSize)\n return (\n <button\n key={size.label}\n type=\"button\"\n onClick={() => handlePresetClick(size.value)}\n title={size.px}\n style={{\n ...controlStyles.fontSizeButton,\n ...(isActive ? controlStyles.fontSizeButtonActive : {}),\n }}\n >\n {size.label}\n </button>\n )\n })}\n </div>\n\n {/* Custom size input */}\n <div style={controlStyles.customSizeRow as CSSProperties}>\n <input\n type=\"number\"\n placeholder=\"16\"\n min=\"8\"\n max=\"200\"\n value={customValue}\n onChange={(e) => setCustomValue(e.target.value)}\n onKeyDown={handleCustomKeyDown}\n style={controlStyles.customSizeInput}\n />\n <select\n value={customUnit}\n onChange={(e) => setCustomUnit(e.target.value as 'px' | 'rem' | 'em')}\n style={controlStyles.customSizeSelect}\n >\n {FONT_SIZE_UNITS.map((unit) => (\n <option key={unit} value={unit}>\n {unit}\n </option>\n ))}\n </select>\n <button type=\"button\" onClick={handleCustomApply} style={controlStyles.customSizeApply}>\n Apply\n </button>\n </div>\n\n {/* Show current custom size if any */}\n {hasCustomSize && (\n <div\n style={{\n padding: '8px 12px',\n fontSize: '12px',\n color: 'var(--puck-color-grey-05)',\n borderTop: '1px solid var(--puck-color-grey-03)',\n }}\n >\n Current: {currentSize}\n </div>\n )}\n </Dropdown>\n </div>\n )\n}\n"],"names":["React","useState","useCallback","ALargeSmall","ChevronDown","FONT_SIZES","FONT_SIZE_UNITS","controlStyles","Dropdown","FontSizeControl","editor","currentSize","isOpen","setIsOpen","customValue","setCustomValue","customUnit","setCustomUnit","handlePresetClick","value","chain","focus","setFontSize","run","unsetFontSize","handleCustomApply","size","handleCustomKeyDown","e","key","preventDefault","currentPreset","find","s","hasCustomSize","trigger","button","type","title","style","dropdownTrigger","dropdownTriggerActive","icon","width","height","div","position","onOpenChange","minWidth","dropdownLabel","fontSizeGrid","map","isActive","onClick","px","fontSizeButton","fontSizeButtonActive","label","customSizeRow","input","placeholder","min","max","onChange","target","onKeyDown","customSizeInput","select","customSizeSelect","unit","option","customSizeApply","padding","fontSize","color","borderTop"],"mappings":"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"}
|
|
@@ -1,9 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HighlightControl - Text highlight control for Puck RichText toolbar
|
|
3
|
+
*
|
|
4
|
+
* A dropdown color picker for text highlighting with:
|
|
5
|
+
* - Native color input
|
|
6
|
+
* - Hex input with validation
|
|
7
|
+
* - Opacity slider (RGBA support)
|
|
8
|
+
* - Theme color presets
|
|
9
|
+
* - Remove highlight option
|
|
10
|
+
*/
|
|
11
|
+
import React from 'react';
|
|
1
12
|
import type { Editor } from '@tiptap/react';
|
|
2
13
|
interface HighlightControlProps {
|
|
3
14
|
editor: Editor;
|
|
4
15
|
currentColor: string | undefined;
|
|
5
16
|
isActive: boolean;
|
|
6
17
|
}
|
|
7
|
-
export declare function HighlightControl({ editor, currentColor, isActive }: HighlightControlProps):
|
|
18
|
+
export declare function HighlightControl({ editor, currentColor, isActive }: HighlightControlProps): React.JSX.Element;
|
|
8
19
|
export {};
|
|
9
20
|
//# sourceMappingURL=HighlightControl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HighlightControl.d.ts","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/HighlightControl.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HighlightControl.d.ts","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/HighlightControl.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,OAAO,KAAgC,MAAM,OAAO,CAAA;AAKpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAE3C,UAAU,qBAAqB;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,qBAAqB,qBAyDzF"}
|
|
@@ -9,27 +9,44 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
9
9
|
* - Opacity slider (RGBA support)
|
|
10
10
|
* - Theme color presets
|
|
11
11
|
* - Remove highlight option
|
|
12
|
-
*/
|
|
13
|
-
import { useState, useCallback } from 'react';
|
|
12
|
+
*/ import React, { useState, useCallback } from 'react';
|
|
14
13
|
import { Highlighter, ChevronDown } from 'lucide-react';
|
|
15
|
-
import { controlStyles } from './shared';
|
|
16
|
-
import { ColorPickerPanel } from './ColorPickerControl';
|
|
17
|
-
import { Dropdown } from './DropdownPortal';
|
|
14
|
+
import { controlStyles } from './shared.js';
|
|
15
|
+
import { ColorPickerPanel } from './ColorPickerControl.js';
|
|
16
|
+
import { Dropdown } from './DropdownPortal.js';
|
|
18
17
|
export function HighlightControl({ editor, currentColor, isActive }) {
|
|
19
18
|
const [isOpen, setIsOpen] = useState(false);
|
|
20
|
-
const handleColorChange = useCallback((color)
|
|
19
|
+
const handleColorChange = useCallback((color)=>{
|
|
21
20
|
if (color) {
|
|
22
|
-
editor.chain().focus().setHighlight({
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
editor.chain().focus().setHighlight({
|
|
22
|
+
color
|
|
23
|
+
}).run();
|
|
24
|
+
} else {
|
|
25
25
|
editor.chain().focus().unsetHighlight().run();
|
|
26
26
|
}
|
|
27
|
-
}, [
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
}, [
|
|
28
|
+
editor
|
|
29
|
+
]);
|
|
30
|
+
const close = useCallback(()=>setIsOpen(false), []);
|
|
31
|
+
const trigger = /*#__PURE__*/ _jsxs("button", {
|
|
32
|
+
type: "button",
|
|
33
|
+
title: "Highlight",
|
|
34
|
+
style: {
|
|
30
35
|
...controlStyles.dropdownTrigger,
|
|
31
|
-
...
|
|
32
|
-
},
|
|
36
|
+
...isActive ? controlStyles.dropdownTriggerActive : {}
|
|
37
|
+
},
|
|
38
|
+
children: [
|
|
39
|
+
/*#__PURE__*/ _jsx(Highlighter, {
|
|
40
|
+
style: controlStyles.icon
|
|
41
|
+
}),
|
|
42
|
+
/*#__PURE__*/ _jsx(ChevronDown, {
|
|
43
|
+
style: {
|
|
44
|
+
width: '12px',
|
|
45
|
+
height: '12px'
|
|
46
|
+
}
|
|
47
|
+
}),
|
|
48
|
+
currentColor && /*#__PURE__*/ _jsx("span", {
|
|
49
|
+
style: {
|
|
33
50
|
position: 'absolute',
|
|
34
51
|
bottom: '2px',
|
|
35
52
|
left: '50%',
|
|
@@ -37,8 +54,28 @@ export function HighlightControl({ editor, currentColor, isActive }) {
|
|
|
37
54
|
width: '12px',
|
|
38
55
|
height: '3px',
|
|
39
56
|
borderRadius: '1px',
|
|
40
|
-
backgroundColor: currentColor
|
|
41
|
-
}
|
|
42
|
-
|
|
57
|
+
backgroundColor: currentColor
|
|
58
|
+
}
|
|
59
|
+
})
|
|
60
|
+
]
|
|
61
|
+
});
|
|
62
|
+
return /*#__PURE__*/ _jsx("div", {
|
|
63
|
+
style: {
|
|
64
|
+
position: 'relative'
|
|
65
|
+
},
|
|
66
|
+
children: /*#__PURE__*/ _jsx(Dropdown, {
|
|
67
|
+
isOpen: isOpen,
|
|
68
|
+
onOpenChange: setIsOpen,
|
|
69
|
+
trigger: trigger,
|
|
70
|
+
minWidth: 260,
|
|
71
|
+
children: /*#__PURE__*/ _jsx(ColorPickerPanel, {
|
|
72
|
+
currentColor: currentColor,
|
|
73
|
+
onColorChange: handleColorChange,
|
|
74
|
+
onClose: close,
|
|
75
|
+
mode: "highlight"
|
|
76
|
+
})
|
|
77
|
+
})
|
|
78
|
+
});
|
|
43
79
|
}
|
|
80
|
+
|
|
44
81
|
//# sourceMappingURL=HighlightControl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../../src/fields/richtext/controls/HighlightControl.tsx"],"sourcesContent":["'use client'\n\n/**\n * HighlightControl - Text highlight control for Puck RichText toolbar\n *\n * A dropdown color picker for text highlighting with:\n * - Native color input\n * - Hex input with validation\n * - Opacity slider (RGBA support)\n * - Theme color presets\n * - Remove highlight option\n */\n\nimport React, { useState, useCallback } from 'react'\nimport { Highlighter, ChevronDown } from 'lucide-react'\nimport { controlStyles } from './shared.js'\nimport { ColorPickerPanel } from './ColorPickerControl.js'\nimport { Dropdown } from './DropdownPortal.js'\nimport type { Editor } from '@tiptap/react'\n\ninterface HighlightControlProps {\n editor: Editor\n currentColor: string | undefined\n isActive: boolean\n}\n\nexport function HighlightControl({ editor, currentColor, isActive }: HighlightControlProps) {\n const [isOpen, setIsOpen] = useState(false)\n\n const handleColorChange = useCallback(\n (color: string | null) => {\n if (color) {\n editor.chain().focus().setHighlight({ color }).run()\n } else {\n editor.chain().focus().unsetHighlight().run()\n }\n },\n [editor]\n )\n\n const close = useCallback(() => setIsOpen(false), [])\n\n const trigger = (\n <button\n type=\"button\"\n title=\"Highlight\"\n style={{\n ...controlStyles.dropdownTrigger,\n ...(isActive ? controlStyles.dropdownTriggerActive : {}),\n }}\n >\n <Highlighter style={controlStyles.icon} />\n <ChevronDown style={{ width: '12px', height: '12px' }} />\n {/* Highlight color indicator */}\n {currentColor && (\n <span\n style={{\n position: 'absolute',\n bottom: '2px',\n left: '50%',\n transform: 'translateX(-50%)',\n width: '12px',\n height: '3px',\n borderRadius: '1px',\n backgroundColor: currentColor,\n }}\n />\n )}\n </button>\n )\n\n return (\n <div style={{ position: 'relative' }}>\n <Dropdown isOpen={isOpen} onOpenChange={setIsOpen} trigger={trigger} minWidth={260}>\n <ColorPickerPanel\n currentColor={currentColor}\n onColorChange={handleColorChange}\n onClose={close}\n mode=\"highlight\"\n />\n </Dropdown>\n </div>\n )\n}\n"],"names":["React","useState","useCallback","Highlighter","ChevronDown","controlStyles","ColorPickerPanel","Dropdown","HighlightControl","editor","currentColor","isActive","isOpen","setIsOpen","handleColorChange","color","chain","focus","setHighlight","run","unsetHighlight","close","trigger","button","type","title","style","dropdownTrigger","dropdownTriggerActive","icon","width","height","span","position","bottom","left","transform","borderRadius","backgroundColor","div","onOpenChange","minWidth","onColorChange","onClose","mode"],"mappings":"AAAA;;AAEA;;;;;;;;;CASC,GAED,OAAOA,SAASC,QAAQ,EAAEC,WAAW,QAAQ,QAAO;AACpD,SAASC,WAAW,EAAEC,WAAW,QAAQ,eAAc;AACvD,SAASC,aAAa,QAAQ,cAAa;AAC3C,SAASC,gBAAgB,QAAQ,0BAAyB;AAC1D,SAASC,QAAQ,QAAQ,sBAAqB;AAS9C,OAAO,SAASC,iBAAiB,EAAEC,MAAM,EAAEC,YAAY,EAAEC,QAAQ,EAAyB;IACxF,MAAM,CAACC,QAAQC,UAAU,GAAGZ,SAAS;IAErC,MAAMa,oBAAoBZ,YACxB,CAACa;QACC,IAAIA,OAAO;YACTN,OAAOO,KAAK,GAAGC,KAAK,GAAGC,YAAY,CAAC;gBAAEH;YAAM,GAAGI,GAAG;QACpD,OAAO;YACLV,OAAOO,KAAK,GAAGC,KAAK,GAAGG,cAAc,GAAGD,GAAG;QAC7C;IACF,GACA;QAACV;KAAO;IAGV,MAAMY,QAAQnB,YAAY,IAAMW,UAAU,QAAQ,EAAE;IAEpD,MAAMS,wBACJ,MAACC;QACCC,MAAK;QACLC,OAAM;QACNC,OAAO;YACL,GAAGrB,cAAcsB,eAAe;YAChC,GAAIhB,WAAWN,cAAcuB,qBAAqB,GAAG,CAAC,CAAC;QACzD;;0BAEA,KAACzB;gBAAYuB,OAAOrB,cAAcwB,IAAI;;0BACtC,KAACzB;gBAAYsB,OAAO;oBAAEI,OAAO;oBAAQC,QAAQ;gBAAO;;YAEnDrB,8BACC,KAACsB;gBACCN,OAAO;oBACLO,UAAU;oBACVC,QAAQ;oBACRC,MAAM;oBACNC,WAAW;oBACXN,OAAO;oBACPC,QAAQ;oBACRM,cAAc;oBACdC,iBAAiB5B;gBACnB;;;;IAMR,qBACE,KAAC6B;QAAIb,OAAO;YAAEO,UAAU;QAAW;kBACjC,cAAA,KAAC1B;YAASK,QAAQA;YAAQ4B,cAAc3B;YAAWS,SAASA;YAASmB,UAAU;sBAC7E,cAAA,KAACnC;gBACCI,cAAcA;gBACdgC,eAAe5B;gBACf6B,SAAStB;gBACTuB,MAAK;;;;AAKf"}
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Custom controls for Puck's native richtext field.
|
|
5
5
|
*/
|
|
6
|
-
export { ColorPickerControl, ColorPickerPanel } from './ColorPickerControl';
|
|
7
|
-
export { FontSizeControl } from './FontSizeControl';
|
|
8
|
-
export { HighlightControl } from './HighlightControl';
|
|
9
|
-
export { normalizeHex, hexToRgba, parseColor, FONT_SIZES, FONT_SIZE_UNITS, controlStyles, } from './shared';
|
|
10
|
-
export type { FontSizeUnit } from './shared';
|
|
6
|
+
export { ColorPickerControl, ColorPickerPanel } from './ColorPickerControl.js';
|
|
7
|
+
export { FontSizeControl } from './FontSizeControl.js';
|
|
8
|
+
export { HighlightControl } from './HighlightControl.js';
|
|
9
|
+
export { normalizeHex, hexToRgba, parseColor, FONT_SIZES, FONT_SIZE_UNITS, controlStyles, } from './shared.js';
|
|
10
|
+
export type { FontSizeUnit } from './shared.js';
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,EAEL,YAAY,EACZ,SAAS,EACT,UAAU,EAEV,UAAU,EACV,eAAe,EAEf,aAAa,GACd,MAAM,aAAa,CAAA;AAEpB,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -2,15 +2,12 @@
|
|
|
2
2
|
* RichText toolbar controls
|
|
3
3
|
*
|
|
4
4
|
* Custom controls for Puck's native richtext field.
|
|
5
|
-
*/
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
|
|
10
|
-
//
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
FONT_SIZES, FONT_SIZE_UNITS,
|
|
14
|
-
// Shared styles
|
|
15
|
-
controlStyles, } from './shared';
|
|
5
|
+
*/ export { ColorPickerControl, ColorPickerPanel } from './ColorPickerControl.js';
|
|
6
|
+
export { FontSizeControl } from './FontSizeControl.js';
|
|
7
|
+
export { HighlightControl } from './HighlightControl.js';
|
|
8
|
+
export { // Color utilities
|
|
9
|
+
normalizeHex, hexToRgba, parseColor, // Font size presets
|
|
10
|
+
FONT_SIZES, FONT_SIZE_UNITS, // Shared styles
|
|
11
|
+
controlStyles } from './shared.js';
|
|
12
|
+
|
|
16
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../../src/fields/richtext/controls/index.ts"],"sourcesContent":["/**\n * RichText toolbar controls\n *\n * Custom controls for Puck's native richtext field.\n */\n\nexport { ColorPickerControl, ColorPickerPanel } from './ColorPickerControl.js'\nexport { FontSizeControl } from './FontSizeControl.js'\nexport { HighlightControl } from './HighlightControl.js'\n\nexport {\n // Color utilities\n normalizeHex,\n hexToRgba,\n parseColor,\n // Font size presets\n FONT_SIZES,\n FONT_SIZE_UNITS,\n // Shared styles\n controlStyles,\n} from './shared.js'\n\nexport type { FontSizeUnit } from './shared.js'\n"],"names":["ColorPickerControl","ColorPickerPanel","FontSizeControl","HighlightControl","normalizeHex","hexToRgba","parseColor","FONT_SIZES","FONT_SIZE_UNITS","controlStyles"],"mappings":"AAAA;;;;CAIC,GAED,SAASA,kBAAkB,EAAEC,gBAAgB,QAAQ,0BAAyB;AAC9E,SAASC,eAAe,QAAQ,uBAAsB;AACtD,SAASC,gBAAgB,QAAQ,wBAAuB;AAExD,SACE,kBAAkB;AAClBC,YAAY,EACZC,SAAS,EACTC,UAAU,EACV,oBAAoB;AACpBC,UAAU,EACVC,eAAe,EACf,gBAAgB;AAChBC,aAAa,QACR,cAAa"}
|