'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}
取消
); }