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