Imports name this capability’s declared dependencies, which fune builds next to it in your project; each one links to its page.
import { parseIsoDate } from "./dates_add_days.ts"; ← from dates.add-days ^1.0.0 · built alongside by fune
import { dayName } from "./dates_day_of_week.ts"; ← from dates.day-of-week ^1.0.0 · built alongside by fune
import { daysBetween } from "./dates_days_between.ts"; ← from dates.days-between ^1.0.0 · built alongside by fune
import { dueStatus } from "./todo_due_status.ts"; ← from todo.due-status ^1.0.0 · built alongside by fune
import { type Todo } from "./todo_item.ts"; ← from todo.item ^1.0.0 · built alongside by fune
const MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
/**
* The short English label for a todo's due date. Built on dueStatus so the
* label, the section and the overdue count never disagree. A year is added
* only when the due date is in a different calendar year from today.
*/
export function dueLabel(todo: Todo, today: string): string {
const status = dueStatus(todo, today);
if (status === "done" || status === "none") return "";
const due = todo.due as string;
if (status === "overdue") {
const late = daysBetween(due, today);
return late === 1 ? "1 day overdue" : `${late} days overdue`;
}
if (status === "today") return "Due today";
if (status === "tomorrow") return "Due tomorrow";
const d = parseIsoDate(due);
const label = `Due ${dayName(due).slice(0, 3)} ${d.day} ${MONTHS[d.month - 1]}`;
return d.year === parseIsoDate(today).year ? label : `${label} ${d.year}`;
}