"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 { cn } from "@/lib/utils" export function BackupCreateSheet({ open, onOpenChange, step, onStepChange, servers, selected, onToggle, onSelectAll, onClear, notes, onNotesChange, destinationLabel, busy, onSubmit, }: { 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 onSubmit: () => void }) { return ( { onOpenChange(v); if (!v) onStepChange(1) }}> Новый бэкап Снять конфигурацию вручную с выбранных серверов 1 Серверы 2 Заметка 3 Подтверждение

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

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

Будет создан бэкап для {selected.size} серверов.

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

{notes ?

Заметка: {notes}

: null}
}>Отмена {step > 1 && ( )} {step < 3 ? ( ) : ( )}
) }