"use client"; import { P1_RESULT_UI } from "@/lib/priority1/ui-labels"; import type { Priority1DisplayLine } from "@/modules/priority1/quote-storage"; type Props = { lines: Priority1DisplayLine[]; }; function carrierInitials(carrier: string): string { const parts = carrier.trim().split(/\s+/).filter(Boolean); if (parts.length >= 2) { return (parts[0]![0]! + parts[1]![0]!).toUpperCase(); } return carrier.slice(0, 2).toUpperCase(); } function formatUsd(n: number): string { return new Intl.NumberFormat("en-US", { style: "currency", currency: "USD", minimumFractionDigits: 2, }).format(n); } function formatDisplayDate(raw?: string | null): string { if (!raw) return P1_RESULT_UI.dateUnknown; const trimmed = raw.trim(); const dash = trimmed.match(/^(\d{2})-(\d{2})-(\d{4})$/); if (dash) return `${dash[1]}-${dash[2]}-${dash[3]}`; const slash = trimmed.match(/^(\d{2})\/(\d{2})\/(\d{4})$/); if (slash) return `${slash[1]}-${slash[2]}-${slash[3]}`; const iso = trimmed.match(/^(\d{4})-(\d{2})-(\d{2})/); if (iso) return `${iso[2]}-${iso[3]}-${iso[1]}`; return trimmed; } function transitLabel(days?: number): string { if (days == null || days <= 0) return P1_RESULT_UI.transitUnknown; return P1_RESULT_UI.transit(days); } function serviceLabel(level?: string): string { if (!level?.trim()) return P1_RESULT_UI.standardLtl; if (/standard\s*ltl/i.test(level)) return P1_RESULT_UI.standardLtl; return level; } function QuoteCard({ line }: { line: Priority1DisplayLine }) { const displayUsd = line.totalUsd > 0 ? line.totalUsd : line.final_total_usd; return (
{carrierInitials(line.carrier)}

{formatUsd(displayUsd)}

{serviceLabel(line.serviceLevel)}

i
{P1_RESULT_UI.quoteBadge(line.rank)}

{line.carrier}

{transitLabel(line.transitDays)}

{P1_RESULT_UI.expiration}:{formatDisplayDate(line.expirationDate)}

{P1_RESULT_UI.delivery}:{formatDisplayDate(line.deliveryDate)}

); } export function Priority1LtlQuoteOptions({ lines }: Props) { const sorted = [...lines].sort((a, b) => a.rank - b.rank); return (

{P1_RESULT_UI.title}

{P1_RESULT_UI.intro}
{sorted.map((line) => ( ))}
); }