@rakun-kit/manager-react 1.5.9 → 1.6.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/README.md +366 -297
- package/dist/cjs/app/runtime-app.js +4 -1
- package/dist/cjs/app/runtime-app.js.map +1 -1
- package/dist/cjs/components/app-sidebar.js +13 -2
- package/dist/cjs/components/app-sidebar.js.map +1 -1
- package/dist/cjs/components/media/MediaLibrary.js +10 -1
- package/dist/cjs/components/media/MediaLibrary.js.map +1 -1
- package/dist/cjs/components/media/contexts/MediaLibraryContext.js +1 -1
- package/dist/cjs/components/media/contexts/MediaLibraryContext.js.map +1 -1
- package/dist/cjs/components/media/previews/MediaContextMenuContent.js +68 -15
- package/dist/cjs/components/media/previews/MediaContextMenuContent.js.map +1 -1
- package/dist/cjs/components/media/previews/Previews.js +89 -35
- package/dist/cjs/components/media/previews/Previews.js.map +1 -1
- package/dist/cjs/components/media/previews/context/MediaPreviewContext.js.map +1 -1
- package/dist/cjs/components/media/previews/dialogs/ExpandedPreviewDialog.js +7 -10
- package/dist/cjs/components/media/previews/dialogs/ExpandedPreviewDialog.js.map +1 -1
- package/dist/cjs/components/media/previews/hooks/useMediaPreviewRenderer.js +3 -1
- package/dist/cjs/components/media/previews/hooks/useMediaPreviewRenderer.js.map +1 -1
- package/dist/cjs/components/media/previews/toolbar/PreviewsToolbar.js +16 -9
- package/dist/cjs/components/media/previews/toolbar/PreviewsToolbar.js.map +1 -1
- package/dist/cjs/components/media/previews/utils/mediaDownload.js +54 -0
- package/dist/cjs/components/media/previews/utils/mediaDownload.js.map +1 -0
- package/dist/cjs/components/media/previews/views/PreviewsListView.js +1 -1
- package/dist/cjs/components/media/previews/views/PreviewsListView.js.map +1 -1
- package/dist/cjs/components/rakun-logo.js +4 -9
- package/dist/cjs/components/rakun-logo.js.map +1 -1
- package/dist/cjs/components/ui/context-menu.js +1 -1
- package/dist/cjs/components/ui/context-menu.js.map +1 -1
- package/dist/cjs/i18n/catalog.js +366 -6
- package/dist/cjs/i18n/catalog.js.map +1 -1
- package/dist/cjs/layouts.js +2 -2
- package/dist/cjs/layouts.js.map +1 -1
- package/dist/cjs/lib/media.js +1 -0
- package/dist/cjs/lib/media.js.map +1 -1
- package/dist/cjs/media.js +45 -0
- package/dist/cjs/media.js.map +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/ContentTypeEdit.js +15 -4
- package/dist/cjs/router/dashboard/[contentType]/[edit]/ContentTypeEdit.js.map +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_components/ContentCommentsDrawer.js +11 -6
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_components/ContentCommentsDrawer.js.map +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_components/EditTabPanels.js +2 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_components/EditTabPanels.js.map +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_components/EditToolbar.js +3 -2
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_components/EditToolbar.js.map +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_components/PreviewPanel.js +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_components/PreviewPanel.js.map +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_components/SeoTabContent.js +290 -0
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_components/SeoTabContent.js.map +1 -0
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_components/seo-analysis.js +88 -0
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_components/seo-analysis.js.map +1 -0
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_context/EditPageContext.js +9 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_context/EditPageContext.js.map +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/ContentReferenceField/ContentReferenceMultiSelectUI.js +15 -2
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/ContentReferenceField/ContentReferenceMultiSelectUI.js.map +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/DynamicDataControl.js +222 -232
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/DynamicDataControl.js.map +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/FileField/index.js +20 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/FileField/index.js.map +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/LinkField/LinkUI.js +27 -21
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/LinkField/LinkUI.js.map +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/LinkField/index.js.map +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/LinkField/linkValue.js +25 -0
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/LinkField/linkValue.js.map +1 -0
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/ListField/IteratorModulePicker.js +10 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/ListField/IteratorModulePicker.js.map +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/ListField/SimpleListUI.js +38 -11
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/ListField/SimpleListUI.js.map +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/MenuField/MenuUI.js +135 -0
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/MenuField/MenuUI.js.map +1 -0
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/MenuField/index.js +10 -0
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/MenuField/index.js.map +1 -0
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/MenuField/menuTree.js +113 -0
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/MenuField/menuTree.js.map +1 -0
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/Select/MultiSelectUI.js +15 -2
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/Select/MultiSelectUI.js.map +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/shared/ItemLimitStatus.js +22 -0
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/shared/ItemLimitStatus.js.map +1 -0
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_fields/shared/index.js.map +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_hooks/useContentDocumentActions.js +2 -0
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_hooks/useContentDocumentActions.js.map +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_hooks/useContentPreview.js +198 -0
- package/dist/cjs/router/dashboard/[contentType]/[edit]/_hooks/useContentPreview.js.map +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/edit.js +10 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/edit.js.map +1 -1
- package/dist/cjs/router/dashboard/[contentType]/[edit]/screen.js +2 -2
- package/dist/cjs/router/dashboard/[contentType]/[edit]/screen.js.map +1 -1
- package/dist/cjs/router/dashboard/debugging/api-routes/ApiTest.js +2 -2
- package/dist/cjs/router/dashboard/debugging/api-routes/ApiTest.js.map +1 -1
- package/dist/cjs/router/dashboard/debugging/api-routes/JsonViewer.js +17 -0
- package/dist/cjs/router/dashboard/debugging/api-routes/JsonViewer.js.map +1 -0
- package/dist/cjs/router/dashboard/debugging/api-routes/SchemaViewer.js +40 -26
- package/dist/cjs/router/dashboard/debugging/api-routes/SchemaViewer.js.map +1 -1
- package/dist/cjs/router/dashboard/debugging/api-routes/test.js +6 -5
- package/dist/cjs/router/dashboard/debugging/api-routes/test.js.map +1 -1
- package/dist/cjs/router/dashboard/seo/index.js +6 -0
- package/dist/cjs/router/dashboard/seo/index.js.map +1 -0
- package/dist/cjs/router/dashboard/seo/screen.js +219 -0
- package/dist/cjs/router/dashboard/seo/screen.js.map +1 -0
- package/dist/cjs/router/dashboard/seo/site-analysis.js +153 -0
- package/dist/cjs/router/dashboard/seo/site-analysis.js.map +1 -0
- package/dist/cjs/router/dashboard/settings/llms/index.js +6 -0
- package/dist/cjs/router/dashboard/settings/llms/index.js.map +1 -0
- package/dist/cjs/router/dashboard/settings/llms/screen.js +122 -0
- package/dist/cjs/router/dashboard/settings/llms/screen.js.map +1 -0
- package/dist/cjs/router/dashboard/settings/screen.js +7 -0
- package/dist/cjs/router/dashboard/settings/screen.js.map +1 -1
- package/dist/cjs/router/shared/route-definitions.js +3 -2
- package/dist/cjs/router/shared/route-definitions.js.map +1 -1
- package/dist/cjs/router/shared/route-list.js +19 -3
- package/dist/cjs/router/shared/route-list.js.map +1 -1
- package/dist/cjs/router/shared/route-renderer.js +2 -1
- package/dist/cjs/router/shared/route-renderer.js.map +1 -1
- package/dist/docs/index.md +294 -192
- package/dist/esm/app/runtime-app.d.ts.map +1 -1
- package/dist/esm/app/runtime-app.js +4 -1
- package/dist/esm/app/runtime-app.js.map +1 -1
- package/dist/esm/components/app-sidebar.d.ts +2 -1
- package/dist/esm/components/app-sidebar.d.ts.map +1 -1
- package/dist/esm/components/app-sidebar.js +15 -4
- package/dist/esm/components/app-sidebar.js.map +1 -1
- package/dist/esm/components/media/MediaLibrary.d.ts.map +1 -1
- package/dist/esm/components/media/MediaLibrary.js +11 -2
- package/dist/esm/components/media/MediaLibrary.js.map +1 -1
- package/dist/esm/components/media/contexts/MediaLibraryContext.d.ts +2 -0
- package/dist/esm/components/media/contexts/MediaLibraryContext.d.ts.map +1 -1
- package/dist/esm/components/media/contexts/MediaLibraryContext.js +1 -1
- package/dist/esm/components/media/contexts/MediaLibraryContext.js.map +1 -1
- package/dist/esm/components/media/previews/MediaContextMenuContent.d.ts.map +1 -1
- package/dist/esm/components/media/previews/MediaContextMenuContent.js +70 -17
- package/dist/esm/components/media/previews/MediaContextMenuContent.js.map +1 -1
- package/dist/esm/components/media/previews/Previews.d.ts.map +1 -1
- package/dist/esm/components/media/previews/Previews.js +90 -36
- package/dist/esm/components/media/previews/Previews.js.map +1 -1
- package/dist/esm/components/media/previews/context/MediaPreviewContext.d.ts +2 -0
- package/dist/esm/components/media/previews/context/MediaPreviewContext.d.ts.map +1 -1
- package/dist/esm/components/media/previews/context/MediaPreviewContext.js.map +1 -1
- package/dist/esm/components/media/previews/dialogs/ExpandedPreviewDialog.d.ts.map +1 -1
- package/dist/esm/components/media/previews/dialogs/ExpandedPreviewDialog.js +7 -10
- package/dist/esm/components/media/previews/dialogs/ExpandedPreviewDialog.js.map +1 -1
- package/dist/esm/components/media/previews/hooks/useMediaPreviewRenderer.d.ts.map +1 -1
- package/dist/esm/components/media/previews/hooks/useMediaPreviewRenderer.js +3 -1
- package/dist/esm/components/media/previews/hooks/useMediaPreviewRenderer.js.map +1 -1
- package/dist/esm/components/media/previews/toolbar/PreviewsToolbar.d.ts +4 -1
- package/dist/esm/components/media/previews/toolbar/PreviewsToolbar.d.ts.map +1 -1
- package/dist/esm/components/media/previews/toolbar/PreviewsToolbar.js +17 -10
- package/dist/esm/components/media/previews/toolbar/PreviewsToolbar.js.map +1 -1
- package/dist/esm/components/media/previews/utils/mediaDownload.d.ts +13 -0
- package/dist/esm/components/media/previews/utils/mediaDownload.d.ts.map +1 -0
- package/dist/esm/components/media/previews/utils/mediaDownload.js +49 -0
- package/dist/esm/components/media/previews/utils/mediaDownload.js.map +1 -0
- package/dist/esm/components/media/previews/views/PreviewsListView.js +1 -1
- package/dist/esm/components/media/previews/views/PreviewsListView.js.map +1 -1
- package/dist/esm/components/rakun-logo.d.ts +1 -5
- package/dist/esm/components/rakun-logo.d.ts.map +1 -1
- package/dist/esm/components/rakun-logo.js +1 -6
- package/dist/esm/components/rakun-logo.js.map +1 -1
- package/dist/esm/components/ui/context-menu.js +1 -1
- package/dist/esm/components/ui/context-menu.js.map +1 -1
- package/dist/esm/i18n/catalog.d.ts +645 -6
- package/dist/esm/i18n/catalog.d.ts.map +1 -1
- package/dist/esm/i18n/catalog.js +366 -6
- package/dist/esm/i18n/catalog.js.map +1 -1
- package/dist/esm/layouts.d.ts +3 -1
- package/dist/esm/layouts.d.ts.map +1 -1
- package/dist/esm/layouts.js +2 -2
- package/dist/esm/layouts.js.map +1 -1
- package/dist/esm/lib/media.d.ts +8 -0
- package/dist/esm/lib/media.d.ts.map +1 -1
- package/dist/esm/lib/media.js +1 -0
- package/dist/esm/lib/media.js.map +1 -1
- package/dist/esm/media.d.ts +19 -1
- package/dist/esm/media.d.ts.map +1 -1
- package/dist/esm/media.js +44 -0
- package/dist/esm/media.js.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/ContentTypeEdit.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/ContentTypeEdit.js +18 -7
- package/dist/esm/router/dashboard/[contentType]/[edit]/ContentTypeEdit.js.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_components/ContentCommentsDrawer.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_components/ContentCommentsDrawer.js +11 -6
- package/dist/esm/router/dashboard/[contentType]/[edit]/_components/ContentCommentsDrawer.js.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_components/EditTabPanels.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_components/EditTabPanels.js +2 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_components/EditTabPanels.js.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_components/EditToolbar.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_components/EditToolbar.js +4 -3
- package/dist/esm/router/dashboard/[contentType]/[edit]/_components/EditToolbar.js.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_components/PreviewPanel.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_components/PreviewPanel.js +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_components/PreviewPanel.js.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_components/SeoTabContent.d.ts +2 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_components/SeoTabContent.d.ts.map +1 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_components/SeoTabContent.js +283 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_components/SeoTabContent.js.map +1 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_components/seo-analysis.d.ts +10 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_components/seo-analysis.d.ts.map +1 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_components/seo-analysis.js +83 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_components/seo-analysis.js.map +1 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_context/EditPageContext.d.ts +2 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_context/EditPageContext.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_context/EditPageContext.js +9 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_context/EditPageContext.js.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/ContentReferenceField/ContentReferenceMultiSelectUI.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/ContentReferenceField/ContentReferenceMultiSelectUI.js +15 -2
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/ContentReferenceField/ContentReferenceMultiSelectUI.js.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/DynamicDataControl.d.ts +6 -2
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/DynamicDataControl.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/DynamicDataControl.js +221 -234
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/DynamicDataControl.js.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/FileField/index.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/FileField/index.js +20 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/FileField/index.js.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/LinkField/LinkUI.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/LinkField/LinkUI.js +27 -21
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/LinkField/LinkUI.js.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/LinkField/index.d.ts +4 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/LinkField/index.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/LinkField/index.js.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/LinkField/linkValue.d.ts +4 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/LinkField/linkValue.d.ts.map +1 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/LinkField/linkValue.js +21 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/LinkField/linkValue.js.map +1 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/ListField/IteratorModulePicker.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/ListField/IteratorModulePicker.js +11 -2
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/ListField/IteratorModulePicker.js.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/ListField/SimpleListUI.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/ListField/SimpleListUI.js +38 -11
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/ListField/SimpleListUI.js.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/MenuField/MenuUI.d.ts +4 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/MenuField/MenuUI.d.ts.map +1 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/MenuField/MenuUI.js +130 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/MenuField/MenuUI.js.map +1 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/MenuField/index.d.ts +14 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/MenuField/index.d.ts.map +1 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/MenuField/index.js +5 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/MenuField/index.js.map +1 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/MenuField/menuTree.d.ts +23 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/MenuField/menuTree.d.ts.map +1 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/MenuField/menuTree.js +103 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/MenuField/menuTree.js.map +1 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/Select/MultiSelectUI.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/Select/MultiSelectUI.js +15 -2
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/Select/MultiSelectUI.js.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/shared/ItemLimitStatus.d.ts +6 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/shared/ItemLimitStatus.d.ts.map +1 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/shared/ItemLimitStatus.js +18 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/shared/ItemLimitStatus.js.map +1 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/shared/index.d.ts +2 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/shared/index.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_fields/shared/index.js.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_hooks/useContentDocumentActions.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_hooks/useContentDocumentActions.js +2 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_hooks/useContentDocumentActions.js.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_hooks/useContentPreview.d.ts +43 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_hooks/useContentPreview.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_hooks/useContentPreview.js +198 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/_hooks/useContentPreview.js.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/_hooks/useRouteLayoutData.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/edit.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/edit.js +10 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/edit.js.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/edit.types.d.ts +1 -0
- package/dist/esm/router/dashboard/[contentType]/[edit]/edit.types.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/screen.d.ts +2 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/screen.d.ts.map +1 -1
- package/dist/esm/router/dashboard/[contentType]/[edit]/screen.js +2 -2
- package/dist/esm/router/dashboard/[contentType]/[edit]/screen.js.map +1 -1
- package/dist/esm/router/dashboard/debugging/api-routes/ApiTest.d.ts.map +1 -1
- package/dist/esm/router/dashboard/debugging/api-routes/ApiTest.js +2 -2
- package/dist/esm/router/dashboard/debugging/api-routes/ApiTest.js.map +1 -1
- package/dist/esm/router/dashboard/debugging/api-routes/JsonViewer.d.ts +5 -0
- package/dist/esm/router/dashboard/debugging/api-routes/JsonViewer.d.ts.map +1 -0
- package/dist/esm/router/dashboard/debugging/api-routes/JsonViewer.js +14 -0
- package/dist/esm/router/dashboard/debugging/api-routes/JsonViewer.js.map +1 -0
- package/dist/esm/router/dashboard/debugging/api-routes/SchemaViewer.d.ts.map +1 -1
- package/dist/esm/router/dashboard/debugging/api-routes/SchemaViewer.js +42 -28
- package/dist/esm/router/dashboard/debugging/api-routes/SchemaViewer.js.map +1 -1
- package/dist/esm/router/dashboard/debugging/api-routes/test.d.ts.map +1 -1
- package/dist/esm/router/dashboard/debugging/api-routes/test.js +6 -5
- package/dist/esm/router/dashboard/debugging/api-routes/test.js.map +1 -1
- package/dist/esm/router/dashboard/seo/index.d.ts +2 -0
- package/dist/esm/router/dashboard/seo/index.d.ts.map +1 -0
- package/dist/esm/router/dashboard/seo/index.js +2 -0
- package/dist/esm/router/dashboard/seo/index.js.map +1 -0
- package/dist/esm/router/dashboard/seo/screen.d.ts +6 -0
- package/dist/esm/router/dashboard/seo/screen.d.ts.map +1 -0
- package/dist/esm/router/dashboard/seo/screen.js +212 -0
- package/dist/esm/router/dashboard/seo/screen.js.map +1 -0
- package/dist/esm/router/dashboard/seo/site-analysis.d.ts +40 -0
- package/dist/esm/router/dashboard/seo/site-analysis.d.ts.map +1 -0
- package/dist/esm/router/dashboard/seo/site-analysis.js +148 -0
- package/dist/esm/router/dashboard/seo/site-analysis.js.map +1 -0
- package/dist/esm/router/dashboard/settings/llms/index.d.ts +2 -0
- package/dist/esm/router/dashboard/settings/llms/index.d.ts.map +1 -0
- package/dist/esm/router/dashboard/settings/llms/index.js +2 -0
- package/dist/esm/router/dashboard/settings/llms/index.js.map +1 -0
- package/dist/esm/router/dashboard/settings/llms/screen.d.ts +2 -0
- package/dist/esm/router/dashboard/settings/llms/screen.d.ts.map +1 -0
- package/dist/esm/router/dashboard/settings/llms/screen.js +115 -0
- package/dist/esm/router/dashboard/settings/llms/screen.js.map +1 -0
- package/dist/esm/router/dashboard/settings/screen.d.ts.map +1 -1
- package/dist/esm/router/dashboard/settings/screen.js +8 -1
- package/dist/esm/router/dashboard/settings/screen.js.map +1 -1
- package/dist/esm/router/shared/route-definitions.d.ts +6 -2
- package/dist/esm/router/shared/route-definitions.d.ts.map +1 -1
- package/dist/esm/router/shared/route-definitions.js +3 -2
- package/dist/esm/router/shared/route-definitions.js.map +1 -1
- package/dist/esm/router/shared/route-list.d.ts +1 -1
- package/dist/esm/router/shared/route-list.d.ts.map +1 -1
- package/dist/esm/router/shared/route-list.js +17 -1
- package/dist/esm/router/shared/route-list.js.map +1 -1
- package/dist/esm/router/shared/route-renderer.d.ts.map +1 -1
- package/dist/esm/router/shared/route-renderer.js +2 -1
- package/dist/esm/router/shared/route-renderer.js.map +1 -1
- package/dist/esm/router/shared/types.d.ts +5 -0
- package/dist/esm/router/shared/types.d.ts.map +1 -1
- package/dist/styles.css +237 -6
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -11,7 +11,7 @@ export const PreviewPanel = () => {
|
|
|
11
11
|
const t = useTranslations();
|
|
12
12
|
const { previewState } = useEditPageContext();
|
|
13
13
|
const [fullscreenOpen, setFullscreenOpen] = useState(false);
|
|
14
|
-
return (_jsxs(_Fragment, { children: [_jsx("aside", { className: "min-h-130 overflow-hidden rounded-md border bg-background xl:sticky xl:top-20 xl:h-[calc(100vh-15rem)]", children: _jsxs("div", { className: "flex h-full min-h-0 flex-col", children: [_jsxs("div", { className: "flex h-12 shrink-0 items-center justify-between gap-3 border-b px-3", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [_jsx(Monitor, { className: "size-4 shrink-0" }), _jsx("span", { className: "truncate text-sm font-medium", children: t('common.preview') }), previewState.isPreviewPending ? (_jsx("span", { className: "text-muted-foreground text-xs", children: t('contentEdit.updating') })) : null] }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs(Button, { variant: "ghost", size: "icon", loading: previewState.isPreviewPending, onClick: () => void previewState.handlePreview(), children: [_jsx(RefreshCw, {}), _jsx("span", { className: "sr-only", children: t('contentEdit.updatePreview') })] }) }), _jsx(TooltipContent, { side: "left", children: t('contentEdit.updatePreview') })] }), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs(Button, { variant: previewState.previewInspectorEnabled ? 'secondary' : 'ghost', size: "icon", disabled: !previewState.previewUrl, "aria-pressed": previewState.previewInspectorEnabled, onClick: () => previewState.setPreviewInspectorEnabled((enabled) => !enabled), children: [_jsx(SquareDashedMousePointer, {}), _jsx("span", { className: "sr-only", children: t('contentEdit.selectModule') })] }) }), _jsx(TooltipContent, { side: "left", children: previewState.previewInspectorEnabled
|
|
14
|
+
return (_jsxs(_Fragment, { children: [_jsx("aside", { className: "min-h-130 overflow-hidden rounded-md border bg-background xl:sticky xl:top-20 xl:h-[calc(100vh-15rem)]", children: _jsxs("div", { className: "flex h-full min-h-0 flex-col", children: [_jsxs("div", { className: "flex h-12 shrink-0 items-center justify-between gap-3 border-b px-3", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [_jsx(Monitor, { className: "size-4 shrink-0" }), _jsx("span", { className: "truncate text-sm font-medium", children: t('common.preview') }), previewState.isPreviewPending ? (_jsx("span", { className: "text-muted-foreground text-xs", children: t('contentEdit.updating') })) : null] }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs(Button, { variant: "ghost", size: "icon", loading: previewState.isPreviewPending, disabled: previewState.isSeoAnalysisPending, onClick: () => void previewState.handlePreview(), children: [_jsx(RefreshCw, {}), _jsx("span", { className: "sr-only", children: t('contentEdit.updatePreview') })] }) }), _jsx(TooltipContent, { side: "left", children: t('contentEdit.updatePreview') })] }), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs(Button, { variant: previewState.previewInspectorEnabled ? 'secondary' : 'ghost', size: "icon", disabled: !previewState.previewUrl, "aria-pressed": previewState.previewInspectorEnabled, onClick: () => previewState.setPreviewInspectorEnabled((enabled) => !enabled), children: [_jsx(SquareDashedMousePointer, {}), _jsx("span", { className: "sr-only", children: t('contentEdit.selectModule') })] }) }), _jsx(TooltipContent, { side: "left", children: previewState.previewInspectorEnabled
|
|
15
15
|
? t('contentEdit.stopSelectingModules')
|
|
16
16
|
: t('contentEdit.selectModule') })] }), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs(Button, { variant: "ghost", size: "icon", disabled: !previewState.previewUrl, onClick: () => setFullscreenOpen(true), children: [_jsx(Maximize2, {}), _jsx("span", { className: "sr-only", children: t('contentEdit.openLargePreview') })] }) }), _jsx(TooltipContent, { side: "left", children: t('contentEdit.openLargePreview') })] }), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs(Button, { variant: "ghost", size: "icon", onClick: () => previewState.setPreviewOpen(false), children: [_jsx(EyeOff, {}), _jsx("span", { className: "sr-only", children: t('contentEdit.closePreview') })] }) }), _jsx(TooltipContent, { side: "left", children: t('contentEdit.closePreview') })] })] })] }), previewState.previewError ? (_jsx("div", { className: "border-b px-3 py-2 text-sm text-destructive", children: previewState.previewError })) : null, previewState.previewUrl ? (_jsx("iframe", { ref: previewState.previewFrameRef, allow: "fullscreen", className: "min-h-0 flex-1 border-0", src: previewState.previewUrl, tabIndex: -1, title: t('common.preview') }, previewState.previewUrl)) : (_jsx("div", { className: "text-muted-foreground flex flex-1 items-center justify-center text-sm", children: t('contentEdit.loadingPreview') }))] }) }), _jsx(Dialog, { open: fullscreenOpen, onOpenChange: setFullscreenOpen, children: _jsxs(DialogContent, { showCloseButton: false, className: "flex h-[calc(100vh-2rem)] max-h-[calc(100vh-2rem)] w-[calc(100vw-2rem)] max-w-none flex-col gap-0 overflow-hidden p-0 sm:max-w-none", children: [_jsxs("div", { className: "flex h-12 shrink-0 items-center justify-between gap-3 border-b px-4", children: [_jsxs(DialogTitle, { className: "flex min-w-0 items-center gap-2 text-sm", children: [_jsx(Monitor, { className: "size-4 shrink-0" }), _jsx("span", { className: "truncate", children: t('common.preview') })] }), _jsx(DialogClose, { asChild: true, children: _jsxs(Button, { variant: "ghost", size: "icon", children: [_jsx(X, {}), _jsx("span", { className: "sr-only", children: t('contentEdit.closeLargePreview') })] }) })] }), previewState.previewUrl ? (_jsx("iframe", { allow: "fullscreen", className: "min-h-0 flex-1 border-0", src: previewState.previewUrl, title: t('common.preview') }, `fullscreen:${previewState.previewUrl}`)) : null] }) })] }));
|
|
17
17
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewPanel.js","sourceRoot":"","sources":["../../../../../../../src/router/dashboard/[contentType]/[edit]/_components/PreviewPanel.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PreviewPanel.js","sourceRoot":"","sources":["../../../../../../../src/router/dashboard/[contentType]/[edit]/_components/PreviewPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SeoTabContent.d.ts","sourceRoot":"","sources":["../../../../../../../src/router/dashboard/[contentType]/[edit]/_components/SeoTabContent.tsx"],"names":[],"mappings":"AAqIA,eAAO,MAAM,aAAa,+CAulBzB,CAAA"}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { Braces, CheckCircle2, CircleX, History, RotateCcw, Search, Share2, Tags, TriangleAlert, } from 'lucide-react';
|
|
4
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
5
|
+
import ContentTypeEdit from '../ContentTypeEdit.js';
|
|
6
|
+
import { useEditPageContext } from '../_context/EditPageContext.js';
|
|
7
|
+
import { buildSeoChecks, getSeoScore } from './seo-analysis.js';
|
|
8
|
+
import { useManagerQuery } from '../../../../../client/react.js';
|
|
9
|
+
import { Badge } from '../../../../../components/ui/badge.js';
|
|
10
|
+
import { Button } from '../../../../../components/ui/button.js';
|
|
11
|
+
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '../../../../../components/ui/card.js';
|
|
12
|
+
import { Tabs, TabsContent, TabsList, TabsTrigger } from '../../../../../components/ui/tabs.js';
|
|
13
|
+
import { cn } from '../../../../../lib/utils.js';
|
|
14
|
+
import { useTranslations } from '../../../../../i18n/index.js';
|
|
15
|
+
import { formatDate } from '../../../../../helpers/formatDate.js';
|
|
16
|
+
import { getActionErrorMessage } from '../../../../../helpers/get-action-error-message.js';
|
|
17
|
+
import { useSession } from '../../../../../state/session.js';
|
|
18
|
+
const statusStyles = {
|
|
19
|
+
good: 'border-emerald-500/30 bg-emerald-500/5 text-emerald-700 dark:text-emerald-300',
|
|
20
|
+
warning: 'border-amber-500/30 bg-amber-500/5 text-amber-700 dark:text-amber-300',
|
|
21
|
+
error: 'border-destructive/30 bg-destructive/5 text-destructive',
|
|
22
|
+
};
|
|
23
|
+
const StatusIcon = ({ status }) => {
|
|
24
|
+
if (status === 'good')
|
|
25
|
+
return _jsx(CheckCircle2, { className: "size-4" });
|
|
26
|
+
if (status === 'warning')
|
|
27
|
+
return _jsx(TriangleAlert, { className: "size-4" });
|
|
28
|
+
return _jsx(CircleX, { className: "size-4" });
|
|
29
|
+
};
|
|
30
|
+
const getDisplayUrl = (value) => {
|
|
31
|
+
try {
|
|
32
|
+
const url = new URL(value);
|
|
33
|
+
return `${url.host}${url.pathname}`;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const formatJsonLd = (value) => {
|
|
40
|
+
try {
|
|
41
|
+
return JSON.stringify(JSON.parse(value), null, 2);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
const readSavedReport = (value) => {
|
|
48
|
+
if (!value || typeof value !== 'object')
|
|
49
|
+
return null;
|
|
50
|
+
const report = value;
|
|
51
|
+
if (typeof report.url !== 'string' ||
|
|
52
|
+
typeof report.title !== 'string' ||
|
|
53
|
+
typeof report.description !== 'string' ||
|
|
54
|
+
typeof report.canonical !== 'string' ||
|
|
55
|
+
typeof report.siteUrl !== 'string' ||
|
|
56
|
+
typeof report.robots !== 'string' ||
|
|
57
|
+
typeof report.language !== 'string' ||
|
|
58
|
+
!Array.isArray(report.headings) ||
|
|
59
|
+
!report.images ||
|
|
60
|
+
!Array.isArray(report.structuredData) ||
|
|
61
|
+
!report.openGraph ||
|
|
62
|
+
!report.twitter) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
return report;
|
|
66
|
+
};
|
|
67
|
+
const readSavedChecks = (value) => {
|
|
68
|
+
if (!Array.isArray(value))
|
|
69
|
+
return [];
|
|
70
|
+
return value.flatMap((item) => {
|
|
71
|
+
if (!item || typeof item !== 'object')
|
|
72
|
+
return [];
|
|
73
|
+
const check = item;
|
|
74
|
+
if (typeof check.id !== 'string' ||
|
|
75
|
+
!['good', 'warning', 'error'].includes(check.status) ||
|
|
76
|
+
typeof check.value !== 'number') {
|
|
77
|
+
return [];
|
|
78
|
+
}
|
|
79
|
+
return [check];
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
const readPageSeoAuditSnapshot = (payload) => {
|
|
83
|
+
try {
|
|
84
|
+
const value = JSON.parse(payload);
|
|
85
|
+
return {
|
|
86
|
+
report: readSavedReport(value.report),
|
|
87
|
+
checks: readSavedChecks(value.checks),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return { report: null, checks: [] };
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
export const SeoTabContent = () => {
|
|
95
|
+
const t = useTranslations();
|
|
96
|
+
const [view, setView] = useState('metadata');
|
|
97
|
+
const [selectedAuditId, setSelectedAuditId] = useState(null);
|
|
98
|
+
const { canPreview, contentType, contentTypeId, contentTypeName, form, languageCode, localeVariantRoute, previewState, sections, } = useEditPageContext();
|
|
99
|
+
const { hasAnyPermission } = useSession();
|
|
100
|
+
const canReadHistory = hasAnyPermission([
|
|
101
|
+
'content.SeoSettings.own',
|
|
102
|
+
'content.SeoSettings.readAny',
|
|
103
|
+
]);
|
|
104
|
+
const historyQuery = useManagerQuery({
|
|
105
|
+
name: 'manager.list',
|
|
106
|
+
input: {
|
|
107
|
+
contentType: 'SeoAudit',
|
|
108
|
+
query: {
|
|
109
|
+
filter: {
|
|
110
|
+
kind: 'page',
|
|
111
|
+
contentType: contentTypeName,
|
|
112
|
+
documentId: contentTypeId ?? '',
|
|
113
|
+
languageCode,
|
|
114
|
+
...(localeVariantRoute ? { routeKey: localeVariantRoute.key } : {}),
|
|
115
|
+
},
|
|
116
|
+
options: { limit: 20, sort: { createdAt: 'desc' } },
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
enabled: Boolean(canReadHistory && contentTypeId),
|
|
120
|
+
});
|
|
121
|
+
const history = (historyQuery.data?.items ?? []);
|
|
122
|
+
const selectedAudit = history.find((audit) => audit._id === selectedAuditId);
|
|
123
|
+
const selectedSnapshot = useMemo(() => (selectedAudit ? readPageSeoAuditSnapshot(selectedAudit.payload) : null), [selectedAudit]);
|
|
124
|
+
const liveReport = previewState.seoAnalysis;
|
|
125
|
+
const report = selectedAudit ? selectedSnapshot?.report ?? null : liveReport;
|
|
126
|
+
const checks = selectedAudit
|
|
127
|
+
? selectedSnapshot?.checks ?? []
|
|
128
|
+
: report
|
|
129
|
+
? buildSeoChecks(report)
|
|
130
|
+
: [];
|
|
131
|
+
const score = selectedAudit?.score ?? getSeoScore(checks);
|
|
132
|
+
useEffect(() => {
|
|
133
|
+
setSelectedAuditId(null);
|
|
134
|
+
}, [liveReport]);
|
|
135
|
+
useEffect(() => {
|
|
136
|
+
setSelectedAuditId(null);
|
|
137
|
+
}, [contentTypeId, languageCode, localeVariantRoute?.key]);
|
|
138
|
+
useEffect(() => {
|
|
139
|
+
if (previewState.seoAnalysisHistoryRevision === 0)
|
|
140
|
+
return;
|
|
141
|
+
void historyQuery.refetch();
|
|
142
|
+
}, [historyQuery.refetch, previewState.seoAnalysisHistoryRevision]);
|
|
143
|
+
const missingSocialFields = [
|
|
144
|
+
[report?.openGraph.title, t('contentEdit.seoSocialFieldTitle')],
|
|
145
|
+
[report?.openGraph.description, t('contentEdit.seoSocialFieldDescription')],
|
|
146
|
+
[report?.openGraph.image, t('contentEdit.seoSocialFieldImage')],
|
|
147
|
+
]
|
|
148
|
+
.filter(([value]) => !value)
|
|
149
|
+
.map(([, label]) => label);
|
|
150
|
+
const getCheckCopy = (check) => {
|
|
151
|
+
switch (check.id) {
|
|
152
|
+
case 'title':
|
|
153
|
+
return {
|
|
154
|
+
title: t('contentEdit.seoCheckTitle'),
|
|
155
|
+
description: check.status === 'error'
|
|
156
|
+
? t('contentEdit.seoTitleMissing')
|
|
157
|
+
: check.status === 'good'
|
|
158
|
+
? t('contentEdit.seoTitleGood', { count: check.value })
|
|
159
|
+
: t('contentEdit.seoTitleImprove', { count: check.value }),
|
|
160
|
+
};
|
|
161
|
+
case 'description':
|
|
162
|
+
return {
|
|
163
|
+
title: t('contentEdit.seoCheckDescription'),
|
|
164
|
+
description: check.status === 'error'
|
|
165
|
+
? t('contentEdit.seoDescriptionMissing')
|
|
166
|
+
: check.status === 'good'
|
|
167
|
+
? t('contentEdit.seoDescriptionGood', { count: check.value })
|
|
168
|
+
: t('contentEdit.seoDescriptionImprove', { count: check.value }),
|
|
169
|
+
};
|
|
170
|
+
case 'h1':
|
|
171
|
+
return {
|
|
172
|
+
title: t('contentEdit.seoCheckH1'),
|
|
173
|
+
description: check.value === 1
|
|
174
|
+
? t('contentEdit.seoH1Good')
|
|
175
|
+
: check.value === 0
|
|
176
|
+
? t('contentEdit.seoH1Missing')
|
|
177
|
+
: t('contentEdit.seoH1Multiple', { count: check.value }),
|
|
178
|
+
};
|
|
179
|
+
case 'headings':
|
|
180
|
+
return {
|
|
181
|
+
title: t('contentEdit.seoCheckHeadings'),
|
|
182
|
+
description: !report?.headings.length
|
|
183
|
+
? t('contentEdit.seoHeadingsMissing')
|
|
184
|
+
: check.value === 0
|
|
185
|
+
? t('contentEdit.seoHeadingsGood')
|
|
186
|
+
: t('contentEdit.seoHeadingsSkipped', { count: check.value }),
|
|
187
|
+
};
|
|
188
|
+
case 'images':
|
|
189
|
+
return {
|
|
190
|
+
title: t('contentEdit.seoCheckImages'),
|
|
191
|
+
description: check.value === 0
|
|
192
|
+
? t('contentEdit.seoImagesGood', { count: report?.images.total ?? 0 })
|
|
193
|
+
: t('contentEdit.seoImagesMissingAlt', { count: check.value }),
|
|
194
|
+
};
|
|
195
|
+
case 'canonical':
|
|
196
|
+
return {
|
|
197
|
+
title: t('contentEdit.seoCheckCanonical'),
|
|
198
|
+
description: report?.canonical
|
|
199
|
+
? t('contentEdit.seoCanonicalGood')
|
|
200
|
+
: report?.siteUrl
|
|
201
|
+
? t('contentEdit.seoCanonicalMissing')
|
|
202
|
+
: t('contentEdit.seoCanonicalSiteUrlMissing'),
|
|
203
|
+
};
|
|
204
|
+
case 'language':
|
|
205
|
+
return {
|
|
206
|
+
title: t('contentEdit.seoCheckLanguage'),
|
|
207
|
+
description: report?.language
|
|
208
|
+
? t('contentEdit.seoLanguageGood', { language: report.language })
|
|
209
|
+
: t('contentEdit.seoLanguageMissing'),
|
|
210
|
+
};
|
|
211
|
+
case 'indexing':
|
|
212
|
+
return {
|
|
213
|
+
title: t('contentEdit.seoCheckIndexing'),
|
|
214
|
+
description: check.status === 'good'
|
|
215
|
+
? t('contentEdit.seoIndexingGood')
|
|
216
|
+
: t('contentEdit.seoIndexingBlocked'),
|
|
217
|
+
};
|
|
218
|
+
case 'social':
|
|
219
|
+
return {
|
|
220
|
+
title: t('contentEdit.seoCheckSocial'),
|
|
221
|
+
description: check.value === 0
|
|
222
|
+
? t('contentEdit.seoSocialGood')
|
|
223
|
+
: t('contentEdit.seoSocialMissing', {
|
|
224
|
+
fields: missingSocialFields.join(', '),
|
|
225
|
+
}),
|
|
226
|
+
};
|
|
227
|
+
case 'structuredData':
|
|
228
|
+
return {
|
|
229
|
+
title: t('contentEdit.seoCheckStructuredData'),
|
|
230
|
+
description: report?.structuredData.length === 0
|
|
231
|
+
? t('contentEdit.seoStructuredDataNone')
|
|
232
|
+
: check.status === 'good'
|
|
233
|
+
? t('contentEdit.seoStructuredDataGood', {
|
|
234
|
+
count: report?.structuredData.length ?? 0,
|
|
235
|
+
})
|
|
236
|
+
: t('contentEdit.seoStructuredDataInvalid', { count: check.value }),
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
const socialTitle = report?.openGraph.title || report?.twitter.title || report?.title || '';
|
|
241
|
+
const socialDescription = report?.openGraph.description || report?.twitter.description || report?.description || '';
|
|
242
|
+
const socialImage = report?.openGraph.image || report?.twitter.image || '';
|
|
243
|
+
const resultUrl = report?.canonical || report?.url || '';
|
|
244
|
+
return (_jsxs(Tabs, { value: view, onValueChange: (value) => {
|
|
245
|
+
form.saveState();
|
|
246
|
+
setView(value);
|
|
247
|
+
}, className: "min-h-full gap-0", children: [_jsxs(TabsList, { variant: "line", className: "sticky top-0 z-20 h-auto w-full justify-start gap-6 rounded-none border-b bg-background/95 p-0 backdrop-blur supports-[backdrop-filter]:bg-background/80", children: [_jsxs(TabsTrigger, { value: "metadata", className: "-mb-px h-auto flex-none rounded-none border-x-0 border-t-0 border-b-2 border-b-transparent px-0 pt-1 pb-3 after:hidden data-[state=active]:border-b-primary dark:data-[state=active]:border-b-primary", children: [_jsx(Tags, {}), t('contentEdit.seoMetadataView')] }), _jsxs(TabsTrigger, { value: "analysis", className: "-mb-px h-auto flex-none rounded-none border-x-0 border-t-0 border-b-2 border-b-transparent px-0 pt-1 pb-3 after:hidden data-[state=active]:border-b-primary dark:data-[state=active]:border-b-primary", children: [_jsx(Search, {}), t('contentEdit.seoAnalysisView')] })] }), _jsx(TabsContent, { value: "metadata", forceMount: true, hidden: view !== 'metadata', className: "min-h-0 pt-5", children: _jsx(ContentTypeEdit, { defaultData: form.draft.current, ref: form.seoRef, contentType: sections.seo, parentContentType: contentType, initializeSeoBindings: !contentTypeId, id: contentTypeName, hideTitle: true }, `seo:${form.formRevision}`) }), _jsxs(TabsContent, { value: "analysis", forceMount: true, hidden: view !== 'analysis', className: "space-y-5 pt-5 pb-6", children: [_jsxs(Card, { children: [_jsxs(CardHeader, { className: "gap-3 sm:flex-row sm:items-center sm:justify-between", children: [_jsxs("div", { className: "space-y-1.5", children: [_jsx(CardTitle, { children: t('contentEdit.seoAnalysisTitle') }), _jsx(CardDescription, { children: t('contentEdit.seoAnalysisDescription') })] }), _jsxs(Button, { className: "shrink-0", disabled: !canPreview || previewState.isPreviewPending || previewState.isSeoAnalysisPending, loading: previewState.isSeoAnalysisPending, onClick: () => void previewState.handleSeoAnalysis(), children: [_jsx(Search, {}), liveReport
|
|
248
|
+
? t('contentEdit.seoRegenerateReport')
|
|
249
|
+
: t('contentEdit.seoGenerateReport')] })] }), !canPreview ? (_jsx(CardContent, { className: "text-muted-foreground text-sm", children: t('contentEdit.seoAnalysisUnavailable') })) : null, previewState.seoAnalysisError ? (_jsx(CardContent, { className: "text-destructive text-sm", children: previewState.seoAnalysisError })) : null] }), contentTypeId && canReadHistory ? (_jsxs(Card, { children: [_jsxs(CardHeader, { className: 'gap-3 sm:flex-row sm:items-center sm:justify-between', children: [_jsxs("div", { className: 'space-y-1.5', children: [_jsxs(CardTitle, { className: 'flex items-center gap-2', children: [_jsx(History, { className: 'size-4' }), t('contentEdit.seoHistoryTitle')] }), _jsx(CardDescription, { children: t('contentEdit.seoHistoryDescription') })] }), selectedAudit ? (_jsxs(Button, { variant: 'outline', size: 'sm', onClick: () => setSelectedAuditId(null), children: [_jsx(RotateCcw, {}), t('contentEdit.seoHistoryCurrent')] })) : null] }), _jsx(CardContent, { children: historyQuery.isLoading ? (_jsx("p", { className: 'text-sm text-muted-foreground', children: t('contentEdit.seoHistoryLoading') })) : historyQuery.isError ? (_jsx("p", { className: 'text-sm text-destructive', children: getActionErrorMessage(historyQuery.error, t('contentEdit.seoHistoryLoadError')) })) : history.length ? (_jsx("div", { className: 'flex gap-3 overflow-x-auto pb-1', children: history.map((audit) => (_jsxs("button", { type: 'button', className: cn('min-w-48 rounded-lg border p-3 text-left transition-colors hover:bg-accent', selectedAuditId === audit._id && 'border-primary bg-primary/5'), onClick: () => setSelectedAuditId(audit._id), children: [_jsx("span", { className: 'block text-xs text-muted-foreground', children: audit.createdAt
|
|
250
|
+
? formatDate(new Date(audit.createdAt))
|
|
251
|
+
: t('common.unknown') }), _jsxs("span", { className: 'mt-2 flex items-center justify-between gap-3', children: [_jsx("strong", { children: t('contentEdit.seoHistoryScore', { score: audit.score }) }), _jsxs("span", { className: 'flex gap-1', children: [audit.errorCount ? (_jsx(Badge, { variant: 'destructive', children: audit.errorCount })) : null, audit.warningCount ? (_jsx(Badge, { variant: 'secondary', children: audit.warningCount })) : null] })] })] }, audit._id))) })) : (_jsx("p", { className: 'text-sm text-muted-foreground', children: t('contentEdit.seoHistoryEmpty') })) })] })) : null, selectedAudit ? (_jsxs("div", { className: 'flex flex-wrap items-center gap-3 rounded-lg border border-primary/30 bg-primary/5 p-3 text-sm', children: [_jsx(History, { className: 'size-4 text-primary' }), _jsx("span", { className: 'font-medium', children: t('contentEdit.seoHistoryViewing') }), _jsx("span", { className: 'text-muted-foreground', children: selectedAudit.createdAt
|
|
252
|
+
? formatDate(new Date(selectedAudit.createdAt))
|
|
253
|
+
: t('common.unknown') })] })) : null, !report && selectedAudit && checks.length ? (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: t('contentEdit.seoHistorySnapshotTitle') }), _jsx(CardDescription, { children: t('contentEdit.seoHistorySnapshotDescription') })] }), _jsx(CardContent, { className: 'grid gap-3 md:grid-cols-2 xl:grid-cols-3', children: checks.map((check) => {
|
|
254
|
+
const copy = getCheckCopy(check);
|
|
255
|
+
return (_jsx("div", { className: cn('rounded-lg border p-4', statusStyles[check.status]), children: _jsxs("div", { className: 'flex items-center gap-2 font-medium', children: [_jsx(StatusIcon, { status: check.status }), copy.title] }) }, check.id));
|
|
256
|
+
}) })] })) : !report ? (_jsxs("div", { className: "text-muted-foreground flex min-h-64 flex-col items-center justify-center gap-3 rounded-lg border border-dashed p-8 text-center", children: [_jsx(Search, { className: "size-9" }), _jsxs("div", { children: [_jsx("p", { className: "font-medium text-foreground", children: t('contentEdit.seoNoReportTitle') }), _jsx("p", { className: "mt-1 max-w-lg text-sm", children: t('contentEdit.seoNoReportDescription') })] })] })) : (_jsxs(_Fragment, { children: [_jsx(Card, { children: _jsxs(CardContent, { className: "flex flex-col gap-5 pt-6 sm:flex-row sm:items-center", children: [_jsx("div", { className: cn('flex size-24 shrink-0 items-center justify-center rounded-full border-8 text-2xl font-semibold', score >= 80
|
|
257
|
+
? statusStyles.good
|
|
258
|
+
: score >= 50
|
|
259
|
+
? statusStyles.warning
|
|
260
|
+
: statusStyles.error), children: score }), _jsxs("div", { children: [_jsx("h3", { className: "text-lg font-semibold", children: t('contentEdit.seoScoreTitle') }), _jsx("p", { className: "text-muted-foreground mt-1 text-sm", children: t('contentEdit.seoScoreDescription') }), _jsx("div", { className: "mt-3 flex flex-wrap gap-2", children: ['good', 'warning', 'error'].map((status) => (_jsxs(Badge, { variant: "outline", className: statusStyles[status], children: [_jsx(StatusIcon, { status: status }), t(`contentEdit.seoStatus${status === 'good' ? 'Good' : status === 'warning' ? 'Warning' : 'Error'}`), ' · ', checks.filter((check) => check.status === status).length] }, status))) })] })] }) }), _jsx("div", { className: "grid gap-3 md:grid-cols-2 xl:grid-cols-3", children: checks.map((check) => {
|
|
261
|
+
const copy = getCheckCopy(check);
|
|
262
|
+
return (_jsxs("div", { className: cn('rounded-lg border p-4', statusStyles[check.status]), children: [_jsxs("div", { className: "flex items-center gap-2 font-medium", children: [_jsx(StatusIcon, { status: check.status }), copy.title] }), _jsx("p", { className: "mt-2 text-sm text-foreground/75", children: copy.description })] }, check.id));
|
|
263
|
+
}) }), _jsxs("div", { className: "grid items-start gap-5 xl:grid-cols-[minmax(0,3fr)_minmax(18rem,2fr)]", children: [_jsxs("div", { className: "grid gap-5", children: [_jsxs(Card, { className: "overflow-hidden", children: [_jsx(CardHeader, { children: _jsxs(CardTitle, { className: "flex items-center gap-2", children: [_jsx(Search, { className: "size-4" }), t('contentEdit.seoGooglePreview')] }) }), _jsx(CardContent, { children: _jsxs("div", { className: "rounded-lg border bg-white p-5 text-slate-900 shadow-sm", children: [_jsx("p", { className: "truncate text-sm text-emerald-800", children: getDisplayUrl(resultUrl) }), _jsx("p", { className: "mt-1 line-clamp-1 text-xl text-blue-800", children: report.title }), _jsx("p", { className: "mt-1 line-clamp-2 text-sm leading-5 text-slate-600", children: report.description })] }) })] }), _jsxs(Card, { className: "overflow-hidden", children: [_jsx(CardHeader, { children: _jsxs(CardTitle, { className: "flex items-center gap-2", children: [_jsx(Share2, { className: "size-4" }), t('contentEdit.seoSocialPreview')] }) }), _jsx(CardContent, { children: _jsxs("div", { className: "overflow-hidden rounded-lg border bg-muted/30", children: [socialImage ? (_jsx("img", { src: socialImage, alt: "", className: "aspect-[1.91/1] w-full bg-muted object-cover" })) : null, _jsxs("div", { className: "space-y-1 p-4", children: [_jsx("p", { className: "text-muted-foreground truncate text-xs uppercase", children: getDisplayUrl(report.openGraph.url || report.url) }), _jsx("p", { className: "line-clamp-1 font-semibold", children: socialTitle }), _jsx("p", { className: "text-muted-foreground line-clamp-2 text-sm", children: socialDescription })] })] }) })] })] }), _jsxs("div", { className: "grid gap-5", children: [_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: t('contentEdit.seoHeadingOutline') }), _jsx(CardDescription, { children: t('contentEdit.seoHeadingCount', { count: report.headings.length }) })] }), _jsx(CardContent, { className: "xl:max-h-[36rem] xl:overflow-y-auto", children: report.headings.length ? (_jsx("ol", { className: "space-y-2", children: report.headings.map((heading, index) => (_jsxs("li", { className: "flex min-w-0 items-center gap-3 text-sm", style: {
|
|
264
|
+
paddingInlineStart: `${Math.max(0, heading.level - 1) * 1.25}rem`,
|
|
265
|
+
}, children: [_jsx(Badge, { variant: "outline", children: t('contentEdit.seoHeadingLevel', { level: heading.level }) }), _jsx("span", { className: "truncate", children: heading.text || t('contentEdit.seoEmptyHeading') })] }, `${heading.level}:${index}`))) })) : (_jsx("p", { className: "text-muted-foreground text-sm", children: t('contentEdit.seoHeadingsMissing') })) })] }), _jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsxs(CardTitle, { className: "flex items-center gap-2", children: [_jsx(Braces, { className: "size-4" }), t('contentEdit.seoStructuredDataTitle')] }), _jsx(CardDescription, { children: t('contentEdit.seoStructuredDataCount', {
|
|
266
|
+
count: report.structuredData.length,
|
|
267
|
+
}) })] }), _jsx(CardContent, { children: report.structuredData.length ? (_jsx("div", { className: "space-y-3", children: report.structuredData.map((item, index) => {
|
|
268
|
+
const issues = [
|
|
269
|
+
!item.valid ? t('contentEdit.seoStructuredDataInvalidJson') : null,
|
|
270
|
+
item.valid && !item.hasContext
|
|
271
|
+
? t('contentEdit.seoStructuredDataMissingContext')
|
|
272
|
+
: null,
|
|
273
|
+
item.valid && item.types.length === 0
|
|
274
|
+
? t('contentEdit.seoStructuredDataMissingType')
|
|
275
|
+
: null,
|
|
276
|
+
].filter(Boolean);
|
|
277
|
+
const valid = issues.length === 0;
|
|
278
|
+
return (_jsxs("div", { className: "rounded-lg border p-3", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsxs(Badge, { variant: "outline", className: valid ? statusStyles.good : statusStyles.error, children: [_jsx(StatusIcon, { status: valid ? 'good' : 'error' }), valid
|
|
279
|
+
? t('contentEdit.seoStructuredDataValid')
|
|
280
|
+
: t('contentEdit.seoStructuredDataNeedsAttention')] }), item.types.map((type) => (_jsx(Badge, { variant: "secondary", children: type }, type)))] }), issues.length ? (_jsxs("ul", { className: "mt-3 space-y-1 text-sm text-destructive", children: [issues.map((issue) => (_jsx("li", { children: issue }, issue))), !item.valid && item.error ? (_jsx("li", { className: "font-mono text-xs", children: item.error })) : null] })) : null, _jsxs("details", { className: "mt-3", children: [_jsx("summary", { className: "text-muted-foreground cursor-pointer text-sm", children: t('contentEdit.seoStructuredDataViewJson') }), _jsx("pre", { className: "mt-2 max-h-80 overflow-auto rounded-md bg-muted p-3 text-xs whitespace-pre-wrap", children: formatJsonLd(item.raw) })] })] }, index));
|
|
281
|
+
}) })) : (_jsx("p", { className: "text-muted-foreground text-sm", children: t('contentEdit.seoStructuredDataNone') })) })] })] })] })] }))] })] }));
|
|
282
|
+
};
|
|
283
|
+
//# sourceMappingURL=SeoTabContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SeoTabContent.js","sourceRoot":"","sources":["../../../../../../../src/router/dashboard/[contentType]/[edit]/_components/SeoTabContent.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SeoAnalysisReport } from '../_hooks/useContentPreview.js';
|
|
2
|
+
export type SeoCheckStatus = 'good' | 'warning' | 'error';
|
|
3
|
+
export type SeoCheck = {
|
|
4
|
+
id: 'title' | 'description' | 'h1' | 'headings' | 'images' | 'canonical' | 'language' | 'indexing' | 'social' | 'structuredData';
|
|
5
|
+
status: SeoCheckStatus;
|
|
6
|
+
value: number;
|
|
7
|
+
};
|
|
8
|
+
export declare const buildSeoChecks: (report: SeoAnalysisReport) => SeoCheck[];
|
|
9
|
+
export declare const getSeoScore: (checks: SeoCheck[]) => number;
|
|
10
|
+
//# sourceMappingURL=seo-analysis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seo-analysis.d.ts","sourceRoot":"","sources":["../../../../../../../src/router/dashboard/[contentType]/[edit]/_components/seo-analysis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAEpE,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAA;AAEzD,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EACE,OAAO,GACP,aAAa,GACb,IAAI,GACJ,UAAU,GACV,QAAQ,GACR,WAAW,GACX,UAAU,GACV,UAAU,GACV,QAAQ,GACR,gBAAgB,CAAA;IACpB,MAAM,EAAE,cAAc,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AASD,eAAO,MAAM,cAAc,GAAI,QAAQ,iBAAiB,KAAG,QAAQ,EA6ElE,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,QAAQ,QAAQ,EAAE,WAS7C,CAAA"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
const getHeadingSkips = (headings) => headings.reduce((skips, heading, index) => {
|
|
2
|
+
const previousLevel = index === 0 ? 0 : (headings[index - 1]?.level ?? 0);
|
|
3
|
+
return heading.level > previousLevel + 1 ? skips + 1 : skips;
|
|
4
|
+
}, 0);
|
|
5
|
+
export const buildSeoChecks = (report) => {
|
|
6
|
+
const titleLength = report.title.length;
|
|
7
|
+
const descriptionLength = report.description.length;
|
|
8
|
+
const h1Count = report.headings.filter((heading) => heading.level === 1).length;
|
|
9
|
+
const headingSkips = getHeadingSkips(report.headings);
|
|
10
|
+
const missingSocialFields = [
|
|
11
|
+
report.openGraph.title,
|
|
12
|
+
report.openGraph.description,
|
|
13
|
+
report.openGraph.image,
|
|
14
|
+
].filter((value) => !value).length;
|
|
15
|
+
const invalidStructuredData = report.structuredData.filter((item) => !item.valid || !item.hasContext || item.types.length === 0).length;
|
|
16
|
+
return [
|
|
17
|
+
{
|
|
18
|
+
id: 'title',
|
|
19
|
+
status: titleLength === 0 ? 'error' : titleLength >= 30 && titleLength <= 60 ? 'good' : 'warning',
|
|
20
|
+
value: titleLength,
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: 'description',
|
|
24
|
+
status: descriptionLength === 0
|
|
25
|
+
? 'error'
|
|
26
|
+
: descriptionLength >= 120 && descriptionLength <= 160
|
|
27
|
+
? 'good'
|
|
28
|
+
: 'warning',
|
|
29
|
+
value: descriptionLength,
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
id: 'h1',
|
|
33
|
+
status: h1Count === 1 ? 'good' : h1Count === 0 ? 'error' : 'warning',
|
|
34
|
+
value: h1Count,
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
id: 'headings',
|
|
38
|
+
status: report.headings.length === 0 || headingSkips > 0 ? 'warning' : 'good',
|
|
39
|
+
value: headingSkips,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
id: 'images',
|
|
43
|
+
status: report.images.missingAlt > 0 ? 'error' : 'good',
|
|
44
|
+
value: report.images.missingAlt,
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
id: 'canonical',
|
|
48
|
+
status: report.canonical ? 'good' : 'warning',
|
|
49
|
+
value: report.canonical ? 1 : 0,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: 'language',
|
|
53
|
+
status: report.language ? 'good' : 'warning',
|
|
54
|
+
value: report.language ? 1 : 0,
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
id: 'indexing',
|
|
58
|
+
status: /(?:^|,)\s*noindex\b/i.test(report.robots) ? 'error' : 'good',
|
|
59
|
+
value: /(?:^|,)\s*noindex\b/i.test(report.robots) ? 0 : 1,
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
id: 'social',
|
|
63
|
+
status: missingSocialFields === 0 ? 'good' : 'warning',
|
|
64
|
+
value: missingSocialFields,
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
id: 'structuredData',
|
|
68
|
+
status: report.structuredData.length === 0
|
|
69
|
+
? 'warning'
|
|
70
|
+
: invalidStructuredData > 0
|
|
71
|
+
? 'error'
|
|
72
|
+
: 'good',
|
|
73
|
+
value: invalidStructuredData,
|
|
74
|
+
},
|
|
75
|
+
];
|
|
76
|
+
};
|
|
77
|
+
export const getSeoScore = (checks) => {
|
|
78
|
+
if (checks.length === 0)
|
|
79
|
+
return 0;
|
|
80
|
+
const points = checks.reduce((total, check) => total + (check.status === 'good' ? 1 : check.status === 'warning' ? 0.5 : 0), 0);
|
|
81
|
+
return Math.round((points / checks.length) * 100);
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=seo-analysis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seo-analysis.js","sourceRoot":"","sources":["../../../../../../../src/router/dashboard/[contentType]/[edit]/_components/seo-analysis.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,6 +33,7 @@ type EditPageContextValue = {
|
|
|
33
33
|
openMoveToTrashDialog: () => void;
|
|
34
34
|
openPermanentDeleteDialog: () => void;
|
|
35
35
|
previewState: ReturnType<typeof useContentPreview>;
|
|
36
|
+
publicUrl?: string;
|
|
36
37
|
localeVariantRoute?: ContentTypeRouteMeta;
|
|
37
38
|
routeLayout: ReturnType<typeof useRouteLayoutData>;
|
|
38
39
|
sections: ReturnType<typeof useContentTypeSections>;
|
|
@@ -49,7 +50,7 @@ type EditPageContextValue = {
|
|
|
49
50
|
pending: boolean;
|
|
50
51
|
};
|
|
51
52
|
};
|
|
52
|
-
export declare const EditPageProvider: ({ children, contentType, defaultData, preview, onAfterRestore, }: PropsWithChildren<EditPageProps>) => import("react/jsx-runtime").JSX.Element;
|
|
53
|
+
export declare const EditPageProvider: ({ children, contentType, defaultData, preview, siteUrl, onAfterRestore, }: PropsWithChildren<EditPageProps>) => import("react/jsx-runtime").JSX.Element;
|
|
53
54
|
export declare const useEditPageContext: () => EditPageContextValue;
|
|
54
55
|
export {};
|
|
55
56
|
//# sourceMappingURL=EditPageContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditPageContext.d.ts","sourceRoot":"","sources":["../../../../../../../src/router/dashboard/[contentType]/[edit]/_context/EditPageContext.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"EditPageContext.d.ts","sourceRoot":"","sources":["../../../../../../../src/router/dashboard/[contentType]/[edit]/_context/EditPageContext.tsx"],"names":[],"mappings":"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"}
|
|
@@ -153,7 +153,7 @@ const resolveLocaleVariantDocumentId = ({ data, language, languageList, }) => {
|
|
|
153
153
|
}
|
|
154
154
|
return data.primaryDocumentId;
|
|
155
155
|
};
|
|
156
|
-
export const EditPageProvider = ({ children, contentType, defaultData, preview, onAfterRestore, }) => {
|
|
156
|
+
export const EditPageProvider = ({ children, contentType, defaultData, preview, siteUrl, onAfterRestore, }) => {
|
|
157
157
|
const t = useTranslations();
|
|
158
158
|
const { language, languageList } = useLanguage();
|
|
159
159
|
const { hasPermissions } = useSession();
|
|
@@ -299,6 +299,13 @@ export const EditPageProvider = ({ children, contentType, defaultData, preview,
|
|
|
299
299
|
languageList,
|
|
300
300
|
});
|
|
301
301
|
const previewRoute = localeVariantRoute;
|
|
302
|
+
const publicPath = localeVariantsQuery.data?.assignments.find((assignment) => assignment.documentId === contentTypeId &&
|
|
303
|
+
assignment.language.code === language.code)?.path;
|
|
304
|
+
const publicUrl = publicPath && !isTrashed
|
|
305
|
+
? siteUrl
|
|
306
|
+
? new URL(publicPath, siteUrl).toString()
|
|
307
|
+
: publicPath
|
|
308
|
+
: undefined;
|
|
302
309
|
const canPreview = Boolean(preview && previewRoute && !isTrashed);
|
|
303
310
|
const targetLocaleVariantDocumentId = useMemo(() => resolveLocaleVariantDocumentId({
|
|
304
311
|
data: localeVariantsQuery.data,
|
|
@@ -519,6 +526,7 @@ export const EditPageProvider = ({ children, contentType, defaultData, preview,
|
|
|
519
526
|
});
|
|
520
527
|
},
|
|
521
528
|
previewState,
|
|
529
|
+
publicUrl,
|
|
522
530
|
localeVariantRoute,
|
|
523
531
|
routeLayout,
|
|
524
532
|
sections,
|