@burdenoff/microfe-technospam 2026.827.1 → 2026.829.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.
Files changed (68) hide show
  1. package/dist/index.js +4 -3
  2. package/dist/technospam/TechnoSpamRoot.js +4 -4
  3. package/dist/technospam/TechnoSpamRoutes.d.ts.map +1 -1
  4. package/dist/technospam/TechnoSpamRoutes.js +89 -88
  5. package/dist/technospam/TechnoSpamRoutes.js.map +1 -1
  6. package/dist/technospam/components/PageLayout.d.ts.map +1 -1
  7. package/dist/technospam/components/PageLayout.js +24 -23
  8. package/dist/technospam/components/PageLayout.js.map +1 -1
  9. package/dist/technospam/components/StateViews.d.ts +1 -1
  10. package/dist/technospam/components/StateViews.d.ts.map +1 -1
  11. package/dist/technospam/components/StateViews.js +28 -26
  12. package/dist/technospam/components/StateViews.js.map +1 -1
  13. package/dist/technospam/components/TagInput.d.ts +1 -1
  14. package/dist/technospam/components/TagInput.d.ts.map +1 -1
  15. package/dist/technospam/components/TagInput.js +39 -34
  16. package/dist/technospam/components/TagInput.js.map +1 -1
  17. package/dist/technospam/components/TechnoSpamErrorBoundary.d.ts +25 -0
  18. package/dist/technospam/components/TechnoSpamErrorBoundary.d.ts.map +1 -0
  19. package/dist/technospam/components/TechnoSpamErrorBoundary.js +31 -0
  20. package/dist/technospam/components/TechnoSpamErrorBoundary.js.map +1 -0
  21. package/dist/technospam/components/index.d.ts +1 -0
  22. package/dist/technospam/components/index.d.ts.map +1 -1
  23. package/dist/technospam/components/index.js +1 -0
  24. package/dist/technospam/hooks/useTr.d.ts +17 -0
  25. package/dist/technospam/hooks/useTr.d.ts.map +1 -0
  26. package/dist/technospam/hooks/useTr.js +12 -0
  27. package/dist/technospam/hooks/useTr.js.map +1 -0
  28. package/dist/technospam/index.d.ts +1 -0
  29. package/dist/technospam/index.d.ts.map +1 -1
  30. package/dist/technospam/index.js +1 -0
  31. package/dist/technospam/pages/AdminAdminDashboardPagePage.js +7 -7
  32. package/dist/technospam/pages/AdminAdminDashboardPagePage.js.map +1 -1
  33. package/dist/technospam/pages/AnalyticsAnalyticsPagePage.d.ts.map +1 -1
  34. package/dist/technospam/pages/AnalyticsAnalyticsPagePage.js +198 -189
  35. package/dist/technospam/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
  36. package/dist/technospam/pages/ApplicationsPortfolioPagePage.js +2 -2
  37. package/dist/technospam/pages/ApplicationsPortfolioPagePage.js.map +1 -1
  38. package/dist/technospam/pages/ApplicationsProblemDetailsPagePage.js +1 -1
  39. package/dist/technospam/pages/ApplicationsProblemDetailsPagePage.js.map +1 -1
  40. package/dist/technospam/pages/ApplicationsProblemsPagePage.d.ts.map +1 -1
  41. package/dist/technospam/pages/ApplicationsProblemsPagePage.js +165 -163
  42. package/dist/technospam/pages/ApplicationsProblemsPagePage.js.map +1 -1
  43. package/dist/technospam/pages/CoursesCoursesPagePage.d.ts.map +1 -1
  44. package/dist/technospam/pages/CoursesCoursesPagePage.js +117 -113
  45. package/dist/technospam/pages/CoursesCoursesPagePage.js.map +1 -1
  46. package/dist/technospam/pages/CoursesMyLearningPagePage.js +1 -1
  47. package/dist/technospam/pages/CoursesMyLearningPagePage.js.map +1 -1
  48. package/dist/technospam/pages/DashboardDashboardPagePage.d.ts.map +1 -1
  49. package/dist/technospam/pages/DashboardDashboardPagePage.js +211 -193
  50. package/dist/technospam/pages/DashboardDashboardPagePage.js.map +1 -1
  51. package/dist/technospam/pages/HackathonsHackathonDetailsPagePage.js +1 -1
  52. package/dist/technospam/pages/HackathonsHackathonDetailsPagePage.js.map +1 -1
  53. package/dist/technospam/pages/HackathonsHackathonsPagePage.d.ts.map +1 -1
  54. package/dist/technospam/pages/HackathonsHackathonsPagePage.js +110 -110
  55. package/dist/technospam/pages/HackathonsHackathonsPagePage.js.map +1 -1
  56. package/dist/technospam/pages/MentorshipMentorsPagePage.d.ts.map +1 -1
  57. package/dist/technospam/pages/MentorshipMentorsPagePage.js +174 -160
  58. package/dist/technospam/pages/MentorshipMentorsPagePage.js.map +1 -1
  59. package/dist/technospam/pages/MentorshipSessionsPagePage.d.ts.map +1 -1
  60. package/dist/technospam/pages/MentorshipSessionsPagePage.js +156 -151
  61. package/dist/technospam/pages/MentorshipSessionsPagePage.js.map +1 -1
  62. package/dist/technospam/pages/StudyPlannerStudyPlannerPagePage.js +1 -1
  63. package/dist/technospam/pages/StudyPlannerStudyPlannerPagePage.js.map +1 -1
  64. package/dist/technospam/utils/i18n.js +1 -1
  65. package/dist/technospam/utils/i18n.js.map +1 -1
  66. package/dist/test/setup.d.ts +2 -0
  67. package/dist/test/setup.d.ts.map +1 -0
  68. package/package.json +8 -2
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
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
- import { TechnoSpamRoot as r } from "./technospam/TechnoSpamRoot.js";
4
- import { useSandboxAssistantTransport as i } from "./technospam/services/createSandboxAssistantTransport.js";
3
+ import { useTr as r } from "./technospam/hooks/useTr.js";
4
+ import { TechnoSpamRoot as i } from "./technospam/TechnoSpamRoot.js";
5
+ import { useSandboxAssistantTransport as a } from "./technospam/services/createSandboxAssistantTransport.js";
5
6
  import "./technospam/index.js";
6
- export { r as TechnoSpamRoot, i as useSandboxAssistantTransport, e as useTechnoSpam, n as useTechnoSpamAnalytics, t as useTechnoSpamNavigate };
7
+ export { i as TechnoSpamRoot, a as useSandboxAssistantTransport, e as useTechnoSpam, n as useTechnoSpamAnalytics, t as useTechnoSpamNavigate, r as useTr };
@@ -1,6 +1,6 @@
1
1
  import { TechnoSpamProvider as e } from "./providers/TechnoSpamProvider.js";
2
- import { TechnoSpamRoutes as t } from "./TechnoSpamRoutes.js";
3
- import { tWithFallback as n } from "./utils/i18n.js";
2
+ import { tWithFallback as t } from "./utils/i18n.js";
3
+ import { TechnoSpamRoutes as n } from "./TechnoSpamRoutes.js";
4
4
  import { joinPath as r } from "./utils/navigation.js";
5
5
  import { useEffect as i } from "react";
6
6
  import { useI18n as a } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
@@ -9,7 +9,7 @@ import { jsx as P } from "react/jsx-runtime";
9
9
  import { FeatureFlagProvider as F } from "@burdenoff/fe-libs/shared/feature-flags";
10
10
  //#region src/technospam/TechnoSpamRoot.tsx
11
11
  var I = (I) => {
12
- let { registerNavItems: L, registerFooterItems: R, basePath: z = "/" } = I, { t: B } = a(), V = (e, t) => n(B, e, t);
12
+ let { registerNavItems: L, registerFooterItems: R, basePath: z = "/" } = I, { t: B } = a(), V = (e, n) => t(B, e, n);
13
13
  return i(() => {
14
14
  if (L) return L({
15
15
  id: "technospam",
@@ -374,7 +374,7 @@ var I = (I) => {
374
374
  defaultEnabled: !0,
375
375
  children: /* @__PURE__ */ P(e, {
376
376
  ...I,
377
- children: /* @__PURE__ */ P(t, {})
377
+ children: /* @__PURE__ */ P(n, {})
378
378
  })
379
379
  });
380
380
  };
@@ -1 +1 @@
1
- {"version":3,"file":"TechnoSpamRoutes.d.ts","sourceRoot":"","sources":["../../src/technospam/TechnoSpamRoutes.tsx"],"names":[],"mappings":"AAiJA,wBAAgB,gBAAgB,gCA8J/B"}
1
+ {"version":3,"file":"TechnoSpamRoutes.d.ts","sourceRoot":"","sources":["../../src/technospam/TechnoSpamRoutes.tsx"],"names":[],"mappings":"AAiJA,wBAAgB,gBAAgB,gCAgK/B"}
@@ -1,222 +1,223 @@
1
1
  import { useTechnoSpamPageView as e } from "./hooks/useTechnoSpamPageView.js";
2
2
  import { EmptyView as t } from "./components/StateViews.js";
3
+ import { TechnoSpamErrorBoundary as n } from "./components/TechnoSpamErrorBoundary.js";
3
4
  import "./components/index.js";
4
- import { DashboardDashboardPagePage as n } from "./pages/DashboardDashboardPagePage.js";
5
- import { Suspense as r, lazy as i, useMemo as a } from "react";
6
- import { Loader2 as o, ShieldAlert as s } from "lucide-react";
7
- import { Navigate as c, Route as l, Routes as u, useLocation as d } from "react-router";
8
- import { jsx as f, jsxs as p } from "react/jsx-runtime";
9
- import { FeatureGate as m } from "@burdenoff/fe-libs/shared/feature-flags";
5
+ import { DashboardDashboardPagePage as r } from "./pages/DashboardDashboardPagePage.js";
6
+ import { Suspense as i, lazy as a, useMemo as o } from "react";
7
+ import { Loader2 as s, ShieldAlert as c } from "lucide-react";
8
+ import { Navigate as l, Route as u, Routes as d, useLocation as f } from "react-router";
9
+ import { jsx as p, jsxs as m } from "react/jsx-runtime";
10
+ import { FeatureGate as h } from "@burdenoff/fe-libs/shared/feature-flags";
10
11
  //#region src/technospam/TechnoSpamRoutes.tsx
11
- var h = i(() => import("./pages/DashboardDashboardPagePage.js").then((e) => ({ default: e.DashboardDashboardPagePage }))), g = i(() => import("./pages/CoursesCoursesPagePage.js").then((e) => ({ default: e.CoursesCoursesPagePage }))), _ = i(() => import("./pages/CoursesCourseDetailsPagePage.js").then((e) => ({ default: e.CoursesCourseDetailsPagePage }))), v = i(() => import("./pages/CoursesMyLearningPagePage.js").then((e) => ({ default: e.CoursesMyLearningPagePage }))), y = i(() => import("./pages/ApplicationsProblemsPagePage.js").then((e) => ({ default: e.ApplicationsProblemsPagePage }))), b = i(() => import("./pages/ApplicationsProblemDetailsPagePage.js").then((e) => ({ default: e.ApplicationsProblemDetailsPagePage }))), x = i(() => import("./pages/MentorshipMentorsPagePage.js").then((e) => ({ default: e.MentorshipMentorsPagePage }))), S = i(() => import("./pages/MentorshipMentorProfilePagePage.js").then((e) => ({ default: e.MentorshipMentorProfilePagePage }))), C = i(() => import("./pages/MentorshipSessionsPagePage.js").then((e) => ({ default: e.MentorshipSessionsPagePage }))), w = i(() => import("./pages/HackathonsHackathonsPagePage.js").then((e) => ({ default: e.HackathonsHackathonsPagePage }))), T = i(() => import("./pages/HackathonsHackathonDetailsPagePage.js").then((e) => ({ default: e.HackathonsHackathonDetailsPagePage }))), E = i(() => import("./pages/AnalyticsAnalyticsPagePage.js").then((e) => ({ default: e.AnalyticsAnalyticsPagePage }))), D = i(() => import("./pages/AdminAdminDashboardPagePage.js").then((e) => ({ default: e.AdminAdminDashboardPagePage }))), O = i(() => import("./pages/StudyPlannerStudyPlannerPagePage.js").then((e) => ({ default: e.StudyPlannerStudyPlannerPagePage }))), k = i(() => import("./pages/ApplicationsPortfolioPagePage.js").then((e) => ({ default: e.ApplicationsPortfolioPagePage })));
12
- function A() {
13
- return /* @__PURE__ */ f("div", {
12
+ var g = a(() => import("./pages/DashboardDashboardPagePage.js").then((e) => ({ default: e.DashboardDashboardPagePage }))), _ = a(() => import("./pages/CoursesCoursesPagePage.js").then((e) => ({ default: e.CoursesCoursesPagePage }))), v = a(() => import("./pages/CoursesCourseDetailsPagePage.js").then((e) => ({ default: e.CoursesCourseDetailsPagePage }))), y = a(() => import("./pages/CoursesMyLearningPagePage.js").then((e) => ({ default: e.CoursesMyLearningPagePage }))), b = a(() => import("./pages/ApplicationsProblemsPagePage.js").then((e) => ({ default: e.ApplicationsProblemsPagePage }))), x = a(() => import("./pages/ApplicationsProblemDetailsPagePage.js").then((e) => ({ default: e.ApplicationsProblemDetailsPagePage }))), S = a(() => import("./pages/MentorshipMentorsPagePage.js").then((e) => ({ default: e.MentorshipMentorsPagePage }))), C = a(() => import("./pages/MentorshipMentorProfilePagePage.js").then((e) => ({ default: e.MentorshipMentorProfilePagePage }))), w = a(() => import("./pages/MentorshipSessionsPagePage.js").then((e) => ({ default: e.MentorshipSessionsPagePage }))), T = a(() => import("./pages/HackathonsHackathonsPagePage.js").then((e) => ({ default: e.HackathonsHackathonsPagePage }))), E = a(() => import("./pages/HackathonsHackathonDetailsPagePage.js").then((e) => ({ default: e.HackathonsHackathonDetailsPagePage }))), D = a(() => import("./pages/AnalyticsAnalyticsPagePage.js").then((e) => ({ default: e.AnalyticsAnalyticsPagePage }))), O = a(() => import("./pages/AdminAdminDashboardPagePage.js").then((e) => ({ default: e.AdminAdminDashboardPagePage }))), k = a(() => import("./pages/StudyPlannerStudyPlannerPagePage.js").then((e) => ({ default: e.StudyPlannerStudyPlannerPagePage }))), A = a(() => import("./pages/ApplicationsPortfolioPagePage.js").then((e) => ({ default: e.ApplicationsPortfolioPagePage })));
13
+ function j() {
14
+ return /* @__PURE__ */ p("div", {
14
15
  className: "flex h-full min-h-[40vh] items-center justify-center",
15
- children: /* @__PURE__ */ f(o, {
16
+ children: /* @__PURE__ */ p(s, {
16
17
  className: "animate-spin text-text-muted",
17
18
  size: 28
18
19
  })
19
20
  });
20
21
  }
21
- function j() {
22
- return /* @__PURE__ */ f("div", {
22
+ function M() {
23
+ return /* @__PURE__ */ p("div", {
23
24
  className: "flex h-full min-h-[40vh] items-center justify-center p-6",
24
- children: /* @__PURE__ */ f(t, {
25
- icon: /* @__PURE__ */ f(s, { size: 28 }),
25
+ children: /* @__PURE__ */ p(t, {
26
+ icon: /* @__PURE__ */ p(c, { size: 28 }),
26
27
  title: "Feature not available",
27
28
  description: "This TechnoSpam feature is currently disabled for your workspace."
28
29
  })
29
30
  });
30
31
  }
31
- function M(e, t) {
32
- return /* @__PURE__ */ f(m, {
32
+ function N(e, t) {
33
+ return /* @__PURE__ */ p(h, {
33
34
  flag: e,
34
35
  defaultValue: !0,
35
- fallback: /* @__PURE__ */ f(j, {}),
36
+ fallback: /* @__PURE__ */ p(M, {}),
36
37
  children: t
37
38
  });
38
39
  }
39
- function N() {
40
- let { pathname: t } = d();
41
- e(a(() => 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]));
42
- }
43
40
  function P() {
44
- return N(), /* @__PURE__ */ f(r, {
45
- fallback: /* @__PURE__ */ f(A, {}),
46
- children: /* @__PURE__ */ p(u, { children: [
47
- /* @__PURE__ */ f(l, {
41
+ let { pathname: t } = f();
42
+ e(o(() => 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
+ function F() {
45
+ return P(), /* @__PURE__ */ p(i, {
46
+ fallback: /* @__PURE__ */ p(j, {}),
47
+ children: /* @__PURE__ */ p(n, { children: /* @__PURE__ */ m(d, { children: [
48
+ /* @__PURE__ */ p(u, {
48
49
  index: !0,
49
- element: M("technospam.dashboard", /* @__PURE__ */ f(n, {}))
50
+ element: N("technospam.dashboard", /* @__PURE__ */ p(r, {}))
50
51
  }),
51
- /* @__PURE__ */ f(l, {
52
+ /* @__PURE__ */ p(u, {
52
53
  path: "dashboard/dashboard-page",
53
- element: M("technospam.dashboard", /* @__PURE__ */ f(h, {}))
54
+ element: N("technospam.dashboard", /* @__PURE__ */ p(g, {}))
54
55
  }),
55
- /* @__PURE__ */ f(l, {
56
+ /* @__PURE__ */ p(u, {
56
57
  path: "courses/courses-page",
57
- element: M("technospam.courses", /* @__PURE__ */ f(g, {}))
58
+ element: N("technospam.courses", /* @__PURE__ */ p(_, {}))
58
59
  }),
59
- /* @__PURE__ */ f(l, {
60
+ /* @__PURE__ */ p(u, {
60
61
  path: "courses/course-details-page",
61
- element: M("technospam.courses", /* @__PURE__ */ f(_, {}))
62
+ element: N("technospam.courses", /* @__PURE__ */ p(v, {}))
62
63
  }),
63
- /* @__PURE__ */ f(l, {
64
+ /* @__PURE__ */ p(u, {
64
65
  path: "courses/my-learning-page",
65
- element: M("technospam.courses", /* @__PURE__ */ f(v, {}))
66
+ element: N("technospam.courses", /* @__PURE__ */ p(y, {}))
66
67
  }),
67
- /* @__PURE__ */ f(l, {
68
+ /* @__PURE__ */ p(u, {
68
69
  path: "courses/instructors-page",
69
- element: /* @__PURE__ */ f(c, {
70
+ element: /* @__PURE__ */ p(l, {
70
71
  to: "../courses/courses-page",
71
72
  replace: !0
72
73
  })
73
74
  }),
74
- /* @__PURE__ */ f(l, {
75
+ /* @__PURE__ */ p(u, {
75
76
  path: "courses/instructor-profile-page",
76
- element: /* @__PURE__ */ f(c, {
77
+ element: /* @__PURE__ */ p(l, {
77
78
  to: "../courses/courses-page",
78
79
  replace: !0
79
80
  })
80
81
  }),
81
- /* @__PURE__ */ f(l, {
82
+ /* @__PURE__ */ p(u, {
82
83
  path: "applications/problems-page",
83
- element: M("technospam.problems", /* @__PURE__ */ f(y, {}))
84
+ element: N("technospam.problems", /* @__PURE__ */ p(b, {}))
84
85
  }),
85
- /* @__PURE__ */ f(l, {
86
+ /* @__PURE__ */ p(u, {
86
87
  path: "applications/problem-details-page",
87
- element: M("technospam.problems", /* @__PURE__ */ f(b, {}))
88
+ element: N("technospam.problems", /* @__PURE__ */ p(x, {}))
88
89
  }),
89
- /* @__PURE__ */ f(l, {
90
+ /* @__PURE__ */ p(u, {
90
91
  path: "applications/solutions-page",
91
- element: /* @__PURE__ */ f(c, {
92
+ element: /* @__PURE__ */ p(l, {
92
93
  to: "../applications/problems-page",
93
94
  replace: !0
94
95
  })
95
96
  }),
96
- /* @__PURE__ */ f(l, {
97
+ /* @__PURE__ */ p(u, {
97
98
  path: "applications/portfolio-page",
98
- element: M("technospam.portfolio", /* @__PURE__ */ f(k, {}))
99
+ element: N("technospam.portfolio", /* @__PURE__ */ p(A, {}))
99
100
  }),
100
- /* @__PURE__ */ f(l, {
101
+ /* @__PURE__ */ p(u, {
101
102
  path: "mentorship/mentors-page",
102
- element: M("technospam.mentorship", /* @__PURE__ */ f(x, {}))
103
+ element: N("technospam.mentorship", /* @__PURE__ */ p(S, {}))
103
104
  }),
104
- /* @__PURE__ */ f(l, {
105
+ /* @__PURE__ */ p(u, {
105
106
  path: "mentorship/mentor-profile-page",
106
- element: M("technospam.mentorship", /* @__PURE__ */ f(S, {}))
107
+ element: N("technospam.mentorship", /* @__PURE__ */ p(C, {}))
107
108
  }),
108
- /* @__PURE__ */ f(l, {
109
+ /* @__PURE__ */ p(u, {
109
110
  path: "mentorship/sessions-page",
110
- element: M("technospam.mentorship", /* @__PURE__ */ f(C, {}))
111
+ element: N("technospam.mentorship", /* @__PURE__ */ p(w, {}))
111
112
  }),
112
- /* @__PURE__ */ f(l, {
113
+ /* @__PURE__ */ p(u, {
113
114
  path: "mentorship/mentorship-page",
114
- element: /* @__PURE__ */ f(c, {
115
+ element: /* @__PURE__ */ p(l, {
115
116
  to: "../mentorship/mentors-page",
116
117
  replace: !0
117
118
  })
118
119
  }),
119
- /* @__PURE__ */ f(l, {
120
+ /* @__PURE__ */ p(u, {
120
121
  path: "mentorship/bookings-page",
121
- element: /* @__PURE__ */ f(c, {
122
+ element: /* @__PURE__ */ p(l, {
122
123
  to: "../mentorship/sessions-page",
123
124
  replace: !0
124
125
  })
125
126
  }),
126
- /* @__PURE__ */ f(l, {
127
+ /* @__PURE__ */ p(u, {
127
128
  path: "hackathons/hackathons-page",
128
- element: M("technospam.hackathons", /* @__PURE__ */ f(w, {}))
129
+ element: N("technospam.hackathons", /* @__PURE__ */ p(T, {}))
129
130
  }),
130
- /* @__PURE__ */ f(l, {
131
+ /* @__PURE__ */ p(u, {
131
132
  path: "hackathons/hackathon-details-page",
132
- element: M("technospam.hackathons", /* @__PURE__ */ f(T, {}))
133
+ element: N("technospam.hackathons", /* @__PURE__ */ p(E, {}))
133
134
  }),
134
- /* @__PURE__ */ f(l, {
135
+ /* @__PURE__ */ p(u, {
135
136
  path: "hackathons/events-page",
136
- element: /* @__PURE__ */ f(c, {
137
+ element: /* @__PURE__ */ p(l, {
137
138
  to: "../hackathons/hackathons-page",
138
139
  replace: !0
139
140
  })
140
141
  }),
141
- /* @__PURE__ */ f(l, {
142
+ /* @__PURE__ */ p(u, {
142
143
  path: "hackathons/teams-page",
143
- element: /* @__PURE__ */ f(c, {
144
+ element: /* @__PURE__ */ p(l, {
144
145
  to: "../hackathons/hackathons-page",
145
146
  replace: !0
146
147
  })
147
148
  }),
148
- /* @__PURE__ */ f(l, {
149
+ /* @__PURE__ */ p(u, {
149
150
  path: "analytics/analytics-page",
150
- element: M("technospam.analytics", /* @__PURE__ */ f(E, {}))
151
+ element: N("technospam.analytics", /* @__PURE__ */ p(D, {}))
151
152
  }),
152
- /* @__PURE__ */ f(l, {
153
+ /* @__PURE__ */ p(u, {
153
154
  path: "analytics/progress-page",
154
- element: /* @__PURE__ */ f(c, {
155
+ element: /* @__PURE__ */ p(l, {
155
156
  to: "../analytics/analytics-page",
156
157
  replace: !0
157
158
  })
158
159
  }),
159
- /* @__PURE__ */ f(l, {
160
+ /* @__PURE__ */ p(u, {
160
161
  path: "analytics/achievements-page",
161
- element: /* @__PURE__ */ f(c, {
162
+ element: /* @__PURE__ */ p(l, {
162
163
  to: "../analytics/analytics-page",
163
164
  replace: !0
164
165
  })
165
166
  }),
166
- /* @__PURE__ */ f(l, {
167
+ /* @__PURE__ */ p(u, {
167
168
  path: "analytics/reports-page",
168
- element: /* @__PURE__ */ f(c, {
169
+ element: /* @__PURE__ */ p(l, {
169
170
  to: "../analytics/analytics-page",
170
171
  replace: !0
171
172
  })
172
173
  }),
173
- /* @__PURE__ */ f(l, {
174
+ /* @__PURE__ */ p(u, {
174
175
  path: "admin/admin-dashboard-page",
175
- element: M("technospam.admin", /* @__PURE__ */ f(D, {}))
176
+ element: N("technospam.admin", /* @__PURE__ */ p(O, {}))
176
177
  }),
177
- /* @__PURE__ */ f(l, {
178
+ /* @__PURE__ */ p(u, {
178
179
  path: "admin/audit-reports-page",
179
- element: /* @__PURE__ */ f(c, {
180
+ element: /* @__PURE__ */ p(l, {
180
181
  to: "../admin/admin-dashboard-page",
181
182
  replace: !0
182
183
  })
183
184
  }),
184
- /* @__PURE__ */ f(l, {
185
+ /* @__PURE__ */ p(u, {
185
186
  path: "study-planner/study-planner-page",
186
- element: M("technospam.studyPlanner", /* @__PURE__ */ f(O, {}))
187
+ element: N("technospam.studyPlanner", /* @__PURE__ */ p(k, {}))
187
188
  }),
188
- /* @__PURE__ */ f(l, {
189
+ /* @__PURE__ */ p(u, {
189
190
  path: "study-planner/*",
190
- element: /* @__PURE__ */ f(c, {
191
+ element: /* @__PURE__ */ p(l, {
191
192
  to: "../study-planner/study-planner-page",
192
193
  replace: !0
193
194
  })
194
195
  }),
195
- /* @__PURE__ */ f(l, {
196
+ /* @__PURE__ */ p(u, {
196
197
  path: "open-source/*",
197
- element: /* @__PURE__ */ f(c, {
198
+ element: /* @__PURE__ */ p(l, {
198
199
  to: "../dashboard/dashboard-page",
199
200
  replace: !0
200
201
  })
201
202
  }),
202
- /* @__PURE__ */ f(l, {
203
+ /* @__PURE__ */ p(u, {
203
204
  path: "knowledge-base/*",
204
- element: /* @__PURE__ */ f(c, {
205
+ element: /* @__PURE__ */ p(l, {
205
206
  to: "../dashboard/dashboard-page",
206
207
  replace: !0
207
208
  })
208
209
  }),
209
- /* @__PURE__ */ f(l, {
210
+ /* @__PURE__ */ p(u, {
210
211
  path: "*",
211
- element: /* @__PURE__ */ f(c, {
212
+ element: /* @__PURE__ */ p(l, {
212
213
  to: "../dashboard/dashboard-page",
213
214
  replace: !0
214
215
  })
215
216
  })
216
- ] })
217
+ ] }) })
217
218
  });
218
219
  }
219
220
  //#endregion
220
- export { P as TechnoSpamRoutes };
221
+ export { F as TechnoSpamRoutes };
221
222
 
222
223
  //# 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 } 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 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/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 <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/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 </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';\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 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/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/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 +1 @@
1
- {"version":3,"file":"PageLayout.d.ts","sourceRoot":"","sources":["../../../src/technospam/components/PageLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOvC,UAAU,eAAe;IACvB,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,WAAW,EACX,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,IAAY,GACb,EAAE,eAAe,+BAuCjB"}
1
+ {"version":3,"file":"PageLayout.d.ts","sourceRoot":"","sources":["../../../src/technospam/components/PageLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQvC,UAAU,eAAe;IACvB,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,WAAW,EACX,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,IAAY,GACb,EAAE,eAAe,+BAwCjB"}
@@ -1,51 +1,52 @@
1
1
  import { useTechnoSpamNavigate as e } from "../providers/TechnoSpamProvider.js";
2
2
  import { useNativeControls as t } from "../hooks/useNativeControls.js";
3
- import { cn as n } from "../utils/cn.js";
4
- import { ArrowLeft as r } from "lucide-react";
5
- import { jsx as i, jsxs as a } from "react/jsx-runtime";
6
- import { AuroraBackground as o } from "@burdenoff/fe-libs/ui";
3
+ import { useTr as n } from "../hooks/useTr.js";
4
+ import { cn as r } from "../utils/cn.js";
5
+ import { ArrowLeft as i } from "lucide-react";
6
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
7
+ import { AuroraBackground as s } from "@burdenoff/fe-libs/ui";
7
8
  //#region src/technospam/components/PageLayout.tsx
8
- function s({ title: s, description: c, actions: l, children: u, backPath: d, hero: f = !1 }) {
9
- let p = e(), { impact: m } = t();
10
- return /* @__PURE__ */ a("div", {
9
+ function c({ title: c, description: l, actions: u, children: d, backPath: f, hero: p = !1 }) {
10
+ let m = e(), { impact: h } = t(), g = n();
11
+ return /* @__PURE__ */ o("div", {
11
12
  className: "flex h-full flex-col bg-bg-surface",
12
- children: [/* @__PURE__ */ a("div", {
13
- className: n("relative flex flex-col gap-4 overflow-hidden border-b border-border-seam px-6 py-5 sm:flex-row sm:items-start sm:justify-between", f ? "bg-accent-primary/12" : "bg-bg-surface"),
13
+ children: [/* @__PURE__ */ o("div", {
14
+ className: r("relative flex flex-col gap-4 overflow-hidden border-b border-border-seam px-6 py-5 sm:flex-row sm:items-start sm:justify-between", p ? "bg-accent-primary/12" : "bg-bg-surface"),
14
15
  children: [
15
- f ? /* @__PURE__ */ i(o, { intensity: "subtle" }) : null,
16
- /* @__PURE__ */ a("div", {
16
+ p ? /* @__PURE__ */ a(s, { intensity: "subtle" }) : null,
17
+ /* @__PURE__ */ o("div", {
17
18
  className: "relative flex min-w-0 flex-col gap-1",
18
19
  children: [
19
- d ? /* @__PURE__ */ a("button", {
20
+ f ? /* @__PURE__ */ o("button", {
20
21
  type: "button",
21
22
  onClick: () => {
22
- m("light"), p(d);
23
+ h("light"), m(f);
23
24
  },
24
25
  className: "flex w-fit items-center gap-1 text-sm text-text-secondary transition-colors hover:text-text-primary focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--color-focus-ring)]",
25
- children: [/* @__PURE__ */ i(r, { size: 15 }), "Back"]
26
+ children: [/* @__PURE__ */ a(i, { size: 15 }), g("technospam.common.back", "Back")]
26
27
  }) : null,
27
- /* @__PURE__ */ i("h1", {
28
+ /* @__PURE__ */ a("h1", {
28
29
  className: "truncate text-xl font-semibold text-text-primary sm:text-2xl",
29
- children: s
30
+ children: c
30
31
  }),
31
- c ? /* @__PURE__ */ i("p", {
32
+ l ? /* @__PURE__ */ a("p", {
32
33
  className: "max-w-2xl text-sm text-text-secondary",
33
- children: c
34
+ children: l
34
35
  }) : null
35
36
  ]
36
37
  }),
37
- l ? /* @__PURE__ */ i("div", {
38
+ u ? /* @__PURE__ */ a("div", {
38
39
  className: "relative flex flex-wrap items-center gap-2",
39
- children: l
40
+ children: u
40
41
  }) : null
41
42
  ]
42
- }), /* @__PURE__ */ i("div", {
43
+ }), /* @__PURE__ */ a("div", {
43
44
  className: "flex-1 overflow-y-auto p-6",
44
- children: u
45
+ children: d
45
46
  })]
46
47
  });
47
48
  }
48
49
  //#endregion
49
- export { s as PageLayout };
50
+ export { c as PageLayout };
50
51
 
51
52
  //# sourceMappingURL=PageLayout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PageLayout.js","names":[],"sources":["../../../src/technospam/components/PageLayout.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { ArrowLeft } from 'lucide-react';\nimport { AuroraBackground } from '@burdenoff/fe-libs/ui';\nimport { useTechnoSpamNavigate } from '../providers/TechnoSpamProvider';\nimport { useNativeControls } from '../hooks/useNativeControls';\nimport { cn } from '../utils/cn';\n\ninterface PageLayoutProps {\n title: ReactNode;\n description?: ReactNode;\n actions?: ReactNode;\n children: ReactNode;\n backPath?: string;\n /** Render the page header with the living-glass aurora backdrop (module hero). */\n hero?: boolean;\n}\n\n/**\n * Consistent page chrome for every TechnoSpam module page: a header band\n * (optionally with the aurora hero backdrop), an optional back affordance, an\n * actions slot, and a scrollable body. Mirrors the platform page pattern so\n * TechnoSpam feels native to the shell.\n */\nexport function PageLayout({\n title,\n description,\n actions,\n children,\n backPath,\n hero = false,\n}: PageLayoutProps) {\n const navigate = useTechnoSpamNavigate();\n const { impact } = useNativeControls();\n\n return (\n <div className=\"flex h-full flex-col bg-bg-surface\">\n <div\n className={cn(\n 'relative flex flex-col gap-4 overflow-hidden border-b border-border-seam px-6 py-5 sm:flex-row sm:items-start sm:justify-between',\n hero ? 'bg-accent-primary/12' : 'bg-bg-surface'\n )}\n >\n {hero ? <AuroraBackground intensity=\"subtle\" /> : null}\n <div className=\"relative flex min-w-0 flex-col gap-1\">\n {backPath ? (\n <button\n type=\"button\"\n onClick={() => {\n void impact('light');\n navigate(backPath);\n }}\n className=\"flex w-fit items-center gap-1 text-sm text-text-secondary transition-colors hover:text-text-primary focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--color-focus-ring)]\"\n >\n <ArrowLeft size={15} />\n Back\n </button>\n ) : null}\n <h1 className=\"truncate text-xl font-semibold text-text-primary sm:text-2xl\">{title}</h1>\n {description ? (\n <p className=\"max-w-2xl text-sm text-text-secondary\">{description}</p>\n ) : null}\n </div>\n {actions ? (\n <div className=\"relative flex flex-wrap items-center gap-2\">{actions}</div>\n ) : null}\n </div>\n <div className=\"flex-1 overflow-y-auto p-6\">{children}</div>\n </div>\n );\n}\n"],"mappings":";;;;;;;AAuBA,SAAgB,EAAW,EACzB,UACA,gBACA,YACA,aACA,aACA,UAAO,MACW;CAClB,IAAM,IAAW,GAAuB,EAClC,EAAE,cAAW,GAAmB;AAEtC,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD;GACE,WAAW,EACT,oIACA,IAAO,yBAAyB,gBACjC;aAJH;IAMG,IAAO,kBAAC,GAAD,EAAkB,WAAU,UAAW,CAAA,GAAG;IAClD,kBAAC,OAAD;KAAK,WAAU;eAAf;MACG,IACC,kBAAC,UAAD;OACE,MAAK;OACL,eAAe;AAEb,QADK,EAAO,QAAQ,EACpB,EAAS,EAAS;;OAEpB,WAAU;iBANZ,CAQE,kBAAC,GAAD,EAAW,MAAM,IAAM,CAAA,EAAA,OAEhB;WACP;MACJ,kBAAC,MAAD;OAAI,WAAU;iBAAgE;OAAW,CAAA;MACxF,IACC,kBAAC,KAAD;OAAG,WAAU;iBAAyC;OAAgB,CAAA,GACpE;MACA;;IACL,IACC,kBAAC,OAAD;KAAK,WAAU;eAA8C;KAAc,CAAA,GACzE;IACA;MACN,kBAAC,OAAD;GAAK,WAAU;GAA8B;GAAe,CAAA,CACxD"}
1
+ {"version":3,"file":"PageLayout.js","names":[],"sources":["../../../src/technospam/components/PageLayout.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { ArrowLeft } from 'lucide-react';\nimport { AuroraBackground } from '@burdenoff/fe-libs/ui';\nimport { useTechnoSpamNavigate } from '../providers/TechnoSpamProvider';\nimport { useNativeControls } from '../hooks/useNativeControls';\nimport { useTr } from '../hooks/useTr';\nimport { cn } from '../utils/cn';\n\ninterface PageLayoutProps {\n title: ReactNode;\n description?: ReactNode;\n actions?: ReactNode;\n children: ReactNode;\n backPath?: string;\n /** Render the page header with the living-glass aurora backdrop (module hero). */\n hero?: boolean;\n}\n\n/**\n * Consistent page chrome for every TechnoSpam module page: a header band\n * (optionally with the aurora hero backdrop), an optional back affordance, an\n * actions slot, and a scrollable body. Mirrors the platform page pattern so\n * TechnoSpam feels native to the shell.\n */\nexport function PageLayout({\n title,\n description,\n actions,\n children,\n backPath,\n hero = false,\n}: PageLayoutProps) {\n const navigate = useTechnoSpamNavigate();\n const { impact } = useNativeControls();\n const tr = useTr();\n\n return (\n <div className=\"flex h-full flex-col bg-bg-surface\">\n <div\n className={cn(\n 'relative flex flex-col gap-4 overflow-hidden border-b border-border-seam px-6 py-5 sm:flex-row sm:items-start sm:justify-between',\n hero ? 'bg-accent-primary/12' : 'bg-bg-surface'\n )}\n >\n {hero ? <AuroraBackground intensity=\"subtle\" /> : null}\n <div className=\"relative flex min-w-0 flex-col gap-1\">\n {backPath ? (\n <button\n type=\"button\"\n onClick={() => {\n void impact('light');\n navigate(backPath);\n }}\n className=\"flex w-fit items-center gap-1 text-sm text-text-secondary transition-colors hover:text-text-primary focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--color-focus-ring)]\"\n >\n <ArrowLeft size={15} />\n {tr('technospam.common.back', 'Back')}\n </button>\n ) : null}\n <h1 className=\"truncate text-xl font-semibold text-text-primary sm:text-2xl\">{title}</h1>\n {description ? (\n <p className=\"max-w-2xl text-sm text-text-secondary\">{description}</p>\n ) : null}\n </div>\n {actions ? (\n <div className=\"relative flex flex-wrap items-center gap-2\">{actions}</div>\n ) : null}\n </div>\n <div className=\"flex-1 overflow-y-auto p-6\">{children}</div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAwBA,SAAgB,EAAW,EACzB,UACA,gBACA,YACA,aACA,aACA,UAAO,MACW;CAClB,IAAM,IAAW,GAAuB,EAClC,EAAE,cAAW,GAAmB,EAChC,IAAK,GAAO;AAElB,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD;GACE,WAAW,EACT,oIACA,IAAO,yBAAyB,gBACjC;aAJH;IAMG,IAAO,kBAAC,GAAD,EAAkB,WAAU,UAAW,CAAA,GAAG;IAClD,kBAAC,OAAD;KAAK,WAAU;eAAf;MACG,IACC,kBAAC,UAAD;OACE,MAAK;OACL,eAAe;AAEb,QADK,EAAO,QAAQ,EACpB,EAAS,EAAS;;OAEpB,WAAU;iBANZ,CAQE,kBAAC,GAAD,EAAW,MAAM,IAAM,CAAA,EACtB,EAAG,0BAA0B,OAAO,CAC9B;WACP;MACJ,kBAAC,MAAD;OAAI,WAAU;iBAAgE;OAAW,CAAA;MACxF,IACC,kBAAC,KAAD;OAAG,WAAU;iBAAyC;OAAgB,CAAA,GACpE;MACA;;IACL,IACC,kBAAC,OAAD;KAAK,WAAU;eAA8C;KAAc,CAAA,GACzE;IACA;MACN,kBAAC,OAAD;GAAK,WAAU;GAA8B;GAAe,CAAA,CACxD"}
@@ -11,7 +11,7 @@ export declare function EmptyView({ title, description, action, icon, }: {
11
11
  icon?: ReactNode;
12
12
  }): import("react").JSX.Element;
13
13
  /** Consistent error state, surfaced from a GraphQL/network error. */
14
- export declare function ErrorView({ title, error, }: {
14
+ export declare function ErrorView({ title, error }: {
15
15
  title?: string;
16
16
  error?: {
17
17
  message?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"StateViews.d.ts","sourceRoot":"","sources":["../../../src/technospam/components/StateViews.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,WAAW,EACX,MAAM,EACN,IAAI,GACL,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,+BAWA;AAED,qEAAqE;AACrE,wBAAgB,SAAS,CAAC,EACxB,KAAgC,EAChC,KAAK,GACN,EAAE;IACD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9B,+BAYA;AAED,oCAAoC;AACpC,wBAAgB,WAAW,CAAC,EAAE,KAAS,EAAE,MAAe,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,+BAQ9F;AAED,uCAAuC;AACvC,wBAAgB,WAAW,CAAC,EAAE,KAAS,EAAE,MAAe,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,+BAQ9F"}
1
+ {"version":3,"file":"StateViews.d.ts","sourceRoot":"","sources":["../../../src/technospam/components/StateViews.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,WAAW,EACX,MAAM,EACN,IAAI,GACL,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,+BAWA;AAED,qEAAqE;AACrE,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,+BAe3F;AAED,oCAAoC;AACpC,wBAAgB,WAAW,CAAC,EAAE,KAAS,EAAE,MAAe,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,+BAQ9F;AAED,uCAAuC;AACvC,wBAAgB,WAAW,CAAC,EAAE,KAAS,EAAE,MAAe,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,+BAQ9F"}