6-8 Sports6-8UI Framework

Feedback & Data Display

Status, signal, and the player board

The read-out layer of the system: badges and tags that call the state of play, avatars for the roster, loading skeletons and spinners for data in flight, a sortable broadcast table, and empty states that point the way forward.

6-8 UI

Player Board

Table, badges, avatars, tags, and skeletons composed into one broadcast read-out. Sort any stat column; refresh to watch the data stream back in.

FiltersGuardsHomeLast 10 gamesPPG > 15
PlayerTeamStreakStatus
MB
Marcus Bell#23 · G
Riptide28.45.17.8W6Live
TV
Theo Vance#7 · G
Summit24.93.86.4W4Active
NA
Nico Alvarez#9 · F
Vanguard22.16.74.3W3Live
AC
Andre Cole#4 · F
Riptide21.79.33.2L2Active
KM
Kai Monroe#12 · G
Ironworks19.64.18.9W1Active
DF
Devin Frost#11 · C
Summit18.211.61.9L1GTD
JR
Jalen Reed#30 · F
Ironworks15.37.22.5W2GTD
SR
Silas Rourke#45 · C
Vanguard12.812.41.4L3Out

6-8 UI

Badges

Compact status pills in the broadcast HUD language. Seven intents, three sizes, an optional status dot, and a live variant that pulses on air.

Intents
DefaultTealYellowSuccessWarningDangerOutline
With dot
OnlineWarming upOfflineSynced
Live + sizes
Live
SMMDLG

6-8 UI

Tags

Removable filter and keyword pills. Click the X to dismiss; the roster filters above are the same component, live.

Removable
GuardsHomeLast 10 gamesPPG > 15
Variants
TealYellowOutlineMuted

6-8 UI

Avatars

A Radix Avatar with a graceful initials fallback, sized sm through xl, with an optional luminous teal ring to flag starters.

Sizes
MBTVACNA
Teal ring
KMJRDF
Image + fallback
68SR

6-8 UI

Loading States

Spinners for indeterminate waits and skeletons for content taking shape. Both respect reduced-motion preferences.

Spinner sizes
LoadingLoadingLoadingLoading
Spinner tones
LoadingLoadingLoading
Skeleton card

6-8 UI

Empty States

The zero-data view: a glowing icon medallion, a clear title, and copy that invites the next action rather than dead-ending.

No results

No athletes match these filters

Nothing lines up with the current filter set. Widen a stat threshold or clear a filter to bring players back into the board.

6-8 UI

API

Props for the primitives on this page. Compose the exported cva variants when you need a one-off styling override.

Badge

PropTypeDefaultDescription
variant"default" | "teal" | "yellow" | "success" | "warning" | "danger" | "outline""default"Intent color of the pill.
size"sm" | "md" | "lg""md"Padding and type scale.
dotbooleanfalseShow a status dot in the current color.
livebooleanfalseOn-air state: pulsing broadcast dot and yellow glow.

Table

PropTypeDefaultDescription
Tabletable + wrapperClassNameScrollable glass panel wrapping the grid.
TableHead.sortablebooleanfalseRender an accessible sort toggle with a chevron.
TableHead.sortDirection"asc" | "desc" | falsefalseCurrent sort state for this column.
TableHead.onSort() => voidFired when the sort toggle is activated.
TableHead.align"left" | "center" | "right""left"Column alignment; also flips the sort layout.
Copy
import { Badge } from "@/components/ui/badge";
import {
  Table, TableHeader, TableBody,
  TableRow, TableHead, TableCell,
} from "@/components/ui/table";

<Table>
  <TableHeader>
    <TableRow>
      <TableHead>Player</TableHead>
      <TableHead
        align="right"
        sortable
        sortDirection={dir}
        onSort={toggleSort}
      >
        Pts
      </TableHead>
    </TableRow>
  </TableHeader>
  <TableBody>
    <TableRow>
      <TableCell>Marcus Bell</TableCell>
      <TableCell className="text-right tabular-nums">28.4</TableCell>
    </TableRow>
  </TableBody>
</Table>

<Badge variant="yellow" live>Live</Badge>