"use client"; import React from "react"; import type { ContactData, ContactField } from "../types"; interface ContactSectionProps { data: ContactData; } type FormValues = Record; function resolveFieldType(field: ContactField) { if (field.type) return field.type; return "text"; } export function ContactSection({ data }: ContactSectionProps) { const fields = data.form.fields; const [values, setValues] = React.useState(() => fields.reduce((acc, field) => { acc[field.id] = ""; return acc; }, {}) ); const [submitting, setSubmitting] = React.useState(false); const [submitted, setSubmitted] = React.useState(false); const handleChange = (fieldId: string) => (event: React.ChangeEvent) => { setValues((prev) => ({ ...prev, [fieldId]: event.target.value, })); }; const handleSubmit = (event: React.FormEvent) => { event.preventDefault(); setSubmitting(true); setTimeout(() => { setSubmitting(false); setSubmitted(true); }, 800); }; return (

{data.hero?.title ?? "Business Partnership"}

{data.form.title}

{data.form.description && (

{data.form.description}

)} {data.form.note && (

{data.form.note}

)}
{fields.map((field) => { const type = resolveFieldType(field); const value = values[field.id] ?? ""; const hasCounter = typeof field.maxLength === "number" && field.maxLength > 0; const counter = hasCounter ? `${value.length}/${field.maxLength}` : undefined; const baseClassName = "w-full rounded-2xl border border-[#dde5f7] bg-[#f9fbff] px-4 py-3 text-sm text-[#1b2559] placeholder:text-[#9aa7ca] shadow-[0_10px_30px_-20px_rgba(38,71,150,0.45)] transition focus:border-[#4a7dff] focus:bg-white focus:outline-none focus:ring-4 focus:ring-[#4a7dff]/10"; return (
{field.label && ( )}
{type === "textarea" ? (