src/ ├── components/ │ ├── layout/ │ │ ├── Header.jsx │ │ ├── SearchBar.jsx │ │ └── TypeFilterBar.jsx │ │ │ ├── pokemon-grid/ │ │ ├── PokemonGrid.jsx │ │ ├── PokemonCard.jsx │ │ └── PokemonCardSkeleton.jsx │ │ │ ├── pokemon-detail/ │ │ ├── DetailPanel.jsx │ │ ├── DetailHeader.jsx (numéro, badges type, genre) │ │ ├── DexEntry.jsx (citation Pokédex) │ │ ├── QuickStats.jsx (taille / poids / xp / total) │ │ ├── AbilitiesList.jsx │ │ ├── WeaknessesList.jsx │ │ ├── StatsRadar.jsx │ │ ├── StatsBarList.jsx │ │ ├── EvolutionChain.jsx │ │ └── DetailNavigation.jsx (précédent / suivant) │ │ │ └── ui/ (atomes réutilisables, sans logique métier) │ ├── TypeBadge.jsx │ ├── FilterChip.jsx │ ├── MetricCard.jsx │ ├── IconButton.jsx │ └── EmptyState.jsx │ ├── data/ │ ├── pokemon-types.ts (couleur/icône/libellé par type — source unique) │ ├── pokedex.ts (151 entrées, ou fetch PokeAPI) | └── pokemon-type-meta.ts │ ├── hooks/ │ ├── usePokemonList.js (filtrage + tri + recherche) │ ├── useSelectedPokemon.js (sélection courante + navigation prev/next) │ └── useTheme.js (toggle clair/sombre) │ ├── types/ │ └── pokemon.ts │ └── lib/ └── stat-helpers.js (calcul total, formatage, etc.)