"use client"; import { useState, useMemo } from "react"; import * as Dialog from "@radix-ui/react-dialog"; import { X, Search } from "lucide-react"; import { useCommandRegistry } from "@/hooks/useCommandRegistry"; import { ShortcutBadge } from "./ShortcutBadge"; import { SHORTCUT_CATEGORIES } from "@/lib/shortcuts"; import { cn } from "@/lib/utils"; export function ShortcutsHelp() { const { helpOpen, closeHelp, commands } = useCommandRegistry(); const [filter, setFilter] = useState(""); const groups = useMemo(() => { const q = filter.toLowerCase(); return SHORTCUT_CATEGORIES.map((cat) => ({ category: cat, commands: commands.filter( (c) => c.category === cat && c.keys.length > 0 && (!q || c.label.toLowerCase().includes(q) || c.description.toLowerCase().includes(q)) ), })).filter((g) => g.commands.length > 0); }, [commands, filter]); return ( !open && closeHelp()}> {/* Header */}
Keyboard Shortcuts Press ? anytime to open this panel
{/* Search */}
setFilter(e.target.value)} placeholder="Filter shortcuts..." className="flex-1 bg-transparent text-sm text-surface-100 placeholder:text-surface-500 focus:outline-none" autoFocus />
{/* Shortcut groups */}
{groups.length === 0 ? (

No shortcuts found

) : ( groups.map(({ category, commands: cmds }) => (

{category}

{cmds.map((cmd) => (

{cmd.label}

{cmd.description && (

{cmd.description}

)}
{cmd.keys.map((k) => ( ))}
))}
)) )}
); }