page adn app header mods
This commit is contained in:
@@ -14,7 +14,7 @@ import {
|
||||
bulkDeleteContent,
|
||||
} from '../../services/api';
|
||||
import { optimizerApi } from '../../api/optimizer.api';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { useNavigate, Link } from 'react-router-dom';
|
||||
import { useToast } from '../../components/ui/toast/ToastContainer';
|
||||
import { FileIcon, TaskIcon, CheckCircleIcon } from '../../icons';
|
||||
import { createContentPageConfig } from '../../config/pages/content.config';
|
||||
@@ -24,7 +24,7 @@ import ProgressModal from '../../components/common/ProgressModal';
|
||||
import { useProgressModal } from '../../hooks/useProgressModal';
|
||||
import PageHeader from '../../components/common/PageHeader';
|
||||
import ModuleMetricsFooter, { MetricItem, ProgressMetric } from '../../components/dashboard/ModuleMetricsFooter';
|
||||
import { WorkflowInsight } from '../../components/common/WorkflowInsights';
|
||||
import { PencilSquareIcon } from '@heroicons/react/24/outline';
|
||||
|
||||
export default function Content() {
|
||||
const toast = useToast();
|
||||
@@ -55,59 +55,6 @@ export default function Content() {
|
||||
const progressModal = useProgressModal();
|
||||
const hasReloadedRef = useRef(false);
|
||||
|
||||
// Calculate workflow insights
|
||||
const workflowInsights: WorkflowInsight[] = useMemo(() => {
|
||||
const insights: WorkflowInsight[] = [];
|
||||
const draftCount = content.filter(c => c.status === 'draft').length;
|
||||
const reviewCount = content.filter(c => c.status === 'review').length;
|
||||
const publishedCount = content.filter(c => c.status === 'published').length;
|
||||
const publishingRate = totalCount > 0 ? Math.round((publishedCount / totalCount) * 100) : 0;
|
||||
|
||||
if (totalCount === 0) {
|
||||
insights.push({
|
||||
type: 'info',
|
||||
message: 'No content yet - Generate content from tasks to build your content library',
|
||||
});
|
||||
return insights;
|
||||
}
|
||||
|
||||
// Draft vs Review status
|
||||
if (draftCount > reviewCount * 3 && draftCount >= 5) {
|
||||
insights.push({
|
||||
type: 'warning',
|
||||
message: `${draftCount} drafts waiting for review - Move content to review stage for quality assurance`,
|
||||
});
|
||||
} else if (draftCount > 0) {
|
||||
insights.push({
|
||||
type: 'info',
|
||||
message: `${draftCount} drafts in progress - Review and refine before moving to publish stage`,
|
||||
});
|
||||
}
|
||||
|
||||
// Review queue status
|
||||
if (reviewCount > 0) {
|
||||
insights.push({
|
||||
type: 'action',
|
||||
message: `${reviewCount} pieces awaiting final review - Approve and publish when ready`,
|
||||
});
|
||||
}
|
||||
|
||||
// Publishing readiness
|
||||
if (publishingRate >= 60 && publishedCount >= 10) {
|
||||
insights.push({
|
||||
type: 'success',
|
||||
message: `Strong publishing rate (${publishingRate}%) - ${publishedCount} articles ready for WordPress sync`,
|
||||
});
|
||||
} else if (publishedCount > 0) {
|
||||
insights.push({
|
||||
type: 'success',
|
||||
message: `${publishedCount} articles published (${publishingRate}%) - Continue moving content through the pipeline`,
|
||||
});
|
||||
}
|
||||
|
||||
return insights;
|
||||
}, [content, totalCount]);
|
||||
|
||||
// Load content - wrapped in useCallback
|
||||
const loadContent = useCallback(async () => {
|
||||
setLoading(true);
|
||||
@@ -281,10 +228,20 @@ export default function Content() {
|
||||
<>
|
||||
<PageHeader
|
||||
title="Drafts"
|
||||
description="AI-generated content ready for review. Add images, edit, and publish when ready."
|
||||
badge={{ icon: <FileIcon />, color: 'purple' }}
|
||||
breadcrumb="Writer / Drafts"
|
||||
workflowInsights={workflowInsights}
|
||||
description="Manage content drafts"
|
||||
badge={{ icon: <PencilSquareIcon />, color: 'orange' }}
|
||||
breadcrumb="Writer"
|
||||
actions={
|
||||
<Link
|
||||
to="/writer/images"
|
||||
className="inline-flex items-center gap-2 px-3 py-1.5 text-sm font-medium text-white bg-brand-500 hover:bg-brand-600 rounded-lg transition-colors"
|
||||
>
|
||||
Generate Images
|
||||
<svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 5l7 7-7 7" />
|
||||
</svg>
|
||||
</Link>
|
||||
}
|
||||
/>
|
||||
<TablePageTemplate
|
||||
columns={pageConfig.columns}
|
||||
|
||||
Reference in New Issue
Block a user