import React, { useState } from 'react'; import { Sparkles, BookOpen, Clock, Target, Loader2, CheckCircle, ArrowRight } from 'lucide-react'; import { WikimediaAPI } from '../utils/wikimedia-api'; import { StudyPlan } from '../types'; interface AIStudyPlanGeneratorProps { onPlanGenerated: (plan: StudyPlan) => void; } const AIStudyPlanGenerator: React.FC = ({ onPlanGenerated }) => { const [topic, setTopic] = useState(''); const [difficulty, setDifficulty] = useState<'beginner' | 'intermediate' | 'advanced'>('beginner'); const [loading, setLoading] = useState(false); const [generatedPlan, setGeneratedPlan] = useState(null); const handleGenerate = async () => { if (!topic.trim()) return; setLoading(true); try { const plan = await WikimediaAPI.generateStudyPlan(topic, difficulty); setGeneratedPlan(plan); } catch (error) { console.error('Failed to generate study plan:', error); } finally { setLoading(false); } }; const handleAcceptPlan = () => { if (generatedPlan) { onPlanGenerated(generatedPlan); setGeneratedPlan(null); setTopic(''); } }; const getDifficultyColor = (level: string) => { switch (level) { case 'beginner': return 'bg-success-100 text-success-800'; case 'intermediate': return 'bg-warning-100 text-warning-800'; case 'advanced': return 'bg-error-100 text-error-800'; default: return 'bg-gray-100 text-gray-800'; } }; return (

AI Study Plan Generator

Create personalized learning paths from Wikimedia content

{!generatedPlan ? (
setTopic(e.target.value)} placeholder="e.g., Machine Learning, Ancient History, Climate Science..." className="w-full px-4 py-3 border border-gray-300 rounded-xl focus:ring-2 focus:ring-primary-500 focus:border-transparent text-lg" onKeyDown={(e) => e.key === 'Enter' && handleGenerate()} />
{(['beginner', 'intermediate', 'advanced'] as const).map((level) => ( ))}
) : (

{generatedPlan.title}

{generatedPlan.description}

{generatedPlan.difficulty}
{generatedPlan.estimatedTime}
{generatedPlan.topics.length} topics

Study Topics:

{generatedPlan.topics.slice(0, 5).map((topic, index) => (
{index + 1}
{topic.title}
{topic.estimatedTime}
))} {generatedPlan.topics.length > 5 && (
+{generatedPlan.topics.length - 5} more topics...
)}
)}
); }; export default AIStudyPlanGenerator;