brackt/app/components/scoring
chrisp b8c21d227b
All checks were successful
🚀 Deploy / 🧪 Test (push) Successful in 3m19s
🚀 Deploy / ʦ🔍 Typecheck & Lint (push) Successful in 1m23s
🚀 Deploy / 🐳 Build (push) Successful in 1m11s
🚀 Deploy / 🚀 Deploy (push) Successful in 10s
Show bracket on tennis Grand Slam major event pages (#113)
## What

Tennis Grand Slam majors already store the full 128-player draw in `playoff_matches` (synced from Wikipedia), and the `PlayoffBracket` component + `tennis_128` template already exist — but users couldn't see any of it. The public league event page only rendered a bracket for `eventType === "playoff_game"`, while tennis majors are `major_tournament` events, so they fell through to the QP-only results table.

## Change

- New `kind: "tennis"` branch in the event loader, gated on `isBracketMajor(simulatorType) && eventType === "major_tournament"`. Loads the bracket (primary-keyed for shared majors, via the existing read-only-sibling ownership remap) plus this window's local QP results.
- The event page renders the full draw via the existing `PlayoffBracket`, followed by the QP results table.
- Extracted the duplicated results-table markup into a shared `QpResultsTable` used by both the `tennis` and `results` branches.
- "In Contention" table now sorts manager-drafted players first, then alphabetically by name.

CS2 majors (handled earlier) and golf (`isBracketMajor` false) are unaffected.

## Verification

- `npm run typecheck` — clean
- `npm run test:run` — 2533 passed
- `oxlint` — clean

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Chris Parsons <chrisparsons1127@gmail.com>
Reviewed-on: #113
2026-06-28 04:35:40 +00:00
..
__tests__ Fix NBA play-in elimination display and consolidate bracket reprocessing (#299) 2026-04-15 14:56:33 -07:00
BracketTreePaginated.tsx Add Storybook stories for new components from staged changes (#321) 2026-04-23 22:09:25 -07:00
BracketTreeView.tsx Add Storybook stories for new components from staged changes (#321) 2026-04-23 22:09:25 -07:00
Cs2TournamentBracket.tsx claude/great-lovelace-r3bznh (#88) 2026-06-12 22:35:35 +00:00
GroupStageDisplay.tsx User/chris/bracket UI redesign (#95) 2026-03-09 22:44:33 -07:00
MatchSchedule.tsx claude/great-lovelace-r3bznh (#88) 2026-06-12 22:35:35 +00:00
NbaBracketLayout.tsx Add Storybook stories for new components from staged changes (#321) 2026-04-23 22:09:25 -07:00
PlayoffBracket.tsx Show bracket on tennis Grand Slam major event pages (#113) 2026-06-28 04:35:40 +00:00
QualifyingPointsStandings.tsx Fix QP standings: filter to drafted/points-earning participants with correct global ranks 2026-06-06 09:38:47 -07:00
RankingsRow.stories.tsx Add Storybook stories for new components from staged changes (#321) 2026-04-23 22:09:25 -07:00
RankingsRow.tsx Add Storybook stories for new components from staged changes (#321) 2026-04-23 22:09:25 -07:00
ScoringRulesEditor.tsx Redesign to dark-mode-only with navy palette and accent colors (#13) 2026-02-20 19:26:11 -08:00
SeasonStandings.tsx Fix IndyCar standings: correct ESPN stat key, update title, restore finalized badge 2026-06-10 09:17:23 -07:00
SportSeasonDisplay.tsx Fix IndyCar standings: correct ESPN stat key, update title, restore finalized badge 2026-06-10 09:17:23 -07:00
TabbedBracketLayout.tsx Add Storybook stories for new components from staged changes (#321) 2026-04-23 22:09:25 -07:00