import { useState } from 'react'; import { Badge } from '@renderer/components/ui/badge'; import { DialogDescription, DialogTitle } from '@renderer/components/ui/dialog'; import { formatAgentRole } from '@renderer/utils/formatAgentRole'; import { agentAvatarUrl, getMemberDotClass, getPresenceLabel } from '@renderer/utils/memberHelpers'; import { Pencil } from 'lucide-react'; import { MemberRoleEditor } from './MemberRoleEditor'; import type { ResolvedTeamMember } from '@shared/types'; interface MemberDetailHeaderProps { member: ResolvedTeamMember; isTeamAlive?: boolean; isTeamProvisioning?: boolean; onUpdateRole?: (newRole: string | undefined) => Promise | void; updatingRole?: boolean; } export const MemberDetailHeader = ({ member, isTeamAlive, isTeamProvisioning, onUpdateRole, updatingRole, }: MemberDetailHeaderProps): React.JSX.Element => { const [editing, setEditing] = useState(false); const role = member.role || formatAgentRole(member.agentType); const presenceLabel = getPresenceLabel(member, isTeamAlive, isTeamProvisioning); const dotClass = getMemberDotClass(member, isTeamAlive, isTeamProvisioning); const canEditRole = member.agentType !== 'team-lead' && !member.removedAt && !isTeamProvisioning && !!onUpdateRole; return (
{member.name}
{member.name} {editing ? ( { try { await onUpdateRole?.(newRole); setEditing(false); } catch { // stay in editing mode so user can retry } }} onCancel={() => setEditing(false)} /> ) : ( <> {role || 'No role'} {canEditRole && ( )} )} {!editing && ( {presenceLabel} )}
); };