StatsHub Docs

Detail screens

One fixture, team, player, league, referee or prop — and the bridges that let a row open a screen without threading a callback.

src/app/(main)/(detail)

RouteWhat it is
fixture/[id]One match — with player, odds-compare, game-cell and customise beside it
team/[id], player/[id], league/[id], referee/[id]One entity
prop/[id], card/[id]One market
venue, landscape-viewThe two that are neither

The fixture is a stack, not a screen

fixture/[id] has four screens around it. A match has more in it than fits on a phone — lineups, stats, odds across books, each player's line — so the fixture screen is a hub and each of those is a push.

customise is the same idea as the Matches tab's card settings: what the fixture view shows is the reader's choice.

Landscape

landscape-view exists because some of this data is a wide table and a phone held sideways is the only way to see it. It is a route, not a rotation handler, so it can be opened deliberately rather than by accident — and see Resizing for what a size change has to survive.

The bridges

card-detail-bridge.ts, fixture-player-row-bridge.ts, fixture-odds-compare-bridge.ts, venue-bridge.ts and the rest.

A row deep in a list needs to open a detail screen with context the router alone cannot carry. The bridge is a small module holding that hand-off, so the list does not take a callback prop threaded down four levels and the screen does not read something global.

On this page