diff --git a/packages/frontend/src/pages/Lessons.tsx b/packages/frontend/src/pages/Lessons.tsx new file mode 100644 index 0000000..bd86ace --- /dev/null +++ b/packages/frontend/src/pages/Lessons.tsx @@ -0,0 +1,61 @@ +import { useEffect, useState } from 'react'; +import { lessonsApi } from '../api/lessons.js'; +import { useLessons } from '../stores/lessonsStore.js'; +import { LessonTree } from '../components/LessonTree.js'; + +export function LessonsPage() { + const { tree, refresh, loading } = useLessons(); + const [newRoot, setNewRoot] = useState(''); + const [filter, setFilter] = useState(''); + + useEffect(() => { refresh(); }, [refresh]); + + async function addRoot() { + if (!newRoot.trim()) return; + await lessonsApi.create({ name: newRoot.trim(), parentId: null }); + setNewRoot(''); + await refresh(); + } + + return ( +
+
+

Lessen

+

+ Maak een hiërarchie van lessen en sublessen. Sleep aan ⋮⋮ om te herordenen. Klik op een les voor details. +

+
+ +
+ setNewRoot(e.target.value)} + onKeyDown={(e) => e.key === 'Enter' && addRoot()} + /> + +
+ +
+ setFilter(e.target.value)} + /> + {loading ? ( +

Laden…

+ ) : tree.length === 0 ? ( +
+ Nog geen lessen. Voeg er hierboven een toe. +
+ ) : ( + + )} +
+
+ ); +}