# Story 5.2: Créer le composant MatchListItem Status: review ## Acceptance Criteria **Given** des matchs avec prédictions existent **When** la liste de matchs est affichée **Then** chaque item affiche : équipes, date/heure, Confidence Meter **And** les items sont triés par date (prochains en premier) **And** le design est responsive (mobile-first) **Given** je tap sur un MatchListItem **When** l'item est sélectionné **Then** la card s'expand pour montrer plus de détails **And** les détails incluent graphique d'énergie, historique ## Tasks / Subtasks - [x] Créer le composant MatchListItem (AC: #1) - [x] Créer `src/components/dashboard/MatchListItem.tsx` - [x] Accepter props: `match` (Match object) - [x] Afficher: équipes (home/away), date/heure, Confidence Meter - [x] Utiliser le composant `ConfidenceMeter` - [x] Utiliser shadcn/ui components (Card, Badge) - [x] Implémenter l'expansion des détails (AC: #2) - [x] Créer l'état d'expansion (`expanded`) - [x] Gérer le tap/clic pour expand/collapse - [x] Afficher les détails: graphique d'énergie, historique - [x] Utiliser une transition fluide (300ms) - [x] Optimiser les performances avec lazy loading - [x] Créer les tests du composant (Tous AC) - [x] Tester l'affichage des matchs - [x] Tester le tri par date - [x] Tester l'expansion/collapse - [x] Tester l'affichage du Confidence Meter - [x] Tester la responsivité (mobile/desktop) - [x] Intégrer le composant dans la liste (AC: #1) - [x] Utiliser le composant dans `MatchList.tsx` - [x] Trier les matchs par date - [x] Gérer l'état de sélection - [x] Vérifier la cohérence visuelle - [x] Tester avec plusieurs matchs ## Dev Notes ### Stack Technique - **UI:** shadcn/ui + Tailwind CSS - **State:** React useState - **Animations:** CSS transitions ### File Structure ``` src/components/dashboard/ └── MatchListItem.tsx ``` ### References - [Source: _bmad-output/planning-artifacts/epics.md#Story-5.2] ## Dev Agent Record ### Agent Model Used GLM-4.7 ### Completion Notes List - Créé le composant Badge dans `src/components/ui/badge.tsx` pour shadcn/ui - Créé le composant EnergyWave minimal dans `src/components/dashboard/EnergyWave.tsx` - Mis à jour `MatchListItem.tsx` avec: - Utilisation de shadcn/ui Card et Badge - Affichage des équipes, date/heure, et ConfidenceMeter - Implémentation de l'état d'expansion avec transition fluide de 300ms - Lazy loading du composant EnergyWave - Affichage des détails (graphique d'énergie, historique, prédiction) - Formatage intelligent des dates (Aujourd'hui, Demain, Dans X jours, Il y a X jours) - Créé `MatchList.tsx` avec tri par date (prochains matchs en premier) - Créé 24 tests unitaires pour MatchListItem (tous passants) - Créé 9 tests unitaires pour MatchList (tous passants) ### File List - `src/components/ui/badge.tsx` (nouveau) - `src/components/dashboard/MatchListItem.tsx` (modifié) - `src/components/dashboard/EnergyWave.tsx` (nouveau) - `src/components/dashboard/MatchList.tsx` (nouveau) - `src/tests/match-list-item.test.tsx` (modifié) - `src/tests/match-list.test.tsx` (nouveau)