6-8 Sports6-8UI Framework

Data

Numbers, on air

The readout layer of the system: stats, metric tiles, KPI rows, progress bars, segmented meters, and dependency-free sparklines. Every figure is set in the condensed display face with tabular figures, so columns of numbers stay locked to the grid.

6-8 UI

Stat

A single readout: uppercase label, a display-face value with tabular figures, and an optional delta pill that reads green for a gain and red for a loss. Add an icon for a category cue.

Default
Points per game
24.8+2.3
Loss / danger delta
Field goal %
48.6%-1.2%
Inverted (lower is better)
Turnovers
2.1-0.6
Sizes
Assists
7.1+0.4
Rebounds
11.4+1.8
Blocks
1.9+0.3
Centered, no delta
Season record
41–19
With unit
Minutes
34.2MPG+1.1

6-8 UI

Metric Tile

A glass panel that frames a Stat, a full-width trend sparkline, and a short caption. It lifts and glows on hover; the accent hairline and chart tone follow the story.

Teal accent
Points per game
24.8+2.3

Up over the last eight, led by a 31-point night in Denver.

Yellow accent
Player efficiency
27.4+1.6

Career-high pace, trending toward All-Star selection.

Negative delta
Field goal %
43.1%-2.4%

Cooling off after a hot start; shot selection under review.

6-8 UI

KPI Row

A responsive grid of metric tiles for the top of a coach or league dashboard. Feed it an array of tiles; it steps from four-up down to a single column on phones.

Team dashboard — season to date
Record
41–19

Second in the conference, four games back of the top seed.

Net rating
+8.4+1.2

Third-best mark in the league since the new year.

Points per game
118.6+3.1

Offense humming behind a faster pace.

Opp. points
110.2-2.5

Defense tightening — fewer points allowed each week.

6-8 UI

Progress

A determinate bar on a Radix foundation. The teal gradient indicator glows and slides its width in with an ease-out transition. Switch to yellow for live or high-priority meters.

Labelled with value
Season played73%
Playoff odds88%
Salary cap used94%
Sizes
Tones
Home win rate71%
Games remaining26%

6-8 UI

Meter

A segmented pip gauge for ratings and readiness. Filled pips glow in the accent; empty pips sit dim, so the reading lands from across the room.

Scouting rating
Shooting8 / 10
Playmaking9 / 10
Defense7 / 10
Percent, custom format
Stamina62%
Load management38%
Sizes
Small
Medium
Large

6-8 UI

Sparkline

A dependency-free inline SVG trend, drawn straight from a number array with a soft area wash and an end-point marker. Pick a tone to match the direction of the story.

Tones
Line only
Inline with a stat
Points
24.8+2.3

Reference

Props

The core props for the data primitives. Every component also forwards native attributes and merges an incoming className.

Stat

PropTypeDefaultDescription
labelstringUppercase caption above the value.
valueReactNodeThe headline figure, set in the display face.
unitstringSmall unit appended to the value, e.g. "%".
deltanumberSigned change; drives the arrow and pill color.
invertDeltabooleanfalseTreat a decrease as positive (green).
iconLucideIconLeading icon shown in a teal chip.
size"sm" | "md" | "lg""md"Value and label scale.
align"left" | "center""left"Horizontal alignment.

MetricTile

PropTypeDefaultDescription
label / value / delta / iconStatPropsForwarded to the inner Stat.
datanumber[]Series for the full-width trend sparkline.
captionstringShort supporting line beneath the chart.
accent"teal" | "yellow""teal"Hairline and default chart tone.
sparklineToneSparklineToneForce the chart tone regardless of accent.

Progress · Meter · Sparkline

PropTypeDefaultDescription
Progress.valuenumberCurrent value, measured against max (default 100).
Progress.tone"teal" | "yellow""teal"Indicator gradient.
Meter.value / maxnumberReading against full scale (max default 10).
Meter.segmentsnumberPip count; defaults to max.
Sparkline.datanumber[]The series to plot.
Sparkline.stretchbooleanfalseFill the container width edge-to-edge.
Sparkline.toneSparklineTone"teal"teal · yellow · success · danger.
Copy
import { KpiRow } from "@/components/ui/kpi-row";
import { Target, Trophy } from "lucide-react";

<KpiRow
  cols={4}
  items={[
    { label: "Record", value: "41-19", icon: Trophy },
    {
      label: "Points per game",
      value: "118.6",
      delta: 3.1,
      icon: Target,
      data: [110, 114, 112, 119, 116, 121, 118, 118],
      caption: "Offense humming behind a faster pace.",
    },
  ]}
/>