'use client'; import { useState } from 'react'; import { useMutation, useQueryClient } from '@tanstack/react-query'; import { useRouter } from 'next/navigation'; import { Trash2 } from 'lucide-react'; import { toast } from 'sonner'; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from '@/components/ui/alert-dialog'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardHeader, CardTitle, } from '@/components/ui/card'; import { Spinner } from '@/components/ui/spinner'; import { type PagesProject, PagesService } from '@/lib/services/openflare'; import { projectsQueryKey } from '../../components/pages-utils'; interface DangerZoneCardProps { project: PagesProject; } export function DangerZoneCard({ project }: DangerZoneCardProps) { const router = useRouter(); const queryClient = useQueryClient(); const [deleteOpen, setDeleteOpen] = useState(false); const deleteProjectMutation = useMutation({ mutationFn: () => PagesService.deleteProject(project.id), onSuccess: async () => { toast.success('项目已删除'); await queryClient.invalidateQueries({ queryKey: projectsQueryKey }); router.push('/pages'); }, onError: (error) => { toast.error(error instanceof Error ? error.message : '删除失败'); }, }); return ( <> 危险区域

删除项目

将永久删除 {project.name}({project.slug})及其全部部署。

删除 Pages 项目 确认删除项目 {project.name} 吗?此操作不可恢复。 取消 { event.preventDefault(); deleteProjectMutation.mutate(); }} > {deleteProjectMutation.isPending ? ( ) : null} 确认删除 ); }