import { useEffect, useRef, useState } from "react"; export function Timer({ isRunning, initialSeconds = 0, onChange, }: { isRunning: boolean; initialSeconds?: number; onChange?: (seconds: number) => void; }) { const [seconds, setSeconds] = useState(initialSeconds); const intervalRef = useRef(null); useEffect(() => { setSeconds(initialSeconds); }, [initialSeconds]); useEffect(() => { if (isRunning) { intervalRef.current = setInterval(() => { setSeconds((s) => { const next = s + 1; onChange?.(next); return next; }); }, 1000); } else if (intervalRef.current) { clearInterval(intervalRef.current); intervalRef.current = null; } return () => { if (intervalRef.current) clearInterval(intervalRef.current); }; }, [isRunning, onChange]); // Format mm:ss ou hh:mm:ss const format = () => { const h = Math.floor(seconds / 3600); const m = Math.floor((seconds % 3600) / 60); const s = seconds % 60; if (h > 0) return `${h.toString().padStart(2, "0")}:${m.toString().padStart(2, "0")}:${s.toString().padStart(2, "0")}`; return `${m.toString().padStart(2, "0")}:${s.toString().padStart(2, "0")}`; }; return {format()}; }