@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.
@@ -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 s } from "../components/StateViews.js";
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 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";
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 ye = [
27
+ var Se = [
28
28
  "ENROLLED",
29
29
  "IN_PROGRESS",
30
30
  "COMPLETED",
31
31
  "DROPPED"
32
- ], be = {
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
- }, D = [
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
- ], O = {
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
- }, k = {
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
- }, A = {
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
- }, j = { color: "var(--color-text-secondary)" }, M = {
64
+ }, k = { color: "var(--color-text-secondary)" }, A = {
65
65
  fill: "var(--color-text-muted)",
66
66
  fontSize: 12
67
67
  };
68
- function N(e) {
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 P = {
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 F({ icon: e, title: t, subtitle: r, tone: i }) {
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", P[i]),
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 I({ title: e, subtitle: t, icon: n, tone: r = "teal", isEmpty: i, emptyLabel: a, children: o }) {
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(F, {
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(u, {
118
+ }) : /* @__PURE__ */ C(l, {
119
119
  width: "100%",
120
120
  height: 260,
121
121
  children: o
122
122
  })]
123
123
  });
124
124
  }
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.items ?? [], 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(() => {
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");
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: U.length ? Math.round(n.length / U.length * 100) : 0
221
+ acceptanceRate: W.length ? Math.round(n.length / W.length * 100) : 0
133
222
  };
134
- }, [H, U]), q = g(() => ye.map((e) => ({
223
+ }, [U, W]), J = h(() => Se.map((e) => ({
135
224
  name: a(e),
136
- value: H.filter((t) => t.status === e).length,
137
- color: be[e]
138
- })).filter((e) => e.value > 0), [H]), J = g(() => D.map((e) => ({
139
- label: O[e],
140
- count: U.filter((t) => t.verdict === e).length,
141
- color: k[e]
142
- })).filter((e) => e.count > 0), [U]), Y = g(() => {
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 } = N(t), a = e.get(r) ?? {
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 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);
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: [
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: we,
167
- icon: me,
255
+ value: Ie,
256
+ icon: _e,
168
257
  tone: "blue"
169
258
  }),
170
259
  /* @__PURE__ */ C(i, {
171
260
  label: "Published problems",
172
- value: Te,
173
- icon: x,
261
+ value: Le,
262
+ icon: b,
174
263
  tone: "indigo"
175
264
  }),
176
265
  /* @__PURE__ */ C(i, {
177
266
  label: "Hackathons",
178
- value: Ee,
179
- icon: _e,
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(S, { size: 16 }), " My Learning"]
281
+ children: [/* @__PURE__ */ C(x, { size: 16 }), " My Learning"]
193
282
  }),
194
- children: L ? Q ? /* @__PURE__ */ w("div", {
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(s, {
288
+ }), /* @__PURE__ */ C(ne, {
200
289
  count: 2,
201
290
  height: "h-72"
202
291
  })]
203
- }) : Z && !X ? /* @__PURE__ */ C(ee, {
292
+ }) : Q && !Z ? /* @__PURE__ */ C(ee, {
204
293
  title: "Couldn't load your analytics",
205
- error: Z
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: H.length,
215
- icon: b,
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: K.coursesCompleted,
221
- icon: S,
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: `${K.avgProgress}%`,
227
- icon: ge,
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: K.problemsSolved,
233
- icon: x,
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: `${K.acceptanceRate}%`,
239
- icon: he,
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: W.length,
245
- icon: ve,
341
+ value: G.length,
342
+ icon: xe,
246
343
  tone: "blue"
247
344
  }),
248
345
  /* @__PURE__ */ C(i, {
249
346
  label: "Certificates",
250
- value: G.length,
251
- icon: v,
347
+ value: K.length,
348
+ icon: he,
252
349
  tone: "amber"
253
350
  })
254
351
  ]
255
352
  }),
256
- X ? /* @__PURE__ */ w("div", {
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(I, {
357
+ children: [/* @__PURE__ */ C(N, {
261
358
  title: "Enrollments by status",
262
359
  subtitle: "How your courses are progressing",
263
- icon: b,
360
+ icon: v,
264
361
  tone: "blue",
265
- isEmpty: q.length === 0,
362
+ isEmpty: J.length === 0,
266
363
  emptyLabel: "No enrollments yet",
267
- children: /* @__PURE__ */ w(fe, { children: [
268
- /* @__PURE__ */ C(le, {
269
- data: q,
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: q.map((e) => /* @__PURE__ */ C(d, { fill: e.color }, e.name))
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(I, {
385
+ }), /* @__PURE__ */ C(N, {
289
386
  title: "Submissions by verdict",
290
387
  subtitle: "Outcomes across your attempts",
291
- icon: x,
388
+ icon: b,
292
389
  tone: "purple",
293
- isEmpty: J.length === 0,
390
+ isEmpty: Y.length === 0,
294
391
  emptyLabel: "No submissions yet",
295
- children: /* @__PURE__ */ w(de, {
296
- data: J,
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(f, {
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(m, {
406
+ /* @__PURE__ */ C(p, {
310
407
  dataKey: "label",
311
- tick: M,
408
+ tick: A,
312
409
  axisLine: { stroke: "var(--color-border-seam)" },
313
410
  tickLine: !1
314
411
  }),
315
- /* @__PURE__ */ C(h, {
412
+ /* @__PURE__ */ C(m, {
316
413
  allowDecimals: !1,
317
- tick: M,
414
+ tick: A,
318
415
  axisLine: !1,
319
416
  tickLine: !1
320
417
  }),
321
- /* @__PURE__ */ C(l, {
322
- contentStyle: A,
323
- labelStyle: j,
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(ue, {
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: J.map((e) => /* @__PURE__ */ C(d, { fill: e.color }, e.label))
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(F, {
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
- }), Y.length === 0 ? /* @__PURE__ */ C("div", {
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(u, {
451
+ }) : /* @__PURE__ */ C(l, {
355
452
  width: "100%",
356
453
  height: 280,
357
- children: /* @__PURE__ */ w(pe, {
358
- data: Y,
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(f, {
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(m, {
499
+ /* @__PURE__ */ C(p, {
403
500
  dataKey: "label",
404
- tick: M,
501
+ tick: A,
405
502
  axisLine: { stroke: "var(--color-border-seam)" },
406
503
  tickLine: !1
407
504
  }),
408
- /* @__PURE__ */ C(h, {
505
+ /* @__PURE__ */ C(m, {
409
506
  allowDecimals: !1,
410
- tick: M,
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(p, {
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(p, {
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(y, { size: 26 }),
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 { L as AnalyticsAnalyticsPagePage };
561
+ export { P as AnalyticsAnalyticsPagePage };
465
562
 
466
563
  //# sourceMappingURL=AnalyticsAnalyticsPagePage.js.map