import React, { useState, useEffect } from "react"; import { ReviewItem, ReviewStatus, UserRole } from "../types/review"; import ReviewWorkflowEngine from "./ReviewWorkflowEngine"; interface ContentReviewDashboardProps { siteId: string; userId: string; userRole: UserRole; className?: string; } interface DashboardStats { totalReviews: number; pendingReviews: number; approvedToday: number; overdueReviews: number; avgReviewTime: number; completionRate: number; } interface FilterOptions { status: ReviewStatus | "all"; priority: "all" | "urgent" | "high" | "medium" | "low"; contentType: "all" | string; dateRange: "today" | "week" | "month" | "all"; } export const ContentReviewDashboard: React.FC = ({ siteId, userId, userRole, className = "", }) => { const [stats, setStats] = useState({ totalReviews: 0, pendingReviews: 0, approvedToday: 0, overdueReviews: 0, avgReviewTime: 0, completionRate: 0, }); const [filters, setFilters] = useState({ status: "all", priority: "all", contentType: "all", dateRange: "week", }); const [activeTab, setActiveTab] = useState< "overview" | "reviews" | "analytics" | "settings" >("overview"); const [isLoading, setIsLoading] = useState(true); // Mock stats data useEffect(() => { const loadStats = async () => { setIsLoading(true); // Simulate API call await new Promise((resolve) => setTimeout(resolve, 1000)); setStats({ totalReviews: 156, pendingReviews: 12, approvedToday: 8, overdueReviews: 3, avgReviewTime: 2.5, completionRate: 94, }); setIsLoading(false); }; loadStats(); }, [siteId, filters.dateRange]); const getStatColor = ( value: number, type: "good" | "neutral" | "warning" | "danger" ) => { switch (type) { case "good": return "text-green-600"; case "neutral": return "text-blue-600"; case "warning": return "text-orange-600"; case "danger": return "text-red-600"; default: return "text-gray-600"; } }; const renderOverviewTab = () => (
{/* Stats Grid */}

Total Reviews

{stats.totalReviews}

Pending Reviews

{stats.pendingReviews}

Approved Today

{stats.approvedToday}

Overdue Reviews

{stats.overdueReviews}

Avg Review Time

{stats.avgReviewTime}h

Completion Rate

{stats.completionRate}%

{/* Recent Activity */}

Recent Activity

{[ { id: 1, action: "approved", content: "Hero Section Update", user: "Content Manager", time: "2 hours ago", type: "content_update", }, { id: 2, action: "submitted", content: "New FAQ Section", user: "Marketing Team", time: "4 hours ago", type: "content_creation", }, { id: 3, action: "rejected", content: "Pricing Page Changes", user: "Legal Team", time: "6 hours ago", type: "legal_compliance", }, ].map((activity) => (

{activity.user}{" "} {activity.action} {activity.content}

{activity.time}

{activity.type.replace("_", " ")}
))}
); const renderFilters = () => (
); const renderAnalyticsTab = () => (

Review Performance Metrics

Review Volume by Type

{[ { type: "Hero Section", count: 45, percentage: 28 }, { type: "CTA Section", count: 32, percentage: 20 }, { type: "Features Section", count: 28, percentage: 18 }, { type: "Pricing Section", count: 25, percentage: 16 }, { type: "FAQ Section", count: 15, percentage: 10 }, { type: "Testimonials", count: 11, percentage: 8 }, ].map((item) => (
{item.type}
{item.count}
))}

Average Review Time by Stage

{[ { stage: "Editor Review", time: "1.2 hours", status: "good" }, { stage: "Content Review", time: "2.8 hours", status: "neutral", }, { stage: "Legal Review", time: "4.5 hours", status: "warning" }, { stage: "Final Approval", time: "0.8 hours", status: "good" }, ].map((item) => (
{item.stage} {item.time}
))}

Reviewer Performance

{[ { name: "Content Manager", completed: 24, avgTime: "2.1h", approvalRate: 95, }, { name: "Marketing Lead", completed: 18, avgTime: "1.8h", approvalRate: 92, }, { name: "Legal Reviewer", completed: 12, avgTime: "4.2h", approvalRate: 88, }, { name: "SEO Specialist", completed: 15, avgTime: "1.5h", approvalRate: 98, }, ].map((reviewer) => ( ))}
Reviewer Reviews Completed Avg Time Approval Rate
{reviewer.name} {reviewer.completed} {reviewer.avgTime} {reviewer.approvalRate}%
); if (isLoading) { return (
Loading dashboard...
); } return (
{/* Header */}

Content Review Dashboard

Manage and monitor content review processes across your AgentC sites

{/* Navigation Tabs */}
{/* Tab Content */} {activeTab === "overview" && renderOverviewTab()} {activeTab === "reviews" && (
{renderFilters()}
)} {activeTab === "analytics" && renderAnalyticsTab()} {activeTab === "settings" && (

Review Process Settings

Settings configuration will be implemented in future iterations.

)}
); }; export default ContentReviewDashboard;