diff --git a/src/components/SignatureCategories.tsx b/src/components/SignatureCategories.tsx index 7ec57dc..5ee18ce 100644 --- a/src/components/SignatureCategories.tsx +++ b/src/components/SignatureCategories.tsx @@ -2,7 +2,7 @@ import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@/components/ui/collapsible"; -import { ChevronDown, ChevronRight, Zap, Shield, Coins, HelpCircle, Pickaxe, Fuel } from "lucide-react"; +import { ChevronDown, ChevronRight, Zap, Shield, Coins, HelpCircle, Pickaxe, Fuel, Gauge } from "lucide-react"; import { SignatureListItem } from "@/components/SignatureListItem"; import { SignatureCategory } from "@/hooks/useSignatureCategories"; @@ -11,14 +11,14 @@ interface SignatureCategoriesProps { onToggleCategory: (categoryId: string) => void; } -const getCategoryIcon = (categoryId: string) => { +export const getCategoryIcon = (categoryId: string) => { switch (categoryId) { case 'combat': return ; case 'data_relic': return ; case 'gas': - return ; + return ; case 'ore': return ; case 'wormhole': @@ -28,14 +28,14 @@ const getCategoryIcon = (categoryId: string) => { } }; -const getCategoryColor = (categoryId: string) => { +export const getCategoryColor = (categoryId: string) => { switch (categoryId) { case 'combat': return 'text-red-400 border-red-600'; case 'data_relic': return 'text-blue-400 border-blue-600'; case 'gas': - return 'text-yellow-400 border-yellow-600'; + return 'text-green-400 border-green-600'; case 'ore': return 'text-yellow-400 border-yellow-600'; case 'wormhole': @@ -73,8 +73,8 @@ export const SignatureCategories = ({ categories, onToggleCategory }: SignatureC {getCategoryIcon(category.id)} {category.name} - {category.signatures.length} diff --git a/src/components/SignatureListItem.tsx b/src/components/SignatureListItem.tsx index 09c55fc..8f5fc8c 100644 --- a/src/components/SignatureListItem.tsx +++ b/src/components/SignatureListItem.tsx @@ -1,41 +1,17 @@ import { Badge } from "@/components/ui/badge"; -import { Zap, Shield, Coins, HelpCircle, Clock, AlertTriangle, Skull, Fuel, Pickaxe } from "lucide-react"; +import { Zap, Shield, Coins, HelpCircle, Clock, AlertTriangle, Skull } from "lucide-react"; import { SigviewRecord as Signature } from "@/lib/pbtypes"; +import { getCategoryColor, getCategoryIcon } from "./SignatureCategories"; interface SignatureListItemProps { signature: Signature; } export 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("gas")) return ; - if (lowerType.includes("ore")) 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("gas")) - return "bg-gradient-to-r from-yellow-900/40 to-amber-900/40 text-yellow-200 border-yellow-500 shadow-lg shadow-yellow-500/20"; - if (lowerType.includes("ore")) - 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; + 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; @@ -44,11 +20,12 @@ export const SignatureListItem = ({ signature }: SignatureListItemProps) => { const formatDate = (dateStr: string | undefined) => { if (!dateStr) return "Unknown"; const date = new Date(dateStr); - if (isNaN(date.getTime())) return "Invalid date"; + 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))); @@ -66,43 +43,32 @@ export const SignatureListItem = ({ signature }: SignatureListItemProps) => { }; const oldEntry = isOld(); - const isGasSite = signature.type?.toLowerCase().includes("gas"); return (
-
- {/* Type Badge */} +
+ {/* Type Badge - Most Important */} - {signature.dangerous ? : getTypeIcon(signature.type)} - {signature.type || "Unknown"} + {signature.dangerous ? : getCategoryIcon(signature.type)} + {signature.type || "Unknown Type"} {/* Signature Name and ID */} -
+
- {signature.identifier} -

+ {signature.identifier} +

{signature.signame || "Unnamed Signature"} {signature.dangerous && ( - + DANGEROUS )} @@ -111,16 +77,16 @@ export const SignatureListItem = ({ signature }: SignatureListItemProps) => {

{/* Dates */} -
+
{signature.updated && ( -
+
{oldEntry && } Updated: {formatDate(signature.updated)}
)} {signature.created && ( -
+
Created: {formatDate(signature.created)}
)}