import { Button, Input, Modal, ModalBody, ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalOverlay, Select, Text, useToast, } from "@chakra-ui/react"; export default function (props: { isOpen: boolean; onClose: () => void }) { function reset() { ( document.getElementById("punishment") as unknown as HTMLSelectElement ).selectedIndex = -1; (document.getElementById("user") as HTMLInputElement).value = ""; (document.getElementById("evidence") as HTMLInputElement).value = ""; props.onClose(); } async function submit() { const form = new FormData(); const { files } = document.getElementById("evidence") as HTMLInputElement; const punishment = ( document.getElementById("punishment") as unknown as HTMLSelectElement ).item(0)?.value as string; const { value: user } = document.getElementById("user") as HTMLInputElement; form.append("user", user); form.append("punishment", punishment); if (files) { for (let i = 0; i < files.length; i++) form.append(`file${i}`, files[i], files[i].name); } const postReq = await fetch("/api/infractions/new", { body: form, method: "POST", }); if (postReq.ok) { useToast()({ description: "Infraction created", duration: 5000, isClosable: true, status: "success", title: "Success", }); props.onClose(); return; } useToast()({ description: `Failed to create infraction (${ ((await postReq.json()) as { error: string }).error })`, duration: 5000, isClosable: true, status: "error", title: "Error", }); } return ( New Infraction User ID

Punishment

Evidence
); }