import React from "react"; import PropTypes from "prop-types"; /** * BadgeProgress component - displays progress bars for badges in progress * @param {Array} badges - Array of badge objects with progress information */ const BadgeProgress = ({ badges }) => { // Filter to show only badges that are in progress (not earned and have some progress) const inProgressBadges = badges.filter( (badge) => !badge.isEarned && badge.progress > 0 && badge.threshold > 0 ); if (inProgressBadges.length === 0) { return (

Complete tasks and participate in events to earn badges!

); } return (
Badges In Progress
{inProgressBadges.map((badge) => { const percentage = Math.round((badge.progress / badge.threshold) * 100); return (
{badge.icon || "🏆"}
{badge.name}
{badge.description}
{badge.progress} / {badge.threshold}
= 75 ? "bg-success" : percentage >= 50 ? "bg-info" : "bg-warning"}`} role="progressbar" style={{ width: `${percentage}%` }} aria-valuenow={badge.progress} aria-valuemin="0" aria-valuemax={badge.threshold} > {percentage}%
); })}
); }; BadgeProgress.propTypes = { badges: PropTypes.arrayOf( PropTypes.shape({ _id: PropTypes.string.isRequired, name: PropTypes.string.isRequired, description: PropTypes.string.isRequired, icon: PropTypes.string, progress: PropTypes.number.isRequired, threshold: PropTypes.number.isRequired, isEarned: PropTypes.bool.isRequired, }) ).isRequired, }; export default BadgeProgress;