import React, { useState, useEffect } from "react"; import { motion, AnimatePresence } from "framer-motion"; import { Button } from "./ui/button"; import { X } from "lucide-react"; interface MathVerificationPopupProps { isOpen: boolean; onVerify: () => void; onClose: () => void; } export const MathVerificationPopup: React.FC = ({ isOpen, onVerify, onClose, }) => { const [num1, setNum1] = useState(0); const [num2, setNum2] = useState(0); const [operator, setOperator] = useState<"+" | "-">("+"); const [userAnswer, setUserAnswer] = useState(""); const [error, setError] = useState(""); const [attempts, setAttempts] = useState(0); const generateNewProblem = () => { let newNum1 = Math.floor(Math.random() * 10) + 1; let newNum2 = Math.floor(Math.random() * 10) + 1; const newOperator = Math.random() > 0.5 ? "+" : "-"; // Ensure subtraction always has the larger number first if (newOperator === "-" && newNum1 < newNum2) { [newNum1, newNum2] = [newNum2, newNum1]; } setNum1(newNum1); setNum2(newNum2); setOperator(newOperator); setUserAnswer(""); setError(""); }; useEffect(() => { if (isOpen) { generateNewProblem(); setAttempts(0); } }, [isOpen]); const correctAnswer = operator === "+" ? num1 + num2 : num1 - num2; const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (!userAnswer.trim()) { setError("Please enter your answer"); return; } const answer = parseInt(userAnswer); if (isNaN(answer)) { setError("Please enter a valid number"); return; } if (answer === correctAnswer) { onVerify(); } else { const newAttempts = attempts + 1; setAttempts(newAttempts); setError(`Incorrect answer. Attempt ${newAttempts} of 3.`); if (newAttempts >= 3) { generateNewProblem(); setAttempts(0); } } }; const handleOverlayClick = (e: React.MouseEvent) => { if (e.target === e.currentTarget) { onClose(); } }; return ( {isOpen && (

Verify You're Human

Solve this simple math problem to continue:

{num1} {operator} {num2} = { setUserAnswer(e.target.value.replace(/[^0-9-]/g, "")); setError(""); }} className="bg-gray-800 border border-gray-600 rounded-lg px-4 py-3 text-center w-20 text-white focus:outline-none focus:border-[#E5195E]" autoFocus maxLength={3} />
{error && (

{error}

)}

This helps us prevent spam and automated submissions.

)}
); };