/* ════════════════════════════════════════════════ Halaman Pendaftaran Santri — form multi-langkah ════════════════════════════════════════════════ */ function RegisterPage({ navigate }) { const M = window.MQA || {}; const [programs, setPrograms] = useState(M.programs || []); useEffect(() => { api.get('content.php?action=get_section§ion=programs').then(r => { const arr = (r.ok && r.data && Array.isArray(r.data.items)) ? r.data.items : null; if (arr && arr.length) setPrograms(arr); }).catch(() => {}); }, []); const [step, setStep] = useState(1); const [done, setDone] = useState(false); const [sending, setSending] = useState(false); const [form, setForm] = useState({ name: '', usia: '', gender: 'Ikhwan', program: programs[0] ? programs[0].name : '', level: '', parent_name: '', phone: '', email: '', address: '', notes: '', }); const upd = (k, v) => setForm(f => ({ ...f, [k]: v })); const steps = ['Data Santri', 'Pilih Program', 'Kontak']; const canNext = step === 1 ? (form.name && form.usia) : step === 2 ? form.program : true; const selProgram = programs.find(p => p.name === form.program); const levels = selProgram ? (Array.isArray(selProgram.levels) ? selProgram.levels : []) : []; // Saat program dari dashboard termuat, pastikan pilihan default valid useEffect(() => { if (programs.length && !programs.some(p => p.name === form.program)) { setForm(f => ({ ...f, program: programs[0].name, level: '' })); } }, [programs]); const submit = async () => { if (!form.parent_name || !form.phone) return; setSending(true); try { await api.post('registrations.php?action=submit', form); setDone(true); } finally { setSending(false); } }; if (done) { return (
🎉
Pendaftaran Terkirim!

Terima kasih telah mendaftarkan {form.name}. Tim kami akan menghubungi Anda via WhatsApp dalam 1×24 jam.

); } return (
{/* Stepper */}
{steps.map((s, i) => { const n = i + 1, active = n === step, doneStep = n < step; return (
{doneStep ? '✓' : n}
{s}
{i < steps.length - 1 &&
} ); })}
{step === 1 && ( <> upd('name', e.target.value)} placeholder="Nama santri" style={inp} /> upd('usia', e.target.value)} placeholder="contoh: 9 tahun / Dewasa" style={inp} />
{['Ikhwan', 'Akhwat'].map(g => ( ))}
)} {step === 2 && ( <>
{programs.map(p => ( ))}
{levels.length > 0 && ( )} )} {step === 3 && ( <> upd('parent_name', e.target.value)} placeholder="Nama wali" style={inp} /> upd('phone', e.target.value.replace(/[^\d+]/g, ''))} placeholder="08xxxxxxxxxx" style={inp} /> upd('email', e.target.value)} placeholder="email@contoh.com" style={inp} />