import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { AlertTriangle } from "lucide-react"; import { useTranslation } from "react-i18next"; import type { ToolInstallationReport } from "@/lib/api/settings"; import { ToolInstallRow } from "./ToolInstallRow"; interface ToolUpgradeConfirmDialogProps { isOpen: boolean; plans: ToolInstallationReport[]; displayName: (tool: string) => string; onConfirm: () => void; onCancel: () => void; } /** * 升级前的「多处安装确认」。仅当某工具检测到 ≥2 处安装时弹出:展示命令行实际命中 * 哪处(标「默认」= 升级目标)、各处版本,以及锚定后将执行的命令,让用户在 * 「升级只动其中一处、其余不动」这件事上知情后再确认。单处安装不会走到这里。 */ export function ToolUpgradeConfirmDialog({ isOpen, plans, displayName, onConfirm, onCancel, }: ToolUpgradeConfirmDialogProps) { const { t } = useTranslation(); return ( { if (!open) onCancel(); }} > {t("settings.toolUpgradeConfirmTitle")} {t("settings.toolUpgradeConfirmHint")}
{plans.map((plan) => (
{displayName(plan.tool)}
{!plan.anchored && (
{t("settings.toolUpgradeUnanchoredHint")}
)}
    {plan.installs.map((inst) => (
  • ))}
{t("settings.toolUpgradeWillRun")}
{plan.command}
))}
); }