import { useSuspendPlayback } from '@/hooks/use-suspend-playback'; import { useEffect } from 'react'; import { createPortal } from 'react-dom'; import { KeyHint } from '@/components/key-hint'; export interface KeybindingEntry { keys: string[]; description: string; } export interface KeybindingGroup { label: string; bindings: KeybindingEntry[]; } interface KeybindingsOverlayProps { open: boolean; onClose: () => void; groups: KeybindingGroup[]; title?: string; } export function KeybindingsOverlay({ open, onClose, groups, title = 'Keyboard Shortcuts', }: KeybindingsOverlayProps) { useSuspendPlayback(open, 'keybindings'); useEffect(() => { if (!open) return; const handler = (e: KeyboardEvent) => { if (e.key === 'Escape' || e.key === '?') { e.preventDefault(); e.stopPropagation(); onClose(); } }; window.addEventListener('keydown', handler, { capture: true }); return () => window.removeEventListener('keydown', handler, { capture: true }); }, [open, onClose]); if (!open) return null; return createPortal(