import { TLUiMenuChild } from '../hooks/menuHelpers' import { useKeyboardShortcutsSchema } from '../hooks/useKeyboardShortcutsSchema' import { useReadonly } from '../hooks/useReadonly' import { TLUiTranslationKey } from '../hooks/useTranslation/TLUiTranslationKey' import { useTranslation } from '../hooks/useTranslation/useTranslation' import * as Dialog from './primitives/Dialog' import { Kbd } from './primitives/Kbd' export const KeyboardShortcutsDialog = () => { const msg = useTranslation() const isReadonly = useReadonly() const shortcutsItems = useKeyboardShortcutsSchema() function getKeyboardShortcutItem(item: TLUiMenuChild) { if (!item) return null if (isReadonly && !item.readonlyOk) return null switch (item.type) { case 'group': { return (

{msg(item.id as TLUiTranslationKey)}

{item.children .filter((item) => item && item.type === 'item' && item.actionItem.kbd) .map(getKeyboardShortcutItem)}
) } case 'item': { const { id, label, shortcutsLabel, kbd } = item.actionItem return (
{msg((shortcutsLabel ?? label)!)}
{kbd!}
) } } } return ( <> {msg('shortcuts-dialog.title')} {shortcutsItems.map(getKeyboardShortcutItem)}
) }