Kbd
boldkit/kbdFreeComponent
Keyboard key indicator for displaying shortcuts and hotkeys with neubrutalism styling
Live preview
live · rendered by the registry
Rendered by boldkit on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://boldkit.dev/r/kbd.jsonSource
1/* eslint-disable react-refresh/only-export-components */2import * as React from 'react'3import { cva, type VariantProps } from 'class-variance-authority'4import { cn } from '@/lib/utils'56const kbdVariants = cva(7 'inline-flex items-center justify-center font-mono font-bold uppercase border-3 border-foreground',8 {9 variants: {10 variant: {11 default: 'bg-muted shadow-[2px_2px_0px_hsl(var(--shadow-color))]',12 outline: 'bg-background',13 ghost: 'bg-transparent border-transparent text-muted-foreground',14 },15 size: {16 sm: 'min-w-5 h-5 px-1 text-[10px]',17 md: 'min-w-6 h-6 px-1.5 text-xs',18 lg: 'min-w-8 h-8 px-2 text-sm',19 },20 },21 defaultVariants: {22 variant: 'default',23 size: 'md',24 },25 }26)2728export interface KbdProps29 extends React.HTMLAttributes<HTMLElement>,30 VariantProps<typeof kbdVariants> {}3132const Kbd = React.forwardRef<HTMLElement, KbdProps>(33 ({ className, variant, size, ...props }, ref) => {34 return (35 <kbd36 ref={ref}37 className={cn(kbdVariants({ variant, size, className }))}38 {...props}39 />40 )41 }42)43Kbd.displayName = 'Kbd'4445export interface KbdComboProps extends Omit<KbdProps, 'children'> {46 keys: string[]47 separator?: React.ReactNode48}4950const KbdCombo = React.forwardRef<HTMLDivElement, KbdComboProps>(51 ({ keys, separator = '+', variant, size, className, ...props }, ref) => {52 return (53 <div54 ref={ref}55 className={cn('inline-flex items-center gap-1', className)}56 {...props}57 >58 {keys.map((key, index) => (59 <React.Fragment key={`kbd-${index}-${key}`}>60 {index > 0 && (61 <span className="text-muted-foreground text-xs font-bold">{separator}</span>62 )}63 <Kbd variant={variant} size={size}>64 {key}65 </Kbd>66 </React.Fragment>67 ))}68 </div>69 )70 }71)72KbdCombo.displayName = 'KbdCombo'7374export { Kbd, KbdCombo, kbdVariants }
What it pulls in
npm packages
Other registry items
Files it writes
More from boldkit
All 94 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | boldkit | Components | Free | 2 deps | |
| Alertalert | boldkit | Components | Free | 2 deps | |
| Alert Dialogalert-dialog | boldkit | Components | Free | 1 dep | |
| ASCII Shapesascii-shapes | boldkit | Components | Free | no deps | |
| Aspect Ratioaspect-ratio | boldkit | Components | Free | 1 dep | |
| Avataravatar | boldkit | Components | Free | 1 dep | |
| Badgebadge | boldkit | Components | Free | 1 dep | |
| Breadcrumbbreadcrumb | boldkit | Components | Free | 2 deps |
