@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,224 @@
1
+ import { ArrowLeft as e, Award as t, CheckCircle as n, Clock as r, Download as i, FileText as a, XCircle as o } from "lucide-react";
2
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
3
+ import { Badge as l, Button as u, Card as d, CardContent as f, CardHeader as p, CardTitle as m } from "@burdenoff/fe-libs/ui";
4
+ //#region src/buildmyiq/pages/AssessmentsAssessmentResultsPagePage.tsx
5
+ var h = {
6
+ title: "Calculus I - Midterm Exam",
7
+ course: "Advanced Mathematics",
8
+ instructor: "Dr. Sarah Johnson",
9
+ score: 85,
10
+ maxScore: 100,
11
+ grade: "B+",
12
+ timeSpent: 95,
13
+ timeLimit: 120,
14
+ correct: 17,
15
+ total: 20,
16
+ feedback: "Good work overall! Pay attention to derivative rules in future practice.",
17
+ questions: [
18
+ {
19
+ id: "q1",
20
+ question: "What is the limit of (x² - 1)/(x - 1) as x approaches 1?",
21
+ answer: "2",
22
+ correct: "2",
23
+ isCorrect: !0,
24
+ points: 5,
25
+ max: 5,
26
+ feedback: "Correct! L'Hopital's rule applied well."
27
+ },
28
+ {
29
+ id: "q2",
30
+ question: "Find the derivative of f(x) = 3x² + 2x - 1",
31
+ answer: "6x + 2",
32
+ correct: "6x + 2",
33
+ isCorrect: !0,
34
+ points: 10,
35
+ max: 10,
36
+ feedback: "Perfect power rule application!"
37
+ },
38
+ {
39
+ id: "q3",
40
+ question: "Solve the integral ∫(2x + 3)dx",
41
+ answer: "x² + 3x",
42
+ correct: "x² + 3x + C",
43
+ isCorrect: !1,
44
+ points: 3,
45
+ max: 8,
46
+ feedback: "Don't forget the constant of integration (+C)."
47
+ }
48
+ ]
49
+ };
50
+ function g() {
51
+ return /* @__PURE__ */ c("div", {
52
+ className: "space-y-6 p-6",
53
+ children: [
54
+ /* @__PURE__ */ c("div", {
55
+ className: "flex items-center justify-between",
56
+ children: [/* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("h1", {
57
+ className: "text-2xl font-semibold",
58
+ children: "Assessment Results"
59
+ }), /* @__PURE__ */ s("p", {
60
+ className: "text-sm text-muted-foreground",
61
+ children: h.title
62
+ })] }), /* @__PURE__ */ c("div", {
63
+ className: "flex gap-2",
64
+ children: [/* @__PURE__ */ c(u, {
65
+ variant: "outline",
66
+ size: "sm",
67
+ children: [/* @__PURE__ */ s(e, { className: "mr-2 h-4 w-4" }), "Back"]
68
+ }), /* @__PURE__ */ c(u, {
69
+ variant: "outline",
70
+ size: "sm",
71
+ children: [/* @__PURE__ */ s(i, { className: "mr-2 h-4 w-4" }), "Download"]
72
+ })]
73
+ })]
74
+ }),
75
+ /* @__PURE__ */ c("div", {
76
+ className: "grid gap-4 md:grid-cols-4",
77
+ children: [
78
+ /* @__PURE__ */ s(d, { children: /* @__PURE__ */ c(f, {
79
+ className: "pt-6 text-center",
80
+ children: [
81
+ /* @__PURE__ */ s("div", {
82
+ className: "text-4xl font-bold text-primary mb-1",
83
+ children: h.grade
84
+ }),
85
+ /* @__PURE__ */ c("div", {
86
+ className: "text-xl font-semibold",
87
+ children: [
88
+ h.score,
89
+ "/",
90
+ h.maxScore
91
+ ]
92
+ }),
93
+ /* @__PURE__ */ c("div", {
94
+ className: "text-sm text-muted-foreground",
95
+ children: [h.score, "%"]
96
+ })
97
+ ]
98
+ }) }),
99
+ /* @__PURE__ */ c(d, { children: [/* @__PURE__ */ c(p, {
100
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
101
+ children: [/* @__PURE__ */ s(m, {
102
+ className: "text-sm font-medium",
103
+ children: "Correct"
104
+ }), /* @__PURE__ */ s(n, { className: "h-4 w-4 text-green-500" })]
105
+ }), /* @__PURE__ */ s(f, { children: /* @__PURE__ */ c("div", {
106
+ className: "text-2xl font-bold",
107
+ children: [
108
+ h.correct,
109
+ "/",
110
+ h.total
111
+ ]
112
+ }) })] }),
113
+ /* @__PURE__ */ c(d, { children: [/* @__PURE__ */ c(p, {
114
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
115
+ children: [/* @__PURE__ */ s(m, {
116
+ className: "text-sm font-medium",
117
+ children: "Time Spent"
118
+ }), /* @__PURE__ */ s(r, { className: "h-4 w-4 text-muted-foreground" })]
119
+ }), /* @__PURE__ */ c(f, { children: [/* @__PURE__ */ c("div", {
120
+ className: "text-2xl font-bold",
121
+ children: [h.timeSpent, " min"]
122
+ }), /* @__PURE__ */ c("p", {
123
+ className: "text-xs text-muted-foreground",
124
+ children: [
125
+ "of ",
126
+ h.timeLimit,
127
+ " min"
128
+ ]
129
+ })] })] }),
130
+ /* @__PURE__ */ c(d, { children: [/* @__PURE__ */ c(p, {
131
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
132
+ children: [/* @__PURE__ */ s(m, {
133
+ className: "text-sm font-medium",
134
+ children: "Submitted"
135
+ }), /* @__PURE__ */ s(t, { className: "h-4 w-4 text-muted-foreground" })]
136
+ }), /* @__PURE__ */ c(f, { children: [/* @__PURE__ */ s("div", {
137
+ className: "text-2xl font-bold",
138
+ children: "Jan 20"
139
+ }), /* @__PURE__ */ s("p", {
140
+ className: "text-xs text-muted-foreground",
141
+ children: "2:30 PM"
142
+ })] })] })
143
+ ]
144
+ }),
145
+ h.feedback && /* @__PURE__ */ s(d, { children: /* @__PURE__ */ s(f, {
146
+ className: "pt-6",
147
+ children: /* @__PURE__ */ c("div", {
148
+ className: "flex items-start gap-3",
149
+ children: [/* @__PURE__ */ s(a, { className: "h-5 w-5 text-primary mt-0.5" }), /* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("p", { children: h.feedback }), /* @__PURE__ */ c("p", {
150
+ className: "text-sm text-muted-foreground mt-2",
151
+ children: ["— ", h.instructor]
152
+ })] })]
153
+ })
154
+ }) }),
155
+ /* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("h2", {
156
+ className: "text-lg font-semibold mb-4",
157
+ children: "Question Review"
158
+ }), /* @__PURE__ */ s("div", {
159
+ className: "space-y-4",
160
+ children: h.questions.map((e, t) => /* @__PURE__ */ s(d, { children: /* @__PURE__ */ c(f, {
161
+ className: "pt-6 space-y-3",
162
+ children: [
163
+ /* @__PURE__ */ c("div", {
164
+ className: "flex items-center justify-between",
165
+ children: [/* @__PURE__ */ c("div", {
166
+ className: "flex items-center gap-3",
167
+ children: [
168
+ /* @__PURE__ */ c(l, {
169
+ variant: "outline",
170
+ children: ["Q", t + 1]
171
+ }),
172
+ e.isCorrect ? /* @__PURE__ */ s(n, { className: "h-5 w-5 text-green-500" }) : /* @__PURE__ */ s(o, { className: "h-5 w-5 text-red-500" }),
173
+ /* @__PURE__ */ s("span", {
174
+ className: `font-medium ${e.isCorrect ? "text-green-600" : "text-red-600"}`,
175
+ children: e.isCorrect ? "Correct" : "Incorrect"
176
+ })
177
+ ]
178
+ }), /* @__PURE__ */ c("span", {
179
+ className: "text-sm font-medium",
180
+ children: [
181
+ e.points,
182
+ "/",
183
+ e.max,
184
+ " pts"
185
+ ]
186
+ })]
187
+ }),
188
+ /* @__PURE__ */ s("p", {
189
+ className: "font-medium",
190
+ children: e.question
191
+ }),
192
+ /* @__PURE__ */ c("div", {
193
+ className: "grid grid-cols-2 gap-4",
194
+ children: [/* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("p", {
195
+ className: "text-sm font-medium text-muted-foreground mb-1",
196
+ children: "Your Answer:"
197
+ }), /* @__PURE__ */ s("div", {
198
+ className: `p-3 rounded border ${e.isCorrect ? "border-green-200 bg-green-50" : "border-red-200 bg-red-50"}`,
199
+ children: e.answer
200
+ })] }), !e.isCorrect && /* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("p", {
201
+ className: "text-sm font-medium text-muted-foreground mb-1",
202
+ children: "Correct Answer:"
203
+ }), /* @__PURE__ */ s("div", {
204
+ className: "p-3 rounded border border-green-200 bg-green-50",
205
+ children: e.correct
206
+ })] })]
207
+ }),
208
+ e.feedback && /* @__PURE__ */ c("div", {
209
+ className: "p-3 rounded bg-primary/5 border border-primary/20 text-sm",
210
+ children: [/* @__PURE__ */ s("span", {
211
+ className: "font-medium",
212
+ children: "Feedback: "
213
+ }), e.feedback]
214
+ })
215
+ ]
216
+ }) }, e.id))
217
+ })] })
218
+ ]
219
+ });
220
+ }
221
+ //#endregion
222
+ export { g as AssessmentsAssessmentResultsPagePage };
223
+
224
+ //# sourceMappingURL=AssessmentsAssessmentResultsPagePage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssessmentsAssessmentResultsPagePage.js","names":[],"sources":["../../../src/buildmyiq/pages/AssessmentsAssessmentResultsPagePage.tsx"],"sourcesContent":["import { Card, CardContent, CardHeader, CardTitle, Badge, Button } from '@burdenoff/fe-libs/ui';\nimport {\n CheckCircle,\n XCircle,\n Clock,\n Award,\n Download,\n ArrowLeft,\n BarChart3,\n FileText,\n} from 'lucide-react';\n\nconst results = {\n title: 'Calculus I - Midterm Exam',\n course: 'Advanced Mathematics',\n instructor: 'Dr. Sarah Johnson',\n score: 85,\n maxScore: 100,\n grade: 'B+',\n timeSpent: 95,\n timeLimit: 120,\n correct: 17,\n total: 20,\n feedback: 'Good work overall! Pay attention to derivative rules in future practice.',\n questions: [\n {\n id: 'q1',\n question: 'What is the limit of (x² - 1)/(x - 1) as x approaches 1?',\n answer: '2',\n correct: '2',\n isCorrect: true,\n points: 5,\n max: 5,\n feedback: \"Correct! L'Hopital's rule applied well.\",\n },\n {\n id: 'q2',\n question: 'Find the derivative of f(x) = 3x² + 2x - 1',\n answer: '6x + 2',\n correct: '6x + 2',\n isCorrect: true,\n points: 10,\n max: 10,\n feedback: 'Perfect power rule application!',\n },\n {\n id: 'q3',\n question: 'Solve the integral ∫(2x + 3)dx',\n answer: 'x² + 3x',\n correct: 'x² + 3x + C',\n isCorrect: false,\n points: 3,\n max: 8,\n feedback: \"Don't forget the constant of integration (+C).\",\n },\n ],\n};\n\nexport function AssessmentsAssessmentResultsPagePage() {\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\">Assessment Results</h1>\n <p className=\"text-sm text-muted-foreground\">{results.title}</p>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\">\n <ArrowLeft className=\"mr-2 h-4 w-4\" />\n Back\n </Button>\n <Button variant=\"outline\" size=\"sm\">\n <Download className=\"mr-2 h-4 w-4\" />\n Download\n </Button>\n </div>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n <Card>\n <CardContent className=\"pt-6 text-center\">\n <div className=\"text-4xl font-bold text-primary mb-1\">{results.grade}</div>\n <div className=\"text-xl font-semibold\">\n {results.score}/{results.maxScore}\n </div>\n <div className=\"text-sm text-muted-foreground\">{results.score}%</div>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Correct</CardTitle>\n <CheckCircle className=\"h-4 w-4 text-green-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">\n {results.correct}/{results.total}\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Time Spent</CardTitle>\n <Clock className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{results.timeSpent} min</div>\n <p className=\"text-xs text-muted-foreground\">of {results.timeLimit} min</p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Submitted</CardTitle>\n <Award className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">Jan 20</div>\n <p className=\"text-xs text-muted-foreground\">2:30 PM</p>\n </CardContent>\n </Card>\n </div>\n\n {results.feedback && (\n <Card>\n <CardContent className=\"pt-6\">\n <div className=\"flex items-start gap-3\">\n <FileText className=\"h-5 w-5 text-primary mt-0.5\" />\n <div>\n <p>{results.feedback}</p>\n <p className=\"text-sm text-muted-foreground mt-2\">— {results.instructor}</p>\n </div>\n </div>\n </CardContent>\n </Card>\n )}\n\n <div>\n <h2 className=\"text-lg font-semibold mb-4\">Question Review</h2>\n <div className=\"space-y-4\">\n {results.questions.map((q, i) => (\n <Card key={q.id}>\n <CardContent className=\"pt-6 space-y-3\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <Badge variant=\"outline\">Q{i + 1}</Badge>\n {q.isCorrect ? (\n <CheckCircle className=\"h-5 w-5 text-green-500\" />\n ) : (\n <XCircle className=\"h-5 w-5 text-red-500\" />\n )}\n <span\n className={`font-medium ${q.isCorrect ? 'text-green-600' : 'text-red-600'}`}\n >\n {q.isCorrect ? 'Correct' : 'Incorrect'}\n </span>\n </div>\n <span className=\"text-sm font-medium\">\n {q.points}/{q.max} pts\n </span>\n </div>\n <p className=\"font-medium\">{q.question}</p>\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <p className=\"text-sm font-medium text-muted-foreground mb-1\">Your Answer:</p>\n <div\n className={`p-3 rounded border ${q.isCorrect ? 'border-green-200 bg-green-50' : 'border-red-200 bg-red-50'}`}\n >\n {q.answer}\n </div>\n </div>\n {!q.isCorrect && (\n <div>\n <p className=\"text-sm font-medium text-muted-foreground mb-1\">\n Correct Answer:\n </p>\n <div className=\"p-3 rounded border border-green-200 bg-green-50\">\n {q.correct}\n </div>\n </div>\n )}\n </div>\n {q.feedback && (\n <div className=\"p-3 rounded bg-primary/5 border border-primary/20 text-sm\">\n <span className=\"font-medium\">Feedback: </span>\n {q.feedback}\n </div>\n )}\n </CardContent>\n </Card>\n ))}\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function AssessmentsAssessmentTakePagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=AssessmentsAssessmentTakePagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssessmentsAssessmentTakePagePage.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/pages/AssessmentsAssessmentTakePagePage.tsx"],"names":[],"mappings":"AAKA,wBAAgB,iCAAiC,4CAyJhD"}
@@ -0,0 +1,174 @@
1
+ import { useBuildMyIQStore as e } from "../store/buildmyiqStore.js";
2
+ import { useState as t } from "react";
3
+ import { ChevronLeft as n, ChevronRight as r, Flag as i, Save as a, Send 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 } from "@burdenoff/fe-libs/ui";
6
+ //#region src/buildmyiq/pages/AssessmentsAssessmentTakePagePage.tsx
7
+ function p() {
8
+ let { quizQuestions: p, assessments: m } = e(), h = m[0], g = p.slice(0, 4), [_, v] = t(0), [y, b] = t({}), [x, S] = t(/* @__PURE__ */ new Set()), C = g[_], w = Object.keys(y).length, T = Math.round(w / g.length * 100);
9
+ return /* @__PURE__ */ c("div", {
10
+ className: "flex h-[calc(100vh-4rem)]",
11
+ children: [/* @__PURE__ */ c("div", {
12
+ className: "flex-1 flex flex-col",
13
+ children: [
14
+ /* @__PURE__ */ c("div", {
15
+ className: "border-b p-4",
16
+ children: [
17
+ /* @__PURE__ */ c("div", {
18
+ className: "flex items-center justify-between mb-3",
19
+ children: [/* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("h1", {
20
+ className: "font-semibold",
21
+ children: h.title
22
+ }), /* @__PURE__ */ s("p", {
23
+ className: "text-sm text-muted-foreground",
24
+ children: h.course
25
+ })] }), /* @__PURE__ */ c("div", {
26
+ className: "text-right",
27
+ children: [/* @__PURE__ */ s("p", {
28
+ className: "text-sm text-muted-foreground",
29
+ children: "Time Remaining"
30
+ }), /* @__PURE__ */ s("p", {
31
+ className: "text-lg font-mono font-semibold",
32
+ children: "01:58:30"
33
+ })]
34
+ })]
35
+ }),
36
+ /* @__PURE__ */ c("div", {
37
+ className: "flex justify-between text-sm text-muted-foreground mb-1",
38
+ children: [/* @__PURE__ */ c("span", { children: [
39
+ "Progress: ",
40
+ w,
41
+ "/",
42
+ g.length,
43
+ " answered"
44
+ ] }), /* @__PURE__ */ c("span", { children: [T, "%"] })]
45
+ }),
46
+ /* @__PURE__ */ s("div", {
47
+ className: "h-2 bg-muted rounded-full overflow-hidden",
48
+ children: /* @__PURE__ */ s("div", {
49
+ className: "h-2 bg-primary rounded-full",
50
+ style: { width: `${T}%` }
51
+ })
52
+ })
53
+ ]
54
+ }),
55
+ /* @__PURE__ */ s("div", {
56
+ className: "flex-1 overflow-auto p-6",
57
+ children: /* @__PURE__ */ c("div", {
58
+ className: "max-w-3xl mx-auto",
59
+ children: [/* @__PURE__ */ c("div", {
60
+ className: "flex items-center justify-between mb-6",
61
+ children: [/* @__PURE__ */ c("div", {
62
+ className: "flex items-center gap-2",
63
+ children: [
64
+ /* @__PURE__ */ c(l, {
65
+ variant: "outline",
66
+ children: ["Question ", _ + 1]
67
+ }),
68
+ /* @__PURE__ */ c("span", {
69
+ className: "text-sm text-muted-foreground",
70
+ children: [C.points, " points"]
71
+ }),
72
+ x.has(_) && /* @__PURE__ */ c(l, {
73
+ variant: "secondary",
74
+ children: [/* @__PURE__ */ s(i, { className: "mr-1 h-3 w-3" }), "Flagged"]
75
+ })
76
+ ]
77
+ }), /* @__PURE__ */ c(u, {
78
+ variant: "outline",
79
+ size: "sm",
80
+ onClick: () => S((e) => {
81
+ let t = new Set(e);
82
+ return t.has(_) ? t.delete(_) : t.add(_), t;
83
+ }),
84
+ children: [/* @__PURE__ */ s(i, { className: "mr-2 h-4 w-4" }), x.has(_) ? "Unflag" : "Flag"]
85
+ })]
86
+ }), /* @__PURE__ */ s(d, { children: /* @__PURE__ */ c(f, {
87
+ className: "pt-6 space-y-4",
88
+ children: [/* @__PURE__ */ s("h2", {
89
+ className: "text-lg font-medium",
90
+ children: C.question
91
+ }), C.options ? /* @__PURE__ */ s("div", {
92
+ className: "space-y-2",
93
+ children: C.options.map((e) => /* @__PURE__ */ s("button", {
94
+ onClick: () => b({
95
+ ...y,
96
+ [C.id]: e
97
+ }),
98
+ className: `w-full text-left p-3 rounded border transition-colors ${y[C.id] === e ? "border-primary bg-primary/5" : "hover:bg-muted/50"}`,
99
+ children: /* @__PURE__ */ s("span", {
100
+ className: "text-sm",
101
+ children: e
102
+ })
103
+ }, e))
104
+ }) : /* @__PURE__ */ s("textarea", {
105
+ className: "w-full border rounded-lg p-3 text-sm min-h-[120px] bg-background",
106
+ placeholder: "Type your answer...",
107
+ value: y[C.id] ?? "",
108
+ onChange: (e) => b({
109
+ ...y,
110
+ [C.id]: e.target.value
111
+ })
112
+ })]
113
+ }) })]
114
+ })
115
+ }),
116
+ /* @__PURE__ */ c("div", {
117
+ className: "border-t p-4 flex items-center justify-between",
118
+ children: [/* @__PURE__ */ c(u, {
119
+ variant: "outline",
120
+ disabled: _ === 0,
121
+ onClick: () => v((e) => e - 1),
122
+ children: [/* @__PURE__ */ s(n, { className: "mr-2 h-4 w-4" }), "Previous"]
123
+ }), /* @__PURE__ */ c("div", {
124
+ className: "flex gap-2",
125
+ children: [/* @__PURE__ */ c(u, {
126
+ variant: "outline",
127
+ children: [/* @__PURE__ */ s(a, { className: "mr-2 h-4 w-4" }), "Save"]
128
+ }), _ === g.length - 1 ? /* @__PURE__ */ c(u, { children: [/* @__PURE__ */ s(o, { className: "mr-2 h-4 w-4" }), "Submit"] }) : /* @__PURE__ */ c(u, {
129
+ onClick: () => v((e) => e + 1),
130
+ children: ["Next", /* @__PURE__ */ s(r, { className: "ml-2 h-4 w-4" })]
131
+ })]
132
+ })]
133
+ })
134
+ ]
135
+ }), /* @__PURE__ */ c("div", {
136
+ className: "w-56 border-l overflow-y-auto p-4",
137
+ children: [
138
+ /* @__PURE__ */ s("h3", {
139
+ className: "font-medium mb-4",
140
+ children: "Navigation"
141
+ }),
142
+ /* @__PURE__ */ s("div", {
143
+ className: "grid grid-cols-4 gap-2 mb-4",
144
+ children: g.map((e, t) => /* @__PURE__ */ c("button", {
145
+ onClick: () => v(t),
146
+ className: `aspect-square rounded border-2 text-sm font-medium flex items-center justify-center ${t === _ ? "border-primary bg-primary/10" : y[e.id] ? "border-green-300 bg-green-50" : ""}`,
147
+ children: [t + 1, x.has(t) && /* @__PURE__ */ s(i, { className: "h-2 w-2 text-orange-500 ml-0.5" })]
148
+ }, e.id))
149
+ }),
150
+ /* @__PURE__ */ c("div", {
151
+ className: "space-y-1 text-xs text-muted-foreground",
152
+ children: [
153
+ /* @__PURE__ */ c("div", {
154
+ className: "flex items-center gap-2",
155
+ children: [/* @__PURE__ */ s("div", { className: "w-3 h-3 rounded border-2 border-green-300 bg-green-50" }), "Answered"]
156
+ }),
157
+ /* @__PURE__ */ c("div", {
158
+ className: "flex items-center gap-2",
159
+ children: [/* @__PURE__ */ s("div", { className: "w-3 h-3 rounded border-2 border-primary bg-primary/10" }), "Current"]
160
+ }),
161
+ /* @__PURE__ */ c("div", {
162
+ className: "flex items-center gap-2",
163
+ children: [/* @__PURE__ */ s("div", { className: "w-3 h-3 rounded border-2" }), "Unanswered"]
164
+ })
165
+ ]
166
+ })
167
+ ]
168
+ })]
169
+ });
170
+ }
171
+ //#endregion
172
+ export { p as AssessmentsAssessmentTakePagePage };
173
+
174
+ //# sourceMappingURL=AssessmentsAssessmentTakePagePage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssessmentsAssessmentTakePagePage.js","names":[],"sources":["../../../src/buildmyiq/pages/AssessmentsAssessmentTakePagePage.tsx"],"sourcesContent":["import { Card, CardContent, Badge, Button } from '@burdenoff/fe-libs/ui';\nimport { ChevronLeft, ChevronRight, Flag, Save, Send, Clock } from 'lucide-react';\nimport { useState } from 'react';\nimport { useBuildMyIQStore } from '../store/buildmyiqStore';\n\nexport function AssessmentsAssessmentTakePagePage() {\n const { quizQuestions, assessments } = useBuildMyIQStore();\n const assessment = assessments[0];\n const questions = quizQuestions.slice(0, 4);\n const [currentIndex, setCurrentIndex] = useState(0);\n const [answers, setAnswers] = useState<Record<string, string>>({});\n const [flagged, setFlagged] = useState<Set<number>>(new Set());\n const current = questions[currentIndex];\n const answered = Object.keys(answers).length;\n const progress = Math.round((answered / questions.length) * 100);\n\n const toggleFlag = () =>\n setFlagged((prev) => {\n const n = new Set(prev);\n if (n.has(currentIndex)) {\n n.delete(currentIndex);\n } else {\n n.add(currentIndex);\n }\n return n;\n });\n\n return (\n <div className=\"flex h-[calc(100vh-4rem)]\">\n <div className=\"flex-1 flex flex-col\">\n <div className=\"border-b p-4\">\n <div className=\"flex items-center justify-between mb-3\">\n <div>\n <h1 className=\"font-semibold\">{assessment.title}</h1>\n <p className=\"text-sm text-muted-foreground\">{assessment.course}</p>\n </div>\n <div className=\"text-right\">\n <p className=\"text-sm text-muted-foreground\">Time Remaining</p>\n <p className=\"text-lg font-mono font-semibold\">01:58:30</p>\n </div>\n </div>\n <div className=\"flex justify-between text-sm text-muted-foreground mb-1\">\n <span>\n Progress: {answered}/{questions.length} answered\n </span>\n <span>{progress}%</span>\n </div>\n <div className=\"h-2 bg-muted rounded-full overflow-hidden\">\n <div className=\"h-2 bg-primary rounded-full\" style={{ width: `${progress}%` }} />\n </div>\n </div>\n\n <div className=\"flex-1 overflow-auto p-6\">\n <div className=\"max-w-3xl mx-auto\">\n <div className=\"flex items-center justify-between mb-6\">\n <div className=\"flex items-center gap-2\">\n <Badge variant=\"outline\">Question {currentIndex + 1}</Badge>\n <span className=\"text-sm text-muted-foreground\">{current.points} points</span>\n {flagged.has(currentIndex) && (\n <Badge variant=\"secondary\">\n <Flag className=\"mr-1 h-3 w-3\" />\n Flagged\n </Badge>\n )}\n </div>\n <Button variant=\"outline\" size=\"sm\" onClick={toggleFlag}>\n <Flag className=\"mr-2 h-4 w-4\" />\n {flagged.has(currentIndex) ? 'Unflag' : 'Flag'}\n </Button>\n </div>\n <Card>\n <CardContent className=\"pt-6 space-y-4\">\n <h2 className=\"text-lg font-medium\">{current.question}</h2>\n {current.options ? (\n <div className=\"space-y-2\">\n {current.options.map((opt) => (\n <button\n key={opt}\n onClick={() => setAnswers({ ...answers, [current.id]: opt })}\n className={`w-full text-left p-3 rounded border transition-colors ${answers[current.id] === opt ? 'border-primary bg-primary/5' : 'hover:bg-muted/50'}`}\n >\n <span className=\"text-sm\">{opt}</span>\n </button>\n ))}\n </div>\n ) : (\n <textarea\n className=\"w-full border rounded-lg p-3 text-sm min-h-[120px] bg-background\"\n placeholder=\"Type your answer...\"\n value={answers[current.id] ?? ''}\n onChange={(e) => setAnswers({ ...answers, [current.id]: e.target.value })}\n />\n )}\n </CardContent>\n </Card>\n </div>\n </div>\n\n <div className=\"border-t p-4 flex items-center justify-between\">\n <Button\n variant=\"outline\"\n disabled={currentIndex === 0}\n onClick={() => setCurrentIndex((i) => i - 1)}\n >\n <ChevronLeft className=\"mr-2 h-4 w-4\" />\n Previous\n </Button>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\">\n <Save className=\"mr-2 h-4 w-4\" />\n Save\n </Button>\n {currentIndex === questions.length - 1 ? (\n <Button>\n <Send className=\"mr-2 h-4 w-4\" />\n Submit\n </Button>\n ) : (\n <Button onClick={() => setCurrentIndex((i) => i + 1)}>\n Next\n <ChevronRight className=\"ml-2 h-4 w-4\" />\n </Button>\n )}\n </div>\n </div>\n </div>\n\n <div className=\"w-56 border-l overflow-y-auto p-4\">\n <h3 className=\"font-medium mb-4\">Navigation</h3>\n <div className=\"grid grid-cols-4 gap-2 mb-4\">\n {questions.map((q, i) => (\n <button\n key={q.id}\n onClick={() => setCurrentIndex(i)}\n className={`aspect-square rounded border-2 text-sm font-medium flex items-center justify-center ${i === currentIndex ? 'border-primary bg-primary/10' : answers[q.id] ? 'border-green-300 bg-green-50' : ''}`}\n >\n {i + 1}\n {flagged.has(i) && <Flag className=\"h-2 w-2 text-orange-500 ml-0.5\" />}\n </button>\n ))}\n </div>\n <div className=\"space-y-1 text-xs text-muted-foreground\">\n <div className=\"flex items-center gap-2\">\n <div className=\"w-3 h-3 rounded border-2 border-green-300 bg-green-50\" />\n Answered\n </div>\n <div className=\"flex items-center gap-2\">\n <div className=\"w-3 h-3 rounded border-2 border-primary bg-primary/10\" />\n Current\n </div>\n <div className=\"flex items-center gap-2\">\n <div className=\"w-3 h-3 rounded border-2\" />\n Unanswered\n </div>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function AssessmentsIndexPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=AssessmentsIndexPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssessmentsIndexPage.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/pages/AssessmentsIndexPage.tsx"],"names":[],"mappings":"AA4BA,wBAAgB,oBAAoB,4CAkJnC"}
@@ -0,0 +1,174 @@
1
+ import { useBuildMyIQStore as e } from "../store/buildmyiqStore.js";
2
+ import { useState as t } from "react";
3
+ import { BarChart3 as n, Calendar as r, CheckCircle as i, Clock as a, Edit as o, Eye as s, FileText as c, Filter as l, PenTool as u, Plus as d, Search as f, Users as p } from "lucide-react";
4
+ import { jsx as m, jsxs as h } from "react/jsx-runtime";
5
+ import { Badge as g, Button as _, Card as v, CardContent as y, CardHeader as b, CardTitle as x, Input as S } from "@burdenoff/fe-libs/ui";
6
+ //#region src/buildmyiq/pages/AssessmentsIndexPage.tsx
7
+ function C() {
8
+ let { assessments: C } = e(), [w, T] = t(""), E = C.filter((e) => w === "" || e.title.toLowerCase().includes(w.toLowerCase())), D = [
9
+ {
10
+ title: "Total Assessments",
11
+ value: String(C.length),
12
+ icon: c
13
+ },
14
+ {
15
+ title: "Pending Grading",
16
+ value: String(C.filter((e) => e.status === "grading").length),
17
+ icon: a
18
+ },
19
+ {
20
+ title: "Avg Score",
21
+ value: `${Math.round(C.filter((e) => e.averageScore !== null).reduce((e, t) => e + (t.averageScore ?? 0), 0) / C.filter((e) => e.averageScore !== null).length)}%`,
22
+ icon: n
23
+ }
24
+ ], O = (e) => e === "exam" ? c : e === "quiz" ? i : u;
25
+ return /* @__PURE__ */ h("div", {
26
+ className: "space-y-6 p-6",
27
+ children: [
28
+ /* @__PURE__ */ h("div", {
29
+ className: "flex items-center justify-between",
30
+ children: [/* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("h1", {
31
+ className: "text-2xl font-semibold",
32
+ children: "Assessments"
33
+ }), /* @__PURE__ */ m("p", {
34
+ className: "text-sm text-muted-foreground",
35
+ children: "Create and manage assessments for your courses"
36
+ })] }), /* @__PURE__ */ h(_, {
37
+ size: "sm",
38
+ children: [/* @__PURE__ */ m(d, { className: "mr-2 h-4 w-4" }), "Create Assessment"]
39
+ })]
40
+ }),
41
+ /* @__PURE__ */ m("div", {
42
+ className: "grid gap-4 md:grid-cols-3",
43
+ children: D.map((e) => /* @__PURE__ */ h(v, { children: [/* @__PURE__ */ h(b, {
44
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
45
+ children: [/* @__PURE__ */ m(x, {
46
+ className: "text-sm font-medium",
47
+ children: e.title
48
+ }), /* @__PURE__ */ m(e.icon, { className: "h-4 w-4 text-muted-foreground" })]
49
+ }), /* @__PURE__ */ m(y, { children: /* @__PURE__ */ m("div", {
50
+ className: "text-2xl font-bold",
51
+ children: e.value
52
+ }) })] }, e.title))
53
+ }),
54
+ /* @__PURE__ */ h("div", {
55
+ className: "flex gap-4",
56
+ children: [
57
+ /* @__PURE__ */ h("div", {
58
+ className: "relative flex-1 max-w-md",
59
+ children: [/* @__PURE__ */ m(f, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }), /* @__PURE__ */ m(S, {
60
+ placeholder: "Search assessments...",
61
+ value: w,
62
+ onChange: (e) => T(e.target.value),
63
+ className: "pl-10"
64
+ })]
65
+ }),
66
+ /* @__PURE__ */ h(_, {
67
+ variant: "outline",
68
+ size: "sm",
69
+ children: [/* @__PURE__ */ m(l, { className: "mr-2 h-4 w-4" }), "Filter"]
70
+ }),
71
+ /* @__PURE__ */ h(_, {
72
+ variant: "outline",
73
+ size: "sm",
74
+ children: [/* @__PURE__ */ m(r, { className: "mr-2 h-4 w-4" }), "Due Date"]
75
+ })
76
+ ]
77
+ }),
78
+ /* @__PURE__ */ m("div", {
79
+ className: "space-y-4",
80
+ children: E.map((e) => /* @__PURE__ */ m(v, { children: /* @__PURE__ */ m(y, {
81
+ className: "pt-6",
82
+ children: /* @__PURE__ */ h("div", {
83
+ className: "flex items-center justify-between",
84
+ children: [/* @__PURE__ */ h("div", {
85
+ className: "flex items-center gap-4 flex-1",
86
+ children: [/* @__PURE__ */ m("div", {
87
+ className: "p-3 bg-primary/10 rounded-lg",
88
+ children: /* @__PURE__ */ m(O(e.type), { className: "h-6 w-6 text-primary" })
89
+ }), /* @__PURE__ */ h("div", {
90
+ className: "flex-1 min-w-0",
91
+ children: [
92
+ /* @__PURE__ */ h("div", {
93
+ className: "flex items-center gap-2 mb-1",
94
+ children: [/* @__PURE__ */ m("h3", {
95
+ className: "font-semibold truncate",
96
+ children: e.title
97
+ }), /* @__PURE__ */ m(g, {
98
+ variant: e.status === "published" ? "default" : e.status === "draft" ? "secondary" : "destructive",
99
+ children: e.status
100
+ })]
101
+ }),
102
+ /* @__PURE__ */ m("p", {
103
+ className: "text-sm text-muted-foreground mb-2",
104
+ children: e.course
105
+ }),
106
+ /* @__PURE__ */ h("div", {
107
+ className: "flex items-center gap-4 text-xs text-muted-foreground",
108
+ children: [
109
+ /* @__PURE__ */ h("span", {
110
+ className: "flex items-center gap-1",
111
+ children: [
112
+ /* @__PURE__ */ m(c, { className: "h-3 w-3" }),
113
+ e.questions,
114
+ " questions"
115
+ ]
116
+ }),
117
+ e.duration && /* @__PURE__ */ h("span", {
118
+ className: "flex items-center gap-1",
119
+ children: [
120
+ /* @__PURE__ */ m(a, { className: "h-3 w-3" }),
121
+ e.duration,
122
+ " min"
123
+ ]
124
+ }),
125
+ /* @__PURE__ */ h("span", {
126
+ className: "flex items-center gap-1",
127
+ children: [
128
+ /* @__PURE__ */ m(r, { className: "h-3 w-3" }),
129
+ "Due ",
130
+ e.dueDate
131
+ ]
132
+ }),
133
+ /* @__PURE__ */ h("span", {
134
+ className: "flex items-center gap-1",
135
+ children: [
136
+ /* @__PURE__ */ m(p, { className: "h-3 w-3" }),
137
+ e.submissions,
138
+ "/",
139
+ e.totalStudents
140
+ ]
141
+ })
142
+ ]
143
+ })
144
+ ]
145
+ })]
146
+ }), /* @__PURE__ */ h("div", {
147
+ className: "flex gap-2",
148
+ children: [
149
+ /* @__PURE__ */ h(_, {
150
+ variant: "outline",
151
+ size: "sm",
152
+ children: [/* @__PURE__ */ m(s, { className: "mr-2 h-4 w-4" }), "Results"]
153
+ }),
154
+ /* @__PURE__ */ h(_, {
155
+ variant: "outline",
156
+ size: "sm",
157
+ children: [/* @__PURE__ */ m(o, { className: "mr-2 h-4 w-4" }), "Edit"]
158
+ }),
159
+ e.submissions > 0 && /* @__PURE__ */ h(_, {
160
+ size: "sm",
161
+ children: [/* @__PURE__ */ m(i, { className: "mr-2 h-4 w-4" }), "Grade"]
162
+ })
163
+ ]
164
+ })]
165
+ })
166
+ }) }, e.id))
167
+ })
168
+ ]
169
+ });
170
+ }
171
+ //#endregion
172
+ export { C as AssessmentsIndexPage };
173
+
174
+ //# sourceMappingURL=AssessmentsIndexPage.js.map