您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

LoadingMeter.tsx 1.1KB

1234567891011121314151617181920212223242526272829303132333435
  1. import React from 'react';
  2. type LoadingMeterProps = {
  3. title: string,
  4. progress: number,
  5. total: number
  6. }
  7. const LoadingMeter: React.FC<LoadingMeterProps> = ({ title = "Title", progress = 0, total = 0 }) => {
  8. const barProgress = (progress * 100) / total;
  9. if(progress > total) return <p className='text-red-500'>Progress is more than total</p>
  10. return (
  11. <div className="flex flex-col gap-2 w-full max-w-md mb-2">
  12. {/* Header Row */}
  13. <div className="flex flex-row justify-between text-sm font-medium text-gray-700">
  14. <span>{`${title}: `}</span>
  15. <span>{`${progress}/${total}`}</span>
  16. </div>
  17. {/* Progress Bar */}
  18. <div className="w-full h-3 bg-gray-200 rounded-full border overflow-hidden">
  19. <div
  20. className="h-full bg-[#b64fb1] rounded-full transition-all duration-500"
  21. style={{ width: `${barProgress}%` }}
  22. ></div>
  23. </div>
  24. </div>
  25. );
  26. };
  27. export default LoadingMeter;