'use client'; import { useState } from 'react'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { cn } from '@/lib/utils'; import { Brain, Clock, Target, Lightbulb, Play, TrendingUp, Puzzle, Zap, Star, BarChart3 } from 'lucide-react'; interface PuzzleCardProps { puzzle: { type: string; name: string; description: string; difficulty_range: [number, number]; skills_developed: string[]; }; userProgress?: { completed_puzzles: number; average_time: number; success_rate: number; current_level: number; }; onStart: (puzzleType: string, difficulty: number) => void; onViewProgress: (puzzleType: string) => void; } export function PuzzleCard({ puzzle, userProgress, onStart, onViewProgress }: PuzzleCardProps) { const [selectedDifficulty, setSelectedDifficulty] = useState( userProgress?.current_level || Math.floor((puzzle.difficulty_range[0] + puzzle.difficulty_range[1]) / 2) ); const getPuzzleIcon = (puzzleType: string) => { switch (puzzleType) { case 'lateral_thinking': return ; case 'logical_deduction': return ; case 'mathematical_reasoning': return ; case 'spatial_reasoning': return ; default: return ; } }; const getDifficultyColor = (difficulty: number) => { if (difficulty <= 3) return 'bg-green-100 text-green-700 border-green-200'; if (difficulty <= 6) return 'bg-blue-100 text-blue-700 border-blue-200'; if (difficulty <= 8) return 'bg-orange-100 text-orange-700 border-orange-200'; return 'bg-red-100 text-red-700 border-red-200'; }; const getDifficultyLabel = (difficulty: number) => { if (difficulty <= 3) return 'Easy'; if (difficulty <= 6) return 'Medium'; if (difficulty <= 8) return 'Hard'; return 'Expert'; }; const getSuccessRateColor = (rate: number) => { if (rate >= 80) return 'text-green-600'; if (rate >= 60) return 'text-blue-600'; if (rate >= 40) return 'text-yellow-600'; return 'text-red-600'; }; return ( {getPuzzleIcon(puzzle.type)} {puzzle.name} {puzzle.description} PUZZLE {/* User Progress Stats */} {userProgress && ( {userProgress.completed_puzzles} Solved {Math.round(userProgress.average_time)}m Avg Time {userProgress.success_rate}% Success )} {/* Current Level */} {userProgress && ( Current Level Level {userProgress.current_level} )} {/* Difficulty Selection */} Choose Difficulty (1-{puzzle.difficulty_range[1]}) {/* Slider */} setSelectedDifficulty(parseInt(e.target.value))} className="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer" /> {/* Selected Difficulty Display */} Level {selectedDifficulty} ({getDifficultyLabel(selectedDifficulty)}) {userProgress && selectedDifficulty > userProgress.current_level && ( Challenge Mode )} {/* Skills Developed */} Skills Developed {puzzle.skills_developed.map((skill) => ( {skill.replace('_', ' ')} ))} {/* Features */} AI collaboration and hint system Adaptive difficulty based on performance Real-time cognitive skill assessment {/* Action Buttons */} onStart(puzzle.type, selectedDifficulty)} className="flex-1 bg-purple-600 hover:bg-purple-700" > Start Puzzle onViewProgress(puzzle.type)} className="px-3 border-purple-200 text-purple-700 hover:bg-purple-50" > ); }
{puzzle.description}