"use client";
import { IconAlertTriangle, IconLoader2 } from "@tabler/icons-react";
import type { PrepareSummary } from "@/lib/prepare/summarize";
import { useTranslation } from "react-i18next";
export function PrepareStatusSection({ summary }: { summary: PrepareSummary }) {
if (summary.phase === "idle" || summary.phase === "ready") return null;
if (summary.phase === "resuming") return ;
if (summary.phase === "preparing" || summary.phase === "preparing_fallback") {
return ;
}
if (summary.phase === "failed") return ;
return null;
}
function ResumingRow() {
const { t } = useTranslation();
return (
{t("task:resumingSession")}
{t("task:reconnectingToTheExistingEnvironment")}
);
}
function PreparingRow({ summary }: { summary: PrepareSummary }) {
const { t } = useTranslation();
const stepLabel = summary.current?.name ?? "Preparing...";
const stepNumber = Math.min(summary.currentIndex + 1, summary.totalSteps);
return (
{t("task:preparingEnvironment")}
{summary.totalSteps > 0
? t("task:stepOf", { stepNumber, totalSteps: summary.totalSteps, stepLabel })
: stepLabel}
{summary.phase === "preparing_fallback" && summary.fallbackWarning && (
{summary.fallbackWarning}
)}
);
}
function FailedRow({ summary }: { summary: PrepareSummary }) {
const { t } = useTranslation();
return (
{t("task:environmentPreparationFailed")}
{summary.failedStep && (
{t("task:failedAtStep", { step: summary.failedStep.name })}
)}
{summary.failedStep?.error && (
{summary.failedStep.error}
)}
);
}