@burdenoff/microfe-technospam 2026.719.1 → 2026.720.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/technospam/api/technospamApi.d.ts +12 -0
- package/dist/technospam/api/technospamApi.d.ts.map +1 -1
- package/dist/technospam/api/technospamApi.js +38 -4
- package/dist/technospam/api/technospamApi.js.map +1 -1
- package/dist/technospam/pages/AnalyticsAnalyticsPagePage.d.ts.map +1 -1
- package/dist/technospam/pages/AnalyticsAnalyticsPagePage.js +214 -117
- package/dist/technospam/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
- package/dist/technospam/pages/ApplicationsProblemsPagePage.d.ts.map +1 -1
- package/dist/technospam/pages/ApplicationsProblemsPagePage.js +176 -76
- package/dist/technospam/pages/ApplicationsProblemsPagePage.js.map +1 -1
- package/dist/technospam/pages/MentorshipMentorProfilePagePage.d.ts.map +1 -1
- package/dist/technospam/pages/MentorshipMentorProfilePagePage.js +18 -11
- package/dist/technospam/pages/MentorshipMentorProfilePagePage.js.map +1 -1
- package/dist/technospam/pages/MentorshipMentorsPagePage.d.ts.map +1 -1
- package/dist/technospam/pages/MentorshipMentorsPagePage.js +53 -31
- package/dist/technospam/pages/MentorshipMentorsPagePage.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,69 +3,69 @@ import { cn as n } from "../utils/cn.js";
|
|
|
3
3
|
import { PageLayout as r } from "../components/PageLayout.js";
|
|
4
4
|
import { StatCard as i } from "../components/StatCard.js";
|
|
5
5
|
import { humanizeEnum as a } from "../utils/format.js";
|
|
6
|
-
import { EmptyView as o, ErrorView as ee, LoadingGrid as te, LoadingRows as
|
|
6
|
+
import { EmptyView as o, ErrorView as ee, LoadingGrid as te, LoadingRows as ne } from "../components/StateViews.js";
|
|
7
7
|
import "../components/index.js";
|
|
8
|
-
import { useCertificatesQuery as
|
|
9
|
-
import { Legend as
|
|
10
|
-
import { Tooltip as
|
|
11
|
-
import { ResponsiveContainer as
|
|
12
|
-
import { Cell as
|
|
13
|
-
import { Pie as
|
|
14
|
-
import { Bar as
|
|
15
|
-
import { CartesianGrid as
|
|
16
|
-
import { Area as
|
|
17
|
-
import { XAxis as
|
|
18
|
-
import { YAxis as
|
|
19
|
-
import { BarChart as
|
|
20
|
-
import { PieChart as
|
|
21
|
-
import { AreaChart as
|
|
22
|
-
import { useMemo as g } from "react";
|
|
23
|
-
import { Activity as _, Award as
|
|
8
|
+
import { useCertificatesQuery as re, useCoursesQuery as ie, useEnrollmentsQuery as ae, useHackathonsQuery as oe, useProblemsQuery as se, useSessionsQuery as ce, useSubmissionsQuery as le } from "../api/technospamApi.js";
|
|
9
|
+
import { Legend as s } from "../../node_modules/recharts/es6/component/Legend.js";
|
|
10
|
+
import { Tooltip as c } from "../../node_modules/recharts/es6/component/Tooltip.js";
|
|
11
|
+
import { ResponsiveContainer as l } from "../../node_modules/recharts/es6/component/ResponsiveContainer.js";
|
|
12
|
+
import { Cell as u } from "../../node_modules/recharts/es6/component/Cell.js";
|
|
13
|
+
import { Pie as ue } from "../../node_modules/recharts/es6/polar/Pie.js";
|
|
14
|
+
import { Bar as de } from "../../node_modules/recharts/es6/cartesian/Bar.js";
|
|
15
|
+
import { CartesianGrid as d } from "../../node_modules/recharts/es6/cartesian/CartesianGrid.js";
|
|
16
|
+
import { Area as f } from "../../node_modules/recharts/es6/cartesian/Area.js";
|
|
17
|
+
import { XAxis as p } from "../../node_modules/recharts/es6/cartesian/XAxis.js";
|
|
18
|
+
import { YAxis as m } from "../../node_modules/recharts/es6/cartesian/YAxis.js";
|
|
19
|
+
import { BarChart as fe } from "../../node_modules/recharts/es6/chart/BarChart.js";
|
|
20
|
+
import { PieChart as pe } from "../../node_modules/recharts/es6/chart/PieChart.js";
|
|
21
|
+
import { AreaChart as me } from "../../node_modules/recharts/es6/chart/AreaChart.js";
|
|
22
|
+
import { useMemo as h, useState as g } from "react";
|
|
23
|
+
import { Activity as _, Award as he, BarChart3 as ge, BookOpen as v, CalendarRange as y, Code2 as b, GraduationCap as x, Library as _e, Percent as ve, TrendingUp as ye, Trophy as be, Users as xe, X as S } from "lucide-react";
|
|
24
24
|
import { jsx as C, jsxs as w } from "react/jsx-runtime";
|
|
25
|
-
import { Button as T, GlassCard as E } from "@burdenoff/fe-libs/ui";
|
|
25
|
+
import { Button as T, GlassCard as E, Input as D } from "@burdenoff/fe-libs/ui";
|
|
26
26
|
//#region src/technospam/pages/AnalyticsAnalyticsPagePage.tsx
|
|
27
|
-
var
|
|
27
|
+
var Se = [
|
|
28
28
|
"ENROLLED",
|
|
29
29
|
"IN_PROGRESS",
|
|
30
30
|
"COMPLETED",
|
|
31
31
|
"DROPPED"
|
|
32
|
-
],
|
|
32
|
+
], Ce = {
|
|
33
33
|
ENROLLED: "var(--color-accent-primary)",
|
|
34
34
|
IN_PROGRESS: "var(--color-accent-teal)",
|
|
35
35
|
COMPLETED: "var(--color-status-success)",
|
|
36
36
|
DROPPED: "var(--color-status-warning)"
|
|
37
|
-
},
|
|
37
|
+
}, we = [
|
|
38
38
|
"ACCEPTED",
|
|
39
39
|
"WRONG_ANSWER",
|
|
40
40
|
"TIME_LIMIT_EXCEEDED",
|
|
41
41
|
"RUNTIME_ERROR",
|
|
42
42
|
"COMPILE_ERROR",
|
|
43
43
|
"PENDING"
|
|
44
|
-
],
|
|
44
|
+
], Te = {
|
|
45
45
|
ACCEPTED: "Accepted",
|
|
46
46
|
WRONG_ANSWER: "Wrong",
|
|
47
47
|
TIME_LIMIT_EXCEEDED: "TLE",
|
|
48
48
|
RUNTIME_ERROR: "Runtime",
|
|
49
49
|
COMPILE_ERROR: "Compile",
|
|
50
50
|
PENDING: "Pending"
|
|
51
|
-
},
|
|
51
|
+
}, Ee = {
|
|
52
52
|
ACCEPTED: "var(--color-status-success)",
|
|
53
53
|
WRONG_ANSWER: "var(--color-status-error)",
|
|
54
54
|
TIME_LIMIT_EXCEEDED: "var(--color-status-warning)",
|
|
55
55
|
RUNTIME_ERROR: "var(--color-status-error)",
|
|
56
56
|
COMPILE_ERROR: "var(--color-status-error)",
|
|
57
57
|
PENDING: "var(--color-text-muted)"
|
|
58
|
-
},
|
|
58
|
+
}, O = {
|
|
59
59
|
background: "var(--color-bg-surface)",
|
|
60
60
|
border: "1px solid var(--color-border-seam)",
|
|
61
61
|
borderRadius: 12,
|
|
62
62
|
color: "var(--color-text-primary)",
|
|
63
63
|
fontSize: 12
|
|
64
|
-
},
|
|
64
|
+
}, k = { color: "var(--color-text-secondary)" }, A = {
|
|
65
65
|
fill: "var(--color-text-muted)",
|
|
66
66
|
fontSize: 12
|
|
67
67
|
};
|
|
68
|
-
function
|
|
68
|
+
function De(e) {
|
|
69
69
|
let t = new Date(e);
|
|
70
70
|
if (Number.isNaN(t.getTime())) return {
|
|
71
71
|
key: 0,
|
|
@@ -80,17 +80,17 @@ function N(e) {
|
|
|
80
80
|
})
|
|
81
81
|
};
|
|
82
82
|
}
|
|
83
|
-
var
|
|
83
|
+
var j = {
|
|
84
84
|
blue: "bg-accent-primary/15 text-accent-primary ring-accent-primary/20",
|
|
85
85
|
teal: "bg-accent-teal/15 text-accent-teal ring-accent-teal/20",
|
|
86
86
|
purple: "bg-accent-purple/15 text-accent-purple ring-accent-purple/20",
|
|
87
87
|
indigo: "bg-accent-indigo/15 text-accent-indigo ring-accent-indigo/20"
|
|
88
88
|
};
|
|
89
|
-
function
|
|
89
|
+
function M({ icon: e, title: t, subtitle: r, tone: i }) {
|
|
90
90
|
return /* @__PURE__ */ w("div", {
|
|
91
91
|
className: "mb-4 flex items-center gap-3",
|
|
92
92
|
children: [/* @__PURE__ */ C("span", {
|
|
93
|
-
className: n("flex h-9 w-9 shrink-0 items-center justify-center rounded-xl ring-1",
|
|
93
|
+
className: n("flex h-9 w-9 shrink-0 items-center justify-center rounded-xl ring-1", j[i]),
|
|
94
94
|
children: /* @__PURE__ */ C(e, { size: 17 })
|
|
95
95
|
}), /* @__PURE__ */ w("div", {
|
|
96
96
|
className: "min-w-0",
|
|
@@ -104,10 +104,10 @@ function F({ icon: e, title: t, subtitle: r, tone: i }) {
|
|
|
104
104
|
})]
|
|
105
105
|
});
|
|
106
106
|
}
|
|
107
|
-
function
|
|
107
|
+
function N({ title: e, subtitle: t, icon: n, tone: r = "teal", isEmpty: i, emptyLabel: a, children: o }) {
|
|
108
108
|
return /* @__PURE__ */ w(E, {
|
|
109
109
|
className: "p-5 transition-shadow duration-200 hover:shadow-lg",
|
|
110
|
-
children: [/* @__PURE__ */ C(
|
|
110
|
+
children: [/* @__PURE__ */ C(M, {
|
|
111
111
|
icon: n,
|
|
112
112
|
title: e,
|
|
113
113
|
subtitle: t,
|
|
@@ -115,41 +115,130 @@ function I({ title: e, subtitle: t, icon: n, tone: r = "teal", isEmpty: i, empty
|
|
|
115
115
|
}), i ? /* @__PURE__ */ C("div", {
|
|
116
116
|
className: "flex h-[240px] items-center justify-center text-center text-sm text-text-muted",
|
|
117
117
|
children: a
|
|
118
|
-
}) : /* @__PURE__ */ C(
|
|
118
|
+
}) : /* @__PURE__ */ C(l, {
|
|
119
119
|
width: "100%",
|
|
120
120
|
height: 260,
|
|
121
121
|
children: o
|
|
122
122
|
})]
|
|
123
123
|
});
|
|
124
124
|
}
|
|
125
|
-
function
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
function Oe(e) {
|
|
126
|
+
return e ? `${e}T00:00:00.000Z` : void 0;
|
|
127
|
+
}
|
|
128
|
+
function ke(e) {
|
|
129
|
+
return e ? `${e}T23:59:59.999Z` : void 0;
|
|
130
|
+
}
|
|
131
|
+
function Ae({ start: e, end: t, onStart: n, onEnd: r, onPreset: i, onClear: a }) {
|
|
132
|
+
return /* @__PURE__ */ w(E, {
|
|
133
|
+
className: "mb-6 flex flex-col gap-3 p-4 lg:flex-row lg:items-end lg:justify-between",
|
|
134
|
+
children: [/* @__PURE__ */ w("div", {
|
|
135
|
+
className: "flex flex-wrap items-end gap-3",
|
|
136
|
+
children: [
|
|
137
|
+
/* @__PURE__ */ w("div", {
|
|
138
|
+
className: "flex items-center gap-2 self-center text-sm font-medium text-text-secondary",
|
|
139
|
+
children: [/* @__PURE__ */ C(y, {
|
|
140
|
+
size: 16,
|
|
141
|
+
className: "text-accent-teal"
|
|
142
|
+
}), "Date range"]
|
|
143
|
+
}),
|
|
144
|
+
/* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("label", {
|
|
145
|
+
className: "mb-1 block text-xs font-medium text-text-muted",
|
|
146
|
+
htmlFor: "tec-range-from",
|
|
147
|
+
children: "From"
|
|
148
|
+
}), /* @__PURE__ */ C(D, {
|
|
149
|
+
id: "tec-range-from",
|
|
150
|
+
type: "date",
|
|
151
|
+
value: e,
|
|
152
|
+
max: t || void 0,
|
|
153
|
+
onChange: (e) => n(e.target.value),
|
|
154
|
+
className: "w-40"
|
|
155
|
+
})] }),
|
|
156
|
+
/* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("label", {
|
|
157
|
+
className: "mb-1 block text-xs font-medium text-text-muted",
|
|
158
|
+
htmlFor: "tec-range-to",
|
|
159
|
+
children: "To"
|
|
160
|
+
}), /* @__PURE__ */ C(D, {
|
|
161
|
+
id: "tec-range-to",
|
|
162
|
+
type: "date",
|
|
163
|
+
value: t,
|
|
164
|
+
min: e || void 0,
|
|
165
|
+
onChange: (e) => r(e.target.value),
|
|
166
|
+
className: "w-40"
|
|
167
|
+
})] }),
|
|
168
|
+
e || t ? /* @__PURE__ */ w(T, {
|
|
169
|
+
variant: "ghost",
|
|
170
|
+
size: "sm",
|
|
171
|
+
onClick: a,
|
|
172
|
+
children: [/* @__PURE__ */ C(S, { size: 14 }), " Clear"]
|
|
173
|
+
}) : null
|
|
174
|
+
]
|
|
175
|
+
}), /* @__PURE__ */ w("div", {
|
|
176
|
+
className: "flex flex-wrap gap-2",
|
|
177
|
+
children: [
|
|
178
|
+
/* @__PURE__ */ C(T, {
|
|
179
|
+
variant: "outline",
|
|
180
|
+
size: "sm",
|
|
181
|
+
onClick: () => i(7),
|
|
182
|
+
children: "Last 7 days"
|
|
183
|
+
}),
|
|
184
|
+
/* @__PURE__ */ C(T, {
|
|
185
|
+
variant: "outline",
|
|
186
|
+
size: "sm",
|
|
187
|
+
onClick: () => i(30),
|
|
188
|
+
children: "Last 30 days"
|
|
189
|
+
}),
|
|
190
|
+
/* @__PURE__ */ C(T, {
|
|
191
|
+
variant: "outline",
|
|
192
|
+
size: "sm",
|
|
193
|
+
onClick: () => i(90),
|
|
194
|
+
children: "Last 90 days"
|
|
195
|
+
})
|
|
196
|
+
]
|
|
197
|
+
})]
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
function P() {
|
|
201
|
+
let n = t(), { currentUser: y } = e(), S = y?.id, [D, j] = g(""), [P, F] = g(""), I = Oe(D), L = ke(P), je = (e) => {
|
|
202
|
+
let t = /* @__PURE__ */ new Date(), n = /* @__PURE__ */ new Date();
|
|
203
|
+
n.setDate(n.getDate() - e), j(n.toISOString().slice(0, 10)), F(t.toISOString().slice(0, 10));
|
|
204
|
+
}, Me = () => {
|
|
205
|
+
j(""), F("");
|
|
206
|
+
}, R = I || L ? {
|
|
207
|
+
startDate: I,
|
|
208
|
+
endDate: L
|
|
209
|
+
} : {}, z = ae(S ? {
|
|
210
|
+
learnerId: S,
|
|
211
|
+
...R
|
|
212
|
+
} : {}), B = le(S ? {
|
|
213
|
+
learnerId: S,
|
|
214
|
+
...R
|
|
215
|
+
} : {}), V = ce(S ? { menteeId: S } : {}), H = re(S ? { learnerId: S } : {}), Ne = ie({ status: "PUBLISHED" }), Pe = se({ status: "PUBLISHED" }), Fe = oe({}), U = h(() => z.data?.tecListEnrollments.items ?? [], [z.data]), W = h(() => B.data?.tecListSubmissions.items ?? [], [B.data]), G = V.data?.tecListSessions.items ?? [], K = H.data?.tecListCertificates ?? [], Ie = Ne.data?.tecListCourses.items.length ?? 0, Le = Pe.data?.tecListProblems.items.length ?? 0, Re = Fe.data?.tecListHackathons.items.length ?? 0, q = h(() => {
|
|
216
|
+
let e = U.filter((e) => e.status === "COMPLETED").length, t = U.length ? Math.round(U.reduce((e, t) => e + t.progressPct, 0) / U.length) : 0, n = W.filter((e) => e.verdict === "ACCEPTED");
|
|
128
217
|
return {
|
|
129
218
|
coursesCompleted: e,
|
|
130
219
|
avgProgress: t,
|
|
131
220
|
problemsSolved: new Set(n.map((e) => e.problemId)).size,
|
|
132
|
-
acceptanceRate:
|
|
221
|
+
acceptanceRate: W.length ? Math.round(n.length / W.length * 100) : 0
|
|
133
222
|
};
|
|
134
|
-
}, [
|
|
223
|
+
}, [U, W]), J = h(() => Se.map((e) => ({
|
|
135
224
|
name: a(e),
|
|
136
|
-
value:
|
|
137
|
-
color:
|
|
138
|
-
})).filter((e) => e.value > 0), [
|
|
139
|
-
label:
|
|
140
|
-
count:
|
|
141
|
-
color:
|
|
142
|
-
})).filter((e) => e.count > 0), [
|
|
225
|
+
value: U.filter((t) => t.status === e).length,
|
|
226
|
+
color: Ce[e]
|
|
227
|
+
})).filter((e) => e.value > 0), [U]), Y = h(() => we.map((e) => ({
|
|
228
|
+
label: Te[e],
|
|
229
|
+
count: W.filter((t) => t.verdict === e).length,
|
|
230
|
+
color: Ee[e]
|
|
231
|
+
})).filter((e) => e.count > 0), [W]), X = h(() => {
|
|
143
232
|
let e = /* @__PURE__ */ new Map(), t = (t, n) => {
|
|
144
|
-
let { key: r, label: i } =
|
|
233
|
+
let { key: r, label: i } = De(t), a = e.get(r) ?? {
|
|
145
234
|
label: i,
|
|
146
235
|
submissions: 0,
|
|
147
236
|
enrollments: 0
|
|
148
237
|
};
|
|
149
238
|
a[n] += 1, e.set(r, a);
|
|
150
239
|
};
|
|
151
|
-
return
|
|
152
|
-
}, [
|
|
240
|
+
return W.forEach((e) => t(e.createdAt, "submissions")), U.forEach((e) => t(e.createdAt, "enrollments")), [...e.entries()].sort((e, t) => e[0] - t[0]).slice(-8).map(([, e]) => e);
|
|
241
|
+
}, [W, U]), Z = U.length > 0 || W.length > 0 || G.length > 0 || K.length > 0, ze = z.loading || B.loading || V.loading || H.loading, Q = z.error || B.error || V.error || H.error, Be = ze && !Z, $ = /* @__PURE__ */ w("div", { children: [
|
|
153
242
|
/* @__PURE__ */ C("h2", {
|
|
154
243
|
className: "mb-3 text-base font-semibold text-text-primary",
|
|
155
244
|
children: "Workspace overview"
|
|
@@ -163,20 +252,20 @@ function L() {
|
|
|
163
252
|
children: [
|
|
164
253
|
/* @__PURE__ */ C(i, {
|
|
165
254
|
label: "Published courses",
|
|
166
|
-
value:
|
|
167
|
-
icon:
|
|
255
|
+
value: Ie,
|
|
256
|
+
icon: _e,
|
|
168
257
|
tone: "blue"
|
|
169
258
|
}),
|
|
170
259
|
/* @__PURE__ */ C(i, {
|
|
171
260
|
label: "Published problems",
|
|
172
|
-
value:
|
|
173
|
-
icon:
|
|
261
|
+
value: Le,
|
|
262
|
+
icon: b,
|
|
174
263
|
tone: "indigo"
|
|
175
264
|
}),
|
|
176
265
|
/* @__PURE__ */ C(i, {
|
|
177
266
|
label: "Hackathons",
|
|
178
|
-
value:
|
|
179
|
-
icon:
|
|
267
|
+
value: Re,
|
|
268
|
+
icon: be,
|
|
180
269
|
tone: "purple"
|
|
181
270
|
})
|
|
182
271
|
]
|
|
@@ -189,84 +278,92 @@ function L() {
|
|
|
189
278
|
actions: /* @__PURE__ */ w(T, {
|
|
190
279
|
variant: "outline",
|
|
191
280
|
onClick: () => n("/courses/my-learning-page"),
|
|
192
|
-
children: [/* @__PURE__ */ C(
|
|
281
|
+
children: [/* @__PURE__ */ C(x, { size: 16 }), " My Learning"]
|
|
193
282
|
}),
|
|
194
|
-
children:
|
|
283
|
+
children: S ? Be ? /* @__PURE__ */ w("div", {
|
|
195
284
|
className: "space-y-6",
|
|
196
285
|
children: [/* @__PURE__ */ C(te, {
|
|
197
286
|
count: 4,
|
|
198
287
|
height: "h-24"
|
|
199
|
-
}), /* @__PURE__ */ C(
|
|
288
|
+
}), /* @__PURE__ */ C(ne, {
|
|
200
289
|
count: 2,
|
|
201
290
|
height: "h-72"
|
|
202
291
|
})]
|
|
203
|
-
}) :
|
|
292
|
+
}) : Q && !Z ? /* @__PURE__ */ C(ee, {
|
|
204
293
|
title: "Couldn't load your analytics",
|
|
205
|
-
error:
|
|
294
|
+
error: Q
|
|
206
295
|
}) : /* @__PURE__ */ w("div", {
|
|
207
296
|
className: "space-y-8",
|
|
208
297
|
children: [
|
|
298
|
+
/* @__PURE__ */ C(Ae, {
|
|
299
|
+
start: D,
|
|
300
|
+
end: P,
|
|
301
|
+
onStart: j,
|
|
302
|
+
onEnd: F,
|
|
303
|
+
onPreset: je,
|
|
304
|
+
onClear: Me
|
|
305
|
+
}),
|
|
209
306
|
/* @__PURE__ */ w("div", {
|
|
210
307
|
className: "grid grid-cols-2 gap-3 sm:grid-cols-3 xl:grid-cols-4",
|
|
211
308
|
children: [
|
|
212
309
|
/* @__PURE__ */ C(i, {
|
|
213
310
|
label: "Courses enrolled",
|
|
214
|
-
value:
|
|
215
|
-
icon:
|
|
311
|
+
value: U.length,
|
|
312
|
+
icon: v,
|
|
216
313
|
tone: "blue"
|
|
217
314
|
}),
|
|
218
315
|
/* @__PURE__ */ C(i, {
|
|
219
316
|
label: "Courses completed",
|
|
220
|
-
value:
|
|
221
|
-
icon:
|
|
317
|
+
value: q.coursesCompleted,
|
|
318
|
+
icon: x,
|
|
222
319
|
tone: "green"
|
|
223
320
|
}),
|
|
224
321
|
/* @__PURE__ */ C(i, {
|
|
225
322
|
label: "Avg progress",
|
|
226
|
-
value: `${
|
|
227
|
-
icon:
|
|
323
|
+
value: `${q.avgProgress}%`,
|
|
324
|
+
icon: ye,
|
|
228
325
|
tone: "purple"
|
|
229
326
|
}),
|
|
230
327
|
/* @__PURE__ */ C(i, {
|
|
231
328
|
label: "Problems solved",
|
|
232
|
-
value:
|
|
233
|
-
icon:
|
|
329
|
+
value: q.problemsSolved,
|
|
330
|
+
icon: b,
|
|
234
331
|
tone: "indigo"
|
|
235
332
|
}),
|
|
236
333
|
/* @__PURE__ */ C(i, {
|
|
237
334
|
label: "Acceptance rate",
|
|
238
|
-
value: `${
|
|
239
|
-
icon:
|
|
335
|
+
value: `${q.acceptanceRate}%`,
|
|
336
|
+
icon: ve,
|
|
240
337
|
tone: "teal"
|
|
241
338
|
}),
|
|
242
339
|
/* @__PURE__ */ C(i, {
|
|
243
340
|
label: "Mentor sessions",
|
|
244
|
-
value:
|
|
245
|
-
icon:
|
|
341
|
+
value: G.length,
|
|
342
|
+
icon: xe,
|
|
246
343
|
tone: "blue"
|
|
247
344
|
}),
|
|
248
345
|
/* @__PURE__ */ C(i, {
|
|
249
346
|
label: "Certificates",
|
|
250
|
-
value:
|
|
251
|
-
icon:
|
|
347
|
+
value: K.length,
|
|
348
|
+
icon: he,
|
|
252
349
|
tone: "amber"
|
|
253
350
|
})
|
|
254
351
|
]
|
|
255
352
|
}),
|
|
256
|
-
|
|
353
|
+
Z ? /* @__PURE__ */ w("div", {
|
|
257
354
|
className: "space-y-4",
|
|
258
355
|
children: [/* @__PURE__ */ w("div", {
|
|
259
356
|
className: "grid grid-cols-1 gap-4 lg:grid-cols-2",
|
|
260
|
-
children: [/* @__PURE__ */ C(
|
|
357
|
+
children: [/* @__PURE__ */ C(N, {
|
|
261
358
|
title: "Enrollments by status",
|
|
262
359
|
subtitle: "How your courses are progressing",
|
|
263
|
-
icon:
|
|
360
|
+
icon: v,
|
|
264
361
|
tone: "blue",
|
|
265
|
-
isEmpty:
|
|
362
|
+
isEmpty: J.length === 0,
|
|
266
363
|
emptyLabel: "No enrollments yet",
|
|
267
|
-
children: /* @__PURE__ */ w(
|
|
268
|
-
/* @__PURE__ */ C(
|
|
269
|
-
data:
|
|
364
|
+
children: /* @__PURE__ */ w(pe, { children: [
|
|
365
|
+
/* @__PURE__ */ C(ue, {
|
|
366
|
+
data: J,
|
|
270
367
|
dataKey: "value",
|
|
271
368
|
nameKey: "name",
|
|
272
369
|
innerRadius: 60,
|
|
@@ -274,26 +371,26 @@ function L() {
|
|
|
274
371
|
paddingAngle: 2,
|
|
275
372
|
stroke: "var(--color-bg-surface)",
|
|
276
373
|
strokeWidth: 2,
|
|
277
|
-
children:
|
|
278
|
-
}),
|
|
279
|
-
/* @__PURE__ */ C(l, {
|
|
280
|
-
contentStyle: A,
|
|
281
|
-
labelStyle: j
|
|
374
|
+
children: J.map((e) => /* @__PURE__ */ C(u, { fill: e.color }, e.name))
|
|
282
375
|
}),
|
|
283
376
|
/* @__PURE__ */ C(c, {
|
|
377
|
+
contentStyle: O,
|
|
378
|
+
labelStyle: k
|
|
379
|
+
}),
|
|
380
|
+
/* @__PURE__ */ C(s, {
|
|
284
381
|
iconType: "circle",
|
|
285
382
|
wrapperStyle: { fontSize: 12 }
|
|
286
383
|
})
|
|
287
384
|
] })
|
|
288
|
-
}), /* @__PURE__ */ C(
|
|
385
|
+
}), /* @__PURE__ */ C(N, {
|
|
289
386
|
title: "Submissions by verdict",
|
|
290
387
|
subtitle: "Outcomes across your attempts",
|
|
291
|
-
icon:
|
|
388
|
+
icon: b,
|
|
292
389
|
tone: "purple",
|
|
293
|
-
isEmpty:
|
|
390
|
+
isEmpty: Y.length === 0,
|
|
294
391
|
emptyLabel: "No submissions yet",
|
|
295
|
-
children: /* @__PURE__ */ w(
|
|
296
|
-
data:
|
|
392
|
+
children: /* @__PURE__ */ w(fe, {
|
|
393
|
+
data: Y,
|
|
297
394
|
margin: {
|
|
298
395
|
top: 8,
|
|
299
396
|
right: 8,
|
|
@@ -301,32 +398,32 @@ function L() {
|
|
|
301
398
|
bottom: 0
|
|
302
399
|
},
|
|
303
400
|
children: [
|
|
304
|
-
/* @__PURE__ */ C(
|
|
401
|
+
/* @__PURE__ */ C(d, {
|
|
305
402
|
strokeDasharray: "3 3",
|
|
306
403
|
stroke: "var(--color-border-seam)",
|
|
307
404
|
vertical: !1
|
|
308
405
|
}),
|
|
309
|
-
/* @__PURE__ */ C(
|
|
406
|
+
/* @__PURE__ */ C(p, {
|
|
310
407
|
dataKey: "label",
|
|
311
|
-
tick:
|
|
408
|
+
tick: A,
|
|
312
409
|
axisLine: { stroke: "var(--color-border-seam)" },
|
|
313
410
|
tickLine: !1
|
|
314
411
|
}),
|
|
315
|
-
/* @__PURE__ */ C(
|
|
412
|
+
/* @__PURE__ */ C(m, {
|
|
316
413
|
allowDecimals: !1,
|
|
317
|
-
tick:
|
|
414
|
+
tick: A,
|
|
318
415
|
axisLine: !1,
|
|
319
416
|
tickLine: !1
|
|
320
417
|
}),
|
|
321
|
-
/* @__PURE__ */ C(
|
|
322
|
-
contentStyle:
|
|
323
|
-
labelStyle:
|
|
418
|
+
/* @__PURE__ */ C(c, {
|
|
419
|
+
contentStyle: O,
|
|
420
|
+
labelStyle: k,
|
|
324
421
|
cursor: {
|
|
325
422
|
fill: "var(--color-accent-primary)",
|
|
326
423
|
fillOpacity: .08
|
|
327
424
|
}
|
|
328
425
|
}),
|
|
329
|
-
/* @__PURE__ */ C(
|
|
426
|
+
/* @__PURE__ */ C(de, {
|
|
330
427
|
dataKey: "count",
|
|
331
428
|
name: "Submissions",
|
|
332
429
|
radius: [
|
|
@@ -336,26 +433,26 @@ function L() {
|
|
|
336
433
|
0
|
|
337
434
|
],
|
|
338
435
|
maxBarSize: 56,
|
|
339
|
-
children:
|
|
436
|
+
children: Y.map((e) => /* @__PURE__ */ C(u, { fill: e.color }, e.label))
|
|
340
437
|
})
|
|
341
438
|
]
|
|
342
439
|
})
|
|
343
440
|
})]
|
|
344
441
|
}), /* @__PURE__ */ w(E, {
|
|
345
442
|
className: "p-5 transition-shadow duration-200 hover:shadow-lg",
|
|
346
|
-
children: [/* @__PURE__ */ C(
|
|
443
|
+
children: [/* @__PURE__ */ C(M, {
|
|
347
444
|
icon: _,
|
|
348
445
|
title: "Learning activity over time",
|
|
349
446
|
subtitle: "Submissions and enrollments per week",
|
|
350
447
|
tone: "teal"
|
|
351
|
-
}),
|
|
448
|
+
}), X.length === 0 ? /* @__PURE__ */ C("div", {
|
|
352
449
|
className: "flex h-[240px] items-center justify-center text-sm text-text-muted",
|
|
353
450
|
children: "No dated activity yet"
|
|
354
|
-
}) : /* @__PURE__ */ C(
|
|
451
|
+
}) : /* @__PURE__ */ C(l, {
|
|
355
452
|
width: "100%",
|
|
356
453
|
height: 280,
|
|
357
|
-
children: /* @__PURE__ */ w(
|
|
358
|
-
data:
|
|
454
|
+
children: /* @__PURE__ */ w(me, {
|
|
455
|
+
data: X,
|
|
359
456
|
margin: {
|
|
360
457
|
top: 8,
|
|
361
458
|
right: 12,
|
|
@@ -394,32 +491,32 @@ function L() {
|
|
|
394
491
|
stopOpacity: 0
|
|
395
492
|
})]
|
|
396
493
|
})] }),
|
|
397
|
-
/* @__PURE__ */ C(
|
|
494
|
+
/* @__PURE__ */ C(d, {
|
|
398
495
|
strokeDasharray: "3 3",
|
|
399
496
|
stroke: "var(--color-border-seam)",
|
|
400
497
|
vertical: !1
|
|
401
498
|
}),
|
|
402
|
-
/* @__PURE__ */ C(
|
|
499
|
+
/* @__PURE__ */ C(p, {
|
|
403
500
|
dataKey: "label",
|
|
404
|
-
tick:
|
|
501
|
+
tick: A,
|
|
405
502
|
axisLine: { stroke: "var(--color-border-seam)" },
|
|
406
503
|
tickLine: !1
|
|
407
504
|
}),
|
|
408
|
-
/* @__PURE__ */ C(
|
|
505
|
+
/* @__PURE__ */ C(m, {
|
|
409
506
|
allowDecimals: !1,
|
|
410
|
-
tick:
|
|
507
|
+
tick: A,
|
|
411
508
|
axisLine: !1,
|
|
412
509
|
tickLine: !1
|
|
413
510
|
}),
|
|
414
|
-
/* @__PURE__ */ C(l, {
|
|
415
|
-
contentStyle: A,
|
|
416
|
-
labelStyle: j
|
|
417
|
-
}),
|
|
418
511
|
/* @__PURE__ */ C(c, {
|
|
512
|
+
contentStyle: O,
|
|
513
|
+
labelStyle: k
|
|
514
|
+
}),
|
|
515
|
+
/* @__PURE__ */ C(s, {
|
|
419
516
|
iconType: "circle",
|
|
420
517
|
wrapperStyle: { fontSize: 12 }
|
|
421
518
|
}),
|
|
422
|
-
/* @__PURE__ */ C(
|
|
519
|
+
/* @__PURE__ */ C(f, {
|
|
423
520
|
type: "monotone",
|
|
424
521
|
dataKey: "submissions",
|
|
425
522
|
name: "Submissions",
|
|
@@ -427,7 +524,7 @@ function L() {
|
|
|
427
524
|
strokeWidth: 2,
|
|
428
525
|
fill: "url(#tec-grad-submissions)"
|
|
429
526
|
}),
|
|
430
|
-
/* @__PURE__ */ C(
|
|
527
|
+
/* @__PURE__ */ C(f, {
|
|
431
528
|
type: "monotone",
|
|
432
529
|
dataKey: "enrollments",
|
|
433
530
|
name: "Enrollments",
|
|
@@ -453,7 +550,7 @@ function L() {
|
|
|
453
550
|
}) : /* @__PURE__ */ w("div", {
|
|
454
551
|
className: "space-y-8",
|
|
455
552
|
children: [/* @__PURE__ */ C(o, {
|
|
456
|
-
icon: /* @__PURE__ */ C(
|
|
553
|
+
icon: /* @__PURE__ */ C(ge, { size: 26 }),
|
|
457
554
|
title: "Sign in to view your analytics",
|
|
458
555
|
description: "Your personal learning metrics appear here once you're signed in."
|
|
459
556
|
}), $]
|
|
@@ -461,6 +558,6 @@ function L() {
|
|
|
461
558
|
});
|
|
462
559
|
}
|
|
463
560
|
//#endregion
|
|
464
|
-
export {
|
|
561
|
+
export { P as AnalyticsAnalyticsPagePage };
|
|
465
562
|
|
|
466
563
|
//# sourceMappingURL=AnalyticsAnalyticsPagePage.js.map
|