review · segments
Read-only home page structure map for anchor nav and game card filtering
claude 22 events 1 segments main
segment 1 of 1
Map home page structure for anchor navigation and game card filtering
Read all key files: HomePageComponent.php (290 lines), home-page-component.blade.php (240 lines), game-stat-cards-modern.blade.php (full partial), raids-panel.blade.php (full partial), and TwitchStreamListing.php. Identified 8 visual sections in order, noted the disabled wipe status banner (@if(false)), documented the game loop variable ($games from HomePageComponent, each $game exposes twitch_id, name, slug, id, short_name), confirmed TwitchStreamListing has a $game_id property with #[Url] attribute and filterByGame($gameId) method for filtering by game. Reported with absolute file paths, line numbers, and verbatim snippets covering all 4 requested areas.
outcome
A comprehensive read-only map of the home page structure exists with exact file paths, line numbers, wrapping HTML elements, game data fields, and the game filtering mechanism in TwitchStreamListing.
next steps
- Add id attributes to section wrappers for anchor navigation (game stat cards, Twitch viewers chart, raids panel, watched-term widget, goons location widget, live streams listing)
- Make game stat cards clickable by adding wire:click='$parent.filterByGame($game->twitch_id)' or similar to each card in game-stat-cards-modern.blade.php
- Create anchor nav bar above the main container with links to each section
- Test scroll-to-anchor behavior and game card filtering functionality
key decisions
- The game stat cards receive games from a $games variable (Eloquent Collection of Game models), each with twitch_id, name, slug, id, short_name fields — the loop is @foreach($games as $game) with inline MetricsService calls per game
- TwitchStreamListing has $game_id property with #[Url] attribute (query-string bound) and a public filterByGame($gameId) method — filtering by game is already supported but not used on the home page
- No sections currently have id, x-ref, or anchor attributes — all need to be added for nav links
- The wipe status banner (lines 21-58) is wrapped in @if(false) — disabled, not just hidden
- The 2-column grid switches from column on mobile (space-y-4) to row on lg (lg:grid-cols-2 lg:space-y-0) containing watched-term widget and goons-content-area
open questions
—
1 week ago → 1 week ago