// assets/js/pages/admin/tabs/ClaimsTabAdmin.js - WITH FULL CRUD const ClaimsTabAdmin = ({ state, handlers }) => { const { claims, filteredClaims, claimStatusFilter, setClaimStatusFilter, claimSearchTerm, setClaimSearchTerm, showCreateClaimModal, setShowCreateClaimModal, showEditClaimModal, setShowEditClaimModal, } = state; const { handleViewClaimDetail, handleDeleteClaim, handleEditClaimClick, loadClaims, } = handlers; // Filter claims locally React.useEffect(() => { let filtered = claims.filter((claim) => { const matchesSearch = claim.item_name.toLowerCase().includes(claimSearchTerm.toLowerCase()) || claim.user_name.toLowerCase().includes(claimSearchTerm.toLowerCase()); const matchesStatus = !claimStatusFilter || claim.status === claimStatusFilter; return matchesSearch && matchesStatus; }); state.setFilteredClaims(filtered); }, [claimSearchTerm, claimStatusFilter, claims]); return (

Kelola Klaim

setClaimSearchTerm(e.target.value)} className="flex-1 min-w-[200px] px-4 py-2 bg-slate-700 border-2 border-slate-600 rounded-xl text-white placeholder-slate-400 focus:border-blue-500 focus:outline-none" />
{/* Stats Summary */}
{claims.filter((c) => c.status === "pending").length}
Pending
{claims.filter((c) => c.status === "approved").length}
Approved
{claims.filter((c) => c.status === "rejected").length}
Rejected
{filteredClaims.map((claim) => (
{/* Header */}

{claim.item_name}

Pengklaim:{" "} {claim.user_name} {" "} • {claim.contact}

{claim.status}
{/* Match Percentage */} {claim.match_percentage && (
= 70 ? "bg-green-500/10 border border-green-500/30" : "bg-yellow-500/10 border border-yellow-500/30" }`} >
Similarity Match
= 70 ? "text-green-400" : "text-yellow-400" }`} > {claim.match_percentage}%
)} {/* Description */}
Deskripsi Klaim:

{claim.description}

{/* Timestamps */}
📅 Diajukan: {Helpers.formatDateTime(claim.created_at)}
{claim.verified_at && (
✅ Diverifikasi: {Helpers.formatDateTime(claim.verified_at)}
)} {claim.verified_by_name && (
👤 Oleh: {claim.verified_by_name}
)}
{/* Notes */} {claim.notes && (
Catatan Manager:

{claim.notes}

)} {/* Case Closed Info */} {claim.status === "approved" && claim.berita_acara_no && (
📋 Case Closed
No. BA:{" "} {claim.berita_acara_no}
{claim.case_closed_at && (
Ditutup: {Helpers.formatDateTime(claim.case_closed_at)}
)} {claim.case_closed_by_name && (
Oleh: {claim.case_closed_by_name}
)}
{claim.bukti_serah_terima && ( 📄 Lihat Bukti )}
)} {/* Actions */}
{/* Edit button - only for pending claims */} {claim.status === "pending" && ( )} {/* Delete button */}
))}
{filteredClaims.length === 0 && (
🤝

{claimSearchTerm || claimStatusFilter ? "Tidak ada klaim yang sesuai filter" : "Belum ada klaim"}

)}
); };