4.9 KiB
4.9 KiB
Melhorias de Responsividade e Internacionalização
✅ Concluído
1. Sistema de Idiomas
- ✅ Sistema de i18n já implementado com 3 idiomas (pt-BR, en, es)
- ✅ LanguageSwitcher component criado e funcional
- ✅ Traduções adicionadas para navegação mobile:
nav.language: "Idioma" / "Language" / "Idioma"nav.registerUser: "Cadastrar Usuário" / "Register User" / "Registrar Usuario"nav.registerCompany: "Cadastrar Empresa" / "Register Company" / "Registrar Empresa"
2. Navbar Responsivo
- ✅ Menu mobile já implementado com Sheet component
- ✅ LanguageSwitcher adicionado no desktop
- ⚠️ PENDENTE: Adicionar LanguageSwitcher no menu mobile
📋 Próximos Passos
1. Completar Traduções nos Arquivos de Idioma
en.json (Inglês)
Adicionar na seção "nav" (linha 18-24):
"nav": {
"jobs": "Jobs",
"about": "About",
"contact": "Contact",
"login": "Login",
"register": "Register",
"language": "Language",
"registerUser": "Register User",
"registerCompany": "Register Company"
},
es.json (Espanhol)
Adicionar na seção "nav":
"nav": {
"jobs": "Empleos",
"about": "Acerca de",
"contact": "Contacto",
"login": "Iniciar sesión",
"register": "Registrarse",
"language": "Idioma",
"registerUser": "Registrar Usuario",
"registerCompany": "Registrar Empresa"
},
2. Atualizar Navbar para Mobile
Arquivo: e:\gohorse\gohorsejobs\frontend\src\components\navbar.tsx
Adicionar após a linha 110 (dentro do SheetContent):
{/* Language Switcher in Mobile */}
<div className="flex items-center justify-between px-2 py-2 bg-muted rounded-lg">
<span className="text-sm font-medium">{t('nav.language')}</span>
<LanguageSwitcher />
</div>
E atualizar os links de registro no mobile (linhas 139-144):
<Link href="/register/user" onClick={() => setIsOpen(false)}>
<Button variant="outline" className="w-full justify-start gap-2">
<UserPlus className="w-4 h-4" />
{t('nav.registerUser')}
</Button>
</Link>
<Link href="/register" onClick={() => setIsOpen(false)}>
<Button className="w-full justify-start gap-2">
<Building2 className="w-4 h-4" />
{t('nav.registerCompany')}
</Button>
</Link>
3. Verificar Responsividade em Todas as Páginas
Testar as seguintes páginas em diferentes tamanhos de tela:
- ✅
/- Home - ✅
/jobs- Lista de vagas - ✅
/blog- Blog - ✅
/companies- Empresas - ⚠️
/jobs/[id]- Detalhes da vaga - ⚠️
/jobs/[id]/apply- Formulário de candidatura - ⚠️
/blog/[slug]- Artigo do blog - ⚠️
/register/user- Cadastro de usuário - ⚠️
/register- Cadastro de empresa - ⚠️
/publicar-vaga- Publicar vaga - ⚠️
/dashboard/*- Todas as páginas do dashboard
4. Melhorias de Responsividade Específicas
Breakpoints Padrão do Tailwind:
sm: 640pxmd: 768pxlg: 1024pxxl: 1280px2xl: 1536px
Checklist de Responsividade:
- Textos legíveis em mobile (min 14px)
- Botões com tamanho adequado para toque (min 44x44px)
- Espaçamento adequado entre elementos
- Imagens responsivas com
object-fit - Tabelas com scroll horizontal em mobile
- Formulários com campos empilhados em mobile
- Navegação mobile funcional
- Modais e dialogs responsivos
🎨 Padrões de Responsividade
Containers
<div className="container mx-auto px-4 sm:px-6 lg:px-8">
Grid Responsivo
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
Texto Responsivo
<h1 className="text-2xl md:text-3xl lg:text-4xl font-bold">
Padding/Margin Responsivo
<div className="py-8 md:py-12 lg:py-16">
Flex Responsivo
<div className="flex flex-col md:flex-row gap-4">
🌐 Uso do Sistema de Idiomas
Em Componentes
import { useTranslation } from "@/lib/i18n";
export function MyComponent() {
const { t, locale, setLocale } = useTranslation();
return (
<div>
<h1>{t('page.title')}</h1>
<p>{t('page.description', { name: 'João' })}</p>
</div>
);
}
Trocar Idioma
setLocale('pt-BR'); // ou 'en' ou 'es'
📱 Testes de Responsividade
Dispositivos para Testar:
- Mobile: 375x667 (iPhone SE)
- Mobile: 390x844 (iPhone 12 Pro)
- Tablet: 768x1024 (iPad)
- Desktop: 1280x720
- Desktop: 1920x1080
Ferramentas:
- Chrome DevTools (F12 → Toggle Device Toolbar)
- Firefox Responsive Design Mode
- Testes em dispositivos reais
🚀 Comandos Úteis
# Rodar em desenvolvimento
npm run dev
# Build para produção
npm run build
# Verificar erros de lint
npm run lint
# Corrigir erros de lint
npm run lint:fix
📝 Notas
- O sistema de cores já está padronizado para
#F0932B - O Edge Runtime foi removido de todos os arquivos problemáticos
- O projeto usa Next.js 14 com App Router
- Tailwind CSS é usado para estilização
- shadcn/ui é usado para componentes