// ReservePage.jsx — Reservation form page
const ReservePage = ({ onNavigate }) => {
const [step, setStep] = React.useState(1);
const [form, setForm] = React.useState({ service: '', date: '', people: '2', name: '', email: '', notes: '' });
const [submitted, setSubmitted] = React.useState(false);
const services = [
{ id: 'picking', label: 'ブルーベリー摘み取り', price: '¥1,500〜/名', season: '6月〜8月', color: '#1A3A6E' },
{ id: 'workshop', label: '農業・加工体験', price: '¥2,500〜/名', season: '通年(要予約)', color: '#5E9252' },
{ id: 'both', label: '摘み取り+加工体験セット', price: '¥3,500〜/名', season: '6月〜8月', color: '#C9920A' },
];
const field = { fontFamily: "'Noto Sans JP', sans-serif", fontSize: '14px', fontWeight: 300, color: '#1C1410', background: 'white', border: '1.5px solid #E8E0D8', borderRadius: '8px', padding: '10px 14px', width: '100%', outline: 'none', boxSizing: 'border-box' };
const label = { display: 'block', fontFamily: "'Noto Sans JP', sans-serif", fontSize: '12px', fontWeight: 500, color: '#3D3028', marginBottom: '6px', letterSpacing: '0.3px' };
if (submitted) return (
✓
ご予約を受け付けました
確認メールをお送りしております。ご来園をお待ちしております。
);
return (
Reservation
体験を予約する
ご希望の体験・日程・人数をお選びください。
{/* Step indicator */}
{['体験選択', '日程・人数', 'お客様情報'].map((s, i) => (
i ? '#1A3A6E' : '#E8E0D8', marginBottom: '6px', transition: 'background 0.3s' }} />
i ? '#1A3A6E' : '#A89A90', fontWeight: step === i+1 ? 500 : 300 }}>{s}
))}
{step === 1 && (
{services.map(svc => (
setForm({...form, service: svc.id})}
style={{ padding: '18px 20px', background: 'white', borderRadius: '12px', border: `2px solid ${form.service === svc.id ? svc.color : '#E8E0D8'}`, cursor: 'pointer', transition: 'all 0.2s', display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
{svc.price}
{form.service === svc.id &&
選択中 ✓
}
))}
)}
{step === 2 && (
)}
{step === 3 && (
)}
);
};
Object.assign(window, { ReservePage });