import { Badge } from "@/components/ui/badge"; import { Zap, Shield, Coins, HelpCircle, Clock, AlertTriangle, Skull } from "lucide-react"; interface SignatureItem { collectionId: string; collectionName: string; id: string; identifier: string; signame: string; sysid: string; system: string; type: string; updated?: string; created?: string; dangerous?: boolean; } interface SignatureListItemProps { signature: SignatureItem; } const SignatureListItem = ({ signature }: SignatureListItemProps) => { const getTypeIcon = (type: string) => { const lowerType = type.toLowerCase(); if (lowerType.includes("combat")) return ; if (lowerType.includes("exploration") || lowerType.includes("relic") || lowerType.includes("data")) return ; if (lowerType.includes("ore") || lowerType.includes("gas")) return ; return ; }; const getTypeColor = (type: string, dangerous: boolean = false) => { if (dangerous) return "bg-red-900/50 text-red-200 border-red-500"; const lowerType = type.toLowerCase(); if (lowerType.includes("combat")) return "bg-red-900/30 text-red-300 border-red-600"; if (lowerType.includes("exploration") || lowerType.includes("relic") || lowerType.includes("data")) return "bg-blue-900/30 text-blue-300 border-blue-600"; if (lowerType.includes("ore") || lowerType.includes("gas")) return "bg-yellow-900/30 text-yellow-300 border-yellow-600"; if (!type || type === "") return "bg-slate-700 text-slate-300 border-slate-600"; return "bg-purple-900/30 text-purple-300 border-purple-600"; }; const isOld = () => { if (!signature.updated) return false; const updatedTime = new Date(signature.updated); if (isNaN(updatedTime.getTime())) return false; // Handle invalid date const now = new Date(); const diffHours = (now.getTime() - updatedTime.getTime()) / (1000 * 60 * 60); return diffHours > 3; }; const formatDate = (dateStr: string | undefined) => { if (!dateStr) return "Unknown"; const date = new Date(dateStr); if (isNaN(date.getTime())) return "Invalid date"; // Handle invalid date const now = new Date(); const diffMs = now.getTime() - date.getTime(); // Handle cases where the time difference is very small or negative if (diffMs < 0) return "Just now"; const diffMinutes = Math.max(0, Math.floor(diffMs / (1000 * 60))); const diffHours = Math.max(0, Math.floor(diffMs / (1000 * 60 * 60))); if (diffMinutes === 0) { return "Just now"; } else if (diffMinutes < 60) { return `${diffMinutes}m ago`; } else if (diffHours < 24) { return `${diffHours}h ago`; } else { return date.toLocaleString(); } }; const oldEntry = isOld(); return (
{/* Type Badge - Most Important */} {signature.dangerous ? : getTypeIcon(signature.type)} {signature.type || "Unknown Type"} {/* Signature Name and ID */}
{signature.id}

{signature.signame || "Unnamed Signature"} {signature.dangerous && ( DANGEROUS )}

{signature.identifier}
{/* Dates */}
{signature.updated && (
{oldEntry && } Updated: {formatDate(signature.updated)}
)} {signature.created && (
Created: {formatDate(signature.created)}
)}
); }; export default SignatureListItem;