"use client" import {useEffect} from "react" import {zodResolver} from "@hookform/resolvers/zod" import {Loader2} from "lucide-react" import {useForm} from "react-hook-form" import {z} from "zod" import { AlertDialog, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from "@/components/ui/alert-dialog" import {Button} from "@/components/ui/button" import {Input} from "@/components/ui/input" import {Label} from "@/components/ui/label" const cleanupSchema = z.object({ keepCount: z.number().int().min(3, "最少保留 3 个历史快照"), }) type CleanupFormValues = z.infer interface CleanupDialogProps { open: boolean onOpenChange: (open: boolean) => void onConfirm: (keepCount: number) => void loading: boolean } export function CleanupDialog({ open, onOpenChange, onConfirm, loading, }: CleanupDialogProps) { const form = useForm({ resolver: zodResolver(cleanupSchema), defaultValues: { keepCount: 10 }, }) useEffect(() => { if (open) { form.reset({ keepCount: 10 }) } }, [form, open]) const handleConfirm = form.handleSubmit((values) => { onConfirm(values.keepCount) }) return ( 清理历史快照 删除旧的历史快照配置,系统将始终保护当前已激活的版本不被删除。

默认为 10 个,最少需保留 3 个。

{form.formState.errors.keepCount ? (

{form.formState.errors.keepCount.message}

) : null}
取消
) }