"use client";
import "../app/globals.css";
import {
Loader2,
CheckCircle,
XCircle,
GitBranch,
MessageSquare,
FileText,
} from "lucide-react";
import { useState } from "react";
type Step = {
name: string;
status: "waiting" | "generating" | "success" | "error";
error?: string;
};
type InitializeStepProps = {
status: "loading" | "generating" | "done";
success?: boolean;
steps?: Step[];
reasoningText?: string;
summaryText?: string;
};
export function InitializeStep({
status,
success,
steps,
reasoningText,
summaryText,
}: InitializeStepProps) {
const [showReasoning, setShowReasoning] = useState(false);
const [showSummary, setShowSummary] = useState(false);
const stepStatusIcon = {
waiting: (
),
generating: ,
success: ,
error: ,
};
const getStatusIcon = () => {
switch (status) {
case "loading":
return (
);
case "generating":
return ;
case "done":
return success ? (
) : (
);
}
};
const getStatusText = () => {
switch (status) {
case "loading":
return "Preparing environment...";
case "generating":
return "Initializing environment...";
case "done":
return success ? "Environment ready" : "Initialization failed";
}
};
return (
{reasoningText && (
{showReasoning && (
{reasoningText}
)}
)}
{getStatusText()}
{getStatusIcon()}
{steps && (status === "generating" || status === "done") && (
{steps.map((step, index) => (
-
{stepStatusIcon[step.status]}
{step.name}
{step.error && (
({step.error})
)}
))}
)}
{summaryText && status === "done" && (
{showSummary && (
{summaryText}
)}
)}
);
}