import { useEffect } from 'react'; import type { DifficultyRating } from '../types/vocabulary'; interface RatingButtonsProps { onRate: (rating: DifficultyRating) => void; disabled?: boolean; } interface ButtonConfig { rating: DifficultyRating; label: string; sublabel: string; shortcut: string; color: string; shadow: string; } const BUTTONS: ButtonConfig[] = [ { rating: 'again', label: '重来', sublabel: '< 1 分钟', shortcut: '1', color: 'from-rose-400 to-red-500', shadow: 'shadow-rose-200' }, { rating: 'hard', label: '困难', sublabel: '~ 2 天', shortcut: '2', color: 'from-orange-400 to-amber-500', shadow: 'shadow-orange-200' }, { rating: 'good', label: '良好', sublabel: '~ 4 天', shortcut: '3', color: 'from-blue-400 to-indigo-500', shadow: 'shadow-blue-200' }, { rating: 'easy', label: '简单', sublabel: '~ 7 天', shortcut: '4', color: 'from-emerald-400 to-teal-500', shadow: 'shadow-emerald-200' }, ]; export function RatingButtons({ onRate, disabled }: RatingButtonsProps) { // 键盘快捷键支持 useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { if (disabled) return; const keyMap: Record = { '1': 'again', '2': 'hard', '3': 'good', '4': 'easy', 'Enter': 'good', ' ': 'good', }; const rating = keyMap[e.key]; if (rating) { e.preventDefault(); onRate(rating); } }; window.addEventListener('keydown', handleKeyDown); return () => window.removeEventListener('keydown', handleKeyDown); }, [onRate, disabled]); return (
{BUTTONS.map(({ rating, label, sublabel, shortcut, color, shadow }) => ( ))}
); }