import { useMemo } from "react"; import { AlertCircle, CheckCircle2, FolderOpen, Loader2, Save, XCircle, } from "lucide-react"; import { Button } from "@/components/ui/button"; import { useTranslation } from "react-i18next"; import type { ImportStatus } from "@/hooks/useImportExport"; interface ImportExportSectionProps { status: ImportStatus; selectedFile: string; errorMessage: string | null; backupId: string | null; isImporting: boolean; onSelectFile: () => Promise; onImport: () => Promise; onExport: () => Promise; onClear: () => void; } export function ImportExportSection({ status, selectedFile, errorMessage, backupId, isImporting, onSelectFile, onImport, onExport, onClear, }: ImportExportSectionProps) { const { t } = useTranslation(); const selectedFileName = useMemo(() => { if (!selectedFile) return ""; const segments = selectedFile.split(/[\\/]/); return segments[segments.length - 1] || selectedFile; }, [selectedFile]); return (

{t("settings.importExport")}

{t("settings.importExportHint", { defaultValue: "导入导出 cc-switch 配置,便于备份或迁移。", })}

{selectedFile ? ( ) : null}
{selectedFile ? (

{selectedFileName}

) : (

{t("settings.noFileSelected", { defaultValue: "尚未选择配置文件。", })}

)}
); } interface ImportStatusMessageProps { status: ImportStatus; errorMessage: string | null; backupId: string | null; } function ImportStatusMessage({ status, errorMessage, backupId, }: ImportStatusMessageProps) { const { t } = useTranslation(); if (status === "idle") { return null; } const baseClass = "flex items-start gap-2 rounded-md border px-3 py-2 text-xs leading-relaxed"; if (status === "importing") { return (

{t("settings.importing")}

{t("common.loading", { defaultValue: "正在处理..." })}

); } if (status === "success") { return (

{t("settings.importSuccess")}

{backupId ? (

{t("settings.backupId", { defaultValue: "备份 ID" })}: {backupId}

) : null}

{t("settings.autoReload", { defaultValue: "即将刷新列表。" })}

); } const message = errorMessage || t("settings.importFailed", { defaultValue: "导入失败,请重试。" }); return (

{t("settings.importFailed", { defaultValue: "导入失败" })}

{message}

); }