"use client" import type { Server } from "@/lib/data" import { FormField } from "@/components/form-kit" import { StatusBadge } from "@/components/status-badge" import { Button } from "@/components/ui/button" import { Checkbox } from "@/components/ui/checkbox" import { Input } from "@/components/ui/input" import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetDescription, SheetFooter, SheetClose, } from "@/components/ui/sheet" import { Stepper, StepperContent, StepperIndicator, StepperItem, StepperNav, StepperPanel, StepperSeparator, StepperTitle, StepperTrigger, } from "@/components/reui/stepper" import { Alert, AlertDescription, AlertTitle } from "@/components/reui/alert" import { cn } from "@/lib/utils" export function BackupCreateSheet({ open, onOpenChange, step, onStepChange, servers, selected, onToggle, onSelectAll, onClear, notes, onNotesChange, destinationLabel, busy, onSubmit, locked = false, terminal = false, canObserve = true, jobId, jobStatus, result, error, onReset, }: { open: boolean onOpenChange: (open: boolean) => void step: number onStepChange: (step: number) => void servers: Server[] selected: Set onToggle: (id: string) => void onSelectAll: () => void onClear: () => void notes: string onNotesChange: (value: string) => void destinationLabel: string busy: boolean locked?: boolean terminal?: boolean canObserve?: boolean jobId?: string jobStatus?: string result?: string error?: string | null onReset: () => void onSubmit: () => void }) { return ( { onOpenChange(v); if (!v) onStepChange(1) }}> {locked ? "Задача резервного копирования" : "Новый бэкап"} {locked ? "Подтверждённые файлы и ошибки выполнения" : "Снять конфигурацию вручную с выбранных серверов"}
{locked &&

ID: {jobId}

{jobStatus}

{result &&

{result}

}

Закрытие формы не отменяет задачу. Повторная проверка не создаёт новые копии.

} {error &&
{terminal ? "Результат с ограничениями" : "Запрос не подтверждён"}{error}
}
1 Серверы 2 Заметка 3 Подтверждение

Выберите серверы

·
{servers.map((s) => { const checked = selected.has(s.id) return ( ) })}
onNotesChange(e.target.value)} />

{locked ? "Запрошены резервные копии для" : "Будет создан бэкап для"} {selected.size} серверов.

{!locked &&

Куда сохранится: {destinationLabel}

} {notes ?

Заметка: {notes}

: null}
}>Закрыть {!locked && step > 1 && ( )} {locked ? <>{terminal && } : step < 3 ? ( ) : ( )}
) }