Installation
pnpm dlx shadcn@latest add https://rdf.dev.360online.com/r/kbd.jsonInstalls to @/components/ui/kbd.
Manual installation
Copy the source into your project:
import { cn } from '@/lib/utils'
function Kbd({ className, ...props }: React.ComponentProps<'kbd'>) {
return (
<kbd
data-slot="kbd"
className={cn(
"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none [&_svg:not([class*='size-'])]:size-3",
className,
)}
{...props}
/>
)
}
function KbdGroup({ className, ...props }: React.ComponentProps<'div'>) {
return <kbd data-slot="kbd-group" className={cn('inline-flex items-center gap-1', className)} {...props} />
}
export { Kbd, KbdGroup }Displays textual user input from the keyboard, such as keyboard shortcuts. Use KbdGroup to combine several keys into one shortcut, and place keys in buttons, tooltips or input groups.
Features
- Text or icon keys
- KbdGroup for key combinations
- Adapts its colours inside tooltips
- Works in buttons and input groups
Usage
import { Kbd, KbdGroup } from '@/components/ui/kbd'
export function Shortcut() {
return (
<KbdGroup>
<Kbd>Ctrl</Kbd>
<Kbd>K</Kbd>
</KbdGroup>
)
}Examples
Default
Single keys, with text or an icon. Give icon keys an sr-only name.
Group
Key combinations inline in running text.
Shortcut List
A keyboard shortcut reference for a case management view, laid out as a description list in a card.
In Button
Keys inside buttons, with aria-keyshortcuts on the button.
In Tooltip
Shortcut hints in tooltips on icon buttons. Keys adapt their colours inside tooltips.
In Input Group
A search shortcut inside an input group.
Accessibility
- Rendered as a native kbd element
- Give icon-only keys a text alternative (e.g. an sr-only span) when the icon carries meaning
- Shortcuts shown visually should also be exposed via aria-keyshortcuts on the related control