From 31aacd68d5d2965edb5ef1d5ec7aff13c44314f1 Mon Sep 17 00:00:00 2001 From: RaymondVerhoef Date: Sun, 10 May 2026 21:33:02 +0200 Subject: [PATCH] feat: implement core knowledge graph UI components, extraction pipeline, and initial platform navigation pages --- src/App.jsx | 16 +- src/components/admin/ContentManager.jsx | 226 +++++++++++ src/components/admin/KnowledgeGraph.jsx | 6 +- src/components/admin/TestManager.jsx | 200 ++++++++++ src/components/admin/UploadZone.jsx | 45 +-- src/components/ui/LearningContentViewer.jsx | 282 ++++++++++++++ src/lib/extractionPipeline.js | 22 +- src/lib/learningService.js | 163 +++++--- src/lib/testService.js | 224 +++++++++++ src/pages/Admin/index.jsx | 137 ++++--- src/pages/Dashboard.jsx | 49 +-- src/pages/Leren.jsx | 326 ++-------------- src/pages/Login.jsx | 12 +- src/pages/Testen.jsx | 406 ++++++++++++++++++++ 14 files changed, 1634 insertions(+), 480 deletions(-) create mode 100644 src/components/admin/ContentManager.jsx create mode 100644 src/components/admin/TestManager.jsx create mode 100644 src/components/ui/LearningContentViewer.jsx create mode 100644 src/lib/testService.js create mode 100644 src/pages/Testen.jsx diff --git a/src/App.jsx b/src/App.jsx index 80d12a2..0a3abe4 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -8,16 +8,16 @@ import Dashboard from './pages/Dashboard' import Admin from './pages/Admin' import Leren from './pages/Leren' +import Testen from './pages/Testen' // Placeholder components for routing structure -const Testen = () =>

Weektest

Start your weekly test here.

const Leaderboard = () =>

Leaderboard

See who is on top!

// Protected Route Wrapper const ProtectedRoute = ({ children, requireAdmin }) => { const { state, logout } = useApp() - if (state.isLoading) return
Laden...
+ if (state.isLoading) return
Loading...
if (!state.currentUser) { return @@ -38,8 +38,8 @@ const ProtectedRoute = ({ children, requireAdmin }) => { {/* Desktop Links */}
Dashboard - Leren - Testen + Learn + Test Leaderboard {state.currentUser.role === 'admin' && ( @@ -50,7 +50,7 @@ const ProtectedRoute = ({ children, requireAdmin }) => { onClick={logout} className="ml-4 border border-bg-warm/30 rounded-[var(--r-pill)] px-3 py-1 hover:bg-paper/10 transition-colors flex items-center gap-2" > - Uitloggen + Sign Out
@@ -65,8 +65,8 @@ const ProtectedRoute = ({ children, requireAdmin }) => { {/* Mobile Bottom Navigation */}