Pular para o conteúdo
Xeque

Componentes

Contratos claros. Estados completos.

Ações

Uma ação principal por contexto. A secundária oferece uma alternativa; a textual apoia a leitura.

Estados de ação

“Simular processamento” percorre os estados pronto, processando e concluído, sem envio. Alt + R aciona “Revisar exemplo” fora dos campos de texto.

“Indisponível” representa uma ação sem permissão neste exemplo. Estado de processamento mantém o nome da ação. Desabilitar só quando a ação estiver indisponível; explique a causa junto ao controle.

<a class="xq-btn" href="mailto:contato@chesslab.com.br">Conversar com a Chesslab</a>
<button class="xq-btn xq-btn--secundario" type="button">Revisar</button>

Uma pergunta por vez.

As dúvidas da aceleração usam abas. Setas navegam entre os temas; Home e End acessam os extremos.

Para quem é?

E-commerces e atacadistas que já vendem e querem escalar com processo, não com achismo.

O que entra no mês?

Anúncios, criativos, CRO, fidelização, feedback semanal, relatório mensal e calendário visível.

Como começa?

Você preenche a aplicação, fazemos o diagnóstico e desenhamos meta e plano do mês 01.

Menu de contexto

O foco entra no menu. Setas, Home e End percorrem as ações. Escape fecha e devolve o foco ao botão; Tab continua a página.

<div data-xq-abas>
  <div role="tablist" aria-label="Dúvidas">
    <button role="tab" id="pergunta" aria-controls="resposta"
      aria-selected="true">Para quem é?</button>
  </div>
  <div role="tabpanel" id="resposta" aria-labelledby="pergunta">…</div>
</div>

Abrir o que interessa.

O acordeão usa details e summary nativos. Funciona por teclado e sem JavaScript.

Termômetro de CAC

Ponto de corte por custo fixo e variável. Teto de CAC por margem, sem queimar lucro.

Otimizações frequentes

Cronograma automatizado mostra todo dia o que otimizar em cada campanha.

Calendário visível

Você vê o que fazemos por você em cada dia do mês. Sem ruído, sem atraso escondido.

Clareza em cada campo.

Rótulos sempre visíveis. Instrução antes do erro. Esta demonstração valida localmente, sem envio ou armazenamento.

Aplicação de contato

Dois campos obrigatórios. Validação no navegador.

Campo indisponível neste exemplo.

De 0 a 100%, em incrementos de 0,1. Valor ilustrativo; não representa margem de cliente.

Somente leitura. O conteúdo pode ser selecionado e copiado.

0 / 600 Organização e processo são o caminho para o sucesso.

* Campos obrigatórios

Combobox com busca

Setas percorrem a lista; Enter seleciona; Escape fecha.

<label for="email">E-mail profissional</label>
<input class="xq-input" id="email" type="email" required
  aria-describedby="email-erro" data-xq-error="email-erro">
<p class="xq-campo-erro" id="email-erro"></p>

Foco no próximo passo.

Dialog nativo para decisões que pedem atenção. Gaveta para consultar o escopo sem perder o contexto.

Tab e Shift + Tab ficam dentro da janela. Escape fecha. Ao sair, o foco volta à ação que abriu a sobreposição.

Seu e-commerce vai crescer assim.

Você preenche a aplicação, fazemos o diagnóstico e desenhamos meta e plano do mês 01.

Exemplo de interface. O contato abre no aplicativo de e-mail.

O que entra no mês?

Anúncios, criativos, CRO, fidelização, feedback semanal, relatório mensal e calendário visível.

Termômetro de CAC

Ponto de corte por custo fixo e variável. Teto de CAC por margem, sem queimar lucro.

Projeções do mês

Dados do mês viram meta e plano do próximo mês, variável por variável.

Calendário visível

Você vê o que fazemos por você em cada dia do mês. Sem ruído, sem atraso escondido.

Descartar rascunho?

Esta é uma demonstração de confirmação. Nenhum dado será removido.

<button data-xq-open="aplicacao">Abrir aplicação</button>
<dialog class="xq-dialog" id="aplicacao" data-xq-dialog
  aria-labelledby="titulo-aplicacao">
  <h2 id="titulo-aplicacao">Preencher aplicação</h2>
  <button data-xq-close>Voltar</button>
</dialog>

O estado tem nome.

A cor reforça o significado. O texto descreve a situação e indica o que fazer.

Campos validadosA demonstração está pronta para revisão.

Revise o e-mailUse um endereço completo, como nome@empresa.com.br.

Falta um campo obrigatórioPreencha o nome para continuar.

Validação localNenhum dado desta demonstração é enviado ou armazenado.

Uma pilha de estados.

Cada acionamento cria uma mensagem independente. A pilha mantém até quatro notificações, sem roubar o foco. Estas mensagens permanecem até o fechamento.

Entender antes de executar.

Quiz técnico baseado no ciclo real de trabalho da Chesslab. Feedback explica a resposta e permite tentar novamente.

Qual etapa vem antes de criar o conteúdo?

Contrato de integração

ComponenteContratoComportamento
Abasdata-xq-abasUma seleção, roving tabindex, painéis ligados por ARIA.
Menudata-xq-menuSetas, Home, End, Escape e fechamento externo.
Dialogdata-xq-dialogFoco confinado, Escape, retorno ao acionador.
Comboboxdata-xq-comboboxBusca sem acentos, seleção por teclado ou toque.
Formuláriodata-xq-formValidação local, erro ligado ao campo, foco no primeiro erro.
ToastsXequeCore.toast(mensagem, opções)Pilha de quatro mensagens; duração opcional pausa ao receber foco ou ponteiro.
Açãodata-xq-actionEstado explícito e atalho opcional sem interferir na digitação.
Quizdata-xq-quizResposta explicada, anúncio discreto, tentativa sem bloqueio.

CSS: css/20-core.css. Comportamentos: js/modulos/core.js, incluído uma vez. Sem JavaScript, o conteúdo das abas continua legível; acordeões e campos nativos continuam disponíveis.

[XQ // C3 — 64Hz] PRANCHA TÉCNICA / 06 CONTRATOS

O contrato entre gesto e resposta.

A aparência da ação nasce da sua responsabilidade. Nome, disponibilidade, foco e retorno formam um único contrato: o controle permite prever o efeito, operar por teclado e entender o resultado sem depender da cor.

01 / 06

Anatomia de uma ação com estado

O botão articula um plano tátil, um limite funcional, um sinal redundante e um verbo preciso. A legenda de retorno fica ao lado do contexto; ela não desaparece dentro de um ícone.

Anatomia de uma ação com estadoEsquema com seis chamadas. A lista numerada a seguir descreve cada ponto.[XQ // C3] AÇÃO / CONTRATO01 / 06Revisar aplicaçãoALT RValidação local · nenhum dado enviado010203040506
Seis chamadas de anatomia: Anatomia de uma ação com estado. Leia os contratos correspondentes abaixo.
  1. Plano tátil

    O fundo opaco e o brilho interno separam o controle do suporte. A borda dupla é decorativa; o limite externo continua reconhecível sem textura.

  2. Sinal redundante

    O pequeno quadrado acompanha o nome da ação. Não pode ser a única indicação de pronto, erro ou processamento.

  3. Verbo e objeto

    “Revisar aplicação” comunica o próximo efeito. Manter o nome durante o processamento para preservar a relação entre intenção e retorno.

  4. Atalho documentado

    O kbd apresenta a combinação, aria-keyshortcuts a documenta e data-xq-shortcut a registra no XequeCore. O módulo ignora campos em edição, composição de texto e controles desabilitados; o atalho não substitui Tab e Enter.

  5. Foco de dois anéis

    O intervalo interno conserva separação do botão; o anel externo permanece visível sobre a superfície. Não recortar o foco com overflow ou chanfro.

  6. Retorno contextual

    A mensagem descreve o estado e sua recuperação. Validação local não equivale a envio; não anunciar cadastro ou contato concluído.

02 / 06

Contratos de tokens CSS

Valor ou alias no tema claro, propriedade consumidora e limite de uso. Cores são apresentadas em RGB equivalente; a fonte continua no CSS de tokens. O inspetor mostra a resolução no tema escolhido.

Contrato de O contrato entre gesto e resposta
Token / expressão Aplicação CSS Regra
--xq-controle-lg 56px .xq-btn min-block-size 56 px na ação principal. Não comprimir o alvo para acomodar texto; permitir quebra ou empilhar ações.
--xq-raio-controle 3px .xq-btn border-radius 3 px no controle. A assinatura usa precisão de borda; não substituir por uma cápsula arbitrária.
--xq-realce rgb(36 71 53) .xq-btn background, border-color Cor semântica da ação principal em cada tema; aplicar junto de --xq-sobre-realce.
--xq-sobre-realce rgb(247 248 242) .xq-btn color Texto e ícones do plano de ação. Não herdar a tinta do corpo sobre o fundo de realce.
--xq-surface-inset inset 0px 1px 0px 0px var(--xq-surface-specular), inset 0px -1px 0px 0px var(--xq-surface-shade) .xq-btn box-shadow Iluminação interna compartilhada. Foco visível acrescenta seus anéis sem apagar este material.
--xq-ritmo-3 12px .xq-btn gap 12 px entre sinal, texto, ícone e atalho; o texto pode ocupar o espaço flexível.
--xq-font 'Schibsted Grotesk', Arial, sans-serif .xq-btn font-family Schibsted Grotesk para o comando legível. Reservar mono para atalho, índice e dado técnico.
--xq-mono 'Xeque Mono', monospace .xq-btn-atalho font-family Xeque Mono no atalho. A largura estável distingue a medição da linguagem da ação.
--xq-focus-width 2px .xq-btn:focus-visible outline-width Espessura de 2 px. O foco precisa permanecer completo no teclado e nos seis temas.
--xq-focus-outer var(--xq-anel) .xq-btn:focus-visible outline-color Anel semântico externo. Não substitui o espaço do anel interno.
--xq-focus-gap 2px .xq-btn:focus-visible outline-offset, box-shadow Intervalo de 2 px mais suporte interno. Nunca neutralizar com outline: none.
--xq-motion-press 100ms .xq-btn transition-duration 100 ms na resposta de transform. A preferência por movimento reduzido neutraliza o deslocamento.
03 / 06

Uso correto × uso incorreto

Compare a mesma intenção em duas composições. Os exemplos são amostras de leitura; os controles operáveis ficam no playground.

Uso Correto (Xeque)
[XQ // C3] AÇÃO LOCAL01 / 01
Revisar aplicaçãoAlt R

Amostra visual do comando. Retorno: aplicação pronta para revisão local.

  • Um comando dominante com verbo e objeto; contexto informa o alcance local.
  • Sinal e texto trabalham juntos, com separação técnica entre mensagem e atalho.
  • A anatomia documenta o foco; a amostra visual usa span para não fingir operação.
Uso Incorreto (Genérico)
Tudo em um só lugar

Faça acontecer!

ContinuarEnviarComeçar

Pronto!

  • Três comandos disputam a mesma prioridade, sem esclarecer o efeito de cada um.
  • “Pronto!” omite o que foi concluído e se houve envio.
  • Formato de cápsula e selo promocional não descrevem responsabilidade ou estado.
04 / 06

Bancada de resposta da ação

Troque o estado da validação e examine como o retorno mantém verbo, contexto e número de protocolo. “Executar teste local” simula a resposta local; “Repetir” reinicia a transição sem duplicar efeitos.

Variantes de estado e composição
[XQ // C3] PRONTO
[XQ // C3] VALIDAÇÃO LOCALAÇÃO / 01

Aplicação em revisão.

Revisar aplicação01 / 01

Pronto para conferir os campos da demonstração.

Este laboratório altera apenas o estado de apresentação. A validação operável permanece nos exemplos anteriores.

Pronto. Altere um controle para inspecionar o contrato.

Ensaio local e determinístico. A ação percorre carregamento → sucesso; movimento reduzido entrega o estado final imediatamente. Repetir preserva os controles.

Inspecionar tokens resolvidos
--xq-controle-lg
56px
--xq-raio-controle
3px
--xq-realce
rgb(36 71 53)
--xq-sobre-realce
rgb(247 248 242)
--xq-surface-inset
inset 0px 1px 0px 0px var(--xq-surface-specular), inset 0px -1px 0px 0px var(--xq-surface-shade)
--xq-ritmo-3
12px
--xq-font
'Schibsted Grotesk', Arial, sans-serif
--xq-mono
'Xeque Mono', monospace
--xq-focus-width
2px
--xq-focus-outer
var(--xq-anel)
--xq-focus-gap
2px
--xq-motion-press
100ms
05 / 06

Aplicar o contrato

Separar envio de validação

A função de validação confirma requisitos dos campos. O texto de sucesso deve declarar esse resultado específico; só uma confirmação real do destino permite anunciar envio.

<button class="xq-btn" type="submit">Validar aplicação</button>
<p class="xq-form-status" role="status">Campos conferidos localmente.</p>

Explicar uma ação indisponível

disabled remove o acionamento nativo. A justificativa continua junto ao controle e se conecta por aria-describedby; não depender de tooltip inacessível.

<button class="xq-btn" type="button" disabled
  aria-describedby="acao-motivo">Indisponível</button>
<p id="acao-motivo">Este exemplo não possui permissão de envio.</p>

Documentar e registrar o mesmo atalho

aria-keyshortcuts informa a combinação à tecnologia assistiva; não executa o comando. Com XequeCore carregado, data-xq-shortcut encaminha Alt+R ao mesmo clique nativo. O exemplo reutiliza o toast local existente e não envia dados.

<button class="xq-btn" type="button"
  aria-keyshortcuts="Alt+R" data-xq-shortcut="Alt+R"
  data-xq-toast-trigger="Exemplo pronto para revisão. Nenhum dado foi enviado.">
  <span class="xq-btn-texto">Revisar exemplo</span>
  <kbd class="xq-btn-atalho" aria-hidden="true">Alt R</kbd>
</button>
06 / 06

Critérios de aceite

  • Percorrer as ações por Tab e conferir o anel completo, sem recorte.
  • Acionar menu, abas, combobox e diálogos com as teclas descritas nos exemplos.
  • Confirmar que disabled, readonly e aria-busy mantêm significados distintos.
  • Forçar erro e corrigi-lo: a mensagem precisa apontar campo e recuperação.
  • Testar Alt+R fora e dentro de um campo: só o comando visível e habilitado recebe o atalho fora da edição.