Kbd
Exibe uma tecla ou símbolo de teclado com estilo consistente, usando a tag `<kbd>` nativa (`mk-kbd`).
Componente Experimental
Este componente é experimental — não possui design aprovado no Figma. A API pode mudar entre versões.
O mk-kbd exibe uma tecla ou símbolo de teclado com estilo visual consistente — padding, borda, raio, tipografia monoespaçada e sombra sutil. Renderiza a tag HTML nativa <kbd> internamente, preservando a semântica documental. É puramente visual: não é focável, não emite eventos e não possui estados interativos (hover/active/disabled). Combine múltiplas instâncias manualmente para representar atalhos compostos, por exemplo Ctrl + S.
Quando usar
Use quando:- Precisar indicar visualmente uma tecla ou combinação de teclas em tooltips, menus, help text ou documentação.
- Quiser reforçar a leitura de um atalho já descrito em texto (ex.: "Pressione Ctrl+S para salvar").
- Precisar de um controle interativo de teclado — use
mk-buttonou outro elemento focável;mk-kbdé puramente ilustrativo. - Precisar compor atalhos automaticamente a partir de uma lista — não há prop
keys; combine instâncias manualmente para manter controle sobre separadores e i18n.
Padrão
import { MkKbd } from '@db1/makuco-ui-react';
<MkKbd>Ctrl</MkKbd><mk-kbd>Ctrl</mk-kbd>Tamanhos
Quatro tamanhos disponíveis via a prop size: xs, sm, md (padrão) e lg. O tamanho controla altura, padding, tipografia e raio da borda.
<MkKbd size="xs">Esc</MkKbd>
<MkKbd size="sm">Tab</MkKbd>
<MkKbd size="md">Enter</MkKbd>
<MkKbd size="lg">Space</MkKbd><mk-kbd size="xs">Esc</mk-kbd>
<mk-kbd size="sm">Tab</mk-kbd>
<mk-kbd size="md">Enter</mk-kbd>
<mk-kbd size="lg">Space</mk-kbd>Combinações
Não há prop para compor atalhos automaticamente (ex.: keys={["Ctrl", "S"]}) — combine múltiplas instâncias de mk-kbd manualmente, mantendo o controle do separador ("+", "então", espaço) e da tradução.
<span>
<MkKbd>Ctrl</MkKbd> + <MkKbd>S</MkKbd>
</span><span>
<mk-kbd>Ctrl</mk-kbd> + <mk-kbd>S</mk-kbd>
</span>Rótulo acessível
Quando o slot contém um símbolo isolado cuja leitura literal não é útil para leitores de tela (ex.: ⌘, ⏎, ⌫), forneça a prop label — ela é aplicada como aria-label no host e tem prioridade sobre o glifo.
<MkKbd label="Command">⌘</MkKbd><mk-kbd label="Command">⌘</mk-kbd>Ícone no slot
O slot default aceita qualquer conteúdo, incluindo mk-icon. Combine com label quando o ícone não tiver um rótulo acessível próprio.
import { MkIcon, MkKbd } from '@db1/makuco-ui-react';
<MkKbd label="Seta para cima">
<MkIcon name="arrow-up" />
</MkKbd><mk-kbd label="Seta para cima">
<mk-icon name="arrow-up"></mk-icon>
</mk-kbd>Props — mk-kbd
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
size | "xs" | "sm" | "md" | "lg" | "md" | Escala visual (altura, padding, tipografia e raio da borda). Reflete no atributo HTML. |
label | string | — | Rótulo acessível aplicado como |
Slots
| Componente | Slot | Descrição |
|---|---|---|
mk-kbd | (default) | Conteúdo da tecla: texto simples ("Ctrl", "Esc"), símbolo Unicode (⌘, ⇧, ⏎, ⌫, ↑) ou um mk-icon. |
Acessibilidade
- Internamente usa a tag
<kbd>nativa, que preserva semântica documental sem exigir umroleARIA no host. - Não é focável: não recebe
tabindexe não participa da navegação por Tab. Usemk-button(ou outro elemento nativo focável) quando precisar de um controle interativo com atalho visível. - Quando
labelé fornecido, ele é aplicado comoaria-labelno host e tem prioridade sobre o conteúdo do slot para leitores de tela. - Quando
labelé omitido, o nome acessível vem do texto do slot naturalmente. - Ao usar
mk-kbddentro de um elemento que já descreve o atalho (ex.:aria-label="Salvar (Ctrl+S)"em ummk-button), apliquearia-hidden="true"em um wrapper domk-kbdpara evitar leitura duplicada pelo leitor de tela. - Seleção de texto é permitida — é comum copiar atalhos exibidos em documentação.