Kbd
Keyboard key example: an inline key label in a small muted rounded box, plus a group wrapper for key combinations. Adapts its colors inside an input group or a tooltip.
pnpm dlx shadcn add @01orbital/kbdimport { cn } from "cn"
function Kbd({ className, ...props }: React.ComponentProps<"kbd">) {
return (
<kbd
data-slot="kbd"
className={cn(
"pointer-events-none inline-flex h-5.5 w-fit min-w-5.5 items-center justify-center gap-1 rounded-lg bg-muted px-1.5 font-sans text-xs font-medium text-muted-foreground select-none in-data-[slot=input-group]:bg-input in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 [&_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 }
import { Kbd, KbdGroup } from "@/components/ui/kbd"
// The copy: change text here, not in the markup.
const COPY = {
label: "Open the palette with",
modifier: "⌘",
key: "K",
} as const
/** Kbd group showing a two-key shortcut inside a sentence. */
export default function KbdDemo() {
return (
<p className="flex items-center gap-2 text-sm/6 text-muted-foreground">
{COPY.label}
<KbdGroup>
<Kbd>{COPY.modifier}</Kbd>
<Kbd>{COPY.key}</Kbd>
</KbdGroup>
</p>
)
}
Examples
New
kbd-editing-shortcuts
Dependencies
npm: cn. The CLI installs them for you.
No other registry pieces.