@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.
Files changed (182) hide show
  1. package/README.md +12 -0
  2. package/dist/buildmyiq/BuildMyIQRoot.d.ts +5 -0
  3. package/dist/buildmyiq/BuildMyIQRoot.d.ts.map +1 -0
  4. package/dist/buildmyiq/BuildMyIQRoot.js +329 -0
  5. package/dist/buildmyiq/BuildMyIQRoot.js.map +1 -0
  6. package/dist/buildmyiq/BuildMyIQRoutes.d.ts +2 -0
  7. package/dist/buildmyiq/BuildMyIQRoutes.d.ts.map +1 -0
  8. package/dist/buildmyiq/BuildMyIQRoutes.js +171 -0
  9. package/dist/buildmyiq/BuildMyIQRoutes.js.map +1 -0
  10. package/dist/buildmyiq/index.d.ts +5 -0
  11. package/dist/buildmyiq/index.d.ts.map +1 -0
  12. package/dist/buildmyiq/index.js +3 -0
  13. package/dist/buildmyiq/pages/AdminAdminAnalyticsPagePage.d.ts +2 -0
  14. package/dist/buildmyiq/pages/AdminAdminAnalyticsPagePage.d.ts.map +1 -0
  15. package/dist/buildmyiq/pages/AdminAdminAnalyticsPagePage.js +271 -0
  16. package/dist/buildmyiq/pages/AdminAdminAnalyticsPagePage.js.map +1 -0
  17. package/dist/buildmyiq/pages/AdminAdminCoursesPagePage.d.ts +2 -0
  18. package/dist/buildmyiq/pages/AdminAdminCoursesPagePage.d.ts.map +1 -0
  19. package/dist/buildmyiq/pages/AdminAdminCoursesPagePage.js +212 -0
  20. package/dist/buildmyiq/pages/AdminAdminCoursesPagePage.js.map +1 -0
  21. package/dist/buildmyiq/pages/AdminAdminUsersPagePage.d.ts +2 -0
  22. package/dist/buildmyiq/pages/AdminAdminUsersPagePage.d.ts.map +1 -0
  23. package/dist/buildmyiq/pages/AdminAdminUsersPagePage.js +235 -0
  24. package/dist/buildmyiq/pages/AdminAdminUsersPagePage.js.map +1 -0
  25. package/dist/buildmyiq/pages/AdminIndexPage.d.ts +2 -0
  26. package/dist/buildmyiq/pages/AdminIndexPage.d.ts.map +1 -0
  27. package/dist/buildmyiq/pages/AdminIndexPage.js +274 -0
  28. package/dist/buildmyiq/pages/AdminIndexPage.js.map +1 -0
  29. package/dist/buildmyiq/pages/AiAichatPagePage.d.ts +2 -0
  30. package/dist/buildmyiq/pages/AiAichatPagePage.d.ts.map +1 -0
  31. package/dist/buildmyiq/pages/AiAichatPagePage.js +209 -0
  32. package/dist/buildmyiq/pages/AiAichatPagePage.js.map +1 -0
  33. package/dist/buildmyiq/pages/AiAicontentGenerationPagePage.d.ts +2 -0
  34. package/dist/buildmyiq/pages/AiAicontentGenerationPagePage.d.ts.map +1 -0
  35. package/dist/buildmyiq/pages/AiAicontentGenerationPagePage.js +318 -0
  36. package/dist/buildmyiq/pages/AiAicontentGenerationPagePage.js.map +1 -0
  37. package/dist/buildmyiq/pages/AiAitutoringPagePage.d.ts +2 -0
  38. package/dist/buildmyiq/pages/AiAitutoringPagePage.d.ts.map +1 -0
  39. package/dist/buildmyiq/pages/AiAitutoringPagePage.js +290 -0
  40. package/dist/buildmyiq/pages/AiAitutoringPagePage.js.map +1 -0
  41. package/dist/buildmyiq/pages/AiIndexPage.d.ts +2 -0
  42. package/dist/buildmyiq/pages/AiIndexPage.d.ts.map +1 -0
  43. package/dist/buildmyiq/pages/AiIndexPage.js +191 -0
  44. package/dist/buildmyiq/pages/AiIndexPage.js.map +1 -0
  45. package/dist/buildmyiq/pages/AssessmentsAssessmentBuilderPagePage.d.ts +2 -0
  46. package/dist/buildmyiq/pages/AssessmentsAssessmentBuilderPagePage.d.ts.map +1 -0
  47. package/dist/buildmyiq/pages/AssessmentsAssessmentBuilderPagePage.js +290 -0
  48. package/dist/buildmyiq/pages/AssessmentsAssessmentBuilderPagePage.js.map +1 -0
  49. package/dist/buildmyiq/pages/AssessmentsAssessmentGradingPagePage.d.ts +2 -0
  50. package/dist/buildmyiq/pages/AssessmentsAssessmentGradingPagePage.d.ts.map +1 -0
  51. package/dist/buildmyiq/pages/AssessmentsAssessmentGradingPagePage.js +215 -0
  52. package/dist/buildmyiq/pages/AssessmentsAssessmentGradingPagePage.js.map +1 -0
  53. package/dist/buildmyiq/pages/AssessmentsAssessmentResultsPagePage.d.ts +2 -0
  54. package/dist/buildmyiq/pages/AssessmentsAssessmentResultsPagePage.d.ts.map +1 -0
  55. package/dist/buildmyiq/pages/AssessmentsAssessmentResultsPagePage.js +224 -0
  56. package/dist/buildmyiq/pages/AssessmentsAssessmentResultsPagePage.js.map +1 -0
  57. package/dist/buildmyiq/pages/AssessmentsAssessmentTakePagePage.d.ts +2 -0
  58. package/dist/buildmyiq/pages/AssessmentsAssessmentTakePagePage.d.ts.map +1 -0
  59. package/dist/buildmyiq/pages/AssessmentsAssessmentTakePagePage.js +174 -0
  60. package/dist/buildmyiq/pages/AssessmentsAssessmentTakePagePage.js.map +1 -0
  61. package/dist/buildmyiq/pages/AssessmentsIndexPage.d.ts +2 -0
  62. package/dist/buildmyiq/pages/AssessmentsIndexPage.d.ts.map +1 -0
  63. package/dist/buildmyiq/pages/AssessmentsIndexPage.js +174 -0
  64. package/dist/buildmyiq/pages/AssessmentsIndexPage.js.map +1 -0
  65. package/dist/buildmyiq/pages/CalendarPage.d.ts +2 -0
  66. package/dist/buildmyiq/pages/CalendarPage.d.ts.map +1 -0
  67. package/dist/buildmyiq/pages/CalendarPage.js +242 -0
  68. package/dist/buildmyiq/pages/CalendarPage.js.map +1 -0
  69. package/dist/buildmyiq/pages/CommunicationAnnouncementsPagePage.d.ts +2 -0
  70. package/dist/buildmyiq/pages/CommunicationAnnouncementsPagePage.d.ts.map +1 -0
  71. package/dist/buildmyiq/pages/CommunicationAnnouncementsPagePage.js +180 -0
  72. package/dist/buildmyiq/pages/CommunicationAnnouncementsPagePage.js.map +1 -0
  73. package/dist/buildmyiq/pages/CommunicationForumsPagePage.d.ts +2 -0
  74. package/dist/buildmyiq/pages/CommunicationForumsPagePage.d.ts.map +1 -0
  75. package/dist/buildmyiq/pages/CommunicationForumsPagePage.js +154 -0
  76. package/dist/buildmyiq/pages/CommunicationForumsPagePage.js.map +1 -0
  77. package/dist/buildmyiq/pages/CommunicationIndexPage.d.ts +2 -0
  78. package/dist/buildmyiq/pages/CommunicationIndexPage.d.ts.map +1 -0
  79. package/dist/buildmyiq/pages/CommunicationIndexPage.js +191 -0
  80. package/dist/buildmyiq/pages/CommunicationIndexPage.js.map +1 -0
  81. package/dist/buildmyiq/pages/CommunicationMessagesPagePage.d.ts +2 -0
  82. package/dist/buildmyiq/pages/CommunicationMessagesPagePage.d.ts.map +1 -0
  83. package/dist/buildmyiq/pages/CommunicationMessagesPagePage.js +261 -0
  84. package/dist/buildmyiq/pages/CommunicationMessagesPagePage.js.map +1 -0
  85. package/dist/buildmyiq/pages/CoursesCourseContentPagePage.d.ts +2 -0
  86. package/dist/buildmyiq/pages/CoursesCourseContentPagePage.d.ts.map +1 -0
  87. package/dist/buildmyiq/pages/CoursesCourseContentPagePage.js +164 -0
  88. package/dist/buildmyiq/pages/CoursesCourseContentPagePage.js.map +1 -0
  89. package/dist/buildmyiq/pages/CoursesCourseCreatePagePage.d.ts +2 -0
  90. package/dist/buildmyiq/pages/CoursesCourseCreatePagePage.d.ts.map +1 -0
  91. package/dist/buildmyiq/pages/CoursesCourseCreatePagePage.js +239 -0
  92. package/dist/buildmyiq/pages/CoursesCourseCreatePagePage.js.map +1 -0
  93. package/dist/buildmyiq/pages/CoursesCourseDashboardPagePage.d.ts +2 -0
  94. package/dist/buildmyiq/pages/CoursesCourseDashboardPagePage.d.ts.map +1 -0
  95. package/dist/buildmyiq/pages/CoursesCourseDashboardPagePage.js +368 -0
  96. package/dist/buildmyiq/pages/CoursesCourseDashboardPagePage.js.map +1 -0
  97. package/dist/buildmyiq/pages/CoursesCourseDetailPagePage.d.ts +2 -0
  98. package/dist/buildmyiq/pages/CoursesCourseDetailPagePage.d.ts.map +1 -0
  99. package/dist/buildmyiq/pages/CoursesCourseDetailPagePage.js +219 -0
  100. package/dist/buildmyiq/pages/CoursesCourseDetailPagePage.js.map +1 -0
  101. package/dist/buildmyiq/pages/CoursesCourseListPagePage.d.ts +2 -0
  102. package/dist/buildmyiq/pages/CoursesCourseListPagePage.d.ts.map +1 -0
  103. package/dist/buildmyiq/pages/CoursesCourseListPagePage.js +153 -0
  104. package/dist/buildmyiq/pages/CoursesCourseListPagePage.js.map +1 -0
  105. package/dist/buildmyiq/pages/CoursesIndexPage.d.ts +2 -0
  106. package/dist/buildmyiq/pages/CoursesIndexPage.d.ts.map +1 -0
  107. package/dist/buildmyiq/pages/CoursesIndexPage.js +138 -0
  108. package/dist/buildmyiq/pages/CoursesIndexPage.js.map +1 -0
  109. package/dist/buildmyiq/pages/DashboardPage.d.ts +2 -0
  110. package/dist/buildmyiq/pages/DashboardPage.d.ts.map +1 -0
  111. package/dist/buildmyiq/pages/DashboardPage.js +264 -0
  112. package/dist/buildmyiq/pages/DashboardPage.js.map +1 -0
  113. package/dist/buildmyiq/pages/MessagesPage.d.ts +2 -0
  114. package/dist/buildmyiq/pages/MessagesPage.d.ts.map +1 -0
  115. package/dist/buildmyiq/pages/MessagesPage.js +261 -0
  116. package/dist/buildmyiq/pages/MessagesPage.js.map +1 -0
  117. package/dist/buildmyiq/pages/ProfileProgressPage.d.ts +2 -0
  118. package/dist/buildmyiq/pages/ProfileProgressPage.d.ts.map +1 -0
  119. package/dist/buildmyiq/pages/ProfileProgressPage.js +194 -0
  120. package/dist/buildmyiq/pages/ProfileProgressPage.js.map +1 -0
  121. package/dist/buildmyiq/pages/TeachingAnalyticsPage.d.ts +2 -0
  122. package/dist/buildmyiq/pages/TeachingAnalyticsPage.d.ts.map +1 -0
  123. package/dist/buildmyiq/pages/TeachingAnalyticsPage.js +243 -0
  124. package/dist/buildmyiq/pages/TeachingAnalyticsPage.js.map +1 -0
  125. package/dist/buildmyiq/pages/TeachingContentPage.d.ts +2 -0
  126. package/dist/buildmyiq/pages/TeachingContentPage.d.ts.map +1 -0
  127. package/dist/buildmyiq/pages/TeachingContentPage.js +165 -0
  128. package/dist/buildmyiq/pages/TeachingContentPage.js.map +1 -0
  129. package/dist/buildmyiq/pages/TeachingCoursesPage.d.ts +2 -0
  130. package/dist/buildmyiq/pages/TeachingCoursesPage.d.ts.map +1 -0
  131. package/dist/buildmyiq/pages/TeachingCoursesPage.js +151 -0
  132. package/dist/buildmyiq/pages/TeachingCoursesPage.js.map +1 -0
  133. package/dist/buildmyiq/pages/TeachingGradingPage.d.ts +2 -0
  134. package/dist/buildmyiq/pages/TeachingGradingPage.d.ts.map +1 -0
  135. package/dist/buildmyiq/pages/TeachingGradingPage.js +204 -0
  136. package/dist/buildmyiq/pages/TeachingGradingPage.js.map +1 -0
  137. package/dist/buildmyiq/pages/TeachingIndexPage.d.ts +2 -0
  138. package/dist/buildmyiq/pages/TeachingIndexPage.d.ts.map +1 -0
  139. package/dist/buildmyiq/pages/TeachingIndexPage.js +220 -0
  140. package/dist/buildmyiq/pages/TeachingIndexPage.js.map +1 -0
  141. package/dist/buildmyiq/pages/TeachingLessonPlansPage.d.ts +2 -0
  142. package/dist/buildmyiq/pages/TeachingLessonPlansPage.d.ts.map +1 -0
  143. package/dist/buildmyiq/pages/TeachingLessonPlansPage.js +157 -0
  144. package/dist/buildmyiq/pages/TeachingLessonPlansPage.js.map +1 -0
  145. package/dist/buildmyiq/pages/TeachingQuestionsPage.d.ts +2 -0
  146. package/dist/buildmyiq/pages/TeachingQuestionsPage.d.ts.map +1 -0
  147. package/dist/buildmyiq/pages/TeachingQuestionsPage.js +184 -0
  148. package/dist/buildmyiq/pages/TeachingQuestionsPage.js.map +1 -0
  149. package/dist/buildmyiq/pages/TeachingStudentsPage.d.ts +2 -0
  150. package/dist/buildmyiq/pages/TeachingStudentsPage.d.ts.map +1 -0
  151. package/dist/buildmyiq/pages/TeachingStudentsPage.js +204 -0
  152. package/dist/buildmyiq/pages/TeachingStudentsPage.js.map +1 -0
  153. package/dist/buildmyiq/providers/BuildMyIQProvider.d.ts +6 -0
  154. package/dist/buildmyiq/providers/BuildMyIQProvider.d.ts.map +1 -0
  155. package/dist/buildmyiq/providers/BuildMyIQProvider.js +27 -0
  156. package/dist/buildmyiq/providers/BuildMyIQProvider.js.map +1 -0
  157. package/dist/buildmyiq/store/buildmyiqStore.d.ts +189 -0
  158. package/dist/buildmyiq/store/buildmyiqStore.d.ts.map +1 -0
  159. package/dist/buildmyiq/store/buildmyiqStore.js +1160 -0
  160. package/dist/buildmyiq/store/buildmyiqStore.js.map +1 -0
  161. package/dist/buildmyiq/types/index.d.ts +51 -0
  162. package/dist/buildmyiq/types/index.d.ts.map +1 -0
  163. package/dist/buildmyiq/utils/cn.d.ts +4 -0
  164. package/dist/buildmyiq/utils/cn.d.ts.map +1 -0
  165. package/dist/buildmyiq/utils/navigation.d.ts +2 -0
  166. package/dist/buildmyiq/utils/navigation.d.ts.map +1 -0
  167. package/dist/buildmyiq/utils/navigation.js +8 -0
  168. package/dist/buildmyiq/utils/navigation.js.map +1 -0
  169. package/dist/dev/main.d.ts +2 -0
  170. package/dist/dev/main.d.ts.map +1 -0
  171. package/dist/generated/global-operations.d.ts +2 -0
  172. package/dist/generated/global-operations.d.ts.map +1 -0
  173. package/dist/generated/global-types.d.ts +18199 -0
  174. package/dist/generated/global-types.d.ts.map +1 -0
  175. package/dist/generated/wspace-operations.d.ts +2 -0
  176. package/dist/generated/wspace-operations.d.ts.map +1 -0
  177. package/dist/generated/wspace-types.d.ts +43046 -0
  178. package/dist/generated/wspace-types.d.ts.map +1 -0
  179. package/dist/index.d.ts +2 -0
  180. package/dist/index.d.ts.map +1 -0
  181. package/dist/index.js +5 -0
  182. package/package.json +107 -0
@@ -0,0 +1,220 @@
1
+ import { useBuildMyIQStore as e } from "../store/buildmyiqStore.js";
2
+ import { BookOpen as t, ClipboardList as n, FileText as r, GraduationCap as i, Plus as a, Star as o, Users as s } from "lucide-react";
3
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
4
+ import { Badge as u, Button as d, Card as f, CardContent as p, CardHeader as m, CardTitle as h } from "@burdenoff/fe-libs/ui";
5
+ import { useI18n as g } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
6
+ //#region src/buildmyiq/pages/TeachingIndexPage.tsx
7
+ function _() {
8
+ let { t: _ } = g(), v = (e, t) => {
9
+ let n = _(e);
10
+ return n === e ? t : n;
11
+ }, { courses: y, students: b, gradingQueue: x, assessments: S } = e(), C = y.reduce((e, t) => e + t.students, 0), w = (y.reduce((e, t) => e + t.rating, 0) / y.length).toFixed(1), T = x.filter((e) => e.status === "pending").length, E = S.filter((e) => e.status === "published").slice(0, 4);
12
+ return /* @__PURE__ */ l("div", {
13
+ className: "space-y-6 p-6",
14
+ children: [
15
+ /* @__PURE__ */ l("div", {
16
+ className: "flex items-center justify-between",
17
+ children: [/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("h1", {
18
+ className: "text-2xl font-semibold",
19
+ children: v("buildmyiq.teachingIndex.title", "Teaching Dashboard")
20
+ }), /* @__PURE__ */ c("p", {
21
+ className: "text-sm text-muted-foreground",
22
+ children: v("buildmyiq.teachingIndex.subtitle", "Manage your courses, students, and assessments")
23
+ })] }), /* @__PURE__ */ l("div", {
24
+ className: "flex gap-2",
25
+ children: [/* @__PURE__ */ l(d, {
26
+ variant: "outline",
27
+ size: "sm",
28
+ children: [/* @__PURE__ */ c(r, { className: "mr-2 h-4 w-4" }), v("buildmyiq.teachingIndex.actions.createLessonPlan", "Create Lesson Plan")]
29
+ }), /* @__PURE__ */ l(d, {
30
+ size: "sm",
31
+ children: [/* @__PURE__ */ c(a, { className: "mr-2 h-4 w-4" }), v("buildmyiq.teachingIndex.actions.createCourse", "Create Course")]
32
+ })]
33
+ })]
34
+ }),
35
+ /* @__PURE__ */ l("div", {
36
+ className: "grid grid-cols-1 md:grid-cols-4 gap-4",
37
+ children: [
38
+ /* @__PURE__ */ c(f, { children: /* @__PURE__ */ c(p, {
39
+ className: "pt-6",
40
+ children: /* @__PURE__ */ l("div", {
41
+ className: "flex items-center gap-3",
42
+ children: [/* @__PURE__ */ c(t, { className: "h-5 w-5 text-blue-600" }), /* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("p", {
43
+ className: "text-sm text-muted-foreground",
44
+ children: v("buildmyiq.teachingIndex.stats.myCourses", "My Courses")
45
+ }), /* @__PURE__ */ c("p", {
46
+ className: "text-2xl font-bold",
47
+ children: y.length
48
+ })] })]
49
+ })
50
+ }) }),
51
+ /* @__PURE__ */ c(f, { children: /* @__PURE__ */ c(p, {
52
+ className: "pt-6",
53
+ children: /* @__PURE__ */ l("div", {
54
+ className: "flex items-center gap-3",
55
+ children: [/* @__PURE__ */ c(s, { className: "h-5 w-5 text-purple-600" }), /* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("p", {
56
+ className: "text-sm text-muted-foreground",
57
+ children: v("buildmyiq.teachingIndex.stats.totalStudents", "Total Students")
58
+ }), /* @__PURE__ */ c("p", {
59
+ className: "text-2xl font-bold",
60
+ children: C
61
+ })] })]
62
+ })
63
+ }) }),
64
+ /* @__PURE__ */ c(f, { children: /* @__PURE__ */ c(p, {
65
+ className: "pt-6",
66
+ children: /* @__PURE__ */ l("div", {
67
+ className: "flex items-center gap-3",
68
+ children: [/* @__PURE__ */ c(o, { className: "h-5 w-5 text-yellow-600" }), /* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("p", {
69
+ className: "text-sm text-muted-foreground",
70
+ children: v("buildmyiq.teachingIndex.stats.avgRating", "Avg. Rating")
71
+ }), /* @__PURE__ */ c("p", {
72
+ className: "text-2xl font-bold",
73
+ children: w
74
+ })] })]
75
+ })
76
+ }) }),
77
+ /* @__PURE__ */ c(f, { children: /* @__PURE__ */ c(p, {
78
+ className: "pt-6",
79
+ children: /* @__PURE__ */ l("div", {
80
+ className: "flex items-center gap-3",
81
+ children: [/* @__PURE__ */ c(n, { className: "h-5 w-5 text-red-600" }), /* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("p", {
82
+ className: "text-sm text-muted-foreground",
83
+ children: v("buildmyiq.teachingIndex.stats.pendingGrading", "Pending Grading")
84
+ }), /* @__PURE__ */ c("p", {
85
+ className: "text-2xl font-bold",
86
+ children: T
87
+ })] })]
88
+ })
89
+ }) })
90
+ ]
91
+ }),
92
+ /* @__PURE__ */ l("div", {
93
+ className: "grid grid-cols-1 md:grid-cols-2 gap-4",
94
+ children: [/* @__PURE__ */ l(f, { children: [/* @__PURE__ */ c(m, { children: /* @__PURE__ */ c(h, {
95
+ className: "text-lg",
96
+ children: v("buildmyiq.teachingIndex.recentSubmissions.title", "Recent Submissions")
97
+ }) }), /* @__PURE__ */ c(p, {
98
+ className: "space-y-3",
99
+ children: x.slice(0, 5).map((e) => /* @__PURE__ */ l("div", {
100
+ className: "flex items-center gap-3 rounded-lg border p-3",
101
+ children: [
102
+ /* @__PURE__ */ c("div", {
103
+ className: "w-8 h-8 rounded-full bg-primary/10 flex items-center justify-center text-xs font-bold",
104
+ children: e.studentAvatar
105
+ }),
106
+ /* @__PURE__ */ l("div", {
107
+ className: "flex-1 min-w-0",
108
+ children: [/* @__PURE__ */ c("p", {
109
+ className: "text-sm font-medium",
110
+ children: e.studentName
111
+ }), /* @__PURE__ */ l("p", {
112
+ className: "text-xs text-muted-foreground",
113
+ children: [
114
+ e.assignment,
115
+ " - ",
116
+ e.course
117
+ ]
118
+ })]
119
+ }),
120
+ /* @__PURE__ */ l("div", {
121
+ className: "flex items-center gap-2",
122
+ children: [/* @__PURE__ */ c(u, {
123
+ variant: e.priority === "high" ? "destructive" : "secondary",
124
+ className: "text-xs",
125
+ children: v(`buildmyiq.teachingIndex.priority.${e.priority}`, e.priority)
126
+ }), /* @__PURE__ */ c(d, {
127
+ size: "sm",
128
+ variant: "outline",
129
+ children: v("buildmyiq.teachingIndex.recentSubmissions.grade", "Grade")
130
+ })]
131
+ })
132
+ ]
133
+ }, e.id))
134
+ })] }), /* @__PURE__ */ l(f, { children: [/* @__PURE__ */ c(m, { children: /* @__PURE__ */ c(h, {
135
+ className: "text-lg",
136
+ children: v("buildmyiq.teachingIndex.upcomingDeadlines.title", "Upcoming Deadlines")
137
+ }) }), /* @__PURE__ */ c(p, {
138
+ className: "space-y-3",
139
+ children: E.map((e) => /* @__PURE__ */ l("div", {
140
+ className: "flex items-center gap-3 rounded-lg border p-3",
141
+ children: [
142
+ /* @__PURE__ */ c(i, { className: "h-5 w-5 text-muted-foreground shrink-0" }),
143
+ /* @__PURE__ */ l("div", {
144
+ className: "flex-1 min-w-0",
145
+ children: [/* @__PURE__ */ c("p", {
146
+ className: "text-sm font-medium",
147
+ children: e.title
148
+ }), /* @__PURE__ */ c("p", {
149
+ className: "text-xs text-muted-foreground",
150
+ children: e.course
151
+ })]
152
+ }),
153
+ /* @__PURE__ */ l("div", {
154
+ className: "text-right shrink-0",
155
+ children: [/* @__PURE__ */ c("p", {
156
+ className: "text-sm font-medium",
157
+ children: e.dueDate
158
+ }), /* @__PURE__ */ l("p", {
159
+ className: "text-xs text-muted-foreground",
160
+ children: [
161
+ e.submissions,
162
+ "/",
163
+ e.totalStudents,
164
+ " ",
165
+ v("buildmyiq.teachingIndex.upcomingDeadlines.submitted", "submitted")
166
+ ]
167
+ })]
168
+ })
169
+ ]
170
+ }, e.id))
171
+ })] })]
172
+ }),
173
+ /* @__PURE__ */ l(f, { children: [/* @__PURE__ */ c(m, { children: /* @__PURE__ */ c(h, {
174
+ className: "text-lg",
175
+ children: v("buildmyiq.teachingIndex.quickActions.title", "Quick Actions")
176
+ }) }), /* @__PURE__ */ c(p, { children: /* @__PURE__ */ c("div", {
177
+ className: "grid grid-cols-2 md:grid-cols-4 gap-3",
178
+ children: [
179
+ {
180
+ label: v("buildmyiq.teachingIndex.quickActions.gradeSubmissions.label", "Grade Submissions"),
181
+ icon: n,
182
+ count: `${T} ${v("buildmyiq.teachingIndex.quickActions.gradeSubmissions.count", "pending")}`
183
+ },
184
+ {
185
+ label: v("buildmyiq.teachingIndex.quickActions.myCourses.label", "My Courses"),
186
+ icon: t,
187
+ count: `${y.length} ${v("buildmyiq.teachingIndex.quickActions.myCourses.count", "courses")}`
188
+ },
189
+ {
190
+ label: v("buildmyiq.teachingIndex.quickActions.studentList.label", "Student List"),
191
+ icon: s,
192
+ count: `${b.length} ${v("buildmyiq.teachingIndex.quickActions.studentList.count", "students")}`
193
+ },
194
+ {
195
+ label: v("buildmyiq.teachingIndex.quickActions.createAssessment.label", "Create Assessment"),
196
+ icon: r,
197
+ count: v("buildmyiq.teachingIndex.quickActions.createAssessment.count", "New")
198
+ }
199
+ ].map((e) => /* @__PURE__ */ l("button", {
200
+ className: "rounded-lg border p-4 hover:bg-muted/50 transition-colors text-left",
201
+ children: [
202
+ /* @__PURE__ */ c(e.icon, { className: "h-5 w-5 text-muted-foreground mb-2" }),
203
+ /* @__PURE__ */ c("p", {
204
+ className: "text-sm font-medium",
205
+ children: e.label
206
+ }),
207
+ /* @__PURE__ */ c("p", {
208
+ className: "text-xs text-muted-foreground",
209
+ children: e.count
210
+ })
211
+ ]
212
+ }, e.label))
213
+ }) })] })
214
+ ]
215
+ });
216
+ }
217
+ //#endregion
218
+ export { _ as TeachingIndexPage };
219
+
220
+ //# sourceMappingURL=TeachingIndexPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeachingIndexPage.js","names":[],"sources":["../../../src/buildmyiq/pages/TeachingIndexPage.tsx"],"sourcesContent":["import { Badge, Button, Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { BookOpen, Users, Star, ClipboardList, Plus, FileText, GraduationCap } from 'lucide-react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { useBuildMyIQStore } from '../store/buildmyiqStore';\n\nexport function TeachingIndexPage() {\n const { t: translate } = useI18n();\n const t = (key: string, fallback: string): string => {\n const value = translate(key);\n return value === key ? fallback : value;\n };\n const { courses, students, gradingQueue, assessments } = useBuildMyIQStore();\n\n const totalStudents = courses.reduce((sum, c) => sum + c.students, 0);\n const avgRating = (courses.reduce((sum, c) => sum + c.rating, 0) / courses.length).toFixed(1);\n const pendingGrading = gradingQueue.filter((g) => g.status === 'pending').length;\n const upcomingDeadlines = assessments.filter((a) => a.status === 'published').slice(0, 4);\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n {t('buildmyiq.teachingIndex.title', 'Teaching Dashboard')}\n </h1>\n <p className=\"text-sm text-muted-foreground\">\n {t(\n 'buildmyiq.teachingIndex.subtitle',\n 'Manage your courses, students, and assessments'\n )}\n </p>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\">\n <FileText className=\"mr-2 h-4 w-4\" />\n {t('buildmyiq.teachingIndex.actions.createLessonPlan', 'Create Lesson Plan')}\n </Button>\n <Button size=\"sm\">\n <Plus className=\"mr-2 h-4 w-4\" />\n {t('buildmyiq.teachingIndex.actions.createCourse', 'Create Course')}\n </Button>\n </div>\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 <BookOpen className=\"h-5 w-5 text-blue-600\" />\n <div>\n <p className=\"text-sm text-muted-foreground\">\n {t('buildmyiq.teachingIndex.stats.myCourses', 'My Courses')}\n </p>\n <p className=\"text-2xl font-bold\">{courses.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 <Users className=\"h-5 w-5 text-purple-600\" />\n <div>\n <p className=\"text-sm text-muted-foreground\">\n {t('buildmyiq.teachingIndex.stats.totalStudents', 'Total Students')}\n </p>\n <p className=\"text-2xl font-bold\">{totalStudents}</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 <Star className=\"h-5 w-5 text-yellow-600\" />\n <div>\n <p className=\"text-sm text-muted-foreground\">\n {t('buildmyiq.teachingIndex.stats.avgRating', 'Avg. Rating')}\n </p>\n <p className=\"text-2xl font-bold\">{avgRating}</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 <ClipboardList className=\"h-5 w-5 text-red-600\" />\n <div>\n <p className=\"text-sm text-muted-foreground\">\n {t('buildmyiq.teachingIndex.stats.pendingGrading', 'Pending Grading')}\n </p>\n <p className=\"text-2xl font-bold\">{pendingGrading}</p>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-lg\">\n {t('buildmyiq.teachingIndex.recentSubmissions.title', 'Recent Submissions')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {gradingQueue.slice(0, 5).map((item) => (\n <div key={item.id} className=\"flex items-center gap-3 rounded-lg border p-3\">\n <div className=\"w-8 h-8 rounded-full bg-primary/10 flex items-center justify-center text-xs font-bold\">\n {item.studentAvatar}\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium\">{item.studentName}</p>\n <p className=\"text-xs text-muted-foreground\">\n {item.assignment} - {item.course}\n </p>\n </div>\n <div className=\"flex items-center gap-2\">\n <Badge\n variant={item.priority === 'high' ? 'destructive' : 'secondary'}\n className=\"text-xs\"\n >\n {t(`buildmyiq.teachingIndex.priority.${item.priority}`, item.priority)}\n </Badge>\n <Button size=\"sm\" variant=\"outline\">\n {t('buildmyiq.teachingIndex.recentSubmissions.grade', 'Grade')}\n </Button>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-lg\">\n {t('buildmyiq.teachingIndex.upcomingDeadlines.title', 'Upcoming Deadlines')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {upcomingDeadlines.map((a) => (\n <div key={a.id} className=\"flex items-center gap-3 rounded-lg border p-3\">\n <GraduationCap className=\"h-5 w-5 text-muted-foreground shrink-0\" />\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium\">{a.title}</p>\n <p className=\"text-xs text-muted-foreground\">{a.course}</p>\n </div>\n <div className=\"text-right shrink-0\">\n <p className=\"text-sm font-medium\">{a.dueDate}</p>\n <p className=\"text-xs text-muted-foreground\">\n {a.submissions}/{a.totalStudents}{' '}\n {t('buildmyiq.teachingIndex.upcomingDeadlines.submitted', 'submitted')}\n </p>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-lg\">\n {t('buildmyiq.teachingIndex.quickActions.title', 'Quick Actions')}\n </CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-3\">\n {[\n {\n label: t(\n 'buildmyiq.teachingIndex.quickActions.gradeSubmissions.label',\n 'Grade Submissions'\n ),\n icon: ClipboardList,\n count: `${pendingGrading} ${t('buildmyiq.teachingIndex.quickActions.gradeSubmissions.count', 'pending')}`,\n },\n {\n label: t('buildmyiq.teachingIndex.quickActions.myCourses.label', 'My Courses'),\n icon: BookOpen,\n count: `${courses.length} ${t('buildmyiq.teachingIndex.quickActions.myCourses.count', 'courses')}`,\n },\n {\n label: t('buildmyiq.teachingIndex.quickActions.studentList.label', 'Student List'),\n icon: Users,\n count: `${students.length} ${t('buildmyiq.teachingIndex.quickActions.studentList.count', 'students')}`,\n },\n {\n label: t(\n 'buildmyiq.teachingIndex.quickActions.createAssessment.label',\n 'Create Assessment'\n ),\n icon: FileText,\n count: t('buildmyiq.teachingIndex.quickActions.createAssessment.count', 'New'),\n },\n ].map((action) => (\n <button\n key={action.label}\n className=\"rounded-lg border p-4 hover:bg-muted/50 transition-colors text-left\"\n >\n <action.icon className=\"h-5 w-5 text-muted-foreground mb-2\" />\n <p className=\"text-sm font-medium\">{action.label}</p>\n <p className=\"text-xs text-muted-foreground\">{action.count}</p>\n </button>\n ))}\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function TeachingLessonPlansPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=TeachingLessonPlansPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeachingLessonPlansPage.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/pages/TeachingLessonPlansPage.tsx"],"names":[],"mappings":"AAKA,wBAAgB,uBAAuB,4CAwItC"}
@@ -0,0 +1,157 @@
1
+ import { useBuildMyIQStore as e } from "../store/buildmyiqStore.js";
2
+ import { useState as t } from "react";
3
+ import { CheckCircle as n, Clock as r, Package as i, Plus as a, Target as o } from "lucide-react";
4
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
5
+ import { Badge as l, Button as u, Card as d, CardContent as f, CardHeader as p, CardTitle as m } from "@burdenoff/fe-libs/ui";
6
+ //#region src/buildmyiq/pages/TeachingLessonPlansPage.tsx
7
+ function h() {
8
+ let { lessonPlans: h, courses: g } = e(), [_, v] = t("all"), [y, b] = t("all"), x = ["all", ...Array.from(new Set(h.map((e) => e.course)))], S = h.filter((e) => {
9
+ let t = _ === "all" || e.course === _, n = y === "all" || e.status === y;
10
+ return t && n;
11
+ }), C = h.filter((e) => e.status === "published").length, w = h.filter((e) => e.status === "draft").length;
12
+ return /* @__PURE__ */ c("div", {
13
+ className: "space-y-6 p-6",
14
+ children: [
15
+ /* @__PURE__ */ c("div", {
16
+ className: "flex items-center justify-between",
17
+ children: [/* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("h1", {
18
+ className: "text-2xl font-semibold",
19
+ children: "Lesson Plans"
20
+ }), /* @__PURE__ */ s("p", {
21
+ className: "text-sm text-muted-foreground",
22
+ children: "Create and manage your lesson plans"
23
+ })] }), /* @__PURE__ */ c(u, {
24
+ size: "sm",
25
+ children: [/* @__PURE__ */ s(a, { className: "mr-2 h-4 w-4" }), "Create Lesson Plan"]
26
+ })]
27
+ }),
28
+ /* @__PURE__ */ c("div", {
29
+ className: "grid grid-cols-1 md:grid-cols-3 gap-4",
30
+ children: [
31
+ /* @__PURE__ */ s(d, { children: /* @__PURE__ */ c(f, {
32
+ className: "pt-6",
33
+ children: [/* @__PURE__ */ s("p", {
34
+ className: "text-sm text-muted-foreground",
35
+ children: "Total Plans"
36
+ }), /* @__PURE__ */ s("p", {
37
+ className: "text-2xl font-bold",
38
+ children: h.length
39
+ })]
40
+ }) }),
41
+ /* @__PURE__ */ s(d, { children: /* @__PURE__ */ c(f, {
42
+ className: "pt-6",
43
+ children: [/* @__PURE__ */ s("p", {
44
+ className: "text-sm text-muted-foreground",
45
+ children: "Published"
46
+ }), /* @__PURE__ */ s("p", {
47
+ className: "text-2xl font-bold text-green-600",
48
+ children: C
49
+ })]
50
+ }) }),
51
+ /* @__PURE__ */ s(d, { children: /* @__PURE__ */ c(f, {
52
+ className: "pt-6",
53
+ children: [/* @__PURE__ */ s("p", {
54
+ className: "text-sm text-muted-foreground",
55
+ children: "Drafts"
56
+ }), /* @__PURE__ */ s("p", {
57
+ className: "text-2xl font-bold text-yellow-600",
58
+ children: w
59
+ })]
60
+ }) })
61
+ ]
62
+ }),
63
+ /* @__PURE__ */ c("div", {
64
+ className: "flex flex-col sm:flex-row gap-3",
65
+ children: [/* @__PURE__ */ s("select", {
66
+ value: _,
67
+ onChange: (e) => v(e.target.value),
68
+ className: "h-9 rounded-md border border-input bg-background px-3 text-sm",
69
+ children: x.map((e) => /* @__PURE__ */ s("option", {
70
+ value: e,
71
+ children: e === "all" ? "All Courses" : e
72
+ }, e))
73
+ }), /* @__PURE__ */ s("div", {
74
+ className: "flex gap-1",
75
+ children: [
76
+ "all",
77
+ "published",
78
+ "draft"
79
+ ].map((e) => /* @__PURE__ */ s(u, {
80
+ variant: y === e ? "default" : "outline",
81
+ size: "sm",
82
+ className: "capitalize",
83
+ onClick: () => b(e),
84
+ children: e
85
+ }, e))
86
+ })]
87
+ }),
88
+ /* @__PURE__ */ s("div", {
89
+ className: "grid grid-cols-1 md:grid-cols-2 gap-4",
90
+ children: S.map((e) => /* @__PURE__ */ c(d, {
91
+ className: "hover:shadow-md transition-shadow",
92
+ children: [/* @__PURE__ */ c(p, {
93
+ className: "pb-2",
94
+ children: [
95
+ /* @__PURE__ */ c("div", {
96
+ className: "flex items-center justify-between",
97
+ children: [/* @__PURE__ */ s(l, {
98
+ variant: e.status === "published" ? "default" : "secondary",
99
+ className: "text-xs",
100
+ children: e.status
101
+ }), /* @__PURE__ */ c("div", {
102
+ className: "flex items-center gap-1 text-xs text-muted-foreground",
103
+ children: [/* @__PURE__ */ s(r, { className: "h-3 w-3" }), e.duration]
104
+ })]
105
+ }),
106
+ /* @__PURE__ */ s(m, {
107
+ className: "text-lg mt-2",
108
+ children: e.title
109
+ }),
110
+ /* @__PURE__ */ s("p", {
111
+ className: "text-sm text-muted-foreground",
112
+ children: e.course
113
+ })
114
+ ]
115
+ }), /* @__PURE__ */ c(f, {
116
+ className: "space-y-3",
117
+ children: [
118
+ /* @__PURE__ */ c("div", { children: [/* @__PURE__ */ c("div", {
119
+ className: "flex items-center gap-1 text-sm font-medium mb-1",
120
+ children: [/* @__PURE__ */ s(o, { className: "h-4 w-4 text-muted-foreground" }), "Objectives"]
121
+ }), /* @__PURE__ */ s("ul", {
122
+ className: "text-sm text-muted-foreground space-y-1",
123
+ children: e.objectives.map((e, t) => /* @__PURE__ */ c("li", {
124
+ className: "flex items-start gap-1",
125
+ children: [/* @__PURE__ */ s(n, { className: "h-3 w-3 mt-1 text-green-500 shrink-0" }), e]
126
+ }, t))
127
+ })] }),
128
+ /* @__PURE__ */ c("div", { children: [/* @__PURE__ */ c("div", {
129
+ className: "flex items-center gap-1 text-sm font-medium mb-1",
130
+ children: [/* @__PURE__ */ s(i, { className: "h-4 w-4 text-muted-foreground" }), "Materials"]
131
+ }), /* @__PURE__ */ s("div", {
132
+ className: "flex flex-wrap gap-1",
133
+ children: e.materials.map((e, t) => /* @__PURE__ */ s(l, {
134
+ variant: "outline",
135
+ className: "text-xs",
136
+ children: e
137
+ }, t))
138
+ })] }),
139
+ /* @__PURE__ */ c("div", {
140
+ className: "flex items-center justify-between text-xs text-muted-foreground pt-2 border-t",
141
+ children: [/* @__PURE__ */ c("span", { children: ["Updated: ", e.lastUpdated] }), /* @__PURE__ */ s(u, {
142
+ size: "sm",
143
+ variant: "outline",
144
+ children: "Edit"
145
+ })]
146
+ })
147
+ ]
148
+ })]
149
+ }, e.id))
150
+ })
151
+ ]
152
+ });
153
+ }
154
+ //#endregion
155
+ export { h as TeachingLessonPlansPage };
156
+
157
+ //# sourceMappingURL=TeachingLessonPlansPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeachingLessonPlansPage.js","names":[],"sources":["../../../src/buildmyiq/pages/TeachingLessonPlansPage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { Badge, Button, Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { FileText, Plus, Clock, CheckCircle, BookOpen, Target, Package } from 'lucide-react';\nimport { useBuildMyIQStore } from '../store/buildmyiqStore';\n\nexport function TeachingLessonPlansPage() {\n const { lessonPlans, courses } = useBuildMyIQStore();\n const [courseFilter, setCourseFilter] = useState('all');\n const [statusFilter, setStatusFilter] = useState('all');\n\n const courseNames = ['all', ...Array.from(new Set(lessonPlans.map((lp) => lp.course)))];\n\n const filtered = lessonPlans.filter((lp) => {\n const matchesCourse = courseFilter === 'all' || lp.course === courseFilter;\n const matchesStatus = statusFilter === 'all' || lp.status === statusFilter;\n return matchesCourse && matchesStatus;\n });\n\n const published = lessonPlans.filter((lp) => lp.status === 'published').length;\n const drafts = lessonPlans.filter((lp) => lp.status === 'draft').length;\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Lesson Plans</h1>\n <p className=\"text-sm text-muted-foreground\">Create and manage your lesson plans</p>\n </div>\n <Button size=\"sm\">\n <Plus className=\"mr-2 h-4 w-4\" />\n Create Lesson Plan\n </Button>\n </div>\n\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n <Card>\n <CardContent className=\"pt-6\">\n <p className=\"text-sm text-muted-foreground\">Total Plans</p>\n <p className=\"text-2xl font-bold\">{lessonPlans.length}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-6\">\n <p className=\"text-sm text-muted-foreground\">Published</p>\n <p className=\"text-2xl font-bold text-green-600\">{published}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-6\">\n <p className=\"text-sm text-muted-foreground\">Drafts</p>\n <p className=\"text-2xl font-bold text-yellow-600\">{drafts}</p>\n </CardContent>\n </Card>\n </div>\n\n <div className=\"flex flex-col sm:flex-row gap-3\">\n <select\n value={courseFilter}\n onChange={(e) => setCourseFilter(e.target.value)}\n className=\"h-9 rounded-md border border-input bg-background px-3 text-sm\"\n >\n {courseNames.map((c) => (\n <option key={c} value={c}>\n {c === 'all' ? 'All Courses' : c}\n </option>\n ))}\n </select>\n <div className=\"flex gap-1\">\n {['all', 'published', 'draft'].map((s) => (\n <Button\n key={s}\n variant={statusFilter === s ? 'default' : 'outline'}\n size=\"sm\"\n className=\"capitalize\"\n onClick={() => setStatusFilter(s)}\n >\n {s}\n </Button>\n ))}\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {filtered.map((plan) => (\n <Card key={plan.id} className=\"hover:shadow-md transition-shadow\">\n <CardHeader className=\"pb-2\">\n <div className=\"flex items-center justify-between\">\n <Badge\n variant={plan.status === 'published' ? 'default' : 'secondary'}\n className=\"text-xs\"\n >\n {plan.status}\n </Badge>\n <div className=\"flex items-center gap-1 text-xs text-muted-foreground\">\n <Clock className=\"h-3 w-3\" />\n {plan.duration}\n </div>\n </div>\n <CardTitle className=\"text-lg mt-2\">{plan.title}</CardTitle>\n <p className=\"text-sm text-muted-foreground\">{plan.course}</p>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n <div>\n <div className=\"flex items-center gap-1 text-sm font-medium mb-1\">\n <Target className=\"h-4 w-4 text-muted-foreground\" />\n Objectives\n </div>\n <ul className=\"text-sm text-muted-foreground space-y-1\">\n {plan.objectives.map((obj, i) => (\n <li key={i} className=\"flex items-start gap-1\">\n <CheckCircle className=\"h-3 w-3 mt-1 text-green-500 shrink-0\" />\n {obj}\n </li>\n ))}\n </ul>\n </div>\n <div>\n <div className=\"flex items-center gap-1 text-sm font-medium mb-1\">\n <Package className=\"h-4 w-4 text-muted-foreground\" />\n Materials\n </div>\n <div className=\"flex flex-wrap gap-1\">\n {plan.materials.map((mat, i) => (\n <Badge key={i} variant=\"outline\" className=\"text-xs\">\n {mat}\n </Badge>\n ))}\n </div>\n </div>\n <div className=\"flex items-center justify-between text-xs text-muted-foreground pt-2 border-t\">\n <span>Updated: {plan.lastUpdated}</span>\n <Button size=\"sm\" variant=\"outline\">\n Edit\n </Button>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function TeachingQuestionsPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=TeachingQuestionsPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeachingQuestionsPage.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/pages/TeachingQuestionsPage.tsx"],"names":[],"mappings":"AAoCA,wBAAgB,qBAAqB,4CAuJpC"}
@@ -0,0 +1,184 @@
1
+ import { useBuildMyIQStore as e } from "../store/buildmyiqStore.js";
2
+ import { useState as t } from "react";
3
+ import { CheckSquare as n, FileText as r, Plus as i, Search as a, ToggleLeft as o, Type as s } from "lucide-react";
4
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
5
+ import { Badge as u, Button as d, Card as f, CardContent as p, Input as m } from "@burdenoff/fe-libs/ui";
6
+ //#region src/buildmyiq/pages/TeachingQuestionsPage.tsx
7
+ var h = {
8
+ multiple_choice: {
9
+ label: "Multiple Choice",
10
+ icon: n,
11
+ color: "bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400"
12
+ },
13
+ short_answer: {
14
+ label: "Short Answer",
15
+ icon: s,
16
+ color: "bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400"
17
+ },
18
+ essay: {
19
+ label: "Essay",
20
+ icon: r,
21
+ color: "bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-400"
22
+ },
23
+ true_false: {
24
+ label: "True/False",
25
+ icon: o,
26
+ color: "bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400"
27
+ }
28
+ };
29
+ function g() {
30
+ let { quizQuestions: n } = e(), [r, o] = t(""), [s, g] = t("all"), [_, v] = t("all"), y = ["all", ...Array.from(new Set(n.map((e) => e.course)))], b = n.filter((e) => {
31
+ let t = e.question.toLowerCase().includes(r.toLowerCase()) || e.topic.toLowerCase().includes(r.toLowerCase()), n = s === "all" || e.type === s, i = _ === "all" || e.course === _;
32
+ return t && n && i;
33
+ }), x = {
34
+ multiple_choice: n.filter((e) => e.type === "multiple_choice").length,
35
+ short_answer: n.filter((e) => e.type === "short_answer").length,
36
+ essay: n.filter((e) => e.type === "essay").length,
37
+ true_false: n.filter((e) => e.type === "true_false").length
38
+ };
39
+ return /* @__PURE__ */ l("div", {
40
+ className: "space-y-6 p-6",
41
+ children: [
42
+ /* @__PURE__ */ l("div", {
43
+ className: "flex items-center justify-between",
44
+ children: [/* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("h1", {
45
+ className: "text-2xl font-semibold",
46
+ children: "Question Bank"
47
+ }), /* @__PURE__ */ c("p", {
48
+ className: "text-sm text-muted-foreground",
49
+ children: "Manage and organize your assessment questions"
50
+ })] }), /* @__PURE__ */ l(d, {
51
+ size: "sm",
52
+ children: [/* @__PURE__ */ c(i, { className: "mr-2 h-4 w-4" }), "Create Question"]
53
+ })]
54
+ }),
55
+ /* @__PURE__ */ l("div", {
56
+ className: "grid grid-cols-1 md:grid-cols-5 gap-4",
57
+ children: [/* @__PURE__ */ c(f, { children: /* @__PURE__ */ l(p, {
58
+ className: "pt-6",
59
+ children: [/* @__PURE__ */ c("p", {
60
+ className: "text-sm text-muted-foreground",
61
+ children: "Total Questions"
62
+ }), /* @__PURE__ */ c("p", {
63
+ className: "text-2xl font-bold",
64
+ children: n.length
65
+ })]
66
+ }) }), Object.entries(h).map(([e, t]) => /* @__PURE__ */ c(f, { children: /* @__PURE__ */ c(p, {
67
+ className: "pt-6",
68
+ children: /* @__PURE__ */ l("div", {
69
+ className: "flex items-center gap-2",
70
+ children: [/* @__PURE__ */ c(t.icon, { className: `h-4 w-4 ${t.color.split(" ")[1]}` }), /* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("p", {
71
+ className: "text-sm text-muted-foreground",
72
+ children: t.label
73
+ }), /* @__PURE__ */ c("p", {
74
+ className: "text-2xl font-bold",
75
+ children: x[e]
76
+ })] })]
77
+ })
78
+ }) }, e))]
79
+ }),
80
+ /* @__PURE__ */ l("div", {
81
+ className: "flex flex-col sm:flex-row gap-3",
82
+ children: [
83
+ /* @__PURE__ */ l("div", {
84
+ className: "relative flex-1",
85
+ children: [/* @__PURE__ */ c(a, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }), /* @__PURE__ */ c(m, {
86
+ placeholder: "Search questions...",
87
+ value: r,
88
+ onChange: (e) => o(e.target.value),
89
+ className: "pl-10"
90
+ })]
91
+ }),
92
+ /* @__PURE__ */ l("div", {
93
+ className: "flex gap-1",
94
+ children: [/* @__PURE__ */ c(d, {
95
+ variant: s === "all" ? "default" : "outline",
96
+ size: "sm",
97
+ onClick: () => g("all"),
98
+ children: "All Types"
99
+ }), Object.entries(h).map(([e, t]) => /* @__PURE__ */ c(d, {
100
+ variant: s === e ? "default" : "outline",
101
+ size: "sm",
102
+ onClick: () => g(e),
103
+ children: t.label
104
+ }, e))]
105
+ }),
106
+ /* @__PURE__ */ c("select", {
107
+ value: _,
108
+ onChange: (e) => v(e.target.value),
109
+ className: "h-9 rounded-md border border-input bg-background px-3 text-sm",
110
+ children: y.map((e) => /* @__PURE__ */ c("option", {
111
+ value: e,
112
+ children: e === "all" ? "All Courses" : e
113
+ }, e))
114
+ })
115
+ ]
116
+ }),
117
+ /* @__PURE__ */ c("div", {
118
+ className: "space-y-3",
119
+ children: b.map((e) => {
120
+ let t = h[e.type];
121
+ return /* @__PURE__ */ c(f, {
122
+ className: "hover:shadow-md transition-shadow",
123
+ children: /* @__PURE__ */ c(p, {
124
+ className: "py-4",
125
+ children: /* @__PURE__ */ l("div", {
126
+ className: "flex items-start gap-3",
127
+ children: [
128
+ /* @__PURE__ */ c("div", {
129
+ className: `rounded-lg p-2 ${t.color.split(" ").slice(0, 1).join(" ")} shrink-0 mt-0.5`,
130
+ children: /* @__PURE__ */ c(t.icon, { className: `h-4 w-4 ${t.color.split(" ")[1]}` })
131
+ }),
132
+ /* @__PURE__ */ l("div", {
133
+ className: "flex-1 min-w-0",
134
+ children: [
135
+ /* @__PURE__ */ c("p", {
136
+ className: "text-sm font-medium mb-1",
137
+ children: e.question
138
+ }),
139
+ e.options && /* @__PURE__ */ c("div", {
140
+ className: "flex flex-wrap gap-1 mb-2",
141
+ children: e.options.map((t, n) => /* @__PURE__ */ c(u, {
142
+ variant: t === e.correctAnswer ? "default" : "outline",
143
+ className: "text-xs",
144
+ children: t
145
+ }, n))
146
+ }),
147
+ /* @__PURE__ */ l("div", {
148
+ className: "flex flex-wrap items-center gap-2 text-xs text-muted-foreground",
149
+ children: [
150
+ /* @__PURE__ */ c(u, {
151
+ className: t.color,
152
+ children: t.label
153
+ }),
154
+ /* @__PURE__ */ c("span", { children: e.course }),
155
+ /* @__PURE__ */ c("span", { children: "-" }),
156
+ /* @__PURE__ */ c("span", { children: e.topic }),
157
+ /* @__PURE__ */ l(u, {
158
+ variant: "outline",
159
+ className: "text-xs",
160
+ children: [e.points, " pts"]
161
+ })
162
+ ]
163
+ })
164
+ ]
165
+ }),
166
+ /* @__PURE__ */ c(d, {
167
+ size: "sm",
168
+ variant: "outline",
169
+ className: "shrink-0",
170
+ children: "Edit"
171
+ })
172
+ ]
173
+ })
174
+ })
175
+ }, e.id);
176
+ })
177
+ })
178
+ ]
179
+ });
180
+ }
181
+ //#endregion
182
+ export { g as TeachingQuestionsPage };
183
+
184
+ //# sourceMappingURL=TeachingQuestionsPage.js.map