@hydralms/components 0.2.0 → 0.3.0

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 (283) hide show
  1. package/dist/StudentProfile-BVfZMbnV.cjs +1 -0
  2. package/dist/StudentProfile-DeMxdrL3.js +3275 -0
  3. package/dist/assessment-toolbar/question-navigator.d.ts +1 -1
  4. package/dist/assessment-toolbar/timer-display.d.ts +1 -1
  5. package/dist/common/index.d.ts +2 -1
  6. package/dist/common/pagination.d.ts +26 -0
  7. package/dist/common/types.d.ts +1 -0
  8. package/dist/components.css +1 -1
  9. package/dist/content/audio-player.d.ts +22 -0
  10. package/dist/content/code-block.d.ts +30 -0
  11. package/dist/content/embed-block.d.ts +28 -0
  12. package/dist/content/index.d.ts +6 -0
  13. package/dist/content/types.d.ts +24 -0
  14. package/dist/curriculum/course-card.d.ts +51 -0
  15. package/dist/curriculum/index.d.ts +2 -0
  16. package/dist/curriculum/types.d.ts +2 -2
  17. package/dist/index.cjs +1 -1
  18. package/dist/index.d.ts +1 -0
  19. package/dist/index.js +494 -444
  20. package/dist/license/HydraContext.d.ts +16 -0
  21. package/dist/license/ProBadge.d.ts +6 -0
  22. package/dist/license/index.d.ts +7 -0
  23. package/dist/license/tiers.d.ts +3 -0
  24. package/dist/license/useHydraLicense.d.ts +6 -0
  25. package/dist/license/validate.d.ts +13 -0
  26. package/dist/license/withProGate.d.ts +6 -0
  27. package/dist/modules/AssignmentModule/AssignmentModule.d.ts +4 -7
  28. package/dist/modules/AssignmentModule/types.d.ts +5 -1
  29. package/dist/modules/CertificateModule/CertificateModule.d.ts +4 -8
  30. package/dist/modules/CertificateModule/types.d.ts +6 -4
  31. package/dist/modules/CourseCatalogModule/CourseCatalogModule.d.ts +5 -0
  32. package/dist/modules/CourseCatalogModule/types.d.ts +43 -0
  33. package/dist/modules/CoursePlayer/CoursePlayer.d.ts +4 -1
  34. package/dist/modules/DiscussionModule/DiscussionModule.d.ts +4 -7
  35. package/dist/modules/ExamModule/ExamModule.d.ts +4 -7
  36. package/dist/modules/ExamModule/types.d.ts +5 -14
  37. package/dist/modules/FlashcardLab/FlashcardLab.d.ts +4 -1
  38. package/dist/modules/FlashcardLab/types.d.ts +2 -0
  39. package/dist/modules/GradeCenterModule/GradeCenterModule.d.ts +4 -8
  40. package/dist/modules/GradeCenterModule/types.d.ts +2 -0
  41. package/dist/modules/QuizModule/QuizModule.d.ts +4 -1
  42. package/dist/modules/QuizModule/types.d.ts +5 -14
  43. package/dist/modules/StudentDashboardModule/StudentDashboardModule.d.ts +5 -0
  44. package/dist/modules/StudentDashboardModule/types.d.ts +54 -0
  45. package/dist/modules/StudentProfileModule/StudentProfileModule.d.ts +5 -0
  46. package/dist/modules/StudentProfileModule/types.d.ts +43 -0
  47. package/dist/modules/SurveyModule/SurveyModule.d.ts +4 -6
  48. package/dist/modules/SurveyModule/types.d.ts +2 -0
  49. package/dist/modules/_shared/assessment-intro.d.ts +16 -0
  50. package/dist/modules/_shared/assessment-results.d.ts +23 -0
  51. package/dist/modules/_shared/types.d.ts +10 -0
  52. package/dist/modules/_shared/use-timer.d.ts +9 -0
  53. package/dist/modules/index.d.ts +6 -0
  54. package/dist/modules.cjs +1 -1
  55. package/dist/modules.js +1266 -854
  56. package/dist/progress/types.d.ts +2 -0
  57. package/dist/provider/HydraProvider.d.ts +5 -1
  58. package/dist/questions/choice.d.ts +1 -1
  59. package/dist/questions/confidence-indicator.d.ts +37 -0
  60. package/dist/questions/essay.d.ts +1 -1
  61. package/dist/questions/fill-in-the-blank.d.ts +1 -1
  62. package/dist/questions/hotspot.d.ts +1 -1
  63. package/dist/questions/index.d.ts +2 -0
  64. package/dist/questions/inline-choice.d.ts +1 -1
  65. package/dist/questions/matching.d.ts +1 -1
  66. package/dist/questions/multiple-choice.d.ts +1 -1
  67. package/dist/questions/numeric.d.ts +1 -1
  68. package/dist/questions/ordering.d.ts +1 -1
  69. package/dist/questions/question-renderer.d.ts +1 -1
  70. package/dist/questions/scenario.d.ts +1 -1
  71. package/dist/questions/spreadsheet.d.ts +1 -1
  72. package/dist/questions/true-false.d.ts +1 -1
  73. package/dist/sections/AnnouncementFeed/AnnouncementFeed.d.ts +1 -1
  74. package/dist/sections/AnnouncementFeed/types.d.ts +15 -1
  75. package/dist/sections/AssessmentReview/AssessmentReview.d.ts +1 -1
  76. package/dist/sections/AssessmentReview/types.d.ts +6 -0
  77. package/dist/sections/AssignmentSubmission/AssignmentSubmission.d.ts +1 -1
  78. package/dist/sections/AssignmentSubmission/types.d.ts +6 -0
  79. package/dist/sections/CertificateViewer/CertificateViewer.d.ts +1 -1
  80. package/dist/sections/CertificateViewer/certificate-variants.d.ts +42 -0
  81. package/dist/sections/CertificateViewer/types.d.ts +6 -0
  82. package/dist/sections/CourseCatalog/CourseCatalog.d.ts +2 -0
  83. package/dist/sections/CourseCatalog/types.d.ts +80 -0
  84. package/dist/sections/CourseOutline/CourseOutline.d.ts +1 -1
  85. package/dist/sections/CourseOutline/types.d.ts +6 -0
  86. package/dist/sections/DiscussionThread/DiscussionThread.d.ts +1 -1
  87. package/dist/sections/DiscussionThread/types.d.ts +6 -0
  88. package/dist/sections/EnrollmentWizard/EnrollmentWizard.d.ts +2 -0
  89. package/dist/sections/EnrollmentWizard/types.d.ts +66 -0
  90. package/dist/sections/ExamSession/ExamSession.d.ts +1 -1
  91. package/dist/sections/ExamSession/types.d.ts +6 -0
  92. package/dist/sections/FlashcardStudySession/FlashcardStudySession.d.ts +1 -1
  93. package/dist/sections/FlashcardStudySession/types.d.ts +6 -0
  94. package/dist/sections/ForumBoard/ForumBoard.d.ts +1 -1
  95. package/dist/sections/ForumBoard/types.d.ts +14 -0
  96. package/dist/sections/GradebookTable/GradebookTable.d.ts +1 -1
  97. package/dist/sections/GradebookTable/types.d.ts +14 -0
  98. package/dist/sections/LecturePlayer/LecturePlayer.d.ts +1 -1
  99. package/dist/sections/LecturePlayer/types.d.ts +8 -0
  100. package/dist/sections/LessonPage/LessonPage.d.ts +1 -1
  101. package/dist/sections/LessonPage/types.d.ts +6 -0
  102. package/dist/sections/PracticeQuiz/PracticeQuiz.d.ts +1 -1
  103. package/dist/sections/PracticeQuiz/types.d.ts +6 -0
  104. package/dist/sections/ProgressDashboard/ProgressDashboard.d.ts +1 -1
  105. package/dist/sections/ProgressDashboard/types.d.ts +6 -0
  106. package/dist/sections/QuizSession/QuizSession.d.ts +1 -1
  107. package/dist/sections/QuizSession/types.d.ts +6 -0
  108. package/dist/sections/RequirementsChecklist/RequirementsChecklist.d.ts +1 -1
  109. package/dist/sections/RequirementsChecklist/types.d.ts +6 -0
  110. package/dist/sections/ResourceLibrary/ResourceLibrary.d.ts +1 -1
  111. package/dist/sections/ResourceLibrary/types.d.ts +15 -1
  112. package/dist/sections/RubricView/RubricView.d.ts +1 -1
  113. package/dist/sections/RubricView/types.d.ts +6 -0
  114. package/dist/sections/ScrollableQuiz/ScrollableQuiz.d.ts +1 -1
  115. package/dist/sections/ScrollableQuiz/types.d.ts +6 -0
  116. package/dist/sections/StudentProfile/StudentProfile.d.ts +2 -0
  117. package/dist/sections/StudentProfile/types.d.ts +98 -0
  118. package/dist/sections/SurveyForm/SurveyForm.d.ts +1 -1
  119. package/dist/sections/SurveyForm/types.d.ts +6 -0
  120. package/dist/sections/_shared/merge-answers.d.ts +9 -0
  121. package/dist/sections/_shared/section-shell.d.ts +20 -0
  122. package/dist/sections/_shared/use-assessment-session.d.ts +30 -0
  123. package/dist/sections/index.d.ts +6 -0
  124. package/dist/sections.cjs +1 -1
  125. package/dist/sections.js +268 -307
  126. package/dist/tabs-BsfVo2Bl.cjs +173 -0
  127. package/dist/{tabs-Wf3h_Cx3.js → tabs-BuY1iNJE.js} +7532 -6807
  128. package/dist/ui/badge.d.ts +1 -1
  129. package/dist/ui/index.d.ts +2 -0
  130. package/dist/ui/progress.d.ts +1 -1
  131. package/dist/ui/rich-text-editor.d.ts +3 -1
  132. package/dist/ui/toast.d.ts +43 -0
  133. package/dist/utils/debounce.d.ts +5 -1
  134. package/dist/utils/pick-palette-color.d.ts +19 -0
  135. package/dist/video/types.d.ts +15 -0
  136. package/dist/video/video-player.d.ts +1 -1
  137. package/dist/withProGate-BWqcKdPM.js +137 -0
  138. package/dist/withProGate-DX6XqKLp.cjs +1 -0
  139. package/package.json +34 -220
  140. package/src/assessment-toolbar/question-navigator.tsx +10 -5
  141. package/src/assessment-toolbar/timer-display.tsx +4 -3
  142. package/src/assessment-toolbar/use-countdown.ts +1 -1
  143. package/src/common/empty-state.tsx +1 -0
  144. package/src/common/index.ts +2 -0
  145. package/src/common/pagination.tsx +135 -0
  146. package/src/common/search-input.tsx +2 -1
  147. package/src/common/types.ts +2 -0
  148. package/src/content/attachment-list.tsx +2 -0
  149. package/src/content/audio-player.tsx +196 -0
  150. package/src/content/code-block.tsx +113 -0
  151. package/src/content/content-block.tsx +64 -0
  152. package/src/content/embed-block.tsx +78 -0
  153. package/src/content/file-upload-zone.tsx +10 -0
  154. package/src/content/index.ts +6 -0
  155. package/src/content/types.ts +5 -0
  156. package/src/curriculum/course-card.tsx +199 -0
  157. package/src/curriculum/curriculum-item.tsx +3 -3
  158. package/src/curriculum/curriculum-tree.tsx +20 -13
  159. package/src/curriculum/index.ts +2 -0
  160. package/src/curriculum/types.ts +2 -2
  161. package/src/flashcards/flashcard.tsx +28 -8
  162. package/src/index.ts +3 -0
  163. package/src/license/HydraContext.tsx +62 -0
  164. package/src/license/ProBadge.tsx +43 -0
  165. package/src/license/index.ts +7 -0
  166. package/src/license/tiers.ts +24 -0
  167. package/src/license/useHydraLicense.ts +10 -0
  168. package/src/license/validate.ts +90 -0
  169. package/src/license/withProGate.tsx +21 -0
  170. package/src/modules/AssignmentModule/AssignmentModule.tsx +17 -8
  171. package/src/modules/AssignmentModule/types.ts +5 -1
  172. package/src/modules/CertificateModule/CertificateModule.tsx +21 -9
  173. package/src/modules/CertificateModule/types.ts +6 -4
  174. package/src/modules/CourseCatalogModule/CourseCatalogModule.tsx +126 -0
  175. package/src/modules/CourseCatalogModule/types.ts +47 -0
  176. package/src/modules/CoursePlayer/CoursePlayer.tsx +37 -22
  177. package/src/modules/DiscussionModule/DiscussionModule.tsx +57 -22
  178. package/src/modules/ExamModule/ExamModule.tsx +64 -198
  179. package/src/modules/ExamModule/types.ts +5 -14
  180. package/src/modules/FlashcardLab/FlashcardLab.tsx +10 -5
  181. package/src/modules/FlashcardLab/types.ts +2 -0
  182. package/src/modules/GradeCenterModule/GradeCenterModule.tsx +7 -2
  183. package/src/modules/GradeCenterModule/types.ts +2 -0
  184. package/src/modules/QuizModule/QuizModule.tsx +49 -169
  185. package/src/modules/QuizModule/types.ts +5 -15
  186. package/src/modules/StudentDashboardModule/StudentDashboardModule.tsx +117 -0
  187. package/src/modules/StudentDashboardModule/types.ts +56 -0
  188. package/src/modules/StudentProfileModule/StudentProfileModule.tsx +289 -0
  189. package/src/modules/StudentProfileModule/types.ts +45 -0
  190. package/src/modules/SurveyModule/SurveyModule.tsx +9 -4
  191. package/src/modules/SurveyModule/types.ts +2 -0
  192. package/src/modules/_shared/assessment-intro.tsx +75 -0
  193. package/src/modules/_shared/assessment-results.tsx +133 -0
  194. package/src/modules/_shared/types.ts +11 -0
  195. package/src/modules/_shared/use-timer.ts +49 -0
  196. package/src/modules/index.ts +9 -0
  197. package/src/progress/achievement-badge.tsx +3 -3
  198. package/src/progress/grade-indicator.tsx +9 -1
  199. package/src/progress/progress-ring.tsx +2 -1
  200. package/src/progress/stat-card.tsx +8 -1
  201. package/src/progress/types.ts +2 -0
  202. package/src/provider/HydraProvider.tsx +15 -6
  203. package/src/questions/choice.tsx +13 -6
  204. package/src/questions/confidence-indicator.tsx +107 -0
  205. package/src/questions/essay.tsx +6 -4
  206. package/src/questions/fill-in-the-blank.tsx +8 -4
  207. package/src/questions/hotspot.tsx +4 -4
  208. package/src/questions/index.ts +2 -0
  209. package/src/questions/inline-choice.tsx +5 -4
  210. package/src/questions/matching.tsx +5 -4
  211. package/src/questions/multiple-choice.tsx +13 -6
  212. package/src/questions/numeric.tsx +8 -4
  213. package/src/questions/ordering.tsx +12 -4
  214. package/src/questions/question-renderer.tsx +3 -2
  215. package/src/questions/scenario.tsx +4 -4
  216. package/src/questions/spreadsheet.tsx +5 -4
  217. package/src/questions/true-false.tsx +13 -6
  218. package/src/sections/AnnouncementFeed/AnnouncementFeed.tsx +64 -8
  219. package/src/sections/AnnouncementFeed/types.ts +15 -1
  220. package/src/sections/AssessmentReview/AssessmentReview.tsx +37 -0
  221. package/src/sections/AssessmentReview/types.ts +6 -0
  222. package/src/sections/AssignmentSubmission/AssignmentSubmission.tsx +37 -1
  223. package/src/sections/AssignmentSubmission/types.ts +6 -0
  224. package/src/sections/CertificateViewer/CertificateViewer.tsx +29 -227
  225. package/src/sections/CertificateViewer/certificate-variants.tsx +170 -0
  226. package/src/sections/CertificateViewer/types.ts +6 -0
  227. package/src/sections/CourseCatalog/CourseCatalog.tsx +220 -0
  228. package/src/sections/CourseCatalog/types.ts +76 -0
  229. package/src/sections/CourseOutline/CourseOutline.tsx +41 -0
  230. package/src/sections/CourseOutline/types.ts +6 -0
  231. package/src/sections/DiscussionThread/DiscussionThread.tsx +42 -1
  232. package/src/sections/DiscussionThread/types.ts +6 -0
  233. package/src/sections/EnrollmentWizard/EnrollmentWizard.tsx +343 -0
  234. package/src/sections/EnrollmentWizard/types.ts +65 -0
  235. package/src/sections/ExamSession/ExamSession.tsx +100 -94
  236. package/src/sections/ExamSession/types.ts +6 -0
  237. package/src/sections/FlashcardStudySession/FlashcardStudySession.tsx +53 -36
  238. package/src/sections/FlashcardStudySession/types.ts +6 -0
  239. package/src/sections/ForumBoard/ForumBoard.tsx +59 -1
  240. package/src/sections/ForumBoard/types.ts +14 -0
  241. package/src/sections/GradebookTable/GradebookTable.tsx +54 -1
  242. package/src/sections/GradebookTable/types.ts +14 -0
  243. package/src/sections/LecturePlayer/LecturePlayer.tsx +63 -37
  244. package/src/sections/LecturePlayer/types.ts +8 -0
  245. package/src/sections/LessonPage/LessonPage.tsx +36 -5
  246. package/src/sections/LessonPage/types.ts +6 -0
  247. package/src/sections/PracticeQuiz/PracticeQuiz.tsx +106 -74
  248. package/src/sections/PracticeQuiz/types.ts +6 -0
  249. package/src/sections/ProgressDashboard/ProgressDashboard.tsx +64 -10
  250. package/src/sections/ProgressDashboard/types.ts +6 -0
  251. package/src/sections/QuizSession/QuizSession.tsx +71 -82
  252. package/src/sections/QuizSession/types.ts +6 -0
  253. package/src/sections/RequirementsChecklist/RequirementsChecklist.tsx +41 -1
  254. package/src/sections/RequirementsChecklist/types.ts +6 -0
  255. package/src/sections/ResourceLibrary/ResourceLibrary.tsx +64 -8
  256. package/src/sections/ResourceLibrary/types.ts +15 -1
  257. package/src/sections/RubricView/RubricView.tsx +37 -1
  258. package/src/sections/RubricView/types.ts +6 -0
  259. package/src/sections/ScrollableQuiz/ScrollableQuiz.tsx +36 -15
  260. package/src/sections/ScrollableQuiz/types.ts +6 -0
  261. package/src/sections/StudentProfile/StudentProfile.tsx +279 -0
  262. package/src/sections/StudentProfile/types.ts +99 -0
  263. package/src/sections/SurveyForm/SurveyForm.tsx +32 -5
  264. package/src/sections/SurveyForm/types.ts +6 -0
  265. package/src/sections/_shared/merge-answers.ts +22 -0
  266. package/src/sections/_shared/section-shell.tsx +64 -0
  267. package/src/sections/_shared/use-assessment-session.ts +125 -0
  268. package/src/sections/index.ts +22 -0
  269. package/src/social/user-avatar.tsx +9 -5
  270. package/src/styles/globals.css +39 -41
  271. package/src/ui/badge.tsx +8 -0
  272. package/src/ui/index.ts +2 -0
  273. package/src/ui/progress.tsx +4 -0
  274. package/src/ui/rich-text-editor.tsx +10 -0
  275. package/src/ui/rich-text-toolbar.tsx +2 -1
  276. package/src/ui/toast.tsx +170 -0
  277. package/src/utils/debounce.ts +8 -2
  278. package/src/utils/pick-palette-color.ts +33 -0
  279. package/src/video/types.ts +16 -0
  280. package/src/video/video-player.tsx +13 -1
  281. package/dist/ForumBoard-CHXU3mjC.js +0 -2207
  282. package/dist/ForumBoard-d1w5-r6n.cjs +0 -1
  283. package/dist/tabs-DRM2Iq_J.cjs +0 -172
package/dist/sections.js CHANGED
@@ -1,144 +1,162 @@
1
- import { A as be, a as ge, C as ve, b as Ne, D as we, E as ye, F as Ce, c as Se, G as ze, L as Te, d as ke, P as Ae, e as Pe, Q as Ue, R as Le, f as Qe, S as Ee } from "./ForumBoard-CHXU3mjC.js";
2
- import { jsxs as r, jsx as e } from "react/jsx-runtime";
3
- import { useState as S, useRef as Z, useMemo as U, useEffect as $, useCallback as J } from "react";
4
- import { c as f, C as Q, w as I, aj as O, an as W, B as L, am as X, aG as B, aI as D, aH as F, aB as q, aD as ee, aE as M, Z as K, a8 as G, b as _, aK as te, u as ie, aT as se } from "./tabs-Wf3h_Cx3.js";
5
- import { List as ne, Grid as re, Download as ae, Pin as le } from "lucide-react";
6
- function ue({
1
+ import { m as q, S as ee } from "./StudentProfile-DeMxdrL3.js";
2
+ import { A as Se, a as Ae, b as Te, C as Ce, c as ze, d as Le, D as Qe, E as Me, e as ke, F as Ee, f as Ie, G as je, L as Ue, g as Fe, P as Be, h as De, Q as Pe, R as Ve, i as _e, j as Ge, k as We } from "./StudentProfile-DeMxdrL3.js";
3
+ import { jsx as e, jsxs as a, Fragment as te } from "react/jsx-runtime";
4
+ import { useState as L, useRef as K, useMemo as j, useEffect as se, useCallback as O } from "react";
5
+ import { c as f, C as U, x as Y, ao as ie, as as ae, v as z, at as Q, a1 as $, ar as ne, aN as _, aP as G, aO as W, aI as le, aK as re, aL as H, ac as J, a_ as R, ai as de } from "./tabs-BuY1iNJE.js";
6
+ import { AlertCircle as oe, List as ce, Grid as me, Download as ue } from "lucide-react";
7
+ const he = [];
8
+ function ve({
7
9
  questions: l,
8
- initialAnswers: h = [],
9
- onSubmit: x,
10
- onAnswerChange: b,
11
- showNavigator: z = !0,
12
- showQuestionNumbers: T = !0,
13
- questionGroups: g,
14
- isSubmitting: N = !1,
15
- readOnly: u = !1,
16
- className: k,
17
- style: A
10
+ initialAnswers: N = [],
11
+ onSubmit: r,
12
+ onAnswerChange: y,
13
+ showNavigator: F = !0,
14
+ showQuestionNumbers: B = !0,
15
+ questionGroups: b,
16
+ isSubmitting: M = !1,
17
+ readOnly: h = !1,
18
+ isLoading: D,
19
+ error: k,
20
+ onRetry: E,
21
+ className: o,
22
+ style: p
18
23
  }) {
19
- var V;
20
- const [p, w] = S(h), [i, c] = S(((V = l[0]) == null ? void 0 : V.uid) ?? null), d = Z(/* @__PURE__ */ new Map()), m = U(() => {
24
+ var d;
25
+ const [S, x] = L(N), [A, T] = L(((d = l[0]) == null ? void 0 : d.uid) ?? null), m = K(/* @__PURE__ */ new Map()), g = j(() => {
21
26
  const s = /* @__PURE__ */ new Map();
22
- for (const n of p) {
23
- const a = s.get(n.uid);
24
- a ? a.push(n) : s.set(n.uid, [n]);
27
+ for (const i of S) {
28
+ const n = s.get(i.uid);
29
+ n ? n.push(i) : s.set(i.uid, [i]);
25
30
  }
26
31
  return s;
27
- }, [p]), P = U(
28
- () => l.filter((s) => m.has(s.uid)).length,
29
- [l, m]
32
+ }, [S]), v = j(
33
+ () => l.filter((s) => g.has(s.uid)).length,
34
+ [l, g]
30
35
  );
31
- $(() => {
36
+ se(() => {
32
37
  const s = new IntersectionObserver(
33
- (n) => {
34
- for (const a of n)
35
- a.isIntersecting && c(a.target.getAttribute("data-question-uid"));
38
+ (i) => {
39
+ for (const n of i)
40
+ n.isIntersecting && T(n.target.getAttribute("data-question-uid"));
36
41
  },
37
42
  { rootMargin: "-20% 0px -60% 0px" }
38
43
  );
39
- return d.current.forEach((n) => s.observe(n)), () => s.disconnect();
44
+ return m.current.forEach((i) => s.observe(i)), () => s.disconnect();
40
45
  }, [l]);
41
- const j = J((s, n) => {
42
- n ? d.current.set(s, n) : d.current.delete(s);
43
- }, []);
44
- function t(s, n) {
45
- const a = n.map((o) => ({
46
- uid: s,
47
- answerUid: o.uid,
48
- content: o.content
49
- }));
50
- w((o) => {
51
- const R = [...o.filter((Y) => Y.uid !== s), ...a];
52
- return b == null || b(R), R;
53
- });
54
- }
55
- function v(s) {
56
- var n;
57
- (n = d.current.get(s)) == null || n.scrollIntoView({ behavior: "smooth", block: "center" });
46
+ const P = O((s, i) => {
47
+ i ? m.current.set(s, i) : m.current.delete(s);
48
+ }, []), w = K(y);
49
+ w.current = y;
50
+ const I = O(
51
+ (s, i) => {
52
+ x(
53
+ (n) => q(n, s, i, w.current)
54
+ );
55
+ },
56
+ []
57
+ );
58
+ function u(s) {
59
+ var i;
60
+ (i = m.current.get(s)) == null || i.scrollIntoView({ behavior: "smooth", block: "center" });
58
61
  }
59
- const y = U(() => {
60
- if (!g) return [{ label: null, questions: l }];
61
- const s = g.map(
62
- (o) => ({
63
- label: o.label,
64
- questions: o.questionUids.map((C) => l.find((R) => R.uid === C)).filter(Boolean)
62
+ const V = j(() => {
63
+ if (!b) return [{ label: null, questions: l }];
64
+ const s = b.map(
65
+ (c) => ({
66
+ label: c.label,
67
+ questions: c.questionUids.map((C) => l.find((Z) => Z.uid === C)).filter(Boolean)
65
68
  })
66
- ), n = new Set(g.flatMap((o) => o.questionUids)), a = l.filter((o) => !n.has(o.uid));
67
- return a.length > 0 && s.push({ label: null, questions: a }), s;
68
- }, [l, g]);
69
- let E = 0;
70
- return /* @__PURE__ */ r("div", { className: f("flex gap-3", k), style: A, children: [
71
- /* @__PURE__ */ r("div", { className: "flex-1 min-w-0", children: [
72
- y.map((s, n) => /* @__PURE__ */ r("div", { children: [
73
- s.label && /* @__PURE__ */ e("p", { className: f("text-lg font-semibold mb-2 text-foreground", n > 0 && "mt-4"), children: s.label }),
74
- s.questions.map((a) => {
75
- const o = E++;
76
- return /* @__PURE__ */ e(
77
- Q,
78
- {
79
- ref: (C) => j(a.uid, C),
80
- "data-question-uid": a.uid,
81
- className: "mb-2",
82
- children: /* @__PURE__ */ r(I, { className: "pt-6", children: [
83
- T && /* @__PURE__ */ r("p", { className: "font-semibold text-sm text-muted-foreground mb-1", children: [
84
- "Question ",
85
- o + 1
86
- ] }),
87
- /* @__PURE__ */ e(
88
- O,
89
- {
90
- question: a,
91
- sessionAnswers: m.get(a.uid) ?? [],
92
- onAnswer: (C) => t(a.uid, C),
93
- readOnly: u
94
- }
95
- )
96
- ] })
97
- },
98
- a.uid
99
- );
100
- })
101
- ] }, s.label ?? `ungrouped-${n}`)),
102
- /* @__PURE__ */ e(W, { className: "my-3" }),
103
- /* @__PURE__ */ r("div", { className: "flex justify-between items-center", children: [
104
- /* @__PURE__ */ r("span", { className: "text-sm text-muted-foreground", children: [
105
- P,
106
- " of ",
107
- l.length,
108
- " answered"
69
+ ), i = new Set(b.flatMap((c) => c.questionUids)), n = l.filter((c) => !i.has(c.uid));
70
+ return n.length > 0 && s.push({ label: null, questions: n }), s;
71
+ }, [l, b]);
72
+ let t = 0;
73
+ return /* @__PURE__ */ e(
74
+ ee,
75
+ {
76
+ isLoading: D,
77
+ error: k,
78
+ onRetry: E,
79
+ className: o,
80
+ style: p,
81
+ skeleton: /* @__PURE__ */ a(te, { children: [
82
+ /* @__PURE__ */ e(Q, { className: "h-32 w-full" }),
83
+ /* @__PURE__ */ e(Q, { className: "h-32 w-full" }),
84
+ /* @__PURE__ */ e(Q, { className: "h-32 w-full" })
85
+ ] }),
86
+ children: /* @__PURE__ */ a("div", { className: "flex gap-3", children: [
87
+ /* @__PURE__ */ a("div", { className: "flex-1 min-w-0", children: [
88
+ V.map((s, i) => /* @__PURE__ */ a("div", { children: [
89
+ s.label && /* @__PURE__ */ e("p", { className: f("text-lg font-semibold mb-2 text-foreground", i > 0 && "mt-4"), children: s.label }),
90
+ s.questions.map((n) => {
91
+ const c = t++;
92
+ return /* @__PURE__ */ e(
93
+ U,
94
+ {
95
+ ref: (C) => P(n.uid, C),
96
+ "data-question-uid": n.uid,
97
+ className: "mb-2",
98
+ children: /* @__PURE__ */ a(Y, { className: "pt-6", children: [
99
+ B && /* @__PURE__ */ a("p", { className: "font-semibold text-sm text-muted-foreground mb-1", children: [
100
+ "Question ",
101
+ c + 1
102
+ ] }),
103
+ /* @__PURE__ */ e(
104
+ ie,
105
+ {
106
+ question: n,
107
+ sessionAnswers: g.get(n.uid) ?? he,
108
+ onAnswer: (C) => I(n.uid, C),
109
+ readOnly: h
110
+ }
111
+ )
112
+ ] })
113
+ },
114
+ n.uid
115
+ );
116
+ })
117
+ ] }, s.label ?? `ungrouped-${i}`)),
118
+ /* @__PURE__ */ e(ae, { className: "my-3" }),
119
+ /* @__PURE__ */ a("div", { className: "flex justify-between items-center", children: [
120
+ /* @__PURE__ */ a("span", { className: "text-sm text-muted-foreground", children: [
121
+ v,
122
+ " of ",
123
+ l.length,
124
+ " answered"
125
+ ] }),
126
+ /* @__PURE__ */ e(
127
+ z,
128
+ {
129
+ onClick: () => r(S),
130
+ disabled: M || h,
131
+ children: M ? "Submitting..." : "Submit"
132
+ }
133
+ )
134
+ ] })
109
135
  ] }),
110
- /* @__PURE__ */ e(
111
- L,
112
- {
113
- onClick: () => x(p),
114
- disabled: N || u,
115
- children: N ? "Submitting..." : "Submit"
116
- }
117
- )
136
+ F && /* @__PURE__ */ e(U, { className: "hidden md:block w-50 shrink-0 sticky top-4 self-start", children: /* @__PURE__ */ a(Y, { className: "p-3", children: [
137
+ /* @__PURE__ */ e("p", { className: "font-semibold text-sm mb-1 text-foreground", children: "Questions" }),
138
+ /* @__PURE__ */ e("div", { className: "flex flex-wrap gap-1", children: l.map((s, i) => {
139
+ const n = g.has(s.uid), c = A === s.uid;
140
+ return /* @__PURE__ */ e(
141
+ "button",
142
+ {
143
+ type: "button",
144
+ className: f(
145
+ "inline-flex items-center justify-center text-xs font-medium min-w-9 px-1 py-0.5 rounded-full cursor-pointer border transition-colors",
146
+ c ? "bg-primary border-primary text-primary-foreground" : n ? "border-success text-success bg-transparent" : "border-border text-foreground bg-transparent hover:bg-muted"
147
+ ),
148
+ onClick: () => u(s.uid),
149
+ children: i + 1
150
+ },
151
+ s.uid
152
+ );
153
+ }) })
154
+ ] }) })
118
155
  ] })
119
- ] }),
120
- z && /* @__PURE__ */ e(Q, { className: "hidden md:block w-50 shrink-0 sticky top-4 self-start", children: /* @__PURE__ */ r(I, { className: "p-3", children: [
121
- /* @__PURE__ */ e("p", { className: "font-semibold text-sm mb-1 text-foreground", children: "Questions" }),
122
- /* @__PURE__ */ e("div", { className: "flex flex-wrap gap-1", children: l.map((s, n) => {
123
- const a = m.has(s.uid), o = i === s.uid;
124
- return /* @__PURE__ */ e(
125
- "button",
126
- {
127
- type: "button",
128
- className: f(
129
- "inline-flex items-center justify-center text-xs font-medium min-w-9 px-1 py-0.5 rounded-full cursor-pointer border transition-colors",
130
- o ? "bg-primary border-primary text-primary-foreground" : a ? "border-success text-success bg-transparent" : "border-border text-foreground bg-transparent hover:bg-muted"
131
- ),
132
- onClick: () => v(s.uid),
133
- children: n + 1
134
- },
135
- s.uid
136
- );
137
- }) })
138
- ] }) })
139
- ] });
156
+ }
157
+ );
140
158
  }
141
- const H = {
159
+ const X = {
142
160
  pdf: "document",
143
161
  document: "document",
144
162
  video: "video",
@@ -147,257 +165,200 @@ const H = {
147
165
  archive: "document",
148
166
  other: "document"
149
167
  };
150
- function pe({
168
+ function we({
151
169
  resources: l,
152
- categories: h,
153
- onResourceClick: x,
154
- onDownload: b,
155
- viewMode: z = "list",
156
- allowViewToggle: T = !0,
157
- showSearch: g = !0,
158
- emptyMessage: N = "No resources found",
159
- readOnly: u = !1,
160
- className: k,
161
- style: A
170
+ categories: N,
171
+ onResourceClick: r,
172
+ onDownload: y,
173
+ viewMode: F = "list",
174
+ allowViewToggle: B = !0,
175
+ showSearch: b = !0,
176
+ emptyMessage: M = "No resources found",
177
+ readOnly: h = !1,
178
+ isLoading: D,
179
+ error: k,
180
+ onRetry: E,
181
+ pageSize: o,
182
+ currentPage: p = 1,
183
+ totalItems: S,
184
+ onPageChange: x,
185
+ className: A,
186
+ style: T
162
187
  }) {
163
- const [p, w] = S(""), [i, c] = S(null), [d, m] = S(z), P = U(() => {
188
+ const [m, g] = L(""), [v, P] = L(null), [w, I] = L(F), u = j(() => {
164
189
  let t = l;
165
- if (i && (t = t.filter((v) => v.categoryUid === i)), p.trim()) {
166
- const v = p.toLowerCase();
190
+ if (v && (t = t.filter((d) => d.categoryUid === v)), m.trim()) {
191
+ const d = m.toLowerCase();
167
192
  t = t.filter(
168
- (y) => {
169
- var E;
170
- return y.name.toLowerCase().includes(v) || ((E = y.description) == null ? void 0 : E.toLowerCase().includes(v));
193
+ (s) => {
194
+ var i;
195
+ return s.name.toLowerCase().includes(d) || ((i = s.description) == null ? void 0 : i.toLowerCase().includes(d));
171
196
  }
172
197
  );
173
198
  }
174
199
  return t;
175
- }, [l, i, p]);
176
- function j(t) {
177
- const v = H[t.type] ?? "document";
178
- return /* @__PURE__ */ r(
200
+ }, [l, v, m]);
201
+ if (D)
202
+ return /* @__PURE__ */ a("div", { className: f("space-y-4", A), style: T, children: [
203
+ /* @__PURE__ */ e(Q, { className: "h-9 w-full" }),
204
+ /* @__PURE__ */ e("div", { className: "grid grid-cols-3 gap-4", children: Array.from({ length: 6 }).map((t, d) => /* @__PURE__ */ e(Q, { className: "h-32 w-full rounded-lg" }, d)) })
205
+ ] });
206
+ if (k)
207
+ return /* @__PURE__ */ e("div", { className: f("py-12", A), style: T, children: /* @__PURE__ */ e(
208
+ $,
209
+ {
210
+ icon: /* @__PURE__ */ e(oe, { className: "size-10 text-destructive" }),
211
+ title: "Something went wrong",
212
+ description: k,
213
+ action: E ? /* @__PURE__ */ e(z, { variant: "outline", onClick: E, children: "Retry" }) : void 0
214
+ }
215
+ ) });
216
+ function V(t) {
217
+ const d = X[t.type] ?? "document";
218
+ return /* @__PURE__ */ a(
179
219
  "div",
180
220
  {
181
221
  className: f(
182
222
  "flex items-center gap-3 px-3 py-2",
183
- !u && "cursor-pointer hover:bg-muted",
184
- u && "opacity-70"
223
+ !h && r && "cursor-pointer hover:bg-muted",
224
+ (h || !r) && "opacity-70"
185
225
  ),
186
- onClick: () => !u && x(t),
226
+ onClick: () => !h && (r == null ? void 0 : r(t)),
187
227
  children: [
188
- /* @__PURE__ */ e("div", { className: "min-w-10", children: /* @__PURE__ */ e(G, { type: v, size: 20 }) }),
189
- /* @__PURE__ */ r("div", { className: "flex-1 min-w-0", children: [
228
+ /* @__PURE__ */ e("div", { className: "min-w-10", children: /* @__PURE__ */ e(J, { type: d, size: 20 }) }),
229
+ /* @__PURE__ */ a("div", { className: "flex-1 min-w-0", children: [
190
230
  /* @__PURE__ */ e("span", { className: "text-sm text-foreground", children: t.name }),
191
231
  (t.description || t.fileSize != null) && /* @__PURE__ */ e("span", { className: "block text-xs text-muted-foreground", children: [
192
232
  t.description,
193
- t.fileSize != null && _(t.fileSize)
233
+ t.fileSize != null && R(t.fileSize)
194
234
  ].filter(Boolean).join(" · ") })
195
235
  ] }),
196
- b && /* @__PURE__ */ r(B, { children: [
197
- /* @__PURE__ */ e(D, { children: /* @__PURE__ */ e(
198
- L,
236
+ y && /* @__PURE__ */ a(_, { children: [
237
+ /* @__PURE__ */ e(G, { children: /* @__PURE__ */ e(
238
+ z,
199
239
  {
200
240
  variant: "ghost",
201
241
  size: "icon-xs",
202
242
  "aria-label": "Download",
203
- onClick: (y) => {
204
- y.stopPropagation(), b(t);
243
+ onClick: (s) => {
244
+ s.stopPropagation(), y(t);
205
245
  },
206
- children: /* @__PURE__ */ e(ae, { size: 16 })
246
+ children: /* @__PURE__ */ e(ue, { size: 16 })
207
247
  }
208
248
  ) }),
209
- /* @__PURE__ */ e(F, { children: "Download" })
249
+ /* @__PURE__ */ e(W, { children: "Download" })
210
250
  ] })
211
251
  ]
212
252
  },
213
253
  t.uid
214
254
  );
215
255
  }
216
- return /* @__PURE__ */ r("div", { className: k, style: A, children: [
217
- /* @__PURE__ */ r("div", { className: "flex gap-2 items-center mb-2", children: [
218
- g && /* @__PURE__ */ e("div", { className: "flex-1 max-w-80", children: /* @__PURE__ */ e(
219
- X,
256
+ return /* @__PURE__ */ a("div", { className: A, style: T, children: [
257
+ /* @__PURE__ */ a("div", { className: "flex gap-2 items-center mb-2", children: [
258
+ b && /* @__PURE__ */ e("div", { className: "flex-1 max-w-80", children: /* @__PURE__ */ e(
259
+ ne,
220
260
  {
221
- value: p,
222
- onChange: w,
261
+ value: m,
262
+ onChange: g,
223
263
  placeholder: "Search resources...",
224
264
  size: "small"
225
265
  }
226
266
  ) }),
227
- T && /* @__PURE__ */ r("div", { className: "flex gap-0.5", children: [
228
- /* @__PURE__ */ r(B, { children: [
229
- /* @__PURE__ */ e(D, { children: /* @__PURE__ */ e(
230
- L,
267
+ B && /* @__PURE__ */ a("div", { className: "flex gap-0.5", children: [
268
+ /* @__PURE__ */ a(_, { children: [
269
+ /* @__PURE__ */ e(G, { children: /* @__PURE__ */ e(
270
+ z,
231
271
  {
232
272
  variant: "ghost",
233
273
  size: "icon-xs",
234
274
  "aria-label": "List view",
235
- className: f(d === "list" && "text-primary"),
236
- onClick: () => m("list"),
237
- children: /* @__PURE__ */ e(ne, { size: 18 })
275
+ className: f(w === "list" && "text-primary"),
276
+ onClick: () => I("list"),
277
+ children: /* @__PURE__ */ e(ce, { size: 18 })
238
278
  }
239
279
  ) }),
240
- /* @__PURE__ */ e(F, { children: "List view" })
280
+ /* @__PURE__ */ e(W, { children: "List view" })
241
281
  ] }),
242
- /* @__PURE__ */ r(B, { children: [
243
- /* @__PURE__ */ e(D, { children: /* @__PURE__ */ e(
244
- L,
282
+ /* @__PURE__ */ a(_, { children: [
283
+ /* @__PURE__ */ e(G, { children: /* @__PURE__ */ e(
284
+ z,
245
285
  {
246
286
  variant: "ghost",
247
287
  size: "icon-xs",
248
288
  "aria-label": "Grid view",
249
- className: f(d === "grid" && "text-primary"),
250
- onClick: () => m("grid"),
251
- children: /* @__PURE__ */ e(re, { size: 18 })
289
+ className: f(w === "grid" && "text-primary"),
290
+ onClick: () => I("grid"),
291
+ children: /* @__PURE__ */ e(me, { size: 18 })
252
292
  }
253
293
  ) }),
254
- /* @__PURE__ */ e(F, { children: "Grid view" })
294
+ /* @__PURE__ */ e(W, { children: "Grid view" })
255
295
  ] })
256
296
  ] })
257
297
  ] }),
258
- h && h.length > 0 && /* @__PURE__ */ e(
259
- q,
298
+ N && N.length > 0 && /* @__PURE__ */ e(
299
+ le,
260
300
  {
261
- value: i ?? "all",
262
- onValueChange: (t) => c(t === "all" ? null : t),
301
+ value: v ?? "all",
302
+ onValueChange: (t) => P(t === "all" ? null : t),
263
303
  className: "mb-2",
264
- children: /* @__PURE__ */ r(ee, { children: [
265
- /* @__PURE__ */ e(M, { value: "all", children: "All" }),
266
- h.map((t) => /* @__PURE__ */ e(M, { value: t.uid, children: t.label }, t.uid))
304
+ children: /* @__PURE__ */ a(re, { children: [
305
+ /* @__PURE__ */ e(H, { value: "all", children: "All" }),
306
+ N.map((t) => /* @__PURE__ */ e(H, { value: t.uid, children: t.label }, t.uid))
267
307
  ] })
268
308
  }
269
309
  ),
270
- P.length === 0 ? /* @__PURE__ */ e(K, { title: N, description: "Try adjusting your search or filter." }) : d === "list" ? /* @__PURE__ */ e(Q, { children: P.map(j) }) : /* @__PURE__ */ e("div", { className: "grid grid-cols-[repeat(auto-fill,minmax(240px,1fr))] gap-2", children: P.map((t) => /* @__PURE__ */ e(
271
- Q,
310
+ u.length === 0 ? /* @__PURE__ */ e($, { title: M, description: "Try adjusting your search or filter." }) : w === "list" ? /* @__PURE__ */ e(U, { children: (x && o ? u.slice((p - 1) * o, p * o) : u).map(V) }) : /* @__PURE__ */ e("div", { className: "grid grid-cols-[repeat(auto-fill,minmax(240px,1fr))] gap-2", children: (x && o ? u.slice((p - 1) * o, p * o) : u).map((t) => /* @__PURE__ */ e(
311
+ U,
272
312
  {
273
313
  className: f(
274
314
  "transition-colors",
275
- !u && "cursor-pointer hover:border-primary"
315
+ !h && r && "cursor-pointer hover:border-primary"
276
316
  ),
277
- onClick: () => !u && x(t),
278
- children: /* @__PURE__ */ r(I, { className: "pt-4 pb-4", children: [
279
- /* @__PURE__ */ r("div", { className: "flex gap-1 items-center mb-1", children: [
280
- /* @__PURE__ */ e(G, { type: H[t.type] ?? "document", size: 20 }),
317
+ onClick: () => !h && (r == null ? void 0 : r(t)),
318
+ children: /* @__PURE__ */ a(Y, { className: "pt-4 pb-4", children: [
319
+ /* @__PURE__ */ a("div", { className: "flex gap-1 items-center mb-1", children: [
320
+ /* @__PURE__ */ e(J, { type: X[t.type] ?? "document", size: 20 }),
281
321
  /* @__PURE__ */ e("span", { className: "font-semibold text-sm text-foreground truncate", children: t.name })
282
322
  ] }),
283
323
  t.description && /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground mb-1 truncate", children: t.description }),
284
- t.fileSize != null && /* @__PURE__ */ e("span", { className: "text-xs text-muted-foreground", children: _(t.fileSize) })
324
+ t.fileSize != null && /* @__PURE__ */ e("span", { className: "text-xs text-muted-foreground", children: R(t.fileSize) })
285
325
  ] })
286
326
  },
287
327
  t.uid
288
- )) })
289
- ] });
290
- }
291
- function fe({
292
- announcements: l,
293
- onMarkRead: h,
294
- onSelect: x,
295
- showAvatars: b = !0,
296
- previewLines: z = 3,
297
- emptyMessage: T = "No announcements yet",
298
- readOnly: g = !1,
299
- className: N,
300
- style: u
301
- }) {
302
- const [k, A] = S(/* @__PURE__ */ new Set()), p = U(() => {
303
- const i = l.filter((d) => d.isPinned), c = l.filter((d) => !d.isPinned);
304
- return [...i, ...c];
305
- }, [l]);
306
- function w(i) {
307
- A((d) => {
308
- const m = new Set(d);
309
- return m.has(i) ? m.delete(i) : m.add(i), m;
310
- });
311
- const c = l.find((d) => d.uid === i);
312
- c && !c.isRead && (h == null || h(i));
313
- }
314
- return p.length === 0 ? /* @__PURE__ */ e("div", { className: N, style: u, children: /* @__PURE__ */ e(K, { title: T }) }) : /* @__PURE__ */ e("div", { className: f("flex flex-col gap-2", N), style: u, children: p.map((i) => {
315
- const c = k.has(i.uid);
316
- return /* @__PURE__ */ e(
317
- Q,
328
+ )) }),
329
+ x && o && u.length > 0 && /* @__PURE__ */ e(
330
+ de,
318
331
  {
319
- className: f(
320
- i.isRead && "opacity-85",
321
- x && "cursor-pointer",
322
- i.isPinned && "border-l-4 border-l-warning"
323
- ),
324
- onClick: () => x && !g ? x(i) : w(i.uid),
325
- children: /* @__PURE__ */ e(I, { className: "py-4", children: /* @__PURE__ */ r("div", { className: "flex gap-1.5 items-start", children: [
326
- b && /* @__PURE__ */ e(
327
- te,
328
- {
329
- displayName: i.author.displayName,
330
- avatarUrl: i.author.avatarUrl,
331
- role: i.author.role,
332
- size: "medium"
333
- }
334
- ),
335
- /* @__PURE__ */ r("div", { className: "flex-1 min-w-0", children: [
336
- /* @__PURE__ */ r("div", { className: "flex items-center gap-1 mb-0.5", children: [
337
- i.isPinned && /* @__PURE__ */ e(le, { size: 14 }),
338
- /* @__PURE__ */ e(
339
- "span",
340
- {
341
- className: f("text-foreground", i.isRead ? "font-normal" : "font-semibold"),
342
- children: i.title
343
- }
344
- ),
345
- !i.isRead && /* @__PURE__ */ e(ie, { variant: "destructive", className: "text-[10px] px-1.5 py-0", children: "New" })
346
- ] }),
347
- /* @__PURE__ */ r("span", { className: "block text-xs text-muted-foreground mb-1", children: [
348
- i.author.displayName,
349
- " · ",
350
- se(i.createdAt)
351
- ] }),
352
- /* @__PURE__ */ e(
353
- "span",
354
- {
355
- className: f(
356
- "text-sm text-foreground",
357
- !c && "line-clamp-(--preview-lines) overflow-hidden"
358
- ),
359
- style: c ? void 0 : { "--preview-lines": z },
360
- children: i.content
361
- }
362
- ),
363
- !c && i.content.length > 200 && /* @__PURE__ */ e(
364
- L,
365
- {
366
- variant: "link",
367
- size: "xs",
368
- className: "px-0 mt-0.5 h-auto",
369
- onClick: (d) => {
370
- d.stopPropagation(), w(i.uid);
371
- },
372
- children: "Read more"
373
- }
374
- )
375
- ] })
376
- ] }) })
377
- },
378
- i.uid
379
- );
380
- }) });
332
+ currentPage: p,
333
+ totalPages: Math.ceil((S ?? u.length) / o),
334
+ onPageChange: x,
335
+ className: "mt-4"
336
+ }
337
+ )
338
+ ] });
381
339
  }
382
340
  export {
383
- fe as AnnouncementFeed,
384
- be as AssessmentReview,
385
- ge as AssignmentSubmission,
386
- ve as CertificateViewer,
387
- Ne as CourseOutline,
388
- we as DiscussionThread,
389
- ye as ExamSession,
390
- Ce as FlashcardStudySession,
391
- Se as ForumBoard,
392
- ze as GradebookTable,
393
- Te as LecturePlayer,
394
- ke as LessonPage,
395
- Ae as PracticeQuiz,
396
- Pe as ProgressDashboard,
397
- Ue as QuizSession,
398
- Le as RequirementsChecklist,
399
- pe as ResourceLibrary,
400
- Qe as RubricView,
401
- ue as ScrollableQuiz,
402
- Ee as SurveyForm
341
+ Se as AnnouncementFeed,
342
+ Ae as AssessmentReview,
343
+ Te as AssignmentSubmission,
344
+ Ce as CertificateViewer,
345
+ ze as CourseCatalog,
346
+ Le as CourseOutline,
347
+ Qe as DiscussionThread,
348
+ Me as EnrollmentWizard,
349
+ ke as ExamSession,
350
+ Ee as FlashcardStudySession,
351
+ Ie as ForumBoard,
352
+ je as GradebookTable,
353
+ Ue as LecturePlayer,
354
+ Fe as LessonPage,
355
+ Be as PracticeQuiz,
356
+ De as ProgressDashboard,
357
+ Pe as QuizSession,
358
+ Ve as RequirementsChecklist,
359
+ we as ResourceLibrary,
360
+ _e as RubricView,
361
+ ve as ScrollableQuiz,
362
+ Ge as StudentProfile,
363
+ We as SurveyForm
403
364
  };