Kbd
StablePrimitive de exibição para teclas e atalhos de teclado. Renderiza um <kbd> real, e o KbdGroup aninha as teclas de uma combinação como a especificação HTML pede. Funciona em texto corrido, dentro de botões e dentro do Tooltip, onde inverte junto com a superfície.
Instalação
npx up-web-ds add kbdPreview
Default
Group
With Symbols
In Text
Pressione Esc para fechar o diálogo sem salvar as alterações.
In Tooltip
All states
Default
EscGroup
Ctrl+Shift+PWith Symbols
Command KIn Text
Pressione Esc para fechar o diálogo sem salvar as alterações.
In Button
In Tooltip
Usage
Props
Kbd
Estende React.ComponentProps<'kbd'>. Aceita também os atributos padrão de um elemento React (280 não listados).
KbdGroup
Estende React.ComponentProps<'kbd'>. Aceita também os atributos padrão de um elemento React (280 não listados).
Composition
Uma tecla sozinha é um Kbd; uma combinação é um KbdGroup com um Kbd por tecla.
Metadata
Notas de acessibilidade
Não é interativo: não entra na sequência de tabulação e tem pointer-events-none, então um clique ou toque sobre a tecla chega ao controle que a contém — verificado por teste, em que Tab e Enter chegam ao botão ao redor e um clique sobre a tecla o aciona. Leitor de tela verificado por teste: é um <kbd> sem role inventado, então o que se anuncia é o texto; a origem tipava o KbdGroup como div e renderizava <kbd>, e o tipo agora acompanha o elemento. Um glifo que se lê mal em voz alta (⌘) fica com aria-hidden ao lado de um nome sr-only, e as teclas de um grupo são separadas por espaço no DOM, porque sem ele o nome acessível de um botão com atalho vira "CommandK". Dentro de um botão a tecla faz parte do rótulo visível e, portanto, do nome acessível (WCAG 2.2 SC 2.5.3); aria-keyshortcuts só entra quando a aplicação liga o atalho de verdade. Contraste: --muted-foreground sobre --muted é par verificado em AA pelo teste da Foundation; dentro do Tooltip a tecla inverte com a superfície, o que o spec confirma lendo a cor calculada, e a varredura axe cobre light e dark. Touch verificado em viewport de 375px com emulação de toque: a tecla dentro de um botão não reduz o alvo abaixo de 24x24, e o ponto sob a tecla resolve para o próprio botão (elementFromPoint), então o toque ali chega ao controle. Reduced motion verificado em navegador com prefers-reduced-motion: reduce — a tecla não anima nem tem transição.
Classificação
- Layer
- Primitive
- Domínio
- Domain-free (compartilhado)
- Categoria
- data-display
- Status
- Stable
Origem e distribuição
- Fonte
- shadcn registry / kbd
- Licença
- MIT
- Distribuição
- Interna
Acessibilidade
- Teclado: revisado
- Leitor de tela: revisado
- Touch: revisado
- Reduced motion: revisado
Dependências
- Pacotes
- Nenhuma
- Ícones
- Nenhum
- Construído sobre
- Nenhum
- Usado por
- Questionnaire