'use client' import { ResponsiveBar } from '@nivo/bar' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { nivoTheme, BRAND_COLORS } from './chart-theme' interface StageComparison { roundId: string roundName: string projectCount: number evaluationCount: number completionRate: number averageScore: number | null scoreDistribution: { score: number; count: number }[] } interface CrossStageComparisonProps { data: StageComparison[] } export function CrossStageComparisonChart({ data, }: CrossStageComparisonProps) { if (!data?.length) { return ( No comparison data available ) } const baseData = data.map((round) => ({ name: round.roundName.length > 20 ? round.roundName.slice(0, 20) + '...' : round.roundName, projects: round.projectCount, evaluations: round.evaluationCount, completionRate: round.completionRate, avgScore: round.averageScore ? parseFloat(round.averageScore.toFixed(2)) : 0, })) const sharedMargin = { top: 10, right: 10, bottom: 40, left: 40 } return ( Round Metrics Comparison Projects Evaluations Completion Rate `${v}%`} margin={sharedMargin} padding={0.3} axisBottom={{ tickRotation: -25, }} axisLeft={{ format: (v) => `${v}%`, }} animate={true} /> Average Score ) }
No comparison data available