Imported from dedeusgui/PICK (
src/AGENTS.md). Install upstream withnpx skills add dedeusgui/PICK --skill src. Copyright stays with the author.
AGENTS.md — Frontend (/src/)
Camada de display: UI, animações, captura de input. Sem lógica de ranking/filtros.
Stack
React 19 + TS + Tailwind v4 (layout only) + CSS design system .pick-* + Zustand + Motion + Lucide
Design system
- Spec:
docs/specs/design-system.spec.md - Tokens:
src/styles/tokens.css— paleta Precision Verdict - Componentes CSS:
src/styles/components.css— classes.pick-btn,.pick-card,.pick-page, etc. - Tailwind permitido: flex, grid, gap, breakpoints, layout
- Evitar:
rounded-*,shadow-*, cores Tailwind hardcoded (indigo,slate,violet) - Fontes: Sora (display), IBM Plex Sans (body), IBM Plex Mono (data)
- Auth/conta (B-062):
Alert,GoogleButton,.pick-danger-panel,BattlePreviewCard— verdocs/specs/user-module-ui-overhaul.spec.md
Subdiretórios
| Dir | Conteúdo | Regra |
|---|---|---|
screens/ |
Telas completas | UI + store/API only |
components/ |
Componentes reutilizáveis | Stateless quando possível |
engine/ |
Utilidades client-side (share, explainer, badges) | Ver src/engine/AGENTS.md |
store/ |
Zustand session | Ver src/store/AGENTS.md |
types/ |
Contratos TS compartilhados | Compartilhados com backend |
Fluxo de telas
splash → category_select → filter_funnel → duel_loading → duel → podium
auth é ortogonal (Navbar Entrar / soft-gates); guest-first.
account / my_battles / wizard — módulo de usuário (E-007 remodel: Conta em seções, Wizard = tour coach-mark, Navbar 1 botão → Conta).
SharedPodium intercepta ?share=... e ?result=... antes do fluxo normal.
FilterFunnel (B-060/B-062b): orçamento (slider) → 10 pontos → marcas. Sem perfil de uso na UI. Auth: grava prefs ao comparar (B-063). Specs: filter-funnel-remodel + users-product-integration.
Auth (E-002): docs/specs/auth-ui-polish.spec.md — policy client + session cookie.
Regras
- Sem imports de
/backend/ - Sem lógica de negócio em
screens/— busca/parse/torneio via APIs; copy do funil emsrc/data/categoriesUi.ts(ADR-016), não via/api/catalog - CSS vars de
src/styles/tokens.css:--accent,--bg-base,--text-primary,--pick-* - Torneio permanece no Zustand até migração completa server-side (B-040 APIs disponíveis)
Specs
docs/specs/design-system.spec.mddocs/specs/ui-ux-refinement.spec.mddocs/specs/tournament-bracket-ux.spec.mddocs/specs/filter-funnel-ui-polish.spec.mddocs/specs/user-module-ui-overhaul.spec.md