@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.
- package/dist/StudentProfile-BPsZBaJj.cjs +1 -0
- package/dist/{StudentProfile-DeMxdrL3.js → StudentProfile-Cw2p-RZn.js} +577 -579
- package/dist/index.cjs +1 -1
- package/dist/index.js +172 -166
- package/dist/license/index.d.ts +2 -2
- package/dist/license/tiers.d.ts +3 -0
- package/dist/modules.cjs +1 -1
- package/dist/modules.js +111 -110
- package/dist/sections/AdaptiveLearningPath/AdaptiveLearningPath.d.ts +5 -0
- package/dist/sections/AdaptiveLearningPath/path-connector.d.ts +8 -0
- package/dist/sections/AdaptiveLearningPath/path-milestone-marker.d.ts +7 -0
- package/dist/sections/AdaptiveLearningPath/path-node-card.d.ts +10 -0
- package/dist/sections/AdaptiveLearningPath/path-skill-bar.d.ts +8 -0
- package/dist/sections/AdaptiveLearningPath/types.d.ts +136 -0
- package/dist/sections/ContentAuthoringStudio/ContentAuthoringStudio.d.ts +5 -0
- package/dist/sections/ContentAuthoringStudio/block-editor-item.d.ts +14 -0
- package/dist/sections/ContentAuthoringStudio/block-type-picker.d.ts +12 -0
- package/dist/sections/ContentAuthoringStudio/types.d.ts +67 -0
- package/dist/sections/index.d.ts +4 -0
- package/dist/sections.cjs +1 -1
- package/dist/sections.js +1325 -232
- package/dist/withProGate-BJdu1T9Y.cjs +2 -0
- package/dist/withProGate-BvFc7Jwy.js +4975 -0
- package/package.json +24 -7
- package/src/license/index.ts +2 -2
- package/src/license/tiers.ts +12 -2
- package/src/modules/CoursePlayer/CoursePlayer.tsx +3 -1
- package/src/progress/stat-card.tsx +10 -5
- package/src/sections/AdaptiveLearningPath/AdaptiveLearningPath.tsx +251 -0
- package/src/sections/AdaptiveLearningPath/path-connector.tsx +27 -0
- package/src/sections/AdaptiveLearningPath/path-milestone-marker.tsx +50 -0
- package/src/sections/AdaptiveLearningPath/path-node-card.tsx +166 -0
- package/src/sections/AdaptiveLearningPath/path-skill-bar.tsx +49 -0
- package/src/sections/AdaptiveLearningPath/types.ts +159 -0
- package/src/sections/ContentAuthoringStudio/ContentAuthoringStudio.tsx +289 -0
- package/src/sections/ContentAuthoringStudio/block-editor-item.tsx +487 -0
- package/src/sections/ContentAuthoringStudio/block-type-picker.tsx +123 -0
- package/src/sections/ContentAuthoringStudio/types.ts +67 -0
- package/src/sections/ForumBoard/ForumBoard.tsx +8 -6
- package/src/sections/LessonPage/LessonPage.tsx +4 -7
- package/src/sections/index.ts +18 -0
- package/src/video/video-player.tsx +14 -5
- package/dist/StudentProfile-BVfZMbnV.cjs +0 -1
- package/dist/tabs-BsfVo2Bl.cjs +0 -173
- package/dist/tabs-BuY1iNJE.js +0 -22305
- package/dist/withProGate-BWqcKdPM.js +0 -137
- 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
|
|
3
|
-
import { HelpCircle as le, Clock as re, CheckCircle2 as
|
|
4
|
-
import { a as be, Q as _e, F as
|
|
5
|
-
import { C as I, x as j, B as
|
|
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(
|
|
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(
|
|
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(
|
|
51
|
-
/* @__PURE__ */ e(
|
|
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
|
-
|
|
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
|
-
|
|
103
|
+
$,
|
|
105
104
|
{
|
|
106
|
-
icon: /* @__PURE__ */ e(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
403
|
+
$,
|
|
405
404
|
{
|
|
406
|
-
icon: /* @__PURE__ */ e(
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
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
|
|
477
|
-
|
|
478
|
-
const
|
|
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) &&
|
|
483
|
-
}, [
|
|
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 =
|
|
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 &&
|
|
489
|
-
}, [s, m,
|
|
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 &&
|
|
492
|
-
}, [s, m,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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:
|
|
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 ?
|
|
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:
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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(
|
|
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(
|
|
951
|
-
/* @__PURE__ */ e(
|
|
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(
|
|
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 =
|
|
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 =
|
|
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(
|
|
1044
|
-
/* @__PURE__ */ e(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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 } =
|
|
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(
|
|
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(
|
|
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
|
|
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), (
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
1496
|
-
/* @__PURE__ */ e(
|
|
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(
|
|
1500
|
-
/* @__PURE__ */ e(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
1709
|
-
/* @__PURE__ */ e(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
1821
|
+
const Jt = G(Rt, "StudentProfileModule");
|
|
1821
1822
|
export {
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
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
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1831
|
+
Qt as QuizModule,
|
|
1832
|
+
Xt as StudentDashboardModule,
|
|
1833
|
+
Jt as StudentProfileModule,
|
|
1834
|
+
$t as SurveyModule
|
|
1834
1835
|
};
|