@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
|
@@ -32,6 +32,8 @@ import {
|
|
|
32
32
|
updateSectionMeta,
|
|
33
33
|
coerceSections as coerceSectionsCore,
|
|
34
34
|
validateSectionContent,
|
|
35
|
+
isPageBuilderTree,
|
|
36
|
+
layoutTreeToSections,
|
|
35
37
|
type PageSection,
|
|
36
38
|
} from '@prenta/core/page-sections'
|
|
37
39
|
import { validateSlug } from '@prenta/core/client'
|
|
@@ -91,13 +93,6 @@ export interface EditorPage {
|
|
|
91
93
|
authorName: string
|
|
92
94
|
/** CMS user behind the byline, when it is one. Empty for generic/guest. */
|
|
93
95
|
authorId: string
|
|
94
|
-
/**
|
|
95
|
-
* True when the document was authored in the visual Page Builder (it carries
|
|
96
|
-
* a `_layout` tree). Such a page's `sections` are *compiled* from the layout
|
|
97
|
-
* on every save (ADR 0002), so the flat editor opens it read-only and points
|
|
98
|
-
* the user to the Page Builder instead of silently fighting the next save.
|
|
99
|
-
*/
|
|
100
|
-
builderOwned: boolean
|
|
101
96
|
}
|
|
102
97
|
|
|
103
98
|
export interface ValidationResult {
|
|
@@ -196,20 +191,20 @@ interface DocumentApiRow {
|
|
|
196
191
|
scheduledUnpublishAt?: string | null
|
|
197
192
|
updatedAt: string | null
|
|
198
193
|
data: Record<string, unknown> | null
|
|
199
|
-
/**
|
|
194
|
+
/** Lifted leftover page-builder tree from `getDocument` (ADR 0003). */
|
|
200
195
|
layout?: unknown
|
|
201
196
|
}
|
|
202
197
|
|
|
203
|
-
function
|
|
204
|
-
|
|
198
|
+
function sectionsFromDocumentRow(doc: DocumentApiRow): PageSection[] {
|
|
199
|
+
const stored = coerceSectionsCore(doc.data?.sections, { onUnknown: 'preserve' })
|
|
200
|
+
if (stored.length > 0) return stored
|
|
201
|
+
if (isPageBuilderTree(doc.layout)) return layoutTreeToSections(doc.layout)
|
|
202
|
+
return stored
|
|
205
203
|
}
|
|
206
204
|
|
|
207
205
|
function rowToEditorPage(doc: DocumentApiRow): EditorPage {
|
|
208
206
|
const data = doc.data ?? {}
|
|
209
207
|
const slug = doc.slug ?? ''
|
|
210
|
-
// The API lifts the stored `_layout` onto `doc.layout`, but tolerate either
|
|
211
|
-
// shape so ownership detection is robust to response variations.
|
|
212
|
-
const builderOwned = isPlainObject(doc.layout) || isPlainObject(data._layout)
|
|
213
208
|
return {
|
|
214
209
|
id: doc.id,
|
|
215
210
|
title: doc.title ?? '',
|
|
@@ -220,7 +215,7 @@ function rowToEditorPage(doc: DocumentApiRow): EditorPage {
|
|
|
220
215
|
typeof data.parentPageId === 'string' && data.parentPageId ? data.parentPageId : null,
|
|
221
216
|
// Preserve unknown (externally-managed) sections so the editor can show
|
|
222
217
|
// them read-only and round-trip them on save instead of dropping them.
|
|
223
|
-
sections:
|
|
218
|
+
sections: sectionsFromDocumentRow(doc),
|
|
224
219
|
seoTitle: typeof data.metaTitle === 'string' ? data.metaTitle : '',
|
|
225
220
|
seoDescription: typeof data.metaDescription === 'string' ? data.metaDescription : '',
|
|
226
221
|
publishedAt: doc.publishedAt ?? null,
|
|
@@ -229,7 +224,6 @@ function rowToEditorPage(doc: DocumentApiRow): EditorPage {
|
|
|
229
224
|
scheduledUnpublishAt: doc.scheduledUnpublishAt ?? null,
|
|
230
225
|
authorName: typeof data.authorName === 'string' ? data.authorName : '',
|
|
231
226
|
authorId: typeof data.authorId === 'string' ? data.authorId : '',
|
|
232
|
-
builderOwned,
|
|
233
227
|
}
|
|
234
228
|
}
|
|
235
229
|
|
|
@@ -330,6 +324,5 @@ export function emptyPage(parentPageId: string | null = null): EditorPage {
|
|
|
330
324
|
scheduledUnpublishAt: null,
|
|
331
325
|
authorName: '',
|
|
332
326
|
authorId: '',
|
|
333
|
-
builderOwned: false,
|
|
334
327
|
}
|
|
335
328
|
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { PageStatus } from './page-editor-service.js'
|
|
2
|
+
|
|
3
|
+
export type ViewSiteIntent = 'preview-draft' | 'view-live'
|
|
4
|
+
|
|
5
|
+
export const NO_PUBLIC_SITE_URL_REASON =
|
|
6
|
+
'Set the public site URL in Settings → SEO to open the live design.'
|
|
7
|
+
|
|
8
|
+
export function resolveViewSiteChrome(input: {
|
|
9
|
+
status: PageStatus
|
|
10
|
+
dirty: boolean
|
|
11
|
+
hasPublicSiteUrl: boolean
|
|
12
|
+
hasIdentity: boolean
|
|
13
|
+
}): {
|
|
14
|
+
viewEnabled: boolean
|
|
15
|
+
viewDisabledReason?: string
|
|
16
|
+
primaryIntent: ViewSiteIntent
|
|
17
|
+
showViewLive: boolean
|
|
18
|
+
shareVisible: boolean
|
|
19
|
+
} {
|
|
20
|
+
const unpublished = input.status !== 'PUBLISHED' || input.dirty
|
|
21
|
+
const primaryIntent: ViewSiteIntent =
|
|
22
|
+
input.status === 'PUBLISHED' && !input.dirty ? 'view-live' : 'preview-draft'
|
|
23
|
+
const shareVisible = input.hasIdentity && unpublished
|
|
24
|
+
const viewEnabled = input.hasIdentity && input.hasPublicSiteUrl
|
|
25
|
+
|
|
26
|
+
return {
|
|
27
|
+
viewEnabled,
|
|
28
|
+
viewDisabledReason:
|
|
29
|
+
input.hasIdentity && !input.hasPublicSiteUrl ? NO_PUBLIC_SITE_URL_REASON : undefined,
|
|
30
|
+
primaryIntent,
|
|
31
|
+
showViewLive: input.hasIdentity && input.status === 'PUBLISHED' && input.dirty,
|
|
32
|
+
shareVisible,
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -40,14 +40,12 @@ export const ADMIN_STATIC_ROUTE_PATTERNS: readonly string[] = [
|
|
|
40
40
|
'/pages',
|
|
41
41
|
'/pages/:id',
|
|
42
42
|
'/pages/:id/edit',
|
|
43
|
-
'/pages/:id/preview',
|
|
44
43
|
'/pages/new',
|
|
45
44
|
'/pages/tags',
|
|
46
45
|
'/pages/tags/:id/edit',
|
|
47
46
|
'/pages/tags/new',
|
|
48
47
|
'/posts',
|
|
49
48
|
'/posts/:type/:id/edit',
|
|
50
|
-
'/posts/:type/:id/preview',
|
|
51
49
|
'/posts/:type/new',
|
|
52
50
|
'/posts/new',
|
|
53
51
|
'/posts/types',
|
package/src/styles/theme.css
CHANGED
|
@@ -174,8 +174,8 @@
|
|
|
174
174
|
* `views/page-editor/sections/` must use `@pv-*`, never `sm:`/`md:`/`lg:`.
|
|
175
175
|
*
|
|
176
176
|
* Values come from the page-builder design handoff. Any element carrying
|
|
177
|
-
* these variants needs an ancestor with `@container` — EditorCanvas
|
|
178
|
-
*
|
|
177
|
+
* these variants needs an ancestor with `@container` — EditorCanvas
|
|
178
|
+
* and PostEditorCanvas both declare it.
|
|
179
179
|
*/
|
|
180
180
|
@theme {
|
|
181
181
|
--container-pv-sm: 460px; /* below: stats 1-up, buttons full width */
|
|
@@ -281,8 +281,8 @@
|
|
|
281
281
|
/*
|
|
282
282
|
* The canvas is the query container for every previewed section (`@pv-*`
|
|
283
283
|
* variants — see the step scale above). It lives here rather than as an
|
|
284
|
-
* `@container` utility on each host because
|
|
285
|
-
* sections — EditorCanvas
|
|
284
|
+
* `@container` utility on each host because TWO surfaces render these
|
|
285
|
+
* sections — EditorCanvas and PostEditorCanvas — and
|
|
286
286
|
* a host that forgets it degrades silently: with no container ancestor,
|
|
287
287
|
* every `@pv-*` variant simply never matches and the page renders at its
|
|
288
288
|
* narrowest layout regardless of the selected breakpoint. Tying containment
|
package/src/views/PageEditor.tsx
CHANGED
|
@@ -13,8 +13,8 @@ export interface PageEditorProps {
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
|
-
* @deprecated Superseded by the
|
|
17
|
-
*
|
|
16
|
+
* @deprecated Superseded by the section editor (`PageSectionEditor`); will be
|
|
17
|
+
* removed in the next major.
|
|
18
18
|
*/
|
|
19
19
|
export function PageEditor({ id, onNavigate }: PageEditorProps) {
|
|
20
20
|
const isNew = !id
|
|
@@ -18,7 +18,6 @@ interface EditorCanvasProps {
|
|
|
18
18
|
onCanvasElement?: (el: HTMLElement | null) => void
|
|
19
19
|
/** Section types rendered as placeholders — shows the "Structure view" notice. */
|
|
20
20
|
structuralTypes?: string[]
|
|
21
|
-
sitePreviewAvailable?: boolean
|
|
22
21
|
/**
|
|
23
22
|
* Read-only render of a past version. Suppresses selection and the editing
|
|
24
23
|
* affordances, and turns on the changed-section outlines.
|
|
@@ -50,7 +49,6 @@ export function EditorCanvas({
|
|
|
50
49
|
onScaleChange,
|
|
51
50
|
onCanvasElement,
|
|
52
51
|
structuralTypes = [],
|
|
53
|
-
sitePreviewAvailable = false,
|
|
54
52
|
reviewing = false,
|
|
55
53
|
changedSectionIds,
|
|
56
54
|
reviewBar,
|
|
@@ -84,10 +82,7 @@ export function EditorCanvas({
|
|
|
84
82
|
) : (
|
|
85
83
|
<>
|
|
86
84
|
<CanvasEditTip />
|
|
87
|
-
<StructureNotice
|
|
88
|
-
structuralTypes={structuralTypes}
|
|
89
|
-
sitePreviewAvailable={sitePreviewAvailable}
|
|
90
|
-
/>
|
|
85
|
+
<StructureNotice structuralTypes={structuralTypes} />
|
|
91
86
|
</>
|
|
92
87
|
)
|
|
93
88
|
}
|
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
+
import * as DropdownMenu from '@radix-ui/react-dropdown-menu'
|
|
3
4
|
import {
|
|
4
5
|
Calendar,
|
|
5
6
|
Check,
|
|
7
|
+
ChevronDown,
|
|
6
8
|
ExternalLink,
|
|
7
|
-
Eye,
|
|
8
|
-
Globe,
|
|
9
9
|
History,
|
|
10
10
|
Loader2,
|
|
11
11
|
Settings2,
|
|
12
|
+
Share2,
|
|
12
13
|
TriangleAlert,
|
|
13
14
|
} from 'lucide-react'
|
|
14
15
|
import { EditorSeoScoreBadge } from '../../components/seo/EditorSeoScoreBadge.js'
|
|
15
16
|
import { BreakpointPicker } from '../../components/BreakpointPicker.js'
|
|
16
17
|
import { ZoomChip } from '../../components/ZoomChip.js'
|
|
18
|
+
import { adminPortalContainer } from '../../lib/portal-container.js'
|
|
17
19
|
import type { PageStatus } from '../../lib/page-editor-service.js'
|
|
18
20
|
import type { Zoom } from '../../lib/breakpoints.js'
|
|
21
|
+
import { resolveViewSiteChrome, type ViewSiteIntent } from '../../lib/view-site-chrome.js'
|
|
19
22
|
import { type ViewportId } from './viewports.js'
|
|
20
23
|
|
|
21
24
|
export type SaveState = 'idle' | 'saving' | 'saved' | 'error'
|
|
@@ -33,7 +36,7 @@ interface EditorTopBarProps {
|
|
|
33
36
|
/** Shown on hover/focus when publish is blocked by validation (not role). */
|
|
34
37
|
publishDisabledReason?: string
|
|
35
38
|
viewport: ViewportId
|
|
36
|
-
/** Canvas zoom mode; omit to hide the zoom chip
|
|
39
|
+
/** Canvas zoom mode; omit to hide the zoom chip. */
|
|
37
40
|
zoom?: Zoom
|
|
38
41
|
/** Scale the canvas actually measured, 0–1 — displayed by the zoom chip. */
|
|
39
42
|
canvasScale?: number
|
|
@@ -42,13 +45,16 @@ interface EditorTopBarProps {
|
|
|
42
45
|
backLabel?: string
|
|
43
46
|
onViewport: (v: ViewportId) => void
|
|
44
47
|
onBack: () => void
|
|
45
|
-
onPreview: () => void
|
|
46
48
|
/**
|
|
47
|
-
* Open the
|
|
48
|
-
*
|
|
49
|
-
*
|
|
49
|
+
* Open the public site in a new tab. Called with `preview-draft` or
|
|
50
|
+
* `view-live` depending on status and dirty. Omitted for unsaved documents
|
|
51
|
+
* (no id/slug yet) — View site / Share / View live are then hidden.
|
|
50
52
|
*/
|
|
51
|
-
onViewOnSite?: () => void
|
|
53
|
+
onViewOnSite?: (intent: ViewSiteIntent) => void
|
|
54
|
+
/** Copy a shareable draft preview link. Hidden when `shareVisible` is false. */
|
|
55
|
+
onShare?: () => void
|
|
56
|
+
/** When false, View site and Share are disabled with the SEO settings reason. */
|
|
57
|
+
hasPublicSiteUrl?: boolean
|
|
52
58
|
/**
|
|
53
59
|
* Toggle the version history panel. When omitted the History button is
|
|
54
60
|
* hidden — e.g. for unsaved documents that have no versions yet.
|
|
@@ -60,13 +66,6 @@ interface EditorTopBarProps {
|
|
|
60
66
|
* is nothing in the chrome saying which mode the editor is in.
|
|
61
67
|
*/
|
|
62
68
|
historyOpen?: boolean
|
|
63
|
-
/** Whether the inline site preview (iframe of the public site) is showing. */
|
|
64
|
-
sitePreview?: boolean
|
|
65
|
-
/**
|
|
66
|
-
* Toggle the inline site preview — renders the draft through the consumer's
|
|
67
|
-
* real public route inside the editor. Hidden when omitted (unsaved docs).
|
|
68
|
-
*/
|
|
69
|
-
onToggleSitePreview?: () => void
|
|
70
69
|
onOpenSettings: () => void
|
|
71
70
|
/** Open the document SEO panel (meta, social, schema, analysis). */
|
|
72
71
|
onOpenSeo?: () => void
|
|
@@ -90,9 +89,8 @@ interface EditorTopBarProps {
|
|
|
90
89
|
scheduledUnpublishAt?: string | null
|
|
91
90
|
/**
|
|
92
91
|
* Section types the canvas renders as placeholders (custom / unmanaged).
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
* labeled button as the primary design preview.
|
|
92
|
+
* Used for structure notice / other chrome. View site is always a labeled
|
|
93
|
+
* button regardless of this list.
|
|
96
94
|
*/
|
|
97
95
|
structuralTypes?: string[]
|
|
98
96
|
}
|
|
@@ -121,12 +119,11 @@ export function EditorTopBar({
|
|
|
121
119
|
backLabel = 'Pages',
|
|
122
120
|
onViewport,
|
|
123
121
|
onBack,
|
|
124
|
-
onPreview,
|
|
125
122
|
onViewOnSite,
|
|
123
|
+
onShare,
|
|
124
|
+
hasPublicSiteUrl,
|
|
126
125
|
onHistory,
|
|
127
126
|
historyOpen = false,
|
|
128
|
-
sitePreview = false,
|
|
129
|
-
onToggleSitePreview,
|
|
130
127
|
onOpenSettings,
|
|
131
128
|
onOpenSeo,
|
|
132
129
|
seoOpen = false,
|
|
@@ -138,19 +135,16 @@ export function EditorTopBar({
|
|
|
138
135
|
scheduleReady = true,
|
|
139
136
|
scheduledAt = null,
|
|
140
137
|
scheduledUnpublishAt = null,
|
|
141
|
-
structuralTypes = [],
|
|
142
138
|
}: EditorTopBarProps) {
|
|
143
139
|
const statusInfo = STATUS_TEXT[status]
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
// preview token); otherwise it opens a token-gated preview of the draft.
|
|
153
|
-
const isLive = status === 'PUBLISHED'
|
|
140
|
+
const chrome = onViewOnSite
|
|
141
|
+
? resolveViewSiteChrome({
|
|
142
|
+
status,
|
|
143
|
+
dirty,
|
|
144
|
+
hasPublicSiteUrl: Boolean(hasPublicSiteUrl),
|
|
145
|
+
hasIdentity: true,
|
|
146
|
+
})
|
|
147
|
+
: null
|
|
154
148
|
|
|
155
149
|
const publishBlocked = !canPublish || !publishReady || publishing || saveState === 'saving'
|
|
156
150
|
const publishTitle = publishing
|
|
@@ -281,63 +275,68 @@ export function EditorTopBar({
|
|
|
281
275
|
</button>
|
|
282
276
|
)}
|
|
283
277
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
onClick={onPreview}
|
|
287
|
-
aria-label={previewLabel}
|
|
288
|
-
title={previewLabel}
|
|
289
|
-
className="prenta-touch-target text-muted-foreground hover:text-foreground hover:bg-accent rounded-lg p-2"
|
|
290
|
-
>
|
|
291
|
-
<Eye className="h-4 w-4" aria-hidden />
|
|
292
|
-
</button>
|
|
293
|
-
|
|
294
|
-
{onToggleSitePreview && (
|
|
295
|
-
<button
|
|
296
|
-
type="button"
|
|
297
|
-
onClick={onToggleSitePreview}
|
|
298
|
-
aria-pressed={sitePreview}
|
|
299
|
-
aria-label={sitePreview ? 'Back to editor canvas' : 'Inline site preview'}
|
|
300
|
-
title={
|
|
301
|
-
sitePreview
|
|
302
|
-
? 'Back to editor canvas'
|
|
303
|
-
: 'Inline site preview — render the draft through your public site, in place'
|
|
304
|
-
}
|
|
305
|
-
className={`prenta-touch-target rounded-lg p-2 transition-colors ${
|
|
306
|
-
sitePreview
|
|
307
|
-
? 'bg-primary text-primary-foreground'
|
|
308
|
-
: 'text-muted-foreground hover:text-foreground hover:bg-accent'
|
|
309
|
-
}`}
|
|
310
|
-
>
|
|
311
|
-
<Globe className="h-4 w-4" aria-hidden />
|
|
312
|
-
</button>
|
|
313
|
-
)}
|
|
314
|
-
|
|
315
|
-
{onViewOnSite &&
|
|
316
|
-
(structural ? (
|
|
278
|
+
{chrome && (
|
|
279
|
+
<>
|
|
317
280
|
<button
|
|
318
281
|
type="button"
|
|
319
|
-
onClick={onViewOnSite}
|
|
282
|
+
onClick={() => onViewOnSite?.(chrome.primaryIntent)}
|
|
283
|
+
disabled={!chrome.viewEnabled}
|
|
320
284
|
title={
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
285
|
+
chrome.viewDisabledReason ??
|
|
286
|
+
(chrome.primaryIntent === 'view-live'
|
|
287
|
+
? 'Open the published page in a new tab.'
|
|
288
|
+
: 'Open the draft on your site in a new tab.')
|
|
324
289
|
}
|
|
325
|
-
className="border-border text-foreground hover:bg-accent inline-flex items-center gap-1.5 rounded-lg border px-3 py-1.5 text-sm font-medium transition-colors"
|
|
290
|
+
className="border-border text-foreground hover:bg-accent inline-flex items-center gap-1.5 rounded-lg border px-3 py-1.5 text-sm font-medium transition-colors disabled:cursor-not-allowed disabled:opacity-50"
|
|
326
291
|
>
|
|
327
292
|
<ExternalLink className="h-3.5 w-3.5" aria-hidden />
|
|
328
|
-
{
|
|
293
|
+
{chrome.primaryIntent === 'view-live' ? 'View live' : 'View site'}
|
|
329
294
|
</button>
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
295
|
+
{chrome.showViewLive && (
|
|
296
|
+
<DropdownMenu.Root>
|
|
297
|
+
<DropdownMenu.Trigger asChild>
|
|
298
|
+
<button
|
|
299
|
+
type="button"
|
|
300
|
+
disabled={!chrome.viewEnabled}
|
|
301
|
+
aria-label="More view options"
|
|
302
|
+
className="prenta-touch-target border-border text-foreground hover:bg-accent inline-flex h-[34px] items-center rounded-lg border px-2 text-sm font-medium disabled:cursor-not-allowed disabled:opacity-50"
|
|
303
|
+
>
|
|
304
|
+
<ChevronDown className="h-3.5 w-3.5" aria-hidden />
|
|
305
|
+
</button>
|
|
306
|
+
</DropdownMenu.Trigger>
|
|
307
|
+
<DropdownMenu.Portal container={adminPortalContainer()}>
|
|
308
|
+
<DropdownMenu.Content
|
|
309
|
+
align="end"
|
|
310
|
+
sideOffset={6}
|
|
311
|
+
className="border-border bg-popover z-[120] rounded-[10px] border p-[5px] shadow-[0_12px_34px_rgba(26,24,39,0.17)]"
|
|
312
|
+
>
|
|
313
|
+
<DropdownMenu.Item
|
|
314
|
+
onSelect={() => onViewOnSite?.('view-live')}
|
|
315
|
+
className="hover:bg-accent focus:bg-accent cursor-pointer rounded-md px-2.5 py-1.5 text-sm outline-none"
|
|
316
|
+
>
|
|
317
|
+
View live
|
|
318
|
+
</DropdownMenu.Item>
|
|
319
|
+
</DropdownMenu.Content>
|
|
320
|
+
</DropdownMenu.Portal>
|
|
321
|
+
</DropdownMenu.Root>
|
|
322
|
+
)}
|
|
323
|
+
{chrome.shareVisible && onShare && (
|
|
324
|
+
<button
|
|
325
|
+
type="button"
|
|
326
|
+
onClick={onShare}
|
|
327
|
+
disabled={!chrome.viewEnabled}
|
|
328
|
+
title={
|
|
329
|
+
chrome.viewDisabledReason ??
|
|
330
|
+
'Copy a link so someone can view this draft without signing in.'
|
|
331
|
+
}
|
|
332
|
+
className="border-border text-foreground hover:bg-accent inline-flex items-center gap-1.5 rounded-lg border px-3 py-1.5 text-sm font-medium transition-colors disabled:cursor-not-allowed disabled:opacity-50"
|
|
333
|
+
>
|
|
334
|
+
<Share2 className="h-3.5 w-3.5" aria-hidden />
|
|
335
|
+
Share
|
|
336
|
+
</button>
|
|
337
|
+
)}
|
|
338
|
+
</>
|
|
339
|
+
)}
|
|
341
340
|
|
|
342
341
|
<button
|
|
343
342
|
type="button"
|