Feat/lint e fase4 design system - #2
Merged
Merged
Conversation
…tical-CSS inlining Causa raiz: o build de produção do Angular ativa por padrão o critical CSS inlining, que carrega o styles-*.css de forma assíncrona via <link media="print" onload="this.media='all'">. Esse onload é um handler inline, bloqueado pela CSP do projeto (script-src 'self', sem unsafe-inline). Sem ele rodar, o media nunca muda pra 'all' e o CSS global (styles.scss) nunca se aplica na tela — só some ao imprimir a página. Sintoma visível: searchbar (e qualquer outra classe global) caindo pro estilo nativo quadrado do navegador, com Arial no lugar de Nunito Sans. Confirmado ao vivo em https://mapompeo-pokedex.vercel.app/: o link da folha de estilos tinha media="print" travado e o input .dex-search__input computava border:2px inset (default do Chrome) em vez das regras do styles.scss. Fix: desliga inlineCritical na config de produção do angular.json, que volta o <link rel="stylesheet"> a carregar do jeito normal, sem depender de handler inline. Custo é desprezível (bundle de CSS tem só 13KB). Não enfraqueci a CSP pra não perder a proteção contra XSS. Bônus: removida a diretiva frame-ancestors da CSP via <meta> — o navegador já ignora ela nesse contexto (só funciona em header HTTP), então só gerava aviso morto no console. Documentado no comentário que, se quiser bloqueio de clickjacking de verdade, precisa configurar como header no host de deploy. Validado: build de produção + servido estaticamente localmente, confirmado via DevTools que o <link> não tem mais media=print/onload e o input renderiza com as regras corretas (border:none, Nunito Sans). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Configura @angular-eslint/schematics (eslint.config.js + npm run lint + builder no angular.json). Corrige tudo que apareceu: - 2 gaps reais de acessibilidade de teclado: sprite clicável em pokemon-detail (tocar som) ganhou role=button/tabindex/keydown.enter+space, mesmo padrão já usado em team.component.html; painel de filtro de tipo em pokemon-list ganhou Escape (@HostListener), consistente com team e picker que já tinham. - 5 pares overlay/stopPropagation (team x3, picker x1, pokemon-list x1): são conveniência de mouse, não controles reais — Escape + botões focáveis já cobrem teclado. Documentados com eslint-disable-next-line em vez de forçar tabindex numa div de fundo de tela inteira (que seria pior pra leitor de tela). - 4 handlers de erro vazios (subscribe/catch): comentário movido pra dentro do corpo explicando que o interceptor global já trata (regra exige corpo não-vazio, comentário fora da função não conta). - 2 no-unused-vars (_dm, _event): configurada exceção pro prefixo _, que já era a convenção do projeto pra parâmetro/variável propositalmente não usada, em vez de mudar código que já fazia sentido. - 1 no-inferrable-types: removida anotação redundante (stage: number = 0). - 1 no-explicit-any: mantido (array heterogêneo de DataPart<T>, unknown não compila por contravariância), documentado com eslint-disable + comentário. - 2 eqeqeq (!= null): configurado allowNullOrUndefined (idioma proposital pra cobrir null e undefined numa checagem só; a regra certa do @angular-eslint/template/eqeqeq usa esse nome de opção, não o {null: 'ignore'} da regra eqeqeq base). Adiciona 'npm run lint' como step no CI, antes do build. Validado: sem apontamentos, limpo. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ot-action-btn) Migra os 3 botões compactos de ação do slot (análise/trocar/remover) pro componente compartilhado, item que a própria Fase 3 já tinha deixado documentado como pendente. Precisou de 2 extensões no componente, ambas genéricas (não hacks pontuais pro team): - size xxs (28px/ícone 16px) — faltava esse tamanho compacto entre xs e sm. - input dangerHover — hover fica vermelho independente do tom, pra ações destrutivas; ortogonal ao tom em vez de mais uma variante de cor. Converge a opacidade do fundo translúcido pro tom on-photo já existente (20%/35%) em vez de preservar os 25%/45% originais do CSS reinventado — diferença de 5% de alpha, imperceptível, e é exatamente esse tipo de inconsistência que a consolidação do design system existe pra eliminar. Validado: build limpo, time montado e testado no navegador (hover do botão remover fica vermelho, tooltips corretos, sem erros no console). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…340px) Abaixo de 340px, nome/tipos/meta e habilidades dos dois pokémon ficam espremidos lado a lado (metade da largura cada um). Empilha os dois blocos verticalmente nesse limiar (literal, não bp.down — ver comentário no arquivo sobre por quê) e vira o divisor de vertical pra horizontal. Mantido como está, de propósito: o gráfico de barras espelhadas de status (Estatísticas Base). Virar isso em duas barras cheias empilhadas por pokémon é trocar a metáfora visual da comparação, não um ajuste responsivo — fica como decisão de design em aberto, não deste commit. Validado: build limpo, layout conferido injetando as mesmas regras via DevTools (resize real de viewport não é confiável neste ambiente) — empilhamento correto tanto no bloco de info quanto no de habilidades. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
mapompeo
added a commit
that referenced
this pull request
Aug 27, 2026
O npm ci do CI falhava com EUSAGE ('Missing: chokidar@5.0.0 from lock
file') desde o commit do ESLint (2ce2a76, PR #2) — o ng add ali rodou um
npm install que deixou o lockfile sutilmente inconsistente (script
allow-scripts pendente truncou parte da resolução de dependências
opcionais). Ficou silenciosamente quebrado em master desde então; PRs #2
e #3 também tiveram o build do CI falhando, só ninguém tinha reparado.
Fix: apaguei node_modules + package-lock.json e rodei npm install do
zero, depois validei com npm ci limpo (exatamente o que o CI roda) —
sem erro, build e lint passam.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.