/** * @file components/members/MemberList.tsx * @description Renders categorized online and offline member lists. */ import { useMemo } from "react"; import { MemberItem, type Member } from "@/components/members/MemberItem"; /** * Renders categorized lists of online and offline members with user counters. * * @param {Object} props - Component properties. * @param {Member[]} [props.members=[]] - Array of member objects to group and render. * @returns {JSX.Element} The rendered member list container. */ export function MemberList({ members = [] }: { members?: Member[] }) { const { onlineMembers, offlineMembers } = useMemo(() => { return { onlineMembers: members.filter((m) => m.status !== "OFFLINE"), offlineMembers: members.filter((m) => m.status === "OFFLINE"), }; }, [members]); return (
{/* Online Section */}

Online — {onlineMembers.length}

{onlineMembers.map((member) => ( ))} {onlineMembers.length === 0 && (

No members online

)}
{/* Offline Section */}

Offline — {offlineMembers.length}

{offlineMembers.map((member) => ( ))}
); }