components/charts/pie-chart.tsx (33 lines of code) (raw):
"use client";
import { Pie } from "react-chartjs-2";
import { Chart as ChartJS, ArcElement, Tooltip, Legend } from "chart.js";
ChartJS.register(ArcElement, Tooltip, Legend);
interface DataItem {
label: string;
value: string;
}
export interface Component {
title: string;
text?: string;
chart: string;
data: DataItem[];
}
const chartColors = ["#00BFFF", "#e1a95f", "#FF4500", "#FFE66D"];
const getChartData = (data: any) => {
return {
labels: data?.map((item: any) => item.label) || [],
datasets: [
{
data: data?.map((item: any) => parseFloat(item.value)) || [],
backgroundColor: chartColors,
},
],
};
};
export function PieChartComponent({ title, data }: Component) {
const chartData = getChartData(data);
return (
<div className="flex flex-col justify-center items-center">
<h1 className="text-white mb-2 font-medium text-xl">{title}</h1>
<Pie data={chartData} />
</div>
);
}