import { getMemberColor } from '@shared/constants/memberColors'; import { MemberCard } from './MemberCard'; import type { TaskStatusCounts } from '@renderer/utils/pathNormalize'; import type { ResolvedTeamMember, TeamTaskWithKanban } from '@shared/types'; interface MemberListProps { members: ResolvedTeamMember[]; memberTaskCounts?: Map; taskMap?: Map; pendingRepliesByMember?: Record; isTeamAlive?: boolean; isTeamProvisioning?: boolean; onMemberClick?: (member: ResolvedTeamMember) => void; onSendMessage?: (member: ResolvedTeamMember) => void; onAssignTask?: (member: ResolvedTeamMember) => void; onOpenTask?: (task: TeamTaskWithKanban) => void; } export const MemberList = ({ members, memberTaskCounts, taskMap, pendingRepliesByMember, isTeamAlive, isTeamProvisioning, onMemberClick, onSendMessage, onAssignTask, onOpenTask, }: MemberListProps): React.JSX.Element => { if (members.length === 0) { return (
No members found
); } return (
{members.map((member, index) => { const currentTask = member.currentTaskId && taskMap ? (taskMap.get(member.currentTaskId) ?? null) : null; const awaitingReply = Boolean(pendingRepliesByMember?.[member.name]); return ( onOpenTask?.(currentTask) : undefined} onClick={() => onMemberClick?.(member)} onSendMessage={() => onSendMessage?.(member)} onAssignTask={() => onAssignTask?.(member)} /> ); })}
); };