Skip to content

Kbd

A keyboard key component for displaying keyboard shortcuts, commands, and key combinations. Supports multiple visual variants, sizes, icons, square keys, and grouped key sequences. Useful for documentation, tooltips, modals, and any UI where keyboard input is referenced.


Import

tsx
import { Kbd } from '@odyssee/components';
// Helpers: Kbd.Group, Kbd.Cmd, Kbd.Option, Kbd.Shift, Kbd.ArrowUp, etc.

Examples

Basic Keyboard Keys

Code Éditable
Résultat

Variants

Code Éditable
Résultat

Sizes

Code Éditable
Résultat

With Icon and Square

Code Éditable
Résultat

Group of Keys (Kbd.Group)

Code Éditable
Résultat

Group with Custom Separator

Code Éditable
Résultat

Using Helper Components

Code Éditable
Résultat

Table des props

Kbd

PropTypeDefaultDescription
childrenstring | HTMLElementKey label or content.
variant"text" | "text-dark" | "solid" | "bordered" | "shadow""solid"Visual style of the key.
size"xs" | "sm" | "md" | "lg""sm"Size of the key.
iconHTMLElement | stringIcon to display before the key label.
squarebooleanfalseMakes the key square (useful for icons).
classNamestringAdditional CSS classes.
idstringauto-genHTML id attribute.
stylestringInline styles.

Kbd.Group

PropTypeDefaultDescription
keys(string | HTMLElement | Kbd.Props)[]Array of keys to display in the group.
separatorstring"+"Separator string between keys.
variant"text" | "text-dark" | "solid" | "bordered" | "shadow""solid"Variant for all keys in the group.
size"xs" | "sm" | "md" | "lg""sm"Size for all keys in the group.
classNamestringAdditional CSS classes.
idstringauto-genHTML id attribute.
stylestringInline styles.

Helper Components

  • Kbd.Cmd, Kbd.Option, Kbd.Shift, Kbd.ArrowUp, Kbd.ArrowDown, Kbd.ArrowLeft, Kbd.ArrowRight, Kbd.Enter, Kbd.Esc, Kbd.Tab, Kbd.Space, Kbd.Delete, Kbd.Backspace
    → Prend les mêmes props que Kbd (sauf children, déjà défini).

Implementation Notes

  • Variants:
    • solid (default): filled background, borderless.
    • bordered: white background, border.
    • shadow: white background, border, subtle shadow.
    • text: light text, no background.
    • text-dark: dark text, no background.
  • Sizes:
    • xs, sm, md, lg — affectent la taille, le padding, la police.
  • Icons:
    • Utilisez icon pour afficher une icône à gauche du label.
    • square force la touche à être carrée (utile pour les flèches, Cmd, etc.).
  • Groupes:
    • Kbd.Group permet d’afficher des séquences de touches avec séparateur personnalisable.
    • Chaque élément du tableau keys peut être une string, un élément, ou un objet de props.
  • Helpers:
    • Fournit des composants pour les touches courantes (Cmd, Option, Shift, flèches, etc.), déjà stylés et avec icône si besoin.

Accessibilité

  • Les touches sont rendues avec l’élément sémantique <kbd>.
  • Les groupes utilisent <span> avec des séparateurs textuels.
  • Les icônes SVG sont décoratives et ne nécessitent pas d’accessibilité supplémentaire.
  • Pour les raccourcis importants, accompagnez toujours d’un texte explicite dans l’UI.

Best Practices

  • Utilisez Kbd pour référencer des raccourcis clavier dans vos docs, tooltips, modals, etc.
  • Préférez les helpers (Kbd.Cmd, Kbd.Shift, etc.) pour les touches spéciales.
  • Pour les séquences, utilisez Kbd.Group pour une présentation claire.
  • Adaptez la variante et la taille au contexte visuel de votre application.
  • N’utilisez pas les touches seules pour transmettre une information essentielle : accompagnez-les d’un texte ou d’une explication.


Released under the MIT License.