@hydralms/components 0.3.0 → 0.3.1

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 (47) hide show
  1. package/dist/StudentProfile-BPsZBaJj.cjs +1 -0
  2. package/dist/{StudentProfile-DeMxdrL3.js → StudentProfile-Cw2p-RZn.js} +577 -579
  3. package/dist/index.cjs +1 -1
  4. package/dist/index.js +172 -166
  5. package/dist/license/index.d.ts +2 -2
  6. package/dist/license/tiers.d.ts +3 -0
  7. package/dist/modules.cjs +1 -1
  8. package/dist/modules.js +111 -110
  9. package/dist/sections/AdaptiveLearningPath/AdaptiveLearningPath.d.ts +5 -0
  10. package/dist/sections/AdaptiveLearningPath/path-connector.d.ts +8 -0
  11. package/dist/sections/AdaptiveLearningPath/path-milestone-marker.d.ts +7 -0
  12. package/dist/sections/AdaptiveLearningPath/path-node-card.d.ts +10 -0
  13. package/dist/sections/AdaptiveLearningPath/path-skill-bar.d.ts +8 -0
  14. package/dist/sections/AdaptiveLearningPath/types.d.ts +136 -0
  15. package/dist/sections/ContentAuthoringStudio/ContentAuthoringStudio.d.ts +5 -0
  16. package/dist/sections/ContentAuthoringStudio/block-editor-item.d.ts +14 -0
  17. package/dist/sections/ContentAuthoringStudio/block-type-picker.d.ts +12 -0
  18. package/dist/sections/ContentAuthoringStudio/types.d.ts +67 -0
  19. package/dist/sections/index.d.ts +4 -0
  20. package/dist/sections.cjs +1 -1
  21. package/dist/sections.js +1325 -232
  22. package/dist/withProGate-BJdu1T9Y.cjs +2 -0
  23. package/dist/withProGate-BvFc7Jwy.js +4975 -0
  24. package/package.json +24 -7
  25. package/src/license/index.ts +2 -2
  26. package/src/license/tiers.ts +12 -2
  27. package/src/modules/CoursePlayer/CoursePlayer.tsx +3 -1
  28. package/src/progress/stat-card.tsx +10 -5
  29. package/src/sections/AdaptiveLearningPath/AdaptiveLearningPath.tsx +251 -0
  30. package/src/sections/AdaptiveLearningPath/path-connector.tsx +27 -0
  31. package/src/sections/AdaptiveLearningPath/path-milestone-marker.tsx +50 -0
  32. package/src/sections/AdaptiveLearningPath/path-node-card.tsx +166 -0
  33. package/src/sections/AdaptiveLearningPath/path-skill-bar.tsx +49 -0
  34. package/src/sections/AdaptiveLearningPath/types.ts +159 -0
  35. package/src/sections/ContentAuthoringStudio/ContentAuthoringStudio.tsx +289 -0
  36. package/src/sections/ContentAuthoringStudio/block-editor-item.tsx +487 -0
  37. package/src/sections/ContentAuthoringStudio/block-type-picker.tsx +123 -0
  38. package/src/sections/ContentAuthoringStudio/types.ts +67 -0
  39. package/src/sections/ForumBoard/ForumBoard.tsx +8 -6
  40. package/src/sections/LessonPage/LessonPage.tsx +4 -7
  41. package/src/sections/index.ts +18 -0
  42. package/src/video/video-player.tsx +14 -5
  43. package/dist/StudentProfile-BVfZMbnV.cjs +0 -1
  44. package/dist/tabs-BsfVo2Bl.cjs +0 -173
  45. package/dist/tabs-BuY1iNJE.js +0 -22305
  46. package/dist/withProGate-BWqcKdPM.js +0 -137
  47. package/dist/withProGate-DX6XqKLp.cjs +0 -1
package/dist/modules.js CHANGED
@@ -1,9 +1,8 @@
1
1
  import { jsx as e, jsxs as t, Fragment as te } from "react/jsx-runtime";
2
- import { useState as R, useRef as U, useEffect as L, useCallback as T, useMemo as K } from "react";
3
- import { HelpCircle as le, Clock as re, CheckCircle2 as X, Play as ae, XCircle as Te, Trophy as se, RotateCcw as ie, BookOpen as Z, Shuffle as he, Layers as Ie, ArrowLeft as J, PanelLeft as je, Check as Le, ChevronLeft as Fe, ChevronRight as Qe, ShieldCheck as $e, ClipboardList as Ye, BarChart3 as ve, FileEdit as fe, Paperclip as xe, FileText as qe, Link as Ge, Award as ee, PartyPopper as We, Bell as Ve, User as He } from "lucide-react";
4
- import { a as be, Q as _e, F as Je, l as Ke, d as Xe, P as Ze, L as De, g as Oe, e as et, k as tt, G as st, h as we, i as pe, b as rt, R as nt, C as Se, D as lt, f as at, c as ke, A as it, E as ct, j as dt } from "./StudentProfile-DeMxdrL3.js";
5
- import { C as I, x as j, B as q, a as ne, v as P, ak as D, aw as G, as as _, a$ as ze, c as A, M as ot, R as ut, U as mt, Y as ht, Q as ft, O as xt, a1 as ce, P as pt, d as Ce, e as ye, a8 as Ae, aI as de, aK as oe, aL as V, aJ as H, $ as ge, ax as Ne, aR as gt, b0 as Nt, A as vt } from "./tabs-BuY1iNJE.js";
6
- import { w as Y } from "./withProGate-BWqcKdPM.js";
2
+ import { useState as R, useRef as U, useEffect as L, useCallback as T, useMemo as Z } from "react";
3
+ import { HelpCircle as le, Clock as re, CheckCircle2 as J, Play as ae, XCircle as Te, Trophy as se, RotateCcw as ie, BookOpen as K, Shuffle as he, Layers as Ie, ArrowLeft as X, PanelLeft as je, Check as Le, ChevronLeft as Fe, ChevronRight as Qe, ShieldCheck as qe, ClipboardList as Ge, BarChart3 as ve, FileEdit as fe, Paperclip as xe, FileText as Ye, Link as $e, Award as ee, PartyPopper as Ve, Bell as We, User as He } from "lucide-react";
4
+ import { a as be, Q as _e, F as Xe, l as Ze, d as Je, P as Ke, L as De, g as Oe, e as et, k as tt, G as st, h as we, i as pe, b as rt, R as nt, C as Se, D as lt, f as at, c as ke, A as it, E as ct, j as dt } from "./StudentProfile-Cw2p-RZn.js";
5
+ import { C as I, x as j, B as Y, a as ne, v as P, an as D, az as $, av as _, b2 as G, b5 as ze, c as A, N as ot, S as ut, V as mt, Z as ht, R as ft, Q as xt, a2 as ce, P as pt, d as Ce, e as ye, a9 as Ae, aL as de, aN as oe, aO as W, aM as H, a0 as ge, aA as Ne, aU as gt, b6 as Nt, A as vt } from "./withProGate-BvFc7Jwy.js";
7
6
  function Me(c) {
8
7
  const [N, o] = R(0), l = U(null), f = U(null), i = U(0);
9
8
  L(() => (c ? (l.current = Date.now(), f.current = setInterval(() => {
@@ -37,18 +36,18 @@ function Ee({
37
36
  o && /* @__PURE__ */ e("p", { className: "text-muted-foreground mb-6 max-w-md mx-auto", children: o }),
38
37
  a,
39
38
  /* @__PURE__ */ t("div", { className: "flex flex-wrap justify-center gap-2 mb-8", children: [
40
- /* @__PURE__ */ t(q, { variant: "outline", className: "gap-1.5", children: [
39
+ /* @__PURE__ */ t(Y, { variant: "outline", className: "gap-1.5", children: [
41
40
  /* @__PURE__ */ e(le, { className: "size-3.5" }),
42
41
  l,
43
42
  " questions"
44
43
  ] }),
45
- f != null && /* @__PURE__ */ t(q, { variant: "outline", className: "gap-1.5", children: [
44
+ f != null && /* @__PURE__ */ t(Y, { variant: "outline", className: "gap-1.5", children: [
46
45
  /* @__PURE__ */ e(re, { className: "size-3.5" }),
47
46
  ne(f),
48
47
  " time limit"
49
48
  ] }),
50
- i !== void 0 && /* @__PURE__ */ t(q, { variant: "outline", className: "gap-1.5", children: [
51
- /* @__PURE__ */ e(X, { className: "size-3.5" }),
49
+ i !== void 0 && /* @__PURE__ */ t(Y, { variant: "outline", className: "gap-1.5", children: [
50
+ /* @__PURE__ */ e(J, { className: "size-3.5" }),
52
51
  i,
53
52
  "% to pass"
54
53
  ] })
@@ -89,7 +88,7 @@ function Be({
89
88
  }
90
89
  ),
91
90
  /* @__PURE__ */ e(
92
- q,
91
+ Y,
93
92
  {
94
93
  variant: o ? "success" : "destructive",
95
94
  className: "text-sm px-3 py-1 mb-2",
@@ -101,9 +100,9 @@ function Be({
101
100
  ] }),
102
101
  /* @__PURE__ */ t("div", { className: "grid grid-cols-2 sm:grid-cols-4 gap-3 mb-8", children: [
103
102
  /* @__PURE__ */ e(
104
- G,
103
+ $,
105
104
  {
106
- icon: /* @__PURE__ */ e(X, {}),
105
+ icon: /* @__PURE__ */ e(J, {}),
107
106
  label: "Correct",
108
107
  description: "Questions answered right",
109
108
  value: `${l}/${f}`,
@@ -111,7 +110,7 @@ function Be({
111
110
  }
112
111
  ),
113
112
  /* @__PURE__ */ e(
114
- G,
113
+ $,
115
114
  {
116
115
  icon: /* @__PURE__ */ e(Te, {}),
117
116
  label: "Incorrect",
@@ -121,7 +120,7 @@ function Be({
121
120
  }
122
121
  ),
123
122
  /* @__PURE__ */ e(
124
- G,
123
+ $,
125
124
  {
126
125
  icon: /* @__PURE__ */ e(se, {}),
127
126
  label: "Score",
@@ -131,7 +130,7 @@ function Be({
131
130
  }
132
131
  ),
133
132
  /* @__PURE__ */ e(
134
- G,
133
+ $,
135
134
  {
136
135
  icon: /* @__PURE__ */ e(re, {}),
137
136
  label: "Time",
@@ -240,7 +239,7 @@ function bt({
240
239
  }
241
240
  ) });
242
241
  }
243
- const $t = Y(bt, "QuizModule");
242
+ const Qt = G(bt, "QuizModule");
244
243
  function wt({
245
244
  decks: c = [],
246
245
  showShuffleToggle: N = !0,
@@ -298,7 +297,7 @@ function wt({
298
297
  if (a.tag === "setup")
299
298
  return /* @__PURE__ */ e("div", { ref: g, tabIndex: -1, className: A("max-w-2xl mx-auto outline-none", n), style: h, children: /* @__PURE__ */ e(I, { children: /* @__PURE__ */ t(j, { className: "pt-8 pb-8", children: [
300
299
  /* @__PURE__ */ t("div", { className: "text-center mb-6", children: [
301
- /* @__PURE__ */ e("div", { className: "mx-auto mb-4 w-14 h-14 rounded-full bg-primary/10 flex items-center justify-center", children: /* @__PURE__ */ e(Z, { className: "size-7 text-primary" }) }),
300
+ /* @__PURE__ */ e("div", { className: "mx-auto mb-4 w-14 h-14 rounded-full bg-primary/10 flex items-center justify-center", children: /* @__PURE__ */ e(K, { className: "size-7 text-primary" }) }),
302
301
  /* @__PURE__ */ e("h2", { className: "text-2xl font-bold text-foreground mb-2", children: "Choose Your Decks" }),
303
302
  /* @__PURE__ */ e("p", { className: "text-muted-foreground text-sm", children: l ? "Select one or more decks to study" : "Select a deck to study" })
304
303
  ] }),
@@ -315,7 +314,7 @@ function wt({
315
314
  children: /* @__PURE__ */ t(j, { className: "py-4", children: [
316
315
  /* @__PURE__ */ t("div", { className: "flex items-start justify-between mb-2", children: [
317
316
  /* @__PURE__ */ e("h3", { className: "font-semibold text-foreground text-sm", children: d.title }),
318
- /* @__PURE__ */ t(q, { variant: "secondary", className: "text-xs shrink-0", children: [
317
+ /* @__PURE__ */ t(Y, { variant: "secondary", className: "text-xs shrink-0", children: [
319
318
  d.cards.length,
320
319
  " cards"
321
320
  ] })
@@ -360,7 +359,7 @@ function wt({
360
359
  if (a.tag === "study") {
361
360
  const d = c.filter((p) => a.deckUids.includes(p.uid)).map((p) => p.title).join(", ");
362
361
  return /* @__PURE__ */ e("div", { ref: g, tabIndex: -1, className: A("outline-none", n), style: h, children: /* @__PURE__ */ e(
363
- Je,
362
+ Xe,
364
363
  {
365
364
  cards: a.cards,
366
365
  title: d,
@@ -385,14 +384,14 @@ function wt({
385
384
  label: ""
386
385
  }
387
386
  ),
388
- /* @__PURE__ */ e(X, { className: "size-8 text-success absolute inset-0 m-auto" })
387
+ /* @__PURE__ */ e(J, { className: "size-8 text-success absolute inset-0 m-auto" })
389
388
  ] }),
390
389
  /* @__PURE__ */ e("h2", { className: "text-xl font-bold text-foreground mb-2", children: "Study Session Complete" }),
391
390
  /* @__PURE__ */ e("p", { className: "text-muted-foreground text-sm", children: "Great work! Here's your session summary." })
392
391
  ] }),
393
392
  /* @__PURE__ */ t("div", { className: "grid grid-cols-2 sm:grid-cols-4 gap-3 mb-8", children: [
394
393
  /* @__PURE__ */ e(
395
- G,
394
+ $,
396
395
  {
397
396
  icon: /* @__PURE__ */ e(Ie, {}),
398
397
  label: "Cards Studied",
@@ -401,16 +400,16 @@ function wt({
401
400
  }
402
401
  ),
403
402
  /* @__PURE__ */ e(
404
- G,
403
+ $,
405
404
  {
406
- icon: /* @__PURE__ */ e(Z, {}),
405
+ icon: /* @__PURE__ */ e(K, {}),
407
406
  label: "Decks",
408
407
  description: "Decks completed",
409
408
  value: String(E.decksStudied)
410
409
  }
411
410
  ),
412
411
  /* @__PURE__ */ e(
413
- G,
412
+ $,
414
413
  {
415
414
  icon: /* @__PURE__ */ e(re, {}),
416
415
  label: "Time Spent",
@@ -419,7 +418,7 @@ function wt({
419
418
  }
420
419
  ),
421
420
  /* @__PURE__ */ e(
422
- G,
421
+ $,
423
422
  {
424
423
  icon: /* @__PURE__ */ e(he, {}),
425
424
  label: "Shuffled",
@@ -430,7 +429,7 @@ function wt({
430
429
  ] }),
431
430
  /* @__PURE__ */ t("div", { className: "flex justify-center gap-3", children: [
432
431
  /* @__PURE__ */ t(P, { variant: "outline", onClick: y, disabled: i, children: [
433
- /* @__PURE__ */ e(J, { className: "size-4 mr-2" }),
432
+ /* @__PURE__ */ e(X, { className: "size-4 mr-2" }),
434
433
  "Pick New Deck"
435
434
  ] }),
436
435
  /* @__PURE__ */ t(P, { onClick: M, disabled: i, children: [
@@ -440,7 +439,7 @@ function wt({
440
439
  ] })
441
440
  ] }) }) });
442
441
  }
443
- const Yt = Y(wt, "FlashcardLab");
442
+ const qt = G(wt, "FlashcardLab");
444
443
  function St({
445
444
  courseTitle: c,
446
445
  curriculum: N,
@@ -454,7 +453,7 @@ function St({
454
453
  className: u,
455
454
  style: x
456
455
  }) {
457
- const b = U(null), s = K(() => Ke(N), [N]), S = K(
456
+ const b = U(null), s = Z(() => Ze(N), [N]), S = Z(
458
457
  () => new Map(l.map((z) => [z.uid, z])),
459
458
  [l]
460
459
  ), [m, g] = R(
@@ -463,9 +462,11 @@ function St({
463
462
  o.filter((z) => z.isCompleted).map((z) => z.resourceUid)
464
463
  ) : /* @__PURE__ */ new Set()), y = s.indexOf(m), E = y > 0, d = y < s.length - 1, p = C.has(m), w = s.length > 0 ? Math.round(
465
464
  s.filter((z) => C.has(z)).length / s.length * 100
466
- ) : 0, k = S.get(m), Q = K(
465
+ ) : 0, k = S.get(m), Q = Z(
467
466
  () => (k == null ? void 0 : k.type) === "video" ? { src: k.src, poster: k.poster, title: k.title } : null,
468
- [k]
467
+ // activeItem is looked up from a stable Map — uid change means new item
468
+ // eslint-disable-next-line react-hooks/exhaustive-deps
469
+ [k == null ? void 0 : k.uid]
469
470
  );
470
471
  L(() => {
471
472
  var z;
@@ -473,23 +474,23 @@ function St({
473
474
  }, [m]);
474
475
  const B = U(n);
475
476
  B.current = n;
476
- const $ = U(i);
477
- $.current = i;
478
- const W = T((z) => {
477
+ const q = U(i);
478
+ q.current = i;
479
+ const V = T((z) => {
479
480
  var F;
480
481
  g(z), (F = B.current) == null || F.call(B, z);
481
482
  }, []), O = T((z) => {
482
- (!z.children || z.children.length === 0) && W(z.uid);
483
- }, [W]), ue = T(() => {
483
+ (!z.children || z.children.length === 0) && V(z.uid);
484
+ }, [V]), ue = T(() => {
484
485
  var z;
485
- M((F) => new Set(F).add(m)), (z = $.current) == null || z.call($, m);
486
+ M((F) => new Set(F).add(m)), (z = q.current) == null || z.call(q, m);
486
487
  }, [m]), me = T(() => {
487
488
  const z = s.indexOf(m);
488
- z < s.length - 1 && W(s[z + 1]);
489
- }, [s, m, W]), Pe = T(() => {
489
+ z < s.length - 1 && V(s[z + 1]);
490
+ }, [s, m, V]), Pe = T(() => {
490
491
  const z = s.indexOf(m);
491
- z > 0 && W(s[z - 1]);
492
- }, [s, m, W]), Ue = K(() => {
492
+ z > 0 && V(s[z - 1]);
493
+ }, [s, m, V]), Ue = Z(() => {
493
494
  const z = new Map(
494
495
  (o ?? []).map((F) => [F.resourceUid, F])
495
496
  );
@@ -509,7 +510,7 @@ function St({
509
510
  /* @__PURE__ */ e(ft, {})
510
511
  ] }),
511
512
  /* @__PURE__ */ e(xt, { className: "px-2 pb-2", children: /* @__PURE__ */ e(
512
- Xe,
513
+ Je,
513
514
  {
514
515
  items: N,
515
516
  progress: Ue,
@@ -620,7 +621,7 @@ function kt(c, N, o, l, f, i, n, h) {
620
621
  );
621
622
  case "quiz":
622
623
  return /* @__PURE__ */ e(
623
- Ze,
624
+ Ke,
624
625
  {
625
626
  questions: c.questions,
626
627
  instantFeedback: !0,
@@ -638,7 +639,7 @@ function kt(c, N, o, l, f, i, n, h) {
638
639
  );
639
640
  }
640
641
  }
641
- const qt = Y(St, "CoursePlayer");
642
+ const Gt = G(St, "CoursePlayer");
642
643
  function zt({
643
644
  title: c,
644
645
  description: N,
@@ -663,16 +664,16 @@ function zt({
663
664
  }, [g.tag]);
664
665
  const E = T((w, k) => {
665
666
  var O;
666
- const { correct: Q, total: B, percentage: $ } = ze(l, w), W = {
667
+ const { correct: Q, total: B, percentage: q } = ze(l, w), V = {
667
668
  answers: w,
668
669
  correct: Q,
669
670
  total: B,
670
- percentage: $,
671
- passed: i !== void 0 ? $ >= i : !0,
671
+ percentage: q,
672
+ passed: i !== void 0 ? q >= i : !0,
672
673
  timeElapsedSeconds: k.timeElapsedSeconds,
673
674
  wasAutoSubmitted: k.wasAutoSubmitted
674
675
  };
675
- v({ tag: "results", result: W }), (O = y.current) == null || O.call(y, W);
676
+ v({ tag: "results", result: V }), (O = y.current) == null || O.call(y, V);
676
677
  }, [l, i]), d = T(() => {
677
678
  M(), v({ tag: "intro" });
678
679
  }, [M]);
@@ -680,7 +681,7 @@ function zt({
680
681
  return /* @__PURE__ */ e("div", { ref: r, tabIndex: -1, className: A("max-w-2xl mx-auto outline-none", S), style: m, children: /* @__PURE__ */ e(
681
682
  Ee,
682
683
  {
683
- icon: /* @__PURE__ */ e($e, { className: "size-7 text-primary" }),
684
+ icon: /* @__PURE__ */ e(qe, { className: "size-7 text-primary" }),
684
685
  title: c,
685
686
  description: N,
686
687
  questionCount: l.length,
@@ -725,11 +726,11 @@ function zt({
725
726
  retakeLabel: "Retake Exam",
726
727
  showReview: x,
727
728
  readOnly: s,
728
- extraBadges: p.wasAutoSubmitted ? /* @__PURE__ */ e(q, { variant: "outline", className: "text-sm px-3 py-1 mb-2 ml-2", children: "Auto-submitted" }) : null
729
+ extraBadges: p.wasAutoSubmitted ? /* @__PURE__ */ e(Y, { variant: "outline", className: "text-sm px-3 py-1 mb-2 ml-2", children: "Auto-submitted" }) : null
729
730
  }
730
731
  ) });
731
732
  }
732
- const Gt = Y(zt, "ExamModule");
733
+ const Yt = G(zt, "ExamModule");
733
734
  function Ct({
734
735
  title: c,
735
736
  description: N,
@@ -773,10 +774,10 @@ function Ct({
773
774
  className: A("max-w-2xl mx-auto outline-none", x),
774
775
  style: b,
775
776
  children: /* @__PURE__ */ e(I, { children: /* @__PURE__ */ t(j, { className: "pt-8 pb-8 text-center", children: [
776
- /* @__PURE__ */ e("div", { className: "mx-auto mb-4 w-14 h-14 rounded-full bg-primary/10 flex items-center justify-center", children: /* @__PURE__ */ e(Ye, { className: "size-7 text-primary" }) }),
777
+ /* @__PURE__ */ e("div", { className: "mx-auto mb-4 w-14 h-14 rounded-full bg-primary/10 flex items-center justify-center", children: /* @__PURE__ */ e(Ge, { className: "size-7 text-primary" }) }),
777
778
  /* @__PURE__ */ e("h2", { className: "text-2xl font-bold text-foreground mb-2", children: c }),
778
779
  N && /* @__PURE__ */ e("p", { className: "text-muted-foreground mb-6 max-w-md mx-auto", children: N }),
779
- /* @__PURE__ */ e("div", { className: "flex flex-wrap justify-center gap-2 mb-8", children: /* @__PURE__ */ t(q, { variant: "outline", className: "gap-1.5", children: [
780
+ /* @__PURE__ */ e("div", { className: "flex flex-wrap justify-center gap-2 mb-8", children: /* @__PURE__ */ t(Y, { variant: "outline", className: "gap-1.5", children: [
780
781
  /* @__PURE__ */ e(le, { className: "size-3.5" }),
781
782
  o.length,
782
783
  " questions"
@@ -818,12 +819,12 @@ function Ct({
818
819
  className: A("max-w-2xl mx-auto outline-none", x),
819
820
  style: b,
820
821
  children: /* @__PURE__ */ e(I, { children: /* @__PURE__ */ t(j, { className: "pt-8 pb-8 text-center", children: [
821
- /* @__PURE__ */ e("div", { className: "mx-auto mb-4 w-14 h-14 rounded-full bg-success/10 flex items-center justify-center", children: /* @__PURE__ */ e(X, { className: "size-7 text-success" }) }),
822
+ /* @__PURE__ */ e("div", { className: "mx-auto mb-4 w-14 h-14 rounded-full bg-success/10 flex items-center justify-center", children: /* @__PURE__ */ e(J, { className: "size-7 text-success" }) }),
822
823
  /* @__PURE__ */ e("h2", { className: "text-2xl font-bold text-foreground mb-2", children: i }),
823
824
  /* @__PURE__ */ e("p", { className: "text-muted-foreground mb-6 max-w-md mx-auto", children: n ?? "Your responses have been recorded. Thank you for your feedback!" }),
824
825
  /* @__PURE__ */ t("div", { className: "grid grid-cols-2 gap-3 max-w-sm mx-auto mb-6", children: [
825
826
  /* @__PURE__ */ e(
826
- G,
827
+ $,
827
828
  {
828
829
  icon: /* @__PURE__ */ e(le, {}),
829
830
  label: "Answered",
@@ -832,7 +833,7 @@ function Ct({
832
833
  }
833
834
  ),
834
835
  /* @__PURE__ */ e(
835
- G,
836
+ $,
836
837
  {
837
838
  icon: /* @__PURE__ */ e(re, {}),
838
839
  label: "Time",
@@ -849,7 +850,7 @@ function Ct({
849
850
  }
850
851
  );
851
852
  }
852
- const Wt = Y(Ct, "SurveyModule");
853
+ const $t = G(Ct, "SurveyModule");
853
854
  function yt({
854
855
  courseTitle: c,
855
856
  gradeItems: N = [],
@@ -917,7 +918,7 @@ function yt({
917
918
  onClick: m,
918
919
  className: "mb-4",
919
920
  children: [
920
- /* @__PURE__ */ e(J, { className: "size-4 mr-1.5" }),
921
+ /* @__PURE__ */ e(X, { className: "size-4 mr-1.5" }),
921
922
  "Back to Grades"
922
923
  ]
923
924
  }
@@ -947,11 +948,11 @@ function yt({
947
948
  )
948
949
  ] }) : /* @__PURE__ */ t(de, { defaultValue: "grades", children: [
949
950
  i && /* @__PURE__ */ t(oe, { className: "mb-6", children: [
950
- /* @__PURE__ */ t(V, { value: "grades", children: [
951
- /* @__PURE__ */ e(Z, { className: "size-4 mr-1.5" }),
951
+ /* @__PURE__ */ t(W, { value: "grades", children: [
952
+ /* @__PURE__ */ e(K, { className: "size-4 mr-1.5" }),
952
953
  "Grades"
953
954
  ] }),
954
- /* @__PURE__ */ t(V, { value: "progress", children: [
955
+ /* @__PURE__ */ t(W, { value: "progress", children: [
955
956
  /* @__PURE__ */ e(ve, { className: "size-4 mr-1.5" }),
956
957
  "Progress"
957
958
  ] })
@@ -983,7 +984,7 @@ function yt({
983
984
  }
984
985
  );
985
986
  }
986
- const Vt = Y(yt, "GradeCenterModule"), At = {
987
+ const Vt = G(yt, "GradeCenterModule"), At = {
987
988
  text: "Text Entry",
988
989
  file: "File Upload",
989
990
  url: "URL Submission"
@@ -1014,7 +1015,7 @@ function Mt({
1014
1015
  var k;
1015
1016
  (k = M.current) == null || k.focus({ preventScroll: !0 });
1016
1017
  }, [r.tag]);
1017
- const y = K(() => Array.isArray(n) ? n.reduce(
1018
+ const y = Z(() => Array.isArray(n) ? n.reduce(
1018
1019
  (k, Q) => k + Math.max(...Q.levels.map((B) => B.points)),
1019
1020
  0
1020
1021
  ) : 0, [n]);
@@ -1040,12 +1041,12 @@ function Mt({
1040
1041
  ] }),
1041
1042
  /* @__PURE__ */ t("div", { className: "flex flex-wrap justify-center gap-2 mb-6", children: [
1042
1043
  o && /* @__PURE__ */ e(ge, { dueDate: o, size: "small" }),
1043
- l !== void 0 && /* @__PURE__ */ t(q, { variant: "outline", className: "gap-1.5", children: [
1044
- /* @__PURE__ */ e(X, { className: "size-3.5" }),
1044
+ l !== void 0 && /* @__PURE__ */ t(Y, { variant: "outline", className: "gap-1.5", children: [
1045
+ /* @__PURE__ */ e(J, { className: "size-3.5" }),
1045
1046
  l,
1046
1047
  " points"
1047
1048
  ] }),
1048
- /* @__PURE__ */ t(q, { variant: "outline", className: "gap-1.5", children: [
1049
+ /* @__PURE__ */ t(Y, { variant: "outline", className: "gap-1.5", children: [
1049
1050
  /* @__PURE__ */ e(xe, { className: "size-3.5" }),
1050
1051
  f.map((k) => At[k]).join(", ")
1051
1052
  ] }),
@@ -1095,7 +1096,7 @@ function Mt({
1095
1096
  onClick: () => C({ tag: "instructions" }),
1096
1097
  className: "mb-4",
1097
1098
  children: [
1098
- /* @__PURE__ */ e(J, { className: "size-4 mr-1.5" }),
1099
+ /* @__PURE__ */ e(X, { className: "size-4 mr-1.5" }),
1099
1100
  "Back to Instructions"
1100
1101
  ]
1101
1102
  }
@@ -1130,7 +1131,7 @@ function Mt({
1130
1131
  style: g,
1131
1132
  children: /* @__PURE__ */ e(I, { children: /* @__PURE__ */ t(j, { className: "pt-8 pb-8", children: [
1132
1133
  /* @__PURE__ */ t("div", { className: "text-center mb-6", children: [
1133
- /* @__PURE__ */ e("div", { className: "mx-auto mb-4 w-14 h-14 rounded-full bg-success/10 flex items-center justify-center", children: /* @__PURE__ */ e(X, { className: "size-7 text-success" }) }),
1134
+ /* @__PURE__ */ e("div", { className: "mx-auto mb-4 w-14 h-14 rounded-full bg-success/10 flex items-center justify-center", children: /* @__PURE__ */ e(J, { className: "size-7 text-success" }) }),
1134
1135
  /* @__PURE__ */ e("h2", { className: "text-xl font-bold text-foreground mb-2", children: a === "graded" ? "Assignment Graded" : "Submission Received" }),
1135
1136
  /* @__PURE__ */ t("div", { className: "flex justify-center gap-2 mb-4", children: [
1136
1137
  /* @__PURE__ */ e(Ne, { status: a }),
@@ -1169,7 +1170,7 @@ function Mt({
1169
1170
  /* @__PURE__ */ e("h3", { className: "text-sm font-semibold text-foreground mb-3", children: "What You Submitted" }),
1170
1171
  /* @__PURE__ */ t("div", { className: "space-y-2 text-sm text-muted-foreground", children: [
1171
1172
  w.textContent && /* @__PURE__ */ t("div", { className: "flex items-start gap-2", children: [
1172
- /* @__PURE__ */ e(qe, { className: "size-4 mt-0.5 shrink-0" }),
1173
+ /* @__PURE__ */ e(Ye, { className: "size-4 mt-0.5 shrink-0" }),
1173
1174
  /* @__PURE__ */ e("span", { className: "line-clamp-2", children: w.textContent.replace(/<[^>]*>/g, "") })
1174
1175
  ] }),
1175
1176
  w.files && w.files.length > 0 && /* @__PURE__ */ t("div", { className: "flex items-start gap-2", children: [
@@ -1182,7 +1183,7 @@ function Mt({
1182
1183
  ] })
1183
1184
  ] }),
1184
1185
  w.url && /* @__PURE__ */ t("div", { className: "flex items-start gap-2", children: [
1185
- /* @__PURE__ */ e(Ge, { className: "size-4 mt-0.5 shrink-0" }),
1186
+ /* @__PURE__ */ e($e, { className: "size-4 mt-0.5 shrink-0" }),
1186
1187
  /* @__PURE__ */ e("span", { className: "truncate", children: w.url })
1187
1188
  ] })
1188
1189
  ] }),
@@ -1201,7 +1202,7 @@ function Mt({
1201
1202
  }
1202
1203
  );
1203
1204
  }
1204
- const Ht = Y(Mt, "AssignmentModule");
1205
+ const Wt = G(Mt, "AssignmentModule");
1205
1206
  function Et({
1206
1207
  courseTitle: c,
1207
1208
  recipientName: N,
@@ -1218,7 +1219,7 @@ function Et({
1218
1219
  className: s,
1219
1220
  style: S
1220
1221
  }) {
1221
- const { allComplete: m, completedCount: g, derivedProgress: v } = K(() => {
1222
+ const { allComplete: m, completedCount: g, derivedProgress: v } = Z(() => {
1222
1223
  const p = h.filter((Q) => Q.completed).length, w = h.length, k = w > 0 ? Math.round(p / w * 100) : 0;
1223
1224
  return { allComplete: p === w, completedCount: p, derivedProgress: k };
1224
1225
  }, [h]), r = a ?? v, [C, M] = R({ tag: "requirements" }), y = U(null), E = U(!1);
@@ -1290,13 +1291,13 @@ function Et({
1290
1291
  onClick: () => M({ tag: "requirements" }),
1291
1292
  className: "mb-4",
1292
1293
  children: [
1293
- /* @__PURE__ */ e(J, { className: "size-4 mr-1.5" }),
1294
+ /* @__PURE__ */ e(X, { className: "size-4 mr-1.5" }),
1294
1295
  "Back to Requirements"
1295
1296
  ]
1296
1297
  }
1297
1298
  ),
1298
1299
  /* @__PURE__ */ t("div", { className: "text-center mb-8", children: [
1299
- /* @__PURE__ */ e("div", { className: "mx-auto mb-4 w-14 h-14 rounded-full bg-success/10 flex items-center justify-center", children: /* @__PURE__ */ e(We, { className: "size-7 text-success" }) }),
1300
+ /* @__PURE__ */ e("div", { className: "mx-auto mb-4 w-14 h-14 rounded-full bg-success/10 flex items-center justify-center", children: /* @__PURE__ */ e(Ve, { className: "size-7 text-success" }) }),
1300
1301
  /* @__PURE__ */ e("h2", { className: "text-2xl font-bold text-foreground mb-2", children: "Congratulations!" }),
1301
1302
  /* @__PURE__ */ t("p", { className: "text-muted-foreground", children: [
1302
1303
  "You've completed all requirements for",
@@ -1321,7 +1322,7 @@ function Et({
1321
1322
  }
1322
1323
  );
1323
1324
  }
1324
- const _t = Y(Et, "CertificateModule");
1325
+ const Ht = G(Et, "CertificateModule");
1325
1326
  function Bt({
1326
1327
  forumTitle: c,
1327
1328
  topics: N = [],
@@ -1344,13 +1345,13 @@ function Bt({
1344
1345
  const M = U(a);
1345
1346
  M.current = a;
1346
1347
  const y = T((B) => {
1347
- var $;
1348
- S(B), ($ = M.current) == null || $.call(M, B);
1348
+ var q;
1349
+ S(B), (q = M.current) == null || q.call(M, B);
1349
1350
  }, []), E = T(() => {
1350
1351
  S(null);
1351
1352
  }, []), d = s ? l[s] : null, p = s ? N.find((B) => B.uid === s) : null, w = T(
1352
- (B, $) => {
1353
- s && (i == null || i(s, B, $));
1353
+ (B, q) => {
1354
+ s && (i == null || i(s, B, q));
1354
1355
  },
1355
1356
  [s, i]
1356
1357
  ), k = T(
@@ -1382,7 +1383,7 @@ function Bt({
1382
1383
  onClick: E,
1383
1384
  className: "mb-4",
1384
1385
  children: [
1385
- /* @__PURE__ */ e(J, { className: "size-4 mr-1.5" }),
1386
+ /* @__PURE__ */ e(X, { className: "size-4 mr-1.5" }),
1386
1387
  "Back to Topics"
1387
1388
  ]
1388
1389
  }
@@ -1412,7 +1413,7 @@ function Bt({
1412
1413
  onClick: E,
1413
1414
  className: "mb-4",
1414
1415
  children: [
1415
- /* @__PURE__ */ e(J, { className: "size-4 mr-1.5" }),
1416
+ /* @__PURE__ */ e(X, { className: "size-4 mr-1.5" }),
1416
1417
  "Back to Topics"
1417
1418
  ]
1418
1419
  }
@@ -1446,7 +1447,7 @@ function Bt({
1446
1447
  }
1447
1448
  );
1448
1449
  }
1449
- const Jt = Y(Bt, "DiscussionModule");
1450
+ const _t = G(Bt, "DiscussionModule");
1450
1451
  function Pt({
1451
1452
  studentName: c,
1452
1453
  overallProgress: N,
@@ -1488,16 +1489,16 @@ function Pt({
1488
1489
  /* @__PURE__ */ e(_, { className: "mb-6" }),
1489
1490
  /* @__PURE__ */ t(de, { defaultValue: "overview", children: [
1490
1491
  /* @__PURE__ */ t(oe, { className: "mb-6", children: [
1491
- /* @__PURE__ */ t(V, { value: "overview", children: [
1492
+ /* @__PURE__ */ t(W, { value: "overview", children: [
1492
1493
  /* @__PURE__ */ e(ve, { className: "size-4 mr-1.5" }),
1493
1494
  "Overview"
1494
1495
  ] }),
1495
- /* @__PURE__ */ t(V, { value: "courses", children: [
1496
- /* @__PURE__ */ e(Z, { className: "size-4 mr-1.5" }),
1496
+ /* @__PURE__ */ t(W, { value: "courses", children: [
1497
+ /* @__PURE__ */ e(K, { className: "size-4 mr-1.5" }),
1497
1498
  "My Courses"
1498
1499
  ] }),
1499
- /* @__PURE__ */ t(V, { value: "announcements", children: [
1500
- /* @__PURE__ */ e(Ve, { className: "size-4 mr-1.5" }),
1500
+ /* @__PURE__ */ t(W, { value: "announcements", children: [
1501
+ /* @__PURE__ */ e(We, { className: "size-4 mr-1.5" }),
1501
1502
  "Announcements",
1502
1503
  v > 0 && /* @__PURE__ */ e("span", { className: "ml-1.5 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground text-xs font-medium min-w-5 h-5 px-1.5", children: v })
1503
1504
  ] })
@@ -1537,7 +1538,7 @@ function Pt({
1537
1538
  }
1538
1539
  );
1539
1540
  }
1540
- const Kt = Y(Pt, "StudentDashboardModule");
1541
+ const Xt = G(Pt, "StudentDashboardModule");
1541
1542
  function Ut({
1542
1543
  title: c,
1543
1544
  courses: N = [],
@@ -1584,7 +1585,7 @@ function Ut({
1584
1585
  onClick: S,
1585
1586
  className: "mb-4",
1586
1587
  children: [
1587
- /* @__PURE__ */ e(J, { className: "size-4 mr-1.5" }),
1588
+ /* @__PURE__ */ e(X, { className: "size-4 mr-1.5" }),
1588
1589
  "Back to Catalog"
1589
1590
  ]
1590
1591
  }
@@ -1633,7 +1634,7 @@ function Ut({
1633
1634
  }
1634
1635
  );
1635
1636
  }
1636
- const Xt = Y(Ut, "CourseCatalogModule");
1637
+ const Zt = G(Ut, "CourseCatalogModule");
1637
1638
  function Rt({
1638
1639
  student: c,
1639
1640
  enrolledCourses: N = [],
@@ -1678,7 +1679,7 @@ function Rt({
1678
1679
  /* @__PURE__ */ t("div", { className: "flex-1 min-w-0", children: [
1679
1680
  /* @__PURE__ */ t("div", { className: "flex items-center gap-2 flex-wrap", children: [
1680
1681
  /* @__PURE__ */ e("h2", { className: "text-xl font-bold text-foreground", children: c.displayName }),
1681
- c.role && /* @__PURE__ */ e(q, { variant: "secondary", children: c.role })
1682
+ c.role && /* @__PURE__ */ e(Y, { variant: "secondary", children: c.role })
1682
1683
  ] }),
1683
1684
  c.email && /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: c.email })
1684
1685
  ] })
@@ -1693,7 +1694,7 @@ function Rt({
1693
1694
  onClick: m,
1694
1695
  className: "mb-4",
1695
1696
  children: [
1696
- /* @__PURE__ */ e(J, { className: "size-4 mr-1.5" }),
1697
+ /* @__PURE__ */ e(X, { className: "size-4 mr-1.5" }),
1697
1698
  "Back to Profile"
1698
1699
  ]
1699
1700
  }
@@ -1701,19 +1702,19 @@ function Rt({
1701
1702
  /* @__PURE__ */ e(Se, { ...g, showActions: !0 })
1702
1703
  ] }) : /* @__PURE__ */ t(de, { defaultValue: "profile", children: [
1703
1704
  /* @__PURE__ */ t(oe, { className: "mb-6", children: [
1704
- /* @__PURE__ */ t(V, { value: "profile", children: [
1705
+ /* @__PURE__ */ t(W, { value: "profile", children: [
1705
1706
  /* @__PURE__ */ e(He, { className: "size-4 mr-1.5" }),
1706
1707
  "Profile"
1707
1708
  ] }),
1708
- /* @__PURE__ */ t(V, { value: "courses", children: [
1709
- /* @__PURE__ */ e(Z, { className: "size-4 mr-1.5" }),
1709
+ /* @__PURE__ */ t(W, { value: "courses", children: [
1710
+ /* @__PURE__ */ e(K, { className: "size-4 mr-1.5" }),
1710
1711
  "Courses"
1711
1712
  ] }),
1712
- /* @__PURE__ */ t(V, { value: "achievements", children: [
1713
+ /* @__PURE__ */ t(W, { value: "achievements", children: [
1713
1714
  /* @__PURE__ */ e(se, { className: "size-4 mr-1.5" }),
1714
1715
  "Achievements"
1715
1716
  ] }),
1716
- /* @__PURE__ */ t(V, { value: "certificates", children: [
1717
+ /* @__PURE__ */ t(W, { value: "certificates", children: [
1717
1718
  /* @__PURE__ */ e(ee, { className: "size-4 mr-1.5" }),
1718
1719
  "Certificates"
1719
1720
  ] })
@@ -1760,7 +1761,7 @@ function Rt({
1760
1761
  },
1761
1762
  r.uid
1762
1763
  )) }) }) : /* @__PURE__ */ t("div", { className: "py-12 text-center", children: [
1763
- /* @__PURE__ */ e(Z, { className: "size-10 text-muted-foreground mx-auto mb-3" }),
1764
+ /* @__PURE__ */ e(K, { className: "size-10 text-muted-foreground mx-auto mb-3" }),
1764
1765
  /* @__PURE__ */ e("p", { className: "text-sm font-medium text-foreground", children: "No courses yet" }),
1765
1766
  /* @__PURE__ */ e("p", { className: "text-xs text-muted-foreground mt-1", children: "Enrolled courses will appear here." })
1766
1767
  ] }) }),
@@ -1803,7 +1804,7 @@ function Rt({
1803
1804
  new Date(r.issuedAt).toLocaleDateString()
1804
1805
  ] })
1805
1806
  ] }),
1806
- (n == null ? void 0 : n[r.uid]) && /* @__PURE__ */ e(q, { variant: "secondary", className: "text-xs", children: "View" })
1807
+ (n == null ? void 0 : n[r.uid]) && /* @__PURE__ */ e(Y, { variant: "secondary", className: "text-xs", children: "View" })
1807
1808
  ]
1808
1809
  },
1809
1810
  r.uid
@@ -1817,18 +1818,18 @@ function Rt({
1817
1818
  }
1818
1819
  );
1819
1820
  }
1820
- const Zt = Y(Rt, "StudentProfileModule");
1821
+ const Jt = G(Rt, "StudentProfileModule");
1821
1822
  export {
1822
- Ht as AssignmentModule,
1823
- _t as CertificateModule,
1824
- Xt as CourseCatalogModule,
1825
- qt as CoursePlayer,
1826
- Jt as DiscussionModule,
1827
- Gt as ExamModule,
1828
- Yt as FlashcardLab,
1823
+ Wt as AssignmentModule,
1824
+ Ht as CertificateModule,
1825
+ Zt as CourseCatalogModule,
1826
+ Gt as CoursePlayer,
1827
+ _t as DiscussionModule,
1828
+ Yt as ExamModule,
1829
+ qt as FlashcardLab,
1829
1830
  Vt as GradeCenterModule,
1830
- $t as QuizModule,
1831
- Kt as StudentDashboardModule,
1832
- Zt as StudentProfileModule,
1833
- Wt as SurveyModule
1831
+ Qt as QuizModule,
1832
+ Xt as StudentDashboardModule,
1833
+ Jt as StudentProfileModule,
1834
+ $t as SurveyModule
1834
1835
  };