"use client"; import { useState } from "react"; import { Mail, Copy, FileCheck, ShieldCheck, CheckCircle2, Loader2, Send, } from "lucide-react"; import { toast } from "sonner"; import { CONTACT_INFO } from "@/lib/constants/site"; import { PARTNERSHIP_TIERS } from "@/lib/constants/partnership"; interface PartnershipInquiryFormProps { selectedTier: string; setSelectedTier: (tier: string) => void; includeUHNW: boolean; setIncludeUHNW: (val: boolean | ((prev: boolean) => boolean)) => void; } export default function PartnershipInquiryForm({ selectedTier, setSelectedTier, includeUHNW, setIncludeUHNW, }: PartnershipInquiryFormProps) { const [isSubmitting, setIsSubmitting] = useState(false); const [isSubmitted, setIsSubmitted] = useState(false); const [formData, setFormData] = useState({ entityName: "", contactPhone: "", contactEmail: "", vision: "", }); const copyContactEmail = async () => { try { await navigator.clipboard.writeText(CONTACT_INFO.email); toast.success(`Email copied: ${CONTACT_INFO.email}`); } catch { toast.info(`Direct email: ${CONTACT_INFO.email}`); } }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setIsSubmitting(true); try { const res = await fetch("/api/partnership", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ entityName: formData.entityName, contactEmail: formData.contactEmail, contactPhone: formData.contactPhone, partnershipTier: selectedTier, includeUHNW, vision: formData.vision, }), }); const data = await res.json(); if (!res.ok) { throw new Error(data.error || "Failed to submit proposal."); } setIsSubmitted(true); toast.success("Thank you. Your strategic proposal has been received."); } catch (err: any) { console.error("Partnership submission error:", err); toast.error(err.message || "Failed to submit proposal. Please try again."); } finally { setIsSubmitting(false); } }; return (
Confidential Discussion

Initiate Partnership Discussion

Whether you are an established media group, a boutique consulting agency, or a luxury hospitality alliance, we welcome visionary proposals to expand Vietnam Wedding Guide.

Direct Editorial Contact

Legal Agreement Framework

Bilingual English & Vietnamese Platform Licensing Agreement

Asset Verification

Clean ownership record and pre-indexed Google search entity

{isSubmitted ? (

Proposal Received

Thank you for your interest in co-developing Vietnam Wedding Guide. Nhi Võ and our advisory team will review your proposal details and respond within 24–48 hours.

Entity: {formData.entityName}

Tier: {selectedTier}

UHNW Advisory: {includeUHNW ? "Included" : "None"}

) : ( <>

Submit Partnership Proposal

Complete preliminary details to schedule a confidential strategy session.

setFormData({ ...formData, entityName: e.target.value })} placeholder="e.g. Indochine Luxury Media" className="w-full px-4 py-3 rounded-xl bg-stone-800 border border-stone-700 text-white text-sm focus:border-brand-gold focus:outline-none placeholder:text-stone-500" />
setFormData({ ...formData, contactPhone: e.target.value })} placeholder="+84 908 xxx xxx" className="w-full px-4 py-3 rounded-xl bg-stone-800 border border-stone-700 text-white text-sm focus:border-brand-gold focus:outline-none placeholder:text-stone-500" />
setFormData({ ...formData, contactEmail: e.target.value })} placeholder="partner@domain.com" className="w-full px-4 py-3 rounded-xl bg-stone-800 border border-stone-700 text-white text-sm focus:border-brand-gold focus:outline-none placeholder:text-stone-500" />
{/* UHNW Add-on Checkbox */}
setIncludeUHNW(e.target.checked)} className="w-4 h-4 rounded text-brand-gold focus:ring-brand-gold bg-stone-900 border-stone-600 accent-brand-gold cursor-pointer" />
Optional