rapidUI

Kbd

Keyboard key and shortcut display.

Installation

pnpm dlx shadcn@latest add https://rdf.dev.360online.com/r/kbd.json

Installs to @/components/ui/kbd.

Manual installation

Copy the source into your project:

components/ui/kbd.tsx
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