banco-escolha.html · bancada do §60 · preview v0.5 —
catálogo de ESTADOS da escolha segmentada e múltipla (SG1–SG14 e SG6-b), do
seed-componentes.md. Bancada, não tela (CP31). Dado sintético: nenhum
nome, documento ou valor de contrato real. Os números de geometria aqui não foram escolhidos — vêm
da medição dos dois consumidores em produção na auditoria SG-P1.
Três problemas diferentes que a mesma forma visual serve, e a semântica segue o problema, não a aparência. A régua em uma frase: pergunte o que muda. Muda a forma de ver o mesmo dado → segmentado. Muda quanto do mesmo dado aparece → interruptor. Muda o dado → abas (§34), e aí não é este componente.
role="radiogroup" + role="radio" +
aria-checked, com um único tab stop e setas movendo dentro. Tab entra
e sai do grupo com um pressionamento; ←/→/↑/↓ trocam a escolha; Home e End vão às pontas — e são
eles que impedem a fileira longa de custar N setas.
A auditoria SG-P1 mediu os dois consumidores em produção e achou duas geometrias para a mesma família. A altura já convergiu em 44px (o §53 media 32px e subiu na SG-P7). O raio não: o painel usa pílula, a lista usa reto. Nenhum dos dois é errado isoladamente; os dois juntos são a prova de que não havia canon. Os dois lados abaixo são o mesmo controle, com o mesmo conteúdo — a única diferença é o raio. O gate escolheu o lado B (reto), e ele é o canon — o lado A fica aqui porque decisão sem a evidência ao lado vira folclore em três meses.
A terceira fileira de cada lado é estreita de propósito: o SG5 revisto permite o segmentado quebrar em linhas, e é na quebra que os dois raios se comportam diferente — o arredondamento total do grupo tem de envolver duas linhas, o reto não. Está aqui para ser olhado, não para ser afirmado.
Um <button> com aria-pressed, não
um segmentado de duas opções. Ligar e desligar é um controle, não uma escolha entre dois —
e é por isso que "Só comentários" (§56) nunca precisou virar radiogroup. Dois modos irmãos, em que
nenhum é o "desligado" do outro, são caso do SG1, não deste.
A lista não fecha ao escolher (SG14): quem marca vários teria de
reabrir a cada item. Cada escolhido vira um chip removível com nome que diz o que
remove; acima do teto declarado os excedentes colapsam em "+N"; remover
anuncia o que saiu e quantos restam; e o "Limpar tudo" só existe a
partir de dois chips — com um só, o próprio X já é o limpar.
O status (Pendente · Em andamento · Ganho · Perdido, §57 QD23) tem a cor como campo editável por quem tem permissão de criar ou editar status — a permissão é do produto; o DS dá a forma. A escolha é fechada na paleta do DS: onze cores, sem campo de hex. Cada status nasce com a sugestão do DS já marcada, e a pessoa troca. Só entra cor cujo chip passa 4,5 de contraste no texto nos dois temas (tabela abaixo, lida dos tokens a cada geração). O controle é um grupo de rádios nativos: um tab stop, as setas movem, o nome acessível de cada opção é o nome da cor, e o valor atual leva círculo preenchido e borda de 2 px além da cor.
Contraste do texto sobre o fundo do chip, por cor e por tema — a mesma conta que a geração faz e que a interrompe se alguma cor cair abaixo do piso:
| Cor | Classe do chip | Texto/fundo, claro | Texto/fundo, escuro | Piso 4,50 |
|---|---|---|---|---|
| Verde | .st-ok | 5,89 | 9,35 | entra |
| Azul | .st-info | 5,79 | 9,38 | entra |
| Cinza | .st-neutro | 6,42 | 9,92 | entra |
| Âmbar | .st-alerta | 9,05 | 9,27 | entra |
| Vermelho | .st-erro | 6,58 | 9,47 | entra |
| Turquesa | .st-e1 | 5,11 | 5,11 | entra |
| Dourado | .st-e2 | 5,30 | 5,30 | entra |
| Ciano | .st-e3 | 5,63 | 5,63 | entra |
| Verde-floresta | .st-e4 | 9,37 | 9,37 | entra |
| Petróleo | .st-e5 | 6,43 | 6,43 | entra |
| Marrom | .st-e6 | 6,68 | 6,68 | entra |
| # | Contrato | Onde se prova |
|---|---|---|
| SG1 | Segmentado é radiogroup com um único tab stop e setas dentro | Todos os segmentados desta página · e os quatro grupos do §48 |
| SG2 | Recorte binário é um <button> com aria-pressed | Seção “Interruptor de recorte” · e o §56 em tela-detalhe.html |
| SG3 | Nunca tablist sem painel | Por AUSÊNCIA: zero tablist no acervo, medido a cada rodada |
| SG4 | O nome do grupo diz o que a escolha faz E que ela aplica na hora | aria-label de todos os grupos desta página |
| SG5 | O teto é de APERTO MEDIDO, não de contagem | “Cinco opções” · medido em 390/768/1180/1440px |
| SG6 | O selecionado se distingue por diferença de VALOR medida ≥ 3,00 | Prova “Escala de cinza” na barra de cima · medido em 4,60 e 4,57 |
| SG6-b | A separação sobrevive a forced-colors: active, com cor de sistema | Alto contraste do sistema · medido: 1,00 antes, 19,04 depois |
| SG7 | Contagem por segmento conta o CONJUNTO — não muda com o filtro | “Com contagem por segmento” — esta bancada é a única instância |
| SG8 | Segmento com ícone e rótulo usa SÓ o rótulo no nome acessível | “Com ícone e rótulo visível” · o ícone é aria-hidden |
| SG9 | Multi-select produz chips removíveis com nome que diz o que remove | Seção “Múltipla escolha” · aria-label de cada X |
| SG10 | O chip é o do §22, com o X interno em alvo de 44px | .chip .x — e o dono é position:relative, senão o alvo ancora fora |
| SG11 | Acima de um teto declarado, os chips colapsam em “+N” | Marque mais de 3 frentes · teto em fonte única no gerador |
| SG12 | Remover um chip anuncia o que saiu E quantos restam | Remova um chip com leitor de tela ligado |
| SG13 | “Limpar tudo” existe a partir de dois chips | Desça até um chip: o “Limpar” some |
| SG14 | Multi-select NÃO fecha a lista ao escolher | Abra a lista e marque vários — esta bancada é a única instância |