import { Button, Field, Input, NativeSelect, Text, Textarea } from "denjs-ui"; import { type FormEvent, useMemo, useState } from "react"; import { useMessages } from "#/shared/lib/i18n"; import { buildDemoRequestMailto } from "../model/build-demo-request-mailto"; import { getSpecializationOptions } from "../model/specialization-options"; export function RequestDemoForm() { const m = useMessages(); const [submitState, setSubmitState] = useState< "idle" | "sending" | "success" | "error" >("idle"); const options = useMemo(() => getSpecializationOptions(m), [m]); const specializationByValue = useMemo( () => Object.fromEntries(options.map((item) => [item.value, item.label])), [options], ); const onSubmit = (event: FormEvent) => { event.preventDefault(); if (typeof window === "undefined") { setSubmitState("error"); return; } setSubmitState("sending"); try { const formData = new FormData(event.currentTarget); const name = String(formData.get("name") ?? "").trim(); const phone = String(formData.get("phone") ?? "").trim(); const specializationValue = String( formData.get("specialization") ?? "", ).trim(); const city = String(formData.get("city") ?? "").trim(); const comment = String(formData.get("comment") ?? "").trim(); const specialization = specializationByValue[specializationValue] ?? specializationValue; window.location.href = buildDemoRequestMailto({ name, phone, specialization, city, comment, locale: document.documentElement.lang, pageUrl: window.location.href, }); setSubmitState("success"); } catch { setSubmitState("error"); } }; return (