diff --git a/src/renderer/components/team/members/MemberCard.tsx b/src/renderer/components/team/members/MemberCard.tsx
index fac78f59..e62680c8 100644
--- a/src/renderer/components/team/members/MemberCard.tsx
+++ b/src/renderer/components/team/members/MemberCard.tsx
@@ -567,6 +567,118 @@ const MemberRuntimeTelemetryStrip = memo(function MemberRuntimeTelemetryStrip({
);
});
+interface MemberActionButtonProps {
+ label: string;
+ children: React.ReactNode;
+ onClick?: () => void;
+}
+
+const MemberActionButton = memo(function MemberActionButton({
+ label,
+ children,
+ onClick,
+}: MemberActionButtonProps): React.JSX.Element {
+ const [tooltipOpen, setTooltipOpen] = useState(false);
+
+ return (
+
+
+
+
+ {tooltipOpen ? {label} : null}
+
+ );
+});
+
+interface MemberQuickActionsProps {
+ onSendMessage?: () => void;
+ onAssignTask?: () => void;
+}
+
+const MemberQuickActions = memo(function MemberQuickActions({
+ onSendMessage,
+ onAssignTask,
+}: MemberQuickActionsProps): React.JSX.Element {
+ const { t } = useAppTranslation('team');
+
+ return (
+
+ );
+});
+
+interface MemberTaskProgressBadgeProps {
+ showStartingSkeleton: boolean;
+ memberTaskCount: number;
+ completed: number;
+ totalTasks: number;
+ progressPercent: number;
+}
+
+const MemberTaskProgressBadge = memo(function MemberTaskProgressBadge({
+ showStartingSkeleton,
+ memberTaskCount,
+ completed,
+ totalTasks,
+ progressPercent,
+}: MemberTaskProgressBadgeProps): React.JSX.Element {
+ if (showStartingSkeleton) {
+ return (
+
+ );
+ }
+
+ return (
+ 0 ? `${completed}/${totalTasks} completed` : undefined}
+ >
+
+ {memberTaskCount} {memberTaskCount === 1 ? 'task' : 'tasks'}
+
+ {totalTasks > 0 && (
+
+ )}
+ {/* NOTE: lead context bar disabled - usage formula is inaccurate */}
+
+ );
+});
+
export const MemberCard = memo(function MemberCard({
teamName,
member,
@@ -1416,75 +1528,15 @@ export const MemberCard = memo(function MemberCard({
{isRemoved ? 'removed' : displayPresenceLabel}
) : null}
- {showStartingSkeleton ? (
-
- ) : (
- 0 ? `${completed}/${totalTasks} completed` : undefined}
- >
-
- {member.taskCount} {member.taskCount === 1 ? 'task' : 'tasks'}
-
- {totalTasks > 0 && (
-
- )}
- {/* NOTE: lead context bar disabled — usage formula is inaccurate */}
-
- )}
+
{!isRemoved && (
-
-
-
-
-
- {t('members.actions.sendMessage')}
-
-
-
-
-
- {t('members.actions.assignTask')}
-
-
+
)}
{canRestoreMember ? (