import { Badge } from '@renderer/components/ui/badge'; import { Tooltip, TooltipContent, TooltipTrigger } from '@renderer/components/ui/tooltip'; import { getTeamColorSet } from '@renderer/constants/teamColors'; import { formatAgentRole } from '@renderer/utils/formatAgentRole'; import { agentAvatarUrl, getMemberDotClass, getPresenceLabel } from '@renderer/utils/memberHelpers'; import { GitBranch, Loader2, MessageSquare, Plus } from 'lucide-react'; import type { TaskStatusCounts } from '@renderer/utils/pathNormalize'; import type { LeadActivityState, ResolvedTeamMember, TeamTaskWithKanban } from '@shared/types'; interface MemberCardProps { member: ResolvedTeamMember; memberColor: string; taskCounts?: TaskStatusCounts | null; isTeamAlive?: boolean; isTeamProvisioning?: boolean; leadActivity?: LeadActivityState; currentTask?: TeamTaskWithKanban | null; isAwaitingReply?: boolean; isRemoved?: boolean; onOpenTask?: () => void; onClick?: () => void; onSendMessage?: () => void; onAssignTask?: () => void; } export const MemberCard = ({ member, memberColor, taskCounts, isTeamAlive, isTeamProvisioning, leadActivity, currentTask, isAwaitingReply, isRemoved, onOpenTask, onClick, onSendMessage, onAssignTask, }: MemberCardProps): React.JSX.Element => { // NOTE: lead context display disabled — usage formula is inaccurate // const teamName = useStore((s) => s.selectedTeamName); // const leadContext = useStore((s) => // member.agentType === 'team-lead' && teamName ? s.leadContextByTeam[teamName] : undefined // ); const dotClass = getMemberDotClass(member, isTeamAlive, isTeamProvisioning, leadActivity); const presenceLabel = getPresenceLabel(member, isTeamAlive, isTeamProvisioning, leadActivity); const colors = getTeamColorSet(memberColor); const pending = taskCounts?.pending ?? 0; const inProgress = taskCounts?.inProgress ?? 0; const completed = taskCounts?.completed ?? 0; const totalTasks = pending + inProgress + completed; const progressPercent = totalTasks > 0 ? Math.round((completed / totalTasks) * 100) : 0; return (