@prenta/admin 0.98.1 → 1.1.0
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/CHANGELOG.md +12 -0
- package/dist/AdminRoot.d.ts.map +1 -1
- package/dist/AdminRoot.js +22 -84
- package/dist/AdminRoot.js.map +1 -1
- package/dist/__tests__/components/breakpoint-controls.render.test.js +4 -4
- package/dist/__tests__/components/breakpoint-controls.render.test.js.map +1 -1
- package/dist/__tests__/components/seo-score-bands.test.js +0 -3
- package/dist/__tests__/components/seo-score-bands.test.js.map +1 -1
- package/dist/__tests__/layout/sidebar-posts.test.js +6 -11
- package/dist/__tests__/layout/sidebar-posts.test.js.map +1 -1
- package/dist/__tests__/layout/sidebar-submenu.render.test.js +3 -2
- package/dist/__tests__/layout/sidebar-submenu.render.test.js.map +1 -1
- package/dist/__tests__/lib/open-public-site-tab.test.d.ts +2 -0
- package/dist/__tests__/lib/open-public-site-tab.test.d.ts.map +1 -0
- package/dist/__tests__/lib/open-public-site-tab.test.js +64 -0
- package/dist/__tests__/lib/open-public-site-tab.test.js.map +1 -0
- package/dist/__tests__/lib/page-editor-service-api.test.js +26 -23
- package/dist/__tests__/lib/page-editor-service-api.test.js.map +1 -1
- package/dist/__tests__/lib/view-site-chrome.test.d.ts +2 -0
- package/dist/__tests__/lib/view-site-chrome.test.d.ts.map +1 -0
- package/dist/__tests__/lib/view-site-chrome.test.js +59 -0
- package/dist/__tests__/lib/view-site-chrome.test.js.map +1 -0
- package/dist/__tests__/router/admin-routes.test.js +4 -0
- package/dist/__tests__/router/admin-routes.test.js.map +1 -1
- package/dist/__tests__/views/canvas-surface-shared.test.js +0 -16
- package/dist/__tests__/views/canvas-surface-shared.test.js.map +1 -1
- package/dist/__tests__/views/editor-top-bar.render.test.js +44 -22
- package/dist/__tests__/views/editor-top-bar.render.test.js.map +1 -1
- package/dist/__tests__/views/page-section-editor.test.js +30 -10
- package/dist/__tests__/views/page-section-editor.test.js.map +1 -1
- package/dist/__tests__/views/page-tab.render.test.js +0 -1
- package/dist/__tests__/views/page-tab.render.test.js.map +1 -1
- package/dist/__tests__/views/post-section-editor.test.js +23 -0
- package/dist/__tests__/views/post-section-editor.test.js.map +1 -1
- package/dist/components/BreakpointPicker.d.ts +3 -2
- package/dist/components/BreakpointPicker.d.ts.map +1 -1
- package/dist/components/BreakpointPicker.js +5 -3
- package/dist/components/BreakpointPicker.js.map +1 -1
- package/dist/components/CanvasEditTip.js +1 -1
- package/dist/components/CanvasEditTip.js.map +1 -1
- package/dist/index.d.ts +1 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/layout/Sidebar.d.ts +3 -4
- package/dist/layout/Sidebar.d.ts.map +1 -1
- package/dist/layout/Sidebar.js +7 -38
- package/dist/layout/Sidebar.js.map +1 -1
- package/dist/lib/editor-preview.d.ts +4 -1
- package/dist/lib/editor-preview.d.ts.map +1 -1
- package/dist/lib/editor-preview.js +4 -1
- package/dist/lib/editor-preview.js.map +1 -1
- package/dist/lib/open-public-site-tab.d.ts +14 -0
- package/dist/lib/open-public-site-tab.d.ts.map +1 -0
- package/dist/lib/open-public-site-tab.js +46 -0
- package/dist/lib/open-public-site-tab.js.map +1 -0
- package/dist/lib/page-editor-service.d.ts +0 -7
- package/dist/lib/page-editor-service.d.ts.map +1 -1
- package/dist/lib/page-editor-service.js +9 -9
- package/dist/lib/page-editor-service.js.map +1 -1
- package/dist/lib/view-site-chrome.d.ts +16 -0
- package/dist/lib/view-site-chrome.d.ts.map +1 -0
- package/dist/lib/view-site-chrome.js +15 -0
- package/dist/lib/view-site-chrome.js.map +1 -0
- package/dist/prenta-admin.css +1 -1
- package/dist/router/admin-routes.d.ts.map +1 -1
- package/dist/router/admin-routes.js +0 -2
- package/dist/router/admin-routes.js.map +1 -1
- package/dist/views/PageEditor.d.ts +2 -2
- package/dist/views/PageEditor.js +2 -2
- package/dist/views/page-editor/EditorCanvas.d.ts +1 -2
- package/dist/views/page-editor/EditorCanvas.d.ts.map +1 -1
- package/dist/views/page-editor/EditorCanvas.js +2 -2
- package/dist/views/page-editor/EditorCanvas.js.map +1 -1
- package/dist/views/page-editor/EditorTopBar.d.ts +13 -17
- package/dist/views/page-editor/EditorTopBar.d.ts.map +1 -1
- package/dist/views/page-editor/EditorTopBar.js +19 -21
- package/dist/views/page-editor/EditorTopBar.js.map +1 -1
- package/dist/views/page-editor/PageSectionEditor.d.ts +1 -7
- package/dist/views/page-editor/PageSectionEditor.d.ts.map +1 -1
- package/dist/views/page-editor/PageSectionEditor.js +38 -110
- package/dist/views/page-editor/PageSectionEditor.js.map +1 -1
- package/dist/views/page-editor/StructureNotice.d.ts +2 -5
- package/dist/views/page-editor/StructureNotice.d.ts.map +1 -1
- package/dist/views/page-editor/StructureNotice.js +6 -10
- package/dist/views/page-editor/StructureNotice.js.map +1 -1
- package/dist/views/post-editor/PostEditorCanvas.d.ts +1 -3
- package/dist/views/post-editor/PostEditorCanvas.d.ts.map +1 -1
- package/dist/views/post-editor/PostEditorCanvas.js +3 -3
- package/dist/views/post-editor/PostEditorCanvas.js.map +1 -1
- package/dist/views/post-editor/PostSectionEditor.d.ts +1 -15
- package/dist/views/post-editor/PostSectionEditor.d.ts.map +1 -1
- package/dist/views/post-editor/PostSectionEditor.js +30 -88
- package/dist/views/post-editor/PostSectionEditor.js.map +1 -1
- package/package.json +3 -3
- package/src/AdminRoot.tsx +18 -138
- package/src/__tests__/components/breakpoint-controls.render.test.tsx +6 -4
- package/src/__tests__/components/seo-score-bands.test.ts +0 -3
- package/src/__tests__/layout/sidebar-posts.test.ts +6 -11
- package/src/__tests__/layout/sidebar-submenu.render.test.tsx +3 -2
- package/src/__tests__/lib/open-public-site-tab.test.ts +74 -0
- package/src/__tests__/lib/page-editor-service-api.test.ts +27 -25
- package/src/__tests__/lib/view-site-chrome.test.ts +65 -0
- package/src/__tests__/router/admin-routes.test.ts +5 -0
- package/src/__tests__/views/canvas-surface-shared.test.ts +0 -19
- package/src/__tests__/views/editor-top-bar.render.test.tsx +85 -22
- package/src/__tests__/views/page-section-editor.test.tsx +42 -10
- package/src/__tests__/views/page-tab.render.test.tsx +0 -1
- package/src/__tests__/views/post-section-editor.test.tsx +35 -0
- package/src/components/BreakpointPicker.tsx +6 -3
- package/src/components/CanvasEditTip.tsx +2 -2
- package/src/index.ts +1 -11
- package/src/layout/Sidebar.tsx +6 -41
- package/src/lib/editor-preview.ts +4 -1
- package/src/lib/open-public-site-tab.ts +57 -0
- package/src/lib/page-editor-service.ts +9 -16
- package/src/lib/view-site-chrome.ts +34 -0
- package/src/router/admin-routes.ts +0 -2
- package/src/styles/theme.css +4 -4
- package/src/views/PageEditor.tsx +2 -2
- package/src/views/page-editor/EditorCanvas.tsx +1 -6
- package/src/views/page-editor/EditorTopBar.tsx +81 -82
- package/src/views/page-editor/PageSectionEditor.tsx +85 -194
- package/src/views/page-editor/StructureNotice.tsx +7 -42
- package/src/views/post-editor/PostEditorCanvas.tsx +2 -8
- package/src/views/post-editor/PostSectionEditor.tsx +66 -138
- package/dist/__tests__/views/page-builder-block-renderer.render.test.d.ts +0 -2
- package/dist/__tests__/views/page-builder-block-renderer.render.test.d.ts.map +0 -1
- package/dist/__tests__/views/page-builder-block-renderer.render.test.js +0 -48
- package/dist/__tests__/views/page-builder-block-renderer.render.test.js.map +0 -1
- package/dist/__tests__/views/page-builder-form-picker.render.test.d.ts +0 -2
- package/dist/__tests__/views/page-builder-form-picker.render.test.d.ts.map +0 -1
- package/dist/__tests__/views/page-builder-form-picker.render.test.js +0 -44
- package/dist/__tests__/views/page-builder-form-picker.render.test.js.map +0 -1
- package/dist/__tests__/views/page-builder-sections-panel.render.test.d.ts +0 -2
- package/dist/__tests__/views/page-builder-sections-panel.render.test.d.ts.map +0 -1
- package/dist/__tests__/views/page-builder-sections-panel.render.test.js +0 -121
- package/dist/__tests__/views/page-builder-sections-panel.render.test.js.map +0 -1
- package/dist/__tests__/views/page-builder-seo-panel.render.test.d.ts +0 -2
- package/dist/__tests__/views/page-builder-seo-panel.render.test.d.ts.map +0 -1
- package/dist/__tests__/views/page-builder-seo-panel.render.test.js +0 -65
- package/dist/__tests__/views/page-builder-seo-panel.render.test.js.map +0 -1
- package/dist/__tests__/views/page-builder-template-seed.render.test.d.ts +0 -2
- package/dist/__tests__/views/page-builder-template-seed.render.test.d.ts.map +0 -1
- package/dist/__tests__/views/page-builder-template-seed.render.test.js +0 -48
- package/dist/__tests__/views/page-builder-template-seed.render.test.js.map +0 -1
- package/dist/__tests__/views/page-templates.render.test.d.ts +0 -2
- package/dist/__tests__/views/page-templates.render.test.d.ts.map +0 -1
- package/dist/__tests__/views/page-templates.render.test.js +0 -126
- package/dist/__tests__/views/page-templates.render.test.js.map +0 -1
- package/dist/__tests__/views/use-site-preview.render.test.d.ts +0 -2
- package/dist/__tests__/views/use-site-preview.render.test.d.ts.map +0 -1
- package/dist/__tests__/views/use-site-preview.render.test.js +0 -120
- package/dist/__tests__/views/use-site-preview.render.test.js.map +0 -1
- package/dist/hooks/useBuilderState.d.ts +0 -49
- package/dist/hooks/useBuilderState.d.ts.map +0 -1
- package/dist/hooks/useBuilderState.js +0 -238
- package/dist/hooks/useBuilderState.js.map +0 -1
- package/dist/views/page-builder/AIBlockAssist.d.ts +0 -9
- package/dist/views/page-builder/AIBlockAssist.d.ts.map +0 -1
- package/dist/views/page-builder/AIBlockAssist.js +0 -40
- package/dist/views/page-builder/AIBlockAssist.js.map +0 -1
- package/dist/views/page-builder/AIGenerateDialog.d.ts +0 -8
- package/dist/views/page-builder/AIGenerateDialog.d.ts.map +0 -1
- package/dist/views/page-builder/AIGenerateDialog.js +0 -173
- package/dist/views/page-builder/AIGenerateDialog.js.map +0 -1
- package/dist/views/page-builder/BlockEditor.d.ts +0 -11
- package/dist/views/page-builder/BlockEditor.d.ts.map +0 -1
- package/dist/views/page-builder/BlockEditor.js +0 -159
- package/dist/views/page-builder/BlockEditor.js.map +0 -1
- package/dist/views/page-builder/BlockPicker.d.ts +0 -7
- package/dist/views/page-builder/BlockPicker.d.ts.map +0 -1
- package/dist/views/page-builder/BlockPicker.js +0 -103
- package/dist/views/page-builder/BlockPicker.js.map +0 -1
- package/dist/views/page-builder/BottomBar.d.ts +0 -9
- package/dist/views/page-builder/BottomBar.d.ts.map +0 -1
- package/dist/views/page-builder/BottomBar.js +0 -13
- package/dist/views/page-builder/BottomBar.js.map +0 -1
- package/dist/views/page-builder/BuilderSectionsPanel.d.ts +0 -20
- package/dist/views/page-builder/BuilderSectionsPanel.d.ts.map +0 -1
- package/dist/views/page-builder/BuilderSectionsPanel.js +0 -105
- package/dist/views/page-builder/BuilderSectionsPanel.js.map +0 -1
- package/dist/views/page-builder/BuilderToolbar.d.ts +0 -21
- package/dist/views/page-builder/BuilderToolbar.d.ts.map +0 -1
- package/dist/views/page-builder/BuilderToolbar.js +0 -18
- package/dist/views/page-builder/BuilderToolbar.js.map +0 -1
- package/dist/views/page-builder/ContextPanel.d.ts +0 -20
- package/dist/views/page-builder/ContextPanel.d.ts.map +0 -1
- package/dist/views/page-builder/ContextPanel.js +0 -43
- package/dist/views/page-builder/ContextPanel.js.map +0 -1
- package/dist/views/page-builder/DesignScore.d.ts +0 -6
- package/dist/views/page-builder/DesignScore.d.ts.map +0 -1
- package/dist/views/page-builder/DesignScore.js +0 -93
- package/dist/views/page-builder/DesignScore.js.map +0 -1
- package/dist/views/page-builder/NodeSettings.d.ts +0 -12
- package/dist/views/page-builder/NodeSettings.d.ts.map +0 -1
- package/dist/views/page-builder/NodeSettings.js +0 -80
- package/dist/views/page-builder/NodeSettings.js.map +0 -1
- package/dist/views/page-builder/PageBuilder.d.ts +0 -10
- package/dist/views/page-builder/PageBuilder.d.ts.map +0 -1
- package/dist/views/page-builder/PageBuilder.js +0 -222
- package/dist/views/page-builder/PageBuilder.js.map +0 -1
- package/dist/views/page-builder/PageSettings.d.ts +0 -7
- package/dist/views/page-builder/PageSettings.d.ts.map +0 -1
- package/dist/views/page-builder/PageSettings.js +0 -27
- package/dist/views/page-builder/PageSettings.js.map +0 -1
- package/dist/views/page-builder/PageTemplates.d.ts +0 -5
- package/dist/views/page-builder/PageTemplates.d.ts.map +0 -1
- package/dist/views/page-builder/PageTemplates.js +0 -146
- package/dist/views/page-builder/PageTemplates.js.map +0 -1
- package/dist/views/page-builder/RelationshipField.d.ts +0 -15
- package/dist/views/page-builder/RelationshipField.d.ts.map +0 -1
- package/dist/views/page-builder/RelationshipField.js +0 -65
- package/dist/views/page-builder/RelationshipField.js.map +0 -1
- package/dist/views/page-builder/SEOPanel.d.ts +0 -9
- package/dist/views/page-builder/SEOPanel.d.ts.map +0 -1
- package/dist/views/page-builder/SEOPanel.js +0 -38
- package/dist/views/page-builder/SEOPanel.js.map +0 -1
- package/dist/views/page-builder/SavedSections.d.ts +0 -6
- package/dist/views/page-builder/SavedSections.d.ts.map +0 -1
- package/dist/views/page-builder/SavedSections.js +0 -141
- package/dist/views/page-builder/SavedSections.js.map +0 -1
- package/dist/views/page-builder/TemplatePicker.d.ts +0 -7
- package/dist/views/page-builder/TemplatePicker.d.ts.map +0 -1
- package/dist/views/page-builder/TemplatePicker.js +0 -68
- package/dist/views/page-builder/TemplatePicker.js.map +0 -1
- package/dist/views/page-builder/Widgets.d.ts +0 -13
- package/dist/views/page-builder/Widgets.d.ts.map +0 -1
- package/dist/views/page-builder/Widgets.js +0 -15
- package/dist/views/page-builder/Widgets.js.map +0 -1
- package/dist/views/page-builder/block-renderers/CTAPreview.d.ts +0 -3
- package/dist/views/page-builder/block-renderers/CTAPreview.d.ts.map +0 -1
- package/dist/views/page-builder/block-renderers/CTAPreview.js +0 -19
- package/dist/views/page-builder/block-renderers/CTAPreview.js.map +0 -1
- package/dist/views/page-builder/block-renderers/CardsPreview.d.ts +0 -3
- package/dist/views/page-builder/block-renderers/CardsPreview.d.ts.map +0 -1
- package/dist/views/page-builder/block-renderers/CardsPreview.js +0 -22
- package/dist/views/page-builder/block-renderers/CardsPreview.js.map +0 -1
- package/dist/views/page-builder/block-renderers/CodePreview.d.ts +0 -3
- package/dist/views/page-builder/block-renderers/CodePreview.d.ts.map +0 -1
- package/dist/views/page-builder/block-renderers/CodePreview.js +0 -12
- package/dist/views/page-builder/block-renderers/CodePreview.js.map +0 -1
- package/dist/views/page-builder/block-renderers/FAQPreview.d.ts +0 -3
- package/dist/views/page-builder/block-renderers/FAQPreview.d.ts.map +0 -1
- package/dist/views/page-builder/block-renderers/FAQPreview.js +0 -27
- package/dist/views/page-builder/block-renderers/FAQPreview.js.map +0 -1
- package/dist/views/page-builder/block-renderers/FallbackPreview.d.ts +0 -6
- package/dist/views/page-builder/block-renderers/FallbackPreview.d.ts.map +0 -1
- package/dist/views/page-builder/block-renderers/FallbackPreview.js +0 -7
- package/dist/views/page-builder/block-renderers/FallbackPreview.js.map +0 -1
- package/dist/views/page-builder/block-renderers/FormPreview.d.ts +0 -9
- package/dist/views/page-builder/block-renderers/FormPreview.d.ts.map +0 -1
- package/dist/views/page-builder/block-renderers/FormPreview.js +0 -52
- package/dist/views/page-builder/block-renderers/FormPreview.js.map +0 -1
- package/dist/views/page-builder/block-renderers/GalleryPreview.d.ts +0 -3
- package/dist/views/page-builder/block-renderers/GalleryPreview.d.ts.map +0 -1
- package/dist/views/page-builder/block-renderers/GalleryPreview.js +0 -19
- package/dist/views/page-builder/block-renderers/GalleryPreview.js.map +0 -1
- package/dist/views/page-builder/block-renderers/HeroPreview.d.ts +0 -3
- package/dist/views/page-builder/block-renderers/HeroPreview.d.ts.map +0 -1
- package/dist/views/page-builder/block-renderers/HeroPreview.js +0 -19
- package/dist/views/page-builder/block-renderers/HeroPreview.js.map +0 -1
- package/dist/views/page-builder/block-renderers/ImagePreview.d.ts +0 -3
- package/dist/views/page-builder/block-renderers/ImagePreview.d.ts.map +0 -1
- package/dist/views/page-builder/block-renderers/ImagePreview.js +0 -17
- package/dist/views/page-builder/block-renderers/ImagePreview.js.map +0 -1
- package/dist/views/page-builder/block-renderers/TextPreview.d.ts +0 -3
- package/dist/views/page-builder/block-renderers/TextPreview.d.ts.map +0 -1
- package/dist/views/page-builder/block-renderers/TextPreview.js +0 -22
- package/dist/views/page-builder/block-renderers/TextPreview.js.map +0 -1
- package/dist/views/page-builder/block-renderers/VideoPreview.d.ts +0 -3
- package/dist/views/page-builder/block-renderers/VideoPreview.d.ts.map +0 -1
- package/dist/views/page-builder/block-renderers/VideoPreview.js +0 -18
- package/dist/views/page-builder/block-renderers/VideoPreview.js.map +0 -1
- package/dist/views/page-builder/block-renderers/index.d.ts +0 -9
- package/dist/views/page-builder/block-renderers/index.d.ts.map +0 -1
- package/dist/views/page-builder/block-renderers/index.js +0 -25
- package/dist/views/page-builder/block-renderers/index.js.map +0 -1
- package/dist/views/page-builder/canvas/BlockRenderer.d.ts +0 -8
- package/dist/views/page-builder/canvas/BlockRenderer.d.ts.map +0 -1
- package/dist/views/page-builder/canvas/BlockRenderer.js +0 -20
- package/dist/views/page-builder/canvas/BlockRenderer.js.map +0 -1
- package/dist/views/page-builder/canvas/BuilderCanvas.d.ts +0 -10
- package/dist/views/page-builder/canvas/BuilderCanvas.d.ts.map +0 -1
- package/dist/views/page-builder/canvas/BuilderCanvas.js +0 -26
- package/dist/views/page-builder/canvas/BuilderCanvas.js.map +0 -1
- package/dist/views/page-builder/canvas/ColumnRenderer.d.ts +0 -8
- package/dist/views/page-builder/canvas/ColumnRenderer.d.ts.map +0 -1
- package/dist/views/page-builder/canvas/ColumnRenderer.js +0 -32
- package/dist/views/page-builder/canvas/ColumnRenderer.js.map +0 -1
- package/dist/views/page-builder/canvas/ContainerRenderer.d.ts +0 -8
- package/dist/views/page-builder/canvas/ContainerRenderer.d.ts.map +0 -1
- package/dist/views/page-builder/canvas/ContainerRenderer.js +0 -29
- package/dist/views/page-builder/canvas/ContainerRenderer.js.map +0 -1
- package/dist/views/page-builder/canvas/RowRenderer.d.ts +0 -8
- package/dist/views/page-builder/canvas/RowRenderer.d.ts.map +0 -1
- package/dist/views/page-builder/canvas/RowRenderer.js +0 -28
- package/dist/views/page-builder/canvas/RowRenderer.js.map +0 -1
- package/dist/views/page-builder/canvas/SectionRenderer.d.ts +0 -8
- package/dist/views/page-builder/canvas/SectionRenderer.d.ts.map +0 -1
- package/dist/views/page-builder/canvas/SectionRenderer.js +0 -50
- package/dist/views/page-builder/canvas/SectionRenderer.js.map +0 -1
- package/dist/views/page-builder/canvas/index.d.ts +0 -3
- package/dist/views/page-builder/canvas/index.d.ts.map +0 -1
- package/dist/views/page-builder/canvas/index.js +0 -2
- package/dist/views/page-builder/canvas/index.js.map +0 -1
- package/dist/views/page-editor/PagePreview.d.ts +0 -13
- package/dist/views/page-editor/PagePreview.d.ts.map +0 -1
- package/dist/views/page-editor/PagePreview.js +0 -46
- package/dist/views/page-editor/PagePreview.js.map +0 -1
- package/dist/views/page-editor/SitePreviewFrame.d.ts +0 -43
- package/dist/views/page-editor/SitePreviewFrame.d.ts.map +0 -1
- package/dist/views/page-editor/SitePreviewFrame.js +0 -165
- package/dist/views/page-editor/SitePreviewFrame.js.map +0 -1
- package/dist/views/page-editor/useSitePreview.d.ts +0 -47
- package/dist/views/page-editor/useSitePreview.d.ts.map +0 -1
- package/dist/views/page-editor/useSitePreview.js +0 -96
- package/dist/views/page-editor/useSitePreview.js.map +0 -1
- package/dist/views/post-editor/PostPreview.d.ts +0 -14
- package/dist/views/post-editor/PostPreview.d.ts.map +0 -1
- package/dist/views/post-editor/PostPreview.js +0 -63
- package/dist/views/post-editor/PostPreview.js.map +0 -1
- package/src/__tests__/views/page-builder-block-renderer.render.test.tsx +0 -66
- package/src/__tests__/views/page-builder-form-picker.render.test.tsx +0 -54
- package/src/__tests__/views/page-builder-sections-panel.render.test.tsx +0 -138
- package/src/__tests__/views/page-builder-seo-panel.render.test.tsx +0 -77
- package/src/__tests__/views/page-builder-template-seed.render.test.tsx +0 -59
- package/src/__tests__/views/page-templates.render.test.tsx +0 -182
- package/src/__tests__/views/use-site-preview.render.test.tsx +0 -164
- package/src/hooks/useBuilderState.ts +0 -361
- package/src/views/page-builder/AIBlockAssist.tsx +0 -64
- package/src/views/page-builder/AIGenerateDialog.tsx +0 -593
- package/src/views/page-builder/BlockEditor.tsx +0 -523
- package/src/views/page-builder/BlockPicker.tsx +0 -324
- package/src/views/page-builder/BottomBar.tsx +0 -65
- package/src/views/page-builder/BuilderSectionsPanel.tsx +0 -304
- package/src/views/page-builder/BuilderToolbar.tsx +0 -221
- package/src/views/page-builder/ContextPanel.tsx +0 -144
- package/src/views/page-builder/DesignScore.tsx +0 -251
- package/src/views/page-builder/NodeSettings.tsx +0 -500
- package/src/views/page-builder/PageBuilder.tsx +0 -405
- package/src/views/page-builder/PageSettings.tsx +0 -162
- package/src/views/page-builder/PageTemplates.tsx +0 -435
- package/src/views/page-builder/RelationshipField.tsx +0 -113
- package/src/views/page-builder/SEOPanel.tsx +0 -222
- package/src/views/page-builder/SavedSections.tsx +0 -480
- package/src/views/page-builder/TemplatePicker.tsx +0 -197
- package/src/views/page-builder/Widgets.tsx +0 -44
- package/src/views/page-builder/block-renderers/CTAPreview.tsx +0 -79
- package/src/views/page-builder/block-renderers/CardsPreview.tsx +0 -69
- package/src/views/page-builder/block-renderers/CodePreview.tsx +0 -46
- package/src/views/page-builder/block-renderers/FAQPreview.tsx +0 -87
- package/src/views/page-builder/block-renderers/FallbackPreview.tsx +0 -18
- package/src/views/page-builder/block-renderers/FormPreview.tsx +0 -117
- package/src/views/page-builder/block-renderers/GalleryPreview.tsx +0 -87
- package/src/views/page-builder/block-renderers/HeroPreview.tsx +0 -90
- package/src/views/page-builder/block-renderers/ImagePreview.tsx +0 -54
- package/src/views/page-builder/block-renderers/TextPreview.tsx +0 -81
- package/src/views/page-builder/block-renderers/VideoPreview.tsx +0 -73
- package/src/views/page-builder/block-renderers/index.ts +0 -34
- package/src/views/page-builder/canvas/BlockRenderer.tsx +0 -56
- package/src/views/page-builder/canvas/BuilderCanvas.tsx +0 -87
- package/src/views/page-builder/canvas/ColumnRenderer.tsx +0 -82
- package/src/views/page-builder/canvas/ContainerRenderer.tsx +0 -67
- package/src/views/page-builder/canvas/RowRenderer.tsx +0 -68
- package/src/views/page-builder/canvas/SectionRenderer.tsx +0 -93
- package/src/views/page-builder/canvas/index.ts +0 -2
- package/src/views/page-editor/PagePreview.tsx +0 -105
- package/src/views/page-editor/SitePreviewFrame.tsx +0 -250
- package/src/views/page-editor/useSitePreview.ts +0 -158
- package/src/views/post-editor/PostPreview.tsx +0 -125
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useState, useMemo, useRef, useEffect, useCallback } from 'react';
|
|
4
|
-
import * as Dialog from '@radix-ui/react-dialog';
|
|
5
|
-
import { adminPortalContainer } from '../../lib/portal-container.js';
|
|
6
|
-
import { Star, Type, Image, LayoutGrid, MousePointer, Play, Grid, HelpCircle, FileText, Code, Box, X, ArrowLeft, Search, Check, } from 'lucide-react';
|
|
7
|
-
import { BlockCatalog } from '@prenta/core/page-builder';
|
|
8
|
-
const iconMap = {
|
|
9
|
-
Star,
|
|
10
|
-
Type,
|
|
11
|
-
Image,
|
|
12
|
-
LayoutGrid,
|
|
13
|
-
MousePointer,
|
|
14
|
-
Play,
|
|
15
|
-
Grid,
|
|
16
|
-
HelpCircle,
|
|
17
|
-
FileText,
|
|
18
|
-
Code,
|
|
19
|
-
};
|
|
20
|
-
function resolveIcon(name) {
|
|
21
|
-
return iconMap[name] ?? Box;
|
|
22
|
-
}
|
|
23
|
-
export function BlockPicker({ open, onClose, onSelect }) {
|
|
24
|
-
const [search, setSearch] = useState('');
|
|
25
|
-
const [selectedBlock, setSelectedBlock] = useState(null);
|
|
26
|
-
const searchInputRef = useRef(null);
|
|
27
|
-
const variantListRef = useRef(null);
|
|
28
|
-
const catalog = useMemo(() => new BlockCatalog(), []);
|
|
29
|
-
const allBlocks = useMemo(() => catalog.getAll(), [catalog]);
|
|
30
|
-
const filteredBlocks = useMemo(() => {
|
|
31
|
-
if (!search.trim())
|
|
32
|
-
return allBlocks;
|
|
33
|
-
const q = search.toLowerCase();
|
|
34
|
-
return allBlocks.filter((block) => block.label.toLowerCase().includes(q) ||
|
|
35
|
-
(block.description?.toLowerCase().includes(q) ?? false));
|
|
36
|
-
}, [allBlocks, search]);
|
|
37
|
-
const resetState = useCallback(() => {
|
|
38
|
-
setSearch('');
|
|
39
|
-
setSelectedBlock(null);
|
|
40
|
-
}, []);
|
|
41
|
-
useEffect(() => {
|
|
42
|
-
if (open) {
|
|
43
|
-
resetState();
|
|
44
|
-
}
|
|
45
|
-
}, [open, resetState]);
|
|
46
|
-
useEffect(() => {
|
|
47
|
-
if (open && !selectedBlock) {
|
|
48
|
-
const timer = setTimeout(() => searchInputRef.current?.focus(), 50);
|
|
49
|
-
return () => clearTimeout(timer);
|
|
50
|
-
}
|
|
51
|
-
}, [open, selectedBlock]);
|
|
52
|
-
useEffect(() => {
|
|
53
|
-
if (selectedBlock && variantListRef.current) {
|
|
54
|
-
const firstButton = variantListRef.current.querySelector('button[data-variant]');
|
|
55
|
-
firstButton?.focus();
|
|
56
|
-
}
|
|
57
|
-
}, [selectedBlock]);
|
|
58
|
-
function handleBlockClick(block) {
|
|
59
|
-
if (block.variants.length === 1) {
|
|
60
|
-
onSelect(block.type, block.variants[0].name);
|
|
61
|
-
onClose();
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
setSelectedBlock(block);
|
|
65
|
-
}
|
|
66
|
-
function handleVariantClick(variant) {
|
|
67
|
-
if (!selectedBlock)
|
|
68
|
-
return;
|
|
69
|
-
onSelect(selectedBlock.type, variant.name);
|
|
70
|
-
onClose();
|
|
71
|
-
}
|
|
72
|
-
function handleBack() {
|
|
73
|
-
setSelectedBlock(null);
|
|
74
|
-
}
|
|
75
|
-
function handleKeyDownOnGrid(e) {
|
|
76
|
-
if (e.key === 'Escape') {
|
|
77
|
-
e.stopPropagation();
|
|
78
|
-
onClose();
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
function handleKeyDownOnVariants(e) {
|
|
82
|
-
if (e.key === 'Escape') {
|
|
83
|
-
e.stopPropagation();
|
|
84
|
-
handleBack();
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return (_jsx(Dialog.Root, { open: open, onOpenChange: (isOpen) => !isOpen && onClose(), children: _jsxs(Dialog.Portal, { container: adminPortalContainer(), children: [_jsx(Dialog.Overlay, { className: "motion-safe:animate-in motion-safe:fade-in-0 fixed inset-0 z-50 bg-black/50" }), _jsx(Dialog.Content, { className: "bg-card border-border fixed top-1/2 left-1/2 z-50 flex max-h-[80vh] w-full max-w-2xl -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-xl border shadow-2xl", "aria-describedby": undefined, onEscapeKeyDown: () => {
|
|
88
|
-
if (selectedBlock) {
|
|
89
|
-
handleBack();
|
|
90
|
-
}
|
|
91
|
-
}, children: selectedBlock ? (_jsx(VariantView, { block: selectedBlock, variantListRef: variantListRef, onBack: handleBack, onVariantClick: handleVariantClick, onKeyDown: handleKeyDownOnVariants })) : (_jsx(BlockTypeGrid, { search: search, filteredBlocks: filteredBlocks, searchInputRef: searchInputRef, onSearchChange: setSearch, onBlockClick: handleBlockClick, onClose: onClose, onKeyDown: handleKeyDownOnGrid })) })] }) }));
|
|
92
|
-
}
|
|
93
|
-
function BlockTypeGrid({ search, filteredBlocks, searchInputRef, onSearchChange, onBlockClick, onClose, onKeyDown, }) {
|
|
94
|
-
return (_jsxs("div", { className: "flex h-full flex-col", onKeyDown: onKeyDown, children: [_jsxs("div", { className: "flex items-center justify-between gap-3 px-5 pt-5 pb-3", children: [_jsx(Dialog.Title, { className: "text-foreground text-lg font-medium", children: "Add Block" }), _jsx(Dialog.Close, { asChild: true, children: _jsx("button", { type: "button", className: "text-muted-foreground hover:text-foreground hover:bg-accent rounded-md p-1.5 transition-colors", "aria-label": "Close", children: _jsx(X, { size: 18 }) }) })] }), _jsx("div", { className: "px-5 pb-3", children: _jsxs("div", { className: "relative", children: [_jsx(Search, { className: "text-muted-foreground pointer-events-none absolute top-1/2 left-3 -translate-y-1/2", size: 16 }), _jsx("input", { ref: searchInputRef, type: "text", placeholder: "Search blocks...", value: search, onChange: (e) => onSearchChange(e.target.value), className: "bg-background border-input focus:ring-ring w-full rounded-md border py-2 pr-3 pl-9 text-sm focus:ring-2 focus:outline-none", "aria-label": "Search block types" })] }) }), _jsx("div", { className: "flex-1 overflow-y-auto px-5 pb-5", children: filteredBlocks.length === 0 ? (_jsxs("div", { className: "flex flex-col items-center justify-center py-12 text-center", children: [_jsx(Search, { size: 24, className: "text-muted-foreground mb-2" }), _jsxs("p", { className: "text-muted-foreground text-sm", children: ["No blocks match \u201C", search, "\u201D"] })] })) : (_jsx("div", { className: "grid grid-cols-2 gap-3", role: "list", "aria-label": "Available block types", children: filteredBlocks.map((block) => {
|
|
95
|
-
const Icon = resolveIcon(block.icon);
|
|
96
|
-
return (_jsxs("button", { type: "button", role: "listitem", onClick: () => onBlockClick(block), className: "border-border hover:border-primary bg-card group focus:ring-ring flex cursor-pointer items-start gap-3 rounded-lg border p-4 text-left transition-colors focus:ring-2 focus:outline-none", children: [_jsx("div", { className: "bg-accent text-foreground group-hover:bg-primary/10 group-hover:text-primary flex h-9 w-9 shrink-0 items-center justify-center rounded-md transition-colors", children: _jsx(Icon, { size: 18 }) }), _jsxs("div", { className: "min-w-0", children: [_jsx("p", { className: "text-foreground truncate text-sm font-medium", children: block.label }), block.description && (_jsx("p", { className: "text-muted-foreground mt-0.5 line-clamp-2 text-xs", children: block.description }))] })] }, block.type));
|
|
97
|
-
}) })) })] }));
|
|
98
|
-
}
|
|
99
|
-
function VariantView({ block, variantListRef, onBack, onVariantClick, onKeyDown, }) {
|
|
100
|
-
const Icon = resolveIcon(block.icon);
|
|
101
|
-
return (_jsxs("div", { className: "flex h-full flex-col", onKeyDown: onKeyDown, children: [_jsxs("div", { className: "flex items-center gap-3 px-5 pt-5 pb-3", children: [_jsx("button", { type: "button", onClick: onBack, className: "text-muted-foreground hover:text-foreground hover:bg-accent rounded-md p-1.5 transition-colors", "aria-label": "Back to block types", children: _jsx(ArrowLeft, { size: 18 }) }), _jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [_jsx(Icon, { size: 18, className: "text-foreground shrink-0" }), _jsx("h2", { className: "text-foreground truncate text-lg font-medium", children: block.label })] })] }), block.description && (_jsx("p", { className: "text-muted-foreground px-5 pb-3 text-sm", children: block.description })), _jsx("div", { className: "flex-1 overflow-y-auto px-5 pb-5", ref: variantListRef, children: _jsx("div", { className: "space-y-2", role: "list", "aria-label": `${block.label} variants`, children: block.variants.map((variant, index) => (_jsx("button", { type: "button", role: "listitem", "data-variant": variant.name, onClick: () => onVariantClick(variant), className: "border-border hover:border-primary bg-card group focus:ring-ring flex w-full cursor-pointer items-center gap-3 rounded-lg border p-4 text-left transition-colors focus:ring-2 focus:outline-none", children: _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("p", { className: "text-foreground text-sm font-medium", children: variant.label }), index === 0 && (_jsxs("span", { className: "text-primary bg-primary/10 inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-xs", children: [_jsx(Check, { size: 10 }), "Default"] }))] }), _jsx("p", { className: "text-muted-foreground mt-0.5 text-xs", children: variant.description })] }) }, variant.name))) }) })] }));
|
|
102
|
-
}
|
|
103
|
-
//# sourceMappingURL=BlockPicker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BlockPicker.js","sourceRoot":"","sources":["../../../src/views/page-builder/BlockPicker.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { DeviceMode } from '../../hooks/useBuilderState.js';
|
|
2
|
-
export interface BottomBarProps {
|
|
3
|
-
deviceMode: DeviceMode;
|
|
4
|
-
showGridOverlay: boolean;
|
|
5
|
-
onAddSection: () => void;
|
|
6
|
-
onToggleGrid: (show: boolean) => void;
|
|
7
|
-
}
|
|
8
|
-
export declare function BottomBar({ deviceMode, showGridOverlay, onAddSection, onToggleGrid, }: BottomBarProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
-
//# sourceMappingURL=BottomBar.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BottomBar.d.ts","sourceRoot":"","sources":["../../../src/views/page-builder/BottomBar.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAEhE,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,UAAU,CAAA;IACtB,eAAe,EAAE,OAAO,CAAA;IACxB,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;CACtC;AAQD,wBAAgB,SAAS,CAAC,EACxB,UAAU,EACV,eAAe,EACf,YAAY,EACZ,YAAY,GACb,EAAE,cAAc,2CAwChB"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { Plus, Grid3X3 } from 'lucide-react';
|
|
4
|
-
import { Toggle } from '../../components/ui/Toggle.js';
|
|
5
|
-
const DEVICE_LABELS = {
|
|
6
|
-
desktop: '100%',
|
|
7
|
-
tablet: '768px',
|
|
8
|
-
mobile: '375px',
|
|
9
|
-
};
|
|
10
|
-
export function BottomBar({ deviceMode, showGridOverlay, onAddSection, onToggleGrid, }) {
|
|
11
|
-
return (_jsxs("div", { className: "bg-card border-border flex h-10 shrink-0 items-center gap-4 border-t px-4", role: "toolbar", "aria-label": "Builder actions", children: [_jsxs("button", { onClick: onAddSection, className: "text-muted-foreground hover:text-foreground flex items-center gap-1.5 px-3 py-2 text-sm transition-colors", "aria-label": "Add a new section", children: [_jsx(Plus, { size: 14 }), _jsx("span", { children: "Add Section" })] }), _jsx("div", { className: "bg-border h-5 w-px" }), _jsxs("label", { className: "flex cursor-pointer items-center gap-2", children: [_jsx(Grid3X3, { size: 14, className: "text-muted-foreground" }), _jsx(Toggle, { checked: showGridOverlay, onCheckedChange: onToggleGrid, "aria-label": "Toggle grid overlay" }), _jsx("span", { className: "text-muted-foreground text-xs", children: "Grid" })] }), _jsx("div", { className: "flex-1" }), _jsx("span", { className: "text-muted-foreground text-xs tabular-nums", children: DEVICE_LABELS[deviceMode] })] }));
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=BottomBar.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BottomBar.js","sourceRoot":"","sources":["../../../src/views/page-builder/BottomBar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAUtD,MAAM,aAAa,GAA+B;IAChD,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,OAAO;CAChB,CAAA;AAED,MAAM,UAAU,SAAS,CAAC,EACxB,UAAU,EACV,eAAe,EACf,YAAY,EACZ,YAAY,GACG;IACf,OAAO,CACL,eACE,SAAS,EAAC,2EAA2E,EACrF,IAAI,EAAC,SAAS,gBACH,iBAAiB,aAG5B,kBACE,OAAO,EAAE,YAAY,EACrB,SAAS,EAAC,2GAA2G,gBAC1G,mBAAmB,aAE9B,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,GAAI,EAClB,yCAAwB,IACjB,EAGT,cAAK,SAAS,EAAC,oBAAoB,GAAG,EAGtC,iBAAO,SAAS,EAAC,wCAAwC,aACvD,KAAC,OAAO,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,uBAAuB,GAAG,EACvD,KAAC,MAAM,IACL,OAAO,EAAE,eAAe,EACxB,eAAe,EAAE,YAAY,gBAClB,qBAAqB,GAChC,EACF,eAAM,SAAS,EAAC,+BAA+B,qBAAY,IACrD,EAGR,cAAK,SAAS,EAAC,QAAQ,GAAG,EAG1B,eAAM,SAAS,EAAC,4CAA4C,YACzD,aAAa,CAAC,UAAU,CAAC,GACrB,IACH,CACP,CAAA;AACH,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { PageNode } from '@prenta/core';
|
|
2
|
-
export interface BuilderSectionsPanelProps {
|
|
3
|
-
tree: PageNode;
|
|
4
|
-
selectedNodeId: string | null;
|
|
5
|
-
/** Collapsed to a slim rail. State is owned by PageBuilder (persisted). */
|
|
6
|
-
collapsed: boolean;
|
|
7
|
-
onToggleCollapsed: () => void;
|
|
8
|
-
onSelect: (id: string) => void;
|
|
9
|
-
/** Move a top-level section to `toIndex` within the page. */
|
|
10
|
-
onReorder: (id: string, toIndex: number) => void;
|
|
11
|
-
onAddSection: () => void;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Design-parity left rail for the Page Builder (PageBuilder.html): the page's
|
|
15
|
-
* sections listed in order with drag-to-reorder, click-to-select (which
|
|
16
|
-
* highlights the section on the canvas and opens its settings in the existing
|
|
17
|
-
* right-hand context panel), and an "Add Section" affordance at the bottom.
|
|
18
|
-
*/
|
|
19
|
-
export declare function BuilderSectionsPanel({ tree, selectedNodeId, collapsed, onToggleCollapsed, onSelect, onReorder, onAddSection, }: BuilderSectionsPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
-
//# sourceMappingURL=BuilderSectionsPanel.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BuilderSectionsPanel.d.ts","sourceRoot":"","sources":["../../../src/views/page-builder/BuilderSectionsPanel.tsx"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAAe,QAAQ,EAAE,MAAM,cAAc,CAAA;AAEzD,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,QAAQ,CAAA;IACd,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,2EAA2E;IAC3E,SAAS,EAAE,OAAO,CAAA;IAClB,iBAAiB,EAAE,MAAM,IAAI,CAAA;IAC7B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,6DAA6D;IAC7D,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,YAAY,EAAE,MAAM,IAAI,CAAA;CACzB;AA0ED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,IAAI,EACJ,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,SAAS,EACT,YAAY,GACb,EAAE,yBAAyB,2CAsG3B"}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useMemo } from 'react';
|
|
4
|
-
import { DndContext, KeyboardSensor, PointerSensor, closestCenter, useSensor, useSensors, } from '@dnd-kit/core';
|
|
5
|
-
import { SortableContext, sortableKeyboardCoordinates, useSortable, verticalListSortingStrategy, } from '@dnd-kit/sortable';
|
|
6
|
-
import { CSS } from '@dnd-kit/utilities';
|
|
7
|
-
import { Bookmark, Code, FileText, Grid, GripVertical, HelpCircle, Image, LayoutGrid, LayoutTemplate, MousePointer, PanelLeftClose, PanelLeftOpen, Play, Plus, Star, Type, } from 'lucide-react';
|
|
8
|
-
import { BlockCatalog } from '@prenta/core/page-builder';
|
|
9
|
-
/** Same icon-name → component mapping the BlockPicker uses for the catalog. */
|
|
10
|
-
const BLOCK_ICONS = {
|
|
11
|
-
Star,
|
|
12
|
-
Type,
|
|
13
|
-
Image,
|
|
14
|
-
LayoutGrid,
|
|
15
|
-
MousePointer,
|
|
16
|
-
Play,
|
|
17
|
-
Grid,
|
|
18
|
-
HelpCircle,
|
|
19
|
-
FileText,
|
|
20
|
-
Code,
|
|
21
|
-
};
|
|
22
|
-
function collectBlockTypes(node, out) {
|
|
23
|
-
if (node.type === 'block') {
|
|
24
|
-
out.push(node.settings.blockType);
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
if (node.type === 'savedSectionRef')
|
|
28
|
-
return;
|
|
29
|
-
for (const child of node.children)
|
|
30
|
-
collectBlockTypes(child, out);
|
|
31
|
-
}
|
|
32
|
-
function humanize(type) {
|
|
33
|
-
return type.charAt(0).toUpperCase() + type.slice(1);
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Builder sections have no user-facing title, so each row derives its name
|
|
37
|
-
* from the section's first block (via the catalog label) and summarizes its
|
|
38
|
-
* contents as the kind label — enough for the editor to recognize and jump
|
|
39
|
-
* between sections without inventing data we don't store.
|
|
40
|
-
*/
|
|
41
|
-
function buildEntries(tree, catalog) {
|
|
42
|
-
return tree.children.map((node, index) => {
|
|
43
|
-
if (node.type === 'savedSectionRef') {
|
|
44
|
-
return {
|
|
45
|
-
id: node.id,
|
|
46
|
-
name: 'Saved section',
|
|
47
|
-
meta: 'From the section library',
|
|
48
|
-
icon: Bookmark,
|
|
49
|
-
hidden: false,
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
const blockTypes = [];
|
|
53
|
-
collectBlockTypes(node, blockTypes);
|
|
54
|
-
const firstType = blockTypes[0];
|
|
55
|
-
const def = firstType ? catalog.get(firstType) : undefined;
|
|
56
|
-
return {
|
|
57
|
-
id: node.id,
|
|
58
|
-
name: def?.label ?? (firstType ? humanize(firstType) : `Section ${index + 1}`),
|
|
59
|
-
meta: blockTypes.length === 0
|
|
60
|
-
? 'Empty section'
|
|
61
|
-
: `${blockTypes.length} block${blockTypes.length === 1 ? '' : 's'}`,
|
|
62
|
-
icon: (def && BLOCK_ICONS[def.icon]) ?? LayoutTemplate,
|
|
63
|
-
hidden: node.settings.visibility === 'hidden',
|
|
64
|
-
};
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
const ICON_BUTTON_CLASS = 'flex h-8 w-8 items-center justify-center rounded-[7px] text-[var(--sub)] transition-colors duration-[var(--motion-fast)] hover:bg-[var(--acc-l)] hover:text-[var(--acc)] focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:outline-none';
|
|
68
|
-
/**
|
|
69
|
-
* Design-parity left rail for the Page Builder (PageBuilder.html): the page's
|
|
70
|
-
* sections listed in order with drag-to-reorder, click-to-select (which
|
|
71
|
-
* highlights the section on the canvas and opens its settings in the existing
|
|
72
|
-
* right-hand context panel), and an "Add Section" affordance at the bottom.
|
|
73
|
-
*/
|
|
74
|
-
export function BuilderSectionsPanel({ tree, selectedNodeId, collapsed, onToggleCollapsed, onSelect, onReorder, onAddSection, }) {
|
|
75
|
-
const catalog = useMemo(() => new BlockCatalog(), []);
|
|
76
|
-
const entries = useMemo(() => buildEntries(tree, catalog), [tree, catalog]);
|
|
77
|
-
const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 4 } }), useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }));
|
|
78
|
-
function handleDragEnd(event) {
|
|
79
|
-
const { active, over } = event;
|
|
80
|
-
if (!over || active.id === over.id)
|
|
81
|
-
return;
|
|
82
|
-
const ids = entries.map((e) => e.id);
|
|
83
|
-
const to = ids.indexOf(String(over.id));
|
|
84
|
-
if (to === -1 || !ids.includes(String(active.id)))
|
|
85
|
-
return;
|
|
86
|
-
onReorder(String(active.id), to);
|
|
87
|
-
}
|
|
88
|
-
if (collapsed) {
|
|
89
|
-
return (_jsx("nav", { "aria-label": "Page sections", className: "flex w-11 shrink-0 flex-col items-center border-r border-[var(--bdr)] bg-[var(--sb)] py-2", children: _jsx("button", { type: "button", onClick: onToggleCollapsed, "aria-expanded": false, "aria-label": "Expand sections panel", className: ICON_BUTTON_CLASS, children: _jsx(PanelLeftOpen, { size: 16, "aria-hidden": true }) }) }));
|
|
90
|
-
}
|
|
91
|
-
return (_jsxs("nav", { "aria-label": "Page sections", className: "flex w-[280px] shrink-0 flex-col overflow-hidden border-r border-[var(--bdr)] bg-[var(--sb)]", children: [_jsxs("div", { className: "flex items-center justify-between border-b border-[var(--bdr)] py-2 pr-2 pl-3.5", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("h2", { className: "text-[13px] font-medium text-[var(--txt)]", children: "Sections" }), _jsx("span", { className: "rounded-[4px] bg-[var(--acc-l)] px-[7px] py-0.5 text-[11px] font-medium text-[var(--acc)] tabular-nums", children: entries.length })] }), _jsx("button", { type: "button", onClick: onToggleCollapsed, "aria-expanded": true, "aria-label": "Collapse sections panel", className: ICON_BUTTON_CLASS, children: _jsx(PanelLeftClose, { size: 16, "aria-hidden": true }) })] }), _jsx("div", { className: "flex-1 overflow-y-auto", children: entries.length === 0 ? (_jsx("p", { className: "px-4 py-6 text-center text-[12.5px] text-[var(--muted)]", children: "No sections yet. Add one below to start building." })) : (_jsx(DndContext, { sensors: sensors, collisionDetection: closestCenter, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: entries.map((e) => e.id), strategy: verticalListSortingStrategy, children: _jsx("ul", { "aria-label": "Sections in page order", children: entries.map((entry) => (_jsx(SortableSectionRow, { entry: entry, selected: entry.id === selectedNodeId, onSelect: onSelect }, entry.id))) }) }) })) }), _jsx("div", { className: "border-t border-[var(--bdr)]", children: _jsxs("button", { type: "button", onClick: onAddSection, className: "flex w-full items-center gap-2 px-3.5 py-3 text-[13px] font-medium text-[var(--acc)] transition-colors duration-[var(--motion-fast)] hover:bg-[var(--acc-l)] focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:outline-none focus-visible:ring-inset", children: [_jsx(Plus, { size: 14, "aria-hidden": true }), "Add Section"] }) })] }));
|
|
92
|
-
}
|
|
93
|
-
function SortableSectionRow({ entry, selected, onSelect }) {
|
|
94
|
-
const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({
|
|
95
|
-
id: entry.id,
|
|
96
|
-
});
|
|
97
|
-
const Icon = entry.icon;
|
|
98
|
-
const style = {
|
|
99
|
-
transform: CSS.Transform.toString(transform),
|
|
100
|
-
transition,
|
|
101
|
-
zIndex: isDragging ? 10 : undefined,
|
|
102
|
-
};
|
|
103
|
-
return (_jsx("li", { ref: setNodeRef, style: style, className: isDragging ? 'shadow-[var(--shd2)]' : undefined, children: _jsxs("div", { className: `flex items-center gap-1.5 border-b border-[var(--bdr)] py-2 pr-2.5 pl-1.5 transition-colors duration-[var(--motion-fast)] ${selected ? 'bg-[var(--acc-l)]' : 'hover:bg-[var(--acc-l)]'}`, children: [_jsx("button", { type: "button", "aria-label": `Drag to reorder ${entry.name}`, ...attributes, ...listeners, className: "shrink-0 cursor-grab touch-none rounded p-1 text-[var(--muted)] transition-colors duration-[var(--motion-fast)] hover:text-[var(--acc)] focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:outline-none active:cursor-grabbing", children: _jsx(GripVertical, { size: 15, "aria-hidden": true }) }), _jsxs("button", { type: "button", onClick: () => onSelect(entry.id), "aria-current": selected ? 'true' : undefined, className: "flex min-w-0 flex-1 items-center gap-2.5 rounded text-left focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:outline-none", children: [_jsx("span", { "aria-hidden": true, className: "flex h-7 w-7 shrink-0 items-center justify-center rounded-[7px] bg-[var(--acc-l)] text-[var(--acc)]", children: _jsx(Icon, { size: 14 }) }), _jsxs("span", { className: "flex min-w-0 flex-col", children: [_jsx("span", { className: `truncate text-[13px] font-medium ${entry.hidden ? 'text-[var(--muted)] line-through' : 'text-[var(--txt)]'}`, children: entry.name }), _jsx("span", { className: "truncate text-[11px] text-[var(--muted)]", children: entry.meta })] })] })] }) }));
|
|
104
|
-
}
|
|
105
|
-
//# sourceMappingURL=BuilderSectionsPanel.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BuilderSectionsPanel.js","sourceRoot":"","sources":["../../../src/views/page-builder/BuilderSectionsPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { DeviceMode, PageSettings } from '../../hooks/useBuilderState.js';
|
|
2
|
-
export interface BuilderToolbarProps {
|
|
3
|
-
collectionSlug: string;
|
|
4
|
-
pageSettings: PageSettings;
|
|
5
|
-
status: 'DRAFT' | 'PUBLISHED' | 'SCHEDULED';
|
|
6
|
-
dirty: boolean;
|
|
7
|
-
saving: boolean;
|
|
8
|
-
canUndo: boolean;
|
|
9
|
-
canRedo: boolean;
|
|
10
|
-
deviceMode: DeviceMode;
|
|
11
|
-
onNavigate: (path: string) => void;
|
|
12
|
-
onTitleChange: (title: string) => void;
|
|
13
|
-
onUndo: () => void;
|
|
14
|
-
onRedo: () => void;
|
|
15
|
-
onDeviceMode: (mode: DeviceMode) => void;
|
|
16
|
-
onSave: () => void;
|
|
17
|
-
onPublish: () => void;
|
|
18
|
-
onOpenAI?: () => void;
|
|
19
|
-
}
|
|
20
|
-
export declare function BuilderToolbar({ collectionSlug, pageSettings, status, dirty, saving, canUndo, canRedo, deviceMode, onNavigate, onTitleChange, onUndo, onRedo, onDeviceMode, onSave, onPublish, onOpenAI, }: BuilderToolbarProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
-
//# sourceMappingURL=BuilderToolbar.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BuilderToolbar.d.ts","sourceRoot":"","sources":["../../../src/views/page-builder/BuilderToolbar.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAE9E,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,OAAO,GAAG,WAAW,GAAG,WAAW,CAAA;IAC3C,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,UAAU,CAAA;IACtB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,YAAY,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAA;IACxC,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAQD,wBAAgB,cAAc,CAAC,EAC7B,cAAc,EACd,YAAY,EACZ,MAAM,EACN,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,EACP,UAAU,EACV,UAAU,EACV,aAAa,EACb,MAAM,EACN,MAAM,EACN,YAAY,EACZ,MAAM,EACN,SAAS,EACT,QAAQ,GACT,EAAE,mBAAmB,2CAyIrB"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import { ChevronLeft, Undo2, Redo2, Monitor, Tablet, Smartphone, Loader2, Sparkles, } from 'lucide-react';
|
|
4
|
-
const STATUS_STYLES = {
|
|
5
|
-
DRAFT: 'bg-muted text-muted-foreground',
|
|
6
|
-
PUBLISHED: 'bg-primary/10 text-primary',
|
|
7
|
-
SCHEDULED: 'bg-accent text-accent-foreground',
|
|
8
|
-
};
|
|
9
|
-
export function BuilderToolbar({ collectionSlug, pageSettings, status, dirty, saving, canUndo, canRedo, deviceMode, onNavigate, onTitleChange, onUndo, onRedo, onDeviceMode, onSave, onPublish, onOpenAI, }) {
|
|
10
|
-
const collectionLabel = collectionSlug.charAt(0).toUpperCase() + collectionSlug.slice(1);
|
|
11
|
-
return (_jsxs("div", { className: "bg-card border-border flex h-14 shrink-0 items-center gap-3 border-b px-4", role: "toolbar", "aria-label": "Page builder toolbar", children: [_jsxs("button", { onClick: () => onNavigate(`/collections/${collectionSlug}`), className: "text-muted-foreground hover:text-foreground flex items-center gap-1 text-sm transition-colors", "aria-label": `Back to ${collectionLabel}`, children: [_jsx(ChevronLeft, { size: 16 }), _jsx("span", { className: "hidden sm:inline", children: collectionLabel })] }), _jsx("div", { className: "bg-border h-6 w-px" }), _jsx("input", { type: "text", value: pageSettings.title, onChange: (e) => onTitleChange(e.target.value), placeholder: "Untitled Page", className: "text-foreground focus-visible:ring-ring placeholder:text-muted-foreground min-w-0 flex-1 rounded-sm border-none bg-transparent text-sm font-medium outline-none focus-visible:ring-2 focus-visible:ring-offset-2", "aria-label": "Page title" }), _jsx("span", { className: `rounded-md px-2 py-0.5 text-xs font-medium whitespace-nowrap ${STATUS_STYLES[status] ?? STATUS_STYLES.DRAFT}`, children: status }), dirty && !saving && (_jsx("span", { className: "bg-destructive h-2 w-2 shrink-0 rounded-full", title: "Unsaved changes", "aria-label": "Unsaved changes" })), _jsx("div", { className: "bg-border h-6 w-px" }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("button", { onClick: onUndo, disabled: !canUndo, className: "text-muted-foreground hover:text-foreground hover:bg-muted rounded-md p-1.5 transition-colors disabled:pointer-events-none disabled:opacity-30", "aria-label": "Undo", children: _jsx(Undo2, { size: 16 }) }), _jsx("button", { onClick: onRedo, disabled: !canRedo, className: "text-muted-foreground hover:text-foreground hover:bg-muted rounded-md p-1.5 transition-colors disabled:pointer-events-none disabled:opacity-30", "aria-label": "Redo", children: _jsx(Redo2, { size: 16 }) })] }), _jsx("div", { className: "bg-border h-6 w-px" }), _jsxs("div", { className: "bg-muted flex items-center gap-0.5 rounded-md p-0.5", children: [_jsx(DeviceButton, { active: deviceMode === 'desktop', onClick: () => onDeviceMode('desktop'), label: "Desktop view", children: _jsx(Monitor, { size: 16 }) }), _jsx(DeviceButton, { active: deviceMode === 'tablet', onClick: () => onDeviceMode('tablet'), label: "Tablet view", children: _jsx(Tablet, { size: 16 }) }), _jsx(DeviceButton, { active: deviceMode === 'mobile', onClick: () => onDeviceMode('mobile'), label: "Mobile view", children: _jsx(Smartphone, { size: 16 }) })] }), _jsx("div", { className: "bg-border h-6 w-px" }), onOpenAI && (_jsxs(_Fragment, { children: [_jsxs("button", { onClick: onOpenAI, className: "text-primary bg-primary/10 hover:bg-primary/20 flex items-center gap-1.5 rounded-md px-2.5 py-1.5 text-sm font-medium transition-colors", "aria-label": "Generate page with AI", children: [_jsx(Sparkles, { size: 14 }), _jsx("span", { className: "hidden sm:inline", children: "AI" })] }), _jsx("div", { className: "bg-border h-6 w-px" })] })), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("button", { onClick: onSave, disabled: saving || !dirty, className: "bg-muted text-muted-foreground hover:bg-muted/80 flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium transition-colors disabled:pointer-events-none disabled:opacity-50", children: [saving && _jsx(Loader2, { size: 14, className: "animate-spin" }), saving ? 'Saving...' : 'Save'] }), _jsx("button", { onClick: onPublish, disabled: saving, className: "bg-primary text-primary-foreground hover:bg-primary/90 rounded-md px-3 py-1.5 text-sm font-medium transition-colors disabled:pointer-events-none disabled:opacity-50", children: "Publish" })] })] }));
|
|
12
|
-
}
|
|
13
|
-
function DeviceButton({ active, onClick, label, children, }) {
|
|
14
|
-
return (_jsx("button", { onClick: onClick, className: `rounded-md p-1.5 transition-colors ${active
|
|
15
|
-
? 'bg-background text-foreground shadow-sm'
|
|
16
|
-
: 'text-muted-foreground hover:text-foreground'}`, "aria-label": label, "aria-pressed": active, children: children }));
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=BuilderToolbar.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BuilderToolbar.js","sourceRoot":"","sources":["../../../src/views/page-builder/BuilderToolbar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { BuilderNode, PageNode } from '@prenta/core';
|
|
2
|
-
import type { PageSettings } from '../../hooks/useBuilderState.js';
|
|
3
|
-
export interface ContextPanelProps {
|
|
4
|
-
activeTab: 'block' | 'node' | 'page' | 'seo' | 'design';
|
|
5
|
-
onTabChange: (tab: 'block' | 'node' | 'page' | 'seo' | 'design') => void;
|
|
6
|
-
selectedNode: BuilderNode | null;
|
|
7
|
-
tree: PageNode;
|
|
8
|
-
pageSettings: PageSettings;
|
|
9
|
-
onUpdateSettings: (id: string, settings: Record<string, unknown>) => void;
|
|
10
|
-
onUpdateBlock: (id: string, data: Record<string, unknown>) => void;
|
|
11
|
-
onRemoveNode: (id: string) => void;
|
|
12
|
-
onDuplicateNode: (id: string) => void;
|
|
13
|
-
onMoveNodeUp: (id: string) => void;
|
|
14
|
-
onMoveNodeDown: (id: string) => void;
|
|
15
|
-
onPageSettingsChange: (settings: Partial<PageSettings>) => void;
|
|
16
|
-
onAddRow: (sectionId: string) => void;
|
|
17
|
-
config: any;
|
|
18
|
-
}
|
|
19
|
-
export declare function ContextPanel({ activeTab, onTabChange, selectedNode, tree, pageSettings, onUpdateSettings, onUpdateBlock, onRemoveNode, onDuplicateNode, onMoveNodeUp, onMoveNodeDown, onPageSettingsChange, onAddRow, config, }: ContextPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
-
//# sourceMappingURL=ContextPanel.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ContextPanel.d.ts","sourceRoot":"","sources":["../../../src/views/page-builder/ContextPanel.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAMzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAElE,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;IACvD,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,KAAK,IAAI,CAAA;IACxE,YAAY,EAAE,WAAW,GAAG,IAAI,CAAA;IAChC,IAAI,EAAE,QAAQ,CAAA;IACd,YAAY,EAAE,YAAY,CAAA;IAC1B,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IACzE,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IAClE,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,oBAAoB,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAA;IAC/D,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,MAAM,EAAE,GAAG,CAAA;CACZ;AAgBD,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,WAAW,EACX,YAAY,EACZ,IAAI,EACJ,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,QAAQ,EACR,MAAM,GACP,EAAE,iBAAiB,2CAoFnB"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useMemo } from 'react';
|
|
4
|
-
import * as Tabs from '@radix-ui/react-tabs';
|
|
5
|
-
import { Blocks, Settings2, FileText, Search, Palette } from 'lucide-react';
|
|
6
|
-
import { BlockEditor } from './BlockEditor.js';
|
|
7
|
-
import { NodeSettings } from './NodeSettings.js';
|
|
8
|
-
import { PageSettingsEditor } from './PageSettings.js';
|
|
9
|
-
import { BuilderSEOPanel } from './SEOPanel.js';
|
|
10
|
-
import { DesignScorePanel } from './DesignScore.js';
|
|
11
|
-
const TABS = [
|
|
12
|
-
{ value: 'block', label: 'Block', icon: Blocks },
|
|
13
|
-
{ value: 'node', label: 'Node', icon: Settings2 },
|
|
14
|
-
{ value: 'page', label: 'Page', icon: FileText },
|
|
15
|
-
{ value: 'seo', label: 'SEO', icon: Search },
|
|
16
|
-
{ value: 'design', label: 'Design', icon: Palette },
|
|
17
|
-
];
|
|
18
|
-
export function ContextPanel({ activeTab, onTabChange, selectedNode, tree, pageSettings, onUpdateSettings, onUpdateBlock, onRemoveNode, onDuplicateNode, onMoveNodeUp, onMoveNodeDown, onPageSettingsChange, onAddRow, config, }) {
|
|
19
|
-
const availableTabs = useMemo(() => {
|
|
20
|
-
if (!selectedNode)
|
|
21
|
-
return TABS.filter((t) => t.value !== 'block' && t.value !== 'node');
|
|
22
|
-
if (selectedNode.type === 'block')
|
|
23
|
-
return TABS.filter((t) => t.value !== 'node');
|
|
24
|
-
return TABS.filter((t) => t.value !== 'block');
|
|
25
|
-
}, [selectedNode]);
|
|
26
|
-
const effectiveTab = useMemo(() => {
|
|
27
|
-
if (availableTabs.some((t) => t.value === activeTab))
|
|
28
|
-
return activeTab;
|
|
29
|
-
if (selectedNode?.type === 'block')
|
|
30
|
-
return 'block';
|
|
31
|
-
if (selectedNode)
|
|
32
|
-
return 'node';
|
|
33
|
-
return 'page';
|
|
34
|
-
}, [activeTab, availableTabs, selectedNode]);
|
|
35
|
-
return (_jsx("div", { className: "bg-card h-full w-full overflow-y-auto", children: _jsxs(Tabs.Root, { value: effectiveTab, onValueChange: (value) => onTabChange(value), children: [_jsx(Tabs.List, { className: "border-border bg-muted/30 flex border-b", children: availableTabs.map((tab) => {
|
|
36
|
-
const Icon = tab.icon;
|
|
37
|
-
return (_jsxs(Tabs.Trigger, { value: tab.value, className: "text-muted-foreground hover:text-foreground data-[state=active]:text-foreground data-[state=active]:border-primary data-[state=active]:bg-background flex flex-1 items-center justify-center gap-1.5 px-2 py-2.5 text-xs font-medium transition-colors data-[state=active]:border-b-2", children: [_jsx(Icon, { size: 14 }), _jsx("span", { children: tab.label })] }, tab.value));
|
|
38
|
-
}) }), _jsx(Tabs.Content, { value: "block", children: selectedNode?.type === 'block' && (_jsx(BlockEditor, { node: selectedNode, onUpdateBlock: onUpdateBlock, onUpdateSettings: onUpdateSettings, onRemoveNode: onRemoveNode, onDuplicateNode: onDuplicateNode, config: config })) }), _jsx(Tabs.Content, { value: "node", children: selectedNode &&
|
|
39
|
-
selectedNode.type !== 'block' &&
|
|
40
|
-
selectedNode.type !== 'page' &&
|
|
41
|
-
selectedNode.type !== 'savedSectionRef' && (_jsx(NodeSettings, { node: selectedNode, onUpdateSettings: onUpdateSettings, onRemoveNode: onRemoveNode, onDuplicateNode: onDuplicateNode, onMoveNodeUp: onMoveNodeUp, onMoveNodeDown: onMoveNodeDown, onAddRow: selectedNode.type === 'section' ? onAddRow : undefined })) }), _jsx(Tabs.Content, { value: "page", children: _jsx(PageSettingsEditor, { settings: pageSettings, onChange: onPageSettingsChange }) }), _jsx(Tabs.Content, { value: "seo", children: _jsx(BuilderSEOPanel, { tree: tree, pageSettings: pageSettings, onPageSettingsChange: onPageSettingsChange }) }), _jsx(Tabs.Content, { value: "design", children: _jsx(DesignScorePanel, { tree: tree }) })] }) }));
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=ContextPanel.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ContextPanel.js","sourceRoot":"","sources":["../../../src/views/page-builder/ContextPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { PageNode } from '@prenta/core';
|
|
2
|
-
export interface DesignScorePanelProps {
|
|
3
|
-
tree: PageNode;
|
|
4
|
-
}
|
|
5
|
-
export declare function DesignScorePanel({ tree }: DesignScorePanelProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
-
//# sourceMappingURL=DesignScore.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DesignScore.d.ts","sourceRoot":"","sources":["../../../src/views/page-builder/DesignScore.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,QAAQ,EAKT,MAAM,cAAc,CAAA;AAWrB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,QAAQ,CAAA;CACf;AAyLD,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,qBAAqB,2CA0C/D"}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useState, useMemo } from 'react';
|
|
4
|
-
import { analyzeDesign } from '@prenta/core/page-builder';
|
|
5
|
-
import { CheckCircle2, AlertCircle, XCircle, ChevronDown, ChevronUp, Lightbulb, Palette, } from 'lucide-react';
|
|
6
|
-
function getScoreColor(score, max) {
|
|
7
|
-
const ratio = max > 0 ? score / max : 0;
|
|
8
|
-
if (ratio >= 0.8)
|
|
9
|
-
return 'text-success';
|
|
10
|
-
if (ratio >= 0.5)
|
|
11
|
-
return 'text-warning';
|
|
12
|
-
return 'text-destructive';
|
|
13
|
-
}
|
|
14
|
-
function getBarColor(score, max) {
|
|
15
|
-
const ratio = max > 0 ? score / max : 0;
|
|
16
|
-
if (ratio >= 0.8)
|
|
17
|
-
return 'bg-success';
|
|
18
|
-
if (ratio >= 0.5)
|
|
19
|
-
return 'bg-warning';
|
|
20
|
-
return 'bg-destructive';
|
|
21
|
-
}
|
|
22
|
-
function getScoreLabel(score) {
|
|
23
|
-
if (score >= 80)
|
|
24
|
-
return 'Excellent';
|
|
25
|
-
if (score >= 65)
|
|
26
|
-
return 'Good';
|
|
27
|
-
if (score >= 50)
|
|
28
|
-
return 'Needs Work';
|
|
29
|
-
return 'Poor';
|
|
30
|
-
}
|
|
31
|
-
function getRingStrokeColor(score) {
|
|
32
|
-
if (score >= 80)
|
|
33
|
-
return 'rgb(34, 197, 94)';
|
|
34
|
-
if (score >= 50)
|
|
35
|
-
return 'rgb(245, 158, 11)';
|
|
36
|
-
return 'rgb(239, 68, 68)';
|
|
37
|
-
}
|
|
38
|
-
function StatusIcon({ status }) {
|
|
39
|
-
switch (status) {
|
|
40
|
-
case 'good':
|
|
41
|
-
return _jsx(CheckCircle2, { size: 14, className: "text-success shrink-0" });
|
|
42
|
-
case 'warning':
|
|
43
|
-
return _jsx(AlertCircle, { size: 14, className: "text-warning shrink-0" });
|
|
44
|
-
case 'error':
|
|
45
|
-
return _jsx(XCircle, { size: 14, className: "text-destructive shrink-0" });
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
function SeverityBadge({ severity }) {
|
|
49
|
-
const classes = {
|
|
50
|
-
important: 'bg-destructive/10 text-destructive',
|
|
51
|
-
suggestion: 'bg-warning/10 text-warning',
|
|
52
|
-
info: 'bg-info/10 text-info',
|
|
53
|
-
};
|
|
54
|
-
return (_jsx("span", { className: `inline-block rounded px-1.5 py-0.5 text-xs font-medium ${classes[severity]}`, children: severity }));
|
|
55
|
-
}
|
|
56
|
-
function ScoreRing({ score }) {
|
|
57
|
-
const radius = 32;
|
|
58
|
-
const strokeWidth = 6;
|
|
59
|
-
const circumference = 2 * Math.PI * radius;
|
|
60
|
-
const progress = Math.min(score, 100) / 100;
|
|
61
|
-
const dashOffset = circumference * (1 - progress);
|
|
62
|
-
const size = (radius + strokeWidth) * 2;
|
|
63
|
-
return (_jsxs("div", { className: "flex flex-col items-center gap-2", children: [_jsxs("div", { className: "relative", children: [_jsxs("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, className: "-rotate-90", children: [_jsx("circle", { cx: size / 2, cy: size / 2, r: radius, fill: "none", stroke: "var(--border)", strokeWidth: strokeWidth }), _jsx("circle", { cx: size / 2, cy: size / 2, r: radius, fill: "none", stroke: getRingStrokeColor(score), strokeWidth: strokeWidth, strokeDasharray: circumference, strokeDashoffset: dashOffset, strokeLinecap: "round", className: "transition-all duration-700 ease-out" })] }), _jsx("div", { className: "absolute inset-0 flex items-center justify-center", children: _jsx("span", { className: `text-lg font-medium ${getScoreColor(score, 100)}`, children: score }) })] }), _jsx("span", { className: "text-muted-foreground text-xs", children: getScoreLabel(score) })] }));
|
|
64
|
-
}
|
|
65
|
-
function CategoryRow({ category, expanded, onToggle, }) {
|
|
66
|
-
const percentage = category.maxScore > 0 ? (category.score / category.maxScore) * 100 : 0;
|
|
67
|
-
return (_jsxs("div", { className: "border-border border-b last:border-b-0", children: [_jsxs("button", { type: "button", className: "hover:bg-muted/50 flex w-full flex-col gap-2 px-4 py-3 text-left transition-colors", onClick: onToggle, "aria-expanded": expanded, children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-foreground text-xs font-medium", children: category.label }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("span", { className: "text-muted-foreground text-xs", children: [category.score, "/", category.maxScore] }), expanded ? (_jsx(ChevronUp, { size: 14, className: "text-muted-foreground" })) : (_jsx(ChevronDown, { size: 14, className: "text-muted-foreground" }))] })] }), _jsx("div", { className: "bg-muted h-1.5 w-full overflow-hidden rounded-full", children: _jsx("div", { className: `h-full rounded-full transition-all duration-500 ease-out ${getBarColor(category.score, category.maxScore)}`, style: { width: `${percentage}%` } }) })] }), expanded && category.checks.length > 0 && (_jsx("div", { className: "flex flex-col gap-2 px-4 pb-3", children: category.checks.map((check) => (_jsxs("div", { className: "flex items-start gap-2 pl-1", children: [_jsx(StatusIcon, { status: check.status }), _jsxs("div", { className: "flex flex-col", children: [_jsx("span", { className: "text-foreground text-xs font-medium", children: check.label }), _jsx("span", { className: "text-muted-foreground text-xs", children: check.detail })] })] }, check.id))) }))] }));
|
|
68
|
-
}
|
|
69
|
-
function SuggestionsList({ suggestions }) {
|
|
70
|
-
const sorted = useMemo(() => {
|
|
71
|
-
const order = {
|
|
72
|
-
important: 0,
|
|
73
|
-
suggestion: 1,
|
|
74
|
-
info: 2,
|
|
75
|
-
};
|
|
76
|
-
return [...suggestions].sort((a, b) => order[a.severity] - order[b.severity]);
|
|
77
|
-
}, [suggestions]);
|
|
78
|
-
if (sorted.length === 0)
|
|
79
|
-
return null;
|
|
80
|
-
return (_jsxs("div", { className: "border-border border-t px-4 py-3", children: [_jsxs("div", { className: "mb-3 flex items-center gap-2", children: [_jsx(Lightbulb, { size: 14, className: "text-muted-foreground" }), _jsx("span", { className: "text-foreground text-xs font-medium", children: "Suggestions" })] }), _jsx("div", { className: "flex flex-col gap-2.5", children: sorted.map((suggestion) => (_jsxs("div", { className: "flex items-start gap-2", children: [_jsx(SeverityBadge, { severity: suggestion.severity }), _jsx("span", { className: "text-muted-foreground text-xs leading-relaxed", children: suggestion.message })] }, suggestion.id))) })] }));
|
|
81
|
-
}
|
|
82
|
-
export function DesignScorePanel({ tree }) {
|
|
83
|
-
const analysis = useMemo(() => analyzeDesign(tree), [tree]);
|
|
84
|
-
const [expandedCategories, setExpandedCategories] = useState([]);
|
|
85
|
-
const toggleCategory = (name) => {
|
|
86
|
-
setExpandedCategories((prev) => prev.includes(name) ? prev.filter((n) => n !== name) : [...prev, name]);
|
|
87
|
-
};
|
|
88
|
-
if (!tree.children || tree.children.length === 0) {
|
|
89
|
-
return (_jsxs("div", { className: "flex min-h-[200px] flex-col items-center justify-center p-6 text-center", children: [_jsx(Palette, { size: 32, className: "text-muted-foreground mb-3" }), _jsx("p", { className: "text-foreground mb-1 text-sm font-medium", children: "Design Score" }), _jsx("p", { className: "text-muted-foreground text-xs", children: "Add sections to your page to see the design analysis" })] }));
|
|
90
|
-
}
|
|
91
|
-
return (_jsxs("div", { className: "flex flex-col", children: [_jsx("div", { className: "border-border flex flex-col items-center border-b py-5", children: _jsx(ScoreRing, { score: analysis.score }) }), _jsx("div", { className: "flex flex-col", children: analysis.categories.map((category) => (_jsx(CategoryRow, { category: category, expanded: expandedCategories.includes(category.name), onToggle: () => toggleCategory(category.name) }, category.name))) }), _jsx(SuggestionsList, { suggestions: analysis.suggestions })] }));
|
|
92
|
-
}
|
|
93
|
-
//# sourceMappingURL=DesignScore.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DesignScore.js","sourceRoot":"","sources":["../../../src/views/page-builder/DesignScore.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { SectionNode, ContainerNode, RowNode, ColumnNode } from '@prenta/core';
|
|
2
|
-
export interface NodeSettingsProps {
|
|
3
|
-
node: SectionNode | ContainerNode | RowNode | ColumnNode;
|
|
4
|
-
onUpdateSettings: (id: string, settings: Record<string, unknown>) => void;
|
|
5
|
-
onRemoveNode: (id: string) => void;
|
|
6
|
-
onDuplicateNode: (id: string) => void;
|
|
7
|
-
onMoveNodeUp: (id: string) => void;
|
|
8
|
-
onMoveNodeDown: (id: string) => void;
|
|
9
|
-
onAddRow?: (sectionId: string) => void;
|
|
10
|
-
}
|
|
11
|
-
export declare function NodeSettings({ node, onUpdateSettings, onRemoveNode, onDuplicateNode, onMoveNodeUp, onMoveNodeDown, onAddRow, }: NodeSettingsProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
-
//# sourceMappingURL=NodeSettings.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NodeSettings.d.ts","sourceRoot":"","sources":["../../../src/views/page-builder/NodeSettings.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAe,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEhG,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,WAAW,GAAG,aAAa,GAAG,OAAO,GAAG,UAAU,CAAA;IACxD,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IACzE,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;CACvC;AAkBD,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,cAAc,EACd,QAAQ,GACT,EAAE,iBAAiB,2CA6FnB"}
|