import { useCurrency } from "../hooks/useCurrency"; import { useWeightUnit } from "../hooks/useWeightUnit"; import { formatPrice, formatWeight } from "../lib/formatters"; import { LucideIcon } from "../lib/iconData"; import { useUIStore } from "../stores/uiStore"; import { RankBadge } from "./CandidateListItem"; import { StatusBadge } from "./StatusBadge"; interface CandidateCardProps { id: number; name: string; weightGrams: number | null; priceCents: number | null; categoryName: string; categoryIcon: string; imageFilename: string | null; productUrl?: string | null; threadId: number; isActive: boolean; status: "researching" | "ordered" | "arrived"; onStatusChange: (status: "researching" | "ordered" | "arrived") => void; pros?: string | null; cons?: string | null; rank?: number; } export function CandidateCard({ id, name, weightGrams, priceCents, categoryName, categoryIcon, imageFilename, productUrl, threadId, isActive, status, onStatusChange, pros, cons, rank, }: CandidateCardProps) { const unit = useWeightUnit(); const currency = useCurrency(); const openCandidateEditPanel = useUIStore((s) => s.openCandidateEditPanel); const openConfirmDeleteCandidate = useUIStore( (s) => s.openConfirmDeleteCandidate, ); const openResolveDialog = useUIStore((s) => s.openResolveDialog); const openExternalLink = useUIStore((s) => s.openExternalLink); return ( ); }