import { useEffect } from 'react'; import { useLocaleStore } from '../store/useLocaleStore'; import type { TranslationKey } from '../i18n/translations'; const SECTIONS: { key: string; color: string }[] = [ { key: 'overview', color: 'var(--accent-active)' }, { key: 'T1', color: '#e0e0e0' }, { key: 'T2', color: '#aaccee' }, { key: 'fMRI', color: '#ff6644' }, { key: 'DTI', color: '#44ddaa' }, { key: 'FLAIR', color: '#ff4466' }, { key: 'perturbation', color: 'var(--accent-active)' }, { key: 'shortcuts', color: 'var(--text-primary)' }, ]; export function GuideModal() { const { isGuideOpen, closeGuide, toggleLocale, locale, t } = useLocaleStore(); // ESC and H key handlers useEffect(() => { const handleKey = (e: KeyboardEvent) => { if (e.key === 'Escape' && isGuideOpen) { closeGuide(); } if (e.key === 'h' || e.key === 'H') { // Don't toggle when typing in an input const tag = (e.target as HTMLElement).tagName; if (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT') return; if (isGuideOpen) closeGuide(); else useLocaleStore.getState().openGuide(); } }; window.addEventListener('keydown', handleKey); return () => window.removeEventListener('keydown', handleKey); }, [isGuideOpen, closeGuide]); // Prevent body scroll when open useEffect(() => { if (isGuideOpen) { document.body.style.overflow = 'hidden'; return () => { document.body.style.overflow = ''; }; } }, [isGuideOpen]); if (!isGuideOpen) return null; return (