interface ProgressBarProps { percentages: number[]; colors?: string[]; textColors?: string[]; displayPercentage?: boolean; } export default function ProgressBar({ percentages, colors, textColors, displayPercentage = true, }: ProgressBarProps) { if (!colors) { colors = ["bg-green-300", "bg-yellow-400", "bg-orange-500", "bg-red-600"]; } if (!textColors) { textColors = ["text-black", "text-black", "text-white", "text-white"]; } const getColor = (index: number) => { return colors ? colors[index] || "bg-neutral-100" : "bg-neutral-100"; }; const getTextColor = (index: number) => textColors?.[index] || "text-black"; const sortedPercentages = [...percentages].sort((a, b) => b - a); return (
{sortedPercentages.map((percentage, index) => { const spanleft = 100 - (((percentage - sortedPercentages[index + 1]) / 2) * 100) / percentage; return (
{displayPercentage && percentage > 0 && (spanleft < 96 || isNaN(spanleft)) && ( {percentage}% )}
); })}
); }