doctor-mail/apps/web/src/components/models/course/card/CourseStats.tsx

59 lines
2.1 KiB
TypeScript
Raw Normal View History

2024-12-31 15:57:32 +08:00
import { StarIcon, ChartBarIcon, ClockIcon } from '@heroicons/react/24/solid';
interface CourseStatsProps {
averageRating?: number;
numberOfReviews?: number;
completionRate?: number;
totalDuration?: number;
}
export const CourseStats = ({
averageRating,
numberOfReviews,
completionRate,
totalDuration,
}: CourseStatsProps) => {
return (
2025-01-03 09:24:46 +08:00
<div className="grid grid-cols-2 gap-4 p-6 bg-gray-50 ">
2024-12-31 15:57:32 +08:00
{averageRating !== undefined && (
<div className="flex items-center gap-2">
<StarIcon className="h-5 w-5 text-yellow-400" />
<div>
2025-01-03 09:24:46 +08:00
<div className="font-semibold text-gray-900 ">
2024-12-31 15:57:32 +08:00
{averageRating.toFixed(1)}
</div>
2025-01-03 09:24:46 +08:00
<div className="text-xs text-gray-500 ">
2024-12-31 15:57:32 +08:00
{numberOfReviews} reviews
</div>
</div>
</div>
)}
{completionRate !== undefined && (
<div className="flex items-center gap-2">
<ChartBarIcon className="h-5 w-5 text-green-500" />
<div>
2025-01-03 09:24:46 +08:00
<div className="font-semibold text-gray-900 ">
2024-12-31 15:57:32 +08:00
{completionRate}%
</div>
2025-01-03 09:24:46 +08:00
<div className="text-xs text-gray-500 ">
2024-12-31 15:57:32 +08:00
Completion
</div>
</div>
</div>
)}
{totalDuration !== undefined && (
<div className="flex items-center gap-2">
<ClockIcon className="h-5 w-5 text-blue-500" />
<div>
2025-01-03 09:24:46 +08:00
<div className="font-semibold text-gray-900 ">
2024-12-31 15:57:32 +08:00
{Math.floor(totalDuration / 60)}h {totalDuration % 60}m
</div>
2025-01-03 09:24:46 +08:00
<div className="text-xs text-gray-500 ">
2024-12-31 15:57:32 +08:00
Duration
</div>
</div>
</div>
)}
</div>
);
};