# Frontend - GoHorse Jobs

[![Next.js](https://img.shields.io/badge/Next.js-15-black?style=flat-square&logo=next.js)](https://nextjs.org/)
[![Tailwind CSS](https://img.shields.io/badge/Tailwind-4-06B6D4?style=flat-square&logo=tailwindcss)](https://tailwindcss.com/)
[![TypeScript](https://img.shields.io/badge/TypeScript-5-3178C6?style=flat-square&logo=typescript)](https://typescriptlang.org/)

Frontend da plataforma GoHorse Jobs construído com **Next.js 15** e **App Router**.

### ✨ Features Recentes
- **Server-Side Pagination**: Listagem de vagas otimizada com paginação real.
- **Busca e Filtros**: Filtragem por localização, tipo e modo de trabalho integrada ao backend.
- **Internacionalização (i18n)**: Suporte a múltiplos idiomas (PT, EN, ES).
- **Skeleton Loading**: UI polida com estados de carregamento.
- **FAQ & Contato**: Páginas de suporte com tickets simulados.

---

## 🏗️ Arquitetura

```
src/
├── app/                    # App Router (Páginas)
│   ├── dashboard/          # Área logada
│   │   ├── admin/          # Painel SuperAdmin
│   │   ├── empresa/        # Painel Empresa
│   │   └── candidato/      # Painel Candidato
│   ├── login/              # Autenticação
│   ├── vagas/              # Listagem pública
│   └── layout.tsx          # Layout raiz
│
├── components/             # Componentes React
│   ├── ui/                 # shadcn/ui primitives
│   ├── forms/              # Formulários reutilizáveis
│   └── (feature)/          # Componentes por feature
│
├── contexts/               # React Contexts
│   └── AuthContext.tsx     # Autenticação global
│
├── hooks/                  # Custom Hooks
│   ├── useAuth.ts          # Hook de autenticação
│   └── useProfile.ts       # Hook de perfil
│
└── lib/                    # Utilitários
    ├── api.ts              # Cliente HTTP
    └── utils.ts            # Helpers gerais
```

---

## 🎨 Design System

### Tecnologias

| Tecnologia | Uso |
|------------|-----|
| **shadcn/ui** | Componentes base (Radix UI) |
| **Tailwind CSS 4** | Estilização utility-first |
| **Lucide Icons** | Ícones |
| **Framer Motion** | Animações |

### Tema

O tema está definido em `src/app/globals.css` usando CSS variables com cores `oklch()`:

- **Primary**: Laranja (`oklch(0.68 0.22 45)`)
- **Background**: Light/Dark mode automático
- **Componentes**: Herdam do design system

---

## 📱 Páginas Principais

| Rota | Descrição | Acesso |
|------|-----------|--------|
| `/` | Landing page | Público |
| `/jobs` | Listagem de vagas | Público |
| `/login` | Autenticação | Público |
| `/dashboard/admin` | Painel admin | SuperAdmin |
| `/dashboard/empresa` | Painel empresa | CompanyAdmin, Recruiter |
| `/dashboard/candidato` | Painel candidato | JobSeeker |

---

## 🚀 Desenvolvimento

### Instalar dependências

```bash
npm install
```

### Executar em desenvolvimento

```bash
npm run dev
```

### Build de produção

```bash
npm run build
npm run start
```

### Linting

```bash
npm run lint
```

---

## 🐳 Docker

```bash
# Build
docker build -t gohorse-frontend .

# Run
docker run -p 3000:3000 gohorse-frontend
```

**Nota**: Requer `output: "standalone"` no `next.config.ts` (já configurado).

---

## 📁 Componentes Principais

| Componente | Descrição |
|------------|-----------|
| `components/ui/*` | Primitivos shadcn/ui |
| `components/dashboard-*` | Componentes do dashboard |
| `components/job-*` | Componentes de vagas |
| `components/sidebar.tsx` | Navegação lateral |

---

## 🔧 Configuração

### Variáveis de Ambiente

```env
NEXT_PUBLIC_API_URL=http://localhost:8080
```

### TypeScript

Configurado com strict mode em `tsconfig.json`.

### ESLint

Configurado com `next/core-web-vitals` e `next/typescript`.
