Frontend completo (Etapas 11-18) e extensões de backend (Etapas 13 e 18)

Adiciona o frontend Next.js em frontend/ (setup, design system,
autenticação/tema, layout/navegação, área master, área tenant completa:
clientes, produtos, vendas, recebimentos, whatsapp, e-mail, alertas,
equipe e perfil). Estende o backend de forma aditiva e autorizada:
cookie httpOnly para refresh token (Etapa 13) e CRUD de equipe +
edição de perfil do tenant (Etapa 18, módulo src/modules/equipe/ novo
e PUT /tenant/perfil). Detalhes completos em Etapas/V2/*.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-16 09:41:13 -03:00
co-authored by Claude Sonnet 5
parent f9738e54da
commit 323912748f
179 changed files with 29312 additions and 22 deletions
+65
View File
@@ -0,0 +1,65 @@
/**
* Tokens de design do SeConectai Vendas (seção 6 do schema de arquitetura
* de frontend — Etapas/V2/10-frontend-schema-arquitetura.md).
*
* `--color-primary` é resolvida em runtime por tenant (whitelabel) pela
* Etapa 13 — o valor abaixo é só o fallback exibido antes da resolução
* (ou quando o tenant não define cor própria).
*/
:root {
/* Paleta neutra da plataforma — igual em master e em todos os tenants */
--neutral-950: #12141a;
--neutral-500: #6b7280;
--neutral-200: #e5e7eb;
--neutral-50: #f8f9fb;
--surface: #ffffff;
/* Cores semânticas */
--danger: #dc2626;
--success: #16a34a;
--warning: #d97706;
/* Identidade fixa do painel master (não whitelabel) */
--brand-master: #1e3a5f;
--brand-master-accent: #2dd4bf;
/* Cor de marca dinâmica por tenant — fallback até a Etapa 13 resolver
`tenants.cor_primaria` via endpoint público de tema */
--color-primary: #2563eb;
/* Variante de `--color-primary` garantida com contraste AA contra
branco (Etapa 13, `lib/theme/contrast.ts`) — usar em texto/ícone
sobre fundo claro (`text-primary-on-light`). NUNCA usar para fundos:
`bg-primary` continua com a cor original do tenant, sem ajuste. */
--color-primary-on-light: var(--color-primary);
}
/* Ponte para o Tailwind v4 (CSS-first): mapeia as CSS variables acima para
o namespace de cor do tema, gerando as utilities `bg-primary`,
`text-danger`, `bg-neutral-950` etc. sem duplicar os valores em JS. */
@theme inline {
--color-neutral-950: var(--neutral-950);
--color-neutral-500: var(--neutral-500);
--color-neutral-200: var(--neutral-200);
--color-neutral-50: var(--neutral-50);
--color-surface: var(--surface);
--color-danger: var(--danger);
--color-success: var(--success);
--color-warning: var(--warning);
--color-brand-master: var(--brand-master);
--color-brand-master-accent: var(--brand-master-accent);
--color-primary: var(--color-primary);
--color-primary-on-light: var(--color-primary-on-light);
--font-sans: var(--font-inter);
}
@layer utilities {
.tabular-nums {
font-variant-numeric: tabular-nums;
}
}