Basdat/web/js/components/DirectClaimModal.js
2025-12-20 00:01:08 +07:00

145 lines
6.2 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const DirectClaimModal = ({ isOpen, onClose, onSubmit, loading, lostItem }) => {
if (!isOpen) return null;
return (
<div className="fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-80 backdrop-blur-sm p-4">
<div className="bg-slate-900 rounded-2xl border border-slate-700 shadow-2xl max-w-2xl w-full max-h-[90vh] overflow-y-auto">
<div className="sticky top-0 bg-gradient-to-r from-blue-900 to-slate-900 p-6 border-b border-slate-700 z-10">
<h3 className="text-2xl font-bold text-white flex items-center gap-3">
<span className="text-3xl"></span>
Klaim Langsung ke Pemilik
</h3>
<p className="text-slate-300 mt-2 text-sm">
Formulir ini akan langsung dikirim ke pemilik barang untuk
disetujui/ditolak
</p>
</div>
{lostItem && (
<div className="p-6 bg-blue-900/20 border-b border-slate-700">
<h4 className="text-lg font-bold text-white mb-3">
📦 Barang yang Akan Diklaim:
</h4>
<div className="bg-slate-800/50 rounded-lg p-4 space-y-2 text-sm">
<p className="text-white">
<span className="font-semibold">Nama:</span> {lostItem.name}
</p>
<p className="text-slate-300">
<span className="font-semibold">Kategori:</span>{" "}
{lostItem.category}
</p>
{lostItem.color && (
<p className="text-slate-300">
<span className="font-semibold">Warna:</span> {lostItem.color}
</p>
)}
<p className="text-slate-300">
<span className="font-semibold">Lokasi Hilang:</span>{" "}
{lostItem.location}
</p>
<p className="text-slate-300">
<span className="font-semibold">Deskripsi:</span>{" "}
{lostItem.description}
</p>
</div>
</div>
)}
<form onSubmit={onSubmit} className="p-6 space-y-6">
<div className="bg-orange-900/20 border border-orange-500/30 rounded-lg p-4">
<p className="text-orange-300 text-sm flex items-center gap-2">
<span className="text-xl"></span>
<span>
<strong>Penting:</strong> Pastikan ini adalah barang yang
benar-benar Anda temukan. Pemilik akan langsung menerima
notifikasi.
</span>
</p>
</div>
<div>
<label className="block text-sm font-semibold text-slate-300 mb-2">
📝 Deskripsi Barang yang Anda Temukan *
</label>
<textarea
name="description"
required
rows="5"
placeholder="Jelaskan detail barang yang Anda temukan (warna, kondisi, ciri khusus, dll)"
className="w-full px-4 py-3 bg-slate-800 border border-slate-700 rounded-lg text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-blue-500"
></textarea>
<p className="text-xs text-slate-500 mt-1">
Berikan detail yang cukup agar pemilik yakin ini barangnya
</p>
</div>
<div>
<label className="block text-sm font-semibold text-slate-300 mb-2">
📞 Nomor Kontak Anda *
</label>
<input
type="text"
name="contact"
required
placeholder="Contoh: 081234567890"
className="w-full px-4 py-3 bg-slate-800 border border-slate-700 rounded-lg text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-blue-500"
/>
<p className="text-xs text-slate-500 mt-1">
Pemilik akan menghubungi Anda untuk koordinasi pengambilan
</p>
</div>
<div>
<label className="block text-sm font-semibold text-slate-300 mb-2">
📎 URL Bukti (Opsional)
</label>
<input
type="text"
name="proof_url"
placeholder="https://example.com/foto-barang.jpg"
className="w-full px-4 py-3 bg-slate-800 border border-slate-700 rounded-lg text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-blue-500"
/>
<p className="text-xs text-slate-500 mt-1">
Link foto atau dokumen pendukung (jika ada)
</p>
</div>
<div className="bg-green-900/20 border border-green-500/30 rounded-lg p-4">
<h5 className="font-bold text-green-300 mb-2 flex items-center gap-2">
<span className="text-xl"></span>
Alur Setelah Submit:
</h5>
<ol className="text-sm text-slate-300 space-y-1 list-decimal list-inside">
<li>Notifikasi langsung terkirim ke pemilik</li>
<li>Pemilik akan melihat detail klaim Anda</li>
<li>Pemilik bisa Approve/Reject klaim</li>
<li>Jika Approved, Anda koordinasi pengambilan</li>
<li>Setelah serah terima, pemilik konfirmasi case closed</li>
</ol>
</div>
<div className="flex gap-3 pt-4 border-t border-slate-700">
<button
type="button"
onClick={onClose}
disabled={loading}
className="flex-1 px-6 py-3 bg-slate-800 text-slate-300 rounded-lg font-semibold hover:bg-slate-700 transition disabled:opacity-50"
>
Batal
</button>
<button
type="submit"
disabled={loading}
className="flex-1 px-6 py-3 bg-gradient-to-r from-blue-600 to-blue-700 text-white rounded-lg font-semibold hover:from-blue-700 hover:to-blue-800 transition disabled:opacity-50 shadow-lg shadow-blue-500/30"
>
{loading ? "⏳ Mengirim..." : "⚡ Kirim ke Pemilik"}
</button>
</div>
</form>
</div>
</div>
);
};
window.DirectClaimModal = DirectClaimModal;