# Kbd

Used to display textual user input from keyboard.

## Installation

```bash
npx shadcn@latest add https://reactdocs.canceydejean.dev/r/kbd.json
```

[Registry JSON](https://reactdocs.canceydejean.dev/r/kbd.json)

## Preview

```tsx
import { Kbd, KbdGroup } from "@/components/ui/kbd/kbd";

export function Preview() {
  return (
    <KbdGroup>
      <Kbd>⌘</Kbd>
      <Kbd>K</Kbd>
    </KbdGroup>
  );
}
```


## Source

### kbd.tsx

```tsx
import type * as React from "react";

import { cn } from "cn";

function Kbd({ className, ...props }: React.ComponentProps<"kbd">) {
  return (
    <kbd
      data-slot="kbd"
      className={cn(
        "bg-muted text-muted-foreground in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm px-1 font-sans text-xs font-medium 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 };
```



## Usage

Use `Kbd` for single keys and `KbdGroup` for shortcuts.

```tsx
import { Kbd, KbdGroup } from "@/components/kbd/kbd";

export function Example() {
  return (
    <>
      <Kbd>⌘</Kbd>

      <KbdGroup>
        <Kbd>⌘</Kbd>
        <Kbd>K</Kbd>
      </KbdGroup>
    </>
  );
}
```

Styles adapt inside tooltips via `in-data-[slot=tooltip-content]` rules.

