// sc-contact.jsx — 無料トライアル / お問い合わせ (Formspree) // ⚠️ Formspree の送信先URLをここで設定してください // https://formspree.io で登録後、YOUR_FORM_ID を実際のIDに差し替え const FORMSPREE_URL = "https://formspree.io/f/xojyrzyl"; function ContactPage({ navigate }) { const PageHero = () => (

Free Trial

1週間
無料トライアル

まずは体感してください。
フォームに入力いただくと、担当コーチよりご連絡します。

); /* ── Contact Form ── */ const ContactForm = () => { const [status, setStatus] = React.useState("idle"); // idle | sending | success | error const [form, setForm] = React.useState({ name: "", email: "", phone: "", business: "", _honeypot: "", // ボット対策:人間は入力しない隠しフィールド }); const submitTime = React.useRef(Date.now()); const [errors, setErrors] = React.useState({}); const validate = () => { const e = {}; if (!form.name.trim()) e.name = "お名前を入力してください"; if (!form.email.trim()) e.email = "メールアドレスを入力してください"; else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(form.email)) e.email = "正しいメールアドレスを入力してください"; if (!form.phone.trim()) e.phone = "電話番号を入力してください"; if (!form.business) e.business = "事業の状況を選択してください"; return e; }; const handleChange = (k, v) => { setForm(f => ({ ...f, [k]: v })); if (errors[k]) setErrors(e => ({ ...e, [k]: undefined })); }; const handleSubmit = async (ev) => { ev.preventDefault(); const e = validate(); if (Object.keys(e).length > 0) { setErrors(e); return; } // ハニーポット:隠しフィールドが埋まっていたらボットとみなす if (form._honeypot) { setStatus("success"); return; } // 送信が速すぎる場合もボットとみなす(3秒未満) if (Date.now() - submitTime.current < 3000) { setStatus("success"); return; } setStatus("sending"); try { const res = await fetch(FORMSPREE_URL, { method: "POST", headers: { "Content-Type": "application/json", "Accept": "application/json" }, body: JSON.stringify({ name: form.name, email: form.email, phone: form.phone || "(未入力)", business: form.business, }), }); if (res.ok) setStatus("success"); else setStatus("error"); } catch { setStatus("error"); } }; const inputStyle = (hasErr) => ({ width: "100%", fontFamily: "var(--font-sans)", fontSize: "15px", color: "var(--text)", background: "#fff", border: `1.5px solid ${hasErr ? "#e05252" : "var(--border)"}`, borderRadius: "2px", padding: "14px 16px", outline: "none", transition: "border-color 0.2s", }); const labelStyle = { fontFamily: "var(--font-sans)", fontSize: "13px", fontWeight: 500, color: "var(--text)", marginBottom: "8px", display: "flex", alignItems: "center", gap: "6px", }; const Required = () => ( 必須 ); const Optional = () => ( 任意 ); const ErrorMsg = ({ msg }) => msg ? (

⚠ {msg}

) : null; const businessOptions = [ { value: "before", label: "起業前・準備中" }, { value: "freelance", label: "起業済み・個人事業主" }, { value: "corporation", label: "法人経営者" }, ]; if (status === "success") { return (

Sent Successfully

送信が完了しました

ご連絡ありがとうございます。
担当コーチより、通常1〜2営業日以内にご連絡いたします。
しばらくお待ちください。

); } return (
{/* Left: explanation */}

Apply Now

まずは、
無料で試してください。

フォームを送信いただくと、担当コーチより通常1〜2営業日以内にご連絡いたします。初回セッションで、現在の状況と課題をお伺いします。

{[ { icon: "📋", text: "タスクの洗い出しとアクションプランを初回で設定" }, { icon: "📱", text: "毎日の進捗確認メッセージでサボれない環境を構築" }, { icon: "🎯", text: "週次オンラインセッションで方向性を常にアップデート" }, ].map((item, i) => (
{item.icon}

{item.text}

))}

LINEでのご連絡・ご相談も歓迎しています。
公式LINEはこちら →

{/* Right: form */}

Contact Form

{/* ハニーポット:CSSで完全非表示 — ボットのみ入力する */} {/* お名前 */}
handleChange("name", e.target.value)} style={inputStyle(errors.name)} onFocus={e => e.target.style.borderColor = "var(--accent)"} onBlur={e => e.target.style.borderColor = errors.name ? "#e05252" : "var(--border)"} />
{/* メール */}
handleChange("email", e.target.value)} style={inputStyle(errors.email)} onFocus={e => e.target.style.borderColor = "var(--accent)"} onBlur={e => e.target.style.borderColor = errors.email ? "#e05252" : "var(--border)"} />
{/* 電話番号 */}
handleChange("phone", e.target.value)} style={inputStyle(errors.phone)} onFocus={e => e.target.style.borderColor = "var(--accent)"} onFocus={e => e.target.style.borderColor = "var(--accent)"} onBlur={e => e.target.style.borderColor = errors.phone ? "#e05252" : "var(--border)"} />

日程調整のご連絡に使用します

{/* 事業の状況 */}
{businessOptions.map(opt => (
{/* Submit */} {status === "error" && (

送信に失敗しました。時間をおいて再度お試しください。

)}

送信後、1〜2営業日以内にご連絡します。
プライバシーポリシーに同意の上、送信してください。

); }; const FAQ = () => { const [open, setOpen] = React.useState(null); const faqs = [ { q: "無料トライアルに費用はかかりますか?", a: "1週間の無料トライアルは完全無料です。費用は一切かかりません。トライアル終了後、継続をご希望の場合のみ、別途ご案内いたします。" }, { q: "どのような方が対象ですか?", a: "起業家、経営者、個人事業主、副業で事業を進めている方など、ビジネスを前進させたい方であれば幅広く対応しています。事業規模は問いません。" }, { q: "連絡はメール以外でも可能ですか?", a: "メール、LINE、電話など、ご都合に合わせた方法でご対応しています。ご希望の連絡方法をお知らせください。" }, { q: "オンラインセッションの所要時間は?", a: "1回あたり60〜90分程度を目安にしています。状況に応じて柔軟に対応しています。" }, { q: "IT・パソコンが苦手でも大丈夫ですか?", a: "もちろんです。ツールの使い方から丁寧にサポートします。ITが苦手な方でも安心してご利用いただけます。" }, ]; return (
{faqs.map((f, i) => (

A.{f.a}

))}
); }; return (
); } window.ContactPage = ContactPage;