"use client"; import "../app/globals.css"; import { useState } from "react"; import { GitCommit, Loader2, CheckCircle, XCircle, ChevronDown, ChevronUp, MessageSquare, FileText, } from "lucide-react"; import { BasicMarkdownText } from "../thread/markdown-text"; type PushChangesProps = { status: "loading" | "generating" | "done"; success?: boolean; gitStatus?: string; commitMessage?: string; errorMessage?: string; reasoningText?: string; summaryText?: string; }; export function PushChanges({ status, success, gitStatus, commitMessage, errorMessage, reasoningText, summaryText, }: PushChangesProps) { const [expanded, setExpanded] = useState( Boolean(status === "done" && gitStatus), ); const [showReasoning, setShowReasoning] = useState(true); const [showSummary, setShowSummary] = useState(true); const getStatusIcon = () => { switch (status) { case "loading": return (
); case "generating": return ; case "done": return success ? ( ) : ( ); } }; const getStatusText = () => { switch (status) { case "loading": return "Preparing changes..."; case "generating": return "Pushing changes..."; case "done": return success ? "Changes pushed successfully" : "Failed to push changes"; } }; return (
{reasoningText && (
{showReasoning && (

{reasoningText}

)}
)}
{getStatusText()}
{getStatusIcon()} {gitStatus && status === "done" && ( )}
{expanded && gitStatus && status === "done" && (

Git Status

              {gitStatus}
            
{commitMessage && success && (

Commit Message

{commitMessage}
)} {errorMessage && !success && (

Error

{errorMessage}
)}
)} {summaryText && status === "done" && (
{showSummary && ( {summaryText} )}
)}
); }