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