const ContactPage = ({ lang }) => { const t = (en, id) => lang === "id" ? id : en; const [form, setForm] = React.useState({ name:"", email:"", subject:"", message:"" }); const [status, setStatus] = React.useState("idle"); // idle | sending | success | error const [errorMsg, setErrorMsg] = React.useState(""); const set = (k, v) => setForm(f => ({ ...f, [k]: v })); const submit = async () => { setErrorMsg(""); if (!form.name.trim() || !form.email.trim() || !form.subject.trim() || !form.message.trim()) { setErrorMsg(t("All fields are required.", "Semua kolom wajib diisi.")); setStatus("error"); return; } if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(form.email)) { setErrorMsg(t("Invalid email format.", "Format email tidak valid.")); setStatus("error"); return; } if (form.message.trim().length < 10) { setErrorMsg(t("Message must be at least 10 characters.", "Pesan minimal 10 karakter.")); setStatus("error"); return; } setStatus("sending"); try { const res = await fetch("api/contact.php", { method:"POST", headers:{"Content-Type":"application/json"}, body: JSON.stringify(form) }); const data = await res.json(); if (data.success) { setStatus("success"); setForm({ name:"", email:"", subject:"", message:"" }); } else { setErrorMsg(data.error || t("Failed to send.", "Gagal mengirim pesan.")); setStatus("error"); } } catch { setErrorMsg(t("Connection failed.", "Gagal terhubung ke server.")); setStatus("error"); } }; const inputStyle = { width:"100%", padding:"12px 14px", background:"#fff", border:"1px solid #e8e6e2", fontFamily:"'DM Sans',sans-serif", fontSize:13, color:"#111", outline:"none", boxSizing:"border-box", transition:"border-color 0.2s", borderRadius:2 }; const labelStyle = { fontFamily:"'DM Sans',sans-serif", fontSize:10, letterSpacing:"0.14em", textTransform:"uppercase", color:"#888", display:"block", marginBottom:8, fontWeight:600 }; const eyebrowStyle = { fontFamily:"'DM Sans',sans-serif", fontSize:10, letterSpacing:"0.22em", textTransform:"uppercase", color:"#999", margin:"0 0 16px", fontWeight:600 }; const linkUnderline = { color:"#111", textDecoration:"none", borderBottom:"1px solid transparent", transition:"border-color 0.2s" }; const linkHover = e => e.currentTarget.style.borderBottomColor = "#111"; const linkLeave = e => e.currentTarget.style.borderBottomColor = "transparent"; // ── Inline SVG icons (premium monochrome) ───────────────────── const iconBase = { width:18, height:18, viewBox:"0 0 24 24", fill:"none", stroke:"#888", strokeWidth:1.5, strokeLinecap:"round", strokeLinejoin:"round", style:{ flexShrink:0, marginTop:2 } }; const IconMail = ( ); const IconPhone = ( ); const IconMapPin = ( ); const IconClock = ( ); const InfoRow = ({ icon, label, children }) => (
{icon}

{label}

{children}
); const sosmed = [ { name:"Instagram", url:"https://www.instagram.com/lopobya.id/", handle:"@lopobya.id" }, { name:"Facebook", url:"https://www.facebook.com/profile.php?id=61563034187537", handle:"Lopobya" }, { name:"Shopee", url:"https://shopee.co.id/lopobya", handle:"shopee.co.id/lopobya" }, ]; return (
{/* ── Hero ─────────────────────────────────────────────── */}

LOPOBYA

{t("Get in Touch", "Hubungi Kami")}

{t( "We'd love to hear from you. Send us a message and our team will reply within 1×24 hours on business days.", "Tim kami siap membantu menjawab pertanyaan, masukan, atau kebutuhan kustomisasi. Kami balas dalam 1×24 jam pada hari kerja." )}

{/* ── Main: Info + Form ────────────────────────────────── */}
{/* LEFT — Contact info */}

{t("Reach Us", "Hubungi Kami")}

{t("Our details", "Informasi Kontak")}

lopobya@gmail.com +62 895-1264-5973

{t("Tap to chat directly", "Tekan untuk chat langsung")}

Jl. Raya Petir, Gang Pasundan
RT 01 / RW 02, Kel. Petir, Kec. Dramaga
Kab. Bogor, Jawa Barat 16680

{t("Monday – Saturday", "Senin – Sabtu")} · 09:00 – 18:00 WIB
{t("Sunday closed", "Minggu libur")}

{/* Sosmed list */}

{t("Follow Us", "Ikuti Kami")}

{/* RIGHT — Form */}

{t("Send Message", "Kirim Pesan")}

{t("Have a question?", "Ada pertanyaan?")}

{status === "success" ? (

{t("Thank you", "Terima kasih")}

{t( "Your message has been sent. We will reply within 1×24 hours on business days.", "Pesan kamu sudah terkirim. Kami akan balas dalam 1×24 jam pada hari kerja." )}

) : ( <>
set("name", e.target.value)} placeholder={t("Your name", "Nama kamu")} style={inputStyle} maxLength={100} onFocus={e => e.target.style.borderColor="#111"} onBlur ={e => e.target.style.borderColor="#e8e6e2"} />
set("email", e.target.value)} placeholder="email@example.com" style={inputStyle} maxLength={150} onFocus={e => e.target.style.borderColor="#111"} onBlur ={e => e.target.style.borderColor="#e8e6e2"} />