@burdenoff/microfe-technospam 2026.1101.4 → 2026.1102.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +5 -3
- package/dist/technospam/TechnoSpamRoutes.d.ts.map +1 -1
- package/dist/technospam/TechnoSpamRoutes.js +91 -90
- package/dist/technospam/TechnoSpamRoutes.js.map +1 -1
- package/dist/technospam/api/technospamApi.d.ts +21 -7
- package/dist/technospam/api/technospamApi.d.ts.map +1 -1
- package/dist/technospam/api/technospamApi.js +317 -284
- package/dist/technospam/api/technospamApi.js.map +1 -1
- package/dist/technospam/components/CertificateVerifyLink.d.ts +11 -0
- package/dist/technospam/components/CertificateVerifyLink.d.ts.map +1 -0
- package/dist/technospam/components/CertificateVerifyLink.js +63 -0
- package/dist/technospam/components/CertificateVerifyLink.js.map +1 -0
- package/dist/technospam/components/index.d.ts +1 -0
- package/dist/technospam/components/index.d.ts.map +1 -1
- package/dist/technospam/components/index.js +1 -0
- package/dist/technospam/components/lesson/OfflineProgressSync.d.ts +9 -0
- package/dist/technospam/components/lesson/OfflineProgressSync.d.ts.map +1 -0
- package/dist/technospam/components/lesson/OfflineProgressSync.js +20 -0
- package/dist/technospam/components/lesson/OfflineProgressSync.js.map +1 -0
- package/dist/technospam/components/lesson/SaveCourseOffline.d.ts +17 -0
- package/dist/technospam/components/lesson/SaveCourseOffline.d.ts.map +1 -0
- package/dist/technospam/components/lesson/SaveCourseOffline.js +73 -0
- package/dist/technospam/components/lesson/SaveCourseOffline.js.map +1 -0
- package/dist/technospam/components/lesson/SavedCourseOutline.d.ts +17 -0
- package/dist/technospam/components/lesson/SavedCourseOutline.d.ts.map +1 -0
- package/dist/technospam/components/lesson/SavedCourseOutline.js +77 -0
- package/dist/technospam/components/lesson/SavedCourseOutline.js.map +1 -0
- package/dist/technospam/hooks/useOfflineLessons.d.ts +26 -0
- package/dist/technospam/hooks/useOfflineLessons.d.ts.map +1 -0
- package/dist/technospam/hooks/useOfflineLessons.js +70 -0
- package/dist/technospam/hooks/useOfflineLessons.js.map +1 -0
- package/dist/technospam/index.d.ts +2 -0
- package/dist/technospam/index.d.ts.map +1 -1
- package/dist/technospam/index.js +2 -0
- package/dist/technospam/lib/certificateVerify.d.ts +71 -0
- package/dist/technospam/lib/certificateVerify.d.ts.map +1 -0
- package/dist/technospam/lib/certificateVerify.js +55 -0
- package/dist/technospam/lib/certificateVerify.js.map +1 -0
- package/dist/technospam/lib/offlineLessons.d.ts +97 -0
- package/dist/technospam/lib/offlineLessons.d.ts.map +1 -0
- package/dist/technospam/lib/offlineLessons.js +168 -0
- package/dist/technospam/lib/offlineLessons.js.map +1 -0
- package/dist/technospam/pages/CoursesCourseDetailsPagePage.d.ts.map +1 -1
- package/dist/technospam/pages/CoursesCourseDetailsPagePage.js +241 -198
- package/dist/technospam/pages/CoursesCourseDetailsPagePage.js.map +1 -1
- package/dist/technospam/pages/CoursesLessonPlayerPagePage.d.ts.map +1 -1
- package/dist/technospam/pages/CoursesLessonPlayerPagePage.js +216 -138
- package/dist/technospam/pages/CoursesLessonPlayerPagePage.js.map +1 -1
- package/dist/technospam/pages/CoursesMyLearningPagePage.d.ts.map +1 -1
- package/dist/technospam/pages/CoursesMyLearningPagePage.js +104 -96
- package/dist/technospam/pages/CoursesMyLearningPagePage.js.map +1 -1
- package/dist/technospam/pages/public/CertificateVerifyPage.d.ts +4 -0
- package/dist/technospam/pages/public/CertificateVerifyPage.d.ts.map +1 -0
- package/dist/technospam/pages/public/CertificateVerifyPage.js +257 -0
- package/dist/technospam/pages/public/CertificateVerifyPage.js.map +1 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { useTechnoSpam as e, useTechnoSpamNavigate as t } from "./technospam/providers/TechnoSpamProvider.js";
|
|
2
2
|
import { useTechnoSpamAnalytics as n } from "./technospam/hooks/useTechnoSpamAnalytics.js";
|
|
3
3
|
import { useTr as r } from "./technospam/hooks/useTr.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { CERTIFICATE_VERIFY_BASE_PATH as i, CERTIFICATE_VERIFY_ROUTE_PATH as a, certificateVerifyLink as o, certificateVerifyPath as s } from "./technospam/lib/certificateVerify.js";
|
|
5
|
+
import { TechnoSpamRoot as c } from "./technospam/TechnoSpamRoot.js";
|
|
6
|
+
import { useSandboxAssistantTransport as l } from "./technospam/services/createSandboxAssistantTransport.js";
|
|
7
|
+
import { CertificateVerifyPage as u } from "./technospam/pages/public/CertificateVerifyPage.js";
|
|
6
8
|
import "./technospam/index.js";
|
|
7
|
-
export { i as
|
|
9
|
+
export { i as CERTIFICATE_VERIFY_BASE_PATH, a as CERTIFICATE_VERIFY_ROUTE_PATH, u as CertificateVerifyPage, c as TechnoSpamRoot, o as certificateVerifyLink, s as certificateVerifyPath, l as useSandboxAssistantTransport, e as useTechnoSpam, n as useTechnoSpamAnalytics, t as useTechnoSpamNavigate, r as useTr };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TechnoSpamRoutes.d.ts","sourceRoot":"","sources":["../../src/technospam/TechnoSpamRoutes.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TechnoSpamRoutes.d.ts","sourceRoot":"","sources":["../../src/technospam/TechnoSpamRoutes.tsx"],"names":[],"mappings":"AAwJA,wBAAgB,gBAAgB,gCAqK/B"}
|
|
@@ -2,226 +2,227 @@ import { useTechnoSpamPageView as e } from "./hooks/useTechnoSpamPageView.js";
|
|
|
2
2
|
import { EmptyView as t } from "./components/StateViews.js";
|
|
3
3
|
import { TechnoSpamErrorBoundary as n } from "./components/TechnoSpamErrorBoundary.js";
|
|
4
4
|
import "./components/index.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
5
|
+
import { OfflineProgressSync as r } from "./components/lesson/OfflineProgressSync.js";
|
|
6
|
+
import { DashboardDashboardPagePage as i } from "./pages/DashboardDashboardPagePage.js";
|
|
7
|
+
import { Suspense as a, lazy as o, useMemo as s } from "react";
|
|
8
|
+
import { Loader2 as c, ShieldAlert as l } from "lucide-react";
|
|
9
|
+
import { Navigate as u, Route as d, Routes as f, useLocation as p } from "react-router";
|
|
10
|
+
import { jsx as m, jsxs as h } from "react/jsx-runtime";
|
|
11
|
+
import { FeatureGate as g } from "@burdenoff/fe-libs/shared/feature-flags";
|
|
11
12
|
//#region src/technospam/TechnoSpamRoutes.tsx
|
|
12
|
-
var
|
|
13
|
-
function
|
|
14
|
-
return /* @__PURE__ */
|
|
13
|
+
var _ = o(() => import("./pages/DashboardDashboardPagePage.js").then((e) => ({ default: e.DashboardDashboardPagePage }))), v = o(() => import("./pages/CoursesCoursesPagePage.js").then((e) => ({ default: e.CoursesCoursesPagePage }))), y = o(() => import("./pages/CoursesCourseDetailsPagePage.js").then((e) => ({ default: e.CoursesCourseDetailsPagePage }))), b = o(() => import("./pages/CoursesLessonPlayerPagePage.js").then((e) => ({ default: e.CoursesLessonPlayerPagePage }))), x = o(() => import("./pages/CoursesMyLearningPagePage.js").then((e) => ({ default: e.CoursesMyLearningPagePage }))), S = o(() => import("./pages/ApplicationsProblemsPagePage.js").then((e) => ({ default: e.ApplicationsProblemsPagePage }))), C = o(() => import("./pages/ApplicationsProblemDetailsPagePage.js").then((e) => ({ default: e.ApplicationsProblemDetailsPagePage }))), w = o(() => import("./pages/MentorshipMentorsPagePage.js").then((e) => ({ default: e.MentorshipMentorsPagePage }))), T = o(() => import("./pages/MentorshipMentorProfilePagePage.js").then((e) => ({ default: e.MentorshipMentorProfilePagePage }))), E = o(() => import("./pages/MentorshipSessionsPagePage.js").then((e) => ({ default: e.MentorshipSessionsPagePage }))), D = o(() => import("./pages/HackathonsHackathonsPagePage.js").then((e) => ({ default: e.HackathonsHackathonsPagePage }))), O = o(() => import("./pages/HackathonsHackathonDetailsPagePage.js").then((e) => ({ default: e.HackathonsHackathonDetailsPagePage }))), k = o(() => import("./pages/AnalyticsAnalyticsPagePage.js").then((e) => ({ default: e.AnalyticsAnalyticsPagePage }))), A = o(() => import("./pages/AdminAdminDashboardPagePage.js").then((e) => ({ default: e.AdminAdminDashboardPagePage }))), j = o(() => import("./pages/StudyPlannerStudyPlannerPagePage.js").then((e) => ({ default: e.StudyPlannerStudyPlannerPagePage }))), M = o(() => import("./pages/ApplicationsPortfolioPagePage.js").then((e) => ({ default: e.ApplicationsPortfolioPagePage })));
|
|
14
|
+
function N() {
|
|
15
|
+
return /* @__PURE__ */ m("div", {
|
|
15
16
|
className: "flex h-full min-h-[40vh] items-center justify-center",
|
|
16
|
-
children: /* @__PURE__ */
|
|
17
|
+
children: /* @__PURE__ */ m(c, {
|
|
17
18
|
className: "animate-spin text-text-muted",
|
|
18
19
|
size: 28
|
|
19
20
|
})
|
|
20
21
|
});
|
|
21
22
|
}
|
|
22
|
-
function
|
|
23
|
-
return /* @__PURE__ */
|
|
23
|
+
function P() {
|
|
24
|
+
return /* @__PURE__ */ m("div", {
|
|
24
25
|
className: "flex h-full min-h-[40vh] items-center justify-center p-6",
|
|
25
|
-
children: /* @__PURE__ */
|
|
26
|
-
icon: /* @__PURE__ */
|
|
26
|
+
children: /* @__PURE__ */ m(t, {
|
|
27
|
+
icon: /* @__PURE__ */ m(l, { size: 28 }),
|
|
27
28
|
title: "Feature not available",
|
|
28
29
|
description: "This TechnoSpam feature is currently disabled for your workspace."
|
|
29
30
|
})
|
|
30
31
|
});
|
|
31
32
|
}
|
|
32
|
-
function
|
|
33
|
-
return /* @__PURE__ */
|
|
33
|
+
function F(e, t) {
|
|
34
|
+
return /* @__PURE__ */ m(g, {
|
|
34
35
|
flag: e,
|
|
35
36
|
defaultValue: !0,
|
|
36
|
-
fallback: /* @__PURE__ */
|
|
37
|
+
fallback: /* @__PURE__ */ m(P, {}),
|
|
37
38
|
children: t
|
|
38
39
|
});
|
|
39
40
|
}
|
|
40
|
-
function F() {
|
|
41
|
-
let { pathname: t } = f();
|
|
42
|
-
e(o(() => t.includes("/courses/lesson-player") ? "lesson-player" : t.includes("/courses/course-details") ? "course-details" : t.includes("/courses/my-learning") ? "my-learning" : t.includes("/courses") ? "courses" : t.includes("/applications/problem-details") ? "problem-details" : t.includes("/applications/portfolio") ? "portfolio" : t.includes("/applications") ? "problems" : t.includes("/study-planner") ? "study-planner" : t.includes("/mentorship/mentor-profile") ? "mentor-profile" : t.includes("/mentorship/sessions") ? "sessions" : t.includes("/mentorship") ? "mentors" : t.includes("/hackathons/hackathon-details") ? "hackathon-details" : t.includes("/hackathons") ? "hackathons" : t.includes("/analytics") ? "analytics" : t.includes("/admin") ? "admin" : "dashboard", [t]));
|
|
43
|
-
}
|
|
44
41
|
function I() {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
42
|
+
let { pathname: t } = p();
|
|
43
|
+
e(s(() => t.includes("/courses/lesson-player") ? "lesson-player" : t.includes("/courses/course-details") ? "course-details" : t.includes("/courses/my-learning") ? "my-learning" : t.includes("/courses") ? "courses" : t.includes("/applications/problem-details") ? "problem-details" : t.includes("/applications/portfolio") ? "portfolio" : t.includes("/applications") ? "problems" : t.includes("/study-planner") ? "study-planner" : t.includes("/mentorship/mentor-profile") ? "mentor-profile" : t.includes("/mentorship/sessions") ? "sessions" : t.includes("/mentorship") ? "mentors" : t.includes("/hackathons/hackathon-details") ? "hackathon-details" : t.includes("/hackathons") ? "hackathons" : t.includes("/analytics") ? "analytics" : t.includes("/admin") ? "admin" : "dashboard", [t]));
|
|
44
|
+
}
|
|
45
|
+
function L() {
|
|
46
|
+
return I(), /* @__PURE__ */ m(a, {
|
|
47
|
+
fallback: /* @__PURE__ */ m(N, {}),
|
|
48
|
+
children: /* @__PURE__ */ h(n, { children: [/* @__PURE__ */ m(r, {}), /* @__PURE__ */ h(f, { children: [
|
|
49
|
+
/* @__PURE__ */ m(d, {
|
|
49
50
|
index: !0,
|
|
50
|
-
element:
|
|
51
|
+
element: F("technospam.dashboard", /* @__PURE__ */ m(i, {}))
|
|
51
52
|
}),
|
|
52
|
-
/* @__PURE__ */
|
|
53
|
+
/* @__PURE__ */ m(d, {
|
|
53
54
|
path: "dashboard/dashboard-page",
|
|
54
|
-
element:
|
|
55
|
+
element: F("technospam.dashboard", /* @__PURE__ */ m(_, {}))
|
|
55
56
|
}),
|
|
56
|
-
/* @__PURE__ */
|
|
57
|
+
/* @__PURE__ */ m(d, {
|
|
57
58
|
path: "courses/courses-page",
|
|
58
|
-
element:
|
|
59
|
+
element: F("technospam.courses", /* @__PURE__ */ m(v, {}))
|
|
59
60
|
}),
|
|
60
|
-
/* @__PURE__ */
|
|
61
|
+
/* @__PURE__ */ m(d, {
|
|
61
62
|
path: "courses/course-details-page",
|
|
62
|
-
element:
|
|
63
|
+
element: F("technospam.courses", /* @__PURE__ */ m(y, {}))
|
|
63
64
|
}),
|
|
64
|
-
/* @__PURE__ */
|
|
65
|
+
/* @__PURE__ */ m(d, {
|
|
65
66
|
path: "courses/lesson-player-page",
|
|
66
|
-
element:
|
|
67
|
+
element: F("technospam.courses", /* @__PURE__ */ m(b, {}))
|
|
67
68
|
}),
|
|
68
|
-
/* @__PURE__ */
|
|
69
|
+
/* @__PURE__ */ m(d, {
|
|
69
70
|
path: "courses/my-learning-page",
|
|
70
|
-
element:
|
|
71
|
+
element: F("technospam.courses", /* @__PURE__ */ m(x, {}))
|
|
71
72
|
}),
|
|
72
|
-
/* @__PURE__ */
|
|
73
|
+
/* @__PURE__ */ m(d, {
|
|
73
74
|
path: "courses/instructors-page",
|
|
74
|
-
element: /* @__PURE__ */
|
|
75
|
+
element: /* @__PURE__ */ m(u, {
|
|
75
76
|
to: "../courses/courses-page",
|
|
76
77
|
replace: !0
|
|
77
78
|
})
|
|
78
79
|
}),
|
|
79
|
-
/* @__PURE__ */
|
|
80
|
+
/* @__PURE__ */ m(d, {
|
|
80
81
|
path: "courses/instructor-profile-page",
|
|
81
|
-
element: /* @__PURE__ */
|
|
82
|
+
element: /* @__PURE__ */ m(u, {
|
|
82
83
|
to: "../courses/courses-page",
|
|
83
84
|
replace: !0
|
|
84
85
|
})
|
|
85
86
|
}),
|
|
86
|
-
/* @__PURE__ */
|
|
87
|
+
/* @__PURE__ */ m(d, {
|
|
87
88
|
path: "applications/problems-page",
|
|
88
|
-
element:
|
|
89
|
+
element: F("technospam.problems", /* @__PURE__ */ m(S, {}))
|
|
89
90
|
}),
|
|
90
|
-
/* @__PURE__ */
|
|
91
|
+
/* @__PURE__ */ m(d, {
|
|
91
92
|
path: "applications/problem-details-page",
|
|
92
|
-
element:
|
|
93
|
+
element: F("technospam.problems", /* @__PURE__ */ m(C, {}))
|
|
93
94
|
}),
|
|
94
|
-
/* @__PURE__ */
|
|
95
|
+
/* @__PURE__ */ m(d, {
|
|
95
96
|
path: "applications/solutions-page",
|
|
96
|
-
element: /* @__PURE__ */
|
|
97
|
+
element: /* @__PURE__ */ m(u, {
|
|
97
98
|
to: "../applications/problems-page",
|
|
98
99
|
replace: !0
|
|
99
100
|
})
|
|
100
101
|
}),
|
|
101
|
-
/* @__PURE__ */
|
|
102
|
+
/* @__PURE__ */ m(d, {
|
|
102
103
|
path: "applications/portfolio-page",
|
|
103
|
-
element:
|
|
104
|
+
element: F("technospam.portfolio", /* @__PURE__ */ m(M, {}))
|
|
104
105
|
}),
|
|
105
|
-
/* @__PURE__ */
|
|
106
|
+
/* @__PURE__ */ m(d, {
|
|
106
107
|
path: "mentorship/mentors-page",
|
|
107
|
-
element:
|
|
108
|
+
element: F("technospam.mentorship", /* @__PURE__ */ m(w, {}))
|
|
108
109
|
}),
|
|
109
|
-
/* @__PURE__ */
|
|
110
|
+
/* @__PURE__ */ m(d, {
|
|
110
111
|
path: "mentorship/mentor-profile-page",
|
|
111
|
-
element:
|
|
112
|
+
element: F("technospam.mentorship", /* @__PURE__ */ m(T, {}))
|
|
112
113
|
}),
|
|
113
|
-
/* @__PURE__ */
|
|
114
|
+
/* @__PURE__ */ m(d, {
|
|
114
115
|
path: "mentorship/sessions-page",
|
|
115
|
-
element:
|
|
116
|
+
element: F("technospam.mentorship", /* @__PURE__ */ m(E, {}))
|
|
116
117
|
}),
|
|
117
|
-
/* @__PURE__ */
|
|
118
|
+
/* @__PURE__ */ m(d, {
|
|
118
119
|
path: "mentorship/mentorship-page",
|
|
119
|
-
element: /* @__PURE__ */
|
|
120
|
+
element: /* @__PURE__ */ m(u, {
|
|
120
121
|
to: "../mentorship/mentors-page",
|
|
121
122
|
replace: !0
|
|
122
123
|
})
|
|
123
124
|
}),
|
|
124
|
-
/* @__PURE__ */
|
|
125
|
+
/* @__PURE__ */ m(d, {
|
|
125
126
|
path: "mentorship/bookings-page",
|
|
126
|
-
element: /* @__PURE__ */
|
|
127
|
+
element: /* @__PURE__ */ m(u, {
|
|
127
128
|
to: "../mentorship/sessions-page",
|
|
128
129
|
replace: !0
|
|
129
130
|
})
|
|
130
131
|
}),
|
|
131
|
-
/* @__PURE__ */
|
|
132
|
+
/* @__PURE__ */ m(d, {
|
|
132
133
|
path: "hackathons/hackathons-page",
|
|
133
|
-
element:
|
|
134
|
+
element: F("technospam.hackathons", /* @__PURE__ */ m(D, {}))
|
|
134
135
|
}),
|
|
135
|
-
/* @__PURE__ */
|
|
136
|
+
/* @__PURE__ */ m(d, {
|
|
136
137
|
path: "hackathons/hackathon-details-page",
|
|
137
|
-
element:
|
|
138
|
+
element: F("technospam.hackathons", /* @__PURE__ */ m(O, {}))
|
|
138
139
|
}),
|
|
139
|
-
/* @__PURE__ */
|
|
140
|
+
/* @__PURE__ */ m(d, {
|
|
140
141
|
path: "hackathons/events-page",
|
|
141
|
-
element: /* @__PURE__ */
|
|
142
|
+
element: /* @__PURE__ */ m(u, {
|
|
142
143
|
to: "../hackathons/hackathons-page",
|
|
143
144
|
replace: !0
|
|
144
145
|
})
|
|
145
146
|
}),
|
|
146
|
-
/* @__PURE__ */
|
|
147
|
+
/* @__PURE__ */ m(d, {
|
|
147
148
|
path: "hackathons/teams-page",
|
|
148
|
-
element: /* @__PURE__ */
|
|
149
|
+
element: /* @__PURE__ */ m(u, {
|
|
149
150
|
to: "../hackathons/hackathons-page",
|
|
150
151
|
replace: !0
|
|
151
152
|
})
|
|
152
153
|
}),
|
|
153
|
-
/* @__PURE__ */
|
|
154
|
+
/* @__PURE__ */ m(d, {
|
|
154
155
|
path: "analytics/analytics-page",
|
|
155
|
-
element:
|
|
156
|
+
element: F("technospam.analytics", /* @__PURE__ */ m(k, {}))
|
|
156
157
|
}),
|
|
157
|
-
/* @__PURE__ */
|
|
158
|
+
/* @__PURE__ */ m(d, {
|
|
158
159
|
path: "analytics/progress-page",
|
|
159
|
-
element: /* @__PURE__ */
|
|
160
|
+
element: /* @__PURE__ */ m(u, {
|
|
160
161
|
to: "../analytics/analytics-page",
|
|
161
162
|
replace: !0
|
|
162
163
|
})
|
|
163
164
|
}),
|
|
164
|
-
/* @__PURE__ */
|
|
165
|
+
/* @__PURE__ */ m(d, {
|
|
165
166
|
path: "analytics/achievements-page",
|
|
166
|
-
element: /* @__PURE__ */
|
|
167
|
+
element: /* @__PURE__ */ m(u, {
|
|
167
168
|
to: "../analytics/analytics-page",
|
|
168
169
|
replace: !0
|
|
169
170
|
})
|
|
170
171
|
}),
|
|
171
|
-
/* @__PURE__ */
|
|
172
|
+
/* @__PURE__ */ m(d, {
|
|
172
173
|
path: "analytics/reports-page",
|
|
173
|
-
element: /* @__PURE__ */
|
|
174
|
+
element: /* @__PURE__ */ m(u, {
|
|
174
175
|
to: "../analytics/analytics-page",
|
|
175
176
|
replace: !0
|
|
176
177
|
})
|
|
177
178
|
}),
|
|
178
|
-
/* @__PURE__ */
|
|
179
|
+
/* @__PURE__ */ m(d, {
|
|
179
180
|
path: "admin/admin-dashboard-page",
|
|
180
|
-
element:
|
|
181
|
+
element: F("technospam.admin", /* @__PURE__ */ m(A, {}))
|
|
181
182
|
}),
|
|
182
|
-
/* @__PURE__ */
|
|
183
|
+
/* @__PURE__ */ m(d, {
|
|
183
184
|
path: "admin/audit-reports-page",
|
|
184
|
-
element: /* @__PURE__ */
|
|
185
|
+
element: /* @__PURE__ */ m(u, {
|
|
185
186
|
to: "../admin/admin-dashboard-page",
|
|
186
187
|
replace: !0
|
|
187
188
|
})
|
|
188
189
|
}),
|
|
189
|
-
/* @__PURE__ */
|
|
190
|
+
/* @__PURE__ */ m(d, {
|
|
190
191
|
path: "study-planner/study-planner-page",
|
|
191
|
-
element:
|
|
192
|
+
element: F("technospam.studyPlanner", /* @__PURE__ */ m(j, {}))
|
|
192
193
|
}),
|
|
193
|
-
/* @__PURE__ */
|
|
194
|
+
/* @__PURE__ */ m(d, {
|
|
194
195
|
path: "study-planner/*",
|
|
195
|
-
element: /* @__PURE__ */
|
|
196
|
+
element: /* @__PURE__ */ m(u, {
|
|
196
197
|
to: "../study-planner/study-planner-page",
|
|
197
198
|
replace: !0
|
|
198
199
|
})
|
|
199
200
|
}),
|
|
200
|
-
/* @__PURE__ */
|
|
201
|
+
/* @__PURE__ */ m(d, {
|
|
201
202
|
path: "open-source/*",
|
|
202
|
-
element: /* @__PURE__ */
|
|
203
|
+
element: /* @__PURE__ */ m(u, {
|
|
203
204
|
to: "../dashboard/dashboard-page",
|
|
204
205
|
replace: !0
|
|
205
206
|
})
|
|
206
207
|
}),
|
|
207
|
-
/* @__PURE__ */
|
|
208
|
+
/* @__PURE__ */ m(d, {
|
|
208
209
|
path: "knowledge-base/*",
|
|
209
|
-
element: /* @__PURE__ */
|
|
210
|
+
element: /* @__PURE__ */ m(u, {
|
|
210
211
|
to: "../dashboard/dashboard-page",
|
|
211
212
|
replace: !0
|
|
212
213
|
})
|
|
213
214
|
}),
|
|
214
|
-
/* @__PURE__ */
|
|
215
|
+
/* @__PURE__ */ m(d, {
|
|
215
216
|
path: "*",
|
|
216
|
-
element: /* @__PURE__ */
|
|
217
|
+
element: /* @__PURE__ */ m(u, {
|
|
217
218
|
to: "../dashboard/dashboard-page",
|
|
218
219
|
replace: !0
|
|
219
220
|
})
|
|
220
221
|
})
|
|
221
|
-
] }) })
|
|
222
|
+
] })] })
|
|
222
223
|
});
|
|
223
224
|
}
|
|
224
225
|
//#endregion
|
|
225
|
-
export {
|
|
226
|
+
export { L as TechnoSpamRoutes };
|
|
226
227
|
|
|
227
228
|
//# sourceMappingURL=TechnoSpamRoutes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TechnoSpamRoutes.js","names":[],"sources":["../../src/technospam/TechnoSpamRoutes.tsx"],"sourcesContent":["import { lazy, Suspense, useMemo } from 'react';\nimport { Navigate, Route, Routes, useLocation } from 'react-router';\nimport { Loader2, ShieldAlert } from 'lucide-react';\nimport { FeatureGate } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { useTechnoSpamPageView } from './hooks/useTechnoSpamPageView';\nimport { EmptyView, TechnoSpamErrorBoundary } from './components';\n\n/**\n * TechnoSpam routes — every page is backed by the real wspace-technospam-svc\n * (Tec* fields). Modules with no backend (open source, knowledge base,\n * standalone instructors, extra analytics/admin sub-pages) were removed\n * during the backend-reconciliation rebuild; their old paths redirect to\n * the nearest live page so stale links never 404.\n *\n * study-planner (BOFF-4415) and applications/portfolio-page (BOFF-4432) are\n * real pages again as of this pass — see their page components' honesty\n * notes for exactly what is/isn't AI and what's deferred.\n */\n\nimport { DashboardDashboardPagePage as IndexPage } from './pages/DashboardDashboardPagePage';\n\nconst DashboardDashboardPagePage = lazy(() =>\n import('./pages/DashboardDashboardPagePage').then((m) => ({\n default: m.DashboardDashboardPagePage,\n }))\n);\nconst CoursesCoursesPagePage = lazy(() =>\n import('./pages/CoursesCoursesPagePage').then((m) => ({ default: m.CoursesCoursesPagePage }))\n);\nconst CoursesCourseDetailsPagePage = lazy(() =>\n import('./pages/CoursesCourseDetailsPagePage').then((m) => ({\n default: m.CoursesCourseDetailsPagePage,\n }))\n);\nconst CoursesLessonPlayerPagePage = lazy(() =>\n import('./pages/CoursesLessonPlayerPagePage').then((m) => ({\n default: m.CoursesLessonPlayerPagePage,\n }))\n);\nconst CoursesMyLearningPagePage = lazy(() =>\n import('./pages/CoursesMyLearningPagePage').then((m) => ({\n default: m.CoursesMyLearningPagePage,\n }))\n);\nconst ApplicationsProblemsPagePage = lazy(() =>\n import('./pages/ApplicationsProblemsPagePage').then((m) => ({\n default: m.ApplicationsProblemsPagePage,\n }))\n);\nconst ApplicationsProblemDetailsPagePage = lazy(() =>\n import('./pages/ApplicationsProblemDetailsPagePage').then((m) => ({\n default: m.ApplicationsProblemDetailsPagePage,\n }))\n);\nconst MentorshipMentorsPagePage = lazy(() =>\n import('./pages/MentorshipMentorsPagePage').then((m) => ({\n default: m.MentorshipMentorsPagePage,\n }))\n);\nconst MentorshipMentorProfilePagePage = lazy(() =>\n import('./pages/MentorshipMentorProfilePagePage').then((m) => ({\n default: m.MentorshipMentorProfilePagePage,\n }))\n);\nconst MentorshipSessionsPagePage = lazy(() =>\n import('./pages/MentorshipSessionsPagePage').then((m) => ({\n default: m.MentorshipSessionsPagePage,\n }))\n);\nconst HackathonsHackathonsPagePage = lazy(() =>\n import('./pages/HackathonsHackathonsPagePage').then((m) => ({\n default: m.HackathonsHackathonsPagePage,\n }))\n);\nconst HackathonsHackathonDetailsPagePage = lazy(() =>\n import('./pages/HackathonsHackathonDetailsPagePage').then((m) => ({\n default: m.HackathonsHackathonDetailsPagePage,\n }))\n);\nconst AnalyticsAnalyticsPagePage = lazy(() =>\n import('./pages/AnalyticsAnalyticsPagePage').then((m) => ({\n default: m.AnalyticsAnalyticsPagePage,\n }))\n);\nconst AdminAdminDashboardPagePage = lazy(() =>\n import('./pages/AdminAdminDashboardPagePage').then((m) => ({\n default: m.AdminAdminDashboardPagePage,\n }))\n);\nconst StudyPlannerStudyPlannerPagePage = lazy(() =>\n import('./pages/StudyPlannerStudyPlannerPagePage').then((m) => ({\n default: m.StudyPlannerStudyPlannerPagePage,\n }))\n);\nconst ApplicationsPortfolioPagePage = lazy(() =>\n import('./pages/ApplicationsPortfolioPagePage').then((m) => ({\n default: m.ApplicationsPortfolioPagePage,\n }))\n);\n\nfunction PageLoader() {\n return (\n <div className=\"flex h-full min-h-[40vh] items-center justify-center\">\n <Loader2 className=\"animate-spin text-text-muted\" size={28} />\n </div>\n );\n}\n\nfunction FeatureDisabledFallback() {\n return (\n <div className=\"flex h-full min-h-[40vh] items-center justify-center p-6\">\n <EmptyView\n icon={<ShieldAlert size={28} />}\n title=\"Feature not available\"\n description=\"This TechnoSpam feature is currently disabled for your workspace.\"\n />\n </div>\n );\n}\n\nfunction gated(flag: string, element: React.ReactNode): React.ReactElement {\n return (\n <FeatureGate flag={flag} defaultValue={true} fallback={<FeatureDisabledFallback />}>\n {element}\n </FeatureGate>\n );\n}\n\nfunction useTrackedPageView() {\n const { pathname } = useLocation();\n const page = useMemo(() => {\n if (pathname.includes('/courses/lesson-player')) return 'lesson-player';\n if (pathname.includes('/courses/course-details')) return 'course-details';\n if (pathname.includes('/courses/my-learning')) return 'my-learning';\n if (pathname.includes('/courses')) return 'courses';\n if (pathname.includes('/applications/problem-details')) return 'problem-details';\n if (pathname.includes('/applications/portfolio')) return 'portfolio';\n if (pathname.includes('/applications')) return 'problems';\n if (pathname.includes('/study-planner')) return 'study-planner';\n if (pathname.includes('/mentorship/mentor-profile')) return 'mentor-profile';\n if (pathname.includes('/mentorship/sessions')) return 'sessions';\n if (pathname.includes('/mentorship')) return 'mentors';\n if (pathname.includes('/hackathons/hackathon-details')) return 'hackathon-details';\n if (pathname.includes('/hackathons')) return 'hackathons';\n if (pathname.includes('/analytics')) return 'analytics';\n if (pathname.includes('/admin')) return 'admin';\n return 'dashboard';\n }, [pathname]);\n useTechnoSpamPageView(page);\n}\n\nexport function TechnoSpamRoutes() {\n useTrackedPageView();\n return (\n <Suspense fallback={<PageLoader />}>\n <TechnoSpamErrorBoundary>\n <Routes>\n <Route index element={gated('technospam.dashboard', <IndexPage />)} />\n <Route\n path=\"dashboard/dashboard-page\"\n element={gated('technospam.dashboard', <DashboardDashboardPagePage />)}\n />\n\n {/* Courses */}\n <Route\n path=\"courses/courses-page\"\n element={gated('technospam.courses', <CoursesCoursesPagePage />)}\n />\n <Route\n path=\"courses/course-details-page\"\n element={gated('technospam.courses', <CoursesCourseDetailsPagePage />)}\n />\n <Route\n path=\"courses/lesson-player-page\"\n element={gated('technospam.courses', <CoursesLessonPlayerPagePage />)}\n />\n <Route\n path=\"courses/my-learning-page\"\n element={gated('technospam.courses', <CoursesMyLearningPagePage />)}\n />\n <Route\n path=\"courses/instructors-page\"\n element={<Navigate to=\"../courses/courses-page\" replace />}\n />\n <Route\n path=\"courses/instructor-profile-page\"\n element={<Navigate to=\"../courses/courses-page\" replace />}\n />\n\n {/* Practice (applications) */}\n <Route\n path=\"applications/problems-page\"\n element={gated('technospam.problems', <ApplicationsProblemsPagePage />)}\n />\n <Route\n path=\"applications/problem-details-page\"\n element={gated('technospam.problems', <ApplicationsProblemDetailsPagePage />)}\n />\n <Route\n path=\"applications/solutions-page\"\n element={<Navigate to=\"../applications/problems-page\" replace />}\n />\n <Route\n path=\"applications/portfolio-page\"\n element={gated('technospam.portfolio', <ApplicationsPortfolioPagePage />)}\n />\n\n {/* Mentorship */}\n <Route\n path=\"mentorship/mentors-page\"\n element={gated('technospam.mentorship', <MentorshipMentorsPagePage />)}\n />\n <Route\n path=\"mentorship/mentor-profile-page\"\n element={gated('technospam.mentorship', <MentorshipMentorProfilePagePage />)}\n />\n <Route\n path=\"mentorship/sessions-page\"\n element={gated('technospam.mentorship', <MentorshipSessionsPagePage />)}\n />\n <Route\n path=\"mentorship/mentorship-page\"\n element={<Navigate to=\"../mentorship/mentors-page\" replace />}\n />\n <Route\n path=\"mentorship/bookings-page\"\n element={<Navigate to=\"../mentorship/sessions-page\" replace />}\n />\n\n {/* Hackathons */}\n <Route\n path=\"hackathons/hackathons-page\"\n element={gated('technospam.hackathons', <HackathonsHackathonsPagePage />)}\n />\n <Route\n path=\"hackathons/hackathon-details-page\"\n element={gated('technospam.hackathons', <HackathonsHackathonDetailsPagePage />)}\n />\n <Route\n path=\"hackathons/events-page\"\n element={<Navigate to=\"../hackathons/hackathons-page\" replace />}\n />\n <Route\n path=\"hackathons/teams-page\"\n element={<Navigate to=\"../hackathons/hackathons-page\" replace />}\n />\n\n {/* Analytics */}\n <Route\n path=\"analytics/analytics-page\"\n element={gated('technospam.analytics', <AnalyticsAnalyticsPagePage />)}\n />\n <Route\n path=\"analytics/progress-page\"\n element={<Navigate to=\"../analytics/analytics-page\" replace />}\n />\n <Route\n path=\"analytics/achievements-page\"\n element={<Navigate to=\"../analytics/analytics-page\" replace />}\n />\n <Route\n path=\"analytics/reports-page\"\n element={<Navigate to=\"../analytics/analytics-page\" replace />}\n />\n\n {/* Admin */}\n <Route\n path=\"admin/admin-dashboard-page\"\n element={gated('technospam.admin', <AdminAdminDashboardPagePage />)}\n />\n <Route\n path=\"admin/audit-reports-page\"\n element={<Navigate to=\"../admin/admin-dashboard-page\" replace />}\n />\n\n {/*\n * Study Planner (BOFF-4415): a real, deterministic (non-AI)\n * scheduler now lives at study-planner/study-planner-page — see\n * StudyPlannerStudyPlannerPagePage's honesty note. This single page\n * intentionally consolidates what the nav scaffolding originally\n * anticipated as several separate pages (plans list, plan details,\n * edit, learning paths, goals) — those richer standalone views,\n * plus true AI/adaptive re-planning (BOFF-3874/3895), remain\n * deferred. Any other study-planner/* sub-path falls back here\n * rather than to the dashboard, since the real page now exists.\n */}\n <Route\n path=\"study-planner/study-planner-page\"\n element={gated('technospam.studyPlanner', <StudyPlannerStudyPlannerPagePage />)}\n />\n <Route\n path=\"study-planner/*\"\n element={<Navigate to=\"../study-planner/study-planner-page\" replace />}\n />\n {/*\n * Removed modules → dashboard.\n *\n * open-source and knowledge-base were never shipped and have no nav\n * entries anymore (BOFF-3086) — these redirects are a defensive\n * fallback for stale bookmarks/links only.\n */}\n <Route\n path=\"open-source/*\"\n element={<Navigate to=\"../dashboard/dashboard-page\" replace />}\n />\n <Route\n path=\"knowledge-base/*\"\n element={<Navigate to=\"../dashboard/dashboard-page\" replace />}\n />\n\n <Route path=\"*\" element={<Navigate to=\"../dashboard/dashboard-page\" replace />} />\n </Routes>\n </TechnoSpamErrorBoundary>\n </Suspense>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TechnoSpamRoutes.js","names":[],"sources":["../../src/technospam/TechnoSpamRoutes.tsx"],"sourcesContent":["import { lazy, Suspense, useMemo } from 'react';\nimport { Navigate, Route, Routes, useLocation } from 'react-router';\nimport { Loader2, ShieldAlert } from 'lucide-react';\nimport { FeatureGate } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { useTechnoSpamPageView } from './hooks/useTechnoSpamPageView';\nimport { EmptyView, TechnoSpamErrorBoundary } from './components';\nimport { OfflineProgressSync } from './components/lesson/OfflineProgressSync';\n\n/**\n * TechnoSpam routes — every page is backed by the real wspace-technospam-svc\n * (Tec* fields). Modules with no backend (open source, knowledge base,\n * standalone instructors, extra analytics/admin sub-pages) were removed\n * during the backend-reconciliation rebuild; their old paths redirect to\n * the nearest live page so stale links never 404.\n *\n * study-planner (BOFF-4415) and applications/portfolio-page (BOFF-4432) are\n * real pages again as of this pass — see their page components' honesty\n * notes for exactly what is/isn't AI and what's deferred.\n */\n\nimport { DashboardDashboardPagePage as IndexPage } from './pages/DashboardDashboardPagePage';\n\nconst DashboardDashboardPagePage = lazy(() =>\n import('./pages/DashboardDashboardPagePage').then((m) => ({\n default: m.DashboardDashboardPagePage,\n }))\n);\nconst CoursesCoursesPagePage = lazy(() =>\n import('./pages/CoursesCoursesPagePage').then((m) => ({ default: m.CoursesCoursesPagePage }))\n);\nconst CoursesCourseDetailsPagePage = lazy(() =>\n import('./pages/CoursesCourseDetailsPagePage').then((m) => ({\n default: m.CoursesCourseDetailsPagePage,\n }))\n);\nconst CoursesLessonPlayerPagePage = lazy(() =>\n import('./pages/CoursesLessonPlayerPagePage').then((m) => ({\n default: m.CoursesLessonPlayerPagePage,\n }))\n);\nconst CoursesMyLearningPagePage = lazy(() =>\n import('./pages/CoursesMyLearningPagePage').then((m) => ({\n default: m.CoursesMyLearningPagePage,\n }))\n);\nconst ApplicationsProblemsPagePage = lazy(() =>\n import('./pages/ApplicationsProblemsPagePage').then((m) => ({\n default: m.ApplicationsProblemsPagePage,\n }))\n);\nconst ApplicationsProblemDetailsPagePage = lazy(() =>\n import('./pages/ApplicationsProblemDetailsPagePage').then((m) => ({\n default: m.ApplicationsProblemDetailsPagePage,\n }))\n);\nconst MentorshipMentorsPagePage = lazy(() =>\n import('./pages/MentorshipMentorsPagePage').then((m) => ({\n default: m.MentorshipMentorsPagePage,\n }))\n);\nconst MentorshipMentorProfilePagePage = lazy(() =>\n import('./pages/MentorshipMentorProfilePagePage').then((m) => ({\n default: m.MentorshipMentorProfilePagePage,\n }))\n);\nconst MentorshipSessionsPagePage = lazy(() =>\n import('./pages/MentorshipSessionsPagePage').then((m) => ({\n default: m.MentorshipSessionsPagePage,\n }))\n);\nconst HackathonsHackathonsPagePage = lazy(() =>\n import('./pages/HackathonsHackathonsPagePage').then((m) => ({\n default: m.HackathonsHackathonsPagePage,\n }))\n);\nconst HackathonsHackathonDetailsPagePage = lazy(() =>\n import('./pages/HackathonsHackathonDetailsPagePage').then((m) => ({\n default: m.HackathonsHackathonDetailsPagePage,\n }))\n);\nconst AnalyticsAnalyticsPagePage = lazy(() =>\n import('./pages/AnalyticsAnalyticsPagePage').then((m) => ({\n default: m.AnalyticsAnalyticsPagePage,\n }))\n);\nconst AdminAdminDashboardPagePage = lazy(() =>\n import('./pages/AdminAdminDashboardPagePage').then((m) => ({\n default: m.AdminAdminDashboardPagePage,\n }))\n);\nconst StudyPlannerStudyPlannerPagePage = lazy(() =>\n import('./pages/StudyPlannerStudyPlannerPagePage').then((m) => ({\n default: m.StudyPlannerStudyPlannerPagePage,\n }))\n);\nconst ApplicationsPortfolioPagePage = lazy(() =>\n import('./pages/ApplicationsPortfolioPagePage').then((m) => ({\n default: m.ApplicationsPortfolioPagePage,\n }))\n);\n\nfunction PageLoader() {\n return (\n <div className=\"flex h-full min-h-[40vh] items-center justify-center\">\n <Loader2 className=\"animate-spin text-text-muted\" size={28} />\n </div>\n );\n}\n\nfunction FeatureDisabledFallback() {\n return (\n <div className=\"flex h-full min-h-[40vh] items-center justify-center p-6\">\n <EmptyView\n icon={<ShieldAlert size={28} />}\n title=\"Feature not available\"\n description=\"This TechnoSpam feature is currently disabled for your workspace.\"\n />\n </div>\n );\n}\n\nfunction gated(flag: string, element: React.ReactNode): React.ReactElement {\n return (\n <FeatureGate flag={flag} defaultValue={true} fallback={<FeatureDisabledFallback />}>\n {element}\n </FeatureGate>\n );\n}\n\nfunction useTrackedPageView() {\n const { pathname } = useLocation();\n const page = useMemo(() => {\n if (pathname.includes('/courses/lesson-player')) return 'lesson-player';\n if (pathname.includes('/courses/course-details')) return 'course-details';\n if (pathname.includes('/courses/my-learning')) return 'my-learning';\n if (pathname.includes('/courses')) return 'courses';\n if (pathname.includes('/applications/problem-details')) return 'problem-details';\n if (pathname.includes('/applications/portfolio')) return 'portfolio';\n if (pathname.includes('/applications')) return 'problems';\n if (pathname.includes('/study-planner')) return 'study-planner';\n if (pathname.includes('/mentorship/mentor-profile')) return 'mentor-profile';\n if (pathname.includes('/mentorship/sessions')) return 'sessions';\n if (pathname.includes('/mentorship')) return 'mentors';\n if (pathname.includes('/hackathons/hackathon-details')) return 'hackathon-details';\n if (pathname.includes('/hackathons')) return 'hackathons';\n if (pathname.includes('/analytics')) return 'analytics';\n if (pathname.includes('/admin')) return 'admin';\n return 'dashboard';\n }, [pathname]);\n useTechnoSpamPageView(page);\n}\n\nexport function TechnoSpamRoutes() {\n useTrackedPageView();\n return (\n <Suspense fallback={<PageLoader />}>\n <TechnoSpamErrorBoundary>\n <OfflineProgressSync />\n <Routes>\n <Route index element={gated('technospam.dashboard', <IndexPage />)} />\n <Route\n path=\"dashboard/dashboard-page\"\n element={gated('technospam.dashboard', <DashboardDashboardPagePage />)}\n />\n\n {/* Courses */}\n <Route\n path=\"courses/courses-page\"\n element={gated('technospam.courses', <CoursesCoursesPagePage />)}\n />\n <Route\n path=\"courses/course-details-page\"\n element={gated('technospam.courses', <CoursesCourseDetailsPagePage />)}\n />\n <Route\n path=\"courses/lesson-player-page\"\n element={gated('technospam.courses', <CoursesLessonPlayerPagePage />)}\n />\n <Route\n path=\"courses/my-learning-page\"\n element={gated('technospam.courses', <CoursesMyLearningPagePage />)}\n />\n <Route\n path=\"courses/instructors-page\"\n element={<Navigate to=\"../courses/courses-page\" replace />}\n />\n <Route\n path=\"courses/instructor-profile-page\"\n element={<Navigate to=\"../courses/courses-page\" replace />}\n />\n\n {/* Practice (applications) */}\n <Route\n path=\"applications/problems-page\"\n element={gated('technospam.problems', <ApplicationsProblemsPagePage />)}\n />\n <Route\n path=\"applications/problem-details-page\"\n element={gated('technospam.problems', <ApplicationsProblemDetailsPagePage />)}\n />\n <Route\n path=\"applications/solutions-page\"\n element={<Navigate to=\"../applications/problems-page\" replace />}\n />\n <Route\n path=\"applications/portfolio-page\"\n element={gated('technospam.portfolio', <ApplicationsPortfolioPagePage />)}\n />\n\n {/* Mentorship */}\n <Route\n path=\"mentorship/mentors-page\"\n element={gated('technospam.mentorship', <MentorshipMentorsPagePage />)}\n />\n <Route\n path=\"mentorship/mentor-profile-page\"\n element={gated('technospam.mentorship', <MentorshipMentorProfilePagePage />)}\n />\n <Route\n path=\"mentorship/sessions-page\"\n element={gated('technospam.mentorship', <MentorshipSessionsPagePage />)}\n />\n <Route\n path=\"mentorship/mentorship-page\"\n element={<Navigate to=\"../mentorship/mentors-page\" replace />}\n />\n <Route\n path=\"mentorship/bookings-page\"\n element={<Navigate to=\"../mentorship/sessions-page\" replace />}\n />\n\n {/* Hackathons */}\n <Route\n path=\"hackathons/hackathons-page\"\n element={gated('technospam.hackathons', <HackathonsHackathonsPagePage />)}\n />\n <Route\n path=\"hackathons/hackathon-details-page\"\n element={gated('technospam.hackathons', <HackathonsHackathonDetailsPagePage />)}\n />\n <Route\n path=\"hackathons/events-page\"\n element={<Navigate to=\"../hackathons/hackathons-page\" replace />}\n />\n <Route\n path=\"hackathons/teams-page\"\n element={<Navigate to=\"../hackathons/hackathons-page\" replace />}\n />\n\n {/* Analytics */}\n <Route\n path=\"analytics/analytics-page\"\n element={gated('technospam.analytics', <AnalyticsAnalyticsPagePage />)}\n />\n <Route\n path=\"analytics/progress-page\"\n element={<Navigate to=\"../analytics/analytics-page\" replace />}\n />\n <Route\n path=\"analytics/achievements-page\"\n element={<Navigate to=\"../analytics/analytics-page\" replace />}\n />\n <Route\n path=\"analytics/reports-page\"\n element={<Navigate to=\"../analytics/analytics-page\" replace />}\n />\n\n {/* Admin */}\n <Route\n path=\"admin/admin-dashboard-page\"\n element={gated('technospam.admin', <AdminAdminDashboardPagePage />)}\n />\n <Route\n path=\"admin/audit-reports-page\"\n element={<Navigate to=\"../admin/admin-dashboard-page\" replace />}\n />\n\n {/*\n * Study Planner (BOFF-4415): a real, deterministic (non-AI)\n * scheduler now lives at study-planner/study-planner-page — see\n * StudyPlannerStudyPlannerPagePage's honesty note. This single page\n * intentionally consolidates what the nav scaffolding originally\n * anticipated as several separate pages (plans list, plan details,\n * edit, learning paths, goals) — those richer standalone views,\n * plus true AI/adaptive re-planning (BOFF-3874/3895), remain\n * deferred. Any other study-planner/* sub-path falls back here\n * rather than to the dashboard, since the real page now exists.\n */}\n <Route\n path=\"study-planner/study-planner-page\"\n element={gated('technospam.studyPlanner', <StudyPlannerStudyPlannerPagePage />)}\n />\n <Route\n path=\"study-planner/*\"\n element={<Navigate to=\"../study-planner/study-planner-page\" replace />}\n />\n {/*\n * Removed modules → dashboard.\n *\n * open-source and knowledge-base were never shipped and have no nav\n * entries anymore (BOFF-3086) — these redirects are a defensive\n * fallback for stale bookmarks/links only.\n */}\n <Route\n path=\"open-source/*\"\n element={<Navigate to=\"../dashboard/dashboard-page\" replace />}\n />\n <Route\n path=\"knowledge-base/*\"\n element={<Navigate to=\"../dashboard/dashboard-page\" replace />}\n />\n\n <Route path=\"*\" element={<Navigate to=\"../dashboard/dashboard-page\" replace />} />\n </Routes>\n </TechnoSpamErrorBoundary>\n </Suspense>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ErrorLike } from '@apollo/client';
|
|
1
|
+
import { ApolloClient, ErrorLike } from '@apollo/client';
|
|
2
2
|
import { useMutation, useQuery } from '@apollo/client/react';
|
|
3
3
|
import { BuiMyCertificateRow, BuiMyEnrollmentRow } from './canonicalLearning';
|
|
4
4
|
|
|
@@ -394,7 +394,7 @@ export interface MyLearningScope {
|
|
|
394
394
|
/** The signed-in learner's own TechnoSpam enrollments (canonical, self-scoped). */
|
|
395
395
|
export declare function useMyEnrollmentsQuery(scope?: MyLearningScope): {
|
|
396
396
|
enrollments: TecEnrollment[];
|
|
397
|
-
client:
|
|
397
|
+
client: ApolloClient;
|
|
398
398
|
observable: import('@apollo/client').ObservableQuery<{
|
|
399
399
|
buiMyEnrollments: {
|
|
400
400
|
items: BuiMyEnrollmentRow[];
|
|
@@ -452,7 +452,7 @@ export declare function useMyEnrollmentsQuery(scope?: MyLearningScope): {
|
|
|
452
452
|
dataState: "empty";
|
|
453
453
|
} | {
|
|
454
454
|
enrollments: TecEnrollment[];
|
|
455
|
-
client:
|
|
455
|
+
client: ApolloClient;
|
|
456
456
|
observable: import('@apollo/client').ObservableQuery<{
|
|
457
457
|
buiMyEnrollments: {
|
|
458
458
|
items: BuiMyEnrollmentRow[];
|
|
@@ -515,7 +515,7 @@ export declare function useMyEnrollmentsQuery(scope?: MyLearningScope): {
|
|
|
515
515
|
dataState: "complete";
|
|
516
516
|
} | {
|
|
517
517
|
enrollments: TecEnrollment[];
|
|
518
|
-
client:
|
|
518
|
+
client: ApolloClient;
|
|
519
519
|
observable: import('@apollo/client').ObservableQuery<{
|
|
520
520
|
buiMyEnrollments: {
|
|
521
521
|
items: BuiMyEnrollmentRow[];
|
|
@@ -580,7 +580,7 @@ export declare function useMyEnrollmentsQuery(scope?: MyLearningScope): {
|
|
|
580
580
|
/** The signed-in learner's own TechnoSpam certificates (canonical, self-scoped). */
|
|
581
581
|
export declare function useMyCertificatesQuery(scope?: MyLearningScope): {
|
|
582
582
|
certificates: TecCertificate[];
|
|
583
|
-
client:
|
|
583
|
+
client: ApolloClient;
|
|
584
584
|
observable: import('@apollo/client').ObservableQuery<{
|
|
585
585
|
buiMyCertificates: {
|
|
586
586
|
items: BuiMyCertificateRow[];
|
|
@@ -638,7 +638,7 @@ export declare function useMyCertificatesQuery(scope?: MyLearningScope): {
|
|
|
638
638
|
dataState: "empty";
|
|
639
639
|
} | {
|
|
640
640
|
certificates: TecCertificate[];
|
|
641
|
-
client:
|
|
641
|
+
client: ApolloClient;
|
|
642
642
|
observable: import('@apollo/client').ObservableQuery<{
|
|
643
643
|
buiMyCertificates: {
|
|
644
644
|
items: BuiMyCertificateRow[];
|
|
@@ -701,7 +701,7 @@ export declare function useMyCertificatesQuery(scope?: MyLearningScope): {
|
|
|
701
701
|
dataState: "complete";
|
|
702
702
|
} | {
|
|
703
703
|
certificates: TecCertificate[];
|
|
704
|
-
client:
|
|
704
|
+
client: ApolloClient;
|
|
705
705
|
observable: import('@apollo/client').ObservableQuery<{
|
|
706
706
|
buiMyCertificates: {
|
|
707
707
|
items: BuiMyCertificateRow[];
|
|
@@ -1161,6 +1161,20 @@ export declare const useRunLessonCode: () => useMutation.ResultTuple<{
|
|
|
1161
1161
|
}, {
|
|
1162
1162
|
[x: string]: any;
|
|
1163
1163
|
}, import('@apollo/client').ApolloCache, undefined>;
|
|
1164
|
+
/**
|
|
1165
|
+
* Fetch one lesson (with its course outline) straight from the network, for
|
|
1166
|
+
* saving a course to the device. Returns null when the lesson cannot be read.
|
|
1167
|
+
*/
|
|
1168
|
+
export declare function fetchLessonForOffline(client: ApolloClient, courseId: string, lessonId: string): Promise<LessonPlayerData | null>;
|
|
1169
|
+
/** True when every GraphQL error in a failed completion is terminal. */
|
|
1170
|
+
export declare function isTerminalCompletionError(error: unknown): boolean;
|
|
1171
|
+
/**
|
|
1172
|
+
* Send a lesson completion that was queued while offline: `rejected` when the
|
|
1173
|
+
* server refused it for good (see {@link isTerminalCompletionError}), `retry`
|
|
1174
|
+
* for anything that may succeed later (no connection, gateway down, expired
|
|
1175
|
+
* session).
|
|
1176
|
+
*/
|
|
1177
|
+
export declare function sendQueuedLessonCompletion(client: ApolloClient, lessonId: string): Promise<'sent' | 'rejected' | 'retry'>;
|
|
1164
1178
|
export type TecCertificateVerificationStatus = 'VALID' | 'REVOKED' | 'NOT_FOUND';
|
|
1165
1179
|
export interface TecCertificateVerification {
|
|
1166
1180
|
serial: string;
|