Enchedora EN-301
RodandoLinha 3 · envase de 1 L. Última parada há 2 h 14 min.
Specimen vivo do design system: tokens DTCG em três camadas, componentes com todos os estados e padrão de teclado APG, e os eixos de tema — modo, densidade, marca, contraste e movimento — aplicados em tempo real. Troque um eixo no topo e cada peça abaixo responde.
Nunca consumidas por componente. Clique para copiar a custom property.
Razão WCAG 2.2 calculada agora, sobre as cores renderizadas no tema ativo.
O laranja de marca com texto branco reprova (3,17:1). Por isso a ação no tema claro usa um degrau mais escuro — e no escuro, texto escuro sobre o laranja.
Uma família, hierarquia por tamanho e peso. Números tabulares onde há comparação.
3xl · 44/700Ordem 2026-04122xl · 32/65087,4 % de disponibilidadexl · 24/650Planejamento da semana 39lg · 20/600Apontamentos pendentesmd · 16/400Corpo confortável para leitura contínua em documentação.base · 14/400Corpo padrão de produto: denso sem perder legibilidade.sm · 13/400Texto de apoio, descrição de campo, metadado.xs · 12/400Rótulo de tabela e legenda de gráfico.tabular-nums1.111,11 t8.088,80 t 472,05 tmono--glx-color-action-bg: #C2500E;Base 4 px. Raio hierárquico: o container sempre maior que o filho.
Duração e easing em token. Com movimento reduzido, tudo vira instantâneo.
Button, IconButton, grupo, toggle, segmentado, split, link, copiar.
aria-disabled continua focável e explica o motivo no tooltip.
<Button intent="primary" loading={isSaving}>Salvar ordem</Button>
<Button intent="danger"><Trash2 />Excluir lote</Button>
<Button intent="ghost" size="sm" aria-disabled title="Preencha o centro de custo">Exportar</Button>Anatomia única de campo: rótulo acima, ajuda, erro no próprio campo.
Checkbox, radio, switch, select nativo, combobox com busca, tags, slider.
Switch aplica na hora. Se a mudança precisa de "salvar", é checkbox.
Select nativo usa appearance: base-select onde há suporte (Chromium 135+); nos demais, continua o select do sistema. Com busca, é Combobox.
Top layer nativo: <dialog> e popover, sem guerra de z-index.
Alerta, toast, progresso, medidor, skeleton, estados vazio, erro, sem permissão e offline.
Cor nunca sozinha: ícone e texto carregam o significado.
A programação da semana 40 foi publicada às 07:12.
214 registros enviados ao ERP.
A OP-0418 pode atrasar se a reposição não chegar até quinta.
O centro de custo CC-99 foi desativado. Escolha outro centro e salve de novo.
Estado é direção, não humor: diz o que houve e o que fazer.
Importe a programação ou crie uma ordem manualmente.
O serviço de historiador não respondeu em 10 s. Os dados até 07:40 continuam visíveis.
Seu perfil pode consultar, mas não editar a programação. Peça acesso ao coordenador.
Apontamentos ficam na fila local e sobem quando a rede voltar. 6 na fila.
KPI com frescor, tabela, badges, avatar, card, lista de descrição, timeline, gráficos, calendário, kanban.
Todo número carrega a idade. Fresco, obsoleto e ruim têm forma distinta, não só cor.
Cabeçalho fixo, números à direita em tabular-nums, ordenação acessível, seleção em lote. Densidade segue o eixo do tema.
| Dado | Ações |
|---|
Linha 3 · envase de 1 L. Última parada há 2 h 14 min.
Hoje, 07:12 · PCP
Ontem, 16:40 · Engenharia
24/09, 10:05 · Qualidade
23/09, 09:31 · Sistema
Tendência de processo: eixo Y não começa em zero, faixa de operação ao fundo. Barras: destaque só no que importa.
Kanban: Espaço pega o card, ←→ move de coluna, Espaço solta. Arrastar com mouse também funciona.
Linguagem oposta à de gestão: cinza neutro, cor só para anormal, prioridade de alarme por forma e cor.
Este bloco ignora o tema de marca de propósito: tela de operação não herda acento laranja.
Mensagem, citação, chamada de ferramenta, digitando e portão de aprovação humana.
{ "op": "OP-0418", "linha": "L3", "inicio": "2026-09-30T06:00", "folga_h": 26 }Escolha um matiz. A escala sai em OKLCH e a cor de ação é procurada até passar 4,5:1 — medida, não estimada.
◐ indica passo que saiu do gamut sRGB e teve o croma reduzido até caber. Moldura marca o passo escolhido para ação em cada modo.
Curva, mola e coreografia viram token. Todo movimento aqui obedece ao eixo “reduzir movimento”.
linear()Movimento que responde a uma ação e mostra o que mudou — nunca decoração solta.
Arraste a linha para a direita além de 40% da largura. Todo gesto tem um botão equivalente — WCAG 2.5.7.
View Transitions quando existe, FLIP quando não existe. Altura automática sem medir em JS.
Animar grid-template-rows de 0fr para 1fr dá altura automática sem medir em JavaScript e sem saltos. Onde houver interpolate-size, height:auto também anima.
As durações vêm de token. Com o eixo ligado viram 0 ms: o conteúdo aparece, só não desliza.
transform e opacity rodam no compositor. Largura, altura e sombra custam layout ou pintura: use com parcimônia e meça.
Carrossel, avaliação, faixa dupla, divisor, lista ordenável, lista virtual, notificações, menu de contexto, assistente e linha do tempo.
Planta Blumenau › Linha 3 › Envase › EN-301
Arraste o divisor ou foque nele e use ← →, Home e End. Enter recolhe e restaura.
Frescor do dado é estado de interface: fresco, obsoleto e inválido têm aparência própria.
Pause a fonte: depois de 5 s sem leitura o indicador vira “obsoleto”, a linha fica tracejada e o valor perde o destaque. O operador nunca confunde dado velho com dado atual.
A interface muda na hora e confirma depois. Se o servidor recusar (aqui, 35% das vezes), volta ao estado anterior com tremor e explicação.
Top layer nativo com entrada e saída animadas em CSS puro. No celular, modal vira folha inferior.
Esc e clique fora fecham com a mesma animação de saída — sem JavaScript de animação: transition em display e overlay com allow-discrete, entrada em @starting-style. Em navegador sem suporte, abre e fecha instantâneo. Abaixo de 640 px, modais com data-mobile="sheet" sobem de baixo.
dialog.modal{opacity:0;translate:0 12px;
transition:opacity .32s,translate .32s,overlay .32s allow-discrete,display .32s allow-discrete}
dialog.modal[open]{opacity:1;translate:0 0}
@starting-style{dialog.modal[open]{opacity:0;translate:0 12px}}Modal bloqueia a página e prende o foco (top layer + inert implícito). Não modal (show()) deixa a página utilizável: serve para ajuda contextual ou inspetor. A folha inferior tem alça: arraste para cima para expandir, para baixo para fechar; pelo teclado, Enter na alça alterna meio/cheio.
Mesmo HTML do desktop ao celular: container queries, prioridade+ e barra inferior. Arraste a borda direita da moldura.
Acima de 900 px todos os links cabem. Entre 600 e 900 px, os que não cabem vão para “Mais” — medido de verdade, não por breakpoint fixo. Abaixo de 600 px: hambúrguer abre gaveta, busca expande sobre a barra, barra inferior com 4 destinos e botão flutuante; rolar para baixo esconde topo e base, rolar para cima traz de volta. Esta própria página faz o mesmo abaixo de 820 px.
Estado real do navegador, componentes do ciclo de vida e o kit pronto para servir por HTTPS.
Aberto como arquivo local, este specimen não é instalável — service worker exige origem segura e script servido pelo mesmo domínio. Publique a pasta do kit abaixo num servidor HTTPS (ou localhost) e os critérios ficam verdes.
Tudo o que o sistema cobre, com base nativa ou padrão APG e onda de entrega.
| Componente | Categoria | Base / padrão | Onda | Neste specimen |
|---|
Uma fonte, cinco saídas. dist/ nunca é editado à mão.
tokens/*.jsoncheck_tokens.pytokens.css · theme.cssbg-action text-on-actionPlaywright + Vitest{
"color": {
"$type": "color",
"action": {
"bg": { "$value": "{color.orange.700}" }
},
"text": {
"on-action": {
"$value": "{color.neutral.0}",
"$extensions": { "com.glx.contrast": { "against": ["{color.action.bg}"], "min": 4.5 } }
}
}
}
}
$ python scripts/check_tokens.py primitives.json semantic.light.json
tokens: 65 · erros estruturais: 0 · pares de contraste: 18 · reprovados: 0GPlanSiS|SDesign — specimen gerado pela skill glx-design-system-hard. Tokens espelham assets/tokens/.