@burdenoff/microfe-technospam 2026.509.101

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 (202) hide show
  1. package/README.md +12 -0
  2. package/dist/dev/main.d.ts +2 -0
  3. package/dist/dev/main.d.ts.map +1 -0
  4. package/dist/generated/global-operations.d.ts +2 -0
  5. package/dist/generated/global-operations.d.ts.map +1 -0
  6. package/dist/generated/global-types.d.ts +18199 -0
  7. package/dist/generated/global-types.d.ts.map +1 -0
  8. package/dist/generated/wspace-operations.d.ts +2 -0
  9. package/dist/generated/wspace-operations.d.ts.map +1 -0
  10. package/dist/generated/wspace-types.d.ts +43046 -0
  11. package/dist/generated/wspace-types.d.ts.map +1 -0
  12. package/dist/index.d.ts +2 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +5 -0
  15. package/dist/technospam/TechnoSpamRoot.d.ts +5 -0
  16. package/dist/technospam/TechnoSpamRoot.d.ts.map +1 -0
  17. package/dist/technospam/TechnoSpamRoot.js +482 -0
  18. package/dist/technospam/TechnoSpamRoot.js.map +1 -0
  19. package/dist/technospam/TechnoSpamRoutes.d.ts +2 -0
  20. package/dist/technospam/TechnoSpamRoutes.d.ts.map +1 -0
  21. package/dist/technospam/TechnoSpamRoutes.js +191 -0
  22. package/dist/technospam/TechnoSpamRoutes.js.map +1 -0
  23. package/dist/technospam/index.d.ts +5 -0
  24. package/dist/technospam/index.d.ts.map +1 -0
  25. package/dist/technospam/index.js +3 -0
  26. package/dist/technospam/pages/AdminAdminDashboardPagePage.d.ts +2 -0
  27. package/dist/technospam/pages/AdminAdminDashboardPagePage.d.ts.map +1 -0
  28. package/dist/technospam/pages/AdminAdminDashboardPagePage.js +269 -0
  29. package/dist/technospam/pages/AdminAdminDashboardPagePage.js.map +1 -0
  30. package/dist/technospam/pages/AdminAuditReportsPagePage.d.ts +2 -0
  31. package/dist/technospam/pages/AdminAuditReportsPagePage.d.ts.map +1 -0
  32. package/dist/technospam/pages/AdminAuditReportsPagePage.js +179 -0
  33. package/dist/technospam/pages/AdminAuditReportsPagePage.js.map +1 -0
  34. package/dist/technospam/pages/AnalyticsAchievementsPagePage.d.ts +2 -0
  35. package/dist/technospam/pages/AnalyticsAchievementsPagePage.d.ts.map +1 -0
  36. package/dist/technospam/pages/AnalyticsAchievementsPagePage.js +149 -0
  37. package/dist/technospam/pages/AnalyticsAchievementsPagePage.js.map +1 -0
  38. package/dist/technospam/pages/AnalyticsAnalyticsPagePage.d.ts +2 -0
  39. package/dist/technospam/pages/AnalyticsAnalyticsPagePage.d.ts.map +1 -0
  40. package/dist/technospam/pages/AnalyticsAnalyticsPagePage.js +260 -0
  41. package/dist/technospam/pages/AnalyticsAnalyticsPagePage.js.map +1 -0
  42. package/dist/technospam/pages/AnalyticsProgressPagePage.d.ts +2 -0
  43. package/dist/technospam/pages/AnalyticsProgressPagePage.d.ts.map +1 -0
  44. package/dist/technospam/pages/AnalyticsProgressPagePage.js +215 -0
  45. package/dist/technospam/pages/AnalyticsProgressPagePage.js.map +1 -0
  46. package/dist/technospam/pages/AnalyticsReportsPagePage.d.ts +2 -0
  47. package/dist/technospam/pages/AnalyticsReportsPagePage.d.ts.map +1 -0
  48. package/dist/technospam/pages/AnalyticsReportsPagePage.js +145 -0
  49. package/dist/technospam/pages/AnalyticsReportsPagePage.js.map +1 -0
  50. package/dist/technospam/pages/ApplicationsPortfolioPagePage.d.ts +2 -0
  51. package/dist/technospam/pages/ApplicationsPortfolioPagePage.d.ts.map +1 -0
  52. package/dist/technospam/pages/ApplicationsPortfolioPagePage.js +227 -0
  53. package/dist/technospam/pages/ApplicationsPortfolioPagePage.js.map +1 -0
  54. package/dist/technospam/pages/ApplicationsProblemDetailsPagePage.d.ts +2 -0
  55. package/dist/technospam/pages/ApplicationsProblemDetailsPagePage.d.ts.map +1 -0
  56. package/dist/technospam/pages/ApplicationsProblemDetailsPagePage.js +194 -0
  57. package/dist/technospam/pages/ApplicationsProblemDetailsPagePage.js.map +1 -0
  58. package/dist/technospam/pages/ApplicationsProblemsPagePage.d.ts +2 -0
  59. package/dist/technospam/pages/ApplicationsProblemsPagePage.d.ts.map +1 -0
  60. package/dist/technospam/pages/ApplicationsProblemsPagePage.js +203 -0
  61. package/dist/technospam/pages/ApplicationsProblemsPagePage.js.map +1 -0
  62. package/dist/technospam/pages/ApplicationsSolutionsPagePage.d.ts +2 -0
  63. package/dist/technospam/pages/ApplicationsSolutionsPagePage.d.ts.map +1 -0
  64. package/dist/technospam/pages/ApplicationsSolutionsPagePage.js +182 -0
  65. package/dist/technospam/pages/ApplicationsSolutionsPagePage.js.map +1 -0
  66. package/dist/technospam/pages/CoursesCourseDetailsPagePage.d.ts +2 -0
  67. package/dist/technospam/pages/CoursesCourseDetailsPagePage.d.ts.map +1 -0
  68. package/dist/technospam/pages/CoursesCourseDetailsPagePage.js +261 -0
  69. package/dist/technospam/pages/CoursesCourseDetailsPagePage.js.map +1 -0
  70. package/dist/technospam/pages/CoursesCoursesPagePage.d.ts +2 -0
  71. package/dist/technospam/pages/CoursesCoursesPagePage.d.ts.map +1 -0
  72. package/dist/technospam/pages/CoursesCoursesPagePage.js +179 -0
  73. package/dist/technospam/pages/CoursesCoursesPagePage.js.map +1 -0
  74. package/dist/technospam/pages/CoursesInstructorProfilePagePage.d.ts +2 -0
  75. package/dist/technospam/pages/CoursesInstructorProfilePagePage.d.ts.map +1 -0
  76. package/dist/technospam/pages/CoursesInstructorProfilePagePage.js +346 -0
  77. package/dist/technospam/pages/CoursesInstructorProfilePagePage.js.map +1 -0
  78. package/dist/technospam/pages/CoursesInstructorsPagePage.d.ts +2 -0
  79. package/dist/technospam/pages/CoursesInstructorsPagePage.d.ts.map +1 -0
  80. package/dist/technospam/pages/CoursesInstructorsPagePage.js +104 -0
  81. package/dist/technospam/pages/CoursesInstructorsPagePage.js.map +1 -0
  82. package/dist/technospam/pages/CoursesMyLearningPagePage.d.ts +2 -0
  83. package/dist/technospam/pages/CoursesMyLearningPagePage.d.ts.map +1 -0
  84. package/dist/technospam/pages/CoursesMyLearningPagePage.js +187 -0
  85. package/dist/technospam/pages/CoursesMyLearningPagePage.js.map +1 -0
  86. package/dist/technospam/pages/DashboardDashboardPagePage.d.ts +2 -0
  87. package/dist/technospam/pages/DashboardDashboardPagePage.d.ts.map +1 -0
  88. package/dist/technospam/pages/DashboardDashboardPagePage.js +344 -0
  89. package/dist/technospam/pages/DashboardDashboardPagePage.js.map +1 -0
  90. package/dist/technospam/pages/HackathonsEventsPagePage.d.ts +2 -0
  91. package/dist/technospam/pages/HackathonsEventsPagePage.d.ts.map +1 -0
  92. package/dist/technospam/pages/HackathonsEventsPagePage.js +121 -0
  93. package/dist/technospam/pages/HackathonsEventsPagePage.js.map +1 -0
  94. package/dist/technospam/pages/HackathonsHackathonDetailsPagePage.d.ts +2 -0
  95. package/dist/technospam/pages/HackathonsHackathonDetailsPagePage.d.ts.map +1 -0
  96. package/dist/technospam/pages/HackathonsHackathonDetailsPagePage.js +250 -0
  97. package/dist/technospam/pages/HackathonsHackathonDetailsPagePage.js.map +1 -0
  98. package/dist/technospam/pages/HackathonsHackathonsPagePage.d.ts +2 -0
  99. package/dist/technospam/pages/HackathonsHackathonsPagePage.d.ts.map +1 -0
  100. package/dist/technospam/pages/HackathonsHackathonsPagePage.js +162 -0
  101. package/dist/technospam/pages/HackathonsHackathonsPagePage.js.map +1 -0
  102. package/dist/technospam/pages/HackathonsTeamsPagePage.d.ts +2 -0
  103. package/dist/technospam/pages/HackathonsTeamsPagePage.d.ts.map +1 -0
  104. package/dist/technospam/pages/HackathonsTeamsPagePage.js +185 -0
  105. package/dist/technospam/pages/HackathonsTeamsPagePage.js.map +1 -0
  106. package/dist/technospam/pages/KnowledgeBaseArticleDetailsPagePage.d.ts +2 -0
  107. package/dist/technospam/pages/KnowledgeBaseArticleDetailsPagePage.d.ts.map +1 -0
  108. package/dist/technospam/pages/KnowledgeBaseArticleDetailsPagePage.js +181 -0
  109. package/dist/technospam/pages/KnowledgeBaseArticleDetailsPagePage.js.map +1 -0
  110. package/dist/technospam/pages/KnowledgeBaseArticlesPagePage.d.ts +2 -0
  111. package/dist/technospam/pages/KnowledgeBaseArticlesPagePage.d.ts.map +1 -0
  112. package/dist/technospam/pages/KnowledgeBaseArticlesPagePage.js +112 -0
  113. package/dist/technospam/pages/KnowledgeBaseArticlesPagePage.js.map +1 -0
  114. package/dist/technospam/pages/KnowledgeBaseCategoriesPagePage.d.ts +2 -0
  115. package/dist/technospam/pages/KnowledgeBaseCategoriesPagePage.d.ts.map +1 -0
  116. package/dist/technospam/pages/KnowledgeBaseCategoriesPagePage.js +105 -0
  117. package/dist/technospam/pages/KnowledgeBaseCategoriesPagePage.js.map +1 -0
  118. package/dist/technospam/pages/KnowledgeBaseKnowledgeBasePagePage.d.ts +2 -0
  119. package/dist/technospam/pages/KnowledgeBaseKnowledgeBasePagePage.d.ts.map +1 -0
  120. package/dist/technospam/pages/KnowledgeBaseKnowledgeBasePagePage.js +165 -0
  121. package/dist/technospam/pages/KnowledgeBaseKnowledgeBasePagePage.js.map +1 -0
  122. package/dist/technospam/pages/MentorshipBookingsPagePage.d.ts +2 -0
  123. package/dist/technospam/pages/MentorshipBookingsPagePage.d.ts.map +1 -0
  124. package/dist/technospam/pages/MentorshipBookingsPagePage.js +188 -0
  125. package/dist/technospam/pages/MentorshipBookingsPagePage.js.map +1 -0
  126. package/dist/technospam/pages/MentorshipMentorProfilePagePage.d.ts +2 -0
  127. package/dist/technospam/pages/MentorshipMentorProfilePagePage.d.ts.map +1 -0
  128. package/dist/technospam/pages/MentorshipMentorProfilePagePage.js +310 -0
  129. package/dist/technospam/pages/MentorshipMentorProfilePagePage.js.map +1 -0
  130. package/dist/technospam/pages/MentorshipMentorsPagePage.d.ts +2 -0
  131. package/dist/technospam/pages/MentorshipMentorsPagePage.d.ts.map +1 -0
  132. package/dist/technospam/pages/MentorshipMentorsPagePage.js +128 -0
  133. package/dist/technospam/pages/MentorshipMentorsPagePage.js.map +1 -0
  134. package/dist/technospam/pages/MentorshipMentorshipPagePage.d.ts +2 -0
  135. package/dist/technospam/pages/MentorshipMentorshipPagePage.d.ts.map +1 -0
  136. package/dist/technospam/pages/MentorshipMentorshipPagePage.js +209 -0
  137. package/dist/technospam/pages/MentorshipMentorshipPagePage.js.map +1 -0
  138. package/dist/technospam/pages/MentorshipSessionsPagePage.d.ts +2 -0
  139. package/dist/technospam/pages/MentorshipSessionsPagePage.d.ts.map +1 -0
  140. package/dist/technospam/pages/MentorshipSessionsPagePage.js +170 -0
  141. package/dist/technospam/pages/MentorshipSessionsPagePage.js.map +1 -0
  142. package/dist/technospam/pages/OpenSourceContributionsPagePage.d.ts +2 -0
  143. package/dist/technospam/pages/OpenSourceContributionsPagePage.d.ts.map +1 -0
  144. package/dist/technospam/pages/OpenSourceContributionsPagePage.js +191 -0
  145. package/dist/technospam/pages/OpenSourceContributionsPagePage.js.map +1 -0
  146. package/dist/technospam/pages/OpenSourceOpenSourcePagePage.d.ts +2 -0
  147. package/dist/technospam/pages/OpenSourceOpenSourcePagePage.d.ts.map +1 -0
  148. package/dist/technospam/pages/OpenSourceOpenSourcePagePage.js +216 -0
  149. package/dist/technospam/pages/OpenSourceOpenSourcePagePage.js.map +1 -0
  150. package/dist/technospam/pages/OpenSourceProjectsPagePage.d.ts +2 -0
  151. package/dist/technospam/pages/OpenSourceProjectsPagePage.d.ts.map +1 -0
  152. package/dist/technospam/pages/OpenSourceProjectsPagePage.js +150 -0
  153. package/dist/technospam/pages/OpenSourceProjectsPagePage.js.map +1 -0
  154. package/dist/technospam/pages/StudyPlannerGoalsPagePage.d.ts +2 -0
  155. package/dist/technospam/pages/StudyPlannerGoalsPagePage.d.ts.map +1 -0
  156. package/dist/technospam/pages/StudyPlannerGoalsPagePage.js +161 -0
  157. package/dist/technospam/pages/StudyPlannerGoalsPagePage.js.map +1 -0
  158. package/dist/technospam/pages/StudyPlannerLearningPathDetailsPagePage.d.ts +2 -0
  159. package/dist/technospam/pages/StudyPlannerLearningPathDetailsPagePage.d.ts.map +1 -0
  160. package/dist/technospam/pages/StudyPlannerLearningPathDetailsPagePage.js +198 -0
  161. package/dist/technospam/pages/StudyPlannerLearningPathDetailsPagePage.js.map +1 -0
  162. package/dist/technospam/pages/StudyPlannerLearningPathsPagePage.d.ts +2 -0
  163. package/dist/technospam/pages/StudyPlannerLearningPathsPagePage.d.ts.map +1 -0
  164. package/dist/technospam/pages/StudyPlannerLearningPathsPagePage.js +105 -0
  165. package/dist/technospam/pages/StudyPlannerLearningPathsPagePage.js.map +1 -0
  166. package/dist/technospam/pages/StudyPlannerStudyPlanDetailsPagePage.d.ts +2 -0
  167. package/dist/technospam/pages/StudyPlannerStudyPlanDetailsPagePage.d.ts.map +1 -0
  168. package/dist/technospam/pages/StudyPlannerStudyPlanDetailsPagePage.js +161 -0
  169. package/dist/technospam/pages/StudyPlannerStudyPlanDetailsPagePage.js.map +1 -0
  170. package/dist/technospam/pages/StudyPlannerStudyPlanEditPagePage.d.ts +2 -0
  171. package/dist/technospam/pages/StudyPlannerStudyPlanEditPagePage.d.ts.map +1 -0
  172. package/dist/technospam/pages/StudyPlannerStudyPlanEditPagePage.js +127 -0
  173. package/dist/technospam/pages/StudyPlannerStudyPlanEditPagePage.js.map +1 -0
  174. package/dist/technospam/pages/StudyPlannerStudyPlannerPagePage.d.ts +2 -0
  175. package/dist/technospam/pages/StudyPlannerStudyPlannerPagePage.d.ts.map +1 -0
  176. package/dist/technospam/pages/StudyPlannerStudyPlannerPagePage.js +238 -0
  177. package/dist/technospam/pages/StudyPlannerStudyPlannerPagePage.js.map +1 -0
  178. package/dist/technospam/pages/StudyPlannerStudyPlansPagePage.d.ts +2 -0
  179. package/dist/technospam/pages/StudyPlannerStudyPlansPagePage.d.ts.map +1 -0
  180. package/dist/technospam/pages/StudyPlannerStudyPlansPagePage.js +113 -0
  181. package/dist/technospam/pages/StudyPlannerStudyPlansPagePage.js.map +1 -0
  182. package/dist/technospam/providers/TechnoSpamProvider.d.ts +6 -0
  183. package/dist/technospam/providers/TechnoSpamProvider.d.ts.map +1 -0
  184. package/dist/technospam/providers/TechnoSpamProvider.js +27 -0
  185. package/dist/technospam/providers/TechnoSpamProvider.js.map +1 -0
  186. package/dist/technospam/store/technospamStore.d.ts +190 -0
  187. package/dist/technospam/store/technospamStore.d.ts.map +1 -0
  188. package/dist/technospam/store/technospamStore.js +912 -0
  189. package/dist/technospam/store/technospamStore.js.map +1 -0
  190. package/dist/technospam/types/index.d.ts +51 -0
  191. package/dist/technospam/types/index.d.ts.map +1 -0
  192. package/dist/technospam/utils/cn.d.ts +4 -0
  193. package/dist/technospam/utils/cn.d.ts.map +1 -0
  194. package/dist/technospam/utils/i18n.d.ts +6 -0
  195. package/dist/technospam/utils/i18n.d.ts.map +1 -0
  196. package/dist/technospam/utils/i18n.js +15 -0
  197. package/dist/technospam/utils/i18n.js.map +1 -0
  198. package/dist/technospam/utils/navigation.d.ts +2 -0
  199. package/dist/technospam/utils/navigation.d.ts.map +1 -0
  200. package/dist/technospam/utils/navigation.js +8 -0
  201. package/dist/technospam/utils/navigation.js.map +1 -0
  202. package/package.json +107 -0
@@ -0,0 +1,203 @@
1
+ import { useTechnoSpamStore as e } from "../store/technospamStore.js";
2
+ import { useMemo as t, useState as n } from "react";
3
+ import { BarChart3 as r, CheckCircle as i, Code as a, Search as o } from "lucide-react";
4
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
5
+ import { Button as l, Card as u, CardContent as d, CardHeader as f, CardTitle as p, Input as m } from "@burdenoff/fe-libs/ui";
6
+ //#region src/technospam/pages/ApplicationsProblemsPagePage.tsx
7
+ function h() {
8
+ let { problems: h, userStats: g } = e(), [_, v] = n(""), [y, b] = n("all"), x = t(() => h.filter((e) => {
9
+ let t = _ === "" || e.title.toLowerCase().includes(_.toLowerCase()) || e.category.toLowerCase().includes(_.toLowerCase()) || e.tags.some((e) => e.toLowerCase().includes(_.toLowerCase())), n = y === "all" || e.difficulty === y;
10
+ return t && n;
11
+ }), [
12
+ h,
13
+ _,
14
+ y
15
+ ]), S = h.filter((e) => e.isSolved).length, C = (e) => {
16
+ switch (e) {
17
+ case "easy": return "bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400";
18
+ case "medium": return "bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400";
19
+ case "hard": return "bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400";
20
+ default: return "";
21
+ }
22
+ };
23
+ return /* @__PURE__ */ c("div", {
24
+ className: "space-y-6 p-6",
25
+ children: [
26
+ /* @__PURE__ */ s("div", {
27
+ className: "flex items-center justify-between",
28
+ children: /* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("h1", {
29
+ className: "text-2xl font-semibold text-foreground",
30
+ children: "Coding Problems"
31
+ }), /* @__PURE__ */ s("p", {
32
+ className: "text-sm text-muted-foreground",
33
+ children: "Practice and sharpen your problem-solving skills"
34
+ })] })
35
+ }),
36
+ /* @__PURE__ */ c("div", {
37
+ className: "grid gap-4 md:grid-cols-3",
38
+ children: [
39
+ /* @__PURE__ */ c(u, { children: [/* @__PURE__ */ c(f, {
40
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
41
+ children: [/* @__PURE__ */ s(p, {
42
+ className: "text-sm font-medium",
43
+ children: "Total Problems"
44
+ }), /* @__PURE__ */ s(a, { className: "h-4 w-4 text-muted-foreground" })]
45
+ }), /* @__PURE__ */ s(d, { children: /* @__PURE__ */ s("div", {
46
+ className: "text-2xl font-bold",
47
+ children: h.length
48
+ }) })] }),
49
+ /* @__PURE__ */ c(u, { children: [/* @__PURE__ */ c(f, {
50
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
51
+ children: [/* @__PURE__ */ s(p, {
52
+ className: "text-sm font-medium",
53
+ children: "Solved"
54
+ }), /* @__PURE__ */ s(i, { className: "h-4 w-4 text-green-500" })]
55
+ }), /* @__PURE__ */ c(d, { children: [/* @__PURE__ */ s("div", {
56
+ className: "text-2xl font-bold",
57
+ children: S
58
+ }), /* @__PURE__ */ c("p", {
59
+ className: "text-xs text-muted-foreground",
60
+ children: [g.problemsSolved, " lifetime"]
61
+ })] })] }),
62
+ /* @__PURE__ */ c(u, { children: [/* @__PURE__ */ c(f, {
63
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
64
+ children: [/* @__PURE__ */ s(p, {
65
+ className: "text-sm font-medium",
66
+ children: "Acceptance Avg"
67
+ }), /* @__PURE__ */ s(r, { className: "h-4 w-4 text-muted-foreground" })]
68
+ }), /* @__PURE__ */ s(d, { children: /* @__PURE__ */ c("div", {
69
+ className: "text-2xl font-bold",
70
+ children: [(h.reduce((e, t) => e + t.acceptanceRate, 0) / h.length).toFixed(1), "%"]
71
+ }) })] })
72
+ ]
73
+ }),
74
+ /* @__PURE__ */ s(u, { children: /* @__PURE__ */ s(d, {
75
+ className: "pt-6",
76
+ children: /* @__PURE__ */ c("div", {
77
+ className: "flex flex-col gap-4 sm:flex-row sm:items-center",
78
+ children: [/* @__PURE__ */ c("div", {
79
+ className: "relative flex-1",
80
+ children: [/* @__PURE__ */ s(o, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }), /* @__PURE__ */ s(m, {
81
+ placeholder: "Search problems, categories, tags...",
82
+ value: _,
83
+ onChange: (e) => v(e.target.value),
84
+ className: "pl-9"
85
+ })]
86
+ }), /* @__PURE__ */ s("div", {
87
+ className: "flex gap-2",
88
+ children: [
89
+ {
90
+ label: "All",
91
+ value: "all"
92
+ },
93
+ {
94
+ label: "Easy",
95
+ value: "easy"
96
+ },
97
+ {
98
+ label: "Medium",
99
+ value: "medium"
100
+ },
101
+ {
102
+ label: "Hard",
103
+ value: "hard"
104
+ }
105
+ ].map((e) => /* @__PURE__ */ s(l, {
106
+ variant: y === e.value ? "default" : "outline",
107
+ size: "sm",
108
+ onClick: () => b(e.value),
109
+ children: e.label
110
+ }, e.value))
111
+ })]
112
+ })
113
+ }) }),
114
+ /* @__PURE__ */ s(u, { children: /* @__PURE__ */ s(d, {
115
+ className: "pt-6",
116
+ children: x.length === 0 ? /* @__PURE__ */ s("p", {
117
+ className: "py-8 text-center text-sm text-muted-foreground",
118
+ children: "No problems match your filters"
119
+ }) : /* @__PURE__ */ s("div", {
120
+ className: "overflow-x-auto",
121
+ children: /* @__PURE__ */ c("table", {
122
+ className: "w-full text-sm",
123
+ children: [/* @__PURE__ */ s("thead", { children: /* @__PURE__ */ c("tr", {
124
+ className: "border-b text-left text-muted-foreground",
125
+ children: [
126
+ /* @__PURE__ */ s("th", {
127
+ className: "p-3 w-8",
128
+ children: "#"
129
+ }),
130
+ /* @__PURE__ */ s("th", {
131
+ className: "p-3",
132
+ children: "Title"
133
+ }),
134
+ /* @__PURE__ */ s("th", {
135
+ className: "p-3",
136
+ children: "Category"
137
+ }),
138
+ /* @__PURE__ */ s("th", {
139
+ className: "p-3",
140
+ children: "Difficulty"
141
+ }),
142
+ /* @__PURE__ */ s("th", {
143
+ className: "p-3",
144
+ children: "Acceptance"
145
+ }),
146
+ /* @__PURE__ */ s("th", {
147
+ className: "p-3",
148
+ children: "Company"
149
+ }),
150
+ /* @__PURE__ */ s("th", {
151
+ className: "p-3 text-right",
152
+ children: "Status"
153
+ })
154
+ ]
155
+ }) }), /* @__PURE__ */ s("tbody", { children: x.map((e, t) => /* @__PURE__ */ c("tr", {
156
+ className: "border-b hover:bg-muted/50",
157
+ children: [
158
+ /* @__PURE__ */ s("td", {
159
+ className: "p-3 text-muted-foreground",
160
+ children: t + 1
161
+ }),
162
+ /* @__PURE__ */ s("td", {
163
+ className: "p-3 font-medium",
164
+ children: e.title
165
+ }),
166
+ /* @__PURE__ */ s("td", {
167
+ className: "p-3 text-muted-foreground",
168
+ children: e.category
169
+ }),
170
+ /* @__PURE__ */ s("td", {
171
+ className: "p-3",
172
+ children: /* @__PURE__ */ s("span", {
173
+ className: `inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${C(e.difficulty)}`,
174
+ children: e.difficulty
175
+ })
176
+ }),
177
+ /* @__PURE__ */ c("td", {
178
+ className: "p-3 text-muted-foreground",
179
+ children: [e.acceptanceRate, "%"]
180
+ }),
181
+ /* @__PURE__ */ s("td", {
182
+ className: "p-3 text-muted-foreground",
183
+ children: e.company ?? "-"
184
+ }),
185
+ /* @__PURE__ */ s("td", {
186
+ className: "p-3 text-right",
187
+ children: e.isSolved ? /* @__PURE__ */ s(i, { className: "ml-auto h-4 w-4 text-green-500" }) : /* @__PURE__ */ s("span", {
188
+ className: "text-xs text-muted-foreground",
189
+ children: "Unsolved"
190
+ })
191
+ })
192
+ ]
193
+ }, e.id)) })]
194
+ })
195
+ })
196
+ }) })
197
+ ]
198
+ });
199
+ }
200
+ //#endregion
201
+ export { h as ApplicationsProblemsPagePage };
202
+
203
+ //# sourceMappingURL=ApplicationsProblemsPagePage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApplicationsProblemsPagePage.js","names":[],"sources":["../../../src/technospam/pages/ApplicationsProblemsPagePage.tsx"],"sourcesContent":["import { useState, useMemo } from 'react';\nimport {\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n Badge,\n Button,\n Input,\n} from '@burdenoff/fe-libs/ui';\nimport { Search, Code, CheckCircle, BarChart3 } from 'lucide-react';\nimport { useTechnoSpamStore } from '../store/technospamStore';\n\ntype DifficultyFilter = 'all' | 'easy' | 'medium' | 'hard';\n\nexport function ApplicationsProblemsPagePage() {\n const { problems, userStats } = useTechnoSpamStore();\n const [searchTerm, setSearchTerm] = useState('');\n const [difficultyFilter, setDifficultyFilter] = useState<DifficultyFilter>('all');\n\n const filteredProblems = useMemo(() => {\n return problems.filter((p) => {\n const matchesSearch =\n searchTerm === '' ||\n p.title.toLowerCase().includes(searchTerm.toLowerCase()) ||\n p.category.toLowerCase().includes(searchTerm.toLowerCase()) ||\n p.tags.some((t) => t.toLowerCase().includes(searchTerm.toLowerCase()));\n const matchesDifficulty = difficultyFilter === 'all' || p.difficulty === difficultyFilter;\n return matchesSearch && matchesDifficulty;\n });\n }, [problems, searchTerm, difficultyFilter]);\n\n const solvedCount = problems.filter((p) => p.isSolved).length;\n\n const difficultyColor = (d: string) => {\n switch (d) {\n case 'easy':\n return 'bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400';\n case 'medium':\n return 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400';\n case 'hard':\n return 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400';\n default:\n return '';\n }\n };\n\n const filters: { label: string; value: DifficultyFilter }[] = [\n { label: 'All', value: 'all' },\n { label: 'Easy', value: 'easy' },\n { label: 'Medium', value: 'medium' },\n { label: 'Hard', value: 'hard' },\n ];\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold text-foreground\">Coding Problems</h1>\n <p className=\"text-sm text-muted-foreground\">\n Practice and sharpen your problem-solving skills\n </p>\n </div>\n </div>\n\n {/* Stats */}\n <div className=\"grid gap-4 md:grid-cols-3\">\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Total Problems</CardTitle>\n <Code className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{problems.length}</div>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Solved</CardTitle>\n <CheckCircle className=\"h-4 w-4 text-green-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{solvedCount}</div>\n <p className=\"text-xs text-muted-foreground\">{userStats.problemsSolved} lifetime</p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Acceptance Avg</CardTitle>\n <BarChart3 className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">\n {(problems.reduce((sum, p) => sum + p.acceptanceRate, 0) / problems.length).toFixed(\n 1\n )}\n %\n </div>\n </CardContent>\n </Card>\n </div>\n\n {/* Filters */}\n <Card>\n <CardContent className=\"pt-6\">\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center\">\n <div className=\"relative flex-1\">\n <Search className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\n <Input\n placeholder=\"Search problems, categories, tags...\"\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n className=\"pl-9\"\n />\n </div>\n <div className=\"flex gap-2\">\n {filters.map((f) => (\n <Button\n key={f.value}\n variant={difficultyFilter === f.value ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setDifficultyFilter(f.value)}\n >\n {f.label}\n </Button>\n ))}\n </div>\n </div>\n </CardContent>\n </Card>\n\n {/* Problems Table */}\n <Card>\n <CardContent className=\"pt-6\">\n {filteredProblems.length === 0 ? (\n <p className=\"py-8 text-center text-sm text-muted-foreground\">\n No problems match your filters\n </p>\n ) : (\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b text-left text-muted-foreground\">\n <th className=\"p-3 w-8\">#</th>\n <th className=\"p-3\">Title</th>\n <th className=\"p-3\">Category</th>\n <th className=\"p-3\">Difficulty</th>\n <th className=\"p-3\">Acceptance</th>\n <th className=\"p-3\">Company</th>\n <th className=\"p-3 text-right\">Status</th>\n </tr>\n </thead>\n <tbody>\n {filteredProblems.map((problem, idx) => (\n <tr key={problem.id} className=\"border-b hover:bg-muted/50\">\n <td className=\"p-3 text-muted-foreground\">{idx + 1}</td>\n <td className=\"p-3 font-medium\">{problem.title}</td>\n <td className=\"p-3 text-muted-foreground\">{problem.category}</td>\n <td className=\"p-3\">\n <span\n className={`inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${difficultyColor(problem.difficulty)}`}\n >\n {problem.difficulty}\n </span>\n </td>\n <td className=\"p-3 text-muted-foreground\">{problem.acceptanceRate}%</td>\n <td className=\"p-3 text-muted-foreground\">{problem.company ?? '-'}</td>\n <td className=\"p-3 text-right\">\n {problem.isSolved ? (\n <CheckCircle className=\"ml-auto h-4 w-4 text-green-500\" />\n ) : (\n <span className=\"text-xs text-muted-foreground\">Unsolved</span>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function ApplicationsSolutionsPagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ApplicationsSolutionsPagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApplicationsSolutionsPagePage.d.ts","sourceRoot":"","sources":["../../../src/technospam/pages/ApplicationsSolutionsPagePage.tsx"],"names":[],"mappings":"AAiDA,wBAAgB,6BAA6B,4CAoK5C"}
@@ -0,0 +1,182 @@
1
+ import { useTechnoSpamStore as e } from "../store/technospamStore.js";
2
+ import { tWithFallback as t } from "../utils/i18n.js";
3
+ import { useI18n as n } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
4
+ import { CheckCircle as r, Clock as i, Code as a, Cpu as o } from "lucide-react";
5
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
6
+ import { Card as l, CardContent as u, CardHeader as d, CardTitle as f } from "@burdenoff/fe-libs/ui";
7
+ //#region src/technospam/pages/ApplicationsSolutionsPagePage.tsx
8
+ var p = [
9
+ {
10
+ problemId: "p1",
11
+ language: "TypeScript",
12
+ runtime: "68ms",
13
+ memory: "42.1 MB",
14
+ submittedAt: "2026-02-10T07:30:00Z",
15
+ status: "accepted"
16
+ },
17
+ {
18
+ problemId: "p2",
19
+ language: "Python",
20
+ runtime: "45ms",
21
+ memory: "38.7 MB",
22
+ submittedAt: "2026-02-09T14:15:00Z",
23
+ status: "accepted"
24
+ },
25
+ {
26
+ problemId: "p7",
27
+ language: "TypeScript",
28
+ runtime: "112ms",
29
+ memory: "45.3 MB",
30
+ submittedAt: "2026-02-08T10:20:00Z",
31
+ status: "accepted"
32
+ },
33
+ {
34
+ problemId: "p8",
35
+ language: "JavaScript",
36
+ runtime: "78ms",
37
+ memory: "40.9 MB",
38
+ submittedAt: "2026-02-07T18:45:00Z",
39
+ status: "accepted"
40
+ },
41
+ {
42
+ problemId: "p3",
43
+ language: "TypeScript",
44
+ runtime: "220ms",
45
+ memory: "55.2 MB",
46
+ submittedAt: "2026-02-06T09:00:00Z",
47
+ status: "time_limit"
48
+ }
49
+ ];
50
+ function m() {
51
+ let { t: m } = n(), h = (e, n, r) => t(m, e, n, r), { problems: g } = e(), _ = (e) => g.find((t) => t.id === e), v = (e) => {
52
+ switch (e) {
53
+ case "accepted": return {
54
+ label: h("technospam.solutions.status.accepted", "Accepted"),
55
+ className: "bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400"
56
+ };
57
+ case "time_limit": return {
58
+ label: h("technospam.solutions.status.timeLimit", "Time Limit"),
59
+ className: "bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400"
60
+ };
61
+ case "wrong_answer": return {
62
+ label: h("technospam.solutions.status.wrongAnswer", "Wrong Answer"),
63
+ className: "bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400"
64
+ };
65
+ default: return {
66
+ label: e,
67
+ className: ""
68
+ };
69
+ }
70
+ }, y = (e) => {
71
+ switch (e) {
72
+ case "easy": return "bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400";
73
+ case "medium": return "bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400";
74
+ case "hard": return "bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400";
75
+ default: return "";
76
+ }
77
+ }, b = p.filter((e) => e.status === "accepted").length;
78
+ return /* @__PURE__ */ c("div", {
79
+ className: "space-y-6 p-6",
80
+ children: [
81
+ /* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("h1", {
82
+ className: "text-2xl font-semibold text-foreground",
83
+ children: h("technospam.solutions.title", "My Solutions")
84
+ }), /* @__PURE__ */ s("p", {
85
+ className: "text-sm text-muted-foreground",
86
+ children: h("technospam.solutions.subtitle", "Review your submitted solutions and performance")
87
+ })] }),
88
+ /* @__PURE__ */ c("div", {
89
+ className: "grid gap-4 md:grid-cols-3",
90
+ children: [
91
+ /* @__PURE__ */ c(l, { children: [/* @__PURE__ */ c(d, {
92
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
93
+ children: [/* @__PURE__ */ s(f, {
94
+ className: "text-sm font-medium",
95
+ children: h("technospam.solutions.metrics.totalSubmissions.title", "Total Submissions")
96
+ }), /* @__PURE__ */ s(a, { className: "h-4 w-4 text-muted-foreground" })]
97
+ }), /* @__PURE__ */ s(u, { children: /* @__PURE__ */ s("div", {
98
+ className: "text-2xl font-bold",
99
+ children: p.length
100
+ }) })] }),
101
+ /* @__PURE__ */ c(l, { children: [/* @__PURE__ */ c(d, {
102
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
103
+ children: [/* @__PURE__ */ s(f, {
104
+ className: "text-sm font-medium",
105
+ children: h("technospam.solutions.metrics.accepted.title", "Accepted")
106
+ }), /* @__PURE__ */ s(r, { className: "h-4 w-4 text-green-500" })]
107
+ }), /* @__PURE__ */ c(u, { children: [/* @__PURE__ */ s("div", {
108
+ className: "text-2xl font-bold",
109
+ children: b
110
+ }), /* @__PURE__ */ s("p", {
111
+ className: "text-xs text-muted-foreground",
112
+ children: h("technospam.solutions.metrics.accepted.subtitle", "{{rate}}% success rate", { rate: Math.round(b / p.length * 100) })
113
+ })] })] }),
114
+ /* @__PURE__ */ c(l, { children: [/* @__PURE__ */ c(d, {
115
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
116
+ children: [/* @__PURE__ */ s(f, {
117
+ className: "text-sm font-medium",
118
+ children: h("technospam.solutions.metrics.avgRuntime.title", "Avg Runtime")
119
+ }), /* @__PURE__ */ s(o, { className: "h-4 w-4 text-muted-foreground" })]
120
+ }), /* @__PURE__ */ s(u, { children: /* @__PURE__ */ c("div", {
121
+ className: "text-2xl font-bold",
122
+ children: [Math.round(p.reduce((e, t) => e + parseInt(t.runtime), 0) / p.length), "ms"]
123
+ }) })] })
124
+ ]
125
+ }),
126
+ /* @__PURE__ */ c(l, { children: [/* @__PURE__ */ s(d, { children: /* @__PURE__ */ s(f, {
127
+ className: "text-base",
128
+ children: h("technospam.solutions.history.title", "Submission History")
129
+ }) }), /* @__PURE__ */ s(u, {
130
+ className: "space-y-3",
131
+ children: p.map((e, t) => {
132
+ let n = _(e.problemId), r = v(e.status);
133
+ return /* @__PURE__ */ c("div", {
134
+ className: "flex flex-col gap-2 rounded-lg border border-border p-4 sm:flex-row sm:items-center sm:justify-between",
135
+ children: [/* @__PURE__ */ c("div", {
136
+ className: "space-y-1",
137
+ children: [/* @__PURE__ */ c("div", {
138
+ className: "flex items-center gap-2",
139
+ children: [/* @__PURE__ */ s("p", {
140
+ className: "text-sm font-medium",
141
+ children: n?.title ?? h("technospam.solutions.history.unknownProblem", "Unknown Problem")
142
+ }), n && /* @__PURE__ */ s("span", {
143
+ className: `inline-flex items-center rounded-full px-1.5 py-0.5 text-xs font-medium ${y(n.difficulty)}`,
144
+ children: n.difficulty
145
+ })]
146
+ }), /* @__PURE__ */ c("div", {
147
+ className: "flex items-center gap-3 text-xs text-muted-foreground",
148
+ children: [
149
+ /* @__PURE__ */ c("span", {
150
+ className: "flex items-center gap-1",
151
+ children: [/* @__PURE__ */ s(a, { className: "h-3 w-3" }), e.language]
152
+ }),
153
+ /* @__PURE__ */ c("span", {
154
+ className: "flex items-center gap-1",
155
+ children: [/* @__PURE__ */ s(i, { className: "h-3 w-3" }), e.runtime]
156
+ }),
157
+ /* @__PURE__ */ c("span", {
158
+ className: "flex items-center gap-1",
159
+ children: [/* @__PURE__ */ s(o, { className: "h-3 w-3" }), e.memory]
160
+ })
161
+ ]
162
+ })]
163
+ }), /* @__PURE__ */ c("div", {
164
+ className: "flex items-center gap-3",
165
+ children: [/* @__PURE__ */ s("span", {
166
+ className: "text-xs text-muted-foreground",
167
+ children: new Date(e.submittedAt).toLocaleDateString()
168
+ }), /* @__PURE__ */ s("span", {
169
+ className: `inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${r.className}`,
170
+ children: r.label
171
+ })]
172
+ })]
173
+ }, t);
174
+ })
175
+ })] })
176
+ ]
177
+ });
178
+ }
179
+ //#endregion
180
+ export { m as ApplicationsSolutionsPagePage };
181
+
182
+ //# sourceMappingURL=ApplicationsSolutionsPagePage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApplicationsSolutionsPagePage.js","names":[],"sources":["../../../src/technospam/pages/ApplicationsSolutionsPagePage.tsx"],"sourcesContent":["import { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Card, CardContent, CardHeader, CardTitle, Badge } from '@burdenoff/fe-libs/ui';\nimport { CheckCircle, Clock, Code, Cpu } from 'lucide-react';\nimport { useTechnoSpamStore } from '../store/technospamStore';\nimport { tWithFallback } from '../utils/i18n';\n\nconst mockSolutions = [\n {\n problemId: 'p1',\n language: 'TypeScript',\n runtime: '68ms',\n memory: '42.1 MB',\n submittedAt: '2026-02-10T07:30:00Z',\n status: 'accepted',\n },\n {\n problemId: 'p2',\n language: 'Python',\n runtime: '45ms',\n memory: '38.7 MB',\n submittedAt: '2026-02-09T14:15:00Z',\n status: 'accepted',\n },\n {\n problemId: 'p7',\n language: 'TypeScript',\n runtime: '112ms',\n memory: '45.3 MB',\n submittedAt: '2026-02-08T10:20:00Z',\n status: 'accepted',\n },\n {\n problemId: 'p8',\n language: 'JavaScript',\n runtime: '78ms',\n memory: '40.9 MB',\n submittedAt: '2026-02-07T18:45:00Z',\n status: 'accepted',\n },\n {\n problemId: 'p3',\n language: 'TypeScript',\n runtime: '220ms',\n memory: '55.2 MB',\n submittedAt: '2026-02-06T09:00:00Z',\n status: 'time_limit',\n },\n];\n\nexport function ApplicationsSolutionsPagePage() {\n const { t } = useI18n();\n const tr = (key: string, fallback: string, params?: Record<string, string | number>): string =>\n tWithFallback(t, key, fallback, params);\n const { problems } = useTechnoSpamStore();\n\n const getProblem = (id: string) => problems.find((problem) => problem.id === id);\n\n const statusDisplay = (status: string) => {\n switch (status) {\n case 'accepted':\n return {\n label: tr('technospam.solutions.status.accepted', 'Accepted'),\n className: 'bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400',\n };\n case 'time_limit':\n return {\n label: tr('technospam.solutions.status.timeLimit', 'Time Limit'),\n className: 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400',\n };\n case 'wrong_answer':\n return {\n label: tr('technospam.solutions.status.wrongAnswer', 'Wrong Answer'),\n className: 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400',\n };\n default:\n return { label: status, className: '' };\n }\n };\n\n const difficultyColor = (difficulty: string) => {\n switch (difficulty) {\n case 'easy':\n return 'bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400';\n case 'medium':\n return 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400';\n case 'hard':\n return 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400';\n default:\n return '';\n }\n };\n\n const acceptedCount = mockSolutions.filter((solution) => solution.status === 'accepted').length;\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold text-foreground\">\n {tr('technospam.solutions.title', 'My Solutions')}\n </h1>\n <p className=\"text-sm text-muted-foreground\">\n {tr('technospam.solutions.subtitle', 'Review your submitted solutions and performance')}\n </p>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-3\">\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">\n {tr('technospam.solutions.metrics.totalSubmissions.title', 'Total Submissions')}\n </CardTitle>\n <Code className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{mockSolutions.length}</div>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">\n {tr('technospam.solutions.metrics.accepted.title', 'Accepted')}\n </CardTitle>\n <CheckCircle className=\"h-4 w-4 text-green-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{acceptedCount}</div>\n <p className=\"text-xs text-muted-foreground\">\n {tr('technospam.solutions.metrics.accepted.subtitle', '{{rate}}% success rate', {\n rate: Math.round((acceptedCount / mockSolutions.length) * 100),\n })}\n </p>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">\n {tr('technospam.solutions.metrics.avgRuntime.title', 'Avg Runtime')}\n </CardTitle>\n <Cpu className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">\n {Math.round(\n mockSolutions.reduce((sum, solution) => sum + parseInt(solution.runtime), 0) /\n mockSolutions.length\n )}\n ms\n </div>\n </CardContent>\n </Card>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">\n {tr('technospam.solutions.history.title', 'Submission History')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {mockSolutions.map((solution, idx) => {\n const problem = getProblem(solution.problemId);\n const status = statusDisplay(solution.status);\n return (\n <div\n key={idx}\n className=\"flex flex-col gap-2 rounded-lg border border-border p-4 sm:flex-row sm:items-center sm:justify-between\"\n >\n <div className=\"space-y-1\">\n <div className=\"flex items-center gap-2\">\n <p className=\"text-sm font-medium\">\n {problem?.title ??\n tr('technospam.solutions.history.unknownProblem', 'Unknown Problem')}\n </p>\n {problem && (\n <span\n className={`inline-flex items-center rounded-full px-1.5 py-0.5 text-xs font-medium ${difficultyColor(problem.difficulty)}`}\n >\n {problem.difficulty}\n </span>\n )}\n </div>\n <div className=\"flex items-center gap-3 text-xs text-muted-foreground\">\n <span className=\"flex items-center gap-1\">\n <Code className=\"h-3 w-3\" />\n {solution.language}\n </span>\n <span className=\"flex items-center gap-1\">\n <Clock className=\"h-3 w-3\" />\n {solution.runtime}\n </span>\n <span className=\"flex items-center gap-1\">\n <Cpu className=\"h-3 w-3\" />\n {solution.memory}\n </span>\n </div>\n </div>\n <div className=\"flex items-center gap-3\">\n <span className=\"text-xs text-muted-foreground\">\n {new Date(solution.submittedAt).toLocaleDateString()}\n </span>\n <span\n className={`inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${status.className}`}\n >\n {status.label}\n </span>\n </div>\n </div>\n );\n })}\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function CoursesCourseDetailsPagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=CoursesCourseDetailsPagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoursesCourseDetailsPagePage.d.ts","sourceRoot":"","sources":["../../../src/technospam/pages/CoursesCourseDetailsPagePage.tsx"],"names":[],"mappings":"AA+BA,wBAAgB,4BAA4B,4CAyL3C"}