"use client"; import { useKeyboard } from "@/components/keyboard-provider"; import { Dialog, DialogContent, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { Kbd } from "@/components/ui/kbd"; export function KeyboardHelpDialog() { const { shortcutsRef, helpOpen, setHelpOpen } = useKeyboard(); // Group shortcuts by scope const grouped: Record = {}; for (const def of shortcutsRef.current.values()) { const scope = def.scope ?? "Global"; if (!grouped[scope]) grouped[scope] = []; grouped[scope].push({ description: def.description, keys: def.keys }); } return ( Keyboard Shortcuts
{Object.entries(grouped).map(([scope, items]) => (

{scope}

{items.map((item) => (
{item.description}
{item.keys.map((key, i) => ( {i > 0 && ( then )} {formatKey(key)} ))}
))}
))}
); } function formatKey(key: string): string { const map: Record = { " ": "Space", Escape: "Esc", ArrowUp: "↑", ArrowDown: "↓", ArrowLeft: "←", ArrowRight: "→", }; return map[key] ?? key.toUpperCase(); }