Componentes
0. Fundamentos de componente
estável
seed-componentes.md v2.00 · §00seção 3 de 18400-fundamentos-de-componente-valem-para-todos-os.md · MD5 b307543fTítulo completo no canon: Fundamentos de componente (valem para todos os blocos) — estável
Em uma frase: Toda cor vem de token semântico; todo componente interativo tem os seis estados, foco visível e alvo de 44 px.
Vocabulário desta seção: os seis estados · focus-visible
- Toda cor via token semântico (
--seed-action-primary), nunca primitivo, nunca hex. Dark mode vem de graça. - Estados obrigatórios em todo componente interativo: default · hover · active/pressed · focus-visible · disabled · loading (quando houver operação assíncrona). Componente sem os 6 documentados não é "pronto".
- Foco sempre visível:
box-shadow: var(--seed-focus-ring)— nuncaoutline: nonesem substituto. Nos campos, o nome acessível (<label for>) e a ordem em que erro e ajuda são anunciados vêm do form-field (§2.9). - Alvo de toque ≥44×44px no tamanho padrão. ⚠ Este número é regra da SEED, mais rígida que a norma — não o cite como exigência dela. O piso normativo é menor: o critério SC 2.5.8 Target Size (Minimum), de nível AA na WCAG 2.2 e na ABNT NBR 17225:2025, pede 24×24 px; os 44×44 são o SC 2.5.5 (Enhanced), de nível AAA, e a recomendação das plataformas móveis. A casa adota os 44 porque o material dela é operado em campo, no celular, muitas vezes com luva. (Corrigido em 2026-09-10,
PB-P8: esta linha dizia "(WCAG 2.2 / mobile)" e fazia o leitor atribuir os 44 à norma — o mesmo número com o rótulo errado, contradizendo oseed-praticas.md§12 e §18, que já registravam os 24×24.) Tamanhos densos (sm) são para interfaces desktop de alta densidade. - Motion produtivo: transições de estado usam
--seed-dur-productive-fast(100ms) com--seed-ease-productive. Nada de animação expressiva em micro-interação.- ⭐
--seed-ease-out=cubic-bezier(.2,.8,.4,1)— FIXADO em 2026-08-26, por medição. Esta spec o usava quatro vezes (thumb do switch 120 ms · toast 160 ms · barra de progresso 200 ms · modal/drawer) e nunca dizia o valor, então o acervo tinha dois:.2,.8,.4,1em 3 artefatos e.2,.7,.3,1em 2. - ⚠ A medição mostrou que os dois são a mesma curva. Resolvendo o bézier em 21 instantes de um movimento de 120 ms, a diferença máxima é 1,5% do percurso e, em tempo, 0,3 ms. A 60 Hz um quadro dura 16,7 ms — 0,3 ms é 1/56 de um quadro. Não existe monitor onde essa diferença apareça. Escolheu-se a de maior uso, que também é a que faz o conserto ser de 2 arquivos e não de 3.
- ⭐⭐ E o mesmo teste respondeu a pergunta que ninguém tinha feito:
--seed-ease-outdeve existir, ou era apelido de--seed-ease-productive? Contra oproductive, a diferença é 36,8% do percurso e 24,9 ms — quase um quadro e meio, 83 vezes maior que a diferença entre as duas candidatas. São curvas diferentes de verdade, então o token merece existir. Sem o número, essa pergunta se responderia por gosto.
- ⭐
- Status de maturidade por componente:
rascunho→estável→depreciado. - Microcopy é parte do componente — cada spec define as regras de texto no tom SEED (direto, acolhedor, sem floreio).
- Responsivo por padrão (v0.7 — diretriz de paridade mobile/app, 2026-08-02). Todo componente especifica seu comportamento em superfície de toque: o que empilha, o que vira full-width, o que muda de tamanho. Largura sempre fluida dentro do layout (breakpoints oficiais nos tokens v1.2 §2.9; pior caso de teste: 360px). Hover é progressivo, nunca portador único de informação — não existe hover no toque; toda informação apresentada em hover precisa de equivalente acessível por toque/foco. Campos usam
--seed-fs-field-touch(16px) empointer: coarse. Motivo: apps serão produzidos e o uso mobile supera o desktop; nenhum bloco nasce desktop-first.
Também cita o §0: tela-atividade, tela-busca, tela-chat, tela-detalhe, tela-gantt, tela-lista, tela-mensageria, tela-onboarding, tela-portal-cliente, tela-portal-parceiro, tela-quadro, tela-quadro-funil, tela-referencia, tela-shell, tela-shell-abas, tela-shell-sem-topbar, tela-tabela.