import { useMemo } from 'react'; import { Badge } from '@renderer/components/ui/badge'; import { KANBAN_COLUMN_DISPLAY, REVIEW_STATE_DISPLAY, TASK_STATUS_LABELS, TASK_STATUS_STYLES, } from '@renderer/utils/memberHelpers'; import { formatTaskDisplayLabel } from '@shared/utils/taskIdentity'; import { getTeamTaskWorkflowColumn, isTeamTaskNeedsFixActionable, } from '@shared/utils/teamTaskState'; import type { TeamTaskWithKanban } from '@shared/types'; interface MemberTasksTabProps { tasks: TeamTaskWithKanban[]; onTaskClick?: (task: TeamTaskWithKanban) => void; } const STATUS_ORDER: Record = { in_progress: 0, pending: 1, completed: 2, }; export const MemberTasksTab = ({ tasks, onTaskClick }: MemberTasksTabProps): React.JSX.Element => { const visibleTasks = useMemo( () => tasks .filter((t) => t.status !== 'deleted') .sort((a, b) => (STATUS_ORDER[a.status] ?? 3) - (STATUS_ORDER[b.status] ?? 3)), [tasks] ); if (visibleTasks.length === 0) { return (
No tasks assigned to this member
); } return (
{visibleTasks.map((task) => { const col = getTeamTaskWorkflowColumn(task); const style = col && KANBAN_COLUMN_DISPLAY[col] ? { bg: KANBAN_COLUMN_DISPLAY[col].bg, text: KANBAN_COLUMN_DISPLAY[col].text } : TASK_STATUS_STYLES[task.status]; const label = col && KANBAN_COLUMN_DISPLAY[col] ? KANBAN_COLUMN_DISPLAY[col].label : TASK_STATUS_LABELS[task.status]; return ( ); })}
); };