"use client"; import { buildPriority1CalendarGrid, weekdayLabelsZh } from "@/lib/priority1/calendar-grid"; import { P1_RESULT_UI } from "@/lib/priority1/ui-labels"; import type { Priority1DisplayLine } from "@/modules/priority1/quote-storage"; export type Priority1ShipmentSummary = { originZip: string; destinationZip: string; pickupDate: string; weightLb?: number; itemsLabel?: string; }; type Props = { lines: Priority1DisplayLine[]; shipment: Priority1ShipmentSummary; onRequestNewQuote?: () => void; }; function formatUsd(n: number): string { return new Intl.NumberFormat("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 2, }).format(n); } function lineDisplayUsd(line: Priority1DisplayLine): number { return line.totalUsd > 0 ? line.totalUsd : line.final_total_usd; } export function Priority1FtlScheduleCalendar({ lines, shipment, onRequestNewQuote, }: Props) { const { monthLabel, cells } = buildPriority1CalendarGrid( shipment.pickupDate, lines, ); const weekdays = weekdayLabelsZh(); const lowest = lines.length ? Math.min(...lines.map((l) => lineDisplayUsd(l))) : null; return (

{P1_RESULT_UI.ftlTitle}

{P1_RESULT_UI.ftlIntro} {lowest != null ? ( {P1_RESULT_UI.ftlLowest(formatUsd(lowest))} ) : null}

{P1_RESULT_UI.schedule}

{monthLabel}
{weekdays.map((d) => (
{d}
))} {cells.map((cell) => { const day = cell.date.getDate(); const price = cell.line != null ? lineDisplayUsd(cell.line) : cell.priceUsd; const hasPrice = cell.inMonth && price != null && price > 0; return (
{day}
{hasPrice ? (
{formatUsd(price!)}
) : cell.inMonth ? (
) : null}
); })}
); }