all repos — kōi @ e252fb0b8f069ac47108b7307af4ab921d5b7ff7

Minimalist task manager

src/lib/components/TasksFeed.svelte (view raw)

 1<script lang="ts">
 2  import { DateTime } from "luxon";
 3  import TasksList from "./TasksList.svelte";
 4
 5  let { tasks = [] }: { tasks: Task[] } = $props();
 6
 7  const today = DateTime.now().endOf("day");
 8
 9  let { previousTasks, currentTasks, nextTasks } = $derived(
10    tasks.reduce<Record<string, Task[]>>(
11      (acc, task) => {
12        if (task.endTime) acc.previousTasks.push(task);
13        else if (task.dueDate) {
14          const dueDate = DateTime.fromJSDate(task.dueDate);
15          if (dueDate <= today) acc.currentTasks.push(task);
16          else acc.nextTasks.push(task);
17        } else acc.currentTasks.push(task);
18        return acc;
19      },
20      { previousTasks: [], currentTasks: [], nextTasks: [] }
21    )
22  );
23</script>
24
25<TasksList title="À faire" tasks={currentTasks} openOnLoad />
26<TasksList title="Plus tard" tasks={nextTasks} />
27<TasksList title="Fait" tasks={previousTasks} />