import React, { useState, useEffect } from 'react' import { motion } from 'framer-motion' import { progressAPI, topicAPI } from '../../services/api' import { TrendingUp, Target, Award, Brain, Calendar, Activity, Zap } from 'lucide-react' import KnowledgeGraph from './KnowledgeGraph' import ProgressTimeline from './ProgressTimeline' import toast from 'react-hot-toast' const Progress = () => { const [loading, setLoading] = useState(true) const [summary, setSummary] = useState(null) const [topicProgress, setTopicProgress] = useState([]) useEffect(() => { loadProgressData() }, []) const loadProgressData = async () => { try { setLoading(true) const [summaryRes, topicsRes] = await Promise.all([ progressAPI.getProgressSummary(), topicAPI.getAll() ]) setSummary(summaryRes.data) // Get knowledge state for each topic const progressPromises = topicsRes.data.map(async (topic) => { try { const stateRes = await progressAPI.getKnowledgeState(topic.id) return { ...topic, ...stateRes.data } } catch (err) { return { ...topic, knowledge_level: 0, confidence: 0, practice_count: 0 } } }) const progressData = await Promise.all(progressPromises) setTopicProgress(progressData) } catch (error) { toast.error('Failed to load progress data') } finally { setLoading(false) } } const container = { hidden: { opacity: 0 }, show: { opacity: 1, transition: { staggerChildren: 0.1 } } } const item = { hidden: { y: 20, opacity: 0 }, show: { y: 0, opacity: 1 } } if (loading) { return (
Loading your progress...
Track your journey and celebrate your achievements
No weak topics - great job!
Start learning to build strong topics