import { useEffect } from "react"; import { isKeyboardShortcutTextInputTarget } from "../lib/keyboardShortcuts"; interface ShortcutHandlers { enabled?: boolean; onNewIssue?: () => void; onToggleSidebar?: () => void; onTogglePanel?: () => void; } export function useKeyboardShortcuts({ enabled = true, onNewIssue, onToggleSidebar, onTogglePanel, }: ShortcutHandlers) { useEffect(() => { if (!enabled) return; function handleKeyDown(e: KeyboardEvent) { // Don't fire shortcuts when typing in inputs if (isKeyboardShortcutTextInputTarget(e.target)) { return; } // C → New Issue if (e.key === "c" && !e.metaKey && !e.ctrlKey && !e.altKey) { e.preventDefault(); onNewIssue?.(); } // [ → Toggle Sidebar if (e.key === "[" && !e.metaKey && !e.ctrlKey) { e.preventDefault(); onToggleSidebar?.(); } // ] → Toggle Panel if (e.key === "]" && !e.metaKey && !e.ctrlKey) { e.preventDefault(); onTogglePanel?.(); } } document.addEventListener("keydown", handleKeyDown); return () => document.removeEventListener("keydown", handleKeyDown); }, [enabled, onNewIssue, onToggleSidebar, onTogglePanel]); }