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

43 lines
1.1 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;
}): InvoiceStatus {
if (invoice.status === "paid" || invoice.status === "draft") {
return invoice.status;
}
return getEffectiveInvoiceStatus("sent", invoice.dueDate);
}
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];
}