Problem
There is no way for members to discover other hub members. No member directory or public profile exists, hindering community building.
Proposed Solution
Create frontend/cntr/MemberDirectory/MemberDirectory.tsx. Props: members: { id: string, fullName: string, avatarUrl?: string, role: string, joinedDate: string }[], isLoading?: boolean. Renders a responsive grid of member cards. Each card shows avatar (or initials in a colour circle), full name, role badge, and join date. Includes a client-side search input filtering by fullName. All implementation must live inside frontend/cntr/.
Acceptance Criteria
Problem
There is no way for members to discover other hub members. No member directory or public profile exists, hindering community building.
Proposed Solution
Create
frontend/cntr/MemberDirectory/MemberDirectory.tsx. Props:members: { id: string, fullName: string, avatarUrl?: string, role: string, joinedDate: string }[],isLoading?: boolean. Renders a responsive grid of member cards. Each card shows avatar (or initials in a colour circle), full name, role badge, and join date. Includes a client-side search input filtering byfullName. All implementation must live insidefrontend/cntr/.Acceptance Criteria
frontend/cntr/MemberDirectory/MemberDirectory.tsxisLoadingistruefullName(case-insensitive)avatarUrlis null, shows initials in a coloured circle (colour derived from name)frontend/cntr/MemberDirectory/MemberDirectory.test.tsx