/* ════════════════════════════════════════════════ 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 (
Terima kasih telah mendaftarkan {form.name}. Tim kami akan menghubungi Anda via WhatsApp dalam 1×24 jam.