import React, { useState } from 'react' import { motion, AnimatePresence } from 'framer-motion' import { Play, HelpCircle, CheckCircle, XCircle, Code } from 'lucide-react' import { learningAPI } from '../../services/api' import toast from 'react-hot-toast' const CodePlayground = ({ topicName }) => { const [code, setCode] = useState('# Write your Python code here\nprint("Hello, World!")') const [output, setOutput] = useState('') const [running, setRunning] = useState(false) const [error, setError] = useState(false) const [hint, setHint] = useState('') const [gettingHint, setGettingHint] = useState(false) const [attemptCount, setAttemptCount] = useState(0) const handleRunCode = async () => { setRunning(true) setOutput('') setError(false) setAttemptCount(prev => prev + 1) try { const response = await learningAPI.checkCode(code) if (response.data.success) { setOutput(response.data.output) setError(false) if (!response.data.error) { toast.success('Code executed successfully!') } } else { setOutput(response.data.output) setError(true) } } catch (err) { setOutput('Failed to execute code') setError(true) } finally { setRunning(false) } } const handleGetHint = async () => { setGettingHint(true) try { const response = await learningAPI.askHint({ question: `I'm trying to practice ${topicName}`, challenge: code, attempt_count: attemptCount }) setHint(response.data.hint) } catch (err) { toast.error('Failed to get hint') } finally { setGettingHint(false) } } const handleClearCode = () => { setCode('# Write your Python code here\nprint("Hello, World!")') setOutput('') setError(false) setHint('') setAttemptCount(0) } return ( {/* Header */}

Practice Playground

Try out what you've learned

{gettingHint ? (
) : ( )} Get Hint
Clear
{/* Hint Display */} {hint && (

AI Tutor Hint

{hint}

)}
{/* Code Editor */}
{/* Editor */}