"use client"; import { Button } from "@app/components/ui/button"; import { Form, FormControl, FormField, FormItem, FormMessage } from "@app/components/ui/form"; import { Input } from "@app/components/ui/input"; import { zodResolver } from "@hookform/resolvers/zod"; import React, { useActionState } from "react"; import { useForm } from "react-hook-form"; import { z } from "zod"; import { Credenza, CredenzaBody, CredenzaClose, CredenzaContent, CredenzaFooter, CredenzaHeader, CredenzaTitle } from "@app/components/Credenza"; import { useTranslations } from "next-intl"; import CopyToClipboard from "./CopyToClipboard"; type InviteUserFormProps = { open: boolean; setOpen: (open: boolean) => void; string: string; title: string; dialog: React.ReactNode; buttonText: string; onConfirm: () => Promise; warningText?: string; }; export default function ConfirmDeleteDialog({ open, setOpen, string, title, onConfirm, buttonText, dialog, warningText }: InviteUserFormProps) { const [, formAction, loading] = useActionState(onSubmit, null); const t = useTranslations(); const formSchema = z.object({ string: z.string().refine((val) => val === string, { message: t("inviteErrorInvalidConfirmation") }) }); const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { string: "" } }); const isConfirmed = form.watch("string") === string; async function onSubmit() { try { await onConfirm(); setOpen(false); form.reset(); } catch (error) { // Handle error if needed console.error("Confirmation failed:", error); } } return ( <> { setOpen(val); form.reset(); }} > {title}
{dialog}
{warningText || t("cannotbeUndone")}
{t("type")}
{t("toConfirm")}
( )} />
); }