"use client"; import Button from "@/_components/Button"; import SocialLinks from "@/_components/SocialLinks"; import contacts from "@/_data/contacts"; import { getSitekey } from "@/_utils/turnstile"; import React, { InputHTMLAttributes, useActionState, useEffect, useMemo, useState } from "react"; import Turnstile from "react-turnstile"; import sendInquiry, { FormStatus } from "../_utils/sendInquiry"; import cls from "./ContactSection.module.scss"; const defaultState: FormStatus = { status: "idle" }; const ContactSection: React.FC = () => { // Added state-backing for the form fields to prevent it from resetting on submit // See https://github.com/facebook/react/issues/29034 // FIXME: Remove form state once #29034 is fixed const [form, setForm] = useState<{ email: string, subject: string, message: string; }>({ email: "", subject: "", message: "" }); const [{ status, message }, formAction, isPending] = useActionState(sendInquiry, defaultState); const { telephone: phone, email, socials } = contacts; const [cfSitekey, setCfSitekey] = useState(null); const sharedProps: InputHTMLAttributes = useMemo(() => ({ required: true, disabled: isPending, readOnly: status === "success", "data-clarity-mask": true }), [status, isPending]); useEffect(() => { getSitekey().then(sitekey => setCfSitekey(sitekey)); }, []); return (

Let's get in touch!

Inquiries, requests or proposals

setForm({ ...form, email: e.target.value }) } autoComplete="email" spellCheck="false" maxLength={ 60 } placeholder="Email" /> setForm({ ...form, subject: e.target.value }) } autoComplete="off" spellCheck="true" maxLength={ 120 } placeholder="Subject" />