```react import React, { useState, useEffect, useRef } from 'react'; import { Shield, BookOpen, Award, Users, Phone, MapPin, Mail, CheckCircle, Lock, Unlock, Menu, X, Send, MessageSquare, Search, Calendar, ArrowRight, ChevronRight, Eye, Info, Heart, Plus, Trash2, Edit3, Save, RefreshCw } from 'lucide-react'; // Konfigurasi API Gemini const apiKey = ""; // Disuntikkan otomatis oleh environment saat runtime export default function App() { // --- 1. STATE MANAGEMENT KONTEN EDITABLE (ADMIN CMS) --- const [siteContent, setSiteContent] = useState({ schoolName: "MAS Al Irsyad Muning Baru", fullName: "Madrasah Swasta Aliyah Al Irsyad Muning Baru", announcement: "Penerimaan Santri Baru (PSB) TA 2026/2027 Telah Resmi Dibuka!", heroTitle: "Membentuk Generasi Robbani, Unggul Sains & Teknologi", heroSubtitle: "MAS Al Irsyad Muning Baru mengintegrasikan pendidikan akhlakul karimah kepesantrenan dengan keunggulan akademik sains berstandar nasional dan global.", address: "Jl. KH. Akhmad Dahlan, Desa Muning Baru, Kec. Daha Selatan, Kab. Hulu Sungai Selatan, Kalimantan Selatan", phone: "+62 812-5555-4321", email: "humas@masalirsyadmuningbaru.sch.id", vision: "Terwujudnya generasi muda Muslim beraqidah lurus, berakhlak mulia, berprestasi dalam sains & teknologi, serta siap berkontribusi positif bagi kemaslahatan umat global.", accreditation: "A (Unggul)" }); // State Tab & Menu Navigasi const [activeTab, setActiveTab] = useState('beranda'); const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); // --- 2. STATE OTENTIKASI & PANEL ADMIN --- const [isAdminLoggedIn, setIsAdminLoggedIn] = useState(false); const [adminPasswordInput, setAdminPasswordInput] = useState(''); const [loginError, setLoginError] = useState(''); const [showLoginModal, setShowLoginModal] = useState(false); const [adminTab, setAdminTab] = useState('content'); // 'content' | 'students' | 'messages' // --- 3. STATE DATABASE SISWA (BISA DIEDIT/TAMBAH OLEH ADMIN) --- const [students, setStudents] = useState([ { id: "1", nisn: "1234567890", nama: "Ahmad Fauzi Rahman", kelas: "XII IPA 1", status: "Aktif", tahunMasuk: "2024" }, { id: "2", nisn: "0987654321", nama: "Siti Zulaiha Aminah", kelas: "XI IPS 2", status: "Aktif", tahunMasuk: "2025" }, { id: "3", nisn: "1122334455", nama: "Muhammad Ridho Husaini", kelas: "X Keagamaan", status: "Aktif", tahunMasuk: "2026" } ]); const [newStudent, setNewStudent] = useState({ nisn: '', nama: '', kelas: 'XII IPA 1', status: 'Aktif', tahunMasuk: '2026' }); const [studentError, setStudentError] = useState(''); // --- 4. STATE KOTAK MASUK (PESAN DARI PENGUNJUNG UMUM) --- const [inboxMessages, setInboxMessages] = useState([ { id: "1", nama: "H. Abdullah", email: "abdullah@gmail.com", pesan: "Assalamu'alaikum, apakah untuk pendaftaran santri baru jalur beasiswa tahfidz masih dibuka?", tanggal: "03 Juni 2026" }, { id: "2", nama: "Siti Rahmah", email: "rahmah@outlook.com", pesan: "Mohon info brosur rincian biaya asrama putri MAS Al Irsyad Muning Baru.", tanggal: "02 Juni 2026" } ]); // State Verifikasi NISN oleh Publik const [searchNisn, setSearchNisn] = useState(''); const [verificationResult, setVerificationResult] = useState(null); const [verificationError, setVerificationError] = useState(''); // State Formulir Hubungi Kami const [contactForm, setContactForm] = useState({ nama: '', email: '', pesan: '' }); const [contactStatus, setContactStatus] = useState(null); // --- 5. STATE ASISTEN AI GEMINI --- const [chatOpen, setChatOpen] = useState(false); const [messages, setMessages] = useState([ { role: 'assistant', text: 'Assalamualaikum! Saya Asisten AI MAS Al Irsyad Muning Baru. Ada yang bisa saya bantu terkait informasi pendaftaran, program studi, kegiatan, atau sejarah madrasah kami?' } ]); const [userInput, setUserInput] = useState(''); const [isAiTyping, setIsAiTyping] = useState(false); const chatEndRef = useRef(null); // Scroll otomatis percakapan AI useEffect(() => { if (chatEndRef.current) { chatEndRef.current.scrollIntoView({ behavior: 'smooth' }); } }, [messages, chatOpen]); // --- FORM HANDLER & SANITASI --- // Login Admin const handleAdminLogin = (e) => { e.preventDefault(); // Simulasi password aman if (adminPasswordInput === 'admin123') { setIsAdminLoggedIn(true); setLoginError(''); setAdminPasswordInput(''); setShowLoginModal(false); setActiveTab('admin'); // Langsung buka halaman admin } else { setLoginError('Password salah! Coba gunakan password simulasi: admin123'); } }; // Logout Admin const handleAdminLogout = () => { setIsAdminLoggedIn(false); if (activeTab === 'admin') { setActiveTab('beranda'); } }; // Update Konten Situs oleh Admin const handleUpdateContent = (key, value) => { setSiteContent(prev => ({ ...prev, [key]: value })); }; // Tambah Siswa Baru oleh Admin const handleAddStudent = (e) => { e.preventDefault(); setStudentError(''); if (newStudent.nisn.length !== 10) { setStudentError('NISN harus 10 digit angka!'); return; } if (students.some(s => s.nisn === newStudent.nisn)) { setStudentError('Siswa dengan NISN tersebut sudah terdaftar.'); return; } const createdStudent = { id: Date.now().toString(), ...newStudent }; setStudents(prev => [createdStudent, ...prev]); setNewStudent({ nisn: '', nama: '', kelas: 'XII IPA 1', status: 'Aktif', tahunMasuk: '2026' }); }; // Hapus Siswa oleh Admin const handleDeleteStudent = (id) => { setStudents(prev => prev.filter(s => s.id !== id)); }; // Verifikasi NISN Terproteksi (Sisi Publik) const handleVerifyNisn = (e) => { e.preventDefault(); setVerificationResult(null); setVerificationError(''); const sanitizedInput = searchNisn.replace(/[^0-9]/g, ''); if (sanitizedInput.length !== 10) { setVerificationError('NISN harus terdiri dari 10 digit angka.'); return; } const matchedSiswa = students.find(s => s.nisn === sanitizedInput); if (matchedSiswa) { // Sensor Nama demi Privasi Publik (UU Pelindungan Data Pribadi) const namaAsli = matchedSiswa.nama; const kata = namaAsli.split(' '); const namaDisensor = kata.map(w => { if (w.length <= 2) return w; return w[0] + '*'.repeat(w.length - 2) + w[w.length - 1]; }).join(' '); setVerificationResult({ ...matchedSiswa, nama: namaDisensor }); } else { setVerificationError('Data siswa tidak ditemukan atau tidak dipublikasikan demi perlindungan privasi.'); } }; // Kirim Pesan Kontak Publik (Disimpan ke Inbox Admin secara Real-time) const handleContactSubmit = (e) => { e.preventDefault(); const sanitize = (text) => text.replace(/<[^>]*>/g, '').trim(); const cleanNama = sanitize(contactForm.nama); const cleanEmail = sanitize(contactForm.email); const cleanPesan = sanitize(contactForm.pesan); if (!cleanNama || !cleanEmail || !cleanPesan) { setContactStatus({ type: 'error', text: 'Format isian tidak aman atau mengandung karakter mencurigakan.' }); return; } setContactStatus({ type: 'loading', text: 'Mengirim pesan secara aman...' }); // Tambah pesan ke inbox admin secara instan const tglHariIni = new Date().toLocaleDateString('id-ID', { day: 'numeric', month: 'long', year: 'numeric' }); const newMessage = { id: Date.now().toString(), nama: cleanNama, email: cleanEmail, pesan: cleanPesan, tanggal: tglHariIni }; setTimeout(() => { setInboxMessages(prev => [newMessage, ...prev]); setContactStatus({ type: 'success', text: `Terima kasih Kak ${cleanNama}, pesan Anda berhasil disaring dan dikirimkan secara aman ke tim sekretariat MAS Al Irsyad Muning Baru.` }); setContactForm({ nama: '', email: '', pesan: '' }); }, 1200); }; // Hapus Pesan dari Inbox Admin const handleDeleteMessage = (id) => { setInboxMessages(prev => prev.filter(m => m.id !== id)); }; // Panggilan API Gemini untuk Asisten AI Virtual const fetchGeminiResponse = async (userText, retries = 5, delay = 1000) => { const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-preview-09-2025:generateContent?key=${apiKey}`; const systemPrompt = `Kamu adalah Asisten AI Virtual resmi untuk website Madrasah Swasta Aliyah Al Irsyad Muning Baru (disingkat MAS Al Irsyad Muning Baru) yang berlokasi di Desa Muning Baru, Kecamatan Daha Selatan, Kabupaten Hulu Sungai Selatan, Kalimantan Selatan. Berikan informasi ramah, terstruktur, edukatif, dan bernuansa islami. Gunakan detail sekolah terbaru yang saat ini aktif: - Nama Lengkap: Madrasah Swasta Aliyah Al Irsyad Muning Baru (MAS Al Irsyad Muning Baru) - Akreditasi: ${siteContent.accreditation} - Alamat: ${siteContent.address} - Kontak: Telepon ${siteContent.phone} dan Email ${siteContent.email} - Jurusan Unggulan: MIPA (Sains & Riset), IPS (Sosial & Kewirausahaan), dan Keagamaan Islam (Pendalaman Kitab Kuning, Tahfidz Al-Qur'an, dan Bahasa Arab). - Visi: ${siteContent.vision} - Pengumuman Aktif: ${siteContent.announcement} Jawablah pertanyaan masyarakat umum atau calon wali murid dengan sangat santun, profesional, ringkas, dan mulailah dengan salam islami (Assalamu'alaikum).`; const payload = { contents: [{ parts: [{ text: userText }] }], systemInstruction: { parts: [{ text: systemPrompt }] } }; try { const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload) }); if (!response.ok) throw new Error(`HTTP Error: ${response.status}`); const data = await response.json(); return data.candidates?.[0]?.content?.parts?.[0]?.text || "Maaf, saya sedang mengalami kendala dalam merespon pesan Anda."; } catch (error) { if (retries > 0) { await new Promise(resolve => setTimeout(resolve, delay)); return fetchGeminiResponse(userText, retries - 1, delay * 2); } throw error; } }; // Mengirim Chat ke AI const handleSendChat = async (e) => { e.preventDefault(); if (!userInput.trim()) return; const userText = userInput; setMessages(prev => [...prev, { role: 'user', text: userText }]); setUserInput(''); setIsAiTyping(true); try { const reply = await fetchGeminiResponse(userText); setMessages(prev => [...prev, { role: 'assistant', text: reply }]); } catch (err) { setMessages(prev => [...prev, { role: 'assistant', text: 'Maaf, sistem AI MAS Al Irsyad Muning Baru sedang mengalami gangguan koneksi aman. Silakan coba sesaat lagi.' }]); } finally { setIsAiTyping(false); } }; return (
{/* 1. TOP SECURE BANNER */}
Situs Resmi MAS Al Irsyad Muning Baru | Akses Publik Terproteksi
Admin CMS Enabled {isAdminLoggedIn ? ( Sesi Admin Aktif ) : ( Mode Publik )}
{/* MARQUEE ANNOUNCEMENT (Editable by Admin) */}
PENTING: {siteContent.announcement}
{/* 2. MAIN HEADER & NAVIGATION */}
{/* Logo Brand */}
setActiveTab('beranda')}>
MAS

{siteContent.schoolName}

MUTQA • UNGGUL • MANDIRI

{/* Desktop Nav */} {/* Action Area */}
{/* Admin Lock/Unlock Button */} {!isAdminLoggedIn ? ( ) : ( )}
{/* Mobile Menu */} {isMobileMenuOpen && (
{isAdminLoggedIn && ( )}
)} {/* 3. CORE CONTENTS */}
{/* ==================== TAB 1: BERANDA ==================== */} {activeTab === 'beranda' && (
{/* Hero Section */}
{/* Admin Quick Editor Indicator */} {isAdminLoggedIn && (
Admin Mode: Klik "Panel Admin" untuk merubah teks di bawah ini.
)}
Penerimaan Santri Baru TA 2026/2027 Dibuka

{siteContent.heroTitle}

{siteContent.heroSubtitle}

{/* Hero Side Graphic */}
Akreditasi {siteContent.accreditation}

MAS AL IRSYAD

Muning Baru, Hulu Sungai Selatan

Database Publik Dienkripsi & Aman
{/* Quick Stats */}
{students.length + 120}+
Siswa Terdaftar
97.8%
Lulus SNMPTN/PTKIN
100%
Bebas Biaya Formulir
A (Akr)
Status Kemenag
{/* Core Values Section */}

Mengapa Memilih MAS Al Irsyad Muning Baru?

Fokus utama madrasah adalah memberikan pendidikan yang seimbang antara IPTEK dan IMTAQ demi kesuksesan santri.

Kurikulum Terintegrasi

Memadukan kurikulum Kementerian Agama dengan program riset ilmiah, tahfidz mutqin, serta kajian kitab klasik/pesantren.

Prestasi & Karakter

Siswa dibimbing untuk meraih prestasi olimpiade sains (KSM) lokal maupun nasional dengan pembiasaan adab dan karakter mulia.

Lingkungan Asri & Aman

Terletak di Muning Baru, Daha Selatan dengan suasana yang damai, religius, serta kondusif bagi tumbuh kembang santri.

)} {/* ==================== TAB 2: PROFIL MADRASAH ==================== */} {activeTab === 'profil' && (

Profil MAS Al Irsyad Muning Baru

Madrasah Aliyah kebanggaan masyarakat Daha Selatan yang berkomitmen melahirkan lulusan berdaya saing tinggi.

{/* Visi Misi */}

Visi Madrasah

"{siteContent.vision}"


Strategi Pembelajaran & Misi

  • Menyelenggarakan tata kelola pembelajaran berbasis IT dan literasi digital yang sehat.
  • Mendalami ilmu-ilmu keislaman (*Tafsir*, *Hadits*, *Fiqih*) secara komprehensif.
  • Mempersiapkan kemandirian santri melalui pelatihan kewirausahaan lokal unggulan.
{/* Kepala Madrasah */}
[Foto Kepala MAS]
Sambutan Kepala

"Kami berkomitmen mengelola MAS Al Irsyad Muning Baru sebagai lembaga pendidikan yang sehat, inklusif, dan aman untuk publik. Dengan sistem admin terpusat, kami menjamin penyampaian informasi yang dinamis, akurat, dan terverifikasi secara berkala."

Ustadz Drs. H. Sofyan Tsauri

Kepala Madrasah MAS Al Irsyad

)} {/* ==================== TAB 3: AKADEMIK ==================== */} {activeTab === 'akademik' && (

Pilihan Jurusan & Peminatan

Kurikulum MAS Al Irsyad Muning Baru disusun untuk membekali kecerdasan holistik.

{/* MIPA */}
MIPA

Ilmu Alam Terpadu

Mengasah kemampuan riset, matematika, pemecahan masalah (coding), fisika, kimia, dan biologi berbasis praktikum aman.

Fokus: Sains, IT & Kedokteran
{/* IPS */}
IPS

Ilmu Sosial & Keekonomian

Pembekalan kepemimpinan, sosiologi, tata kelola keuangan syariah, dan dasar hukum tata usaha negara yang etis.

Fokus: Hukum, Sosial & Bisnis Syariah
{/* KEAGAMAAN */}
AGM

Keagamaan Islam (Khusus)

Kajian literatur kitab kuning (Turats), tata bahasa Arab tingkat lanjut (Nahwu/Shorof), serta hafalan Al-Qur'an teruji.

Fokus: Ulama, Da'i & Guru Agama
)} {/* ==================== TAB 4: VERIFIKASI SISWA ==================== */} {activeTab === 'verifikasi' && (

Verifikasi Status Siswa Secara Mandiri

Mencegah penyalahgunaan informasi atau penipuan mengatasnamakan siswa {siteContent.schoolName}. Lakukan pengecekan status keaktifan di bawah ini.

{/* NISN Search Card */}
setSearchNisn(e.target.value.replace(/[^0-9]/g, ''))} className="w-full pl-4 pr-12 py-3 border border-slate-200 rounded-xl focus:ring-2 focus:ring-emerald-500 focus:outline-none font-mono tracking-widest text-sm" required />
{/* Data Privacy Disclaimer */}

Catatan Pelindungan Data: Sesuai dengan UU Perlindungan Data Pribadi, kami tidak menyajikan alamat rumah, nomor HP, atau nama wali secara publik. Admin MAS Al Irsyad mengelola database ini secara berkala melalui Dasbor Terenkripsi.

{/* Search Result Display */} {verificationResult && (
SISWA TERDAFTAR RESMI
Nama Lengkap (Disensor):
{verificationResult.nama}
Kelas:
{verificationResult.kelas}
Status Madrasah:
{verificationResult.status}
Tahun Masuk:
{verificationResult.tahunMasuk}
)} {verificationError && (
{verificationError}
)}
{/* Test Helper */}

Gunakan NISN Demo di bawah:

{students.slice(0, 3).map(student => ( setSearchNisn(student.nisn)} className="cursor-pointer bg-slate-100 hover:bg-emerald-50 hover:text-emerald-800 px-3 py-1.5 rounded text-xs font-mono font-bold border border-slate-200 transition-all" > {student.nisn} ({student.nama.split(' ')[0]}) ))}
)} {/* ==================== TAB 5: KONTAK ==================== */} {activeTab === 'kontak' && (

Hubungi Kami

Jika Anda memiliki kritik, saran, atau pertanyaan kemitraan, hubungi kesekretariatan kami.

{/* Info Details */}

Kontak Resmi

{siteContent.address}
{siteContent.phone} (Hotline Humas)
{siteContent.email}
{/* Sanitized Message Form */}

Hubungi Kesekretariatan

Pesan dikirim terenkripsi langsung ke Dasbor Admin Madrasah untuk segera ditindaklanjuti.

setContactForm({...contactForm, nama: e.target.value})} className="w-full px-4 py-2 border border-slate-200 rounded-lg text-sm focus:ring-1 focus:ring-emerald-500 focus:outline-none" placeholder="Contoh: Muhammad" required />
setContactForm({...contactForm, email: e.target.value})} className="w-full px-4 py-2 border border-slate-200 rounded-lg text-sm focus:ring-1 focus:ring-emerald-500 focus:outline-none" placeholder="Contoh: muhammad@mail.com" required />
{contactStatus && (
{contactStatus.text}
)}
)} {/* ==================== TAB 6: ADMIN EDITABLE CMS DASHBOARD ==================== */} {activeTab === 'admin' && isAdminLoggedIn && (
{/* Admin Header */}
Sesi Terverifikasi DIP_SEC_SECURE_256

Dasbor Admin MAS Al Irsyad

Kelola konten website publik secara langsung tanpa gangguan.

{/* Sub-nav Admin */}
{/* Admin Tab 1: Edit Konten Website */} {adminTab === 'content' && (

Modifikasi Teks Website Publik

{/* Edit Nama Sekolah */}
handleUpdateContent('schoolName', e.target.value)} className="w-full px-3 py-2 border border-slate-200 rounded-lg text-xs font-semibold focus:outline-none focus:ring-1 focus:ring-emerald-500" />
{/* Edit Nama Lengkap */}
handleUpdateContent('fullName', e.target.value)} className="w-full px-3 py-2 border border-slate-200 rounded-lg text-xs font-semibold focus:outline-none focus:ring-1 focus:ring-emerald-500" />
{/* Edit Pengumuman Marquee */}
handleUpdateContent('announcement', e.target.value)} className="w-full px-3 py-2 border border-slate-200 rounded-lg text-xs font-semibold focus:outline-none focus:ring-1 focus:ring-emerald-500" />
{/* Edit Hero Title */}
handleUpdateContent('heroTitle', e.target.value)} className="w-full px-3 py-2 border border-slate-200 rounded-lg text-xs font-semibold focus:outline-none focus:ring-1 focus:ring-emerald-500" />
{/* Edit Hero Subtitle */}
{/* Edit Alamat */}
handleUpdateContent('address', e.target.value)} className="w-full px-3 py-2 border border-slate-200 rounded-lg text-xs font-semibold focus:outline-none focus:ring-1 focus:ring-emerald-500" />
{/* Edit Telepon */}
handleUpdateContent('phone', e.target.value)} className="w-full px-3 py-2 border border-slate-200 rounded-lg text-xs font-semibold focus:outline-none focus:ring-1 focus:ring-emerald-500" />
{/* Edit Email */}
handleUpdateContent('email', e.target.value)} className="w-full px-3 py-2 border border-slate-200 rounded-lg text-xs font-semibold focus:outline-none focus:ring-1 focus:ring-emerald-500" />
Seluruh perubahan di atas langsung diperbarui secara instan pada beranda web serta basis data bot AI.
)} {/* Admin Tab 2: Manajemen Siswa */} {adminTab === 'students' && (
{/* Form Tambah Siswa */}

Pendaftaran Siswa Baru (Database)

setNewStudent({...newStudent, nisn: e.target.value.replace(/[^0-9]/g, '')})} className="w-full px-3 py-2 border border-slate-200 rounded-lg text-xs focus:outline-none focus:ring-1 focus:ring-emerald-500" required />
setNewStudent({...newStudent, nama: e.target.value})} className="w-full px-3 py-2 border border-slate-200 rounded-lg text-xs focus:outline-none focus:ring-1 focus:ring-emerald-500" required />
setNewStudent({...newStudent, tahunMasuk: e.target.value})} className="w-full px-3 py-2 border border-slate-200 rounded-lg text-xs focus:outline-none focus:ring-1 focus:ring-emerald-500" required />
{studentError && (
{studentError}
)}
{/* Daftar Siswa Terdaftar */}

Daftar Aktif Siswa Terdaftar ({students.length})

{students.map((student) => ( ))}
NISN Nama Lengkap Kelas Tahun Aksi
{student.nisn} {student.nama} {student.kelas} {student.tahunMasuk}
)} {/* Admin Tab 3: Pesan Masuk */} {adminTab === 'messages' && (

Kotak Masuk Pesan Elektronik ({inboxMessages.length})

{inboxMessages.length === 0 ? (
Belum ada pesan masuk dari pengunjung umum.
) : (
{inboxMessages.map((msg) => (
{msg.nama} ({msg.email}) {msg.tanggal}

"{msg.pesan}"

))}
)}
)}
)}
{/* 4. MODAL LOGIN ADMIN */} {showLoginModal && (

Login Admin MAS Al Irsyad

setAdminPasswordInput(e.target.value)} className="w-full px-4 py-2.5 border border-slate-200 rounded-xl text-xs focus:ring-1 focus:ring-emerald-500 focus:outline-none" required />
{loginError && (
{loginError}
)}
)} {/* 5. FLOATING AI CHATBOT (GEMINI) */}
{!chatOpen ? ( ) : (
{/* Header Chat */}
AI

Asisten Virtual MAS

Mode Enkripsi Aktif
{/* Chat Messages */}
{messages.map((msg, index) => (
{msg.text}
))} {isAiTyping && (
)}
{/* Chat Input */}
setUserInput(e.target.value)} className="flex-grow px-3 py-2 border border-slate-200 rounded-lg focus:outline-none focus:ring-1 focus:ring-emerald-500 text-xs" />
)}
{/* 6. FOOTER */}
); } ```