/* v4 シェル:左パネル / 右ナビ(スクロールスパイ)/ 中央 / モバイルCTA */
// ===== フォーム送信設定(ここを変更すれば差し替え可能)=====
const FORM_TO = "nakamura@nts-kyushu.co.jp"; // 申込みメールの主たる届け先
const FORM_CC = "satsuki@nts-kyushu.co.jp,haruhisa.nts@icloud.com,otoiawase@ritou-hikkoshi.com,info@nts-kyushu.co.jp,keiri@nts-kyushu.co.jp,yamaguchitakuya0112@gmail.com"; // 同報先
const FORM_ACTION = "https://formsubmit.co/" + FORM_TO; // FormSubmit エンドポイント
const THANKS_URL = "https://ritou-hikkoshi.com/thanks/"; // 送信後の遷移先
const AUTO_REPLY =
"この度は中村トランスポートへお問い合わせをいただき、誠にありがとうございます。\n\n" +
"お送りいただいた内容を確認のうえ、担当者より24時間以内にご連絡を差し上げます。\n" +
"お急ぎの場合は、お電話(0957-53-5656/年中無休・24時間受付)でも承っております。\n\n" +
"※本メールは自動送信です。ご不明な点はお電話にてお問い合わせください。\n\n" +
"中村トランスポート株式会社\n遺品整理・特殊清掃・生前整理";
function ContactForm() {
const [s, setS] = React.useState({ name: "", email: "", phone: "", address: "", layout: "", message: "" });
const [errors, setErrors] = React.useState({});
const up = (k) => (e) => {setS((p) => ({ ...p, [k]: e.target.value }));if (errors[k]) setErrors((er) => ({ ...er, [k]: null }));};
const submit = (e) => {
const er = {};
if (!s.name.trim()) er.name = "お名前をご入力ください";
if (!s.phone.trim()) er.phone = "お電話番号をご入力ください";else
if (!/^[\d\-+() ]{7,}$/.test(s.phone.trim())) er.phone = "正しい電話番号をご入力ください";
if (s.email.trim() && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(s.email.trim())) er.email = "正しいメールアドレスをご入力ください";
if (Object.keys(er).length > 0) {
e.preventDefault(); // エラーがあれば送信中止
setErrors(er);
return;
}
// 問題なければそのまま FormSubmit へ送信 → サンクスページへ遷移
};
const inp = (name) => ({
width: "100%", padding: "14px 14px", fontSize: 16, borderRadius: "var(--r-sm)",
border: `1.5px solid ${errors[name] ? "var(--coral)" : "var(--line)"}`,
background: "var(--surface-2)", fontFamily: "inherit", color: "var(--ink)", minHeight: 52
});
const fieldWrap = { marginBottom: 16 };
const labelStyle = { display: "flex", alignItems: "center", gap: 8, fontSize: 14, fontWeight: 700, marginBottom: 7 };
const reqBadge = { background: "var(--coral)", color: "#fff", fontSize: 10, padding: "2px 7px", borderRadius: 4 };
const optBadge = { background: "var(--surface-3)", color: "var(--ink-mute)", fontSize: 10, padding: "2px 7px", borderRadius: 4 };
const errStyle = { fontSize: 12, color: "var(--coral)", marginTop: 4 };
return (
「金額だけ知りたい」でも大丈夫。無料相談・無料お見積り
お電話・LINE・フォームのご希望の方法で、お気軽に。