"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" && (
{commitMessage && success && (
Commit Message
{commitMessage}
)}
{errorMessage && !success && (
)}
)}
{summaryText && status === "done" && (
{showSummary && (
{summaryText}
)}
)}
);
}