Kbd
Des keycaps pour les raccourcis qui affichent les bons symboles sur chaque plateforme, se lisent correctement à voix haute et s’enfoncent comme de vraies touches.
Press Command K to search, or hold Shift and watch the keys.
pnpm dlx shadcn@latest add https://hextaui.com/r/kbd.jsonAjoute le composant, les tokens de thème HextaUI et les composants HextaUI dont il dépend.
Ajoutez les tokens de thème à votre CSS global, si ce n’est pas déjà fait.
Installez les dépendances.
pnpm add @base-ui/react class-variance-authority cnCopiez et collez le code suivant dans votre projet.
components/ui/kbd.tsx lib/hotkey.ts Mettez à jour les chemins d’import selon la configuration de votre projet.
Écrivez les raccourcis une fois avec keys : ils s'affichent ⌘K sur Mac et Ctrl K sous Windows et Linux. Ou passez n'importe quel contenu en enfants pour un contrôle total.
Variantes
keycap a un bord fin et un rebord de 1px pour ressembler à une vraie touche. flat est un fond discret pour les endroits denses comme les menus.
Tailles
sm s'insère dans un petit texte, default à côté du texte courant et lg dans les titres ou seul.
Raccourcis
<KbdGroup /> découpe une combinaison en une touche par capuchon. Un espace démarre une séquence, jointe par separator. <Kbd /> avec keys garde toute la combinaison dans un seul capuchon.
Touches en direct
Avec listen, un capuchon s'enfonce tant que sa vraie touche est maintenue. Il ne fait qu'observer : il ne bloque, ne retarde ni ne modifie jamais ce que vous saisissez. Les lettres correspondent à la touche physique, donc Option et Maj ne les perturbent pas.
Dans un bouton
Dans un bouton, le capuchon reprend les couleurs du texte du bouton et convient donc à toutes les variantes.
Icônes et actions
Placez des icônes dans un capuchon pour les actions sans nom de touche, et donnez-leur un label visuellement masqué.
De droite à gauche
Les raccourcis restent dans l'ordre de gauche à droite au sein d'un texte de droite à gauche, comme ils sont imprimés sur le clavier.
- Les symboles comme ⌘ et ⇧ sont masqués aux lecteurs d'écran et remplacés par leur nom, si bien que
keys="mod+shift+p"est lu « Command Shift P ». - Les capuchons sont rendus en
<kbd>, et un groupe les imbrique dans un autre<kbd>, ce qui est la façon dont HTML représente une combinaison de touches. - Afficher un raccourci ne le lie à aucune action. Enregistrez vous-même le gestionnaire de touche.
- L'effet d'appui est décoratif, avec un changement de couleur à la place du mouvement quand la réduction des animations est activée. Avant l'hydratation, toutes les plateformes voient les symboles Apple.
Les deux parties rendent un <kbd> et acceptent render et ses attributs.
| Prop | Type | Par défaut |
|---|---|---|
keysTouches jointes par +, comme "mod+shift+p". mod est ⌘ sur les appareils Apple et Ctrl ailleurs. Des noms comme alt, enter, escape, up et space deviennent des symboles ou des mots courts, et reçoivent un nom parlé pour les lecteurs d'écran. | string | – |
variantHérité de KbdGroup si non défini. | "keycap" | "flat" | "keycap" |
sizeHérité de KbdGroup si non défini. | "sm" | "default" | "lg" | "default" |
listenEnfonce le capuchon tant que sa vraie touche est maintenue. Fonctionne avec keys ou un simple nom de touche en enfant. | boolean | false |
render | ReactElement | (props, state) => ReactElement | <kbd> |
| Attribut | Description |
|---|---|
data-slot="kbd" | Cible les capuchons en CSS. |
data-variant | La variante actuelle. |
data-size | La taille actuelle. |
data-pressed | Présent tant que la vraie touche est maintenue. |
| Prop | Type | Par défaut |
|---|---|---|
keysTouches jointes par +, comme "mod+shift+p". mod est ⌘ sur les appareils Apple et Ctrl ailleurs. Des noms comme alt, enter, escape, up et space deviennent des symboles ou des mots courts, et reçoivent un nom parlé pour les lecteurs d'écran. Les espaces séparent les étapes d'une séquence. | string | – |
separatorAffiché entre les étapes d'une séquence. | ReactNode | "then" |
variantTransmis à chaque capuchon à l'intérieur. | "keycap" | "flat" | – |
sizeTransmis à chaque capuchon à l'intérieur. | "sm" | "default" | "lg" | – |
listenTransmis à chaque capuchon à l'intérieur. | boolean | – |
render | ReactElement | (props, state) => ReactElement | <kbd> |
| Attribut | Description |
|---|---|
data-slot="kbd-group" | Ciblez les groupes en CSS. |
data-slot="kbd-separator" | Le texte entre les étapes d'une séquence. |
- HotkeyAnalysez, libellez, annoncez et faites correspondre des raccourcis clavier, avec ⌘ sur les plateformes Apple et Ctrl partout ailleurs.
- useHeldKeysLes touches actuellement maintenues, partagées entre tous les abonnés via un seul jeu d'écouteurs sur window.
- AvatarDes photos d’utilisateurs avec initiales en repli, badges de statut et groupes empilés qui se réduisent en compteur.
- BadgeDes libellés de statut avec pastilles colorées, des tags amovibles qui se referment en glissant et des compteurs qui défilent vers leur nouvelle valeur.
- CardUne surface pour regrouper du contenu, avec trois variantes, médias bord à bord, rayons concentriques et liens sur toute la carte.
- ChartDes graphiques Recharts aux couleurs du thème, avec une infobulle et une légende qui lisent leurs libellés depuis une seule config, et une navigation au clavier avec anneau de focus visible.
Utilisé dans les blocks
Des blocks qui s’appuient sur Kbd.
- Prompt InputUn champ de discussion qui démarre sur une seule ligne sobre, grandit en carte à mesure que vous écrivez et descend une fois la conversation lancée. Entrée envoie, sans risque avec la saisie japonaise et chinoise. Collez, déposez ou choisissez des fichiers avec aperçus, progression et nouvel essai. @ ajoute des fichiers et / lance des commandes depuis un menu au niveau du curseur. Un sélecteur de modèle avec touches numériques, un curseur d’effort qui s’anime à Max, un anneau de contexte, la dictée avec forme d’onde en direct, des chips d’outils, une file pour les messages saisis pendant qu’une réponse arrive en streaming, et des brouillons qui survivent à un rechargement.
- Agent TodosAffichez le plan d’un agent pendant son travail. Chaque étape passe de backlog à à faire, en cours puis terminé, avec des durées en direct, les échecs et les appels d’outils qui les sous-tendent. Une pastille de statut à placer au-dessus du champ de saisie, des changements de plan visibles et une étape de relecture pour modifier le plan avant son exécution.
- ArtifactLe panneau à côté d’un chat IA qui montre ce que le modèle a produit. Pages web, SVG, documents et code arrivent en direct, puis passent à un aperçu isolé en sandbox, avec des versions à comparer et à restaurer, une séparation redimensionnable et une bottom sheet sur mobile.
- Chat SidebarLa barre latérale d’une application de chat. Logo, recherche et Nouveau chat en haut, vos propres liens en dessous, chats épinglés, projets qui se déploient pour montrer leurs chats, récents regroupés par jour, et des lignes avec menus au survol et au clic droit, renommage en ligne, suppression avec annulation et états de réponse en direct.