import { ArrowPathIcon } from "@heroicons/react/20/solid"; import { useFetcher } from "@remix-run/react"; import { useState } from "react"; import { Dialog, DialogContent, DialogHeader, DialogTrigger } from "~/components/primitives/Dialog"; import { generateTwoRandomWords } from "~/utils/randomWords"; import { Button } from "../primitives/Buttons"; import { Callout } from "../primitives/Callout"; import { Fieldset } from "../primitives/Fieldset"; import { FormButtons } from "../primitives/FormButtons"; import { Input } from "../primitives/Input"; import { InputGroup } from "../primitives/InputGroup"; import { Paragraph } from "../primitives/Paragraph"; import { CheckboxWithLabel } from "../primitives/Checkbox"; import { Spinner } from "../primitives/Spinner"; type ModalProps = { id: string; title: string; hasVercelIntegration: boolean; isDevelopment: boolean; }; type ModalContentProps = ModalProps & { randomWord: string; closeModal: () => void; }; export function RegenerateApiKeyModal({ id, title, hasVercelIntegration, isDevelopment, }: ModalProps) { const randomWord = generateTwoRandomWords(); const [open, setOpen] = useState(false); return ( ); } const RegenerateApiKeyModalContent = ({ id, randomWord, title, hasVercelIntegration, isDevelopment, closeModal, }: ModalContentProps) => { const [confirmationText, setConfirmationText] = useState(""); const fetcher = useFetcher(); const isSubmitting = fetcher.state === "submitting"; // form submission completed if (fetcher.state === "loading") { closeModal(); } return (