@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.
- package/README.md +12 -0
- package/dist/dev/main.d.ts +2 -0
- package/dist/dev/main.d.ts.map +1 -0
- package/dist/generated/global-operations.d.ts +2 -0
- package/dist/generated/global-operations.d.ts.map +1 -0
- package/dist/generated/global-types.d.ts +18199 -0
- package/dist/generated/global-types.d.ts.map +1 -0
- package/dist/generated/wspace-operations.d.ts +2 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -0
- package/dist/generated/wspace-types.d.ts +43046 -0
- package/dist/generated/wspace-types.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/technospam/TechnoSpamRoot.d.ts +5 -0
- package/dist/technospam/TechnoSpamRoot.d.ts.map +1 -0
- package/dist/technospam/TechnoSpamRoot.js +482 -0
- package/dist/technospam/TechnoSpamRoot.js.map +1 -0
- package/dist/technospam/TechnoSpamRoutes.d.ts +2 -0
- package/dist/technospam/TechnoSpamRoutes.d.ts.map +1 -0
- package/dist/technospam/TechnoSpamRoutes.js +191 -0
- package/dist/technospam/TechnoSpamRoutes.js.map +1 -0
- package/dist/technospam/index.d.ts +5 -0
- package/dist/technospam/index.d.ts.map +1 -0
- package/dist/technospam/index.js +3 -0
- package/dist/technospam/pages/AdminAdminDashboardPagePage.d.ts +2 -0
- package/dist/technospam/pages/AdminAdminDashboardPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/AdminAdminDashboardPagePage.js +269 -0
- package/dist/technospam/pages/AdminAdminDashboardPagePage.js.map +1 -0
- package/dist/technospam/pages/AdminAuditReportsPagePage.d.ts +2 -0
- package/dist/technospam/pages/AdminAuditReportsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/AdminAuditReportsPagePage.js +179 -0
- package/dist/technospam/pages/AdminAuditReportsPagePage.js.map +1 -0
- package/dist/technospam/pages/AnalyticsAchievementsPagePage.d.ts +2 -0
- package/dist/technospam/pages/AnalyticsAchievementsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/AnalyticsAchievementsPagePage.js +149 -0
- package/dist/technospam/pages/AnalyticsAchievementsPagePage.js.map +1 -0
- package/dist/technospam/pages/AnalyticsAnalyticsPagePage.d.ts +2 -0
- package/dist/technospam/pages/AnalyticsAnalyticsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/AnalyticsAnalyticsPagePage.js +260 -0
- package/dist/technospam/pages/AnalyticsAnalyticsPagePage.js.map +1 -0
- package/dist/technospam/pages/AnalyticsProgressPagePage.d.ts +2 -0
- package/dist/technospam/pages/AnalyticsProgressPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/AnalyticsProgressPagePage.js +215 -0
- package/dist/technospam/pages/AnalyticsProgressPagePage.js.map +1 -0
- package/dist/technospam/pages/AnalyticsReportsPagePage.d.ts +2 -0
- package/dist/technospam/pages/AnalyticsReportsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/AnalyticsReportsPagePage.js +145 -0
- package/dist/technospam/pages/AnalyticsReportsPagePage.js.map +1 -0
- package/dist/technospam/pages/ApplicationsPortfolioPagePage.d.ts +2 -0
- package/dist/technospam/pages/ApplicationsPortfolioPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/ApplicationsPortfolioPagePage.js +227 -0
- package/dist/technospam/pages/ApplicationsPortfolioPagePage.js.map +1 -0
- package/dist/technospam/pages/ApplicationsProblemDetailsPagePage.d.ts +2 -0
- package/dist/technospam/pages/ApplicationsProblemDetailsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/ApplicationsProblemDetailsPagePage.js +194 -0
- package/dist/technospam/pages/ApplicationsProblemDetailsPagePage.js.map +1 -0
- package/dist/technospam/pages/ApplicationsProblemsPagePage.d.ts +2 -0
- package/dist/technospam/pages/ApplicationsProblemsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/ApplicationsProblemsPagePage.js +203 -0
- package/dist/technospam/pages/ApplicationsProblemsPagePage.js.map +1 -0
- package/dist/technospam/pages/ApplicationsSolutionsPagePage.d.ts +2 -0
- package/dist/technospam/pages/ApplicationsSolutionsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/ApplicationsSolutionsPagePage.js +182 -0
- package/dist/technospam/pages/ApplicationsSolutionsPagePage.js.map +1 -0
- package/dist/technospam/pages/CoursesCourseDetailsPagePage.d.ts +2 -0
- package/dist/technospam/pages/CoursesCourseDetailsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/CoursesCourseDetailsPagePage.js +261 -0
- package/dist/technospam/pages/CoursesCourseDetailsPagePage.js.map +1 -0
- package/dist/technospam/pages/CoursesCoursesPagePage.d.ts +2 -0
- package/dist/technospam/pages/CoursesCoursesPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/CoursesCoursesPagePage.js +179 -0
- package/dist/technospam/pages/CoursesCoursesPagePage.js.map +1 -0
- package/dist/technospam/pages/CoursesInstructorProfilePagePage.d.ts +2 -0
- package/dist/technospam/pages/CoursesInstructorProfilePagePage.d.ts.map +1 -0
- package/dist/technospam/pages/CoursesInstructorProfilePagePage.js +346 -0
- package/dist/technospam/pages/CoursesInstructorProfilePagePage.js.map +1 -0
- package/dist/technospam/pages/CoursesInstructorsPagePage.d.ts +2 -0
- package/dist/technospam/pages/CoursesInstructorsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/CoursesInstructorsPagePage.js +104 -0
- package/dist/technospam/pages/CoursesInstructorsPagePage.js.map +1 -0
- package/dist/technospam/pages/CoursesMyLearningPagePage.d.ts +2 -0
- package/dist/technospam/pages/CoursesMyLearningPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/CoursesMyLearningPagePage.js +187 -0
- package/dist/technospam/pages/CoursesMyLearningPagePage.js.map +1 -0
- package/dist/technospam/pages/DashboardDashboardPagePage.d.ts +2 -0
- package/dist/technospam/pages/DashboardDashboardPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/DashboardDashboardPagePage.js +344 -0
- package/dist/technospam/pages/DashboardDashboardPagePage.js.map +1 -0
- package/dist/technospam/pages/HackathonsEventsPagePage.d.ts +2 -0
- package/dist/technospam/pages/HackathonsEventsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/HackathonsEventsPagePage.js +121 -0
- package/dist/technospam/pages/HackathonsEventsPagePage.js.map +1 -0
- package/dist/technospam/pages/HackathonsHackathonDetailsPagePage.d.ts +2 -0
- package/dist/technospam/pages/HackathonsHackathonDetailsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/HackathonsHackathonDetailsPagePage.js +250 -0
- package/dist/technospam/pages/HackathonsHackathonDetailsPagePage.js.map +1 -0
- package/dist/technospam/pages/HackathonsHackathonsPagePage.d.ts +2 -0
- package/dist/technospam/pages/HackathonsHackathonsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/HackathonsHackathonsPagePage.js +162 -0
- package/dist/technospam/pages/HackathonsHackathonsPagePage.js.map +1 -0
- package/dist/technospam/pages/HackathonsTeamsPagePage.d.ts +2 -0
- package/dist/technospam/pages/HackathonsTeamsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/HackathonsTeamsPagePage.js +185 -0
- package/dist/technospam/pages/HackathonsTeamsPagePage.js.map +1 -0
- package/dist/technospam/pages/KnowledgeBaseArticleDetailsPagePage.d.ts +2 -0
- package/dist/technospam/pages/KnowledgeBaseArticleDetailsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/KnowledgeBaseArticleDetailsPagePage.js +181 -0
- package/dist/technospam/pages/KnowledgeBaseArticleDetailsPagePage.js.map +1 -0
- package/dist/technospam/pages/KnowledgeBaseArticlesPagePage.d.ts +2 -0
- package/dist/technospam/pages/KnowledgeBaseArticlesPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/KnowledgeBaseArticlesPagePage.js +112 -0
- package/dist/technospam/pages/KnowledgeBaseArticlesPagePage.js.map +1 -0
- package/dist/technospam/pages/KnowledgeBaseCategoriesPagePage.d.ts +2 -0
- package/dist/technospam/pages/KnowledgeBaseCategoriesPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/KnowledgeBaseCategoriesPagePage.js +105 -0
- package/dist/technospam/pages/KnowledgeBaseCategoriesPagePage.js.map +1 -0
- package/dist/technospam/pages/KnowledgeBaseKnowledgeBasePagePage.d.ts +2 -0
- package/dist/technospam/pages/KnowledgeBaseKnowledgeBasePagePage.d.ts.map +1 -0
- package/dist/technospam/pages/KnowledgeBaseKnowledgeBasePagePage.js +165 -0
- package/dist/technospam/pages/KnowledgeBaseKnowledgeBasePagePage.js.map +1 -0
- package/dist/technospam/pages/MentorshipBookingsPagePage.d.ts +2 -0
- package/dist/technospam/pages/MentorshipBookingsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/MentorshipBookingsPagePage.js +188 -0
- package/dist/technospam/pages/MentorshipBookingsPagePage.js.map +1 -0
- package/dist/technospam/pages/MentorshipMentorProfilePagePage.d.ts +2 -0
- package/dist/technospam/pages/MentorshipMentorProfilePagePage.d.ts.map +1 -0
- package/dist/technospam/pages/MentorshipMentorProfilePagePage.js +310 -0
- package/dist/technospam/pages/MentorshipMentorProfilePagePage.js.map +1 -0
- package/dist/technospam/pages/MentorshipMentorsPagePage.d.ts +2 -0
- package/dist/technospam/pages/MentorshipMentorsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/MentorshipMentorsPagePage.js +128 -0
- package/dist/technospam/pages/MentorshipMentorsPagePage.js.map +1 -0
- package/dist/technospam/pages/MentorshipMentorshipPagePage.d.ts +2 -0
- package/dist/technospam/pages/MentorshipMentorshipPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/MentorshipMentorshipPagePage.js +209 -0
- package/dist/technospam/pages/MentorshipMentorshipPagePage.js.map +1 -0
- package/dist/technospam/pages/MentorshipSessionsPagePage.d.ts +2 -0
- package/dist/technospam/pages/MentorshipSessionsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/MentorshipSessionsPagePage.js +170 -0
- package/dist/technospam/pages/MentorshipSessionsPagePage.js.map +1 -0
- package/dist/technospam/pages/OpenSourceContributionsPagePage.d.ts +2 -0
- package/dist/technospam/pages/OpenSourceContributionsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/OpenSourceContributionsPagePage.js +191 -0
- package/dist/technospam/pages/OpenSourceContributionsPagePage.js.map +1 -0
- package/dist/technospam/pages/OpenSourceOpenSourcePagePage.d.ts +2 -0
- package/dist/technospam/pages/OpenSourceOpenSourcePagePage.d.ts.map +1 -0
- package/dist/technospam/pages/OpenSourceOpenSourcePagePage.js +216 -0
- package/dist/technospam/pages/OpenSourceOpenSourcePagePage.js.map +1 -0
- package/dist/technospam/pages/OpenSourceProjectsPagePage.d.ts +2 -0
- package/dist/technospam/pages/OpenSourceProjectsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/OpenSourceProjectsPagePage.js +150 -0
- package/dist/technospam/pages/OpenSourceProjectsPagePage.js.map +1 -0
- package/dist/technospam/pages/StudyPlannerGoalsPagePage.d.ts +2 -0
- package/dist/technospam/pages/StudyPlannerGoalsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/StudyPlannerGoalsPagePage.js +161 -0
- package/dist/technospam/pages/StudyPlannerGoalsPagePage.js.map +1 -0
- package/dist/technospam/pages/StudyPlannerLearningPathDetailsPagePage.d.ts +2 -0
- package/dist/technospam/pages/StudyPlannerLearningPathDetailsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/StudyPlannerLearningPathDetailsPagePage.js +198 -0
- package/dist/technospam/pages/StudyPlannerLearningPathDetailsPagePage.js.map +1 -0
- package/dist/technospam/pages/StudyPlannerLearningPathsPagePage.d.ts +2 -0
- package/dist/technospam/pages/StudyPlannerLearningPathsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/StudyPlannerLearningPathsPagePage.js +105 -0
- package/dist/technospam/pages/StudyPlannerLearningPathsPagePage.js.map +1 -0
- package/dist/technospam/pages/StudyPlannerStudyPlanDetailsPagePage.d.ts +2 -0
- package/dist/technospam/pages/StudyPlannerStudyPlanDetailsPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/StudyPlannerStudyPlanDetailsPagePage.js +161 -0
- package/dist/technospam/pages/StudyPlannerStudyPlanDetailsPagePage.js.map +1 -0
- package/dist/technospam/pages/StudyPlannerStudyPlanEditPagePage.d.ts +2 -0
- package/dist/technospam/pages/StudyPlannerStudyPlanEditPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/StudyPlannerStudyPlanEditPagePage.js +127 -0
- package/dist/technospam/pages/StudyPlannerStudyPlanEditPagePage.js.map +1 -0
- package/dist/technospam/pages/StudyPlannerStudyPlannerPagePage.d.ts +2 -0
- package/dist/technospam/pages/StudyPlannerStudyPlannerPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/StudyPlannerStudyPlannerPagePage.js +238 -0
- package/dist/technospam/pages/StudyPlannerStudyPlannerPagePage.js.map +1 -0
- package/dist/technospam/pages/StudyPlannerStudyPlansPagePage.d.ts +2 -0
- package/dist/technospam/pages/StudyPlannerStudyPlansPagePage.d.ts.map +1 -0
- package/dist/technospam/pages/StudyPlannerStudyPlansPagePage.js +113 -0
- package/dist/technospam/pages/StudyPlannerStudyPlansPagePage.js.map +1 -0
- package/dist/technospam/providers/TechnoSpamProvider.d.ts +6 -0
- package/dist/technospam/providers/TechnoSpamProvider.d.ts.map +1 -0
- package/dist/technospam/providers/TechnoSpamProvider.js +27 -0
- package/dist/technospam/providers/TechnoSpamProvider.js.map +1 -0
- package/dist/technospam/store/technospamStore.d.ts +190 -0
- package/dist/technospam/store/technospamStore.d.ts.map +1 -0
- package/dist/technospam/store/technospamStore.js +912 -0
- package/dist/technospam/store/technospamStore.js.map +1 -0
- package/dist/technospam/types/index.d.ts +51 -0
- package/dist/technospam/types/index.d.ts.map +1 -0
- package/dist/technospam/utils/cn.d.ts +4 -0
- package/dist/technospam/utils/cn.d.ts.map +1 -0
- package/dist/technospam/utils/i18n.d.ts +6 -0
- package/dist/technospam/utils/i18n.d.ts.map +1 -0
- package/dist/technospam/utils/i18n.js +15 -0
- package/dist/technospam/utils/i18n.js.map +1 -0
- package/dist/technospam/utils/navigation.d.ts +2 -0
- package/dist/technospam/utils/navigation.d.ts.map +1 -0
- package/dist/technospam/utils/navigation.js +8 -0
- package/dist/technospam/utils/navigation.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"CoursesCourseDetailsPagePage.d.ts","sourceRoot":"","sources":["../../../src/technospam/pages/CoursesCourseDetailsPagePage.tsx"],"names":[],"mappings":"AA+BA,wBAAgB,4BAA4B,4CAyL3C"}
|