import { TextField, FormControlLabel, Checkbox, Button, Alert, CircularProgress, } from "@mui/material"; import { useTranslation } from "react-i18next"; import { useState } from "react"; import { submitFormData } from "../utils/sender"; interface Message { type: "error" | "info" | "success" | "warning"; headline: string; text: string; } export const MainForm = () => { const { t } = useTranslation(); const [invoice, setInvoice] = useState(false); const [msg, setMsg] = useState(null); const [isLoading, setIsLoading] = useState(false); const [formData, setFormData] = useState({ firstName: "", lastName: "", email: "", phoneNumber: "", tickets: 1, companyName: "", cmpFirstName: "", cpmLastName: "", cpmEmail: "", cpmPhoneNumber: "", street: "", postalCode: "", paymentMethod: "", code: "", }); const handleChange = (e: React.ChangeEvent) => { setFormData({ ...formData, [e.target.name]: e.target.value }); }; const handleSubmit = async () => { setIsLoading(true); try { const result = await submitFormData(formData); if (result.success) { setMsg({ type: "success", headline: t("success"), text: t("form-submitted-successfully"), }); } else { setMsg({ type: "error", headline: t("error"), text: result.error || t("form-submission-failed"), }); } } finally { setIsLoading(false); } }; return ( <>
{ e.preventDefault(); handleSubmit(); }} > setInvoice(e.target.checked)} /> } label={t("invoice")} /> {invoice && ( <> )} {/* Payment methods - only one must be selected */} } label={t("cash")} /> } label={t("paypal")} /> } label={t("transfer")} /> {isLoading && } {msg && ( {msg.headline}: {msg.text} )} ); };