Stadium Progress & Achievements: - Add StadiumVisit and Achievement SwiftData models - Create Progress tab with interactive map view - Implement photo-based visit import with GPS/date matching - Add achievement badges (count-based, regional, journey) - Create shareable progress cards for social media - Add canonical data infrastructure (stadium identities, team aliases) - Implement score resolution from free APIs (MLB, NBA, NHL stats) UI Improvements: - Add ThemedSpinner and ThemedSpinnerCompact components - Replace all ProgressView() with themed spinners throughout app - Fix sport selection state not persisting when navigating away Bug Fixes: - Fix Coast to Coast trips showing only 1 city (validation issue) - Fix stadium progress showing 0/0 (filtering issue) - Remove "Stadium Quest" title from progress view 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
228 lines
4.5 KiB
JSON
228 lines
4.5 KiB
JSON
[
|
|
{
|
|
"id": "mlb_league",
|
|
"sport": "MLB",
|
|
"type": "league",
|
|
"name": "Major League Baseball",
|
|
"abbreviation": "MLB",
|
|
"parent_id": null,
|
|
"display_order": 0
|
|
},
|
|
{
|
|
"id": "mlb_al",
|
|
"sport": "MLB",
|
|
"type": "conference",
|
|
"name": "American League",
|
|
"abbreviation": "AL",
|
|
"parent_id": "mlb_league",
|
|
"display_order": 1
|
|
},
|
|
{
|
|
"id": "mlb_nl",
|
|
"sport": "MLB",
|
|
"type": "conference",
|
|
"name": "National League",
|
|
"abbreviation": "NL",
|
|
"parent_id": "mlb_league",
|
|
"display_order": 2
|
|
},
|
|
{
|
|
"id": "mlb_al_east",
|
|
"sport": "MLB",
|
|
"type": "division",
|
|
"name": "AL East",
|
|
"abbreviation": null,
|
|
"parent_id": "mlb_al",
|
|
"display_order": 1
|
|
},
|
|
{
|
|
"id": "mlb_al_central",
|
|
"sport": "MLB",
|
|
"type": "division",
|
|
"name": "AL Central",
|
|
"abbreviation": null,
|
|
"parent_id": "mlb_al",
|
|
"display_order": 2
|
|
},
|
|
{
|
|
"id": "mlb_al_west",
|
|
"sport": "MLB",
|
|
"type": "division",
|
|
"name": "AL West",
|
|
"abbreviation": null,
|
|
"parent_id": "mlb_al",
|
|
"display_order": 3
|
|
},
|
|
{
|
|
"id": "mlb_nl_east",
|
|
"sport": "MLB",
|
|
"type": "division",
|
|
"name": "NL East",
|
|
"abbreviation": null,
|
|
"parent_id": "mlb_nl",
|
|
"display_order": 1
|
|
},
|
|
{
|
|
"id": "mlb_nl_central",
|
|
"sport": "MLB",
|
|
"type": "division",
|
|
"name": "NL Central",
|
|
"abbreviation": null,
|
|
"parent_id": "mlb_nl",
|
|
"display_order": 2
|
|
},
|
|
{
|
|
"id": "mlb_nl_west",
|
|
"sport": "MLB",
|
|
"type": "division",
|
|
"name": "NL West",
|
|
"abbreviation": null,
|
|
"parent_id": "mlb_nl",
|
|
"display_order": 3
|
|
},
|
|
{
|
|
"id": "nba_league",
|
|
"sport": "NBA",
|
|
"type": "league",
|
|
"name": "National Basketball Association",
|
|
"abbreviation": "NBA",
|
|
"parent_id": null,
|
|
"display_order": 0
|
|
},
|
|
{
|
|
"id": "nba_eastern",
|
|
"sport": "NBA",
|
|
"type": "conference",
|
|
"name": "Eastern Conference",
|
|
"abbreviation": "East",
|
|
"parent_id": "nba_league",
|
|
"display_order": 1
|
|
},
|
|
{
|
|
"id": "nba_western",
|
|
"sport": "NBA",
|
|
"type": "conference",
|
|
"name": "Western Conference",
|
|
"abbreviation": "West",
|
|
"parent_id": "nba_league",
|
|
"display_order": 2
|
|
},
|
|
{
|
|
"id": "nba_atlantic",
|
|
"sport": "NBA",
|
|
"type": "division",
|
|
"name": "Atlantic",
|
|
"abbreviation": null,
|
|
"parent_id": "nba_eastern",
|
|
"display_order": 1
|
|
},
|
|
{
|
|
"id": "nba_central",
|
|
"sport": "NBA",
|
|
"type": "division",
|
|
"name": "Central",
|
|
"abbreviation": null,
|
|
"parent_id": "nba_eastern",
|
|
"display_order": 2
|
|
},
|
|
{
|
|
"id": "nba_southeast",
|
|
"sport": "NBA",
|
|
"type": "division",
|
|
"name": "Southeast",
|
|
"abbreviation": null,
|
|
"parent_id": "nba_eastern",
|
|
"display_order": 3
|
|
},
|
|
{
|
|
"id": "nba_northwest",
|
|
"sport": "NBA",
|
|
"type": "division",
|
|
"name": "Northwest",
|
|
"abbreviation": null,
|
|
"parent_id": "nba_western",
|
|
"display_order": 1
|
|
},
|
|
{
|
|
"id": "nba_pacific",
|
|
"sport": "NBA",
|
|
"type": "division",
|
|
"name": "Pacific",
|
|
"abbreviation": null,
|
|
"parent_id": "nba_western",
|
|
"display_order": 2
|
|
},
|
|
{
|
|
"id": "nba_southwest",
|
|
"sport": "NBA",
|
|
"type": "division",
|
|
"name": "Southwest",
|
|
"abbreviation": null,
|
|
"parent_id": "nba_western",
|
|
"display_order": 3
|
|
},
|
|
{
|
|
"id": "nhl_league",
|
|
"sport": "NHL",
|
|
"type": "league",
|
|
"name": "National Hockey League",
|
|
"abbreviation": "NHL",
|
|
"parent_id": null,
|
|
"display_order": 0
|
|
},
|
|
{
|
|
"id": "nhl_eastern",
|
|
"sport": "NHL",
|
|
"type": "conference",
|
|
"name": "Eastern Conference",
|
|
"abbreviation": "East",
|
|
"parent_id": "nhl_league",
|
|
"display_order": 1
|
|
},
|
|
{
|
|
"id": "nhl_western",
|
|
"sport": "NHL",
|
|
"type": "conference",
|
|
"name": "Western Conference",
|
|
"abbreviation": "West",
|
|
"parent_id": "nhl_league",
|
|
"display_order": 2
|
|
},
|
|
{
|
|
"id": "nhl_atlantic",
|
|
"sport": "NHL",
|
|
"type": "division",
|
|
"name": "Atlantic",
|
|
"abbreviation": null,
|
|
"parent_id": "nhl_eastern",
|
|
"display_order": 1
|
|
},
|
|
{
|
|
"id": "nhl_metropolitan",
|
|
"sport": "NHL",
|
|
"type": "division",
|
|
"name": "Metropolitan",
|
|
"abbreviation": null,
|
|
"parent_id": "nhl_eastern",
|
|
"display_order": 2
|
|
},
|
|
{
|
|
"id": "nhl_central",
|
|
"sport": "NHL",
|
|
"type": "division",
|
|
"name": "Central",
|
|
"abbreviation": null,
|
|
"parent_id": "nhl_western",
|
|
"display_order": 1
|
|
},
|
|
{
|
|
"id": "nhl_pacific",
|
|
"sport": "NHL",
|
|
"type": "division",
|
|
"name": "Pacific",
|
|
"abbreviation": null,
|
|
"parent_id": "nhl_western",
|
|
"display_order": 2
|
|
}
|
|
]
|