import { useStore } from '@nanostores/react'; import type { TeamMember } from './TeamProgressPage'; import { useState } from 'react'; import { $currentTeam } from '../../stores/team'; import { cn } from '../../lib/classname'; type MemberProgressItemProps = { member: TeamMember; onShowResourceProgress: ( resourceId: string, isCustomResource: boolean, ) => void; isMyProgress?: boolean; teamId: string; }; export function MemberProgressItem(props: MemberProgressItemProps) { const { member, onShowResourceProgress, isMyProgress = false, teamId, } = props; const currentTeam = useStore($currentTeam); const memberProgress = member?.progress?.sort((a, b) => { return b.done - a.done; }); const [showAll, setShowAll] = useState(false); const isPersonalProgressOnly = currentTeam?.personalProgressOnly && currentTeam.role === 'member' && String(member._id) !== currentTeam.memberId; const memberDetailsUrl = `/team/member?t=${teamId}&m=${member._id}`; return ( <>
{member.name
{!isMyProgress && ( { if (isPersonalProgressOnly) { e.preventDefault(); } }} aria-disabled={isPersonalProgressOnly} > {member.name} )} {isMyProgress && (
{ if (isPersonalProgressOnly) { e.preventDefault(); } }} aria-disabled={isPersonalProgressOnly} > {member.name} You
)}

{member.email}

{(showAll ? memberProgress : memberProgress.slice(0, 4)).map( (progress) => { return ( ); }, )} {memberProgress.length > 4 && !showAll && ( )} {showAll && ( )} {memberProgress.length === 0 && (
No progress
)}
); }