ComponentsData display

Fixture list

Upcoming matches and results between two sides, for any head-to-head competition — a sports club, an esports series, a chess or debating league. Upcoming / Results tabs with counts, an optional competition and home/away filter, month rows, the next match marked, statuses (live, postponed, cancelled) and scores read as full sentences.

WAI-ARIA Tabs + HTML table components/fixture-list.tsx, components/standings-table.tsxtheme · material · accent · density · font

4 matches shown

Northgate 2026/27 — Upcoming
DateMatchTime
November 2026
SunNov 22Northgate v ElmwoodNextLeague · North Park2:00 PM
SunNov 29Stonebridge v NorthgateCup · Bridge GroundTBC
December 2026
SunDec 6Northgate v WestfieldPostponedLeague · North Park2:00 PM
January 2027
SunJan 10Riverside v NorthgateLeague · Mill Field2:00 PM

Installation

$ pnpm add @vamos-ui/react

The whole kit as one package — get updates by bumping the version. Add the styles to globals.css: @import "@vamos-ui/react/styles.css";

Usage

import { FixtureList } from "@vamos-ui/react";

<FixtureList
  side="Northgate"
  fixtures={matches}
  competitions={[{ id: "league", label: "North League" }, { id: "cup", label: "District Cup" }]}
  renderActions={(m) => <AddToCalendar match={m} />}
/>

A score without a status counts as finished; live, postponed and cancelled matches stay under Upcoming with a badge.

Dates and times use the locale formatter and its time zone — set timeZone on LocaleProvider to show local kick-off times.

The visible score is "2–1"; screen readers hear "Northgate 2, Riverside 1". The filter result count is announced politely.

Examples

Results first

defaultView="results": newest first, each score with the outcome square from your side's point of view.

4 matches shown

Northgate results — Results
DateMatchScore
November 2026
SunNov 1Harbour Town v NorthgateLeague · Quay RoadHarbour Town 1, Northgate 2
October 2026
SunOct 18Northgate v LakesideCup · North ParkNorthgate 1, Lakeside 3
SunOct 11Hillcrest v NorthgateLeague · Hill LaneHillcrest 0, Northgate 0
SunOct 4Northgate v RiversideLeague · North ParkOkafor 12′, Lind 77′Northgate 2, Riverside 1

No own side (a series schedule)

Without side there is no home/away filter or outcome; tags, links and a per-row action still work.

3 matches shown

Winter series — Upcoming
DateMatchTimeActions
FriNov 20Team Quark vs Team LeptonLiveBest of 36:00 PM
FriNov 20Team Boson vs Team Gluon8:30 PM
SatNov 21Team Muon vs Team Quark6:00 PM

API

FixtureList

PropTypeDefault
fixtures
{ id, start, home, away, score?, status?, competition?, round?, venue?, details?, tags?, href? }. start is an instant, or "YYYY-MM-DD" when the time is not fixed (shows TBC).
Fixture[]—
competitions
Competition names; two or more add a multi-select filter.
{ id, label, short? }[]—
side
Your own side: home/away filter and tags, outcome squares on results, the next match marked.
string—
view / defaultView / onViewChange
Selected tab, controlled or not.
"upcoming" | "results""upcoming"
groupByMonth
Month header rows (locale-formatted).
booleantrue
filters
Show the filter bar.
booleantrue
renderActions
Trailing cell per match (calendar, tickets, reminders).
(fixture) => ReactNode—
caption
Names the tables for screen readers ("… — Upcoming").
string—
labels
Dictionary namespace "fixtureList": tab names, filter names, home/away, versus, scoreSpoken, timeTbc, statuses, empty, shown.
Partial<FixtureListLabels>—
formLabels
Outcome names (formGuide namespace).
Partial<FormGuideLabels>—

fixtureOutcome(fixture, side)

PropTypeDefault
returns
The result from one side's point of view.
"win" | "draw" | "loss" | undefined—