// web/js/components/ItemCard.js
const ItemCard = ({
item,
onViewDetail,
onClaim,
onEdit,
onDelete,
onManualClaim,
currentUserId,
showActions = true,
isManager = false,
}) => {
const isOwnItem = currentUserId && item.reporter_id === currentUserId;
// ✅ FIX: Status logic yang lebih akurat
const isCaseClosed = item.status === "case_closed";
const isExpired = item.status === "expired";
const isVerified = item.status === "verified" || item.status === "completed";
const isPendingClaim = item.status === "pending_claim";
const isUnclaimed = item.status === "unclaimed";
// ✅ User hanya bisa claim jika unclaimed DAN bukan barang sendiri
const canClaim = isUnclaimed && !isOwnItem;
// ✅ Edit/Delete logic
let canEditOrDelete = false;
if (!isCaseClosed) {
if (isManager) {
canEditOrDelete = true;
} else {
canEditOrDelete = !isExpired;
}
}
const showEditButton = (isOwnItem || isManager) && canEditOrDelete;
// ✅ Improved status display text
const getStatusText = (status) => {
const statusMap = {
unclaimed: "Belum Diklaim",
pending_claim: "Sedang Diklaim",
verified: "Sudah Diklaim",
completed: "Selesai",
case_closed: "Kasus Ditutup",
expired: "Kadaluarsa",
};
return statusMap[status] || status;
};
return (
{/* Expired Banner */}
{isExpired && (
⚠️ EXPIRED - Manager Only View
)}
{/* Completed Banner - TAMBAHKAN INI */}
{isVerified && (
✅ SUDAH DIKLAIM
)}

onViewDetail && onViewDetail(item)}
onError={(e) =>
(e.target.src = "https://via.placeholder.com/280x200?text=No+Image")
}
/>
{item.name}
📍 {item.location}
📅 {Helpers.formatDate(item.date_found)}
{getStatusText(item.status)} {/* ✅ Better display */}
{isOwnItem && (
Barang Anda
)}
{showActions && (
{/* Detail Button */}
{onViewDetail && (
)}
{/* Manual Claim (Manager) */}
{onManualClaim && isUnclaimed && (
)}
{/* User Claim - ✅ HANYA SHOW JIKA UNCLAIMED */}
{onClaim && canClaim && (
)}
{/* Info untuk status pending */}
{isPendingClaim && !isOwnItem && (
⏳ Sedang diproses
)}
{/* Edit Button */}
{onEdit && showEditButton && (
)}
{/* Delete Button */}
{onDelete && canEditOrDelete && (
)}
)}
);
};