import React, { useState, useEffect } from 'react'; import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; const InteractiveTimerWidget = () => { // Estado para el cronómetro const [timerActive, setTimerActive] = useState(false); const [timerTime, setTimerTime] = useState(0); const [timerInterval, setTimerInterval] = useState(null); // Estado para el temporizador const [countdownActive, setCountdownActive] = useState(false); const [countdownTime, setCountdownTime] = useState(60); // Iniciar en 60 segundos const [countdownInterval, setCountdownInterval] = useState(null); // Función para manejar el cronómetro const handleTimer = () => { if (timerActive) { clearInterval(timerInterval); setTimerActive(false); } else { setTimerActive(true); setTimerInterval(setInterval(() => { setTimerTime(prevTime => prevTime + 1); }, 1000)); } }; // Función para manejar el temporizador const handleCountdown = () => { if (countdownActive) { clearInterval(countdownInterval); setCountdownActive(false); } else { setCountdownActive(true); setCountdownInterval(setInterval(() => { setCountdownTime(prevTime => prevTime - 1); }, 1000)); } }; // Efecto para reiniciar el temporizador cuando llegue a 0 useEffect(() => { if (countdownTime === 0 && countdownActive) { clearInterval(countdownInterval); setCountdownActive(false); setCountdownTime(60); } }, [countdownTime, countdownActive, countdownInterval]); return ( Cronómetro y Temporizador {/* Cronómetro */} {timerTime} segundos {timerActive ? 'Detener' : 'Iniciar'} {/* Temporizador */} {countdownTime} segundos {countdownActive ? 'Detener' : 'Iniciar'} ); }; export default InteractiveTimerWidget;