import { useState, useRef, useEffect } from 'react'; import { cn, isClosedSessionStatus } from '../lib/utils'; import { Square, SendHorizonal } from 'lucide-react'; interface ControlBarProps { sessionId: string; sessionStatus: string | null; activityMode: string; onSend: (text: string) => Promise; onInterrupt: () => Promise; } export function ControlBar({ sessionId, sessionStatus, activityMode, onSend, onInterrupt }: ControlBarProps) { const [text, setText] = useState(''); const inputRef = useRef(null); const closed = isClosedSessionStatus(sessionStatus); const working = activityMode === 'working'; const handleSend = async () => { const trimmed = text.trim(); if (!trimmed || closed) return; setText(''); try { await onSend(trimmed); } catch { setText(trimmed); } }; const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === 'Enter' && !e.shiftKey && !e.nativeEvent?.isComposing) { e.preventDefault(); handleSend(); } }; useEffect(() => { inputRef.current?.focus(); }, [sessionId]); return (
setText(e.target.value)} onKeyDown={handleKeyDown} placeholder={closed ? 'Session is closed' : 'Type a message...'} disabled={closed} className="flex-1 rounded-lg border border-border bg-surface-2 px-4 py-2.5 text-sm text-text-primary placeholder:text-text-muted focus:border-brand focus:outline-none focus:ring-1 focus:ring-brand/20 disabled:opacity-50 transition-colors" />
); }