Files
beenvoice/apps/mobile/lib/invoice-status.ts
T

48 lines
1.2 KiB
TypeScript

import { getEffectiveInvoiceStatus } from "@beenvoice/domain/invoice-status";
import type { EffectiveInvoiceStatus } from "@beenvoice/domain/invoice-status";
export type InvoiceStatus = EffectiveInvoiceStatus;
export function getInvoiceStatus(invoice: {
status: string;
dueDate: Date | string;
createdBy?: { timeZone: string } | null;
}): InvoiceStatus {
if (invoice.status === "paid" || invoice.status === "draft") {
return invoice.status;
}
return getEffectiveInvoiceStatus(
"sent",
invoice.dueDate,
invoice.createdBy?.timeZone ?? "America/New_York",
);
}
export const statusLabels: Record<InvoiceStatus, string> = {
draft: "Draft",
sent: "Sent",
paid: "Paid",
overdue: "Overdue",
};
const lightStatusColors: Record<InvoiceStatus, string> = {
draft: "#6b7280",
sent: "#2563eb",
paid: "#16a34a",
overdue: "#dc2626",
};
const darkStatusColors: Record<InvoiceStatus, string> = {
draft: "#A1A1AA",
sent: "#60A5FA",
paid: "#4ADE80",
overdue: "#F87171",
};
/** @deprecated Use `getStatusColor` for theme-aware colors. */
export const statusColors = lightStatusColors;
export function getStatusColor(status: InvoiceStatus, isDark: boolean): string {
return (isDark ? darkStatusColors : lightStatusColors)[status];
}