"use client"; import { Negotiation } from "@/lib/types"; import { FEATURE_LABELS } from "@/lib/utils"; function Icon({ name, className = "" }: { name: string; className?: string }) { return {name}; } interface Props { negotiation: Negotiation; } export default function ResolutionCard({ negotiation }: Props) { const resolution = negotiation.resolution as Record | null; const status = negotiation.status; const analytics = negotiation.analytics; if (!resolution && status !== "resolved" && status !== "escalated") { return (
Resolution not yet available
); } const final = (resolution?.final_proposal ?? {}) as Record; const details = (final.details ?? {}) as Record; const roundsTaken = resolution?.rounds_taken as number | undefined; const summaryText = String(final.summary ?? resolution?.summary ?? ""); const forPartyA = final.for_party_a ? String(final.for_party_a) : null; const forPartyB = final.for_party_b ? String(final.for_party_b) : null; const upiLink = (details.upi_link ?? details.upilink) ? String(details.upi_link ?? details.upilink) : null; const isResolved = status === "resolved"; return (
{/* Hero card — matches Stitch resolution screen */}
{/* Top gradient line */}
{isResolved ? "Resolved" : "Escalated"}
{FEATURE_LABELS[negotiation.feature_type]} {roundsTaken ? ` · ${roundsTaken} round${roundsTaken > 1 ? "s" : ""}` : ""}
{summaryText && (

{summaryText}

)}
{/* Stats row */} {analytics && (
)} {/* Per-party outcomes */} {(forPartyA || forPartyB) && (
{forPartyA && (
Agent A

{forPartyA}

)} {forPartyB && (
Agent B

{forPartyB}

)}
)} {/* Action buttons */}
{upiLink && (
Pay via UPI
Instant settlement
)}
); } function MetricBox({ label, value, highlight = false, }: { label: string; value: string; highlight?: boolean; }) { return (
{label} {value}
); } interface Props { negotiation: Negotiation; }