import { useState } from 'react' import { CheckCircle2, ArrowUpRight, Pause, X, FileText } from 'lucide-react' import { EscalateModal } from './EscalateModal' import { StatusUpdateModal } from './StatusUpdateModal' import type { ResolveSessionRequest, EscalateSessionRequest, SessionDocumentation, StatusUpdateAudience, StatusUpdateLength, StatusUpdateContext, StatusUpdateResponse, } from '@/types/ai-session' interface FlowPilotActionBarProps { canResolve: boolean canEscalate: boolean isProcessing: boolean hasPsaTicket?: boolean sessionId?: string canShareUpdate?: boolean onResolve: (data: ResolveSessionRequest) => Promise onEscalate: (data: EscalateSessionRequest) => Promise onPause?: () => Promise onAbandon?: () => Promise onGenerateStatusUpdate?: (audience: StatusUpdateAudience, length: StatusUpdateLength, context: StatusUpdateContext) => Promise } export function FlowPilotActionBar({ canResolve, canEscalate, isProcessing, hasPsaTicket = false, sessionId, canShareUpdate = false, onResolve, onEscalate, onPause, onAbandon, onGenerateStatusUpdate, }: FlowPilotActionBarProps) { const [showResolve, setShowResolve] = useState(false) const [showEscalate, setShowEscalate] = useState(false) const [showAbandon, setShowAbandon] = useState(false) const [showStatusUpdate, setShowStatusUpdate] = useState(false) const [resolutionSummary, setResolutionSummary] = useState('') const [submitting, setSubmitting] = useState(false) const handleResolve = async () => { if (!resolutionSummary.trim() || resolutionSummary.length < 5) return setSubmitting(true) try { await onResolve({ resolution_summary: resolutionSummary }) setShowResolve(false) } finally { setSubmitting(false) } } const handlePause = async () => { if (onPause) { setSubmitting(true) try { await onPause() } finally { setSubmitting(false) } } } const handleAbandon = async () => { if (onAbandon) { setSubmitting(true) try { await onAbandon() setShowAbandon(false) } finally { setSubmitting(false) } } } return ( <> {/* Bottom bar — fixed to viewport bottom, single row on all screen sizes */}
{/* Primary actions */} {canShareUpdate && onGenerateStatusUpdate && ( )} {/* Spacer */}
{/* Secondary actions — right side */} {onPause && ( )} {onAbandon && ( )}
{/* Resolve modal */} {showResolve && (

Resolve Session

Summarize what fixed the issue. This will be included in the auto-generated documentation.