@burdenoff/microfe-crewfoundry 2026.608.1 → 2026.625.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/crewfoundry/pages/AdminAdminPagePage.js +94 -78
- package/dist/crewfoundry/pages/AdminAdminPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js +112 -96
- package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js +101 -85
- package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js +131 -115
- package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js +116 -100
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js +15 -15
- package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js +63 -51
- package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js +16 -16
- package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js +26 -26
- package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js +28 -28
- package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js +10 -10
- package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js +71 -59
- package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js +59 -47
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js +77 -61
- package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js +40 -40
- package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js +13 -13
- package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js +102 -86
- package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardDashboardPagePage.js +173 -139
- package/dist/crewfoundry/pages/DashboardDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js +59 -59
- package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js +113 -97
- package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js.map +1 -1
- package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js +45 -45
- package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringApplicationsPagePage.js +85 -69
- package/dist/crewfoundry/pages/HiringApplicationsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringCandidatesPagePage.js +23 -23
- package/dist/crewfoundry/pages/HiringCandidatesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringCreateJobPagePage.js +40 -40
- package/dist/crewfoundry/pages/HiringCreateJobPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringInterviewsPagePage.js +59 -47
- package/dist/crewfoundry/pages/HiringInterviewsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js +52 -48
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringJobsPagePage.js +31 -26
- package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrDepartmentsPagePage.js +61 -49
- package/dist/crewfoundry/pages/HrDepartmentsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrEmployeesPagePage.js +83 -67
- package/dist/crewfoundry/pages/HrEmployeesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js +90 -74
- package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrPayrollPagePage.js +90 -74
- package/dist/crewfoundry/pages/HrPayrollPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js +83 -67
- package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js +54 -42
- package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCertificatesPagePage.js +16 -16
- package/dist/crewfoundry/pages/LearningCertificatesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js +39 -35
- package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js +24 -24
- package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCoursesPagePage.js +14 -14
- package/dist/crewfoundry/pages/LearningCoursesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js +81 -65
- package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPagePage.js +73 -57
- package/dist/crewfoundry/pages/LearningLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js +28 -28
- package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js +12 -12
- package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningMyLearningPagePage.js +75 -59
- package/dist/crewfoundry/pages/LearningMyLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js +57 -45
- package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js +71 -59
- package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js +48 -48
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js +44 -43
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js +58 -46
- package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js +16 -16
- package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js +23 -23
- package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js +9 -9
- package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js +43 -39
- package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js +31 -27
- package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js +59 -47
- package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js +13 -13
- package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js +66 -50
- package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js +18 -18
- package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js +74 -62
- package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js +21 -21
- package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js +47 -43
- package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js +20 -20
- package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js +58 -46
- package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js +38 -34
- package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js +14 -14
- package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js +67 -67
- package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamsPagePage.js +16 -16
- package/dist/crewfoundry/pages/TeamsTeamsPagePage.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,66 +1,82 @@
|
|
|
1
1
|
import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
|
|
2
2
|
import { BookOpen as t, GraduationCap as n, Star as r, TrendingUp as i, Users as a } from "lucide-react";
|
|
3
3
|
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
4
|
-
import { Badge as c, Card as l, CardContent as u, CardDescription as d, CardHeader as f, CardTitle as p } from "@burdenoff/fe-libs/ui";
|
|
4
|
+
import { Badge as c, Card as l, CardContent as u, CardDescription as d, CardHeader as f, CardTitle as p, GlassCard as m, GradientText as h } from "@burdenoff/fe-libs/ui";
|
|
5
5
|
//#region src/crewfoundry/pages/LearningLearningPagePage.tsx
|
|
6
|
-
function
|
|
7
|
-
let { courses:
|
|
6
|
+
function g() {
|
|
7
|
+
let { courses: g, learningPaths: _ } = e(), v = g.reduce((e, t) => e + t.enrolled, 0), y = g.reduce((e, t) => e + t.completed, 0);
|
|
8
8
|
return /* @__PURE__ */ s("div", {
|
|
9
9
|
className: "space-y-6 p-6",
|
|
10
10
|
children: [
|
|
11
11
|
/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("h1", {
|
|
12
12
|
className: "text-2xl font-semibold",
|
|
13
|
-
children: "Learning & Development"
|
|
13
|
+
children: /* @__PURE__ */ o(h, { children: "Learning & Development" })
|
|
14
14
|
}), /* @__PURE__ */ o("p", {
|
|
15
|
-
className: "text-sm text-
|
|
15
|
+
className: "text-sm text-text-secondary",
|
|
16
16
|
children: "Explore courses, learning paths, and grow your skills"
|
|
17
17
|
})] }),
|
|
18
18
|
/* @__PURE__ */ s("div", {
|
|
19
19
|
className: "grid gap-4 md:grid-cols-2 lg:grid-cols-4",
|
|
20
20
|
children: [
|
|
21
|
-
/* @__PURE__ */ s(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
21
|
+
/* @__PURE__ */ s(m, {
|
|
22
|
+
treatment: "metric",
|
|
23
|
+
className: "border-border-seam",
|
|
24
|
+
children: [/* @__PURE__ */ s(f, {
|
|
25
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
26
|
+
children: [/* @__PURE__ */ o(p, {
|
|
27
|
+
className: "text-sm font-medium",
|
|
28
|
+
children: "Courses"
|
|
29
|
+
}), /* @__PURE__ */ o(t, { className: "h-4 w-4 text-text-secondary" })]
|
|
30
|
+
}), /* @__PURE__ */ s(u, { children: [/* @__PURE__ */ o("div", {
|
|
31
|
+
className: "text-2xl font-bold tabular-nums",
|
|
32
|
+
children: g.length
|
|
33
|
+
}), /* @__PURE__ */ o("p", {
|
|
34
|
+
className: "text-xs text-text-secondary",
|
|
35
|
+
children: "Active courses"
|
|
36
|
+
})] })]
|
|
37
|
+
}),
|
|
38
|
+
/* @__PURE__ */ s(m, {
|
|
39
|
+
treatment: "metric",
|
|
40
|
+
className: "border-border-seam",
|
|
41
|
+
children: [/* @__PURE__ */ s(f, {
|
|
42
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
43
|
+
children: [/* @__PURE__ */ o(p, {
|
|
44
|
+
className: "text-sm font-medium",
|
|
45
|
+
children: "Enrolled"
|
|
46
|
+
}), /* @__PURE__ */ o(a, { className: "h-4 w-4 text-text-secondary" })]
|
|
47
|
+
}), /* @__PURE__ */ o(u, { children: /* @__PURE__ */ o("div", {
|
|
48
|
+
className: "text-2xl font-bold tabular-nums",
|
|
49
|
+
children: v
|
|
50
|
+
}) })]
|
|
51
|
+
}),
|
|
52
|
+
/* @__PURE__ */ s(m, {
|
|
53
|
+
treatment: "metric",
|
|
54
|
+
className: "border-border-seam",
|
|
55
|
+
children: [/* @__PURE__ */ s(f, {
|
|
56
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
57
|
+
children: [/* @__PURE__ */ o(p, {
|
|
58
|
+
className: "text-sm font-medium",
|
|
59
|
+
children: "Completed"
|
|
60
|
+
}), /* @__PURE__ */ o(n, { className: "h-4 w-4 text-status-success-text" })]
|
|
61
|
+
}), /* @__PURE__ */ o(u, { children: /* @__PURE__ */ o("div", {
|
|
62
|
+
className: "text-2xl font-bold tabular-nums",
|
|
63
|
+
children: y
|
|
64
|
+
}) })]
|
|
65
|
+
}),
|
|
66
|
+
/* @__PURE__ */ s(m, {
|
|
67
|
+
treatment: "metric",
|
|
68
|
+
className: "border-border-seam",
|
|
69
|
+
children: [/* @__PURE__ */ s(f, {
|
|
70
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
71
|
+
children: [/* @__PURE__ */ o(p, {
|
|
72
|
+
className: "text-sm font-medium",
|
|
73
|
+
children: "Paths"
|
|
74
|
+
}), /* @__PURE__ */ o(i, { className: "h-4 w-4 text-text-secondary" })]
|
|
75
|
+
}), /* @__PURE__ */ o(u, { children: /* @__PURE__ */ o("div", {
|
|
76
|
+
className: "text-2xl font-bold tabular-nums",
|
|
77
|
+
children: _.length
|
|
78
|
+
}) })]
|
|
79
|
+
})
|
|
64
80
|
]
|
|
65
81
|
}),
|
|
66
82
|
/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("h2", {
|
|
@@ -68,7 +84,7 @@ function m() {
|
|
|
68
84
|
children: "Featured Courses"
|
|
69
85
|
}), /* @__PURE__ */ o("div", {
|
|
70
86
|
className: "grid gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
71
|
-
children:
|
|
87
|
+
children: g.slice(0, 3).map((e) => /* @__PURE__ */ s(l, { children: [/* @__PURE__ */ s(f, { children: [/* @__PURE__ */ o(p, {
|
|
72
88
|
className: "text-base",
|
|
73
89
|
children: e.title
|
|
74
90
|
}), /* @__PURE__ */ s(d, { children: [
|
|
@@ -77,14 +93,14 @@ function m() {
|
|
|
77
93
|
e.duration
|
|
78
94
|
] })] }), /* @__PURE__ */ s(u, { children: [
|
|
79
95
|
/* @__PURE__ */ o("p", {
|
|
80
|
-
className: "text-sm text-
|
|
96
|
+
className: "text-sm text-text-secondary mb-3",
|
|
81
97
|
children: e.description
|
|
82
98
|
}),
|
|
83
99
|
/* @__PURE__ */ s("div", {
|
|
84
100
|
className: "flex items-center justify-between",
|
|
85
101
|
children: [/* @__PURE__ */ s("div", {
|
|
86
102
|
className: "flex items-center gap-1",
|
|
87
|
-
children: [/* @__PURE__ */ o(r, { className: "h-3 w-3 text-
|
|
103
|
+
children: [/* @__PURE__ */ o(r, { className: "h-3 w-3 text-status-warning-text" }), /* @__PURE__ */ o("span", {
|
|
88
104
|
className: "text-sm",
|
|
89
105
|
children: e.rating
|
|
90
106
|
})]
|
|
@@ -102,7 +118,7 @@ function m() {
|
|
|
102
118
|
})]
|
|
103
119
|
}),
|
|
104
120
|
/* @__PURE__ */ s("div", {
|
|
105
|
-
className: "mt-2 text-xs text-
|
|
121
|
+
className: "mt-2 text-xs text-text-secondary",
|
|
106
122
|
children: [
|
|
107
123
|
e.enrolled,
|
|
108
124
|
" enrolled · ",
|
|
@@ -117,11 +133,11 @@ function m() {
|
|
|
117
133
|
children: "Learning Paths"
|
|
118
134
|
}), /* @__PURE__ */ o("div", {
|
|
119
135
|
className: "grid gap-4 md:grid-cols-3",
|
|
120
|
-
children:
|
|
136
|
+
children: _.map((e) => /* @__PURE__ */ s(l, { children: [/* @__PURE__ */ s(f, { children: [/* @__PURE__ */ o(p, {
|
|
121
137
|
className: "text-base",
|
|
122
138
|
children: e.title
|
|
123
139
|
}), /* @__PURE__ */ o(d, { children: e.description })] }), /* @__PURE__ */ s(u, { children: [/* @__PURE__ */ s("div", {
|
|
124
|
-
className: "flex items-center justify-between text-sm text-
|
|
140
|
+
className: "flex items-center justify-between text-sm text-text-secondary",
|
|
125
141
|
children: [/* @__PURE__ */ s("span", { children: [
|
|
126
142
|
e.courses.length,
|
|
127
143
|
" courses · ",
|
|
@@ -137,9 +153,9 @@ function m() {
|
|
|
137
153
|
className: "flex justify-between text-xs",
|
|
138
154
|
children: [/* @__PURE__ */ s("span", { children: [e.enrolled, " enrolled"] }), /* @__PURE__ */ s("span", { children: [e.completionRate, "%"] })]
|
|
139
155
|
}), /* @__PURE__ */ o("div", {
|
|
140
|
-
className: "h-2 bg-
|
|
156
|
+
className: "h-2 bg-bg-sunken rounded overflow-hidden",
|
|
141
157
|
children: /* @__PURE__ */ o("div", {
|
|
142
|
-
className: "h-2 bg-primary rounded",
|
|
158
|
+
className: "h-2 bg-action-primary-bg rounded",
|
|
143
159
|
style: { width: `${e.completionRate}%` }
|
|
144
160
|
})
|
|
145
161
|
})]
|
|
@@ -149,6 +165,6 @@ function m() {
|
|
|
149
165
|
});
|
|
150
166
|
}
|
|
151
167
|
//#endregion
|
|
152
|
-
export {
|
|
168
|
+
export { g as LearningLearningPagePage };
|
|
153
169
|
|
|
154
170
|
//# sourceMappingURL=LearningLearningPagePage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LearningLearningPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/LearningLearningPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from '@burdenoff/fe-libs/ui';\nimport { Award, BookOpen, GraduationCap, Star, TrendingUp, Users } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function LearningLearningPagePage() {\n const { courses, learningPaths } = useCrewFoundryStore();\n const totalEnrolled = courses.reduce((s, c) => s + c.enrolled, 0);\n const totalCompleted = courses.reduce((s, c) => s + c.completed, 0);\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Learning & Development</h1>\n <p className=\"text-sm text-
|
|
1
|
+
{"version":3,"file":"LearningLearningPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/LearningLearningPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n GlassCard,\n GradientText,\n} from '@burdenoff/fe-libs/ui';\nimport { Award, BookOpen, GraduationCap, Star, TrendingUp, Users } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function LearningLearningPagePage() {\n const { courses, learningPaths } = useCrewFoundryStore();\n const totalEnrolled = courses.reduce((s, c) => s + c.enrolled, 0);\n const totalCompleted = courses.reduce((s, c) => s + c.completed, 0);\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>Learning & Development</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">\n Explore courses, learning paths, and grow your skills\n </p>\n </div>\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-4\">\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Courses</CardTitle>\n <BookOpen className=\"h-4 w-4 text-text-secondary\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">{courses.length}</div>\n <p className=\"text-xs text-text-secondary\">Active courses</p>\n </CardContent>\n </GlassCard>\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Enrolled</CardTitle>\n <Users className=\"h-4 w-4 text-text-secondary\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">{totalEnrolled}</div>\n </CardContent>\n </GlassCard>\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\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 <GraduationCap className=\"h-4 w-4 text-status-success-text\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">{totalCompleted}</div>\n </CardContent>\n </GlassCard>\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Paths</CardTitle>\n <TrendingUp className=\"h-4 w-4 text-text-secondary\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">{learningPaths.length}</div>\n </CardContent>\n </GlassCard>\n </div>\n <div>\n <h2 className=\"text-lg font-medium mb-3\">Featured Courses</h2>\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-3\">\n {courses.slice(0, 3).map((course) => (\n <Card key={course.id}>\n <CardHeader>\n <CardTitle className=\"text-base\">{course.title}</CardTitle>\n <CardDescription>\n {course.instructor} · {course.duration}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <p className=\"text-sm text-text-secondary mb-3\">{course.description}</p>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-1\">\n <Star className=\"h-3 w-3 text-status-warning-text\" />\n <span className=\"text-sm\">{course.rating}</span>\n </div>\n <div className=\"flex gap-1\">\n <Badge variant=\"outline\" className=\"text-[10px]\">\n {course.level}\n </Badge>\n <Badge variant=\"outline\" className=\"text-[10px]\">\n {course.category}\n </Badge>\n </div>\n </div>\n <div className=\"mt-2 text-xs text-text-secondary\">\n {course.enrolled} enrolled · {course.completed} completed\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n </div>\n <div>\n <h2 className=\"text-lg font-medium mb-3\">Learning Paths</h2>\n <div className=\"grid gap-4 md:grid-cols-3\">\n {learningPaths.map((path) => (\n <Card key={path.id}>\n <CardHeader>\n <CardTitle className=\"text-base\">{path.title}</CardTitle>\n <CardDescription>{path.description}</CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"flex items-center justify-between text-sm text-text-secondary\">\n <span>\n {path.courses.length} courses · {path.duration}\n </span>\n <Badge variant=\"outline\" className=\"text-[10px]\">\n {path.level}\n </Badge>\n </div>\n <div className=\"mt-2 space-y-1\">\n <div className=\"flex justify-between text-xs\">\n <span>{path.enrolled} enrolled</span>\n <span>{path.completionRate}%</span>\n </div>\n <div className=\"h-2 bg-bg-sunken rounded overflow-hidden\">\n <div\n className=\"h-2 bg-action-primary-bg rounded\"\n style={{ width: `${path.completionRate}%` }}\n />\n </div>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
|
|
2
2
|
import { BookOpen as t, CheckCircle as n, Clock as r, Star as i, Users as a } from "lucide-react";
|
|
3
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, CardDescription as f, CardHeader as p, CardTitle as m } from "@burdenoff/fe-libs/ui";
|
|
4
|
+
import { Badge as c, Button as l, Card as u, CardContent as d, CardDescription as f, CardHeader as p, CardTitle as m, GradientText as h } from "@burdenoff/fe-libs/ui";
|
|
5
5
|
//#region src/crewfoundry/pages/LearningLearningPathDetailPagePage.tsx
|
|
6
|
-
function
|
|
7
|
-
let { learningPaths:
|
|
8
|
-
if (!
|
|
9
|
-
className: "p-6 text-
|
|
6
|
+
function g() {
|
|
7
|
+
let { learningPaths: g, courses: _ } = e(), v = g[0];
|
|
8
|
+
if (!v) return /* @__PURE__ */ o("div", {
|
|
9
|
+
className: "p-6 text-text-secondary",
|
|
10
10
|
children: "No learning path found."
|
|
11
11
|
});
|
|
12
|
-
let
|
|
12
|
+
let y = _.filter((e) => v.courses.includes(e.id));
|
|
13
13
|
return /* @__PURE__ */ s("div", {
|
|
14
14
|
className: "space-y-6 p-6 max-w-4xl",
|
|
15
15
|
children: [
|
|
@@ -17,10 +17,10 @@ function h() {
|
|
|
17
17
|
className: "flex items-center justify-between",
|
|
18
18
|
children: [/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("h1", {
|
|
19
19
|
className: "text-2xl font-semibold",
|
|
20
|
-
children:
|
|
20
|
+
children: /* @__PURE__ */ o(h, { children: v.title })
|
|
21
21
|
}), /* @__PURE__ */ o("p", {
|
|
22
|
-
className: "text-sm text-
|
|
23
|
-
children:
|
|
22
|
+
className: "text-sm text-text-secondary",
|
|
23
|
+
children: v.description
|
|
24
24
|
})] }), /* @__PURE__ */ o(l, { children: "Enroll Now" })]
|
|
25
25
|
}),
|
|
26
26
|
/* @__PURE__ */ s("div", {
|
|
@@ -29,13 +29,13 @@ function h() {
|
|
|
29
29
|
/* @__PURE__ */ o(u, { children: /* @__PURE__ */ s(d, {
|
|
30
30
|
className: "p-4 text-center",
|
|
31
31
|
children: [
|
|
32
|
-
/* @__PURE__ */ o(t, { className: "h-5 w-5 mx-auto text-
|
|
32
|
+
/* @__PURE__ */ o(t, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
|
|
33
33
|
/* @__PURE__ */ o("p", {
|
|
34
34
|
className: "text-lg font-bold",
|
|
35
|
-
children:
|
|
35
|
+
children: v.courses.length
|
|
36
36
|
}),
|
|
37
37
|
/* @__PURE__ */ o("p", {
|
|
38
|
-
className: "text-xs text-
|
|
38
|
+
className: "text-xs text-text-secondary",
|
|
39
39
|
children: "Courses"
|
|
40
40
|
})
|
|
41
41
|
]
|
|
@@ -43,13 +43,13 @@ function h() {
|
|
|
43
43
|
/* @__PURE__ */ o(u, { children: /* @__PURE__ */ s(d, {
|
|
44
44
|
className: "p-4 text-center",
|
|
45
45
|
children: [
|
|
46
|
-
/* @__PURE__ */ o(r, { className: "h-5 w-5 mx-auto text-
|
|
46
|
+
/* @__PURE__ */ o(r, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
|
|
47
47
|
/* @__PURE__ */ o("p", {
|
|
48
48
|
className: "text-lg font-bold",
|
|
49
|
-
children:
|
|
49
|
+
children: v.duration
|
|
50
50
|
}),
|
|
51
51
|
/* @__PURE__ */ o("p", {
|
|
52
|
-
className: "text-xs text-
|
|
52
|
+
className: "text-xs text-text-secondary",
|
|
53
53
|
children: "Duration"
|
|
54
54
|
})
|
|
55
55
|
]
|
|
@@ -57,13 +57,13 @@ function h() {
|
|
|
57
57
|
/* @__PURE__ */ o(u, { children: /* @__PURE__ */ s(d, {
|
|
58
58
|
className: "p-4 text-center",
|
|
59
59
|
children: [
|
|
60
|
-
/* @__PURE__ */ o(a, { className: "h-5 w-5 mx-auto text-
|
|
60
|
+
/* @__PURE__ */ o(a, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
|
|
61
61
|
/* @__PURE__ */ o("p", {
|
|
62
62
|
className: "text-lg font-bold",
|
|
63
|
-
children:
|
|
63
|
+
children: v.enrolled
|
|
64
64
|
}),
|
|
65
65
|
/* @__PURE__ */ o("p", {
|
|
66
|
-
className: "text-xs text-
|
|
66
|
+
className: "text-xs text-text-secondary",
|
|
67
67
|
children: "Enrolled"
|
|
68
68
|
})
|
|
69
69
|
]
|
|
@@ -71,13 +71,13 @@ function h() {
|
|
|
71
71
|
/* @__PURE__ */ o(u, { children: /* @__PURE__ */ s(d, {
|
|
72
72
|
className: "p-4 text-center",
|
|
73
73
|
children: [
|
|
74
|
-
/* @__PURE__ */ o(n, { className: "h-5 w-5 mx-auto text-
|
|
74
|
+
/* @__PURE__ */ o(n, { className: "h-5 w-5 mx-auto text-status-success-text mb-1" }),
|
|
75
75
|
/* @__PURE__ */ s("p", {
|
|
76
76
|
className: "text-lg font-bold",
|
|
77
|
-
children: [
|
|
77
|
+
children: [v.completionRate, "%"]
|
|
78
78
|
}),
|
|
79
79
|
/* @__PURE__ */ o("p", {
|
|
80
|
-
className: "text-xs text-
|
|
80
|
+
className: "text-xs text-text-secondary",
|
|
81
81
|
children: "Completion"
|
|
82
82
|
})
|
|
83
83
|
]
|
|
@@ -85,16 +85,16 @@ function h() {
|
|
|
85
85
|
]
|
|
86
86
|
}),
|
|
87
87
|
/* @__PURE__ */ s(u, { children: [/* @__PURE__ */ s(p, { children: [/* @__PURE__ */ o(m, { children: "Courses in this Path" }), /* @__PURE__ */ s(f, { children: [
|
|
88
|
-
|
|
88
|
+
y.length,
|
|
89
89
|
" courses · ",
|
|
90
|
-
|
|
90
|
+
v.level
|
|
91
91
|
] })] }), /* @__PURE__ */ o(d, {
|
|
92
92
|
className: "space-y-3",
|
|
93
|
-
children:
|
|
93
|
+
children: y.map((e, t) => /* @__PURE__ */ s("div", {
|
|
94
94
|
className: "flex items-center gap-3 rounded border p-4",
|
|
95
95
|
children: [
|
|
96
96
|
/* @__PURE__ */ o("div", {
|
|
97
|
-
className: "flex-shrink-0 w-8 h-8 rounded-full bg-primary/10 flex items-center justify-center text-sm font-bold",
|
|
97
|
+
className: "flex-shrink-0 w-8 h-8 rounded-full bg-action-primary-bg/10 flex items-center justify-center text-sm font-bold",
|
|
98
98
|
children: t + 1
|
|
99
99
|
}),
|
|
100
100
|
/* @__PURE__ */ s("div", {
|
|
@@ -103,7 +103,7 @@ function h() {
|
|
|
103
103
|
className: "text-sm font-medium",
|
|
104
104
|
children: e.title
|
|
105
105
|
}), /* @__PURE__ */ s("p", {
|
|
106
|
-
className: "text-xs text-
|
|
106
|
+
className: "text-xs text-text-secondary",
|
|
107
107
|
children: [
|
|
108
108
|
e.instructor,
|
|
109
109
|
" · ",
|
|
@@ -118,7 +118,7 @@ function h() {
|
|
|
118
118
|
className: "flex items-center gap-2",
|
|
119
119
|
children: [/* @__PURE__ */ s("div", {
|
|
120
120
|
className: "flex items-center gap-1",
|
|
121
|
-
children: [/* @__PURE__ */ o(i, { className: "h-3 w-3 text-
|
|
121
|
+
children: [/* @__PURE__ */ o(i, { className: "h-3 w-3 text-status-warning-text" }), /* @__PURE__ */ o("span", {
|
|
122
122
|
className: "text-sm",
|
|
123
123
|
children: e.rating
|
|
124
124
|
})]
|
|
@@ -135,6 +135,6 @@ function h() {
|
|
|
135
135
|
});
|
|
136
136
|
}
|
|
137
137
|
//#endregion
|
|
138
|
-
export {
|
|
138
|
+
export { g as LearningLearningPathDetailPagePage };
|
|
139
139
|
|
|
140
140
|
//# sourceMappingURL=LearningLearningPathDetailPagePage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LearningLearningPathDetailPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/LearningLearningPathDetailPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from '@burdenoff/fe-libs/ui';\nimport { BookOpen, CheckCircle, Clock, Star, Users } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function LearningLearningPathDetailPagePage() {\n const { learningPaths, courses } = useCrewFoundryStore();\n const path = learningPaths[0];\n if (!path) return <div className=\"p-6 text-
|
|
1
|
+
{"version":3,"file":"LearningLearningPathDetailPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/LearningLearningPathDetailPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n GradientText,\n} from '@burdenoff/fe-libs/ui';\nimport { BookOpen, CheckCircle, Clock, Star, Users } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function LearningLearningPathDetailPagePage() {\n const { learningPaths, courses } = useCrewFoundryStore();\n const path = learningPaths[0];\n if (!path) return <div className=\"p-6 text-text-secondary\">No learning path found.</div>;\n const pathCourses = courses.filter((c) => path.courses.includes(c.id));\n\n return (\n <div className=\"space-y-6 p-6 max-w-4xl\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>{path.title}</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">{path.description}</p>\n </div>\n <Button>Enroll Now</Button>\n </div>\n <div className=\"grid gap-4 md:grid-cols-4\">\n <Card>\n <CardContent className=\"p-4 text-center\">\n <BookOpen className=\"h-5 w-5 mx-auto text-text-secondary mb-1\" />\n <p className=\"text-lg font-bold\">{path.courses.length}</p>\n <p className=\"text-xs text-text-secondary\">Courses</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <Clock className=\"h-5 w-5 mx-auto text-text-secondary mb-1\" />\n <p className=\"text-lg font-bold\">{path.duration}</p>\n <p className=\"text-xs text-text-secondary\">Duration</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <Users className=\"h-5 w-5 mx-auto text-text-secondary mb-1\" />\n <p className=\"text-lg font-bold\">{path.enrolled}</p>\n <p className=\"text-xs text-text-secondary\">Enrolled</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <CheckCircle className=\"h-5 w-5 mx-auto text-status-success-text mb-1\" />\n <p className=\"text-lg font-bold\">{path.completionRate}%</p>\n <p className=\"text-xs text-text-secondary\">Completion</p>\n </CardContent>\n </Card>\n </div>\n <Card>\n <CardHeader>\n <CardTitle>Courses in this Path</CardTitle>\n <CardDescription>\n {pathCourses.length} courses · {path.level}\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {pathCourses.map((course, idx) => (\n <div key={course.id} className=\"flex items-center gap-3 rounded border p-4\">\n <div className=\"flex-shrink-0 w-8 h-8 rounded-full bg-action-primary-bg/10 flex items-center justify-center text-sm font-bold\">\n {idx + 1}\n </div>\n <div className=\"flex-1\">\n <p className=\"text-sm font-medium\">{course.title}</p>\n <p className=\"text-xs text-text-secondary\">\n {course.instructor} · {course.duration} · {course.modules} modules\n </p>\n </div>\n <div className=\"flex items-center gap-2\">\n <div className=\"flex items-center gap-1\">\n <Star className=\"h-3 w-3 text-status-warning-text\" />\n <span className=\"text-sm\">{course.rating}</span>\n </div>\n <Badge\n variant={\n course.level === 'beginner'\n ? 'secondary'\n : course.level === 'intermediate'\n ? 'default'\n : 'destructive'\n }\n className=\"text-[10px]\"\n >\n {course.level}\n </Badge>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
|
|
2
2
|
import { BookOpen as t, GraduationCap as n } from "lucide-react";
|
|
3
3
|
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
4
|
-
import { Badge as a, Card as o, CardContent as s, CardDescription as c, CardHeader as l, CardTitle as u } from "@burdenoff/fe-libs/ui";
|
|
4
|
+
import { Badge as a, Card as o, CardContent as s, CardDescription as c, CardHeader as l, CardTitle as u, GradientText as d } from "@burdenoff/fe-libs/ui";
|
|
5
5
|
//#region src/crewfoundry/pages/LearningLearningPathsPagePage.tsx
|
|
6
|
-
function
|
|
7
|
-
let { learningPaths:
|
|
6
|
+
function f() {
|
|
7
|
+
let { learningPaths: f, courses: p } = e();
|
|
8
8
|
return /* @__PURE__ */ i("div", {
|
|
9
9
|
className: "space-y-6 p-6",
|
|
10
10
|
children: [/* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("h1", {
|
|
11
11
|
className: "text-2xl font-semibold",
|
|
12
|
-
children: "Learning Paths"
|
|
12
|
+
children: /* @__PURE__ */ r(d, { children: "Learning Paths" })
|
|
13
13
|
}), /* @__PURE__ */ r("p", {
|
|
14
|
-
className: "text-sm text-
|
|
14
|
+
className: "text-sm text-text-secondary",
|
|
15
15
|
children: "Structured learning journeys for career growth"
|
|
16
16
|
})] }), /* @__PURE__ */ r("div", {
|
|
17
17
|
className: "grid gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
18
|
-
children:
|
|
19
|
-
let d =
|
|
18
|
+
children: f.map((e) => {
|
|
19
|
+
let d = p.filter((t) => e.courses.includes(t.id));
|
|
20
20
|
return /* @__PURE__ */ i(o, {
|
|
21
21
|
className: "hover:shadow-md transition-shadow cursor-pointer",
|
|
22
22
|
children: [/* @__PURE__ */ i(l, { children: [/* @__PURE__ */ r(u, {
|
|
@@ -26,7 +26,7 @@ function d() {
|
|
|
26
26
|
className: "space-y-3",
|
|
27
27
|
children: [
|
|
28
28
|
/* @__PURE__ */ i("div", {
|
|
29
|
-
className: "flex items-center justify-between text-sm text-
|
|
29
|
+
className: "flex items-center justify-between text-sm text-text-secondary",
|
|
30
30
|
children: [/* @__PURE__ */ i("span", {
|
|
31
31
|
className: "flex items-center gap-1",
|
|
32
32
|
children: [
|
|
@@ -44,7 +44,7 @@ function d() {
|
|
|
44
44
|
/* @__PURE__ */ r("div", {
|
|
45
45
|
className: "space-y-1 mt-2",
|
|
46
46
|
children: d.map((e) => /* @__PURE__ */ i("div", {
|
|
47
|
-
className: "flex items-center gap-2 text-xs text-
|
|
47
|
+
className: "flex items-center gap-2 text-xs text-text-secondary",
|
|
48
48
|
children: [/* @__PURE__ */ r(n, { className: "h-3 w-3" }), e.title]
|
|
49
49
|
}, e.id))
|
|
50
50
|
}),
|
|
@@ -54,9 +54,9 @@ function d() {
|
|
|
54
54
|
className: "flex justify-between text-xs mb-1",
|
|
55
55
|
children: [/* @__PURE__ */ i("span", { children: [e.enrolled, " enrolled"] }), /* @__PURE__ */ i("span", { children: [e.completionRate, "%"] })]
|
|
56
56
|
}), /* @__PURE__ */ r("div", {
|
|
57
|
-
className: "h-2 bg-
|
|
57
|
+
className: "h-2 bg-bg-sunken rounded overflow-hidden",
|
|
58
58
|
children: /* @__PURE__ */ r("div", {
|
|
59
|
-
className: "h-2 bg-primary rounded",
|
|
59
|
+
className: "h-2 bg-action-primary-bg rounded",
|
|
60
60
|
style: { width: `${e.completionRate}%` }
|
|
61
61
|
})
|
|
62
62
|
})]
|
|
@@ -69,6 +69,6 @@ function d() {
|
|
|
69
69
|
});
|
|
70
70
|
}
|
|
71
71
|
//#endregion
|
|
72
|
-
export {
|
|
72
|
+
export { f as LearningLearningPathsPagePage };
|
|
73
73
|
|
|
74
74
|
//# sourceMappingURL=LearningLearningPathsPagePage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LearningLearningPathsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/LearningLearningPathsPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from '@burdenoff/fe-libs/ui';\nimport { BookOpen, GraduationCap, Users } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function LearningLearningPathsPagePage() {\n const { learningPaths, courses } = useCrewFoundryStore();\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Learning Paths</h1>\n <p className=\"text-sm text-
|
|
1
|
+
{"version":3,"file":"LearningLearningPathsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/LearningLearningPathsPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n GradientText,\n} from '@burdenoff/fe-libs/ui';\nimport { BookOpen, GraduationCap, Users } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function LearningLearningPathsPagePage() {\n const { learningPaths, courses } = useCrewFoundryStore();\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>Learning Paths</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">\n Structured learning journeys for career growth\n </p>\n </div>\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-3\">\n {learningPaths.map((path) => {\n const pathCourses = courses.filter((c) => path.courses.includes(c.id));\n return (\n <Card key={path.id} className=\"hover:shadow-md transition-shadow cursor-pointer\">\n <CardHeader>\n <CardTitle className=\"text-lg\">{path.title}</CardTitle>\n <CardDescription>{path.description}</CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between text-sm text-text-secondary\">\n <span className=\"flex items-center gap-1\">\n <BookOpen className=\"h-3 w-3\" />\n {path.courses.length} courses\n </span>\n <span>{path.duration}</span>\n </div>\n <Badge variant=\"outline\" className=\"text-[10px]\">\n {path.level}\n </Badge>\n <div className=\"space-y-1 mt-2\">\n {pathCourses.map((c) => (\n <div\n key={c.id}\n className=\"flex items-center gap-2 text-xs text-text-secondary\"\n >\n <GraduationCap className=\"h-3 w-3\" />\n {c.title}\n </div>\n ))}\n </div>\n <div className=\"pt-2 border-t\">\n <div className=\"flex justify-between text-xs mb-1\">\n <span>{path.enrolled} enrolled</span>\n <span>{path.completionRate}%</span>\n </div>\n <div className=\"h-2 bg-bg-sunken rounded overflow-hidden\">\n <div\n className=\"h-2 bg-action-primary-bg rounded\"\n style={{ width: `${path.completionRate}%` }}\n />\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n );\n })}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AAYA,SAAgB,IAAgC;CAC9C,IAAM,EAAE,kBAAe,eAAY,GAAqB;AAExD,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;GAAI,WAAU;aACZ,kBAAC,GAAD,EAAA,UAAc,kBAA6B,CAAA;GACxC,CAAA,EACL,kBAAC,KAAD;GAAG,WAAU;aAA8B;GAEvC,CAAA,CACA,EAAA,CAAA,EACN,kBAAC,OAAD;GAAK,WAAU;aACZ,EAAc,KAAK,MAAS;IAC3B,IAAM,IAAc,EAAQ,QAAQ,MAAM,EAAK,QAAQ,SAAS,EAAE,GAAG,CAAC;AACtE,WACE,kBAAC,GAAD;KAAoB,WAAU;eAA9B,CACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;MAAW,WAAU;gBAAW,EAAK;MAAkB,CAAA,EACvD,kBAAC,GAAD,EAAA,UAAkB,EAAK,aAA8B,CAAA,CAC1C,EAAA,CAAA,EACb,kBAAC,GAAD,EAAA,UACE,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,QAAD;SAAM,WAAU;mBAAhB;UACE,kBAAC,GAAD,EAAU,WAAU,WAAY,CAAA;UAC/B,EAAK,QAAQ;UAAO;UAChB;YACP,kBAAC,QAAD,EAAA,UAAO,EAAK,UAAgB,CAAA,CACxB;;OACN,kBAAC,GAAD;QAAO,SAAQ;QAAU,WAAU;kBAChC,EAAK;QACA,CAAA;OACR,kBAAC,OAAD;QAAK,WAAU;kBACZ,EAAY,KAAK,MAChB,kBAAC,OAAD;SAEE,WAAU;mBAFZ,CAIE,kBAAC,GAAD,EAAe,WAAU,WAAY,CAAA,EACpC,EAAE,MACC;WALC,EAAE,GAKH,CACN;QACE,CAAA;OACN,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,QAAD,EAAA,UAAA,CAAO,EAAK,UAAS,YAAgB,EAAA,CAAA,EACrC,kBAAC,QAAD,EAAA,UAAA,CAAO,EAAK,gBAAe,IAAQ,EAAA,CAAA,CAC/B;YACN,kBAAC,OAAD;SAAK,WAAU;mBACb,kBAAC,OAAD;UACE,WAAU;UACV,OAAO,EAAE,OAAO,GAAG,EAAK,eAAe,IAAI;UAC3C,CAAA;SACE,CAAA,CACF;;OACF;SACM,CAAA,CACT;OA1CI,EAAK,GA0CT;KAET;GACE,CAAA,CACF"}
|