"use client"; import { Mic, Square } from "lucide-react"; import { useState, useEffect } from "react"; import { cn } from "@/lib/utils"; interface AIVoiceInputProps { onStart?: () => void; onStop?: (duration: number) => void; isConnected?: boolean; className?: string; } export function AIVoiceInput({ onStart, onStop, isConnected = false, className }: AIVoiceInputProps) { const [active, setActive] = useState(false); const [time, setTime] = useState(0); const [isClient, setIsClient] = useState(false); const [status, setStatus] = useState<'disconnected' | 'connecting' | 'connected'>('disconnected'); useEffect(() => { setIsClient(true); }, []); useEffect(() => { let intervalId: NodeJS.Timeout; if (active) { intervalId = setInterval(() => { setTime((t) => t + 1); }, 1000); } else { setTime(0); } return () => clearInterval(intervalId); }, [active]); useEffect(() => { if (isConnected) { setStatus('connected'); setActive(true); } else { setStatus('disconnected'); setActive(false); } }, [isConnected]); const formatTime = (seconds: number) => { const mins = Math.floor(seconds / 60); const secs = seconds % 60; return `${mins.toString().padStart(2, "0")}:${secs.toString().padStart(2, "0")}`; }; const handleStart = () => { setStatus('connecting'); onStart?.(); }; const handleStop = () => { onStop?.(time); setStatus('disconnected'); }; return (