/* global React, MJ */ const { useState: useStateK } = React; /* ============================================================ KUESIONER — "Kenali Potensimu, Temukan Arahmu" Student Interest Card · Majelis Kajian Mahasiswa DIPA Opsi & batas pilihan mengikuti dokumen kuesioner resmi. ============================================================ */ const OPT_KEMBANGKAN = ['Akademik & prestasi','Leadership / kepemimpinan','Public speaking','Networking & relasi','Organisasi','Entrepreneurship / bisnis','Digital & media','Pengembangan diri','Kegiatan sosial','Keagamaan / spiritualitas']; const OPT_KEGIATAN = ['Diskusi & sharing','Pelatihan skill','Leadership','Public speaking','Kajian keislaman','Mentoring','Networking','Kegiatan sosial','Kompetisi','Olahraga & kebersamaan']; const OPT_TANTANGAN = ['Akademik','Manajemen waktu','Pergaulan','Media sosial','Menentukan masa depan & karier','Finansial','Kurang percaya diri','Menemukan lingkungan yang positif','Bingung menentukan arah hidup']; const OPT_TERHUBUNG = ['Ya, kabari saya!','Boleh, saya ingin tahu lebih dulu','Belum untuk saat ini']; const API_BASE = (window.MJ_API_BASE || ''); function ChipGroup({ options, value, onChange, max, name }) { const toggle = (opt) => { if (value.includes(opt)) onChange(value.filter(v => v !== opt)); else if (value.length < max) onChange([...value, opt]); }; return (
{options.map(opt => { const on = value.includes(opt); const full = !on && value.length >= max; return ( ); })}
); } function KuesionerSection() { const [step, setStep] = useStateK(0); // 0 = form, 1 = sukses const [busy, setBusy] = useStateK(false); const [err, setErr] = useStateK(''); const [f, setF] = useStateK({ nama: '', prodi: '', angkatan: '', whatsapp: '', instagram: '', kembangkan: [], kembangkan_lainnya: '', kegiatan: [], kegiatan_lainnya: '', tantangan: [], tantangan_lainnya: '', harapan: '', terhubung: '', website: '' }); const up = (k, v) => setF(s => ({ ...s, [k]: v })); const submit = async (e) => { e.preventDefault(); setErr(''); if (f.kembangkan.length === 0 && !f.kembangkan_lainnya.trim()) { return setErr('Bagian B: pilih minimal 1 hal yang ingin kamu kembangkan.'); } if (f.kegiatan.length === 0 && !f.kegiatan_lainnya.trim()) { return setErr('Bagian C: pilih minimal 1 kegiatan yang menarik buatmu.'); } if (f.tantangan.length === 0 && !f.tantangan_lainnya.trim()) { return setErr('Bagian D: pilih minimal 1 tantangan.'); } if (!f.terhubung) { return setErr('Bagian F: pilih salah satu opsi.'); } setBusy(true); try { const r = await fetch(API_BASE + '/api/kuesioner', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(f) }); const j = await r.json().catch(() => ({})); if (!r.ok || !j.ok) throw new Error(j.error || 'Gagal mengirim. Coba lagi.'); setStep(1); window.scrollTo({ top: document.getElementById('kuesioner').offsetTop - 40, behavior: 'smooth' }); } catch (e2) { setErr(e2.message === 'Failed to fetch' ? 'Tidak bisa terhubung ke server. Cek koneksi internetmu lalu coba lagi.' : e2.message); } finally { setBusy(false); } }; return (
04 — Student Interest Card

Kenali potensimu, temukan arahmu.

Masa kuliah adalah kesempatan untuk belajar, berkembang, membangun relasi, menemukan potensi, dan mempersiapkan masa depan. Yuk, kenali minatmu dan hal yang ingin kamu kembangkan selama menjadi mahasiswa. ± 2 menit.

{step === 1 ? (

Terima kasih, {f.nama.split(' ')[0] || 'teman'}! 🙌

Semoga masa kuliahmu bukan hanya tentang mendapatkan gelar, tetapi juga tentang bertumbuh, menemukan potensi, membangun karakter, dan menemukan arah.

Langkah berikutnya
Follow {MJ.instagram} untuk info kajian dan kegiatan MJ yang sesuai minatmu.
) : (
{/* ---- A. DATA DIRI ---- */}
A Data diri
up('nama', e.target.value)} placeholder="Nama sesuai KTM" required maxLength={120} /> up('prodi', e.target.value)} placeholder="mis. Teknik Informatika" required maxLength={120} /> up('angkatan', e.target.value.replace(/\D/g,'').slice(0,4))} placeholder="2026" inputMode="numeric" pattern="\d{4}" required /> up('whatsapp', e.target.value)} placeholder="0812 3456 7890" inputMode="tel" required maxLength={30} /> up('instagram', e.target.value)} placeholder="@username" maxLength={60} />
{/* ---- B. KEMBANGKAN ---- */}
B Apa yang ingin kamu kembangkan?

Pilih maksimal 3 · {f.kembangkan.length}/3 dipilih

up('kembangkan', v)} max={3} name="Yang ingin dikembangkan" /> up('kembangkan_lainnya', e.target.value)} placeholder="Lainnya…" maxLength={120} />
{/* ---- C. KEGIATAN ---- */}
C Kegiatan apa yang paling menarik buatmu?

Pilih maksimal 3 · {f.kegiatan.length}/3 dipilih

up('kegiatan', v)} max={3} name="Kegiatan menarik" /> up('kegiatan_lainnya', e.target.value)} placeholder="Lainnya…" maxLength={120} />
{/* ---- D. TANTANGAN ---- */}
D Menurutmu, apa tantangan terbesar mahasiswa saat ini?

Pilih maksimal 2 · {f.tantangan.length}/2 dipilih

up('tantangan', v)} max={2} name="Tantangan terbesar" /> up('tantangan_lainnya', e.target.value)} placeholder="Lainnya…" maxLength={120} />
{/* ---- E. HARAPAN ---- */}
E Satu hal yang paling ingin kamu dapatkan selama kuliah