"use client" import { useEffect, useRef, useState } from "react" import { motion } from "framer-motion" interface TemporizadorVisualProps { durationMinutes: number onComplete: () => void running: boolean } export default function TemporizadorVisual({ durationMinutes, onComplete, running, }: TemporizadorVisualProps) { const [remaining, setRemaining] = useState(durationMinutes * 60) const totalSec = durationMinutes * 60 const intervalRef = useRef(null) useEffect(() => { if (running) { intervalRef.current = setInterval(() => { setRemaining((prev) => { if (prev <= 1) { clearInterval(intervalRef.current!) onComplete() return 0 } return prev - 1 }) }, 1000) } else { if (intervalRef.current) clearInterval(intervalRef.current) } return () => { if (intervalRef.current) clearInterval(intervalRef.current) } }, [running, onComplete]) const fraction = remaining / totalSec const degrees = fraction * 360 const minutes = Math.floor(remaining / 60) const seconds = remaining % 60 return (
0.3 ? "#8CB8A0" : "#D4A574"} strokeWidth="8" strokeDasharray="264" strokeDashoffset={264 * (1 - fraction)} strokeLinecap="round" className="transition-all duration-1000 ease-linear" /> {minutes}:{seconds.toString().padStart(2, "0")}
) }