--- import Base from "../layouts/Base.astro"; import Header from "../components/layout/Header.astro"; import Footer from "../components/layout/Footer.astro"; import CommunityCard from "../components/communities/CommunityCard.astro"; import { getLiveCollection } from "astro:content"; const communitiesResult = await getLiveCollection("communities"); const communities = communitiesResult.entries?.map((entry) => entry.data) ?? []; const REGION_ORDER = ["North America — USA", "North America — Canada", "South America", "Europe", "Online", "Other"]; const grouped = new Map(); for (const community of communities) { const region = community.region ?? "Other"; if (!grouped.has(region)) grouped.set(region, []); grouped.get(region)!.push(community); } const regionRank = (r: string) => { const i = REGION_ORDER.indexOf(r); return i === -1 ? REGION_ORDER.length : i; }; const regions = [...grouped.keys()].sort( (a, b) => regionRank(a) - regionRank(b) || a.localeCompare(b), ); ---

Communities

AT Protocol communities around the world. Each group is run independently by local organizers. Find one near you or start your own.

{regions.map((region) => (

{region}

{grouped.get(region)!.map(c => (
{c.description &&

{c.description}

}
))}
))}