import { useAppTranslation } from '@features/localization/renderer'; import { CheckCircle, Clock, Play } from 'lucide-react'; import type { TaskStatusCounts } from '@renderer/utils/pathNormalize'; import type React from 'react'; interface TeamTaskStatusSummaryProps { counts?: TaskStatusCounts | null; className?: string; showProgress?: boolean; iconSize?: number; countersClassName?: string; } function normalizeCounts(counts?: TaskStatusCounts | null): TaskStatusCounts { return { pending: counts?.pending ?? 0, inProgress: counts?.inProgress ?? 0, completed: counts?.completed ?? 0, }; } function getTaskStatusTotal(counts?: TaskStatusCounts | null): number { const normalized = normalizeCounts(counts); return normalized.pending + normalized.inProgress + normalized.completed; } export const TeamTaskStatusSummary = ({ counts, className = 'mt-2 w-full space-y-1.5', showProgress = true, iconSize = 10, countersClassName = 'flex flex-wrap items-center gap-x-3 gap-y-0.5 text-[10px] text-[var(--color-text-muted)]', }: Readonly): React.JSX.Element | null => { const { t } = useAppTranslation('team'); const normalized = normalizeCounts(counts); const totalTasks = getTaskStatusTotal(normalized); const completedRatio = totalTasks > 0 ? normalized.completed / totalTasks : 0; if (!showProgress && totalTasks === 0) { return null; } return (
{showProgress && (
{normalized.completed}/{totalTasks}
)} {totalTasks > 0 && (
{normalized.inProgress > 0 && ( {t('tasks.statusSummary.inProgress', { count: normalized.inProgress })} )} {normalized.pending > 0 && ( {t('tasks.statusSummary.pending', { count: normalized.pending })} )} {normalized.completed > 0 && ( {t('tasks.statusSummary.completed', { count: normalized.completed })} )}
)}
); };