Este documento explica o papel de cada pasta principal do projeto: components, context, hooks e utils.
Ele serve como referência para estudos, manutenção e evolução do código.
Contém todos os componentes visuais da aplicação. Aqui fica a interface que o usuário vê e interage.
- Responsável por buscar e renderizar a lista de Pokémon.
- Usa o hook
usePokemons. - Exibe o componente
Loaderenquanto os dados estão sendo carregados. - Renderiza vários
PokemonCard.
- Exibe um card individual contendo:
- Nome do Pokémon
- ID
- Tipos
- Sprite/Imagem
- Ao clicar, abre o modal de detalhes utilizando o context global do modal.
- Barra de filtros que exibe todos os tipos de Pokémon (Fire, Water, Grass etc.).
- Usa o hook
useTypespara obter os tipos. - Permite filtrar a listagem clicando em um tipo.
- Componente visual usado para indicar carregamento.
Componentes relacionados ao modal de detalhes do Pokémon.
- Estrutura principal do modal.
- Exibe:
- Imagem grande do Pokémon
- Nome e ID
- Tipos
- Abas de conteúdo (About, Stats, Evolution)
- Usa o context
PokemonModalProviderpara abrir ou fechar o modal.
- Modal inicial exibido antes da Pokédex.
- Pode mostrar informações introdutórias sobre o app.
- Gerencia a troca de abas dentro do modal:
- About
- Stats
- Evolution
- Componente interno utilizado para exibir linhas de dados (ex.: “Height: 0.7m”).
Cada arquivo representa uma aba dentro do modal.
- Exibe informações gerais:
- Descrição do Pokémon (flavor text)
- Peso
- Altura
- Habilidades
- Outras características básicas
- Exibe os status base do Pokémon:
- HP
- Attack
- Defense
- Special Attack
- Special Defense
- Speed
- Exibe a cadeia evolutiva.
- Usa o hook
useEvolutionpara obter e formatar a árvore evolutiva.
Gerencia estados compartilhados entre componentes usando React Context API.
- Controla o estado global do modal de Pokémon.
- Armazena:
- Pokémon selecionado (
selectedPokemon) - Função para abrir o modal (
openPokemon) - Função para fechar o modal (
closePokemon)
- Pokémon selecionado (
- Evita o uso de prop drilling.
- Permite que qualquer componente abra o modal facilmente.
Custom hooks que encapsulam regras de negócio e lógica de consumo da PokéAPI.
- Busca a lista paginada de Pokémon.
- Aceita filtros (como tipo).
- Retorna:
- Lista de Pokémon
- Estado de carregamento
- Erro
- Função para carregar mais (caso seja paginação)
- Busca todos os tipos de Pokémon.
- Usado na
TypesBarpara montar os botões de filtro.
- Busca e processa a cadeia evolutiva de um Pokémon.
- Retorna a árvore evolutiva pronta para renderização.
Contém testes unitários dos hooks usando Jest/Vitest.
Funções auxiliares independentes de interface.
- Wrapper padrão para chamadas HTTP.
- Centraliza as requisições para a PokéAPI.
- Facilita manutenção e tratamento de erros.
Funções utilitárias como:
- Extrair ID de URLs da PokéAPI.
- Capitalizar nomes.
- Gerenciar cores por tipo.
- Normalizar dados antes da renderização.
- Ajudar a formatar a cadeia evolutiva.
| Pasta | Conteúdo | Responsabilidade |
|---|---|---|
components |
Componentes visuais | Interface da Pokédex |
components/modal |
Modal e subcomponentes | UI do detalhamento |
context |
Providers | Estado global (modal) |
hooks |
Custom hooks | Lógica de dados (PokéAPI) |
utils |
Funções auxiliares | Apoio ao código e formatação |
arquivos adicionados:
useEvolution.js modal App.jsx alterado para ter o modal