import { CheckCircle2, FileText, XCircle } from "lucide-react"; import type { CompletionDocStateConfig, DocState } from "@/domain/work-orders/types/completion-doc"; import type { CompletionDocStatus } from "@/domain/work-orders/types/work-order-table-row"; const MONTH_NAMES = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", ]; function pad2(n: number): string { return String(n).padStart(2, "0"); } export function docStateOf(status: CompletionDocStatus): DocState { return status === "Yes" ? "generated" : status === "NN" ? "not-required" : "draft"; } export function fmtDocNow(): string { const d = new Date(); let h = d.getHours(); const ap = h >= 12 ? "PM" : "AM"; h = h % 12 || 12; return `${MONTH_NAMES[d.getMonth()].slice(0, 3)} ${d.getDate()}, ${d.getFullYear()} ยท ${h}:${pad2(d.getMinutes())} ${ap}`; } export const DOC_STATE_CFG: Record = { draft: { pillLabel: "Draft โ€” not generated", pillBg: "var(--color-bg-muted)", pillText: "var(--muted-foreground)", cardBg: "var(--color-bg-muted)", cardBorder: "var(--color-border)", cardIconBg: "var(--color-bg-surface)", iconColor: "var(--muted-foreground)", cardTitle: "Draft โ€” not generated", icon: FileText, }, generated: { pillLabel: "Generated", pillBg: "var(--doc-yes-bg)", pillText: "var(--color-success)", cardBg: "var(--doc-yes-bg)", cardBorder: "#bbf7d0", cardIconBg: "var(--color-bg-surface)", iconColor: "var(--color-success)", cardTitle: "Generated", icon: CheckCircle2, }, "not-required": { pillLabel: "Not required", pillBg: "var(--indicator-co-1-bg)", pillText: "var(--warning)", cardBg: "var(--indicator-co-1-bg)", cardBorder: "#fde68a", cardIconBg: "var(--color-bg-surface)", iconColor: "var(--warning)", cardTitle: "Not required", icon: XCircle, }, }; export function docStatusCardDescription(state: DocState, generatedAt: string): string { if (state === "draft") { return "This document hasn't been generated yet. Add any extra details, then generate it โ€” or mark it as not required."; } if (state === "generated") { return `Ready to download or share. Generated ${generatedAt}.`; } return "No document is required for this work order. You can undo this anytime."; }