@burdenoff/microfe-buildmyiq 2026.509.101
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -0
- package/dist/buildmyiq/BuildMyIQRoot.d.ts +5 -0
- package/dist/buildmyiq/BuildMyIQRoot.d.ts.map +1 -0
- package/dist/buildmyiq/BuildMyIQRoot.js +329 -0
- package/dist/buildmyiq/BuildMyIQRoot.js.map +1 -0
- package/dist/buildmyiq/BuildMyIQRoutes.d.ts +2 -0
- package/dist/buildmyiq/BuildMyIQRoutes.d.ts.map +1 -0
- package/dist/buildmyiq/BuildMyIQRoutes.js +171 -0
- package/dist/buildmyiq/BuildMyIQRoutes.js.map +1 -0
- package/dist/buildmyiq/index.d.ts +5 -0
- package/dist/buildmyiq/index.d.ts.map +1 -0
- package/dist/buildmyiq/index.js +3 -0
- package/dist/buildmyiq/pages/AdminAdminAnalyticsPagePage.d.ts +2 -0
- package/dist/buildmyiq/pages/AdminAdminAnalyticsPagePage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/AdminAdminAnalyticsPagePage.js +271 -0
- package/dist/buildmyiq/pages/AdminAdminAnalyticsPagePage.js.map +1 -0
- package/dist/buildmyiq/pages/AdminAdminCoursesPagePage.d.ts +2 -0
- package/dist/buildmyiq/pages/AdminAdminCoursesPagePage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/AdminAdminCoursesPagePage.js +212 -0
- package/dist/buildmyiq/pages/AdminAdminCoursesPagePage.js.map +1 -0
- package/dist/buildmyiq/pages/AdminAdminUsersPagePage.d.ts +2 -0
- package/dist/buildmyiq/pages/AdminAdminUsersPagePage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/AdminAdminUsersPagePage.js +235 -0
- package/dist/buildmyiq/pages/AdminAdminUsersPagePage.js.map +1 -0
- package/dist/buildmyiq/pages/AdminIndexPage.d.ts +2 -0
- package/dist/buildmyiq/pages/AdminIndexPage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/AdminIndexPage.js +274 -0
- package/dist/buildmyiq/pages/AdminIndexPage.js.map +1 -0
- package/dist/buildmyiq/pages/AiAichatPagePage.d.ts +2 -0
- package/dist/buildmyiq/pages/AiAichatPagePage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/AiAichatPagePage.js +209 -0
- package/dist/buildmyiq/pages/AiAichatPagePage.js.map +1 -0
- package/dist/buildmyiq/pages/AiAicontentGenerationPagePage.d.ts +2 -0
- package/dist/buildmyiq/pages/AiAicontentGenerationPagePage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/AiAicontentGenerationPagePage.js +318 -0
- package/dist/buildmyiq/pages/AiAicontentGenerationPagePage.js.map +1 -0
- package/dist/buildmyiq/pages/AiAitutoringPagePage.d.ts +2 -0
- package/dist/buildmyiq/pages/AiAitutoringPagePage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/AiAitutoringPagePage.js +290 -0
- package/dist/buildmyiq/pages/AiAitutoringPagePage.js.map +1 -0
- package/dist/buildmyiq/pages/AiIndexPage.d.ts +2 -0
- package/dist/buildmyiq/pages/AiIndexPage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/AiIndexPage.js +191 -0
- package/dist/buildmyiq/pages/AiIndexPage.js.map +1 -0
- package/dist/buildmyiq/pages/AssessmentsAssessmentBuilderPagePage.d.ts +2 -0
- package/dist/buildmyiq/pages/AssessmentsAssessmentBuilderPagePage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/AssessmentsAssessmentBuilderPagePage.js +290 -0
- package/dist/buildmyiq/pages/AssessmentsAssessmentBuilderPagePage.js.map +1 -0
- package/dist/buildmyiq/pages/AssessmentsAssessmentGradingPagePage.d.ts +2 -0
- package/dist/buildmyiq/pages/AssessmentsAssessmentGradingPagePage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/AssessmentsAssessmentGradingPagePage.js +215 -0
- package/dist/buildmyiq/pages/AssessmentsAssessmentGradingPagePage.js.map +1 -0
- package/dist/buildmyiq/pages/AssessmentsAssessmentResultsPagePage.d.ts +2 -0
- package/dist/buildmyiq/pages/AssessmentsAssessmentResultsPagePage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/AssessmentsAssessmentResultsPagePage.js +224 -0
- package/dist/buildmyiq/pages/AssessmentsAssessmentResultsPagePage.js.map +1 -0
- package/dist/buildmyiq/pages/AssessmentsAssessmentTakePagePage.d.ts +2 -0
- package/dist/buildmyiq/pages/AssessmentsAssessmentTakePagePage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/AssessmentsAssessmentTakePagePage.js +174 -0
- package/dist/buildmyiq/pages/AssessmentsAssessmentTakePagePage.js.map +1 -0
- package/dist/buildmyiq/pages/AssessmentsIndexPage.d.ts +2 -0
- package/dist/buildmyiq/pages/AssessmentsIndexPage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/AssessmentsIndexPage.js +174 -0
- package/dist/buildmyiq/pages/AssessmentsIndexPage.js.map +1 -0
- package/dist/buildmyiq/pages/CalendarPage.d.ts +2 -0
- package/dist/buildmyiq/pages/CalendarPage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/CalendarPage.js +242 -0
- package/dist/buildmyiq/pages/CalendarPage.js.map +1 -0
- package/dist/buildmyiq/pages/CommunicationAnnouncementsPagePage.d.ts +2 -0
- package/dist/buildmyiq/pages/CommunicationAnnouncementsPagePage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/CommunicationAnnouncementsPagePage.js +180 -0
- package/dist/buildmyiq/pages/CommunicationAnnouncementsPagePage.js.map +1 -0
- package/dist/buildmyiq/pages/CommunicationForumsPagePage.d.ts +2 -0
- package/dist/buildmyiq/pages/CommunicationForumsPagePage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/CommunicationForumsPagePage.js +154 -0
- package/dist/buildmyiq/pages/CommunicationForumsPagePage.js.map +1 -0
- package/dist/buildmyiq/pages/CommunicationIndexPage.d.ts +2 -0
- package/dist/buildmyiq/pages/CommunicationIndexPage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/CommunicationIndexPage.js +191 -0
- package/dist/buildmyiq/pages/CommunicationIndexPage.js.map +1 -0
- package/dist/buildmyiq/pages/CommunicationMessagesPagePage.d.ts +2 -0
- package/dist/buildmyiq/pages/CommunicationMessagesPagePage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/CommunicationMessagesPagePage.js +261 -0
- package/dist/buildmyiq/pages/CommunicationMessagesPagePage.js.map +1 -0
- package/dist/buildmyiq/pages/CoursesCourseContentPagePage.d.ts +2 -0
- package/dist/buildmyiq/pages/CoursesCourseContentPagePage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/CoursesCourseContentPagePage.js +164 -0
- package/dist/buildmyiq/pages/CoursesCourseContentPagePage.js.map +1 -0
- package/dist/buildmyiq/pages/CoursesCourseCreatePagePage.d.ts +2 -0
- package/dist/buildmyiq/pages/CoursesCourseCreatePagePage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/CoursesCourseCreatePagePage.js +239 -0
- package/dist/buildmyiq/pages/CoursesCourseCreatePagePage.js.map +1 -0
- package/dist/buildmyiq/pages/CoursesCourseDashboardPagePage.d.ts +2 -0
- package/dist/buildmyiq/pages/CoursesCourseDashboardPagePage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/CoursesCourseDashboardPagePage.js +368 -0
- package/dist/buildmyiq/pages/CoursesCourseDashboardPagePage.js.map +1 -0
- package/dist/buildmyiq/pages/CoursesCourseDetailPagePage.d.ts +2 -0
- package/dist/buildmyiq/pages/CoursesCourseDetailPagePage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/CoursesCourseDetailPagePage.js +219 -0
- package/dist/buildmyiq/pages/CoursesCourseDetailPagePage.js.map +1 -0
- package/dist/buildmyiq/pages/CoursesCourseListPagePage.d.ts +2 -0
- package/dist/buildmyiq/pages/CoursesCourseListPagePage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/CoursesCourseListPagePage.js +153 -0
- package/dist/buildmyiq/pages/CoursesCourseListPagePage.js.map +1 -0
- package/dist/buildmyiq/pages/CoursesIndexPage.d.ts +2 -0
- package/dist/buildmyiq/pages/CoursesIndexPage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/CoursesIndexPage.js +138 -0
- package/dist/buildmyiq/pages/CoursesIndexPage.js.map +1 -0
- package/dist/buildmyiq/pages/DashboardPage.d.ts +2 -0
- package/dist/buildmyiq/pages/DashboardPage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/DashboardPage.js +264 -0
- package/dist/buildmyiq/pages/DashboardPage.js.map +1 -0
- package/dist/buildmyiq/pages/MessagesPage.d.ts +2 -0
- package/dist/buildmyiq/pages/MessagesPage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/MessagesPage.js +261 -0
- package/dist/buildmyiq/pages/MessagesPage.js.map +1 -0
- package/dist/buildmyiq/pages/ProfileProgressPage.d.ts +2 -0
- package/dist/buildmyiq/pages/ProfileProgressPage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/ProfileProgressPage.js +194 -0
- package/dist/buildmyiq/pages/ProfileProgressPage.js.map +1 -0
- package/dist/buildmyiq/pages/TeachingAnalyticsPage.d.ts +2 -0
- package/dist/buildmyiq/pages/TeachingAnalyticsPage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/TeachingAnalyticsPage.js +243 -0
- package/dist/buildmyiq/pages/TeachingAnalyticsPage.js.map +1 -0
- package/dist/buildmyiq/pages/TeachingContentPage.d.ts +2 -0
- package/dist/buildmyiq/pages/TeachingContentPage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/TeachingContentPage.js +165 -0
- package/dist/buildmyiq/pages/TeachingContentPage.js.map +1 -0
- package/dist/buildmyiq/pages/TeachingCoursesPage.d.ts +2 -0
- package/dist/buildmyiq/pages/TeachingCoursesPage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/TeachingCoursesPage.js +151 -0
- package/dist/buildmyiq/pages/TeachingCoursesPage.js.map +1 -0
- package/dist/buildmyiq/pages/TeachingGradingPage.d.ts +2 -0
- package/dist/buildmyiq/pages/TeachingGradingPage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/TeachingGradingPage.js +204 -0
- package/dist/buildmyiq/pages/TeachingGradingPage.js.map +1 -0
- package/dist/buildmyiq/pages/TeachingIndexPage.d.ts +2 -0
- package/dist/buildmyiq/pages/TeachingIndexPage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/TeachingIndexPage.js +220 -0
- package/dist/buildmyiq/pages/TeachingIndexPage.js.map +1 -0
- package/dist/buildmyiq/pages/TeachingLessonPlansPage.d.ts +2 -0
- package/dist/buildmyiq/pages/TeachingLessonPlansPage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/TeachingLessonPlansPage.js +157 -0
- package/dist/buildmyiq/pages/TeachingLessonPlansPage.js.map +1 -0
- package/dist/buildmyiq/pages/TeachingQuestionsPage.d.ts +2 -0
- package/dist/buildmyiq/pages/TeachingQuestionsPage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/TeachingQuestionsPage.js +184 -0
- package/dist/buildmyiq/pages/TeachingQuestionsPage.js.map +1 -0
- package/dist/buildmyiq/pages/TeachingStudentsPage.d.ts +2 -0
- package/dist/buildmyiq/pages/TeachingStudentsPage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/TeachingStudentsPage.js +204 -0
- package/dist/buildmyiq/pages/TeachingStudentsPage.js.map +1 -0
- package/dist/buildmyiq/providers/BuildMyIQProvider.d.ts +6 -0
- package/dist/buildmyiq/providers/BuildMyIQProvider.d.ts.map +1 -0
- package/dist/buildmyiq/providers/BuildMyIQProvider.js +27 -0
- package/dist/buildmyiq/providers/BuildMyIQProvider.js.map +1 -0
- package/dist/buildmyiq/store/buildmyiqStore.d.ts +189 -0
- package/dist/buildmyiq/store/buildmyiqStore.d.ts.map +1 -0
- package/dist/buildmyiq/store/buildmyiqStore.js +1160 -0
- package/dist/buildmyiq/store/buildmyiqStore.js.map +1 -0
- package/dist/buildmyiq/types/index.d.ts +51 -0
- package/dist/buildmyiq/types/index.d.ts.map +1 -0
- package/dist/buildmyiq/utils/cn.d.ts +4 -0
- package/dist/buildmyiq/utils/cn.d.ts.map +1 -0
- package/dist/buildmyiq/utils/navigation.d.ts +2 -0
- package/dist/buildmyiq/utils/navigation.d.ts.map +1 -0
- package/dist/buildmyiq/utils/navigation.js +8 -0
- package/dist/buildmyiq/utils/navigation.js.map +1 -0
- package/dist/dev/main.d.ts +2 -0
- package/dist/dev/main.d.ts.map +1 -0
- package/dist/generated/global-operations.d.ts +2 -0
- package/dist/generated/global-operations.d.ts.map +1 -0
- package/dist/generated/global-types.d.ts +18199 -0
- package/dist/generated/global-types.d.ts.map +1 -0
- package/dist/generated/wspace-operations.d.ts +2 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -0
- package/dist/generated/wspace-types.d.ts +43046 -0
- package/dist/generated/wspace-types.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/package.json +107 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { useBuildMyIQStore as e } from "../store/buildmyiqStore.js";
|
|
2
|
+
import { BookOpen as t, CheckCircle as n, Clock as r, Target as i } from "lucide-react";
|
|
3
|
+
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
4
|
+
import { Badge as s, Card as c, CardContent as l, CardHeader as u, CardTitle as d } from "@burdenoff/fe-libs/ui";
|
|
5
|
+
//#region src/buildmyiq/pages/ProfileProgressPage.tsx
|
|
6
|
+
function f() {
|
|
7
|
+
let { courses: f, grades: p } = e(), m = f.filter((e) => e.progress !== void 0), h = f.reduce((e, t) => e + t.modules.reduce((e, t) => e + t.lessons.length, 0), 0), g = f.reduce((e, t) => e + t.modules.reduce((e, t) => e + t.lessons.filter((e) => e.completed).length, 0), 0), _ = h > 0 ? Math.round(g / h * 100) : 0;
|
|
8
|
+
return /* @__PURE__ */ o("div", {
|
|
9
|
+
className: "max-w-4xl mx-auto p-6 space-y-6",
|
|
10
|
+
children: [
|
|
11
|
+
/* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("h1", {
|
|
12
|
+
className: "text-2xl font-semibold",
|
|
13
|
+
children: "Learning Progress"
|
|
14
|
+
}), /* @__PURE__ */ a("p", {
|
|
15
|
+
className: "text-sm text-muted-foreground",
|
|
16
|
+
children: "Track your learning journey and achievements"
|
|
17
|
+
})] }),
|
|
18
|
+
/* @__PURE__ */ o("div", {
|
|
19
|
+
className: "grid grid-cols-1 md:grid-cols-4 gap-4",
|
|
20
|
+
children: [
|
|
21
|
+
/* @__PURE__ */ a(c, { children: /* @__PURE__ */ a(l, {
|
|
22
|
+
className: "pt-6",
|
|
23
|
+
children: /* @__PURE__ */ o("div", {
|
|
24
|
+
className: "flex items-center gap-3",
|
|
25
|
+
children: [/* @__PURE__ */ a(i, { className: "h-5 w-5 text-blue-600" }), /* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("p", {
|
|
26
|
+
className: "text-sm text-muted-foreground",
|
|
27
|
+
children: "Overall Progress"
|
|
28
|
+
}), /* @__PURE__ */ o("p", {
|
|
29
|
+
className: "text-2xl font-bold",
|
|
30
|
+
children: [_, "%"]
|
|
31
|
+
})] })]
|
|
32
|
+
})
|
|
33
|
+
}) }),
|
|
34
|
+
/* @__PURE__ */ a(c, { children: /* @__PURE__ */ a(l, {
|
|
35
|
+
className: "pt-6",
|
|
36
|
+
children: /* @__PURE__ */ o("div", {
|
|
37
|
+
className: "flex items-center gap-3",
|
|
38
|
+
children: [/* @__PURE__ */ a(n, { className: "h-5 w-5 text-green-600" }), /* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("p", {
|
|
39
|
+
className: "text-sm text-muted-foreground",
|
|
40
|
+
children: "Lessons Done"
|
|
41
|
+
}), /* @__PURE__ */ o("p", {
|
|
42
|
+
className: "text-2xl font-bold",
|
|
43
|
+
children: [
|
|
44
|
+
g,
|
|
45
|
+
"/",
|
|
46
|
+
h
|
|
47
|
+
]
|
|
48
|
+
})] })]
|
|
49
|
+
})
|
|
50
|
+
}) }),
|
|
51
|
+
/* @__PURE__ */ a(c, { children: /* @__PURE__ */ a(l, {
|
|
52
|
+
className: "pt-6",
|
|
53
|
+
children: /* @__PURE__ */ o("div", {
|
|
54
|
+
className: "flex items-center gap-3",
|
|
55
|
+
children: [/* @__PURE__ */ a(t, { className: "h-5 w-5 text-purple-600" }), /* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("p", {
|
|
56
|
+
className: "text-sm text-muted-foreground",
|
|
57
|
+
children: "Active Courses"
|
|
58
|
+
}), /* @__PURE__ */ a("p", {
|
|
59
|
+
className: "text-2xl font-bold",
|
|
60
|
+
children: m.length
|
|
61
|
+
})] })]
|
|
62
|
+
})
|
|
63
|
+
}) }),
|
|
64
|
+
/* @__PURE__ */ a(c, { children: /* @__PURE__ */ a(l, {
|
|
65
|
+
className: "pt-6",
|
|
66
|
+
children: /* @__PURE__ */ o("div", {
|
|
67
|
+
className: "flex items-center gap-3",
|
|
68
|
+
children: [/* @__PURE__ */ a(r, { className: "h-5 w-5 text-orange-600" }), /* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("p", {
|
|
69
|
+
className: "text-sm text-muted-foreground",
|
|
70
|
+
children: "Study Time"
|
|
71
|
+
}), /* @__PURE__ */ a("p", {
|
|
72
|
+
className: "text-2xl font-bold",
|
|
73
|
+
children: "42.5h"
|
|
74
|
+
})] })]
|
|
75
|
+
})
|
|
76
|
+
}) })
|
|
77
|
+
]
|
|
78
|
+
}),
|
|
79
|
+
/* @__PURE__ */ o(c, { children: [/* @__PURE__ */ a(u, { children: /* @__PURE__ */ a(d, {
|
|
80
|
+
className: "text-lg",
|
|
81
|
+
children: "Course Progress"
|
|
82
|
+
}) }), /* @__PURE__ */ a(l, {
|
|
83
|
+
className: "space-y-4",
|
|
84
|
+
children: m.map((e) => {
|
|
85
|
+
let t = e.modules.reduce((e, t) => e + t.lessons.length, 0), n = e.modules.reduce((e, t) => e + t.lessons.filter((e) => e.completed).length, 0);
|
|
86
|
+
return /* @__PURE__ */ o("div", {
|
|
87
|
+
className: "rounded-lg border p-4",
|
|
88
|
+
children: [
|
|
89
|
+
/* @__PURE__ */ o("div", {
|
|
90
|
+
className: "flex items-center justify-between mb-2",
|
|
91
|
+
children: [/* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("h3", {
|
|
92
|
+
className: "text-sm font-medium",
|
|
93
|
+
children: e.title
|
|
94
|
+
}), /* @__PURE__ */ o("p", {
|
|
95
|
+
className: "text-xs text-muted-foreground",
|
|
96
|
+
children: [
|
|
97
|
+
e.instructor,
|
|
98
|
+
" - ",
|
|
99
|
+
e.duration
|
|
100
|
+
]
|
|
101
|
+
})] }), /* @__PURE__ */ o(s, {
|
|
102
|
+
variant: e.progress && e.progress >= 80 ? "default" : "secondary",
|
|
103
|
+
children: [e.progress, "%"]
|
|
104
|
+
})]
|
|
105
|
+
}),
|
|
106
|
+
/* @__PURE__ */ a("div", {
|
|
107
|
+
className: "h-2 rounded-full bg-muted mb-2",
|
|
108
|
+
children: /* @__PURE__ */ a("div", {
|
|
109
|
+
className: "h-2 rounded-full bg-primary transition-all",
|
|
110
|
+
style: { width: `${e.progress}%` }
|
|
111
|
+
})
|
|
112
|
+
}),
|
|
113
|
+
/* @__PURE__ */ o("div", {
|
|
114
|
+
className: "flex justify-between text-xs text-muted-foreground",
|
|
115
|
+
children: [/* @__PURE__ */ o("span", { children: [
|
|
116
|
+
n,
|
|
117
|
+
"/",
|
|
118
|
+
t,
|
|
119
|
+
" lessons completed"
|
|
120
|
+
] }), /* @__PURE__ */ a("span", { children: e.category })]
|
|
121
|
+
}),
|
|
122
|
+
/* @__PURE__ */ a("div", {
|
|
123
|
+
className: "mt-3 space-y-1",
|
|
124
|
+
children: e.modules.map((e) => /* @__PURE__ */ o("div", {
|
|
125
|
+
className: "flex items-center gap-2 text-xs",
|
|
126
|
+
children: [/* @__PURE__ */ a("div", {
|
|
127
|
+
className: "flex-1 min-w-0",
|
|
128
|
+
children: /* @__PURE__ */ a("span", {
|
|
129
|
+
className: "truncate",
|
|
130
|
+
children: e.title
|
|
131
|
+
})
|
|
132
|
+
}), /* @__PURE__ */ o("span", {
|
|
133
|
+
className: "text-muted-foreground",
|
|
134
|
+
children: [
|
|
135
|
+
e.lessons.filter((e) => e.completed).length,
|
|
136
|
+
"/",
|
|
137
|
+
e.lessons.length
|
|
138
|
+
]
|
|
139
|
+
})]
|
|
140
|
+
}, e.id))
|
|
141
|
+
})
|
|
142
|
+
]
|
|
143
|
+
}, e.id);
|
|
144
|
+
})
|
|
145
|
+
})] }),
|
|
146
|
+
/* @__PURE__ */ o(c, { children: [/* @__PURE__ */ a(u, { children: /* @__PURE__ */ a(d, {
|
|
147
|
+
className: "text-lg",
|
|
148
|
+
children: "Recent Assessment Scores"
|
|
149
|
+
}) }), /* @__PURE__ */ a(l, {
|
|
150
|
+
className: "space-y-2",
|
|
151
|
+
children: p.filter((e) => e.status === "graded").map((e) => /* @__PURE__ */ o("div", {
|
|
152
|
+
className: "flex items-center justify-between rounded-lg border p-3",
|
|
153
|
+
children: [/* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("p", {
|
|
154
|
+
className: "text-sm font-medium",
|
|
155
|
+
children: e.assessmentTitle
|
|
156
|
+
}), /* @__PURE__ */ a("p", {
|
|
157
|
+
className: "text-xs text-muted-foreground",
|
|
158
|
+
children: e.courseName
|
|
159
|
+
})] }), /* @__PURE__ */ o("div", {
|
|
160
|
+
className: "flex items-center gap-3",
|
|
161
|
+
children: [
|
|
162
|
+
/* @__PURE__ */ a("div", {
|
|
163
|
+
className: "w-16",
|
|
164
|
+
children: /* @__PURE__ */ a("div", {
|
|
165
|
+
className: "h-2 rounded-full bg-muted",
|
|
166
|
+
children: /* @__PURE__ */ a("div", {
|
|
167
|
+
className: "h-2 rounded-full bg-primary",
|
|
168
|
+
style: { width: `${e.score / e.maxScore * 100}%` }
|
|
169
|
+
})
|
|
170
|
+
})
|
|
171
|
+
}),
|
|
172
|
+
/* @__PURE__ */ o("span", {
|
|
173
|
+
className: "text-sm font-bold",
|
|
174
|
+
children: [
|
|
175
|
+
e.score,
|
|
176
|
+
"/",
|
|
177
|
+
e.maxScore
|
|
178
|
+
]
|
|
179
|
+
}),
|
|
180
|
+
/* @__PURE__ */ a(s, {
|
|
181
|
+
variant: "outline",
|
|
182
|
+
children: e.grade
|
|
183
|
+
})
|
|
184
|
+
]
|
|
185
|
+
})]
|
|
186
|
+
}, e.id))
|
|
187
|
+
})] })
|
|
188
|
+
]
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
//#endregion
|
|
192
|
+
export { f as ProfileProgressPage };
|
|
193
|
+
|
|
194
|
+
//# sourceMappingURL=ProfileProgressPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProfileProgressPage.js","names":[],"sources":["../../../src/buildmyiq/pages/ProfileProgressPage.tsx"],"sourcesContent":["import { Badge, Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { TrendingUp, BookOpen, Clock, CheckCircle, Target } from 'lucide-react';\nimport { useBuildMyIQStore } from '../store/buildmyiqStore';\n\nexport function ProfileProgressPage() {\n const { courses, grades } = useBuildMyIQStore();\n\n const coursesWithProgress = courses.filter((c) => c.progress !== undefined);\n const totalLessons = courses.reduce(\n (sum, c) => sum + c.modules.reduce((s, m) => s + m.lessons.length, 0),\n 0\n );\n const completedLessons = courses.reduce(\n (sum, c) =>\n sum + c.modules.reduce((s, m) => s + m.lessons.filter((l) => l.completed).length, 0),\n 0\n );\n const overallProgress =\n totalLessons > 0 ? Math.round((completedLessons / totalLessons) * 100) : 0;\n\n return (\n <div className=\"max-w-4xl mx-auto p-6 space-y-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Learning Progress</h1>\n <p className=\"text-sm text-muted-foreground\">\n Track your learning journey and achievements\n </p>\n </div>\n\n <div className=\"grid grid-cols-1 md:grid-cols-4 gap-4\">\n <Card>\n <CardContent className=\"pt-6\">\n <div className=\"flex items-center gap-3\">\n <Target className=\"h-5 w-5 text-blue-600\" />\n <div>\n <p className=\"text-sm text-muted-foreground\">Overall Progress</p>\n <p className=\"text-2xl font-bold\">{overallProgress}%</p>\n </div>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-6\">\n <div className=\"flex items-center gap-3\">\n <CheckCircle className=\"h-5 w-5 text-green-600\" />\n <div>\n <p className=\"text-sm text-muted-foreground\">Lessons Done</p>\n <p className=\"text-2xl font-bold\">\n {completedLessons}/{totalLessons}\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-6\">\n <div className=\"flex items-center gap-3\">\n <BookOpen className=\"h-5 w-5 text-purple-600\" />\n <div>\n <p className=\"text-sm text-muted-foreground\">Active Courses</p>\n <p className=\"text-2xl font-bold\">{coursesWithProgress.length}</p>\n </div>\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-6\">\n <div className=\"flex items-center gap-3\">\n <Clock className=\"h-5 w-5 text-orange-600\" />\n <div>\n <p className=\"text-sm text-muted-foreground\">Study Time</p>\n <p className=\"text-2xl font-bold\">42.5h</p>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-lg\">Course Progress</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {coursesWithProgress.map((course) => {\n const lessons = course.modules.reduce((sum, m) => sum + m.lessons.length, 0);\n const done = course.modules.reduce(\n (sum, m) => sum + m.lessons.filter((l) => l.completed).length,\n 0\n );\n return (\n <div key={course.id} className=\"rounded-lg border p-4\">\n <div className=\"flex items-center justify-between mb-2\">\n <div>\n <h3 className=\"text-sm font-medium\">{course.title}</h3>\n <p className=\"text-xs text-muted-foreground\">\n {course.instructor} - {course.duration}\n </p>\n </div>\n <Badge\n variant={course.progress && course.progress >= 80 ? 'default' : 'secondary'}\n >\n {course.progress}%\n </Badge>\n </div>\n <div className=\"h-2 rounded-full bg-muted mb-2\">\n <div\n className=\"h-2 rounded-full bg-primary transition-all\"\n style={{ width: `${course.progress}%` }}\n />\n </div>\n <div className=\"flex justify-between text-xs text-muted-foreground\">\n <span>\n {done}/{lessons} lessons completed\n </span>\n <span>{course.category}</span>\n </div>\n <div className=\"mt-3 space-y-1\">\n {course.modules.map((mod) => (\n <div key={mod.id} className=\"flex items-center gap-2 text-xs\">\n <div className=\"flex-1 min-w-0\">\n <span className=\"truncate\">{mod.title}</span>\n </div>\n <span className=\"text-muted-foreground\">\n {mod.lessons.filter((l) => l.completed).length}/{mod.lessons.length}\n </span>\n </div>\n ))}\n </div>\n </div>\n );\n })}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-lg\">Recent Assessment Scores</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n {grades\n .filter((g) => g.status === 'graded')\n .map((g) => (\n <div key={g.id} className=\"flex items-center justify-between rounded-lg border p-3\">\n <div>\n <p className=\"text-sm font-medium\">{g.assessmentTitle}</p>\n <p className=\"text-xs text-muted-foreground\">{g.courseName}</p>\n </div>\n <div className=\"flex items-center gap-3\">\n <div className=\"w-16\">\n <div className=\"h-2 rounded-full bg-muted\">\n <div\n className=\"h-2 rounded-full bg-primary\"\n style={{ width: `${(g.score / g.maxScore) * 100}%` }}\n />\n </div>\n </div>\n <span className=\"text-sm font-bold\">\n {g.score}/{g.maxScore}\n </span>\n <Badge variant=\"outline\">{g.grade}</Badge>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TeachingAnalyticsPage.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/pages/TeachingAnalyticsPage.tsx"],"names":[],"mappings":"AAKA,wBAAgB,qBAAqB,4CAiNpC"}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { useBuildMyIQStore as e } from "../store/buildmyiqStore.js";
|
|
2
|
+
import { GraduationCap as t, Star as n, TrendingUp as r, Users as i } from "lucide-react";
|
|
3
|
+
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
4
|
+
import { Badge as s, Card as c, CardContent as l, CardHeader as u, CardTitle as d } from "@burdenoff/fe-libs/ui";
|
|
5
|
+
//#region src/buildmyiq/pages/TeachingAnalyticsPage.tsx
|
|
6
|
+
function f() {
|
|
7
|
+
let { courses: f, students: p, grades: m } = e(), h = m.filter((e) => e.status === "graded"), g = h.length > 0 ? Math.round(h.reduce((e, t) => e + t.score / t.maxScore * 100, 0) / h.length) : 0, _ = f.reduce((e, t) => e + t.students, 0), v = f.length > 0 ? (f.reduce((e, t) => e + t.rating, 0) / f.length).toFixed(1) : "0", y = [
|
|
8
|
+
{
|
|
9
|
+
grade: "A",
|
|
10
|
+
count: m.filter((e) => e.grade.startsWith("A")).length,
|
|
11
|
+
color: "bg-green-500"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
grade: "B",
|
|
15
|
+
count: m.filter((e) => e.grade.startsWith("B")).length,
|
|
16
|
+
color: "bg-blue-500"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
grade: "C",
|
|
20
|
+
count: m.filter((e) => e.grade.startsWith("C")).length,
|
|
21
|
+
color: "bg-yellow-500"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
grade: "D",
|
|
25
|
+
count: m.filter((e) => e.grade.startsWith("D")).length,
|
|
26
|
+
color: "bg-orange-500"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
grade: "F",
|
|
30
|
+
count: m.filter((e) => e.grade.startsWith("F")).length,
|
|
31
|
+
color: "bg-red-500"
|
|
32
|
+
}
|
|
33
|
+
], b = Math.max(...y.map((e) => e.count), 1);
|
|
34
|
+
return /* @__PURE__ */ o("div", {
|
|
35
|
+
className: "space-y-6 p-6",
|
|
36
|
+
children: [
|
|
37
|
+
/* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("h1", {
|
|
38
|
+
className: "text-2xl font-semibold",
|
|
39
|
+
children: "Teaching Analytics"
|
|
40
|
+
}), /* @__PURE__ */ a("p", {
|
|
41
|
+
className: "text-sm text-muted-foreground",
|
|
42
|
+
children: "Insights into your teaching performance and student outcomes"
|
|
43
|
+
})] }),
|
|
44
|
+
/* @__PURE__ */ a("div", {
|
|
45
|
+
className: "grid grid-cols-1 md:grid-cols-4 gap-4",
|
|
46
|
+
children: [
|
|
47
|
+
{
|
|
48
|
+
label: "Avg. Score",
|
|
49
|
+
value: `${g}%`,
|
|
50
|
+
icon: r,
|
|
51
|
+
color: "text-green-600"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
label: "Total Students",
|
|
55
|
+
value: _.toString(),
|
|
56
|
+
icon: i,
|
|
57
|
+
color: "text-blue-600"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
label: "Avg. Rating",
|
|
61
|
+
value: `${v}/5`,
|
|
62
|
+
icon: n,
|
|
63
|
+
color: "text-yellow-600"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
label: "Submissions Graded",
|
|
67
|
+
value: h.length.toString(),
|
|
68
|
+
icon: t,
|
|
69
|
+
color: "text-purple-600"
|
|
70
|
+
}
|
|
71
|
+
].map((e) => /* @__PURE__ */ a(c, { children: /* @__PURE__ */ a(l, {
|
|
72
|
+
className: "pt-6",
|
|
73
|
+
children: /* @__PURE__ */ o("div", {
|
|
74
|
+
className: "flex items-center gap-3",
|
|
75
|
+
children: [/* @__PURE__ */ a(e.icon, { className: `h-5 w-5 ${e.color}` }), /* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("p", {
|
|
76
|
+
className: "text-sm text-muted-foreground",
|
|
77
|
+
children: e.label
|
|
78
|
+
}), /* @__PURE__ */ a("p", {
|
|
79
|
+
className: "text-2xl font-bold",
|
|
80
|
+
children: e.value
|
|
81
|
+
})] })]
|
|
82
|
+
})
|
|
83
|
+
}) }, e.label))
|
|
84
|
+
}),
|
|
85
|
+
/* @__PURE__ */ o("div", {
|
|
86
|
+
className: "grid grid-cols-1 lg:grid-cols-2 gap-4",
|
|
87
|
+
children: [/* @__PURE__ */ o(c, { children: [/* @__PURE__ */ a(u, { children: /* @__PURE__ */ a(d, {
|
|
88
|
+
className: "text-lg",
|
|
89
|
+
children: "Course Performance"
|
|
90
|
+
}) }), /* @__PURE__ */ a(l, {
|
|
91
|
+
className: "p-0",
|
|
92
|
+
children: /* @__PURE__ */ a("div", {
|
|
93
|
+
className: "overflow-x-auto",
|
|
94
|
+
children: /* @__PURE__ */ o("table", {
|
|
95
|
+
className: "w-full",
|
|
96
|
+
children: [/* @__PURE__ */ a("thead", { children: /* @__PURE__ */ o("tr", {
|
|
97
|
+
className: "border-b bg-muted/50",
|
|
98
|
+
children: [
|
|
99
|
+
/* @__PURE__ */ a("th", {
|
|
100
|
+
className: "text-left text-xs font-medium text-muted-foreground p-3",
|
|
101
|
+
children: "Course"
|
|
102
|
+
}),
|
|
103
|
+
/* @__PURE__ */ a("th", {
|
|
104
|
+
className: "text-left text-xs font-medium text-muted-foreground p-3",
|
|
105
|
+
children: "Students"
|
|
106
|
+
}),
|
|
107
|
+
/* @__PURE__ */ a("th", {
|
|
108
|
+
className: "text-left text-xs font-medium text-muted-foreground p-3",
|
|
109
|
+
children: "Rating"
|
|
110
|
+
}),
|
|
111
|
+
/* @__PURE__ */ a("th", {
|
|
112
|
+
className: "text-left text-xs font-medium text-muted-foreground p-3",
|
|
113
|
+
children: "Completion"
|
|
114
|
+
})
|
|
115
|
+
]
|
|
116
|
+
}) }), /* @__PURE__ */ a("tbody", { children: f.map((e) => /* @__PURE__ */ o("tr", {
|
|
117
|
+
className: "border-b",
|
|
118
|
+
children: [
|
|
119
|
+
/* @__PURE__ */ a("td", {
|
|
120
|
+
className: "p-3 text-sm font-medium",
|
|
121
|
+
children: e.title
|
|
122
|
+
}),
|
|
123
|
+
/* @__PURE__ */ a("td", {
|
|
124
|
+
className: "p-3 text-sm",
|
|
125
|
+
children: e.students
|
|
126
|
+
}),
|
|
127
|
+
/* @__PURE__ */ a("td", {
|
|
128
|
+
className: "p-3",
|
|
129
|
+
children: /* @__PURE__ */ o("div", {
|
|
130
|
+
className: "flex items-center gap-1",
|
|
131
|
+
children: [/* @__PURE__ */ a(n, { className: "h-3.5 w-3.5 text-yellow-500 fill-yellow-500" }), /* @__PURE__ */ a("span", {
|
|
132
|
+
className: "text-sm",
|
|
133
|
+
children: e.rating
|
|
134
|
+
})]
|
|
135
|
+
})
|
|
136
|
+
}),
|
|
137
|
+
/* @__PURE__ */ a("td", {
|
|
138
|
+
className: "p-3",
|
|
139
|
+
children: /* @__PURE__ */ o("div", {
|
|
140
|
+
className: "flex items-center gap-2",
|
|
141
|
+
children: [/* @__PURE__ */ a("div", {
|
|
142
|
+
className: "h-2 w-16 rounded-full bg-muted",
|
|
143
|
+
children: /* @__PURE__ */ a("div", {
|
|
144
|
+
className: "h-2 rounded-full bg-primary",
|
|
145
|
+
style: { width: `${e.progress || 0}%` }
|
|
146
|
+
})
|
|
147
|
+
}), /* @__PURE__ */ o("span", {
|
|
148
|
+
className: "text-xs",
|
|
149
|
+
children: [e.progress || 0, "%"]
|
|
150
|
+
})]
|
|
151
|
+
})
|
|
152
|
+
})
|
|
153
|
+
]
|
|
154
|
+
}, e.id)) })]
|
|
155
|
+
})
|
|
156
|
+
})
|
|
157
|
+
})] }), /* @__PURE__ */ o(c, { children: [/* @__PURE__ */ a(u, { children: /* @__PURE__ */ a(d, {
|
|
158
|
+
className: "text-lg",
|
|
159
|
+
children: "Grade Distribution"
|
|
160
|
+
}) }), /* @__PURE__ */ a(l, { children: /* @__PURE__ */ a("div", {
|
|
161
|
+
className: "flex items-end gap-6 h-40 px-4",
|
|
162
|
+
children: y.map((e) => /* @__PURE__ */ o("div", {
|
|
163
|
+
className: "flex-1 flex flex-col items-center gap-1",
|
|
164
|
+
children: [
|
|
165
|
+
/* @__PURE__ */ a("span", {
|
|
166
|
+
className: "text-sm font-bold",
|
|
167
|
+
children: e.count
|
|
168
|
+
}),
|
|
169
|
+
/* @__PURE__ */ a("div", {
|
|
170
|
+
className: `w-full rounded-t ${e.color} transition-all`,
|
|
171
|
+
style: {
|
|
172
|
+
height: `${e.count / b * 100}%`,
|
|
173
|
+
minHeight: e.count > 0 ? "8px" : "0"
|
|
174
|
+
}
|
|
175
|
+
}),
|
|
176
|
+
/* @__PURE__ */ a("span", {
|
|
177
|
+
className: "text-sm font-medium",
|
|
178
|
+
children: e.grade
|
|
179
|
+
})
|
|
180
|
+
]
|
|
181
|
+
}, e.grade))
|
|
182
|
+
}) })] })]
|
|
183
|
+
}),
|
|
184
|
+
/* @__PURE__ */ o(c, { children: [/* @__PURE__ */ a(u, { children: /* @__PURE__ */ a(d, {
|
|
185
|
+
className: "text-lg",
|
|
186
|
+
children: "Student Performance Overview"
|
|
187
|
+
}) }), /* @__PURE__ */ a(l, { children: /* @__PURE__ */ a("div", {
|
|
188
|
+
className: "space-y-3",
|
|
189
|
+
children: p.slice(0, 8).map((e) => /* @__PURE__ */ o("div", {
|
|
190
|
+
className: "flex items-center gap-3",
|
|
191
|
+
children: [
|
|
192
|
+
/* @__PURE__ */ a("div", {
|
|
193
|
+
className: "w-8 h-8 rounded-full bg-primary/10 flex items-center justify-center text-xs font-bold shrink-0",
|
|
194
|
+
children: e.avatar
|
|
195
|
+
}),
|
|
196
|
+
/* @__PURE__ */ a("div", {
|
|
197
|
+
className: "flex-1 min-w-0",
|
|
198
|
+
children: /* @__PURE__ */ o("div", {
|
|
199
|
+
className: "flex items-center gap-2",
|
|
200
|
+
children: [/* @__PURE__ */ a("span", {
|
|
201
|
+
className: "text-sm font-medium",
|
|
202
|
+
children: e.name
|
|
203
|
+
}), /* @__PURE__ */ a(s, {
|
|
204
|
+
className: `text-xs ${e.status === "active" ? "bg-green-100 text-green-700" : e.status === "at_risk" ? "bg-yellow-100 text-yellow-700" : "bg-gray-100 text-gray-700"}`,
|
|
205
|
+
children: e.status.replace("_", " ")
|
|
206
|
+
})]
|
|
207
|
+
})
|
|
208
|
+
}),
|
|
209
|
+
/* @__PURE__ */ o("div", {
|
|
210
|
+
className: "flex items-center gap-4 shrink-0",
|
|
211
|
+
children: [/* @__PURE__ */ o("div", {
|
|
212
|
+
className: "text-right",
|
|
213
|
+
children: [/* @__PURE__ */ a("p", {
|
|
214
|
+
className: "text-sm font-medium",
|
|
215
|
+
children: e.averageGrade
|
|
216
|
+
}), /* @__PURE__ */ a("p", {
|
|
217
|
+
className: "text-xs text-muted-foreground",
|
|
218
|
+
children: "Grade"
|
|
219
|
+
})]
|
|
220
|
+
}), /* @__PURE__ */ o("div", {
|
|
221
|
+
className: "w-24",
|
|
222
|
+
children: [/* @__PURE__ */ a("div", {
|
|
223
|
+
className: "h-2 rounded-full bg-muted",
|
|
224
|
+
children: /* @__PURE__ */ a("div", {
|
|
225
|
+
className: "h-2 rounded-full bg-primary",
|
|
226
|
+
style: { width: `${e.overallProgress}%` }
|
|
227
|
+
})
|
|
228
|
+
}), /* @__PURE__ */ o("p", {
|
|
229
|
+
className: "text-xs text-muted-foreground text-right",
|
|
230
|
+
children: [e.overallProgress, "%"]
|
|
231
|
+
})]
|
|
232
|
+
})]
|
|
233
|
+
})
|
|
234
|
+
]
|
|
235
|
+
}, e.id))
|
|
236
|
+
}) })] })
|
|
237
|
+
]
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
//#endregion
|
|
241
|
+
export { f as TeachingAnalyticsPage };
|
|
242
|
+
|
|
243
|
+
//# sourceMappingURL=TeachingAnalyticsPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TeachingAnalyticsPage.js","names":[],"sources":["../../../src/buildmyiq/pages/TeachingAnalyticsPage.tsx"],"sourcesContent":["import { Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { Badge } from '@burdenoff/fe-libs/ui';\nimport { BarChart3, TrendingUp, Users, GraduationCap, Star } from 'lucide-react';\nimport { useBuildMyIQStore } from '../store/buildmyiqStore';\n\nexport function TeachingAnalyticsPage() {\n const { courses, students, grades } = useBuildMyIQStore();\n\n const gradedEntries = grades.filter((g) => g.status === 'graded');\n const avgScore =\n gradedEntries.length > 0\n ? Math.round(\n gradedEntries.reduce((sum, g) => sum + (g.score / g.maxScore) * 100, 0) /\n gradedEntries.length\n )\n : 0;\n const totalStudents = courses.reduce((sum, c) => sum + c.students, 0);\n const avgRating =\n courses.length > 0\n ? (courses.reduce((sum, c) => sum + c.rating, 0) / courses.length).toFixed(1)\n : '0';\n\n const gradeDistribution = [\n {\n grade: 'A',\n count: grades.filter((g) => g.grade.startsWith('A')).length,\n color: 'bg-green-500',\n },\n {\n grade: 'B',\n count: grades.filter((g) => g.grade.startsWith('B')).length,\n color: 'bg-blue-500',\n },\n {\n grade: 'C',\n count: grades.filter((g) => g.grade.startsWith('C')).length,\n color: 'bg-yellow-500',\n },\n {\n grade: 'D',\n count: grades.filter((g) => g.grade.startsWith('D')).length,\n color: 'bg-orange-500',\n },\n {\n grade: 'F',\n count: grades.filter((g) => g.grade.startsWith('F')).length,\n color: 'bg-red-500',\n },\n ];\n const maxGrade = Math.max(...gradeDistribution.map((g) => g.count), 1);\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Teaching Analytics</h1>\n <p className=\"text-sm text-muted-foreground\">\n Insights into your teaching performance and student outcomes\n </p>\n </div>\n\n <div className=\"grid grid-cols-1 md:grid-cols-4 gap-4\">\n {[\n { label: 'Avg. Score', value: `${avgScore}%`, icon: TrendingUp, color: 'text-green-600' },\n {\n label: 'Total Students',\n value: totalStudents.toString(),\n icon: Users,\n color: 'text-blue-600',\n },\n { label: 'Avg. Rating', value: `${avgRating}/5`, icon: Star, color: 'text-yellow-600' },\n {\n label: 'Submissions Graded',\n value: gradedEntries.length.toString(),\n icon: GraduationCap,\n color: 'text-purple-600',\n },\n ].map((kpi) => (\n <Card key={kpi.label}>\n <CardContent className=\"pt-6\">\n <div className=\"flex items-center gap-3\">\n <kpi.icon className={`h-5 w-5 ${kpi.color}`} />\n <div>\n <p className=\"text-sm text-muted-foreground\">{kpi.label}</p>\n <p className=\"text-2xl font-bold\">{kpi.value}</p>\n </div>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-lg\">Course Performance</CardTitle>\n </CardHeader>\n <CardContent className=\"p-0\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b bg-muted/50\">\n <th className=\"text-left text-xs font-medium text-muted-foreground p-3\">\n Course\n </th>\n <th className=\"text-left text-xs font-medium text-muted-foreground p-3\">\n Students\n </th>\n <th className=\"text-left text-xs font-medium text-muted-foreground p-3\">\n Rating\n </th>\n <th className=\"text-left text-xs font-medium text-muted-foreground p-3\">\n Completion\n </th>\n </tr>\n </thead>\n <tbody>\n {courses.map((c) => (\n <tr key={c.id} className=\"border-b\">\n <td className=\"p-3 text-sm font-medium\">{c.title}</td>\n <td className=\"p-3 text-sm\">{c.students}</td>\n <td className=\"p-3\">\n <div className=\"flex items-center gap-1\">\n <Star className=\"h-3.5 w-3.5 text-yellow-500 fill-yellow-500\" />\n <span className=\"text-sm\">{c.rating}</span>\n </div>\n </td>\n <td className=\"p-3\">\n <div className=\"flex items-center gap-2\">\n <div className=\"h-2 w-16 rounded-full bg-muted\">\n <div\n className=\"h-2 rounded-full bg-primary\"\n style={{ width: `${c.progress || 0}%` }}\n />\n </div>\n <span className=\"text-xs\">{c.progress || 0}%</span>\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-lg\">Grade Distribution</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"flex items-end gap-6 h-40 px-4\">\n {gradeDistribution.map((g) => (\n <div key={g.grade} className=\"flex-1 flex flex-col items-center gap-1\">\n <span className=\"text-sm font-bold\">{g.count}</span>\n <div\n className={`w-full rounded-t ${g.color} transition-all`}\n style={{\n height: `${(g.count / maxGrade) * 100}%`,\n minHeight: g.count > 0 ? '8px' : '0',\n }}\n />\n <span className=\"text-sm font-medium\">{g.grade}</span>\n </div>\n ))}\n </div>\n </CardContent>\n </Card>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-lg\">Student Performance Overview</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n {students.slice(0, 8).map((student) => (\n <div key={student.id} className=\"flex items-center gap-3\">\n <div className=\"w-8 h-8 rounded-full bg-primary/10 flex items-center justify-center text-xs font-bold shrink-0\">\n {student.avatar}\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium\">{student.name}</span>\n <Badge\n className={`text-xs ${student.status === 'active' ? 'bg-green-100 text-green-700' : student.status === 'at_risk' ? 'bg-yellow-100 text-yellow-700' : 'bg-gray-100 text-gray-700'}`}\n >\n {student.status.replace('_', ' ')}\n </Badge>\n </div>\n </div>\n <div className=\"flex items-center gap-4 shrink-0\">\n <div className=\"text-right\">\n <p className=\"text-sm font-medium\">{student.averageGrade}</p>\n <p className=\"text-xs text-muted-foreground\">Grade</p>\n </div>\n <div className=\"w-24\">\n <div className=\"h-2 rounded-full bg-muted\">\n <div\n className=\"h-2 rounded-full bg-primary\"\n style={{ width: `${student.overallProgress}%` }}\n />\n </div>\n <p className=\"text-xs text-muted-foreground text-right\">\n {student.overallProgress}%\n </p>\n </div>\n </div>\n </div>\n ))}\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TeachingContentPage.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/pages/TeachingContentPage.tsx"],"names":[],"mappings":"AAgCA,wBAAgB,mBAAmB,4CAqIlC"}
|