'use client'; import { useRef, useState } from 'react'; import type { RecordButtonProps } from '@/types/component-props'; export default function RecordButton({ isRecording, isTranscribing = false, onStartRecording, onStopRecording, }: RecordButtonProps) { const [mediaRecorder, setMediaRecorder] = useState(null); const [audioChunks, setAudioChunks] = useState([]); const handleClick = async () => { if (isRecording) { // Stop recording if (mediaRecorder) { mediaRecorder.stop(); } } else { // Start recording try { const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); const recorder = new MediaRecorder(stream); const chunks: Blob[] = []; recorder.ondataavailable = (e) => { chunks.push(e.data); }; recorder.onstop = () => { const audioBlob = new Blob(chunks, { type: 'audio/webm' }); onStopRecording?.(audioBlob); stream.getTracks().forEach(track => track.stop()); }; recorder.start(); setMediaRecorder(recorder); setAudioChunks([]); onStartRecording?.(); } catch (error) { console.error('Failed to start recording:', error); } } }; return ( ); }