201 lines
4.9 KiB
Markdown
201 lines
4.9 KiB
Markdown
# 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):
|
|
```json
|
|
"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":
|
|
```json
|
|
"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):
|
|
```tsx
|
|
{/* 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):
|
|
```tsx
|
|
<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`: 640px
|
|
- `md`: 768px
|
|
- `lg`: 1024px
|
|
- `xl`: 1280px
|
|
- `2xl`: 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
|
|
```tsx
|
|
<div className="container mx-auto px-4 sm:px-6 lg:px-8">
|
|
```
|
|
|
|
### Grid Responsivo
|
|
```tsx
|
|
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
|
|
```
|
|
|
|
### Texto Responsivo
|
|
```tsx
|
|
<h1 className="text-2xl md:text-3xl lg:text-4xl font-bold">
|
|
```
|
|
|
|
### Padding/Margin Responsivo
|
|
```tsx
|
|
<div className="py-8 md:py-12 lg:py-16">
|
|
```
|
|
|
|
### Flex Responsivo
|
|
```tsx
|
|
<div className="flex flex-col md:flex-row gap-4">
|
|
```
|
|
|
|
## 🌐 Uso do Sistema de Idiomas
|
|
|
|
### Em Componentes
|
|
```tsx
|
|
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
|
|
```tsx
|
|
setLocale('pt-BR'); // ou 'en' ou 'es'
|
|
```
|
|
|
|
## 📱 Testes de Responsividade
|
|
|
|
### Dispositivos para Testar:
|
|
1. **Mobile**: 375x667 (iPhone SE)
|
|
2. **Mobile**: 390x844 (iPhone 12 Pro)
|
|
3. **Tablet**: 768x1024 (iPad)
|
|
4. **Desktop**: 1280x720
|
|
5. **Desktop**: 1920x1080
|
|
|
|
### Ferramentas:
|
|
- Chrome DevTools (F12 → Toggle Device Toolbar)
|
|
- Firefox Responsive Design Mode
|
|
- Testes em dispositivos reais
|
|
|
|
## 🚀 Comandos Úteis
|
|
|
|
```bash
|
|
# 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
|