UpNext / Agency Card
Agency Card
<AgencyCard />StableThe agency identity card — the unit a coach scans in the agency directory and clicks to open a profile. One row: a square org logo (never the person circle), the agency name with the optional UpNext-Certified trust badge beside it, and a location · athlete-count meta line. Certification wears ONE fixed outfit — the Badge primitive at primary/soft/xs with the status.verified registry glyph and a visible label (screen readers hear 'UpNext Certified'); an uncertified agency simply has no badge — absence is the distinction, the directory stays quiet. The name + meta pair rides the TextBlock base by reference (heading md verbatim; meta at the body-light register), the shell is the AthleteCard surface grammar (card + shadow-base, hover is a fill change only, press + ring on interactive cards), and every color resolves through tokens — dark mode ships free.
Agency directory — live
The agency directory, 1:1 — certified and uncertified agencies mixed in one grid, the trust badge the only tell. Each card carries the square logo (initials fallback on an identity color), the name, and location · athlete count. The whole card is one control — click to prove the wiring; the page owns the data and what opening an agency does.
Click any card — href renders a link, onSelect a button.
Inspector
Edit one prop at a time and see the token chain resolve. The preview re-renders, the code panel updates, and the resolves-to column shows every Tailwind class → CSS variable → final value.
Preview
Code
import { AgencyCard } from "@/components/upnext";<AgencyCard />
States
A card is a link (href), a button (onSelect), or a static <article> (neither). Certified adds the fixed trust badge; uncertified adds nothing. Names truncate with a title tooltip; the badge and the athlete count never truncate. With no location or count the meta line drops and the identity row holds the height.
{/* the fixed trust outfit — Badge primary/soft/xs + status.verified;screen readers hear "UpNext Certified" */}<AgencyCard name="Nilson Sports" certified location="NJ" athleteCount={180} />
Source
A domain composite built entirely from public primitives: Avatar (the square org mark with initials fallback), Badge (the fixed Certified outfit), Icon (status.verified + user.group from the registry), and the TextBlock base for the name + meta pair. No fetching, no state — the page supplies the agencies and owns navigation.