import React, { useState, useEffect } from 'react'; import { User, Users, MapPin, FileText, LayoutDashboard, Settings, LogOut, Clock, CheckCircle, AlertCircle, Upload } from 'lucide-react'; // Ganti URL ini dengan URL Web App dari Google Apps Script Anda const GAS_URL = "https://script.google.com/macros/s/AKfycbz_URL_ANDA_DISINI/exec"; export default function App() { const [view, setView] = useState('home'); // home, user-login, admin-login, form, admin-dashboard const [deadline, setDeadline] = useState(null); useEffect(() => { const storedDeadline = localStorage.getItem('registrationDeadline'); if (storedDeadline) { setDeadline(new Date(storedDeadline)); } else { const defaultDeadline = new Date(); defaultDeadline.setDate(defaultDeadline.getDate() + 30); setDeadline(defaultDeadline); } }, []); const isDeadlinePassed = deadline && new Date() > deadline; return (
{view === 'home' && (

Selamat Datang di Portal Terpadu

Silakan login menggunakan akun siswa untuk memulai pengisian biodata atau login admin untuk memantau data.

{isDeadlinePassed ? (
Deadline Telah Berakhir.
) : ( )}
)} {view === 'user-login' && setView('form')} creds={{u:'siswa', p:'siswa123'}} />} {view === 'admin-login' && setView('admin-dashboard')} creds={{u:'admin', p:'admin123'}} />} {view === 'form' && } {view === 'admin-dashboard' && }
); } function LoginBox({ type, onLogin, creds }) { const [u, setU] = useState(''); const [p, setP] = useState(''); const handle = (e) => { e.preventDefault(); if (u === creds.u && p === creds.p) onLogin(); else alert('Kredensial salah!'); }; return (

Login {type}

setU(e.target.value)} required /> setP(e.target.value)} required />
); } // Komponen Dashboard & Wizard tetap mengikuti spesifikasi awal dengan interval 30 detik... // (Silakan gunakan struktur form 4 halaman dari versi sebelumnya)