/* ── Beranda: fokus pada ARTIKEL (ramping, foto asli) ── */ function HomePage({ navigate, openArticle }) { const M = window.MQA || {}; const [articles, setArticles] = useState(M.articles || []); const [cat, setCat] = useState('Semua'); const [campaigns, setCampaigns] = useState([]); const [donStats, setDonStats] = useState(null); const [banners, setBanners] = useState([]); const [programs, setPrograms] = useState(M.programs || []); const [kegiatan, setKegiatan] = useState(M.kegiatan || []); const [buku, setBuku] = useState((M.buku || [])); useEffect(() => { api.get('articles.php?action=list').then(r => { if (r.ok && Array.isArray(r.articles) && r.articles.length) setArticles(r.articles); }); api.get('donations.php?action=list_campaigns').then(r => { if (r.ok && r.campaigns) setCampaigns(r.campaigns); }); api.get('donations.php?action=public_stats').then(r => { if (r.ok) setDonStats(r); }); api.get('content.php?action=get_section§ion=banners').then(r => { if (r.ok && r.data && Array.isArray(r.data.items)) setBanners(r.data.items); }); api.get('content.php?action=get_section§ion=programs').then(r => { if (r.ok && r.data && Array.isArray(r.data.items) && r.data.items.length) setPrograms(r.data.items); }); api.get('content.php?action=get_section§ion=kegiatan').then(r => { if (r.ok && r.data && Array.isArray(r.data.items) && r.data.items.length) setKegiatan(r.data.items); }); api.get('content.php?action=get_section§ion=buku').then(r => { if (r.ok && r.data && Array.isArray(r.data.items) && r.data.items.length) setBuku(r.data.items); }); }, []); const cats = ['Semua', ...new Set([...Object.keys(window.CATS), ...articles.map(a => a.category).filter(Boolean)])]; const featured = articles[0]; const recent = articles.slice(0, 4); const filtered = cat === 'Semua' ? articles : articles.filter(a => a.category === cat); // Paling banyak dibaca (berdasar jumlah views, fallback urutan asli) const popular = [...articles].sort((a, b) => (b.views || 0) - (a.views || 0)).slice(0, 5); // Program donasi aktif untuk ditonjolkan di beranda (mini-dashboard) const activeCampaigns = campaigns .filter(c => !(c.urgensi === 'selesai' || c.status === 'arsip' || c.status === 'selesai')) .slice(0, 3); // ── Slide banner: pakai banner dari dashboard bila ada, jika tidak auto dari konten ── const featuredPrograms = programs.filter(p => p.featured).slice(0, 3); const featuredKegiatan = kegiatan.filter(k => k.featured).slice(0, 3); const prog = (M.programs || [])[0]; const keg = (M.kegiatan || [])[0]; const SCRIM = { '#1F6B47': ['rgba(15,61,39,.86)', 'rgba(15,61,39,.35)'], '#1B2F6E': ['rgba(14,26,69,.86)', 'rgba(14,26,69,.4)'], '#C26F12': ['rgba(150,90,15,.85)', 'rgba(150,90,15,.4)'], '#8B5A2B': ['rgba(90,56,24,.84)', 'rgba(90,56,24,.38)'] }; let slides = []; // 1) Banner kustom dari menu "Banner Beranda" banners.forEach(b => { const sc = SCRIM[b.accent] || SCRIM['#1B2F6E']; slides.push({ tag: b.tag || '', image: b.image_url, overlay: sc[0], overlay2: sc[1], accent: b.accent || '#1B2F6E', title: b.title, subtitle: b.subtitle, cta: b.cta_label || 'Selengkapnya', onClick: () => navigate(b.cta_target || 'articles') }); }); // 2) Item yang ditandai "Jadikan Banner" (banner_home) dari konten articles.filter(a => a.banner_home).forEach(a => { const na = normArticle(a); slides.push({ tag: 'Artikel', image: a.cover_url, overlay: SCRIM['#1F6B47'][0], overlay2: SCRIM['#1F6B47'][1], accent: '#1F6B47', title: a.title, subtitle: a.excerpt, cta: 'Baca Selengkapnya', onClick: () => openArticle(a) }); }); programs.filter(p => p.banner_home).forEach(p => slides.push({ tag: 'Program', image: p.banner_url || 'img/grup-besar.jpg', overlay: SCRIM['#1B2F6E'][0], overlay2: SCRIM['#1B2F6E'][1], accent: '#1B2F6E', title: p.name, subtitle: p.desc, cta: 'Daftar Sekarang', onClick: () => navigate('register') })); kegiatan.filter(k => k.banner_home).forEach(k => slides.push({ tag: 'Kegiatan', image: k.img_url || 'img/grup-santri.jpg', overlay: SCRIM['#8B5A2B'][0], overlay2: SCRIM['#8B5A2B'][1], accent: '#8B5A2B', title: k.title, subtitle: k.desc, cta: 'Lihat Kegiatan', onClick: () => navigate('kegiatan') })); campaigns.filter(c => c.banner_home).forEach(c => slides.push({ tag: 'Donasi', image: c.cover_url || c.image_url || 'img/gedung.jpg', overlay: SCRIM['#C26F12'][0], overlay2: SCRIM['#C26F12'][1], accent: '#C26F12', title: c.title, subtitle: c.deskripsi || c.description, cta: 'Donasi Sekarang', onClick: () => { window.__openDonasiForm = c; navigate('donasi'); } })); buku.filter(b => b.banner_home).forEach(b => slides.push({ tag: 'Toko Buku', image: b.cover_url, overlay: SCRIM['#1B2F6E'][0], overlay2: SCRIM['#1B2F6E'][1], accent: '#1B2F6E', title: b.title, subtitle: b.desc, cta: 'Lihat Buku', onClick: () => { window.__openBuku = b; navigate('toko'); } })); // 3) Fallback otomatis bila admin belum menandai apa pun if (slides.length === 0) { if (featured) slides.push({ tag: 'Artikel Pilihan', image: featured.cover_url, overlay: 'rgba(15,61,39,.86)', overlay2: 'rgba(15,61,39,.35)', accent: '#1F6B47', title: featured.title, subtitle: featured.excerpt, cta: 'Baca Selengkapnya', onClick: () => openArticle(featured) }); if (prog) slides.push({ tag: 'Program', image: 'img/grup-besar.jpg', overlay: 'rgba(14,26,69,.86)', overlay2: 'rgba(14,26,69,.4)', accent: '#1B2F6E', title: prog.name, subtitle: prog.desc, cta: 'Daftar Sekarang', onClick: () => navigate('register') }); if (keg) slides.push({ tag: 'Kegiatan', image: 'img/grup-santri.jpg', overlay: 'rgba(90,56,24,.84)', overlay2: 'rgba(90,56,24,.38)', accent: '#8B5A2B', title: keg.title, subtitle: keg.desc, cta: 'Lihat Kegiatan', onClick: () => navigate('kegiatan') }); slides.push({ tag: 'Donasi', image: 'img/gedung.jpg', overlay: 'rgba(150,90,15,.85)', overlay2: 'rgba(150,90,15,.4)', accent: '#C26F12', title: 'Wujudkan Amal Jariyah Bersama Kami', subtitle: 'Dukung pendidikan santri yatim & dhuafa melalui sedekah dan wakaf Anda.', cta: 'Donasi Sekarang', onClick: () => { window.__openDonasiForm = true; navigate('donasi'); } }); } return (
{/* ── BANNER SLIDESHOW (hero tunggal) ── */}
مَرْكَزُ قُرَّةِ أَعْيُن
·
Rumah Ilmu & Kajian Al-Qur'an
{/* ── ARTIKEL TERBARU (strip ringkas) ── */}
Terbaru
{recent.map(a => openArticle(a)} />)}
{/* ── PALING BANYAK DIBACA ── */}
Paling Banyak Dibaca

Artikel Populer

Bacaan yang paling sering dibuka oleh pengunjung.

    {popular.map((a, i) => { const na = normArticle(a); const sc = catStyle(a.category); return (
  1. ); })}
{/* ── KUMPULAN ARTIKEL (konten utama, dengan filter) ── */}
Kumpulan Artikel

Jelajahi Berdasarkan Topik

{cats.map(c => { const active = c === cat; const s = c === 'Semua' ? { color: 'var(--ink-deep)' } : catStyle(c); return ( ); })}
{filtered.map(a => openArticle(a)} />)}
{filtered.length === 0 &&
Belum ada artikel di kategori ini.
}
{/* ── PROGRAM DONASI (mini-dashboard) ── */} {activeCampaigns.length > 0 && (
Program Donasi

Salurkan Amal Jariyah

{donStats && (
{fmtRpShort(donStats.total_masuk || 0)}
terkumpul · {donStats.total_donatur || 0} donatur
)}
{activeCampaigns.map(c => { const collected = c.terkumpul ?? c.collected ?? 0; const target = c.target ?? 0; const cover = c.cover_url || c.image_url; const urgent = c.urgensi === 'tinggi' || c.urgent; const pct = c.percent != null ? c.percent : (target ? Math.min(100, Math.round((collected / target) * 100)) : 0); return (
navigate('donasi')} style={{ cursor: 'pointer', background: 'var(--surface)', borderRadius: 16, overflow: 'hidden', border: '1px solid var(--border-soft)', boxShadow: 'var(--shadow-warm-sm, 0 4px 14px rgba(120,80,30,.06))', display: 'flex', flexDirection: 'column' }}>
{cover ? : 🤲} {urgent ? MENDESAK : null}

{c.title}

{fmtRp(collected)} {pct}%
); })}
)} {/* ── PROGRAM UNGGULAN ── */} {featuredPrograms.length > 0 && (
Program Unggulan

Belajar Bersama Kami

{featuredPrograms.map(p => (
navigate('programs')} style={{ cursor: 'pointer', background: 'var(--surface)', borderRadius: 16, padding: '22px 22px', border: '1px solid var(--border-soft)', boxShadow: 'var(--shadow-warm-sm, 0 4px 14px rgba(120,80,30,.06))' }}>
{p.icon || '📗'}

{p.name}

{p.desc}

{p.schedule &&
🕐 {p.schedule}
}
))}
)} {/* ── KEGIATAN UNGGULAN ── */} {featuredKegiatan.length > 0 && (
Kegiatan Unggulan

Agenda & Kajian

{featuredKegiatan.map(k => (
navigate('kegiatan')} style={{ cursor: 'pointer', background: 'var(--surface)', borderRadius: 16, overflow: 'hidden', border: '1px solid var(--border-soft)', boxShadow: 'var(--shadow-warm-sm, 0 4px 14px rgba(120,80,30,.06))', display: 'flex', flexDirection: 'column' }}>
{k.img_url ? : } {k.date && {k.date}}

{k.title}

{k.desc}

))}
)}
); } window.HomePage = HomePage;