09 — Components
Data Display, Tags & Avatars
Live standings table, stat cards, avatar system, badge taxonomy, and skeleton loading states. All built from shadcn primitives with CPSL tokens.
League Standings Table — Live Component
| # | Club | P | W | D | L | GD | Pts | Form |
|---|---|---|---|---|---|---|---|---|
| 1 | CF Charlotte FC | 18 | 14 | 2 | 2 | +30 | 44 | WWDWW |
| 2 | RR Raleigh RH | 18 | 12 | 3 | 3 | +18 | 39 | WLWWD |
| 3 | DU Durham Utd | 18 | 11 | 2 | 5 | +11 | 35 | DWWLW |
| 4 | TF Triangle FC | 18 | 9 | 4 | 5 | +8 | 31 | LWDWL |
| 5 | GF Greensboro | 18 | 8 | 3 | 7 | -2 | 27 | WDLWL |
| 6 | WS W-Salem SC | 18 | 6 | 5 | 7 | -4 | 23 | DLDWD |
| 7 | AC Asheville | 18 | 5 | 3 | 10 | -16 | 18 | LLWLD |
| 8 | OB Outer Banks | 18 | 2 | 2 | 14 | -34 | 8 | LLDLL |
Promotion
Playoff
Relegation
tsx
import { StandingsTable } from "@/components/cpsl/StandingsTable"
<StandingsTable
rows={standingsData}
promotionZone={1}
playoffZone={3}
relegationZone={2}
highlightTeam="Charlotte FC Academy"
showForm
/>Stat Cards — Live Components
Goals Scored48
+8 vs last season
Goals Conceded18
-5 vs last season
Clean Sheets9
+2 vs last season
League Position#1
Top of table
tsx
import { StatCard } from "@/components/cpsl/StatCard"
<StatCard
label="Goals Scored"
value={48}
subLabel="+8 vs last season"
trend="up"
/>
<StatCard
label="Clean Sheets"
value={9}
subLabel="+2 vs last season"
trend="up"
accentColor="#BF1D2D"
/>Avatar System — Live Components
Sizes
MJ
MJ
MJ
MJ
MJ
Status Indicators
MJ
JS
AT
SR
With Role Label
MJ
GKJS
CBAT
CMSR
STAvatar Group
MJ
JS
AT
SR
CL
+2
tsx
import { CPSLAvatar, AvatarGroup } from "@/components/cpsl/CPSLAvatar"
// Single avatar with status
<CPSLAvatar name="Marcus Johnson" status="online" size="lg" role="GK" />
// Avatar group with overflow
<AvatarGroup
avatars={players}
max={5}
size="sm"
/>Badge System — Full Taxonomy
Match Results
WINLOSSDRAWLIVEUPCOMINGPOSTPONEDCONFIRMED
League Position Zones
1ST PLACEPROMOTIONPLAYOFFRELEGATION
Club Tier
PREMIERELITEACADEMY
Base shadcn Variants
DefaultSecondaryOutlineDestructive
Skeleton Loading States
Card Skeleton
Table Skeleton