Projeto 09 – Sistema de Preferências do Usuário (Multilíngue) 🌍
Neste projeto, você vai construir um sistema onde o usuário pode escolher o idioma e o tema do site, e essas escolhas serão refletidas em toda a aplicação instantaneamente.
🎯 Objetivo
Implementar a Context API para gerenciar configurações globais, entender o papel do Provider e criar uma aplicação multi-componente sincronizada.
🛠️ Requisitos
- Criação de um
SettingsContext. - Gerenciamento global de Idioma (PT/EN) e Tema (Light/Dark).
- Uso de pelo menos 3 componentes consumidores em níveis diferentes de hierarquia.
📝 Passo a Passo
1. Criando o Contexto
Crie o arquivo src/contexts/SettingsContext.jsx. O estado inicial deve ter:
- linguagem: 'pt'
- tema: 'light'
2. O Power Provider
Envolva sua aplicação no App.jsx com o SettingsProvider. Certifique-se de passar tanto os valores quanto as funções de alteração (ex: setLinguagem).
3. Componentes Consumidores
- Header: Mostra o título no idioma selecionado.
- Conteúdo: Um texto longo que também traduz entre PT e EN.
- Footer: Contém os botões (Selects ou Toggles) para mudar as configurações globais.
4. Dicionário de Tradução
Crie um objeto simples para as traduções:
const frases = {
pt: { saudacao: 'Olá', subtitulo: 'Bem-vindo ao sistema' },
en: { saudacao: 'Hello', subtitulo: 'Welcome to the system' }
}
✅ Critérios de Entrega
- Ao mudar o idioma no Footer, o texto do Header deve mudar instantaneamente.
- A escolha do tema deve afetar as cores de fundo de toda a página.
- Não deve haver "Prop Drilling" (passagem manual de props entre os componentes intermediários).
Dica: localStorage
Como desafio extra, tente salvar a escolha do usuário no localStorage do navegador para que, ao recarregar a página, as preferências sejam mantidas!