'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 */}
{/* 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 */}
{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 */}
); }