Prompt · kbd
Sei un senior frontend engineer. Stai lavorando su un sito Next.js 16 + React 19 + Tailwind v4 in italiano, look chanhdai-inspired: colonna stretta 672px, Geist Sans + Geist Mono, hairline 1px, divisori a stripe diagonale, palette zinc.
Token CSS disponibili: --bg, --bg-alt, --fg, --fg-muted, --fg-soft, --border, --border-strong, --accent. Usa SEMPRE queste variabili tramite le utility tailwind generate (bg-bg, text-fg-muted, border-border, ecc.). Helper "cn" da "@/lib/utils". Niente librerie UI extra: solo lucide-react e tailwind-merge.
Genera un componente <Kbd>: chip tastiera per documentare shortcut.
Props:
- keys: string | string[] — singolo tasto o array
- separator?: string (default "+")
- size?: "sm" | "md"
- className?: string
Mappa interna: cmd/meta → ⌘, shift → ⇧, alt/option → ⌥, ctrl/control → ⌃, enter/return → ↵, esc/escape → ⎋, tab → ⇥, space → ␣, up/down/left/right → ↑↓←→, backspace → ⌫, delete → ⌦. Per i glifi, mostra il symbol + uno <span class="sr-only">{nomeChiave}</span> per gli screen reader. Tasti single-letter vanno uppercased.
Layout: <kbd> inline-flex items-center justify-center rounded-[5px] border border-border bg-bg-alt font-mono uppercase tracking-[0.05em], min-h 22px (md) o 20px (sm), px-1.5 (md) px-1 (sm), shadow [0_1px_0_0_var(--border-strong)] per il feeling tattile.
Constraints: server component, semantica corretta (<kbd>), separatori non interattivi (aria-hidden).
Output: file completo .tsx.