@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 @@
1
+ {"version":3,"file":"TeachingQuestionsPage.js","names":[],"sources":["../../../src/buildmyiq/pages/TeachingQuestionsPage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Input,\n} from '@burdenoff/fe-libs/ui';\nimport { HelpCircle, Search, Plus, CheckSquare, Type, FileText, ToggleLeft } from 'lucide-react';\nimport { useBuildMyIQStore } from '../store/buildmyiqStore';\n\nconst typeConfig: Record<string, { label: string; icon: typeof CheckSquare; color: string }> = {\n multiple_choice: {\n label: 'Multiple Choice',\n icon: CheckSquare,\n color: 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',\n },\n short_answer: {\n label: 'Short Answer',\n icon: Type,\n color: 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400',\n },\n essay: {\n label: 'Essay',\n icon: FileText,\n color: 'bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-400',\n },\n true_false: {\n label: 'True/False',\n icon: ToggleLeft,\n color: 'bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400',\n },\n};\n\nexport function TeachingQuestionsPage() {\n const { quizQuestions } = useBuildMyIQStore();\n const [search, setSearch] = useState('');\n const [typeFilter, setTypeFilter] = useState('all');\n const [courseFilter, setCourseFilter] = useState('all');\n\n const courses = ['all', ...Array.from(new Set(quizQuestions.map((q) => q.course)))];\n\n const filtered = quizQuestions.filter((q) => {\n const matchesSearch =\n q.question.toLowerCase().includes(search.toLowerCase()) ||\n q.topic.toLowerCase().includes(search.toLowerCase());\n const matchesType = typeFilter === 'all' || q.type === typeFilter;\n const matchesCourse = courseFilter === 'all' || q.course === courseFilter;\n return matchesSearch && matchesType && matchesCourse;\n });\n\n const typeCounts = {\n multiple_choice: quizQuestions.filter((q) => q.type === 'multiple_choice').length,\n short_answer: quizQuestions.filter((q) => q.type === 'short_answer').length,\n essay: quizQuestions.filter((q) => q.type === 'essay').length,\n true_false: quizQuestions.filter((q) => q.type === 'true_false').length,\n };\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\">Question Bank</h1>\n <p className=\"text-sm text-muted-foreground\">\n Manage and organize your assessment questions\n </p>\n </div>\n <Button size=\"sm\">\n <Plus className=\"mr-2 h-4 w-4\" />\n Create Question\n </Button>\n </div>\n\n <div className=\"grid grid-cols-1 md:grid-cols-5 gap-4\">\n <Card>\n <CardContent className=\"pt-6\">\n <p className=\"text-sm text-muted-foreground\">Total Questions</p>\n <p className=\"text-2xl font-bold\">{quizQuestions.length}</p>\n </CardContent>\n </Card>\n {Object.entries(typeConfig).map(([key, cfg]) => (\n <Card key={key}>\n <CardContent className=\"pt-6\">\n <div className=\"flex items-center gap-2\">\n <cfg.icon className={`h-4 w-4 ${cfg.color.split(' ')[1]}`} />\n <div>\n <p className=\"text-sm text-muted-foreground\">{cfg.label}</p>\n <p className=\"text-2xl font-bold\">{typeCounts[key as keyof typeof typeCounts]}</p>\n </div>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n\n <div className=\"flex flex-col sm:flex-row gap-3\">\n <div className=\"relative flex-1\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground\" />\n <Input\n placeholder=\"Search questions...\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"pl-10\"\n />\n </div>\n <div className=\"flex gap-1\">\n <Button\n variant={typeFilter === 'all' ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setTypeFilter('all')}\n >\n All Types\n </Button>\n {Object.entries(typeConfig).map(([key, cfg]) => (\n <Button\n key={key}\n variant={typeFilter === key ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setTypeFilter(key)}\n >\n {cfg.label}\n </Button>\n ))}\n </div>\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 {courses.map((c) => (\n <option key={c} value={c}>\n {c === 'all' ? 'All Courses' : c}\n </option>\n ))}\n </select>\n </div>\n\n <div className=\"space-y-3\">\n {filtered.map((q) => {\n const cfg = typeConfig[q.type];\n return (\n <Card key={q.id} className=\"hover:shadow-md transition-shadow\">\n <CardContent className=\"py-4\">\n <div className=\"flex items-start gap-3\">\n <div\n className={`rounded-lg p-2 ${cfg.color.split(' ').slice(0, 1).join(' ')} shrink-0 mt-0.5`}\n >\n <cfg.icon className={`h-4 w-4 ${cfg.color.split(' ')[1]}`} />\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium mb-1\">{q.question}</p>\n {q.options && (\n <div className=\"flex flex-wrap gap-1 mb-2\">\n {q.options.map((opt, i) => (\n <Badge\n key={i}\n variant={opt === q.correctAnswer ? 'default' : 'outline'}\n className=\"text-xs\"\n >\n {opt}\n </Badge>\n ))}\n </div>\n )}\n <div className=\"flex flex-wrap items-center gap-2 text-xs text-muted-foreground\">\n <Badge className={cfg.color}>{cfg.label}</Badge>\n <span>{q.course}</span>\n <span>-</span>\n <span>{q.topic}</span>\n <Badge variant=\"outline\" className=\"text-xs\">\n {q.points} pts\n </Badge>\n </div>\n </div>\n <Button size=\"sm\" variant=\"outline\" className=\"shrink-0\">\n Edit\n </Button>\n </div>\n </CardContent>\n </Card>\n );\n })}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function TeachingStudentsPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=TeachingStudentsPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeachingStudentsPage.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/pages/TeachingStudentsPage.tsx"],"names":[],"mappings":"AAWA,wBAAgB,oBAAoB,4CAoJnC"}
@@ -0,0 +1,204 @@
1
+ import { useBuildMyIQStore as e } from "../store/buildmyiqStore.js";
2
+ import { useState as t } from "react";
3
+ import { Download as n, Search as r } from "lucide-react";
4
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
5
+ import { Badge as o, Button as s, Card as c, CardContent as l, Input as u } from "@burdenoff/fe-libs/ui";
6
+ //#region src/buildmyiq/pages/TeachingStudentsPage.tsx
7
+ var d = {
8
+ active: "bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400",
9
+ inactive: "bg-gray-100 text-gray-700 dark:bg-gray-900/30 dark:text-gray-400",
10
+ at_risk: "bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400"
11
+ };
12
+ function f() {
13
+ let { students: f } = e(), [p, m] = t(""), [h, g] = t("all"), _ = f.filter((e) => {
14
+ let t = e.name.toLowerCase().includes(p.toLowerCase()) || e.email.toLowerCase().includes(p.toLowerCase()), n = h === "all" || e.status === h;
15
+ return t && n;
16
+ }), v = f.filter((e) => e.status === "active").length, y = f.filter((e) => e.status === "at_risk").length, b = f.filter((e) => e.status === "inactive").length;
17
+ return /* @__PURE__ */ a("div", {
18
+ className: "space-y-6 p-6",
19
+ children: [
20
+ /* @__PURE__ */ a("div", {
21
+ className: "flex items-center justify-between",
22
+ children: [/* @__PURE__ */ a("div", { children: [/* @__PURE__ */ i("h1", {
23
+ className: "text-2xl font-semibold",
24
+ children: "Students"
25
+ }), /* @__PURE__ */ i("p", {
26
+ className: "text-sm text-muted-foreground",
27
+ children: "Monitor and manage your students"
28
+ })] }), /* @__PURE__ */ a(s, {
29
+ variant: "outline",
30
+ size: "sm",
31
+ children: [/* @__PURE__ */ i(n, { className: "mr-2 h-4 w-4" }), "Export"]
32
+ })]
33
+ }),
34
+ /* @__PURE__ */ a("div", {
35
+ className: "grid grid-cols-1 md:grid-cols-4 gap-4",
36
+ children: [
37
+ /* @__PURE__ */ i(c, { children: /* @__PURE__ */ a(l, {
38
+ className: "pt-6",
39
+ children: [/* @__PURE__ */ i("p", {
40
+ className: "text-sm text-muted-foreground",
41
+ children: "Total Students"
42
+ }), /* @__PURE__ */ i("p", {
43
+ className: "text-2xl font-bold",
44
+ children: f.length
45
+ })]
46
+ }) }),
47
+ /* @__PURE__ */ i(c, { children: /* @__PURE__ */ a(l, {
48
+ className: "pt-6",
49
+ children: [/* @__PURE__ */ i("p", {
50
+ className: "text-sm text-muted-foreground",
51
+ children: "Active"
52
+ }), /* @__PURE__ */ i("p", {
53
+ className: "text-2xl font-bold text-green-600",
54
+ children: v
55
+ })]
56
+ }) }),
57
+ /* @__PURE__ */ i(c, { children: /* @__PURE__ */ a(l, {
58
+ className: "pt-6",
59
+ children: [/* @__PURE__ */ i("p", {
60
+ className: "text-sm text-muted-foreground",
61
+ children: "At Risk"
62
+ }), /* @__PURE__ */ i("p", {
63
+ className: "text-2xl font-bold text-yellow-600",
64
+ children: y
65
+ })]
66
+ }) }),
67
+ /* @__PURE__ */ i(c, { children: /* @__PURE__ */ a(l, {
68
+ className: "pt-6",
69
+ children: [/* @__PURE__ */ i("p", {
70
+ className: "text-sm text-muted-foreground",
71
+ children: "Inactive"
72
+ }), /* @__PURE__ */ i("p", {
73
+ className: "text-2xl font-bold text-gray-600",
74
+ children: b
75
+ })]
76
+ }) })
77
+ ]
78
+ }),
79
+ /* @__PURE__ */ a("div", {
80
+ className: "flex flex-col sm:flex-row gap-3",
81
+ children: [/* @__PURE__ */ a("div", {
82
+ className: "relative flex-1",
83
+ children: [/* @__PURE__ */ i(r, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }), /* @__PURE__ */ i(u, {
84
+ placeholder: "Search students...",
85
+ value: p,
86
+ onChange: (e) => m(e.target.value),
87
+ className: "pl-10"
88
+ })]
89
+ }), /* @__PURE__ */ i("div", {
90
+ className: "flex gap-1",
91
+ children: [
92
+ "all",
93
+ "active",
94
+ "at_risk",
95
+ "inactive"
96
+ ].map((e) => /* @__PURE__ */ i(s, {
97
+ variant: h === e ? "default" : "outline",
98
+ size: "sm",
99
+ className: "capitalize",
100
+ onClick: () => g(e),
101
+ children: e === "at_risk" ? "At Risk" : e
102
+ }, e))
103
+ })]
104
+ }),
105
+ /* @__PURE__ */ i(c, { children: /* @__PURE__ */ i(l, {
106
+ className: "p-0",
107
+ children: /* @__PURE__ */ i("div", {
108
+ className: "overflow-x-auto",
109
+ children: /* @__PURE__ */ a("table", {
110
+ className: "w-full",
111
+ children: [/* @__PURE__ */ i("thead", { children: /* @__PURE__ */ a("tr", {
112
+ className: "border-b bg-muted/50",
113
+ children: [
114
+ /* @__PURE__ */ i("th", {
115
+ className: "text-left text-xs font-medium text-muted-foreground p-3",
116
+ children: "Student"
117
+ }),
118
+ /* @__PURE__ */ i("th", {
119
+ className: "text-left text-xs font-medium text-muted-foreground p-3",
120
+ children: "Courses"
121
+ }),
122
+ /* @__PURE__ */ i("th", {
123
+ className: "text-left text-xs font-medium text-muted-foreground p-3",
124
+ children: "Progress"
125
+ }),
126
+ /* @__PURE__ */ i("th", {
127
+ className: "text-left text-xs font-medium text-muted-foreground p-3",
128
+ children: "Grade"
129
+ }),
130
+ /* @__PURE__ */ i("th", {
131
+ className: "text-left text-xs font-medium text-muted-foreground p-3",
132
+ children: "Last Active"
133
+ }),
134
+ /* @__PURE__ */ i("th", {
135
+ className: "text-left text-xs font-medium text-muted-foreground p-3",
136
+ children: "Status"
137
+ })
138
+ ]
139
+ }) }), /* @__PURE__ */ i("tbody", { children: _.map((e) => /* @__PURE__ */ a("tr", {
140
+ className: "border-b hover:bg-muted/30 transition-colors",
141
+ children: [
142
+ /* @__PURE__ */ i("td", {
143
+ className: "p-3",
144
+ children: /* @__PURE__ */ a("div", {
145
+ className: "flex items-center gap-2",
146
+ children: [/* @__PURE__ */ i("div", {
147
+ className: "w-8 h-8 rounded-full bg-primary/10 flex items-center justify-center text-xs font-bold",
148
+ children: e.avatar
149
+ }), /* @__PURE__ */ a("div", { children: [/* @__PURE__ */ i("p", {
150
+ className: "text-sm font-medium",
151
+ children: e.name
152
+ }), /* @__PURE__ */ i("p", {
153
+ className: "text-xs text-muted-foreground",
154
+ children: e.email
155
+ })] })]
156
+ })
157
+ }),
158
+ /* @__PURE__ */ i("td", {
159
+ className: "p-3 text-sm",
160
+ children: e.enrolledCourses
161
+ }),
162
+ /* @__PURE__ */ i("td", {
163
+ className: "p-3",
164
+ children: /* @__PURE__ */ a("div", {
165
+ className: "flex items-center gap-2",
166
+ children: [/* @__PURE__ */ i("div", {
167
+ className: "h-2 w-24 rounded-full bg-muted",
168
+ children: /* @__PURE__ */ i("div", {
169
+ className: "h-2 rounded-full bg-primary",
170
+ style: { width: `${e.overallProgress}%` }
171
+ })
172
+ }), /* @__PURE__ */ a("span", {
173
+ className: "text-xs font-medium",
174
+ children: [e.overallProgress, "%"]
175
+ })]
176
+ })
177
+ }),
178
+ /* @__PURE__ */ i("td", {
179
+ className: "p-3 text-sm font-medium",
180
+ children: e.averageGrade
181
+ }),
182
+ /* @__PURE__ */ i("td", {
183
+ className: "p-3 text-sm text-muted-foreground",
184
+ children: e.lastActive
185
+ }),
186
+ /* @__PURE__ */ i("td", {
187
+ className: "p-3",
188
+ children: /* @__PURE__ */ i(o, {
189
+ className: `text-xs ${d[e.status]}`,
190
+ children: e.status.replace("_", " ")
191
+ })
192
+ })
193
+ ]
194
+ }, e.id)) })]
195
+ })
196
+ })
197
+ }) })
198
+ ]
199
+ });
200
+ }
201
+ //#endregion
202
+ export { f as TeachingStudentsPage };
203
+
204
+ //# sourceMappingURL=TeachingStudentsPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeachingStudentsPage.js","names":[],"sources":["../../../src/buildmyiq/pages/TeachingStudentsPage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { Badge, Button, Card, CardContent, Input } from '@burdenoff/fe-libs/ui';\nimport { Users, Search, Download } from 'lucide-react';\nimport { useBuildMyIQStore } from '../store/buildmyiqStore';\n\nconst statusColors: Record<string, string> = {\n active: 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400',\n inactive: 'bg-gray-100 text-gray-700 dark:bg-gray-900/30 dark:text-gray-400',\n at_risk: 'bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400',\n};\n\nexport function TeachingStudentsPage() {\n const { students } = useBuildMyIQStore();\n const [search, setSearch] = useState('');\n const [statusFilter, setStatusFilter] = useState('all');\n\n const filtered = students.filter((s) => {\n const matchesSearch =\n s.name.toLowerCase().includes(search.toLowerCase()) ||\n s.email.toLowerCase().includes(search.toLowerCase());\n const matchesStatus = statusFilter === 'all' || s.status === statusFilter;\n return matchesSearch && matchesStatus;\n });\n\n const active = students.filter((s) => s.status === 'active').length;\n const atRisk = students.filter((s) => s.status === 'at_risk').length;\n const inactive = students.filter((s) => s.status === 'inactive').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\">Students</h1>\n <p className=\"text-sm text-muted-foreground\">Monitor and manage your students</p>\n </div>\n <Button variant=\"outline\" size=\"sm\">\n <Download className=\"mr-2 h-4 w-4\" />\n Export\n </Button>\n </div>\n\n <div className=\"grid grid-cols-1 md:grid-cols-4 gap-4\">\n <Card>\n <CardContent className=\"pt-6\">\n <p className=\"text-sm text-muted-foreground\">Total Students</p>\n <p className=\"text-2xl font-bold\">{students.length}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-6\">\n <p className=\"text-sm text-muted-foreground\">Active</p>\n <p className=\"text-2xl font-bold text-green-600\">{active}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-6\">\n <p className=\"text-sm text-muted-foreground\">At Risk</p>\n <p className=\"text-2xl font-bold text-yellow-600\">{atRisk}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"pt-6\">\n <p className=\"text-sm text-muted-foreground\">Inactive</p>\n <p className=\"text-2xl font-bold text-gray-600\">{inactive}</p>\n </CardContent>\n </Card>\n </div>\n\n <div className=\"flex flex-col sm:flex-row gap-3\">\n <div className=\"relative flex-1\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground\" />\n <Input\n placeholder=\"Search students...\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"pl-10\"\n />\n </div>\n <div className=\"flex gap-1\">\n {['all', 'active', 'at_risk', 'inactive'].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 === 'at_risk' ? 'At Risk' : s}\n </Button>\n ))}\n </div>\n </div>\n\n <Card>\n <CardContent className=\"p-0\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b bg-muted/50\">\n <th className=\"text-left text-xs font-medium text-muted-foreground p-3\">\n Student\n </th>\n <th className=\"text-left text-xs font-medium text-muted-foreground p-3\">\n Courses\n </th>\n <th className=\"text-left text-xs font-medium text-muted-foreground p-3\">\n Progress\n </th>\n <th className=\"text-left text-xs font-medium text-muted-foreground p-3\">Grade</th>\n <th className=\"text-left text-xs font-medium text-muted-foreground p-3\">\n Last Active\n </th>\n <th className=\"text-left text-xs font-medium text-muted-foreground p-3\">\n Status\n </th>\n </tr>\n </thead>\n <tbody>\n {filtered.map((student) => (\n <tr key={student.id} className=\"border-b hover:bg-muted/30 transition-colors\">\n <td className=\"p-3\">\n <div className=\"flex items-center gap-2\">\n <div className=\"w-8 h-8 rounded-full bg-primary/10 flex items-center justify-center text-xs font-bold\">\n {student.avatar}\n </div>\n <div>\n <p className=\"text-sm font-medium\">{student.name}</p>\n <p className=\"text-xs text-muted-foreground\">{student.email}</p>\n </div>\n </div>\n </td>\n <td className=\"p-3 text-sm\">{student.enrolledCourses}</td>\n <td className=\"p-3\">\n <div className=\"flex items-center gap-2\">\n <div className=\"h-2 w-24 rounded-full bg-muted\">\n <div\n className=\"h-2 rounded-full bg-primary\"\n style={{ width: `${student.overallProgress}%` }}\n />\n </div>\n <span className=\"text-xs font-medium\">{student.overallProgress}%</span>\n </div>\n </td>\n <td className=\"p-3 text-sm font-medium\">{student.averageGrade}</td>\n <td className=\"p-3 text-sm text-muted-foreground\">{student.lastActive}</td>\n <td className=\"p-3\">\n <Badge className={`text-xs ${statusColors[student.status]}`}>\n {student.status.replace('_', ' ')}\n </Badge>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { FC, PropsWithChildren } from 'react';
2
+ import { BuildMyIQRootProps } from '../types';
3
+
4
+ export declare const useBuildMyIQ: () => BuildMyIQRootProps;
5
+ export declare const BuildMyIQProvider: FC<PropsWithChildren<BuildMyIQRootProps>>;
6
+ //# sourceMappingURL=BuildMyIQProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildMyIQProvider.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/providers/BuildMyIQProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAInD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAMnD,eAAO,MAAM,YAAY,0BAIxB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAsBvE,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { createContext as e, useContext as t, useMemo as n } from "react";
2
+ import { MemoryRouter as r } from "react-router-dom";
3
+ import { QueryClient as i, QueryClientProvider as a } from "@tanstack/react-query";
4
+ import { jsx as o } from "react/jsx-runtime";
5
+ //#region src/buildmyiq/providers/BuildMyIQProvider.tsx
6
+ var s = e(null), c = () => {
7
+ let e = t(s);
8
+ if (!e) throw Error("useBuildMyIQ must be used within BuildMyIQProvider");
9
+ return e;
10
+ }, l = ({ children: e, ...t }) => {
11
+ let c = /* @__PURE__ */ o(a, {
12
+ client: n(() => new i({ defaultOptions: { queries: {
13
+ retry: 1,
14
+ refetchOnWindowFocus: !1,
15
+ staleTime: 300 * 1e3
16
+ } } }), []),
17
+ children: /* @__PURE__ */ o(s.Provider, {
18
+ value: t,
19
+ children: e
20
+ })
21
+ });
22
+ return t.basePath ? c : /* @__PURE__ */ o(r, { children: c });
23
+ };
24
+ //#endregion
25
+ export { l as BuildMyIQProvider, c as useBuildMyIQ };
26
+
27
+ //# sourceMappingURL=BuildMyIQProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildMyIQProvider.js","names":[],"sources":["../../../src/buildmyiq/providers/BuildMyIQProvider.tsx"],"sourcesContent":["import type { FC, PropsWithChildren } from 'react';\nimport { createContext, useContext, useMemo } from 'react';\nimport { MemoryRouter } from 'react-router-dom';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport type { BuildMyIQRootProps } from '../types';\n\ntype BuildMyIQContextValue = BuildMyIQRootProps;\n\nconst BuildMyIQContext = createContext<BuildMyIQContextValue | null>(null);\n\nexport const useBuildMyIQ = () => {\n const context = useContext(BuildMyIQContext);\n if (!context) throw new Error('useBuildMyIQ must be used within BuildMyIQProvider');\n return context;\n};\n\nexport const BuildMyIQProvider: FC<PropsWithChildren<BuildMyIQRootProps>> = ({\n children,\n ...props\n}) => {\n const queryClient = useMemo(\n () =>\n new QueryClient({\n defaultOptions: {\n queries: { retry: 1, refetchOnWindowFocus: false, staleTime: 5 * 60 * 1000 },\n },\n }),\n []\n );\n\n const content = (\n <QueryClientProvider client={queryClient}>\n <BuildMyIQContext.Provider value={props}>{children}</BuildMyIQContext.Provider>\n </QueryClientProvider>\n );\n\n if (props.basePath) return content;\n return <MemoryRouter>{content}</MemoryRouter>;\n};\n"],"mappings":";;;;;AAQA,IAAM,IAAmB,EAA4C,KAAK,EAE7D,UAAqB;CAChC,IAAM,IAAU,EAAW,EAAiB;AAC5C,KAAI,CAAC,EAAS,OAAU,MAAM,qDAAqD;AACnF,QAAO;GAGI,KAAgE,EAC3E,aACA,GAAG,QACC;CAWJ,IAAM,IACJ,kBAAC,GAAD;EAAqB,QAXH,QAEhB,IAAI,EAAY,EACd,gBAAgB,EACd,SAAS;GAAE,OAAO;GAAG,sBAAsB;GAAO,WAAW,MAAS;GAAM,EAC7E,EACF,CAAC,EACJ,EAAE,CACH;YAIG,kBAAC,EAAiB,UAAlB;GAA2B,OAAO;GAAQ;GAAqC,CAAA;EAC3D,CAAA;AAIxB,QADI,EAAM,WAAiB,IACpB,kBAAC,GAAD,EAAA,UAAe,GAAuB,CAAA"}
@@ -0,0 +1,189 @@
1
+ export interface Course {
2
+ id: string;
3
+ title: string;
4
+ description: string;
5
+ instructor: string;
6
+ category: string;
7
+ level: 'Beginner' | 'Intermediate' | 'Advanced';
8
+ duration: string;
9
+ students: number;
10
+ rating: number;
11
+ progress?: number;
12
+ price: number;
13
+ lessons: number;
14
+ assessments: number;
15
+ status: 'published' | 'draft' | 'archived';
16
+ tags: string[];
17
+ modules: CourseModule[];
18
+ lastUpdated: string;
19
+ }
20
+ export interface CourseModule {
21
+ id: string;
22
+ title: string;
23
+ lessons: Lesson[];
24
+ }
25
+ export interface Lesson {
26
+ id: string;
27
+ title: string;
28
+ type: 'video' | 'reading' | 'exercise' | 'quiz';
29
+ duration: string;
30
+ completed: boolean;
31
+ }
32
+ export interface Student {
33
+ id: string;
34
+ name: string;
35
+ email: string;
36
+ avatar: string;
37
+ enrolledCourses: number;
38
+ overallProgress: number;
39
+ averageGrade: string;
40
+ lastActive: string;
41
+ status: 'active' | 'inactive' | 'at_risk';
42
+ }
43
+ export interface Instructor {
44
+ id: string;
45
+ name: string;
46
+ email: string;
47
+ department: string;
48
+ courses: number;
49
+ students: number;
50
+ rating: number;
51
+ specialization: string;
52
+ }
53
+ export interface Assessment {
54
+ id: string;
55
+ title: string;
56
+ course: string;
57
+ courseId: string;
58
+ type: 'exam' | 'quiz' | 'assignment';
59
+ dueDate: string;
60
+ duration: number | null;
61
+ questions: number;
62
+ totalPoints: number;
63
+ status: 'published' | 'draft' | 'grading';
64
+ submissions: number;
65
+ totalStudents: number;
66
+ averageScore: number | null;
67
+ }
68
+ export interface QuizQuestion {
69
+ id: string;
70
+ question: string;
71
+ type: 'multiple_choice' | 'short_answer' | 'essay' | 'true_false';
72
+ options?: string[];
73
+ correctAnswer: string;
74
+ points: number;
75
+ course: string;
76
+ topic: string;
77
+ }
78
+ export interface ForumTopic {
79
+ id: string;
80
+ title: string;
81
+ author: string;
82
+ course: string;
83
+ replies: number;
84
+ views: number;
85
+ lastReply: string;
86
+ pinned: boolean;
87
+ category: string;
88
+ }
89
+ export interface Announcement {
90
+ id: string;
91
+ title: string;
92
+ content: string;
93
+ author: string;
94
+ course: string;
95
+ priority: 'high' | 'medium' | 'low';
96
+ timestamp: string;
97
+ unread: boolean;
98
+ pinned: boolean;
99
+ }
100
+ export interface GradeEntry {
101
+ id: string;
102
+ studentId: string;
103
+ studentName: string;
104
+ courseId: string;
105
+ courseName: string;
106
+ assessmentTitle: string;
107
+ score: number;
108
+ maxScore: number;
109
+ grade: string;
110
+ submittedAt: string;
111
+ status: 'graded' | 'pending' | 'in_progress';
112
+ }
113
+ export interface LessonPlan {
114
+ id: string;
115
+ title: string;
116
+ course: string;
117
+ courseId: string;
118
+ objectives: string[];
119
+ duration: string;
120
+ materials: string[];
121
+ status: 'published' | 'draft';
122
+ lastUpdated: string;
123
+ grade: string;
124
+ }
125
+ export interface CalendarEvent {
126
+ id: string;
127
+ title: string;
128
+ date: string;
129
+ time: string;
130
+ type: 'lecture' | 'exam' | 'assignment' | 'lab' | 'office_hours';
131
+ course: string;
132
+ location: string;
133
+ }
134
+ export interface OverviewMetric {
135
+ label: string;
136
+ value: string;
137
+ trend: string;
138
+ }
139
+ export interface WorkItem {
140
+ id: string;
141
+ title: string;
142
+ status: 'active' | 'planned' | 'at_risk' | 'completed';
143
+ owner: string;
144
+ updatedAt: string;
145
+ }
146
+ export interface GradingQueueItem {
147
+ id: string;
148
+ studentName: string;
149
+ studentAvatar: string;
150
+ assignment: string;
151
+ course: string;
152
+ type: 'assignment' | 'quiz' | 'project';
153
+ priority: 'high' | 'medium' | 'low';
154
+ status: 'pending' | 'in_review';
155
+ submittedDate: string;
156
+ dueDate: string;
157
+ }
158
+ interface BuildMyIQState {
159
+ metrics: OverviewMetric[];
160
+ workItems: WorkItem[];
161
+ selectedView: string;
162
+ courses: Course[];
163
+ students: Student[];
164
+ instructors: Instructor[];
165
+ assessments: Assessment[];
166
+ quizQuestions: QuizQuestion[];
167
+ forumTopics: ForumTopic[];
168
+ announcements: Announcement[];
169
+ grades: GradeEntry[];
170
+ lessonPlans: LessonPlan[];
171
+ calendarEvents: CalendarEvent[];
172
+ gradingQueue: GradingQueueItem[];
173
+ setSelectedView: (view: string) => void;
174
+ setWorkItems: (items: WorkItem[]) => void;
175
+ addCourse: (course: Course) => void;
176
+ updateCourse: (id: string, updates: Partial<Course>) => void;
177
+ addStudent: (student: Student) => void;
178
+ addAssessment: (assessment: Assessment) => void;
179
+ addAnnouncement: (announcement: Announcement) => void;
180
+ markAnnouncementRead: (id: string) => void;
181
+ addGradeEntry: (entry: GradeEntry) => void;
182
+ updateGradeStatus: (id: string, status: GradeEntry['status']) => void;
183
+ addForumTopic: (topic: ForumTopic) => void;
184
+ addLessonPlan: (plan: LessonPlan) => void;
185
+ addCalendarEvent: (event: CalendarEvent) => void;
186
+ }
187
+ export declare const useBuildMyIQStore: import('zustand').UseBoundStore<import('zustand').StoreApi<BuildMyIQState>>;
188
+ export {};
189
+ //# sourceMappingURL=buildmyiqStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildmyiqStore.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/store/buildmyiqStore.ts"],"names":[],"mappings":"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"}