@burdenoff/microfe-technospam 2026.704.2 → 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/api/technospamApi.js +233 -150
- package/dist/technospam/api/technospamApi.js.map +1 -1
- package/dist/technospam/components/LoadMore.js +18 -2
- package/dist/technospam/components/LoadMore.js.map +1 -0
- 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 +748 -352
- 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 +89 -93
- package/dist/technospam/pages/ApplicationsProblemsPagePage.js.map +1 -1
- package/dist/technospam/pages/CoursesCourseDetailsPagePage.js +295 -141
- package/dist/technospam/pages/CoursesCourseDetailsPagePage.js.map +1 -1
- package/dist/technospam/pages/CoursesCoursesPagePage.js +86 -86
- package/dist/technospam/pages/CoursesCoursesPagePage.js.map +1 -1
- package/dist/technospam/pages/CoursesMyLearningPagePage.js +122 -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 +89 -73
- package/dist/technospam/pages/HackathonsHackathonsPagePage.js.map +1 -1
- package/dist/technospam/pages/MentorshipMentorProfilePagePage.js +171 -115
- package/dist/technospam/pages/MentorshipMentorProfilePagePage.js.map +1 -1
- package/dist/technospam/pages/MentorshipMentorsPagePage.js +214 -151
- package/dist/technospam/pages/MentorshipMentorsPagePage.js.map +1 -1
- package/dist/technospam/pages/MentorshipSessionsPagePage.js +241 -116
- package/dist/technospam/pages/MentorshipSessionsPagePage.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
import { useTechnoSpam as e, useTechnoSpamNavigate as t } from "../providers/TechnoSpamProvider.js";
|
|
2
2
|
import { PageLayout as n } from "../components/PageLayout.js";
|
|
3
3
|
import { StatCard as r } from "../components/StatCard.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { MediaCover as i, topicIcon as a } from "../components/MediaCover.js";
|
|
5
|
+
import { formatDate as o, formatDateTime as s, formatMoney as c } from "../utils/format.js";
|
|
6
|
+
import { StatusBadge as l } from "../components/StatusBadge.js";
|
|
7
|
+
import { EmptyView as u, ErrorView as d, LoadingRows as f } from "../components/StateViews.js";
|
|
7
8
|
import "../components/index.js";
|
|
8
|
-
import { useCertificatesQuery as
|
|
9
|
-
import { useMemo as
|
|
10
|
-
import { ArrowRight as
|
|
11
|
-
import { jsx as
|
|
12
|
-
import { Button as
|
|
9
|
+
import { useCertificatesQuery as p, useCoursesQuery as m, useEnrollmentsQuery as h, useHackathonsQuery as g, useSessionsQuery as _, useSubmissionsQuery as v } from "../api/technospamApi.js";
|
|
10
|
+
import { useMemo as y, useState as b } from "react";
|
|
11
|
+
import { ArrowRight as x, Award as S, BookOpen as C, Calendar as w, CalendarClock as T, CheckCircle2 as E, Clock as D, Code2 as O, GraduationCap as k, PlayCircle as A, Trophy as j, Users as M } from "lucide-react";
|
|
12
|
+
import { jsx as N, jsxs as P } from "react/jsx-runtime";
|
|
13
|
+
import { Button as F, GlassCard as I } from "@burdenoff/fe-libs/ui";
|
|
13
14
|
//#region src/technospam/pages/DashboardDashboardPagePage.tsx
|
|
14
|
-
function
|
|
15
|
-
return /* @__PURE__ */
|
|
15
|
+
function L({ title: e, actionLabel: t, onAction: n }) {
|
|
16
|
+
return /* @__PURE__ */ P("div", {
|
|
16
17
|
className: "mb-3 flex items-center justify-between",
|
|
17
|
-
children: [/* @__PURE__ */
|
|
18
|
+
children: [/* @__PURE__ */ N("h2", {
|
|
18
19
|
className: "text-base font-semibold text-text-primary",
|
|
19
20
|
children: e
|
|
20
|
-
}), t && n ? /* @__PURE__ */
|
|
21
|
+
}), t && n ? /* @__PURE__ */ P(F, {
|
|
21
22
|
variant: "ghost",
|
|
22
23
|
size: "sm",
|
|
23
24
|
className: "text-xs",
|
|
@@ -25,337 +26,369 @@ function M({ title: e, actionLabel: t, onAction: n }) {
|
|
|
25
26
|
children: [
|
|
26
27
|
t,
|
|
27
28
|
" ",
|
|
28
|
-
/* @__PURE__ */
|
|
29
|
+
/* @__PURE__ */ N(x, { size: 13 })
|
|
29
30
|
]
|
|
30
31
|
}) : null]
|
|
31
32
|
});
|
|
32
33
|
}
|
|
33
|
-
function
|
|
34
|
-
return /* @__PURE__ */
|
|
34
|
+
function R({ pct: e }) {
|
|
35
|
+
return /* @__PURE__ */ N("div", {
|
|
35
36
|
className: "h-1.5 w-full overflow-hidden rounded-full bg-bg-sunken",
|
|
36
|
-
children: /* @__PURE__ */
|
|
37
|
+
children: /* @__PURE__ */ N("div", {
|
|
37
38
|
className: "h-full rounded-full bg-accent-primary transition-all",
|
|
38
39
|
style: { width: `${Math.max(0, Math.min(100, e))}%` }
|
|
39
40
|
})
|
|
40
41
|
});
|
|
41
42
|
}
|
|
42
|
-
function
|
|
43
|
-
|
|
43
|
+
function z({ e, onOpen: t }) {
|
|
44
|
+
let n = e.course?.title ?? "Course";
|
|
45
|
+
return /* @__PURE__ */ P("button", {
|
|
44
46
|
type: "button",
|
|
45
47
|
onClick: t,
|
|
46
|
-
className: "group flex
|
|
47
|
-
children: [
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
48
|
+
className: "group flex flex-col overflow-hidden rounded-xl border border-border-seam bg-bg-surface text-left transition-all duration-200 hover:-translate-y-1 hover:shadow-lg focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--color-focus-ring)]",
|
|
49
|
+
children: [/* @__PURE__ */ P(i, {
|
|
50
|
+
seed: `${e.course?.topic ?? ""} ${n}`,
|
|
51
|
+
icon: a(e.course?.topic ?? n),
|
|
52
|
+
height: "h-20",
|
|
53
|
+
children: [e.course?.level ? /* @__PURE__ */ N(l, {
|
|
54
|
+
status: e.course.level,
|
|
55
|
+
kind: "level"
|
|
56
|
+
}) : /* @__PURE__ */ N("span", {}), /* @__PURE__ */ N("span", {
|
|
57
|
+
className: "flex h-7 w-7 items-center justify-center rounded-full bg-white/15 text-white backdrop-blur transition-transform duration-200 group-hover:scale-110",
|
|
58
|
+
children: /* @__PURE__ */ N(A, { size: 16 })
|
|
59
|
+
})]
|
|
60
|
+
}), /* @__PURE__ */ P("div", {
|
|
61
|
+
className: "flex flex-1 flex-col gap-2.5 p-3.5",
|
|
62
|
+
children: [/* @__PURE__ */ P("div", {
|
|
63
|
+
className: "flex items-start gap-2",
|
|
64
|
+
children: [/* @__PURE__ */ N("h3", {
|
|
65
|
+
className: "line-clamp-2 flex-1 text-sm font-semibold text-text-primary group-hover:text-accent-primary",
|
|
66
|
+
children: n
|
|
67
|
+
}), /* @__PURE__ */ N(l, { status: e.status })]
|
|
68
|
+
}), /* @__PURE__ */ P("div", {
|
|
69
|
+
className: "mt-auto flex items-center gap-2.5",
|
|
70
|
+
children: [/* @__PURE__ */ N("div", {
|
|
71
|
+
className: "flex-1",
|
|
72
|
+
children: /* @__PURE__ */ N(R, { pct: e.progressPct })
|
|
73
|
+
}), /* @__PURE__ */ P("span", {
|
|
74
|
+
className: "shrink-0 text-xs font-semibold text-text-secondary",
|
|
75
|
+
children: [e.progressPct, "%"]
|
|
69
76
|
})]
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
size: 18,
|
|
73
|
-
className: "shrink-0 text-text-muted transition-colors group-hover:text-accent-primary"
|
|
74
|
-
})
|
|
75
|
-
]
|
|
77
|
+
})]
|
|
78
|
+
})]
|
|
76
79
|
});
|
|
77
80
|
}
|
|
78
|
-
function
|
|
79
|
-
return /* @__PURE__ */
|
|
81
|
+
function B({ course: e, onOpen: t }) {
|
|
82
|
+
return /* @__PURE__ */ P("button", {
|
|
80
83
|
type: "button",
|
|
81
84
|
onClick: t,
|
|
82
|
-
className: "group flex w-full flex-col
|
|
83
|
-
children: [
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
85
|
+
className: "group flex w-full flex-col overflow-hidden rounded-xl border border-border-seam bg-bg-surface text-left transition-all duration-200 hover:-translate-y-1 hover:shadow-lg focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--color-focus-ring)]",
|
|
86
|
+
children: [/* @__PURE__ */ N(i, {
|
|
87
|
+
seed: `${e.topic ?? ""} ${e.title}`,
|
|
88
|
+
icon: a(e.topic ?? e.title),
|
|
89
|
+
height: "h-20",
|
|
90
|
+
children: /* @__PURE__ */ N(l, {
|
|
91
|
+
status: e.level,
|
|
92
|
+
kind: "level"
|
|
93
|
+
})
|
|
94
|
+
}), /* @__PURE__ */ P("div", {
|
|
95
|
+
className: "flex flex-1 flex-col gap-1.5 p-3.5",
|
|
96
|
+
children: [
|
|
97
|
+
/* @__PURE__ */ N("h3", {
|
|
98
|
+
className: "truncate text-sm font-semibold text-text-primary group-hover:text-accent-primary",
|
|
99
|
+
children: e.title
|
|
100
|
+
}),
|
|
101
|
+
e.summary ? /* @__PURE__ */ N("p", {
|
|
102
|
+
className: "line-clamp-2 text-xs text-text-secondary",
|
|
103
|
+
children: e.summary
|
|
104
|
+
}) : null,
|
|
105
|
+
e.topic ? /* @__PURE__ */ N("span", {
|
|
106
|
+
className: "mt-auto truncate pt-0.5 text-xs text-text-muted",
|
|
91
107
|
children: e.topic
|
|
92
|
-
}) : null
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
className: "truncate text-sm font-semibold text-text-primary group-hover:text-accent-primary",
|
|
96
|
-
children: e.title
|
|
97
|
-
}),
|
|
98
|
-
e.summary ? /* @__PURE__ */ O("p", {
|
|
99
|
-
className: "line-clamp-2 text-xs text-text-secondary",
|
|
100
|
-
children: e.summary
|
|
101
|
-
}) : null
|
|
102
|
-
]
|
|
108
|
+
}) : null
|
|
109
|
+
]
|
|
110
|
+
})]
|
|
103
111
|
});
|
|
104
112
|
}
|
|
105
|
-
function
|
|
106
|
-
return /* @__PURE__ */
|
|
107
|
-
className: "flex items-start gap-3 border-b border-border-seam py-3 last:border-0",
|
|
108
|
-
children: [/* @__PURE__ */
|
|
109
|
-
className: "mt-0.5 flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-accent-
|
|
110
|
-
children: /* @__PURE__ */
|
|
111
|
-
}), /* @__PURE__ */
|
|
113
|
+
function V({ s: e }) {
|
|
114
|
+
return /* @__PURE__ */ P("div", {
|
|
115
|
+
className: "-mx-2 flex items-start gap-3 rounded-lg border-b border-border-seam px-2 py-3 transition-colors last:border-0 hover:bg-bg-sunken",
|
|
116
|
+
children: [/* @__PURE__ */ N("span", {
|
|
117
|
+
className: "mt-0.5 flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-accent-teal/15 text-accent-teal ring-1 ring-accent-teal/20",
|
|
118
|
+
children: /* @__PURE__ */ N(T, { size: 16 })
|
|
119
|
+
}), /* @__PURE__ */ P("div", {
|
|
112
120
|
className: "min-w-0 flex-1",
|
|
113
121
|
children: [
|
|
114
|
-
/* @__PURE__ */
|
|
122
|
+
/* @__PURE__ */ P("div", {
|
|
115
123
|
className: "flex items-center gap-2",
|
|
116
|
-
children: [/* @__PURE__ */
|
|
124
|
+
children: [/* @__PURE__ */ N("span", {
|
|
117
125
|
className: "truncate text-sm font-medium text-text-primary",
|
|
118
126
|
children: e.topic
|
|
119
|
-
}), /* @__PURE__ */
|
|
127
|
+
}), /* @__PURE__ */ N(l, { status: e.status })]
|
|
120
128
|
}),
|
|
121
|
-
e.mentor?.headline ? /* @__PURE__ */
|
|
129
|
+
e.mentor?.headline ? /* @__PURE__ */ N("div", {
|
|
122
130
|
className: "truncate text-xs text-text-muted",
|
|
123
131
|
children: e.mentor.headline
|
|
124
132
|
}) : null,
|
|
125
|
-
/* @__PURE__ */
|
|
126
|
-
className: "mt-0.5 text-xs text-text-secondary",
|
|
127
|
-
children:
|
|
133
|
+
/* @__PURE__ */ P("div", {
|
|
134
|
+
className: "mt-0.5 flex items-center gap-1.5 text-xs text-text-secondary",
|
|
135
|
+
children: [/* @__PURE__ */ N(D, {
|
|
136
|
+
size: 12,
|
|
137
|
+
className: "text-text-muted"
|
|
138
|
+
}), s(e.scheduledAt)]
|
|
128
139
|
})
|
|
129
140
|
]
|
|
130
141
|
})]
|
|
131
142
|
});
|
|
132
143
|
}
|
|
133
|
-
function
|
|
134
|
-
return /* @__PURE__ */
|
|
144
|
+
function H({ h: e, onOpen: t }) {
|
|
145
|
+
return /* @__PURE__ */ P("button", {
|
|
135
146
|
type: "button",
|
|
136
147
|
onClick: t,
|
|
137
|
-
className: "group
|
|
138
|
-
children: [/* @__PURE__ */
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
148
|
+
className: "group block w-full overflow-hidden rounded-xl border border-border-seam text-left transition-all duration-200 hover:-translate-y-1 hover:shadow-lg focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--color-focus-ring)]",
|
|
149
|
+
children: [/* @__PURE__ */ P(i, {
|
|
150
|
+
seed: `${e.theme ?? ""} ${e.title}`,
|
|
151
|
+
icon: j,
|
|
152
|
+
height: "h-24",
|
|
153
|
+
children: [/* @__PURE__ */ P("div", {
|
|
154
|
+
className: "min-w-0",
|
|
155
|
+
children: [/* @__PURE__ */ P("div", {
|
|
156
|
+
className: "flex items-center gap-1.5 text-[11px] font-semibold uppercase tracking-wide text-white/80",
|
|
157
|
+
children: [/* @__PURE__ */ N(j, { size: 12 }), " Open hackathon"]
|
|
158
|
+
}), /* @__PURE__ */ N("h3", {
|
|
159
|
+
className: "mt-0.5 truncate text-sm font-semibold text-white drop-shadow-sm",
|
|
160
|
+
children: e.title
|
|
161
|
+
})]
|
|
162
|
+
}), e.prizePool > 0 ? /* @__PURE__ */ N("span", {
|
|
163
|
+
className: "shrink-0 rounded-full bg-white/20 px-2.5 py-1 text-xs font-semibold text-white backdrop-blur",
|
|
164
|
+
children: c(e.prizePool, e.currency)
|
|
146
165
|
}) : null]
|
|
147
|
-
}), /* @__PURE__ */
|
|
148
|
-
className: "flex items-center gap-
|
|
149
|
-
children: [/* @__PURE__ */
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
166
|
+
}), /* @__PURE__ */ P("div", {
|
|
167
|
+
className: "flex items-center justify-between gap-2 bg-bg-surface px-3.5 py-2.5",
|
|
168
|
+
children: [/* @__PURE__ */ P("span", {
|
|
169
|
+
className: "flex items-center gap-1.5 text-xs text-text-muted",
|
|
170
|
+
children: [
|
|
171
|
+
/* @__PURE__ */ N(w, { size: 12 }),
|
|
172
|
+
o(e.startAt),
|
|
173
|
+
" – ",
|
|
174
|
+
o(e.endAt)
|
|
175
|
+
]
|
|
176
|
+
}), /* @__PURE__ */ P("span", {
|
|
177
|
+
className: "flex items-center gap-1 text-xs font-medium text-accent-primary opacity-0 transition-opacity group-hover:opacity-100",
|
|
178
|
+
children: ["Register ", /* @__PURE__ */ N(x, { size: 12 })]
|
|
179
|
+
})]
|
|
154
180
|
})]
|
|
155
181
|
});
|
|
156
182
|
}
|
|
157
|
-
function
|
|
158
|
-
let
|
|
159
|
-
let e = new Set(
|
|
160
|
-
return
|
|
161
|
-
}, [
|
|
162
|
-
return /* @__PURE__ */
|
|
183
|
+
function U() {
|
|
184
|
+
let i = t(), { currentUser: a } = e(), s = a?.id, c = h(s ? { learnerId: s } : {}), l = v(s ? { learnerId: s } : {}), x = _(s ? { menteeId: s } : {}), w = p(s ? { learnerId: s } : {}), D = m({ status: "PUBLISHED" }), A = g({ status: "REGISTRATION_OPEN" }), R = c.data?.tecListEnrollments.items ?? [], U = l.data?.tecListSubmissions.items ?? [], W = x.data?.tecListSessions ?? [], G = w.data?.tecListCertificates ?? [], K = D.data?.tecListCourses.items ?? [], q = A.data?.tecListHackathons.items ?? [], ee = a?.firstName || a?.name || a?.email?.split("@")[0] || "there", J = y(() => R.filter((e) => e.status === "IN_PROGRESS" || e.status === "ENROLLED"), [R]), Y = y(() => [...J].sort((e, t) => new Date(t.lastActiveAt ?? t.startedAt).getTime() - new Date(e.lastActiveAt ?? e.startedAt).getTime()).slice(0, 3), [J]), te = y(() => new Set(U.filter((e) => e.verdict === "ACCEPTED").map((e) => e.problemId)).size, [U]), [X] = b(() => Date.now()), Z = y(() => [...W].filter((e) => (e.status === "CONFIRMED" || e.status === "REQUESTED") && new Date(e.scheduledAt).getTime() > X).sort((e, t) => new Date(e.scheduledAt).getTime() - new Date(t.scheduledAt).getTime()), [W, X]), Q = y(() => {
|
|
185
|
+
let e = new Set(R.map((e) => e.courseId));
|
|
186
|
+
return K.filter((t) => !e.has(t.id)).slice(0, 4);
|
|
187
|
+
}, [K, R]), $ = q.slice(0, 4);
|
|
188
|
+
return /* @__PURE__ */ P(n, {
|
|
163
189
|
hero: !0,
|
|
164
|
-
title: `Welcome back, ${
|
|
190
|
+
title: `Welcome back, ${ee}`,
|
|
165
191
|
description: "Your learning hub — pick up where you left off, keep your skills sharp, and jump into what's next.",
|
|
166
|
-
actions: /* @__PURE__ */
|
|
192
|
+
actions: /* @__PURE__ */ P(F, {
|
|
167
193
|
variant: "outline",
|
|
168
|
-
onClick: () =>
|
|
169
|
-
children: [/* @__PURE__ */
|
|
194
|
+
onClick: () => i("/courses/my-learning-page"),
|
|
195
|
+
children: [/* @__PURE__ */ N(k, { size: 16 }), " My Learning"]
|
|
170
196
|
}),
|
|
171
197
|
children: [
|
|
172
|
-
/* @__PURE__ */
|
|
198
|
+
/* @__PURE__ */ P("div", {
|
|
173
199
|
className: "mb-5 grid grid-cols-2 gap-3 lg:grid-cols-4",
|
|
174
200
|
children: [
|
|
175
|
-
/* @__PURE__ */
|
|
201
|
+
/* @__PURE__ */ N(r, {
|
|
176
202
|
label: "Courses in progress",
|
|
177
|
-
value:
|
|
178
|
-
icon:
|
|
203
|
+
value: J.length,
|
|
204
|
+
icon: C,
|
|
205
|
+
tone: "blue"
|
|
179
206
|
}),
|
|
180
|
-
/* @__PURE__ */
|
|
207
|
+
/* @__PURE__ */ N(r, {
|
|
181
208
|
label: "Problems solved",
|
|
182
|
-
value:
|
|
183
|
-
icon:
|
|
209
|
+
value: te,
|
|
210
|
+
icon: O,
|
|
211
|
+
tone: "green"
|
|
184
212
|
}),
|
|
185
|
-
/* @__PURE__ */
|
|
213
|
+
/* @__PURE__ */ N(r, {
|
|
186
214
|
label: "Upcoming sessions",
|
|
187
215
|
value: Z.length,
|
|
188
|
-
icon:
|
|
216
|
+
icon: T,
|
|
217
|
+
tone: "amber"
|
|
189
218
|
}),
|
|
190
|
-
/* @__PURE__ */
|
|
219
|
+
/* @__PURE__ */ N(r, {
|
|
191
220
|
label: "Certificates",
|
|
192
|
-
value:
|
|
193
|
-
icon:
|
|
221
|
+
value: G.length,
|
|
222
|
+
icon: S,
|
|
223
|
+
tone: "purple"
|
|
194
224
|
})
|
|
195
225
|
]
|
|
196
226
|
}),
|
|
197
|
-
/* @__PURE__ */
|
|
227
|
+
/* @__PURE__ */ P("div", {
|
|
198
228
|
className: "mb-6 grid grid-cols-2 gap-3 sm:grid-cols-4",
|
|
199
229
|
children: [
|
|
200
|
-
/* @__PURE__ */
|
|
230
|
+
/* @__PURE__ */ P(F, {
|
|
201
231
|
variant: "outline",
|
|
202
232
|
className: "h-auto flex-col gap-2 py-4",
|
|
203
|
-
onClick: () =>
|
|
204
|
-
children: [/* @__PURE__ */
|
|
233
|
+
onClick: () => i("/courses/courses-page"),
|
|
234
|
+
children: [/* @__PURE__ */ N(C, { size: 18 }), /* @__PURE__ */ N("span", {
|
|
205
235
|
className: "text-xs",
|
|
206
236
|
children: "Browse courses"
|
|
207
237
|
})]
|
|
208
238
|
}),
|
|
209
|
-
/* @__PURE__ */
|
|
239
|
+
/* @__PURE__ */ P(F, {
|
|
210
240
|
variant: "outline",
|
|
211
241
|
className: "h-auto flex-col gap-2 py-4",
|
|
212
|
-
onClick: () =>
|
|
213
|
-
children: [/* @__PURE__ */ O
|
|
242
|
+
onClick: () => i("/applications/problems-page"),
|
|
243
|
+
children: [/* @__PURE__ */ N(O, { size: 18 }), /* @__PURE__ */ N("span", {
|
|
214
244
|
className: "text-xs",
|
|
215
245
|
children: "Practice problems"
|
|
216
246
|
})]
|
|
217
247
|
}),
|
|
218
|
-
/* @__PURE__ */
|
|
248
|
+
/* @__PURE__ */ P(F, {
|
|
219
249
|
variant: "outline",
|
|
220
250
|
className: "h-auto flex-col gap-2 py-4",
|
|
221
|
-
onClick: () =>
|
|
222
|
-
children: [/* @__PURE__ */
|
|
251
|
+
onClick: () => i("/mentorship/mentors-page"),
|
|
252
|
+
children: [/* @__PURE__ */ N(M, { size: 18 }), /* @__PURE__ */ N("span", {
|
|
223
253
|
className: "text-xs",
|
|
224
254
|
children: "Find a mentor"
|
|
225
255
|
})]
|
|
226
256
|
}),
|
|
227
|
-
/* @__PURE__ */
|
|
257
|
+
/* @__PURE__ */ P(F, {
|
|
228
258
|
variant: "outline",
|
|
229
259
|
className: "h-auto flex-col gap-2 py-4",
|
|
230
|
-
onClick: () =>
|
|
231
|
-
children: [/* @__PURE__ */
|
|
260
|
+
onClick: () => i("/hackathons/hackathons-page"),
|
|
261
|
+
children: [/* @__PURE__ */ N(j, { size: 18 }), /* @__PURE__ */ N("span", {
|
|
232
262
|
className: "text-xs",
|
|
233
263
|
children: "Hackathons"
|
|
234
264
|
})]
|
|
235
265
|
})
|
|
236
266
|
]
|
|
237
267
|
}),
|
|
238
|
-
/* @__PURE__ */
|
|
268
|
+
/* @__PURE__ */ P("div", {
|
|
239
269
|
className: "grid grid-cols-1 gap-6 lg:grid-cols-3",
|
|
240
|
-
children: [/* @__PURE__ */
|
|
270
|
+
children: [/* @__PURE__ */ P("div", {
|
|
241
271
|
className: "space-y-6 lg:col-span-2",
|
|
242
|
-
children: [/* @__PURE__ */
|
|
272
|
+
children: [/* @__PURE__ */ P(I, {
|
|
243
273
|
className: "p-5",
|
|
244
|
-
children: [/* @__PURE__ */
|
|
274
|
+
children: [/* @__PURE__ */ N(L, {
|
|
245
275
|
title: "Continue learning",
|
|
246
276
|
actionLabel: "My Learning",
|
|
247
|
-
onAction: () =>
|
|
248
|
-
}),
|
|
277
|
+
onAction: () => i("/courses/my-learning-page")
|
|
278
|
+
}), c.loading && !R.length ? /* @__PURE__ */ N(f, {
|
|
249
279
|
count: 2,
|
|
250
280
|
height: "h-16"
|
|
251
|
-
}) :
|
|
281
|
+
}) : c.error ? /* @__PURE__ */ N(d, {
|
|
252
282
|
title: "Couldn't load your courses",
|
|
253
|
-
error:
|
|
254
|
-
}) :
|
|
255
|
-
icon: /* @__PURE__ */
|
|
283
|
+
error: c.error
|
|
284
|
+
}) : Y.length === 0 ? /* @__PURE__ */ N(u, {
|
|
285
|
+
icon: /* @__PURE__ */ N(C, { size: 24 }),
|
|
256
286
|
title: "No courses in progress",
|
|
257
287
|
description: "Enroll in a course to start building skill by doing — your active courses show up here.",
|
|
258
|
-
action: /* @__PURE__ */
|
|
259
|
-
onClick: () =>
|
|
288
|
+
action: /* @__PURE__ */ N(F, {
|
|
289
|
+
onClick: () => i("/courses/courses-page"),
|
|
260
290
|
children: "Browse courses"
|
|
261
291
|
})
|
|
262
|
-
}) : /* @__PURE__ */
|
|
263
|
-
className: "
|
|
264
|
-
children:
|
|
292
|
+
}) : /* @__PURE__ */ N("div", {
|
|
293
|
+
className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",
|
|
294
|
+
children: Y.map((e) => /* @__PURE__ */ N(z, {
|
|
265
295
|
e,
|
|
266
|
-
onOpen: () =>
|
|
296
|
+
onOpen: () => i(`/courses/course-details-page?id=${e.courseId}`)
|
|
267
297
|
}, e.id))
|
|
268
298
|
})]
|
|
269
|
-
}), /* @__PURE__ */
|
|
299
|
+
}), /* @__PURE__ */ P(I, {
|
|
270
300
|
className: "p-5",
|
|
271
|
-
children: [/* @__PURE__ */
|
|
301
|
+
children: [/* @__PURE__ */ N(L, {
|
|
272
302
|
title: "Recommended for you",
|
|
273
303
|
actionLabel: "View all",
|
|
274
|
-
onAction: () =>
|
|
275
|
-
}),
|
|
304
|
+
onAction: () => i("/courses/courses-page")
|
|
305
|
+
}), D.loading && !K.length ? /* @__PURE__ */ N(f, {
|
|
276
306
|
count: 2,
|
|
277
307
|
height: "h-20"
|
|
278
|
-
}) :
|
|
308
|
+
}) : D.error ? /* @__PURE__ */ N(d, {
|
|
279
309
|
title: "Couldn't load courses",
|
|
280
|
-
error:
|
|
281
|
-
}) : Q.length === 0 ? /* @__PURE__ */
|
|
282
|
-
icon: /* @__PURE__ */
|
|
310
|
+
error: D.error
|
|
311
|
+
}) : Q.length === 0 ? /* @__PURE__ */ N(u, {
|
|
312
|
+
icon: /* @__PURE__ */ N(k, { size: 24 }),
|
|
283
313
|
title: "No courses to recommend yet",
|
|
284
314
|
description: "New courses are on the way. TechnoSpam is pre-launch — check back soon."
|
|
285
|
-
}) : /* @__PURE__ */
|
|
315
|
+
}) : /* @__PURE__ */ N("div", {
|
|
286
316
|
className: "grid grid-cols-1 gap-3 sm:grid-cols-2",
|
|
287
|
-
children: Q.map((e) => /* @__PURE__ */
|
|
317
|
+
children: Q.map((e) => /* @__PURE__ */ N(B, {
|
|
288
318
|
course: e,
|
|
289
|
-
onOpen: () =>
|
|
319
|
+
onOpen: () => i(`/courses/course-details-page?id=${e.id}`)
|
|
290
320
|
}, e.id))
|
|
291
321
|
})]
|
|
292
322
|
})]
|
|
293
|
-
}), /* @__PURE__ */
|
|
323
|
+
}), /* @__PURE__ */ P("div", {
|
|
294
324
|
className: "space-y-6",
|
|
295
325
|
children: [
|
|
296
|
-
/* @__PURE__ */
|
|
326
|
+
/* @__PURE__ */ P(I, {
|
|
297
327
|
className: "p-5",
|
|
298
|
-
children: [/* @__PURE__ */
|
|
328
|
+
children: [/* @__PURE__ */ N(L, {
|
|
299
329
|
title: "Upcoming sessions",
|
|
300
330
|
actionLabel: "All sessions",
|
|
301
|
-
onAction: () =>
|
|
302
|
-
}),
|
|
331
|
+
onAction: () => i("/mentorship/sessions-page")
|
|
332
|
+
}), x.loading && !W.length ? /* @__PURE__ */ N(f, {
|
|
303
333
|
count: 2,
|
|
304
334
|
height: "h-14"
|
|
305
|
-
}) :
|
|
335
|
+
}) : x.error ? /* @__PURE__ */ N(d, {
|
|
306
336
|
title: "Couldn't load sessions",
|
|
307
|
-
error:
|
|
308
|
-
}) : Z.length === 0 ? /* @__PURE__ */
|
|
309
|
-
icon: /* @__PURE__ */
|
|
337
|
+
error: x.error
|
|
338
|
+
}) : Z.length === 0 ? /* @__PURE__ */ N(u, {
|
|
339
|
+
icon: /* @__PURE__ */ N(T, { size: 24 }),
|
|
310
340
|
title: "No sessions booked",
|
|
311
341
|
description: "Book time with a mentor to get unblocked — your upcoming sessions appear here.",
|
|
312
|
-
action: /* @__PURE__ */
|
|
342
|
+
action: /* @__PURE__ */ N(F, {
|
|
313
343
|
variant: "outline",
|
|
314
|
-
onClick: () =>
|
|
344
|
+
onClick: () => i("/mentorship/mentors-page"),
|
|
315
345
|
children: "Find a mentor"
|
|
316
346
|
})
|
|
317
|
-
}) : /* @__PURE__ */
|
|
347
|
+
}) : /* @__PURE__ */ N("div", { children: Z.slice(0, 5).map((e) => /* @__PURE__ */ N(V, { s: e }, e.id)) })]
|
|
318
348
|
}),
|
|
319
|
-
/* @__PURE__ */
|
|
349
|
+
/* @__PURE__ */ P(I, {
|
|
320
350
|
className: "p-5",
|
|
321
|
-
children: [/* @__PURE__ */
|
|
351
|
+
children: [/* @__PURE__ */ N(L, {
|
|
322
352
|
title: "Open hackathons",
|
|
323
353
|
actionLabel: "View all",
|
|
324
|
-
onAction: () =>
|
|
325
|
-
}),
|
|
354
|
+
onAction: () => i("/hackathons/hackathons-page")
|
|
355
|
+
}), A.loading && !q.length ? /* @__PURE__ */ N(f, {
|
|
326
356
|
count: 2,
|
|
327
357
|
height: "h-14"
|
|
328
|
-
}) :
|
|
358
|
+
}) : A.error ? /* @__PURE__ */ N(d, {
|
|
329
359
|
title: "Couldn't load hackathons",
|
|
330
|
-
error:
|
|
331
|
-
}) : $.length === 0 ? /* @__PURE__ */
|
|
332
|
-
icon: /* @__PURE__ */
|
|
360
|
+
error: A.error
|
|
361
|
+
}) : $.length === 0 ? /* @__PURE__ */ N(u, {
|
|
362
|
+
icon: /* @__PURE__ */ N(j, { size: 24 }),
|
|
333
363
|
title: "No open hackathons",
|
|
334
364
|
description: "When registration opens for a hackathon, it will show up here to join."
|
|
335
|
-
}) : /* @__PURE__ */
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
365
|
+
}) : /* @__PURE__ */ N("div", {
|
|
366
|
+
className: "space-y-3",
|
|
367
|
+
children: $.map((e) => /* @__PURE__ */ N(H, {
|
|
368
|
+
h: e,
|
|
369
|
+
onOpen: () => i(`/hackathons/hackathon-details-page?id=${e.id}`)
|
|
370
|
+
}, e.id))
|
|
371
|
+
})]
|
|
339
372
|
}),
|
|
340
|
-
|
|
373
|
+
G.length > 0 ? /* @__PURE__ */ P(I, {
|
|
341
374
|
className: "p-5",
|
|
342
|
-
children: [/* @__PURE__ */
|
|
375
|
+
children: [/* @__PURE__ */ N(L, { title: "Latest certificate" }), /* @__PURE__ */ P("div", {
|
|
343
376
|
className: "flex items-center gap-3",
|
|
344
|
-
children: [/* @__PURE__ */
|
|
345
|
-
className: "flex h-11 w-11 shrink-0 items-center justify-center rounded-xl bg-accent-
|
|
346
|
-
children: /* @__PURE__ */
|
|
347
|
-
}), /* @__PURE__ */
|
|
377
|
+
children: [/* @__PURE__ */ N("span", {
|
|
378
|
+
className: "flex h-11 w-11 shrink-0 items-center justify-center rounded-xl bg-accent-primary/12 text-accent-teal",
|
|
379
|
+
children: /* @__PURE__ */ N(E, { size: 20 })
|
|
380
|
+
}), /* @__PURE__ */ P("div", {
|
|
348
381
|
className: "min-w-0",
|
|
349
|
-
children: [/* @__PURE__ */
|
|
382
|
+
children: [/* @__PURE__ */ N("div", {
|
|
350
383
|
className: "truncate text-sm font-medium text-text-primary",
|
|
351
|
-
children:
|
|
352
|
-
}), /* @__PURE__ */
|
|
384
|
+
children: G[0]?.course?.title ?? "Certificate"
|
|
385
|
+
}), /* @__PURE__ */ P("div", {
|
|
353
386
|
className: "text-xs text-text-muted",
|
|
354
387
|
children: [
|
|
355
388
|
"Score ",
|
|
356
|
-
|
|
389
|
+
G[0]?.score,
|
|
357
390
|
" · Issued ",
|
|
358
|
-
|
|
391
|
+
o(G[0]?.issuedAt)
|
|
359
392
|
]
|
|
360
393
|
})]
|
|
361
394
|
})]
|
|
@@ -368,6 +401,6 @@ function R() {
|
|
|
368
401
|
});
|
|
369
402
|
}
|
|
370
403
|
//#endregion
|
|
371
|
-
export {
|
|
404
|
+
export { U as DashboardDashboardPagePage };
|
|
372
405
|
|
|
373
406
|
//# sourceMappingURL=DashboardDashboardPagePage.js.map
|