feat: add kanban board

This commit is contained in:
2026-07-15 01:12:40 +05:00
parent 0454a32d8c
commit 35465f581f
12 changed files with 718 additions and 1 deletions
+33
View File
@@ -0,0 +1,33 @@
import { Task, TaskStatus } from "@/model/task";
import { TASK_STATUS_LABELS, TASK_STATUS_ORDER } from "@/ui/taskLabels";
export type KanbanColumn = {
status: TaskStatus;
label: string;
tasks: Task[];
};
export type KanbanBoard = {
columns: KanbanColumn[];
};
/** Build fixed-order status columns; empty columns are kept (unlike groupTasks). */
export function buildKanbanBoard(tasks: Task[]): KanbanBoard {
const columns: KanbanColumn[] = TASK_STATUS_ORDER.map((status) => {
const columnTasks = tasks
.filter((task) => task.status === status)
.slice()
.sort(
(a, b) =>
new Date(b.updated).getTime() - new Date(a.updated).getTime(),
);
return {
status,
label: TASK_STATUS_LABELS[status],
tasks: columnTasks,
};
});
return { columns };
}