gohorsejobs/frontend/RESPONSIVENESS_AND_I18N_IMPROVEMENTS.md
2026-01-21 12:33:57 -03:00

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: 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

<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:

  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

# 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