"use client"; import { useState } from "react"; import { useMutation, useQueryClient } from "@tanstack/react-query"; import { AlertTriangle, Loader2, Trash2 } from "lucide-react"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; import { useTranslations } from "@/lib/i18n/context"; export function DangerZoneSection({ id }: { id: string }) { const { t } = useTranslations(); const queryClient = useQueryClient(); const [wipeMsg, setWipeMsg] = useState(null); const wipeAllData = useMutation({ mutationFn: async () => { const res = await fetch("/api/admin/data", { method: "DELETE", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ confirm: "DELETE ALL" }), }); const json = await res.json(); if (!res.ok) throw new Error(json.error || t("common.error")); return json.data as { measurements: number; intakeEvents: number; medications: number; }; }, onSuccess: (data) => { queryClient.invalidateQueries(); setWipeMsg( t("admin.deletedResult", { measurements: data.measurements, medications: data.medications, intakeEvents: data.intakeEvents, }), ); }, onError: (err: Error) => { setWipeMsg(err.message); }, }); return (

{t("admin.dangerZone")}

{t("admin.deleteAllData")}

{t("admin.deleteAllDescription")}

{t("admin.deleteAllConfirm")} {t("admin.deleteAllConfirmDescription")} {t("common.cancel")} wipeAllData.mutate()} > {t("admin.finalDelete")}
{wipeMsg && (

{wipeMsg}

)}
); }