import React, {useContext} from "react";
import {Table, TableBody, TableCell, TableHeader, TableHeaderCell, TableRow} from "semantic-ui-react";
import {Button, Header, Modal} from "./Theme";
import {ThemeContext} from "../contexts/contexts";
import {SHORTCUTS} from "./KeyboardShortcutsProvider";
// Format keyboard keys for display
function KeyboardKey({children}) {
return (
{children}
);
}
// Parse shortcut keys string and render as keyboard keys
function ShortcutKeys({keys}) {
// Handle multiple key combinations (e.g., "meta+k, ctrl+k")
const combinations = keys.split(', ');
return (
{combinations.map((combo, idx) => {
const parts = combo.split('+').map(part => {
// Convert key names to display format
switch (part.toLowerCase()) {
case 'meta':
return 'Cmd';
case 'ctrl':
return 'Ctrl';
case 'shift':
return 'Shift';
case 'escape':
return 'Esc';
default:
return part.toUpperCase();
}
});
// Handle sequence shortcuts like "g h"
const isSequence = combo.includes(' ') && !combo.includes('+');
if (isSequence) {
const seqParts = combo.split(' ');
return (
{idx > 0 && ' / '}
{seqParts.map((p, i) => (
{p.toUpperCase()}
{i < seqParts.length - 1 && ' then '}
))}
);
}
return (
{idx > 0 && ' / '}
{parts.map((p, i) => (
{p}
{i < parts.length - 1 && ' + '}
))}
);
})}
);
}
// Group shortcuts by category
function groupShortcutsByCategory(shortcuts) {
const groups = {};
shortcuts.forEach(shortcut => {
const category = shortcut.category || 'Other';
if (!groups[category]) {
groups[category] = [];
}
groups[category].push(shortcut);
});
return groups;
}
export default function HelpModal({open, onClose}) {
const {i, t} = useContext(ThemeContext);
const groupedShortcuts = groupShortcutsByCategory(SHORTCUTS);
// Order categories
const categoryOrder = ['Search', 'General', 'Help', 'Navigation'];
const orderedCategories = categoryOrder.filter(cat => groupedShortcuts[cat]);
return (
Keyboard Shortcuts
{orderedCategories.map(category => (
{groupedShortcuts[category].map((shortcut, idx) => (
{shortcut.description}
))}
))}
);
}