Alleinzellgaenger's picture
Endy version
d38750a
import React from 'react';
const ProgressBar = ({
currentChunkIndex,
totalChunks,
onChunkClick = null // Optional: allow clicking on progress bar segments
}) => {
const progressPercentage = totalChunks > 0 ? ((currentChunkIndex +1) / totalChunks) * 100 : 0;
return (
<div className="w-full">
{/* Progress Label */}
<div className="flex justify-between items-center mb-2">
<span className="text-sm font-medium text-gray-700">
Progress: {Math.round(progressPercentage)}%
</span>
<span className="text-sm text-gray-500">
{currentChunkIndex + 1} of {totalChunks} sections
</span>
</div>
{/* Progress Bar */}
<div className="w-full bg-gray-200 rounded-lg h-3 overflow-hidden shadow-sm relative">
{/* Progress fill */}
<div
className="h-full bg-green-500 transition-all duration-500 ease-out rounded-lg"
style={{ width: `${progressPercentage}%` }}
/>
{/* Optional: Clickable segments overlay */}
{onChunkClick && (
<div className="absolute inset-0 flex">
{Array.from({ length: totalChunks }, (_, index) => (
<button
key={index}
onClick={() => onChunkClick(index)}
className="flex-1 hover:bg-white hover:bg-opacity-20 transition-colors duration-200"
title={`Go to chunk ${index + 1}`}
/>
))}
</div>
)}
</div>
</div>
);
};
export default ProgressBar;