Kbd
Teclas para atalhos que mostram os símbolos certos em cada plataforma, são lidas corretamente por leitores de tela e afundam com as teclas reais.
Press Command K to search, or hold Shift and watch the keys.
pnpm dlx shadcn@latest add https://hextaui.com/r/kbd.jsonAdiciona o componente, os tokens de tema do HextaUI e quaisquer componentes do HextaUI dos quais ele depende.
Adicione os tokens de tema ao seu CSS global, se ainda não o fez.
Instale as dependências.
pnpm add @base-ui/react class-variance-authority cnCopie e cole o código a seguir no seu projeto.
components/ui/kbd.tsx lib/hotkey.ts Atualize os caminhos de importação para corresponder à configuração do seu projeto.
Escreva os atalhos uma vez com keys e eles aparecem como ⌘K no Mac e Ctrl K no Windows e no Linux. Ou passe qualquer conteúdo como children para ter controle total.
Variantes
keycap tem uma borda fina e um relevo de 1px para parecer uma tecla física. flat é um preenchimento discreto para lugares densos como menus.
Tamanhos
sm fica em texto pequeno, default ao lado do texto do corpo e lg em títulos ou sozinho.
Atalhos
<KbdGroup /> divide uma combinação em uma tecla para cada tecla. Um espaço inicia uma sequência, unida por separator. <Kbd /> com keys mantém a combinação inteira em uma só tecla.
Teclas ao vivo
Com listen, uma tecla é pressionada enquanto a tecla real está segurada. Ela apenas observa, então nunca bloqueia, atrasa nem altera o que você digita. As letras correspondem pela tecla física, então Option e Shift não as confundem.
Em um botão
Dentro de um botão, a tecla toma as cores do texto do botão, então combina com todas as variantes.
Ícones e ações
Coloque ícones em uma tecla para ações sem nome de tecla e dê a eles um rótulo visualmente oculto.
Da direita para a esquerda
Os atalhos permanecem na ordem da esquerda para a direita dentro de textos da direita para a esquerda, como impressos no teclado.
- Símbolos como ⌘ e ⇧ ficam ocultos dos leitores de tela e são substituídos pelos seus nomes, então
keys="mod+shift+p"é lido como "Command Shift P". - As teclas são renderizadas como
<kbd>, e um grupo as aninha em outro<kbd>, que é como o HTML marca uma combinação de teclas. - Exibir um atalho não o registra. Registre você mesmo o handler da tecla.
- O efeito de pressionar é decorativo, com uma mudança de cor no lugar do movimento quando o movimento reduzido está ativado. Antes da hidratação, toda plataforma vê os símbolos da Apple.
Ambas as partes renderizam um <kbd> e aceitam render e seus atributos.
| Prop | Tipo | Padrão |
|---|---|---|
keysTeclas unidas por +, como "mod+shift+p". mod é ⌘ em dispositivos Apple e Ctrl nos demais. Nomes como alt, enter, escape, up e space viram símbolos ou palavras curtas, e recebem um nome falado para leitores de tela. | string | – |
variantHerdado do KbdGroup quando não definido. | "keycap" | "flat" | "keycap" |
sizeHerdado do KbdGroup quando não definido. | "sm" | "default" | "lg" | "default" |
listenPressiona a tecla enquanto a tecla real está pressionada. Funciona com keys ou com o nome simples de uma tecla como children. | boolean | false |
render | ReactElement | (props, state) => ReactElement | <kbd> |
| Atributo | Descrição |
|---|---|
data-slot="kbd" | Seleciona as teclas no CSS. |
data-variant | A variante atual. |
data-size | O tamanho atual. |
data-pressed | Presente enquanto a tecla real está pressionada. |
| Prop | Tipo | Padrão |
|---|---|---|
keysTeclas unidas por +, como "mod+shift+p". mod é ⌘ em dispositivos Apple e Ctrl nos demais. Nomes como alt, enter, escape, up e space viram símbolos ou palavras curtas, e recebem um nome falado para leitores de tela. Espaços separam as etapas de uma sequência. | string | – |
separatorExibido entre as etapas de uma sequência. | ReactNode | "then" |
variantRepassado a todas as teclas dentro do grupo. | "keycap" | "flat" | – |
sizeRepassado a todas as teclas dentro do grupo. | "sm" | "default" | "lg" | – |
listenRepassado a todas as teclas dentro do grupo. | boolean | – |
render | ReactElement | (props, state) => ReactElement | <kbd> |
| Atributo | Descrição |
|---|---|
data-slot="kbd-group" | Selecione grupos no CSS. |
data-slot="kbd-separator" | O texto entre as etapas da sequência. |
- HotkeyAnalise, rotule, anuncie e compare atalhos de teclado, com ⌘ nas plataformas Apple e Ctrl em todas as outras.
- useHeldKeysAs teclas que alguém está segurando agora, compartilhadas por todos os assinantes por meio de um único conjunto de listeners na janela.
- AvatarFotos de usuário com fallback de iniciais, badges de status e grupos empilhados que se recolhem em uma contagem.
- BadgeRótulos de status com pontos coloridos, tags removíveis que deslizam até fechar e contagens que rolam até o novo valor.
- CardUma superfície para agrupar conteúdo, com três variantes, mídia de ponta a ponta, raios concêntricos e links no card inteiro.
- ChartGráficos do Recharts com cores do tema, um tooltip e uma legenda que leem os rótulos de uma única configuração, e navegação por teclado com um anel de foco visível.
Usado em blocos
Blocos que se baseiam em Kbd.
- Prompt InputUm campo de conversa que começa como uma linha discreta, cresce até virar um card conforme você escreve e desce quando a conversa começa. Enter envia, de forma segura com entrada em japonês e chinês. Cole, solte ou escolha arquivos com prévias, progresso e nova tentativa. @ adiciona arquivos e / executa comandos a partir de um menu no cursor. Um seletor de modelo com teclas numéricas, um slider de esforço que ganha vida no Max, um anel de contexto, ditado com forma de onda ao vivo, chips de ferramentas, uma fila para mensagens digitadas enquanto uma resposta é transmitida e rascunhos que sobrevivem a um recarregamento.
- Agent TodosMostre o plano de um agente enquanto ele trabalha. Cada etapa passa de backlog para a fazer, em andamento e concluída, com tempos ao vivo, falhas e as chamadas de ferramenta por trás dela. Uma pílula de status para acima do composer, mudanças no plano que você consegue ver e uma etapa de revisão para editar o plano antes de executá-lo.
- ArtifactO painel ao lado de um chat de IA que mostra o que o modelo criou. Páginas web, SVGs, documentos e código chegam em streaming ao vivo e depois passam para uma prévia isolada em sandbox, com versões que você pode comparar e restaurar, uma divisão redimensionável e um bottom sheet no celular.
- Chat SidebarA barra lateral de um app de chat. Logo, busca e Novo chat no topo, seus próprios links abaixo, chats fixados, projetos que se expandem para mostrar seus chats, recentes agrupados por dia e linhas com menus de hover e de clique direito, renomeação inline, exclusão com desfazer e estados de resposta ao vivo.