import { useEffect, useState } from "react"; import { Clock } from "lucide-react"; import { cn } from "../../lib/utils"; interface SessionTimerProps { expiresAt: string | null; className?: string; } export function SessionTimer({ expiresAt, className }: SessionTimerProps) { const [timeLeft, setTimeLeft] = useState("--:--"); const [isCritical, setIsCritical] = useState(false); useEffect(() => { if (!expiresAt) { return; } const tick = () => { const now = Date.now(); const end = new Date(expiresAt).getTime(); const diff = Math.max(0, end - now); if (diff <= 0) { setTimeLeft("Expired"); setIsCritical(true); return; } const minutes = Math.floor(diff / 60000); const seconds = Math.floor((diff % 60000) / 1000); setTimeLeft(`${minutes.toString().padStart(2, "0")}:${seconds.toString().padStart(2, "0")}`); setIsCritical(minutes < 5); }; tick(); const interval = setInterval(tick, 1000); return () => clearInterval(interval); }, [expiresAt]); if (!expiresAt) { return null; } return (

Session window

Expires in {timeLeft}

Auto cleanup
); }