import Link from "next/link"; import { contributorAvatarUrl, dedupeContributors, type Contributor } from "@/lib/contributors"; const landingContributorLimit = 72; const landingContributorRowSizes = [12, 16, 16, 16, 12] as const; function ContributorAvatar({ c }: { c: Contributor }) { return ( {c.login} {c.login} {c.contributions} contributions ); } export function ContributorsWallContent({ contributors, title, desc, lang }: { contributors: Contributor[]; title: string; desc: string; lang: "en" | "cn" }) { const uniqueContributors = dedupeContributors(contributors); const visibleContributors = uniqueContributors.slice(0, landingContributorLimit); let contributorOffset = 0; const contributorRows = landingContributorRowSizes.map((rowSize) => { const row = visibleContributors.slice(contributorOffset, contributorOffset + rowSize); contributorOffset += rowSize; return row; }); if (uniqueContributors.length === 0) return null; return ( <>

{title}

{desc}{" "} {lang === "cn" ? `查看 ${uniqueContributors.length}+ 位贡献者` : `Explore ${uniqueContributors.length}+ contributors`} {lang === "cn" ? "下载贡献者证书" : "Download contributor certificate"}

{contributorRows.map((row, rowIndex) => (
{row.map((c) => ( ))}
))}
); }