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 }) => (
{label}
LOPOBYA
{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." )}
{t("Reach Us", "Hubungi Kami")}
{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")}
{t("Send Message", "Kirim Pesan")}
{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." )}
{errorMsg}
{t( "By sending this form, you agree to our privacy policy.", "Dengan mengirim form ini, kamu menyetujui kebijakan privasi kami." )}
> )}{t("Find Us", "Temukan Kami")}