"use client"; import { useTranslations } from "next-intl"; import { X, Keyboard } from "lucide-react"; import { KEYBOARD_SHORTCUTS } from "@/hooks/use-keyboard-shortcuts"; import { cn } from "@/lib/utils"; import { useFocusTrap } from "@/hooks/use-focus-trap"; import { useTour } from "@/components/tour/tour-provider"; interface KeyboardShortcutsModalProps { isOpen: boolean; onClose: () => void; } export function KeyboardShortcutsModal({ isOpen, onClose }: KeyboardShortcutsModalProps) { const t = useTranslations(); const { startTour } = useTour(); const modalRef = useFocusTrap({ isActive: isOpen, onEscape: onClose, restoreFocus: true, }); if (!isOpen) return null; return (
{ if (e.target === e.currentTarget) onClose(); }} >
{/* Header */}

{t("shortcuts.title")}

{/* Content */}
{/* Navigation Section */}

{t("shortcuts.sections.navigation")}

{KEYBOARD_SHORTCUTS.navigation.map((shortcut) => ( ))}
{/* Actions Section */}

{t("shortcuts.sections.actions")}

{KEYBOARD_SHORTCUTS.actions.map((shortcut) => ( ))}
{/* Global Section */}

{t("shortcuts.sections.global")}

{KEYBOARD_SHORTCUTS.global.map((shortcut) => ( ))}
{/* Threads Section */}

{t("shortcuts.sections.threads")}

{KEYBOARD_SHORTCUTS.threads.map((shortcut) => ( ))}
{/* Composer Section */}

{t("shortcuts.sections.composer")}

{KEYBOARD_SHORTCUTS.composer.map((shortcut) => ( ))}
{/* Footer tip */}

{t("shortcuts.tip")}

); } function ShortcutRow({ shortcutKey, description, }: { shortcutKey: string; description: string; }) { // Split keys by " / " to render multiple key badges const keys = shortcutKey.split(" / "); return (
{description}
{keys.map((key, index) => ( {index > 0 && or} {key} ))}
); }