import React, { useState } from 'react'; import { LearningActivity, LearningMap } from '../types'; import { CheckCircle, Clock, Lock, ArrowDown, Target } from 'lucide-react'; interface LearningRoadmapProps { learningMap: LearningMap; onActivitySelect: (activityId: string) => void; } export const LearningRoadmap: React.FC = ({ learningMap, onActivitySelect }) => { const [selectedActivity, setSelectedActivity] = useState(null); const isActivityUnlocked = (activity: LearningActivity) => { if (activity.prerequisites.length === 0) return true; return activity.prerequisites.every(prereqId => learningMap.activities.find(a => a.id === prereqId)?.completed ); }; const getActivityIcon = (activity: LearningActivity) => { if (activity.completed) { return ; } else if (isActivityUnlocked(activity)) { return ; } else { return ; } }; const getActivityStyle = (activity: LearningActivity) => { if (activity.completed) { return 'bg-green-50 border-green-200 text-green-800 shadow-sm'; } else if (isActivityUnlocked(activity)) { return 'bg-blue-50 border-blue-200 text-blue-800 hover:bg-blue-100 cursor-pointer shadow-sm hover:shadow-md transform hover:scale-[1.02] transition-all duration-200'; } else { return 'bg-gray-50 border-gray-200 text-gray-500'; } }; const handleActivityClick = (activity: LearningActivity) => { if (isActivityUnlocked(activity) && !activity.completed) { setSelectedActivity(activity.id); onActivitySelect(activity.id); } }; return (

Learning Roadmap

Track your learning journey

Progress:
{Math.round(learningMap.progressPercentage)}%
{learningMap.activities.map((activity, index) => (
handleActivityClick(activity)} >
{getActivityIcon(activity)}

{activity.name}

{activity.description}

{activity.estimatedTime}
Level {activity.difficulty}
{activity.prerequisites.length > 0 && (
Prerequisites: {activity.prerequisites.length}
)}
{learningMap.currentActivity === activity.id && (
)}
{index < learningMap.activities.length - 1 && (
)}
))}
{/* Legend */}

Legend

Completed
Available
Locked
); };