"use client"
import {
AlertDialog,
AlertDialogAction,
AlertDialogCancel,
AlertDialogContent,
AlertDialogDescription,
AlertDialogFooter,
AlertDialogHeader,
AlertDialogMedia,
AlertDialogTitle,
} from "@/components/ui/alert-dialog"
import { Alert, AlertDescription, AlertTitle } from "@/components/reui/alert"
import type { Backup } from "@/lib/data"
import { backupFileMissing } from "@/lib/backup-file-state"
import { AlertCircleIcon, LoaderCircleIcon, TriangleAlertIcon } from "lucide-react"
export function BackupDeleteDialog({
backup,
busy,
error,
onConfirm,
onCancel,
returnFocus,
}: {
backup: Backup | null
busy: boolean
error?: string | null
onConfirm: () => void
onCancel: () => void
returnFocus?: () => HTMLElement | null
}) {
return (
{ if (!v && !busy) onCancel() }}>
{backup && backupFileMissing(backup) ? "Удалить запись о бэкапе?" : "Удалить бэкап?"}
{backup && backupFileMissing(backup) ? <>Локальный файл {backup.filename} отсутствует. Будет удалена только запись из истории.> : <>Файл {backup?.filename} будет удалён
{backup?.storage === "s3" || backup?.storage === "both" ? " локально; объект S3 — через текущее подключение к хранилищу" : " с диска"}.>}
{error && {error}
}
Отмена
{busy ? : null}
Удалить
)
}
export function BackupRestoreDialog({
backup,
busy,
blocked = false,
error,
onConfirm,
onCancel,
returnFocus,
}: {
backup: Backup | null
busy: boolean
blocked?: boolean
error?: string | null
onConfirm: () => void
onCancel: () => void
returnFocus?: () => HTMLElement | null
}) {
return (
{ if (!v && !busy) onCancel() }}>
Восстановить конфигурацию?
Файл {backup?.filename} будет загружен
на {backup?.server} и импортирован.
Это изменит рабочую конфигурацию роутера
Сессия может оборваться. Убедитесь, что выбран именно этот сервер и этот снимок.
{error && {error}
}
{blocked && !busy ? "Закрыть" : "Отмена"}
{busy ? : null}
Восстановить
)
}