# Frontend — SaveInMed Marketplace

React + Vite + TypeScript + Tailwind CSS

## Estrutura de `src/`

```
src/
├── assets/         → Logo, imagens estáticas
├── components/     → Componentes reutilizáveis
├── context/        → React Context (auth, tema) — estado global estável
├── hooks/          → Custom hooks
├── layouts/        → Layouts de página (Shell, DashboardLayout)
├── pages/          → Páginas organizadas por contexto e perfil
│     ├── auth/           → Login
│     ├── marketplace/    → Search, Cart, Checkout, Orders, OrderDetails
│     └── dashboard/
│           ├── admin/    → Painel administrativo (role admin)
│           ├── seller/   → Inventário, Produtos, Carteira, Equipe
│           ├── employee/ → Dashboard do colaborador
│           ├── delivery/ → Dashboard do entregador
│           ├── Company.tsx
│           └── MyProfile.tsx
├── services/       → Clientes HTTP por domínio
├── stores/         → Zustand (carrinho, filtros, UI global)
├── types/          → Tipos TypeScript compartilhados
└── utils/          → format, jwt, logger
```

## Importações absolutas

Utilize o alias `@/` (aponta para `src/`):

```tsx
// ✅ Correto
import { useAuth } from '@/context/AuthContext'

// ❌ Evitar (quebra ao mover o arquivo)
import { useAuth } from '../../context/AuthContext'
```

## Gerenciamento de estado

| Estado | Estratégia |
|--------|-----------|
| Auth (JWT, user) | Context API (`AuthContext`) |
| Tema claro/escuro | Context API (`ThemeContext`) |
| Carrinho | Zustand (`cartStore`) |
| Filtros de busca | Zustand / `usePersistentFilters` |
| Estado UI local | `useState` no componente |

> **Regra:** Context apenas para auth e tema. Tudo mais vai para Zustand.

## Scripts

```bash
pnpm dev      # Dev server (proxy → :8214)
pnpm build    # Build produção
pnpm test     # Testes (Vitest)
pnpm lint     # ESLint
```
