Daftar Akun Siswa
name.s(e.target.value)} className="w-full p-2 border rounded mb-2" /> kelas.s(e.target.value)} className="w-full p-2 border rounded mb-2" /> sekolah.s(e.target.value)} className="w-full p-2 border rounded mb-4" />Sistem Izin Orang Tua — Prototype
Registrasi siswa, edit profil, buat blanko surat, dan bagikan link view-only.
Daftar / Akun
Akun yang ada
{accounts.length === 0 &&
))}
Belum ada akun. Buat akun baru.
}
{accounts.map((a) => (
{a.name}
{a.kelas} — {a.sekolah}
{!viewingShared && !currentId && (
)}
{!viewingShared && currentId && (
a.id === currentId)}
onUpdate={(patch) => updateProfile(currentId, patch)}
onUpdateFields={(fields) => updateProfileFields(currentId, fields)}
onGenerate={(surat) => {
const acc = accounts.find((a) => a.id === currentId);
const link = generateShareLink(acc, surat);
navigator.clipboard?.writeText(link);
alert("Link dibangun dan disalin ke clipboard:\n" + link);
}}
/>
)}
Pilih akun dari sisi kiri atau buka link share untuk melihat surat.
)}
{viewingShared && (
setName(e.target.value)} className="w-full p-2 border rounded mb-2" />
setKelas(e.target.value)} className="w-full p-2 border rounded mb-2" />
setSekolah(e.target.value)} className="w-full p-2 border rounded mb-2" />
);
}
function AccountEditor({ account, onUpdate, onUpdateFields, onGenerate }) {
const [editing, setEditing] = useState(false);
const [phone, setPhone] = useState(account?.profile?.phone || "");
const [notes, setNotes] = useState(account?.profile?.notes || "");
useEffect(() => {
setPhone(account?.profile?.phone || "");
setNotes(account?.profile?.notes || "");
}, [account]);
const [suratTitle, setSuratTitle] = useState("Surat Izin Tidak Masuk");
const [suratIsi, setSuratIsi] = useState("Dengan hormat,\nSaya orang tua/wali dari ... mohon izin karena ...\nTerima kasih.");
const [suratTanggal, setSuratTanggal] = useState(new Date().toISOString().slice(0,10));
return (
{account.name}
{account.kelas} — {account.sekolah}
setPhone(e.target.value)} className="w-full p-2 border rounded" />
setNotes(e.target.value)} className="w-full p-2 border rounded" />
)}
Buat / Edit Blanko Surat
setSuratTitle(e.target.value)} className="w-full p-2 border rounded mb-2" /> setSuratTanggal(e.target.value)} className="w-full p-2 border rounded mb-2" />{surat.title}
Tanggal: {surat.tanggal}
{surat.isi.replace('...', account.name)}
Tampilan read-only — tidak bisa mengubah isi melalui link ini.
Tidak ada komentar:
Posting Komentar