NLP-IBM-Debater / src /app /components /analysis /StanceDistributionChart.tsx
Yassine Mhirsi
fixed typescript adn added logout
2251e03
import React from 'react';
import { PieChart, Pie, Cell, ResponsiveContainer, Legend, Tooltip } from 'recharts';
import type { StanceStats } from '../../utils/analysis.utils.ts';
type StanceDistributionChartProps = {
stats: StanceStats;
};
const COLORS = {
PRO: '#10b981', // green-500
CON: '#ef4444', // red-500
};
const StanceDistributionChart = ({ stats }: StanceDistributionChartProps) => {
const data = [
{ name: 'PRO', value: stats.pro, percentage: stats.proPercentage },
{ name: 'CON', value: stats.con, percentage: stats.conPercentage },
];
return (
<div className="h-64 w-full">
<ResponsiveContainer width="100%" height="100%">
<PieChart>
<Pie
data={data}
cx="50%"
cy="50%"
labelLine={false}
label={({ name, percentage }) => `${name}: ${percentage.toFixed(1)}%`}
outerRadius={80}
fill="#8884d8"
dataKey="value"
>
{data.map((entry, index) => (
<Cell
key={`cell-${index}`}
fill={entry.name === 'PRO' ? COLORS.PRO : COLORS.CON}
/>
))}
</Pie>
<Tooltip
formatter={(value: number, name: string, props: any) => [
`${value} (${props.payload.percentage.toFixed(1)}%)`,
name,
]}
/>
<Legend />
</PieChart>
</ResponsiveContainer>
</div>
);
};
export default StanceDistributionChart;