'use client'; import { useEffect, useState } from 'react'; interface SearchLoadingModalProps { isOpen: boolean; onTimeout?: () => void; maxSeconds?: number; } export function SearchLoadingModal({ isOpen, onTimeout, maxSeconds = 30 }: SearchLoadingModalProps) { const [seconds, setSeconds] = useState(maxSeconds); useEffect(() => { if (!isOpen) { setSeconds(maxSeconds); return; } const interval = setInterval(() => { setSeconds(prev => { if (prev <= 1) { clearInterval(interval); onTimeout?.(); return maxSeconds; } return prev - 1; }); }, 1000); return () => clearInterval(interval); }, [isOpen, maxSeconds, onTimeout]); if (!isOpen) return null; return (

Searching for specs...

This may take up to {maxSeconds} seconds

{seconds} seconds remaining

); }