@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,2 @@
1
+ export declare function OpenSourceOpenSourcePagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=OpenSourceOpenSourcePagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenSourceOpenSourcePagePage.d.ts","sourceRoot":"","sources":["../../../src/technospam/pages/OpenSourceOpenSourcePagePage.tsx"],"names":[],"mappings":"AA0CA,wBAAgB,4BAA4B,4CA0J3C"}
@@ -0,0 +1,216 @@
1
+ import { useTechnoSpamStore as e } from "../store/technospamStore.js";
2
+ import { useState as t } from "react";
3
+ import { AlertCircle as n, ArrowRight as r, Code as i, GitBranch as a, GitFork as o, Star as s, Users as c } from "lucide-react";
4
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
5
+ import { Badge as d, Button as f, Card as p, CardContent as m, CardHeader as h, CardTitle as g } from "@burdenoff/fe-libs/ui";
6
+ //#region src/technospam/pages/OpenSourceOpenSourcePagePage.tsx
7
+ var _ = [
8
+ {
9
+ id: 1,
10
+ project: "algo-visualizer",
11
+ type: "Pull Request",
12
+ title: "Add Dijkstra animation",
13
+ status: "merged",
14
+ date: "2026-02-08"
15
+ },
16
+ {
17
+ id: 2,
18
+ project: "code-playground",
19
+ type: "Issue",
20
+ title: "Fix WebSocket reconnection",
21
+ status: "closed",
22
+ date: "2026-02-05"
23
+ },
24
+ {
25
+ id: 3,
26
+ project: "ml-toolkit",
27
+ type: "Pull Request",
28
+ title: "Add random forest classifier",
29
+ status: "open",
30
+ date: "2026-02-03"
31
+ },
32
+ {
33
+ id: 4,
34
+ project: "algo-visualizer",
35
+ type: "Pull Request",
36
+ title: "Implement binary search tree viz",
37
+ status: "merged",
38
+ date: "2026-01-28"
39
+ }
40
+ ];
41
+ function v() {
42
+ let { openSourceProjects: v, userStats: y } = e(), [b, x] = t("explore");
43
+ return /* @__PURE__ */ u("div", {
44
+ className: "space-y-6 p-6",
45
+ children: [
46
+ /* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("h1", {
47
+ className: "text-2xl font-semibold text-foreground",
48
+ children: "Open Source"
49
+ }), /* @__PURE__ */ l("p", {
50
+ className: "text-sm text-muted-foreground",
51
+ children: "Contribute to projects and build your open source profile"
52
+ })] }),
53
+ /* @__PURE__ */ u("div", {
54
+ className: "grid gap-4 md:grid-cols-3",
55
+ children: [
56
+ /* @__PURE__ */ u(p, { children: [/* @__PURE__ */ u(h, {
57
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
58
+ children: [/* @__PURE__ */ l(g, {
59
+ className: "text-sm font-medium",
60
+ children: "Contributions"
61
+ }), /* @__PURE__ */ l(a, { className: "h-4 w-4 text-muted-foreground" })]
62
+ }), /* @__PURE__ */ u(m, { children: [/* @__PURE__ */ l("div", {
63
+ className: "text-2xl font-bold",
64
+ children: y.contributionsMade
65
+ }), /* @__PURE__ */ l("p", {
66
+ className: "text-xs text-muted-foreground",
67
+ children: "Total contributions"
68
+ })] })] }),
69
+ /* @__PURE__ */ u(p, { children: [/* @__PURE__ */ u(h, {
70
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
71
+ children: [/* @__PURE__ */ l(g, {
72
+ className: "text-sm font-medium",
73
+ children: "Projects"
74
+ }), /* @__PURE__ */ l(i, { className: "h-4 w-4 text-muted-foreground" })]
75
+ }), /* @__PURE__ */ u(m, { children: [/* @__PURE__ */ l("div", {
76
+ className: "text-2xl font-bold",
77
+ children: v.length
78
+ }), /* @__PURE__ */ l("p", {
79
+ className: "text-xs text-muted-foreground",
80
+ children: "Available projects"
81
+ })] })] }),
82
+ /* @__PURE__ */ u(p, { children: [/* @__PURE__ */ u(h, {
83
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
84
+ children: [/* @__PURE__ */ l(g, {
85
+ className: "text-sm font-medium",
86
+ children: "Active PRs"
87
+ }), /* @__PURE__ */ l(a, { className: "h-4 w-4 text-green-500" })]
88
+ }), /* @__PURE__ */ u(m, { children: [/* @__PURE__ */ l("div", {
89
+ className: "text-2xl font-bold",
90
+ children: _.filter((e) => e.status === "open").length
91
+ }), /* @__PURE__ */ l("p", {
92
+ className: "text-xs text-muted-foreground",
93
+ children: "Open pull requests"
94
+ })] })] })
95
+ ]
96
+ }),
97
+ /* @__PURE__ */ u("div", {
98
+ className: "flex gap-2 border-b border-border pb-2",
99
+ children: [/* @__PURE__ */ l(f, {
100
+ variant: b === "explore" ? "default" : "ghost",
101
+ size: "sm",
102
+ onClick: () => x("explore"),
103
+ children: "Explore Projects"
104
+ }), /* @__PURE__ */ l(f, {
105
+ variant: b === "contributions" ? "default" : "ghost",
106
+ size: "sm",
107
+ onClick: () => x("contributions"),
108
+ children: "My Contributions"
109
+ })]
110
+ }),
111
+ b === "explore" ? /* @__PURE__ */ l("div", {
112
+ className: "grid gap-4 md:grid-cols-2",
113
+ children: v.map((e) => /* @__PURE__ */ u(p, { children: [/* @__PURE__ */ u(h, {
114
+ className: "pb-3",
115
+ children: [/* @__PURE__ */ u("div", {
116
+ className: "flex items-start justify-between",
117
+ children: [/* @__PURE__ */ l(g, {
118
+ className: "text-base",
119
+ children: e.name
120
+ }), /* @__PURE__ */ l(d, {
121
+ variant: "secondary",
122
+ className: "text-xs",
123
+ children: e.difficulty
124
+ })]
125
+ }), /* @__PURE__ */ l("p", {
126
+ className: "text-sm text-muted-foreground",
127
+ children: e.description
128
+ })]
129
+ }), /* @__PURE__ */ u(m, {
130
+ className: "space-y-3",
131
+ children: [
132
+ /* @__PURE__ */ u("div", {
133
+ className: "flex items-center gap-4 text-xs text-muted-foreground",
134
+ children: [
135
+ /* @__PURE__ */ u("span", {
136
+ className: "flex items-center gap-1",
137
+ children: [/* @__PURE__ */ l(s, { className: "h-3 w-3" }), e.stars.toLocaleString()]
138
+ }),
139
+ /* @__PURE__ */ u("span", {
140
+ className: "flex items-center gap-1",
141
+ children: [/* @__PURE__ */ l(o, { className: "h-3 w-3" }), e.forks]
142
+ }),
143
+ /* @__PURE__ */ u("span", {
144
+ className: "flex items-center gap-1",
145
+ children: [
146
+ /* @__PURE__ */ l(n, { className: "h-3 w-3" }),
147
+ e.openIssues,
148
+ " issues"
149
+ ]
150
+ }),
151
+ /* @__PURE__ */ u("span", {
152
+ className: "flex items-center gap-1",
153
+ children: [/* @__PURE__ */ l(c, { className: "h-3 w-3" }), e.contributors]
154
+ })
155
+ ]
156
+ }),
157
+ /* @__PURE__ */ u("div", {
158
+ className: "flex flex-wrap gap-1",
159
+ children: [e.languages.map((e) => /* @__PURE__ */ l(d, {
160
+ variant: "outline",
161
+ className: "text-xs",
162
+ children: e
163
+ }, e)), e.topics.map((e) => /* @__PURE__ */ l(d, {
164
+ variant: "secondary",
165
+ className: "text-xs",
166
+ children: e
167
+ }, e))]
168
+ }),
169
+ /* @__PURE__ */ u(f, {
170
+ variant: "outline",
171
+ size: "sm",
172
+ className: "w-full",
173
+ children: ["View Project ", /* @__PURE__ */ l(r, { className: "ml-2 h-3 w-3" })]
174
+ })
175
+ ]
176
+ })] }, e.id))
177
+ }) : /* @__PURE__ */ l("div", {
178
+ className: "space-y-3",
179
+ children: _.map((e) => {
180
+ let t = e.status === "merged" ? "bg-purple-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-400" : e.status === "open" ? "bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400" : "bg-gray-100 text-gray-800 dark:bg-gray-900/30 dark:text-gray-400";
181
+ return /* @__PURE__ */ l(p, { children: /* @__PURE__ */ u(m, {
182
+ className: "flex items-center justify-between p-4",
183
+ children: [/* @__PURE__ */ u("div", {
184
+ className: "space-y-1",
185
+ children: [/* @__PURE__ */ u("div", {
186
+ className: "flex items-center gap-2",
187
+ children: [/* @__PURE__ */ l("p", {
188
+ className: "text-sm font-medium",
189
+ children: e.title
190
+ }), /* @__PURE__ */ l(d, {
191
+ variant: "outline",
192
+ className: "text-xs",
193
+ children: e.type
194
+ })]
195
+ }), /* @__PURE__ */ u("p", {
196
+ className: "text-xs text-muted-foreground",
197
+ children: [
198
+ e.project,
199
+ " · ",
200
+ new Date(e.date).toLocaleDateString()
201
+ ]
202
+ })]
203
+ }), /* @__PURE__ */ l("span", {
204
+ className: `inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${t}`,
205
+ children: e.status
206
+ })]
207
+ }) }, e.id);
208
+ })
209
+ })
210
+ ]
211
+ });
212
+ }
213
+ //#endregion
214
+ export { v as OpenSourceOpenSourcePagePage };
215
+
216
+ //# sourceMappingURL=OpenSourceOpenSourcePagePage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenSourceOpenSourcePagePage.js","names":[],"sources":["../../../src/technospam/pages/OpenSourceOpenSourcePagePage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { Card, CardContent, CardHeader, CardTitle, Badge, Button } from '@burdenoff/fe-libs/ui';\nimport { GitBranch, Star, GitFork, AlertCircle, Users, ArrowRight, Code } from 'lucide-react';\nimport { useTechnoSpamStore } from '../store/technospamStore';\n\ntype TabView = 'explore' | 'contributions';\n\nconst mockContributions = [\n {\n id: 1,\n project: 'algo-visualizer',\n type: 'Pull Request',\n title: 'Add Dijkstra animation',\n status: 'merged',\n date: '2026-02-08',\n },\n {\n id: 2,\n project: 'code-playground',\n type: 'Issue',\n title: 'Fix WebSocket reconnection',\n status: 'closed',\n date: '2026-02-05',\n },\n {\n id: 3,\n project: 'ml-toolkit',\n type: 'Pull Request',\n title: 'Add random forest classifier',\n status: 'open',\n date: '2026-02-03',\n },\n {\n id: 4,\n project: 'algo-visualizer',\n type: 'Pull Request',\n title: 'Implement binary search tree viz',\n status: 'merged',\n date: '2026-01-28',\n },\n];\n\nexport function OpenSourceOpenSourcePagePage() {\n const { openSourceProjects, userStats } = useTechnoSpamStore();\n const [activeTab, setActiveTab] = useState<TabView>('explore');\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold text-foreground\">Open Source</h1>\n <p className=\"text-sm text-muted-foreground\">\n Contribute to projects and build your open source profile\n </p>\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\">Contributions</CardTitle>\n <GitBranch className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{userStats.contributionsMade}</div>\n <p className=\"text-xs text-muted-foreground\">Total contributions</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\">Projects</CardTitle>\n <Code className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{openSourceProjects.length}</div>\n <p className=\"text-xs text-muted-foreground\">Available projects</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\">Active PRs</CardTitle>\n <GitBranch className=\"h-4 w-4 text-green-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">\n {mockContributions.filter((c) => c.status === 'open').length}\n </div>\n <p className=\"text-xs text-muted-foreground\">Open pull requests</p>\n </CardContent>\n </Card>\n </div>\n\n {/* Tabs */}\n <div className=\"flex gap-2 border-b border-border pb-2\">\n <Button\n variant={activeTab === 'explore' ? 'default' : 'ghost'}\n size=\"sm\"\n onClick={() => setActiveTab('explore')}\n >\n Explore Projects\n </Button>\n <Button\n variant={activeTab === 'contributions' ? 'default' : 'ghost'}\n size=\"sm\"\n onClick={() => setActiveTab('contributions')}\n >\n My Contributions\n </Button>\n </div>\n\n {activeTab === 'explore' ? (\n <div className=\"grid gap-4 md:grid-cols-2\">\n {openSourceProjects.map((project) => (\n <Card key={project.id}>\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-start justify-between\">\n <CardTitle className=\"text-base\">{project.name}</CardTitle>\n <Badge variant=\"secondary\" className=\"text-xs\">\n {project.difficulty}\n </Badge>\n </div>\n <p className=\"text-sm text-muted-foreground\">{project.description}</p>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n <div className=\"flex items-center gap-4 text-xs text-muted-foreground\">\n <span className=\"flex items-center gap-1\">\n <Star className=\"h-3 w-3\" />\n {project.stars.toLocaleString()}\n </span>\n <span className=\"flex items-center gap-1\">\n <GitFork className=\"h-3 w-3\" />\n {project.forks}\n </span>\n <span className=\"flex items-center gap-1\">\n <AlertCircle className=\"h-3 w-3\" />\n {project.openIssues} issues\n </span>\n <span className=\"flex items-center gap-1\">\n <Users className=\"h-3 w-3\" />\n {project.contributors}\n </span>\n </div>\n <div className=\"flex flex-wrap gap-1\">\n {project.languages.map((lang) => (\n <Badge key={lang} variant=\"outline\" className=\"text-xs\">\n {lang}\n </Badge>\n ))}\n {project.topics.map((topic) => (\n <Badge key={topic} variant=\"secondary\" className=\"text-xs\">\n {topic}\n </Badge>\n ))}\n </div>\n <Button variant=\"outline\" size=\"sm\" className=\"w-full\">\n View Project <ArrowRight className=\"ml-2 h-3 w-3\" />\n </Button>\n </CardContent>\n </Card>\n ))}\n </div>\n ) : (\n <div className=\"space-y-3\">\n {mockContributions.map((contrib) => {\n const statusClass =\n contrib.status === 'merged'\n ? 'bg-purple-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-400'\n : contrib.status === 'open'\n ? 'bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400'\n : 'bg-gray-100 text-gray-800 dark:bg-gray-900/30 dark:text-gray-400';\n return (\n <Card key={contrib.id}>\n <CardContent className=\"flex items-center justify-between p-4\">\n <div className=\"space-y-1\">\n <div className=\"flex items-center gap-2\">\n <p className=\"text-sm font-medium\">{contrib.title}</p>\n <Badge variant=\"outline\" className=\"text-xs\">\n {contrib.type}\n </Badge>\n </div>\n <p className=\"text-xs text-muted-foreground\">\n {contrib.project} &middot; {new Date(contrib.date).toLocaleDateString()}\n </p>\n </div>\n <span\n className={`inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${statusClass}`}\n >\n {contrib.status}\n </span>\n </CardContent>\n </Card>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function OpenSourceProjectsPagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=OpenSourceProjectsPagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenSourceProjectsPagePage.d.ts","sourceRoot":"","sources":["../../../src/technospam/pages/OpenSourceProjectsPagePage.tsx"],"names":[],"mappings":"AAeA,wBAAgB,0BAA0B,4CAyHzC"}
@@ -0,0 +1,150 @@
1
+ import { useTechnoSpamStore as e } from "../store/technospamStore.js";
2
+ import { useMemo as t, useState as n } from "react";
3
+ import { AlertCircle as r, ExternalLink as i, GitFork as a, Search as o, Star as s, Users as c } from "lucide-react";
4
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
5
+ import { Badge as d, Button as f, Card as p, CardContent as m, Input as h } from "@burdenoff/fe-libs/ui";
6
+ //#region src/technospam/pages/OpenSourceProjectsPagePage.tsx
7
+ function g() {
8
+ let { openSourceProjects: g } = e(), [_, v] = n(""), [y, b] = n("all"), x = t(() => g.filter((e) => {
9
+ let t = _ === "" || e.name.toLowerCase().includes(_.toLowerCase()) || e.description.toLowerCase().includes(_.toLowerCase()) || e.languages.some((e) => e.toLowerCase().includes(_.toLowerCase())) || e.topics.some((e) => e.toLowerCase().includes(_.toLowerCase())), n = y === "all" || e.difficulty === y;
10
+ return t && n;
11
+ }), [
12
+ g,
13
+ _,
14
+ y
15
+ ]);
16
+ return /* @__PURE__ */ u("div", {
17
+ className: "space-y-6 p-6",
18
+ children: [
19
+ /* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("h1", {
20
+ className: "text-2xl font-semibold text-foreground",
21
+ children: "Open Source Projects"
22
+ }), /* @__PURE__ */ l("p", {
23
+ className: "text-sm text-muted-foreground",
24
+ children: "Discover projects to contribute to"
25
+ })] }),
26
+ /* @__PURE__ */ l(p, { children: /* @__PURE__ */ l(m, {
27
+ className: "pt-6",
28
+ children: /* @__PURE__ */ u("div", {
29
+ className: "flex flex-col gap-4 sm:flex-row sm:items-center",
30
+ children: [/* @__PURE__ */ u("div", {
31
+ className: "relative flex-1",
32
+ children: [/* @__PURE__ */ l(o, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }), /* @__PURE__ */ l(h, {
33
+ placeholder: "Search projects, languages, topics...",
34
+ value: _,
35
+ onChange: (e) => v(e.target.value),
36
+ className: "pl-9"
37
+ })]
38
+ }), /* @__PURE__ */ l("div", {
39
+ className: "flex gap-2",
40
+ children: [
41
+ {
42
+ label: "All",
43
+ value: "all"
44
+ },
45
+ {
46
+ label: "Beginner",
47
+ value: "beginner"
48
+ },
49
+ {
50
+ label: "Intermediate",
51
+ value: "intermediate"
52
+ },
53
+ {
54
+ label: "Advanced",
55
+ value: "advanced"
56
+ }
57
+ ].map((e) => /* @__PURE__ */ l(f, {
58
+ variant: y === e.value ? "default" : "outline",
59
+ size: "sm",
60
+ onClick: () => b(e.value),
61
+ children: e.label
62
+ }, e.value))
63
+ })]
64
+ })
65
+ }) }),
66
+ x.length === 0 ? /* @__PURE__ */ l("div", {
67
+ className: "py-12 text-center text-sm text-muted-foreground",
68
+ children: "No projects match your filters"
69
+ }) : /* @__PURE__ */ l("div", {
70
+ className: "space-y-4",
71
+ children: x.map((e) => /* @__PURE__ */ l(p, { children: /* @__PURE__ */ l(m, {
72
+ className: "p-4",
73
+ children: /* @__PURE__ */ u("div", {
74
+ className: "flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",
75
+ children: [/* @__PURE__ */ u("div", {
76
+ className: "space-y-2",
77
+ children: [
78
+ /* @__PURE__ */ u("div", {
79
+ className: "flex items-center gap-2",
80
+ children: [/* @__PURE__ */ l("h3", {
81
+ className: "font-medium",
82
+ children: e.name
83
+ }), /* @__PURE__ */ l(d, {
84
+ variant: "secondary",
85
+ className: "text-xs",
86
+ children: e.difficulty
87
+ })]
88
+ }),
89
+ /* @__PURE__ */ l("p", {
90
+ className: "text-sm text-muted-foreground",
91
+ children: e.description
92
+ }),
93
+ /* @__PURE__ */ u("div", {
94
+ className: "flex items-center gap-4 text-xs text-muted-foreground",
95
+ children: [
96
+ /* @__PURE__ */ u("span", {
97
+ className: "flex items-center gap-1",
98
+ children: [/* @__PURE__ */ l(s, { className: "h-3 w-3 text-yellow-500" }), e.stars.toLocaleString()]
99
+ }),
100
+ /* @__PURE__ */ u("span", {
101
+ className: "flex items-center gap-1",
102
+ children: [/* @__PURE__ */ l(a, { className: "h-3 w-3" }), e.forks]
103
+ }),
104
+ /* @__PURE__ */ u("span", {
105
+ className: "flex items-center gap-1",
106
+ children: [
107
+ /* @__PURE__ */ l(r, { className: "h-3 w-3" }),
108
+ e.openIssues,
109
+ " issues"
110
+ ]
111
+ }),
112
+ /* @__PURE__ */ u("span", {
113
+ className: "flex items-center gap-1",
114
+ children: [
115
+ /* @__PURE__ */ l(c, { className: "h-3 w-3" }),
116
+ e.contributors,
117
+ " contributors"
118
+ ]
119
+ })
120
+ ]
121
+ }),
122
+ /* @__PURE__ */ u("div", {
123
+ className: "flex flex-wrap gap-1",
124
+ children: [e.languages.map((e) => /* @__PURE__ */ l(d, {
125
+ variant: "outline",
126
+ className: "text-xs",
127
+ children: e
128
+ }, e)), e.topics.map((e) => /* @__PURE__ */ l(d, {
129
+ variant: "secondary",
130
+ className: "text-xs",
131
+ children: e
132
+ }, e))]
133
+ })
134
+ ]
135
+ }), /* @__PURE__ */ u(f, {
136
+ variant: "outline",
137
+ size: "sm",
138
+ className: "shrink-0",
139
+ children: [/* @__PURE__ */ l(i, { className: "mr-2 h-3 w-3" }), "View on GitHub"]
140
+ })]
141
+ })
142
+ }) }, e.id))
143
+ })
144
+ ]
145
+ });
146
+ }
147
+ //#endregion
148
+ export { g as OpenSourceProjectsPagePage };
149
+
150
+ //# sourceMappingURL=OpenSourceProjectsPagePage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenSourceProjectsPagePage.js","names":[],"sources":["../../../src/technospam/pages/OpenSourceProjectsPagePage.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, Star, GitFork, AlertCircle, Users, ExternalLink } from 'lucide-react';\nimport { useTechnoSpamStore } from '../store/technospamStore';\n\ntype DifficultyFilter = 'all' | 'beginner' | 'intermediate' | 'advanced';\n\nexport function OpenSourceProjectsPagePage() {\n const { openSourceProjects } = useTechnoSpamStore();\n const [searchTerm, setSearchTerm] = useState('');\n const [difficultyFilter, setDifficultyFilter] = useState<DifficultyFilter>('all');\n\n const filteredProjects = useMemo(() => {\n return openSourceProjects.filter((p) => {\n const matchesSearch =\n searchTerm === '' ||\n p.name.toLowerCase().includes(searchTerm.toLowerCase()) ||\n p.description.toLowerCase().includes(searchTerm.toLowerCase()) ||\n p.languages.some((l) => l.toLowerCase().includes(searchTerm.toLowerCase())) ||\n p.topics.some((t) => t.toLowerCase().includes(searchTerm.toLowerCase()));\n const matchesDifficulty = difficultyFilter === 'all' || p.difficulty === difficultyFilter;\n return matchesSearch && matchesDifficulty;\n });\n }, [openSourceProjects, searchTerm, difficultyFilter]);\n\n const filters: { label: string; value: DifficultyFilter }[] = [\n { label: 'All', value: 'all' },\n { label: 'Beginner', value: 'beginner' },\n { label: 'Intermediate', value: 'intermediate' },\n { label: 'Advanced', value: 'advanced' },\n ];\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold text-foreground\">Open Source Projects</h1>\n <p className=\"text-sm text-muted-foreground\">Discover projects to contribute to</p>\n </div>\n\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 projects, languages, topics...\"\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 {filteredProjects.length === 0 ? (\n <div className=\"py-12 text-center text-sm text-muted-foreground\">\n No projects match your filters\n </div>\n ) : (\n <div className=\"space-y-4\">\n {filteredProjects.map((project) => (\n <Card key={project.id}>\n <CardContent className=\"p-4\">\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"space-y-2\">\n <div className=\"flex items-center gap-2\">\n <h3 className=\"font-medium\">{project.name}</h3>\n <Badge variant=\"secondary\" className=\"text-xs\">\n {project.difficulty}\n </Badge>\n </div>\n <p className=\"text-sm text-muted-foreground\">{project.description}</p>\n <div className=\"flex items-center gap-4 text-xs text-muted-foreground\">\n <span className=\"flex items-center gap-1\">\n <Star className=\"h-3 w-3 text-yellow-500\" />\n {project.stars.toLocaleString()}\n </span>\n <span className=\"flex items-center gap-1\">\n <GitFork className=\"h-3 w-3\" />\n {project.forks}\n </span>\n <span className=\"flex items-center gap-1\">\n <AlertCircle className=\"h-3 w-3\" />\n {project.openIssues} issues\n </span>\n <span className=\"flex items-center gap-1\">\n <Users className=\"h-3 w-3\" />\n {project.contributors} contributors\n </span>\n </div>\n <div className=\"flex flex-wrap gap-1\">\n {project.languages.map((lang) => (\n <Badge key={lang} variant=\"outline\" className=\"text-xs\">\n {lang}\n </Badge>\n ))}\n {project.topics.map((topic) => (\n <Badge key={topic} variant=\"secondary\" className=\"text-xs\">\n {topic}\n </Badge>\n ))}\n </div>\n </div>\n <Button variant=\"outline\" size=\"sm\" className=\"shrink-0\">\n <ExternalLink className=\"mr-2 h-3 w-3\" />\n View on GitHub\n </Button>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function StudyPlannerGoalsPagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=StudyPlannerGoalsPagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StudyPlannerGoalsPagePage.d.ts","sourceRoot":"","sources":["../../../src/technospam/pages/StudyPlannerGoalsPagePage.tsx"],"names":[],"mappings":"AAuDA,wBAAgB,yBAAyB,4CA6FxC"}
@@ -0,0 +1,161 @@
1
+ import { useTechnoSpamStore as e } from "../store/technospamStore.js";
2
+ import { CheckCircle as t, Clock as n, Plus as r, Target as i, TrendingUp as a } from "lucide-react";
3
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
4
+ import { Badge as c, Button as l, Card as u, CardContent as d, CardHeader as f, CardTitle as p } from "@burdenoff/fe-libs/ui";
5
+ //#region src/technospam/pages/StudyPlannerGoalsPagePage.tsx
6
+ var m = [
7
+ {
8
+ id: 1,
9
+ title: "Solve 200 coding problems",
10
+ current: 156,
11
+ target: 200,
12
+ category: "Problem Solving",
13
+ deadline: "2026-06-30"
14
+ },
15
+ {
16
+ id: 2,
17
+ title: "Complete 10 courses",
18
+ current: 5,
19
+ target: 10,
20
+ category: "Learning",
21
+ deadline: "2026-12-31"
22
+ },
23
+ {
24
+ id: 3,
25
+ title: "Earn 5 certificates",
26
+ current: 4,
27
+ target: 5,
28
+ category: "Achievements",
29
+ deadline: "2026-04-30"
30
+ },
31
+ {
32
+ id: 4,
33
+ title: "Reach 50-day study streak",
34
+ current: 15,
35
+ target: 50,
36
+ category: "Consistency",
37
+ deadline: "2026-04-01"
38
+ },
39
+ {
40
+ id: 5,
41
+ title: "Contribute to 5 open source projects",
42
+ current: 3,
43
+ target: 5,
44
+ category: "Open Source",
45
+ deadline: "2026-06-30"
46
+ },
47
+ {
48
+ id: 6,
49
+ title: "Complete System Design path",
50
+ current: 45,
51
+ target: 100,
52
+ category: "Learning",
53
+ deadline: "2026-08-31"
54
+ }
55
+ ];
56
+ function h() {
57
+ let { userStats: h } = e(), g = m.filter((e) => e.current >= e.target).length;
58
+ return /* @__PURE__ */ s("div", {
59
+ className: "space-y-6 p-6",
60
+ children: [
61
+ /* @__PURE__ */ s("div", {
62
+ className: "flex items-center justify-between",
63
+ children: [/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("h1", {
64
+ className: "text-2xl font-semibold text-foreground",
65
+ children: "Learning Goals"
66
+ }), /* @__PURE__ */ o("p", {
67
+ className: "text-sm text-muted-foreground",
68
+ children: "Set targets and track your progress"
69
+ })] }), /* @__PURE__ */ s(l, {
70
+ size: "sm",
71
+ children: [/* @__PURE__ */ o(r, { className: "mr-2 h-4 w-4" }), "New Goal"]
72
+ })]
73
+ }),
74
+ /* @__PURE__ */ s("div", {
75
+ className: "grid gap-4 md:grid-cols-3",
76
+ children: [
77
+ /* @__PURE__ */ s(u, { children: [/* @__PURE__ */ s(f, {
78
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
79
+ children: [/* @__PURE__ */ o(p, {
80
+ className: "text-sm font-medium",
81
+ children: "Total Goals"
82
+ }), /* @__PURE__ */ o(i, { className: "h-4 w-4 text-muted-foreground" })]
83
+ }), /* @__PURE__ */ o(d, { children: /* @__PURE__ */ o("div", {
84
+ className: "text-2xl font-bold",
85
+ children: m.length
86
+ }) })] }),
87
+ /* @__PURE__ */ s(u, { children: [/* @__PURE__ */ s(f, {
88
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
89
+ children: [/* @__PURE__ */ o(p, {
90
+ className: "text-sm font-medium",
91
+ children: "Completed"
92
+ }), /* @__PURE__ */ o(t, { className: "h-4 w-4 text-green-500" })]
93
+ }), /* @__PURE__ */ o(d, { children: /* @__PURE__ */ o("div", {
94
+ className: "text-2xl font-bold",
95
+ children: g
96
+ }) })] }),
97
+ /* @__PURE__ */ s(u, { children: [/* @__PURE__ */ s(f, {
98
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
99
+ children: [/* @__PURE__ */ o(p, {
100
+ className: "text-sm font-medium",
101
+ children: "Total Points"
102
+ }), /* @__PURE__ */ o(a, { className: "h-4 w-4 text-muted-foreground" })]
103
+ }), /* @__PURE__ */ o(d, { children: /* @__PURE__ */ o("div", {
104
+ className: "text-2xl font-bold",
105
+ children: h.totalPoints.toLocaleString()
106
+ }) })] })
107
+ ]
108
+ }),
109
+ /* @__PURE__ */ o("div", {
110
+ className: "space-y-4",
111
+ children: m.map((e) => {
112
+ let r = Math.min(Math.round(e.current / e.target * 100), 100), a = e.current >= e.target;
113
+ return /* @__PURE__ */ o(u, { children: /* @__PURE__ */ s(d, {
114
+ className: "p-4 space-y-3",
115
+ children: [/* @__PURE__ */ s("div", {
116
+ className: "flex items-start justify-between",
117
+ children: [/* @__PURE__ */ s("div", {
118
+ className: "flex items-center gap-3",
119
+ children: [a ? /* @__PURE__ */ o(t, { className: "h-5 w-5 text-green-500" }) : /* @__PURE__ */ o(i, { className: "h-5 w-5 text-primary" }), /* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("p", {
120
+ className: "font-medium",
121
+ children: e.title
122
+ }), /* @__PURE__ */ s("div", {
123
+ className: "flex items-center gap-2 text-xs text-muted-foreground",
124
+ children: [/* @__PURE__ */ o(c, {
125
+ variant: "secondary",
126
+ className: "text-xs",
127
+ children: e.category
128
+ }), /* @__PURE__ */ s("span", {
129
+ className: "flex items-center gap-1",
130
+ children: [
131
+ /* @__PURE__ */ o(n, { className: "h-3 w-3" }),
132
+ "Due ",
133
+ new Date(e.deadline).toLocaleDateString()
134
+ ]
135
+ })]
136
+ })] })]
137
+ }), /* @__PURE__ */ s("span", {
138
+ className: "text-sm font-medium",
139
+ children: [
140
+ e.current,
141
+ "/",
142
+ e.target
143
+ ]
144
+ })]
145
+ }), /* @__PURE__ */ o("div", {
146
+ className: "h-2 w-full overflow-hidden rounded-full bg-muted",
147
+ children: /* @__PURE__ */ o("div", {
148
+ className: `h-2 rounded-full ${a ? "bg-green-500" : "bg-primary"}`,
149
+ style: { width: `${r}%` }
150
+ })
151
+ })]
152
+ }) }, e.id);
153
+ })
154
+ })
155
+ ]
156
+ });
157
+ }
158
+ //#endregion
159
+ export { h as StudyPlannerGoalsPagePage };
160
+
161
+ //# sourceMappingURL=StudyPlannerGoalsPagePage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StudyPlannerGoalsPagePage.js","names":[],"sources":["../../../src/technospam/pages/StudyPlannerGoalsPagePage.tsx"],"sourcesContent":["import { Card, CardContent, CardHeader, CardTitle, Badge, Button } from '@burdenoff/fe-libs/ui';\nimport { Target, Plus, CheckCircle, Clock, TrendingUp } from 'lucide-react';\nimport { useTechnoSpamStore } from '../store/technospamStore';\n\nconst mockGoals = [\n {\n id: 1,\n title: 'Solve 200 coding problems',\n current: 156,\n target: 200,\n category: 'Problem Solving',\n deadline: '2026-06-30',\n },\n {\n id: 2,\n title: 'Complete 10 courses',\n current: 5,\n target: 10,\n category: 'Learning',\n deadline: '2026-12-31',\n },\n {\n id: 3,\n title: 'Earn 5 certificates',\n current: 4,\n target: 5,\n category: 'Achievements',\n deadline: '2026-04-30',\n },\n {\n id: 4,\n title: 'Reach 50-day study streak',\n current: 15,\n target: 50,\n category: 'Consistency',\n deadline: '2026-04-01',\n },\n {\n id: 5,\n title: 'Contribute to 5 open source projects',\n current: 3,\n target: 5,\n category: 'Open Source',\n deadline: '2026-06-30',\n },\n {\n id: 6,\n title: 'Complete System Design path',\n current: 45,\n target: 100,\n category: 'Learning',\n deadline: '2026-08-31',\n },\n];\n\nexport function StudyPlannerGoalsPagePage() {\n const { userStats } = useTechnoSpamStore();\n\n const completedGoals = mockGoals.filter((g) => g.current >= g.target).length;\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\">Learning Goals</h1>\n <p className=\"text-sm text-muted-foreground\">Set targets and track your progress</p>\n </div>\n <Button size=\"sm\">\n <Plus className=\"mr-2 h-4 w-4\" />\n New Goal\n </Button>\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\">Total Goals</CardTitle>\n <Target className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{mockGoals.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\">Completed</CardTitle>\n <CheckCircle className=\"h-4 w-4 text-green-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{completedGoals}</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\">Total Points</CardTitle>\n <TrendingUp className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{userStats.totalPoints.toLocaleString()}</div>\n </CardContent>\n </Card>\n </div>\n\n <div className=\"space-y-4\">\n {mockGoals.map((goal) => {\n const percent = Math.min(Math.round((goal.current / goal.target) * 100), 100);\n const isCompleted = goal.current >= goal.target;\n\n return (\n <Card key={goal.id}>\n <CardContent className=\"p-4 space-y-3\">\n <div className=\"flex items-start justify-between\">\n <div className=\"flex items-center gap-3\">\n {isCompleted ? (\n <CheckCircle className=\"h-5 w-5 text-green-500\" />\n ) : (\n <Target className=\"h-5 w-5 text-primary\" />\n )}\n <div>\n <p className=\"font-medium\">{goal.title}</p>\n <div className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n <Badge variant=\"secondary\" className=\"text-xs\">\n {goal.category}\n </Badge>\n <span className=\"flex items-center gap-1\">\n <Clock className=\"h-3 w-3\" />\n Due {new Date(goal.deadline).toLocaleDateString()}\n </span>\n </div>\n </div>\n </div>\n <span className=\"text-sm font-medium\">\n {goal.current}/{goal.target}\n </span>\n </div>\n <div className=\"h-2 w-full overflow-hidden rounded-full bg-muted\">\n <div\n className={`h-2 rounded-full ${isCompleted ? 'bg-green-500' : 'bg-primary'}`}\n style={{ width: `${percent}%` }}\n />\n </div>\n </CardContent>\n </Card>\n );\n })}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function StudyPlannerLearningPathDetailsPagePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=StudyPlannerLearningPathDetailsPagePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StudyPlannerLearningPathDetailsPagePage.d.ts","sourceRoot":"","sources":["../../../src/technospam/pages/StudyPlannerLearningPathDetailsPagePage.tsx"],"names":[],"mappings":"AAmBA,wBAAgB,uCAAuC,4CA0GtD"}