--- description: Revisar e otimizar UX de componentes e telas Vue (Frontend) --- # Workflow: Revisão de UX Guia de revisão e otimização de interfaces Vue 3 + Vuetify 3 no ecossistema Azteca — para usuários corporativos com baixa familiaridade tecnológica. --- ## Perfil do Usuário O público-alvo das interfaces é corporativo e diversificado em experiência técnica: - Gestores públicos e ambientais - Técnicos de campo - Consultores ambientais - Operadores administrativos **Premissa central**: o usuário não tem familiaridade avançada com tecnologia. A interface precisa ser autoexplicativa, sem dependência de treinamento prévio. --- ## Paleta de Cores Institucional Cor base: `#688C00` (verde floresta). Três escalas derivadas: **Verde floresta** (primária), **Âmbar terroso** (apoio/aviso), **Cinza musgo** (neutros). Semânticas independentes para garantir reconhecimento universal. ### Escala primária — Verde floresta | Token | Hex | Stop | Uso | |---|---|---|---| | `--cor-eli-primaria-bg` | `#EEF3D0` | 50 | Fundo de cards destacados, linhas ativas, hover suave | | `--cor-eli-primaria-zebra` | `#F6F9E8` | 30 | Linha zebrada de tabelas (quase branco esverdeado) | | `--cor-eli-primaria-suave` | `#BFC99C` | — | **Cabeçalho de tabela** — sage/olive mudo, sem limão, texto escuro | | `--cor-eli-primaria-clara` | `#D4E290` | 100 | Badges, chips, seleção, fundo de hover em listas | | `--cor-eli-primaria-media` | `#ADCC44` | 200 | Tags, indicadores secundários | | `--cor-eli-primaria-acao` | `#8AAF00` | 400 | Ação secundária, ícones ativos | | `--cor-eli-primaria` | `#688C00` | 600 | **Botões principais, links ativos, destaques — CTA principal** | | `--cor-eli-primaria-escura` | `#4A6500` | 800 | Hover em botões, bordas ativas, títulos com ênfase | | `--cor-eli-primaria-texto` | `#2E3F00` | 900 | Texto escuro sobre fundos claros da paleta primária | ### Escala de apoio — Âmbar terroso | Token | Hex | Stop | Uso | |---|---|---|---| | `--cor-eli-alerta-bg` | `#FAF3DF` | 50 | Fundo de banners de aviso | | `--cor-eli-alerta-clara` | `#F5DC8A` | 100 | Badges de atenção, chips de alerta | | `--cor-eli-alerta` | `#DDB847` | 200 | Ícones de aviso, bordas de alerta | | `--cor-eli-alerta-forte` | `#8C6A00` | 600 | Texto sobre fundo de alerta, status pendente | ### Escala neutra — Cinza musgo | Token | Hex | Stop | Uso | |---|---|---|---| | `--cor-eli-fundo` | `#F2F3EE` | 50 | Background geral de páginas | | `--cor-eli-borda` | `#D5D8CC` | 100 | Bordas padrão de containers | | `--cor-eli-borda-forte` | `#B5BAA8` | 200 | Bordas de foco, divisores | | `--cor-eli-neutro` | `#5E6553` | 600 | Textos secundários, ícones inativos | | `--cor-eli-neutro-escuro` | `#3E4436` | 800 | Texto de label, cabeçalhos de tabela | | `--cor-eli-superficie` | `#FFFFFF` | — | Cards, modais, popovers | ### Cores semânticas | Token | Hex | Uso | |---|---|---| | `--cor-eli-sucesso` | `#2e7d32` | Confirmações, status positivo | | `--cor-eli-sucesso-bg` | `#E8F5E9` | Fundo de mensagens de sucesso | | `--cor-eli-erro` | `#c62828` | Erros, ações destrutivas | | `--cor-eli-erro-bg` | `#FFEBEE` | Fundo de mensagens de erro | | `--cor-eli-info` | `#1565c0` | Informações auxiliares | | `--cor-eli-info-bg` | `#E3F2FD` | Fundo de banners informativos | ### Regras de contraste - Texto sobre `--cor-eli-primaria` (`#688C00`) deve ser **branco** (`#ffffff`) — contraste 4.6:1 ✓ - Texto sobre `--cor-eli-primaria-bg` (`#EEF3D0`) deve ser `--cor-eli-primaria-texto` (`#2E3F00`) — contraste 12:1 ✓ - Texto sobre `--cor-eli-primaria-escura` (`#4A6500`) deve ser **branco** (`#ffffff`) — contraste 7.1:1 ✓ - Texto sobre `--cor-eli-alerta-bg` (`#FAF3DF`) deve ser `--cor-eli-alerta-forte` (`#8C6A00`) — contraste 5.2:1 ✓ - Texto sobre `--cor-eli-primaria-suave` (`#BFC99C`) deve ser `--cor-eli-neutro-escuro` (`#3E4436`) — contraste ~12:1 ✓ - **⚠️ Efeito limão**: `--cor-eli-media` (`#ADCC44`) e `--cor-eli-acao` (`#8AAF00`) têm saturação 100% no hue amarelo-verde — **nunca usar como fundo de cabeçalho**. Para fundo verde mudo, usar `--cor-eli-primaria-suave`. - Sempre validar contraste mínimo de **4.5:1** (WCAG AA) para texto normal e **3:1** para texto grande (18px+ ou 14px bold). --- ## Passos ### 1. Identificar o escopo da revisão Determinar qual componente, tela ou modal será revisado. Pode ser: - Um componente isolado (ex: `EliTabela`, `EliCartao`) - Uma página completa (ex: `PaginaCadastro.vue`) - Um modal ou drawer (ex: `EliTabelaModalFiltroAvancado.vue`) - Uma interação específica (ex: fluxo de filtro, paginação, menu de ações) ### 2. Mapear o estado atual Antes de alterar, entender o que já existe: - Ler o template (`