import { getMemberToken, getApiBaseUrl } from '../../_lib/api'; import { CircleJoinButton } from './CircleJoinButton'; import Link from 'next/link'; interface CircleItem { id: string; name: string; description: string | null; isPublic: boolean; memberCount: number; isMember: boolean; myRole: 'MEMBER' | 'LEAD' | null; } async function fetchCircles(token: string): Promise { const res = await fetch(`${getApiBaseUrl()}/my/circles`, { headers: { Authorization: `Bearer ${token}` }, cache: 'no-store', }).catch(() => null); if (!res || !res.ok) return []; return (await res.json()) as CircleItem[]; } function CircleCard({ c }: { c: CircleItem }) { return (

{c.name}

{c.myRole === 'LEAD' && ( Lead )} {!c.isPublic && ( Private )}

{c.memberCount} member{c.memberCount !== 1 ? 's' : ''}

{c.description &&

{c.description}

}
); } export default async function CirclesPage() { const token = await getMemberToken(); if (!token) return null; const circles = await fetchCircles(token); const mine = circles.filter((c) => c.isMember); const discover = circles.filter((c) => !c.isMember); return (

Circles

← Dashboard
{circles.length === 0 && (

No circles yet.

Your chapter admin will create interest circles you can join.

)} {mine.length > 0 && (

My circles

{mine.map((c) => )}
)} {discover.length > 0 && (

Discover

{discover.map((c) => )}
)}
); }