@burdenoff/microfe-crewfoundry 2026.624.1 → 2026.625.2

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 (131) hide show
  1. package/dist/crewfoundry/pages/AdminAdminPagePage.js +100 -76
  2. package/dist/crewfoundry/pages/AdminAdminPagePage.js.map +1 -1
  3. package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js +118 -94
  4. package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
  5. package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js +105 -81
  6. package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js.map +1 -1
  7. package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js +134 -110
  8. package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js.map +1 -1
  9. package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js +121 -97
  10. package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js.map +1 -1
  11. package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js +28 -15
  12. package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js.map +1 -1
  13. package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js +74 -54
  14. package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js.map +1 -1
  15. package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js +87 -69
  16. package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js.map +1 -1
  17. package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js +99 -80
  18. package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js.map +1 -1
  19. package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js +87 -68
  20. package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js.map +1 -1
  21. package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js +31 -15
  22. package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js.map +1 -1
  23. package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js +81 -61
  24. package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js.map +1 -1
  25. package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js +71 -51
  26. package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js.map +1 -1
  27. package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js +82 -58
  28. package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js.map +1 -1
  29. package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js +46 -39
  30. package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js.map +1 -1
  31. package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js +80 -62
  32. package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js.map +1 -1
  33. package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js +104 -80
  34. package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js.map +1 -1
  35. package/dist/crewfoundry/pages/DashboardDashboardPagePage.js +219 -151
  36. package/dist/crewfoundry/pages/DashboardDashboardPagePage.js.map +1 -1
  37. package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js +183 -142
  38. package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js.map +1 -1
  39. package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js +121 -97
  40. package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js.map +1 -1
  41. package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js +57 -46
  42. package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js.map +1 -1
  43. package/dist/crewfoundry/pages/HiringApplicationsPagePage.js +91 -67
  44. package/dist/crewfoundry/pages/HiringApplicationsPagePage.js.map +1 -1
  45. package/dist/crewfoundry/pages/HiringCandidatesPagePage.js +112 -93
  46. package/dist/crewfoundry/pages/HiringCandidatesPagePage.js.map +1 -1
  47. package/dist/crewfoundry/pages/HiringCreateJobPagePage.js +55 -48
  48. package/dist/crewfoundry/pages/HiringCreateJobPagePage.js.map +1 -1
  49. package/dist/crewfoundry/pages/HiringInterviewsPagePage.js +70 -50
  50. package/dist/crewfoundry/pages/HiringInterviewsPagePage.js.map +1 -1
  51. package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js +140 -97
  52. package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js.map +1 -1
  53. package/dist/crewfoundry/pages/HiringJobsPagePage.js +101 -85
  54. package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
  55. package/dist/crewfoundry/pages/HrDepartmentsPagePage.js +68 -48
  56. package/dist/crewfoundry/pages/HrDepartmentsPagePage.js.map +1 -1
  57. package/dist/crewfoundry/pages/HrEmployeesPagePage.js +99 -71
  58. package/dist/crewfoundry/pages/HrEmployeesPagePage.js.map +1 -1
  59. package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js +97 -73
  60. package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js.map +1 -1
  61. package/dist/crewfoundry/pages/HrPayrollPagePage.js +100 -76
  62. package/dist/crewfoundry/pages/HrPayrollPagePage.js.map +1 -1
  63. package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js +93 -69
  64. package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js.map +1 -1
  65. package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js +65 -45
  66. package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js.map +1 -1
  67. package/dist/crewfoundry/pages/LearningCertificatesPagePage.js +93 -75
  68. package/dist/crewfoundry/pages/LearningCertificatesPagePage.js.map +1 -1
  69. package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js +117 -72
  70. package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js.map +1 -1
  71. package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js +66 -54
  72. package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js.map +1 -1
  73. package/dist/crewfoundry/pages/LearningCoursesPagePage.js +36 -20
  74. package/dist/crewfoundry/pages/LearningCoursesPagePage.js.map +1 -1
  75. package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js +90 -66
  76. package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js.map +1 -1
  77. package/dist/crewfoundry/pages/LearningLearningPagePage.js +81 -57
  78. package/dist/crewfoundry/pages/LearningLearningPagePage.js.map +1 -1
  79. package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js +90 -65
  80. package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js.map +1 -1
  81. package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js +33 -17
  82. package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js.map +1 -1
  83. package/dist/crewfoundry/pages/LearningMyLearningPagePage.js +83 -59
  84. package/dist/crewfoundry/pages/LearningMyLearningPagePage.js.map +1 -1
  85. package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js +68 -48
  86. package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js.map +1 -1
  87. package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js +80 -60
  88. package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js.map +1 -1
  89. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js +153 -118
  90. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js.map +1 -1
  91. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js +42 -37
  92. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js.map +1 -1
  93. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js +67 -47
  94. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js.map +1 -1
  95. package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js +104 -85
  96. package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js.map +1 -1
  97. package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js +76 -57
  98. package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js.map +1 -1
  99. package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js +78 -60
  100. package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js.map +1 -1
  101. package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js +138 -93
  102. package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js.map +1 -1
  103. package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js +98 -53
  104. package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js.map +1 -1
  105. package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js +69 -49
  106. package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js.map +1 -1
  107. package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js +84 -65
  108. package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js.map +1 -1
  109. package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js +76 -52
  110. package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js.map +1 -1
  111. package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js +58 -40
  112. package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js.map +1 -1
  113. package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js +85 -65
  114. package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js.map +1 -1
  115. package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js +36 -29
  116. package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js.map +1 -1
  117. package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js +108 -73
  118. package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js.map +1 -1
  119. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js +43 -27
  120. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js.map +1 -1
  121. package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js +67 -47
  122. package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js.map +1 -1
  123. package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js +108 -63
  124. package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js.map +1 -1
  125. package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js +83 -64
  126. package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js.map +1 -1
  127. package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js +185 -144
  128. package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js.map +1 -1
  129. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js +40 -24
  130. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js.map +1 -1
  131. package/package.json +2 -2
@@ -1,93 +1,131 @@
1
1
  import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
2
- import { BookOpen as t, Clock as n, Play as r, Star as i, Users 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";
2
+ import { BookOpen as t, Clock as n, GraduationCap as r, Play as i, Star as a, Users as o } from "lucide-react";
3
+ import { useNavigate as s } from "react-router-dom";
4
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
5
+ import { Badge as u, Button as d, Card as f, CardContent as p, CardHeader as m, CardTitle as h, EmphasisPanel as g, GradientText as _, IllustratedEmptyState as v, NextSteps as y, PagePurpose as b } from "@burdenoff/fe-libs/ui";
5
6
  //#region src/crewfoundry/pages/LearningCourseDetailsPagePage.tsx
6
- function m() {
7
- let { courses: m } = e(), h = m[0];
8
- if (!h) return /* @__PURE__ */ o("div", {
9
- className: "p-6 text-text-secondary",
10
- children: "No course found."
7
+ function x() {
8
+ let x = s(), { courses: S } = e(), C = S[0];
9
+ if (!C) return /* @__PURE__ */ c("div", {
10
+ className: "p-6",
11
+ children: /* @__PURE__ */ c(v, {
12
+ illustration: "empty-search",
13
+ title: "Course not found",
14
+ description: "This course is no longer available."
15
+ })
11
16
  });
12
- let g = Math.round(h.completed / h.enrolled * 100);
13
- return /* @__PURE__ */ s("div", {
17
+ let w = Math.round(C.completed / C.enrolled * 100);
18
+ return /* @__PURE__ */ l("div", {
14
19
  className: "space-y-6 p-6 max-w-4xl",
15
20
  children: [
16
- /* @__PURE__ */ s("div", {
21
+ /* @__PURE__ */ l("div", {
17
22
  className: "flex items-center justify-between",
18
- children: [/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ s("div", {
19
- className: "flex items-center gap-2 mb-1",
20
- children: [/* @__PURE__ */ o("h1", {
21
- className: "text-2xl font-semibold",
22
- children: h.title
23
- }), /* @__PURE__ */ o(c, {
24
- variant: h.level === "beginner" ? "secondary" : h.level === "intermediate" ? "default" : "destructive",
25
- children: h.level
26
- })]
27
- }), /* @__PURE__ */ s("p", {
28
- className: "text-sm text-text-secondary",
29
- children: [
30
- "by ",
31
- h.instructor,
32
- " · ",
33
- h.category
34
- ]
35
- })] }), /* @__PURE__ */ s(l, { children: [/* @__PURE__ */ o(r, { className: "h-4 w-4 mr-1" }), "Start Course"] })]
23
+ children: [/* @__PURE__ */ l("div", { children: [
24
+ /* @__PURE__ */ l("div", {
25
+ className: "flex items-center gap-2 mb-1",
26
+ children: [/* @__PURE__ */ c("h1", {
27
+ className: "text-2xl font-semibold",
28
+ children: /* @__PURE__ */ c(_, { children: C.title })
29
+ }), /* @__PURE__ */ c(u, {
30
+ variant: C.level === "beginner" ? "secondary" : C.level === "intermediate" ? "default" : "destructive",
31
+ children: C.level
32
+ })]
33
+ }),
34
+ /* @__PURE__ */ l("p", {
35
+ className: "text-sm text-text-secondary",
36
+ children: [
37
+ "by ",
38
+ C.instructor,
39
+ " · ",
40
+ C.category
41
+ ]
42
+ }),
43
+ /* @__PURE__ */ c(b, {
44
+ className: "mt-2",
45
+ children: "Everything you need to decide on and start this course — what it covers, who it's for, and how others have done — so you can enroll with confidence and build the right skills."
46
+ })
47
+ ] }), /* @__PURE__ */ l(d, { children: [/* @__PURE__ */ c(i, { className: "h-4 w-4 mr-1" }), "Start Course"] })]
48
+ }),
49
+ /* @__PURE__ */ c(y, {
50
+ storageKey: "crewfoundry-course-details",
51
+ steps: [
52
+ {
53
+ id: "start",
54
+ label: "Start the first module",
55
+ description: "Begin learning and track your progress as you go.",
56
+ icon: /* @__PURE__ */ c(i, { className: "h-4 w-4" }),
57
+ onClick: () => x("../../learning/course-learning-page")
58
+ },
59
+ {
60
+ id: "my-learning",
61
+ label: "See all your learning",
62
+ description: "Review everything you are currently enrolled in.",
63
+ icon: /* @__PURE__ */ c(r, { className: "h-4 w-4" }),
64
+ onClick: () => x("../../learning/my-learning-page")
65
+ },
66
+ {
67
+ id: "browse",
68
+ label: "Browse more courses",
69
+ description: "Find related training to round out your skills.",
70
+ icon: /* @__PURE__ */ c(t, { className: "h-4 w-4" }),
71
+ onClick: () => x("../../learning/courses-page")
72
+ }
73
+ ]
36
74
  }),
37
- /* @__PURE__ */ s("div", {
75
+ /* @__PURE__ */ l("div", {
38
76
  className: "grid gap-4 md:grid-cols-4",
39
77
  children: [
40
- /* @__PURE__ */ o(u, { children: /* @__PURE__ */ s(d, {
78
+ /* @__PURE__ */ c(f, { children: /* @__PURE__ */ l(p, {
41
79
  className: "p-4 text-center",
42
80
  children: [
43
- /* @__PURE__ */ o(n, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
44
- /* @__PURE__ */ o("p", {
81
+ /* @__PURE__ */ c(n, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
82
+ /* @__PURE__ */ c("p", {
45
83
  className: "text-lg font-bold",
46
- children: h.duration
84
+ children: C.duration
47
85
  }),
48
- /* @__PURE__ */ o("p", {
86
+ /* @__PURE__ */ c("p", {
49
87
  className: "text-xs text-text-secondary",
50
88
  children: "Duration"
51
89
  })
52
90
  ]
53
91
  }) }),
54
- /* @__PURE__ */ o(u, { children: /* @__PURE__ */ s(d, {
92
+ /* @__PURE__ */ c(f, { children: /* @__PURE__ */ l(p, {
55
93
  className: "p-4 text-center",
56
94
  children: [
57
- /* @__PURE__ */ o(t, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
58
- /* @__PURE__ */ o("p", {
95
+ /* @__PURE__ */ c(t, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
96
+ /* @__PURE__ */ c("p", {
59
97
  className: "text-lg font-bold",
60
- children: h.modules
98
+ children: C.modules
61
99
  }),
62
- /* @__PURE__ */ o("p", {
100
+ /* @__PURE__ */ c("p", {
63
101
  className: "text-xs text-text-secondary",
64
102
  children: "Modules"
65
103
  })
66
104
  ]
67
105
  }) }),
68
- /* @__PURE__ */ o(u, { children: /* @__PURE__ */ s(d, {
106
+ /* @__PURE__ */ c(f, { children: /* @__PURE__ */ l(p, {
69
107
  className: "p-4 text-center",
70
108
  children: [
71
- /* @__PURE__ */ o(a, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
72
- /* @__PURE__ */ o("p", {
109
+ /* @__PURE__ */ c(o, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
110
+ /* @__PURE__ */ c("p", {
73
111
  className: "text-lg font-bold",
74
- children: h.enrolled
112
+ children: C.enrolled
75
113
  }),
76
- /* @__PURE__ */ o("p", {
114
+ /* @__PURE__ */ c("p", {
77
115
  className: "text-xs text-text-secondary",
78
116
  children: "Enrolled"
79
117
  })
80
118
  ]
81
119
  }) }),
82
- /* @__PURE__ */ o(u, { children: /* @__PURE__ */ s(d, {
120
+ /* @__PURE__ */ c(f, { children: /* @__PURE__ */ l(p, {
83
121
  className: "p-4 text-center",
84
122
  children: [
85
- /* @__PURE__ */ o(i, { className: "h-5 w-5 mx-auto text-yellow-500 mb-1" }),
86
- /* @__PURE__ */ s("p", {
123
+ /* @__PURE__ */ c(a, { className: "h-5 w-5 mx-auto text-status-warning-text mb-1" }),
124
+ /* @__PURE__ */ l("p", {
87
125
  className: "text-lg font-bold",
88
- children: [h.rating, "/5"]
126
+ children: [C.rating, "/5"]
89
127
  }),
90
- /* @__PURE__ */ o("p", {
128
+ /* @__PURE__ */ c("p", {
91
129
  className: "text-xs text-text-secondary",
92
130
  children: "Rating"
93
131
  })
@@ -95,34 +133,41 @@ function m() {
95
133
  }) })
96
134
  ]
97
135
  }),
98
- /* @__PURE__ */ s(u, { children: [/* @__PURE__ */ o(f, { children: /* @__PURE__ */ o(p, { children: "About this Course" }) }), /* @__PURE__ */ s(d, { children: [/* @__PURE__ */ o("p", {
99
- className: "text-sm text-text-secondary",
100
- children: h.description
101
- }), /* @__PURE__ */ o("div", {
102
- className: "flex flex-wrap gap-1 mt-3",
103
- children: h.skills.map((e) => /* @__PURE__ */ o(c, {
104
- variant: "outline",
105
- children: e
106
- }, e))
107
- })] })] }),
108
- /* @__PURE__ */ s(u, { children: [/* @__PURE__ */ o(f, { children: /* @__PURE__ */ o(p, { children: "Completion Statistics" }) }), /* @__PURE__ */ o(d, { children: /* @__PURE__ */ s("div", {
136
+ /* @__PURE__ */ l(g, { children: [
137
+ /* @__PURE__ */ c("div", {
138
+ className: "mb-2 text-lg font-semibold",
139
+ children: "About this Course"
140
+ }),
141
+ /* @__PURE__ */ c("p", {
142
+ className: "text-sm text-text-secondary",
143
+ children: C.description
144
+ }),
145
+ /* @__PURE__ */ c("div", {
146
+ className: "flex flex-wrap gap-1 mt-3",
147
+ children: C.skills.map((e) => /* @__PURE__ */ c(u, {
148
+ variant: "outline",
149
+ children: e
150
+ }, e))
151
+ })
152
+ ] }),
153
+ /* @__PURE__ */ l(f, { children: [/* @__PURE__ */ c(m, { children: /* @__PURE__ */ c(h, { children: "Completion Statistics" }) }), /* @__PURE__ */ c(p, { children: /* @__PURE__ */ l("div", {
109
154
  className: "space-y-2",
110
- children: [/* @__PURE__ */ s("div", {
155
+ children: [/* @__PURE__ */ l("div", {
111
156
  className: "flex justify-between text-sm",
112
- children: [/* @__PURE__ */ s("span", { children: [
113
- h.completed,
157
+ children: [/* @__PURE__ */ l("span", { children: [
158
+ C.completed,
114
159
  " of ",
115
- h.enrolled,
160
+ C.enrolled,
116
161
  " students completed"
117
- ] }), /* @__PURE__ */ s("span", {
162
+ ] }), /* @__PURE__ */ l("span", {
118
163
  className: "font-medium",
119
- children: [g, "%"]
164
+ children: [w, "%"]
120
165
  })]
121
- }), /* @__PURE__ */ o("div", {
166
+ }), /* @__PURE__ */ c("div", {
122
167
  className: "h-3 bg-bg-sunken rounded overflow-hidden",
123
- children: /* @__PURE__ */ o("div", {
124
- className: "h-3 bg-green-500 rounded",
125
- style: { width: `${g}%` }
168
+ children: /* @__PURE__ */ c("div", {
169
+ className: "h-3 bg-status-success-text rounded",
170
+ style: { width: `${w}%` }
126
171
  })
127
172
  })]
128
173
  }) })] })
@@ -130,6 +175,6 @@ function m() {
130
175
  });
131
176
  }
132
177
  //#endregion
133
- export { m as LearningCourseDetailsPagePage };
178
+ export { x as LearningCourseDetailsPagePage };
134
179
 
135
180
  //# sourceMappingURL=LearningCourseDetailsPagePage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LearningCourseDetailsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/LearningCourseDetailsPagePage.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, Play, Star, Users } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function LearningCourseDetailsPagePage() {\n const { courses } = useCrewFoundryStore();\n const course = courses[0];\n if (!course) return <div className=\"p-6 text-text-secondary\">No course found.</div>;\n const completionRate = Math.round((course.completed / course.enrolled) * 100);\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 <div className=\"flex items-center gap-2 mb-1\">\n <h1 className=\"text-2xl font-semibold\">{course.title}</h1>\n <Badge\n variant={\n course.level === 'beginner'\n ? 'secondary'\n : course.level === 'intermediate'\n ? 'default'\n : 'destructive'\n }\n >\n {course.level}\n </Badge>\n </div>\n <p className=\"text-sm text-text-secondary\">\n by {course.instructor} · {course.category}\n </p>\n </div>\n <Button>\n <Play className=\"h-4 w-4 mr-1\" />\n Start Course\n </Button>\n </div>\n <div className=\"grid gap-4 md:grid-cols-4\">\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\">{course.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 <BookOpen className=\"h-5 w-5 mx-auto text-text-secondary mb-1\" />\n <p className=\"text-lg font-bold\">{course.modules}</p>\n <p className=\"text-xs text-text-secondary\">Modules</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\">{course.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 <Star className=\"h-5 w-5 mx-auto text-yellow-500 mb-1\" />\n <p className=\"text-lg font-bold\">{course.rating}/5</p>\n <p className=\"text-xs text-text-secondary\">Rating</p>\n </CardContent>\n </Card>\n </div>\n <Card>\n <CardHeader>\n <CardTitle>About this Course</CardTitle>\n </CardHeader>\n <CardContent>\n <p className=\"text-sm text-text-secondary\">{course.description}</p>\n <div className=\"flex flex-wrap gap-1 mt-3\">\n {course.skills.map((s) => (\n <Badge key={s} variant=\"outline\">\n {s}\n </Badge>\n ))}\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardHeader>\n <CardTitle>Completion Statistics</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-2\">\n <div className=\"flex justify-between text-sm\">\n <span>\n {course.completed} of {course.enrolled} students completed\n </span>\n <span className=\"font-medium\">{completionRate}%</span>\n </div>\n <div className=\"h-3 bg-bg-sunken rounded overflow-hidden\">\n <div className=\"h-3 bg-green-500 rounded\" style={{ width: `${completionRate}%` }} />\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"LearningCourseDetailsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/LearningCourseDetailsPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n EmphasisPanel,\n GradientText,\n IllustratedEmptyState,\n NextSteps,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { BookOpen, Clock, GraduationCap, Play, Star, Users } from 'lucide-react';\nimport { useNavigate } from 'react-router-dom';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function LearningCourseDetailsPagePage() {\n const navigate = useNavigate();\n const { courses } = useCrewFoundryStore();\n const course = courses[0];\n if (!course)\n return (\n <div className=\"p-6\">\n <IllustratedEmptyState\n illustration=\"empty-search\"\n title=\"Course not found\"\n description=\"This course is no longer available.\"\n />\n </div>\n );\n const completionRate = Math.round((course.completed / course.enrolled) * 100);\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 <div className=\"flex items-center gap-2 mb-1\">\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>{course.title}</GradientText>\n </h1>\n <Badge\n variant={\n course.level === 'beginner'\n ? 'secondary'\n : course.level === 'intermediate'\n ? 'default'\n : 'destructive'\n }\n >\n {course.level}\n </Badge>\n </div>\n <p className=\"text-sm text-text-secondary\">\n by {course.instructor} · {course.category}\n </p>\n <PagePurpose className=\"mt-2\">\n Everything you need to decide on and start this course — what it covers, who it&apos;s\n for, and how others have done — so you can enroll with confidence and build the right\n skills.\n </PagePurpose>\n </div>\n <Button>\n <Play className=\"h-4 w-4 mr-1\" />\n Start Course\n </Button>\n </div>\n\n <NextSteps\n storageKey=\"crewfoundry-course-details\"\n steps={[\n {\n id: 'start',\n label: 'Start the first module',\n description: 'Begin learning and track your progress as you go.',\n icon: <Play className=\"h-4 w-4\" />,\n onClick: () => navigate('../../learning/course-learning-page'),\n },\n {\n id: 'my-learning',\n label: 'See all your learning',\n description: 'Review everything you are currently enrolled in.',\n icon: <GraduationCap className=\"h-4 w-4\" />,\n onClick: () => navigate('../../learning/my-learning-page'),\n },\n {\n id: 'browse',\n label: 'Browse more courses',\n description: 'Find related training to round out your skills.',\n icon: <BookOpen className=\"h-4 w-4\" />,\n onClick: () => navigate('../../learning/courses-page'),\n },\n ]}\n />\n\n <div className=\"grid gap-4 md:grid-cols-4\">\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\">{course.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 <BookOpen className=\"h-5 w-5 mx-auto text-text-secondary mb-1\" />\n <p className=\"text-lg font-bold\">{course.modules}</p>\n <p className=\"text-xs text-text-secondary\">Modules</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\">{course.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 <Star className=\"h-5 w-5 mx-auto text-status-warning-text mb-1\" />\n <p className=\"text-lg font-bold\">{course.rating}/5</p>\n <p className=\"text-xs text-text-secondary\">Rating</p>\n </CardContent>\n </Card>\n </div>\n <EmphasisPanel>\n <div className=\"mb-2 text-lg font-semibold\">About this Course</div>\n <p className=\"text-sm text-text-secondary\">{course.description}</p>\n <div className=\"flex flex-wrap gap-1 mt-3\">\n {course.skills.map((s) => (\n <Badge key={s} variant=\"outline\">\n {s}\n </Badge>\n ))}\n </div>\n </EmphasisPanel>\n <Card>\n <CardHeader>\n <CardTitle>Completion Statistics</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-2\">\n <div className=\"flex justify-between text-sm\">\n <span>\n {course.completed} of {course.enrolled} students completed\n </span>\n <span className=\"font-medium\">{completionRate}%</span>\n </div>\n <div className=\"h-3 bg-bg-sunken rounded overflow-hidden\">\n <div\n className=\"h-3 bg-status-success-text rounded\"\n style={{ width: `${completionRate}%` }}\n />\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -2,78 +2,90 @@ import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
2
2
  import { useMemo as t } from "react";
3
3
  import { CheckCircle as n, Clock as r, Play as i } from "lucide-react";
4
4
  import { jsx as a, jsxs as o } from "react/jsx-runtime";
5
- import { Badge as s, Button as c, Card as l, CardContent as u, CardHeader as d, CardTitle as f } from "@burdenoff/fe-libs/ui";
5
+ import { Badge as s, Button as c, Card as l, CardContent as u, CardHeader as d, CardTitle as f, GlassCard as p, GradientText as m, PagePurpose as h } from "@burdenoff/fe-libs/ui";
6
6
  //#region src/crewfoundry/pages/LearningCourseLearningPagePage.tsx
7
- function p() {
8
- let { courses: p } = e(), m = p[0], h = t(() => {
9
- let e = Math.max(m?.modules || 0, 6);
7
+ function g() {
8
+ let { courses: g } = e(), _ = g[0], v = t(() => {
9
+ let e = Math.max(_?.modules || 0, 6);
10
10
  return Array.from({ length: e }, (e, t) => {
11
11
  let n = t < 2 ? "completed" : t === 2 ? "in_progress" : "locked";
12
12
  return {
13
13
  id: `module-${t + 1}`,
14
- title: `${m?.title || "Learning"} Module ${t + 1}`,
14
+ title: `${_?.title || "Learning"} Module ${t + 1}`,
15
15
  duration: `${25 + t % 4 * 10} min`,
16
16
  status: n
17
17
  };
18
18
  });
19
- }, [m]), g = h.filter((e) => e.status === "completed").length, _ = Math.round(g / Math.max(h.length, 1) * 100);
19
+ }, [_]), y = v.filter((e) => e.status === "completed").length, b = Math.round(y / Math.max(v.length, 1) * 100);
20
20
  return /* @__PURE__ */ o("div", {
21
21
  className: "max-w-3xl space-y-6 p-6",
22
22
  children: [
23
- /* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("h1", {
24
- className: "text-2xl font-semibold",
25
- children: m?.title || "Leadership Fundamentals for Tech Managers"
26
- }), /* @__PURE__ */ o("p", {
27
- className: "text-sm text-text-secondary",
28
- children: [
29
- "by ",
30
- m?.instructor || "CrewFoundry Academy",
31
- " · Module ",
32
- g + 1,
33
- " of",
34
- " ",
35
- h.length
36
- ]
37
- })] }),
38
- /* @__PURE__ */ a(l, { children: /* @__PURE__ */ o(u, {
39
- className: "p-4",
40
- children: [
41
- /* @__PURE__ */ o("div", {
42
- className: "mb-2 flex items-center justify-between",
43
- children: [/* @__PURE__ */ a("span", {
44
- className: "text-sm font-medium",
45
- children: "Progress"
46
- }), /* @__PURE__ */ o("span", {
47
- className: "text-sm",
48
- children: [_, "%"]
49
- })]
50
- }),
51
- /* @__PURE__ */ a("div", {
52
- className: "h-3 overflow-hidden rounded bg-bg-sunken",
53
- children: /* @__PURE__ */ a("div", {
54
- className: "h-3 rounded bg-action-primary-bg",
55
- style: { width: `${_}%` }
23
+ /* @__PURE__ */ o("div", { children: [
24
+ /* @__PURE__ */ a("h1", {
25
+ className: "text-2xl font-semibold",
26
+ children: /* @__PURE__ */ a(m, { children: _?.title || "Leadership Fundamentals for Tech Managers" })
27
+ }),
28
+ /* @__PURE__ */ o("p", {
29
+ className: "text-sm text-text-secondary",
30
+ children: [
31
+ "by ",
32
+ _?.instructor || "CrewFoundry Academy",
33
+ " · Module ",
34
+ y + 1,
35
+ " of",
36
+ " ",
37
+ v.length
38
+ ]
39
+ }),
40
+ /* @__PURE__ */ a(h, {
41
+ className: "mt-1",
42
+ children: "Work through a course lesson-by-lesson — track your progress and complete modules to build the skill at hand."
43
+ })
44
+ ] }),
45
+ /* @__PURE__ */ a(p, {
46
+ treatment: "glass",
47
+ glow: !0,
48
+ className: "border-border-seam",
49
+ children: /* @__PURE__ */ o(u, {
50
+ className: "p-4",
51
+ children: [
52
+ /* @__PURE__ */ o("div", {
53
+ className: "mb-2 flex items-center justify-between",
54
+ children: [/* @__PURE__ */ a("span", {
55
+ className: "text-sm font-medium",
56
+ children: "Progress"
57
+ }), /* @__PURE__ */ o("span", {
58
+ className: "text-sm",
59
+ children: [b, "%"]
60
+ })]
61
+ }),
62
+ /* @__PURE__ */ a("div", {
63
+ className: "h-3 overflow-hidden rounded bg-bg-sunken",
64
+ children: /* @__PURE__ */ a("div", {
65
+ className: "h-3 rounded bg-action-primary-bg",
66
+ style: { width: `${b}%` }
67
+ })
68
+ }),
69
+ /* @__PURE__ */ o("p", {
70
+ className: "mt-1 text-xs text-text-secondary",
71
+ children: [
72
+ y,
73
+ " of ",
74
+ v.length,
75
+ " modules completed"
76
+ ]
56
77
  })
57
- }),
58
- /* @__PURE__ */ o("p", {
59
- className: "mt-1 text-xs text-text-secondary",
60
- children: [
61
- g,
62
- " of ",
63
- h.length,
64
- " modules completed"
65
- ]
66
- })
67
- ]
68
- }) }),
78
+ ]
79
+ })
80
+ }),
69
81
  /* @__PURE__ */ o(l, { children: [/* @__PURE__ */ a(d, { children: /* @__PURE__ */ a(f, { children: "Course Modules" }) }), /* @__PURE__ */ a(u, {
70
82
  className: "space-y-2",
71
- children: h.map((e, t) => /* @__PURE__ */ o("div", {
83
+ children: v.map((e, t) => /* @__PURE__ */ o("div", {
72
84
  className: `flex items-center gap-3 rounded border p-3 ${e.status === "locked" ? "opacity-50" : ""}`,
73
85
  children: [
74
86
  /* @__PURE__ */ a("div", {
75
87
  className: "flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-full bg-bg-sunken text-xs font-bold",
76
- children: e.status === "completed" ? /* @__PURE__ */ a(n, { className: "h-5 w-5 text-green-500" }) : t + 1
88
+ children: e.status === "completed" ? /* @__PURE__ */ a(n, { className: "h-5 w-5 text-status-success-text" }) : t + 1
77
89
  }),
78
90
  /* @__PURE__ */ o("div", {
79
91
  className: "flex-1",
@@ -106,6 +118,6 @@ function p() {
106
118
  });
107
119
  }
108
120
  //#endregion
109
- export { p as LearningCourseLearningPagePage };
121
+ export { g as LearningCourseLearningPagePage };
110
122
 
111
123
  //# sourceMappingURL=LearningCourseLearningPagePage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LearningCourseLearningPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/LearningCourseLearningPagePage.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport { Badge, Button, Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { CheckCircle, Clock, Play } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\ntype CourseModule = {\n id: string;\n title: string;\n duration: string;\n status: 'completed' | 'in_progress' | 'locked';\n};\n\nexport function LearningCourseLearningPagePage() {\n const { courses } = useCrewFoundryStore();\n\n const currentCourse = courses[0];\n\n const courseModules = useMemo<CourseModule[]>(() => {\n const moduleCount = Math.max(currentCourse?.modules || 0, 6);\n return Array.from({ length: moduleCount }, (_, index) => {\n const status: CourseModule['status'] =\n index < 2 ? 'completed' : index === 2 ? 'in_progress' : 'locked';\n return {\n id: `module-${index + 1}`,\n title: `${currentCourse?.title || 'Learning'} Module ${index + 1}`,\n duration: `${25 + (index % 4) * 10} min`,\n status,\n };\n });\n }, [currentCourse]);\n\n const completedCount = courseModules.filter((module) => module.status === 'completed').length;\n const progress = Math.round((completedCount / Math.max(courseModules.length, 1)) * 100);\n\n return (\n <div className=\"max-w-3xl space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n {currentCourse?.title || 'Leadership Fundamentals for Tech Managers'}\n </h1>\n <p className=\"text-sm text-text-secondary\">\n by {currentCourse?.instructor || 'CrewFoundry Academy'} · Module {completedCount + 1} of{' '}\n {courseModules.length}\n </p>\n </div>\n\n <Card>\n <CardContent className=\"p-4\">\n <div className=\"mb-2 flex items-center justify-between\">\n <span className=\"text-sm font-medium\">Progress</span>\n <span className=\"text-sm\">{progress}%</span>\n </div>\n <div className=\"h-3 overflow-hidden rounded bg-bg-sunken\">\n <div className=\"h-3 rounded bg-action-primary-bg\" style={{ width: `${progress}%` }} />\n </div>\n <p className=\"mt-1 text-xs text-text-secondary\">\n {completedCount} of {courseModules.length} modules completed\n </p>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Course Modules</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n {courseModules.map((module, index) => (\n <div\n key={module.id}\n className={`flex items-center gap-3 rounded border p-3 ${module.status === 'locked' ? 'opacity-50' : ''}`}\n >\n <div className=\"flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-full bg-bg-sunken text-xs font-bold\">\n {module.status === 'completed' ? (\n <CheckCircle className=\"h-5 w-5 text-green-500\" />\n ) : (\n index + 1\n )}\n </div>\n <div className=\"flex-1\">\n <p\n className={`text-sm ${module.status === 'completed' ? 'text-text-secondary line-through' : 'font-medium'}`}\n >\n {module.title}\n </p>\n <p className=\"flex items-center gap-1 text-xs text-text-secondary\">\n <Clock className=\"h-3 w-3\" />\n {module.duration}\n </p>\n </div>\n {module.status === 'in_progress' ? (\n <Button size=\"sm\">\n <Play className=\"mr-1 h-3 w-3\" />\n Continue\n </Button>\n ) : null}\n {module.status === 'completed' ? (\n <Badge variant=\"default\" className=\"text-[10px]\">\n Completed\n </Badge>\n ) : null}\n {module.status === 'locked' ? (\n <Badge variant=\"secondary\" className=\"text-[10px]\">\n Locked\n </Badge>\n ) : null}\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":";;;;;;AAYA,SAAgB,IAAiC;CAC/C,IAAM,EAAE,eAAY,GAAqB,EAEnC,IAAgB,EAAQ,IAExB,IAAgB,QAA8B;EAClD,IAAM,IAAc,KAAK,IAAI,GAAe,WAAW,GAAG,EAAE;AAC5D,SAAO,MAAM,KAAK,EAAE,QAAQ,GAAa,GAAG,GAAG,MAAU;GACvD,IAAM,IACJ,IAAQ,IAAI,cAAc,MAAU,IAAI,gBAAgB;AAC1D,UAAO;IACL,IAAI,UAAU,IAAQ;IACtB,OAAO,GAAG,GAAe,SAAS,WAAW,UAAU,IAAQ;IAC/D,UAAU,GAAG,KAAM,IAAQ,IAAK,GAAG;IACnC;IACD;IACD;IACD,CAAC,EAAc,CAAC,EAEb,IAAiB,EAAc,QAAQ,MAAW,EAAO,WAAW,YAAY,CAAC,QACjF,IAAW,KAAK,MAAO,IAAiB,KAAK,IAAI,EAAc,QAAQ,EAAE,GAAI,IAAI;AAEvF,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;IAAI,WAAU;cACX,GAAe,SAAS;IACtB,CAAA,EACL,kBAAC,KAAD;IAAG,WAAU;cAAb;KAA2C;KACrC,GAAe,cAAc;KAAsB;KAAW,IAAiB;KAAE;KAAI;KACxF,EAAc;KACb;MACA,EAAA,CAAA;GAEN,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;IAAa,WAAU;cAAvB;KACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,QAAD;OAAM,WAAU;iBAAsB;OAAe,CAAA,EACrD,kBAAC,QAAD;OAAM,WAAU;iBAAhB,CAA2B,GAAS,IAAQ;SACxC;;KACN,kBAAC,OAAD;MAAK,WAAU;gBACb,kBAAC,OAAD;OAAK,WAAU;OAAmC,OAAO,EAAE,OAAO,GAAG,EAAS,IAAI;OAAI,CAAA;MAClF,CAAA;KACN,kBAAC,KAAD;MAAG,WAAU;gBAAb;OACG;OAAe;OAAK,EAAc;OAAO;OACxC;;KACQ;OACT,CAAA;GAEP,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAA,UAAW,kBAA0B,CAAA,EAC1B,CAAA,EACb,kBAAC,GAAD;IAAa,WAAU;cACpB,EAAc,KAAK,GAAQ,MAC1B,kBAAC,OAAD;KAEE,WAAW,8CAA8C,EAAO,WAAW,WAAW,eAAe;eAFvG;MAIE,kBAAC,OAAD;OAAK,WAAU;iBACZ,EAAO,WAAW,cACjB,kBAAC,GAAD,EAAa,WAAU,0BAA2B,CAAA,GAElD,IAAQ;OAEN,CAAA;MACN,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,KAAD;QACE,WAAW,WAAW,EAAO,WAAW,cAAc,qCAAqC;kBAE1F,EAAO;QACN,CAAA,EACJ,kBAAC,KAAD;QAAG,WAAU;kBAAb,CACE,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA,EAC5B,EAAO,SACN;UACA;;MACL,EAAO,WAAW,gBACjB,kBAAC,GAAD;OAAQ,MAAK;iBAAb,CACE,kBAAC,GAAD,EAAM,WAAU,gBAAiB,CAAA,EAAA,WAE1B;WACP;MACH,EAAO,WAAW,cACjB,kBAAC,GAAD;OAAO,SAAQ;OAAU,WAAU;iBAAc;OAEzC,CAAA,GACN;MACH,EAAO,WAAW,WACjB,kBAAC,GAAD;OAAO,SAAQ;OAAY,WAAU;iBAAc;OAE3C,CAAA,GACN;MACA;OArCC,EAAO,GAqCR,CACN;IACU,CAAA,CACT,EAAA,CAAA;GACH"}
1
+ {"version":3,"file":"LearningCourseLearningPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/LearningCourseLearningPagePage.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n GlassCard,\n GradientText,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { CheckCircle, Clock, Play } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\ntype CourseModule = {\n id: string;\n title: string;\n duration: string;\n status: 'completed' | 'in_progress' | 'locked';\n};\n\nexport function LearningCourseLearningPagePage() {\n const { courses } = useCrewFoundryStore();\n\n const currentCourse = courses[0];\n\n const courseModules = useMemo<CourseModule[]>(() => {\n const moduleCount = Math.max(currentCourse?.modules || 0, 6);\n return Array.from({ length: moduleCount }, (_, index) => {\n const status: CourseModule['status'] =\n index < 2 ? 'completed' : index === 2 ? 'in_progress' : 'locked';\n return {\n id: `module-${index + 1}`,\n title: `${currentCourse?.title || 'Learning'} Module ${index + 1}`,\n duration: `${25 + (index % 4) * 10} min`,\n status,\n };\n });\n }, [currentCourse]);\n\n const completedCount = courseModules.filter((module) => module.status === 'completed').length;\n const progress = Math.round((completedCount / Math.max(courseModules.length, 1)) * 100);\n\n return (\n <div className=\"max-w-3xl space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>\n {currentCourse?.title || 'Leadership Fundamentals for Tech Managers'}\n </GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">\n by {currentCourse?.instructor || 'CrewFoundry Academy'} · Module {completedCount + 1} of{' '}\n {courseModules.length}\n </p>\n <PagePurpose className=\"mt-1\">Work through a course lesson-by-lesson — track your progress and complete modules to build the skill at hand.</PagePurpose>\n </div>\n\n <GlassCard treatment=\"glass\" glow className=\"border-border-seam\">\n <CardContent className=\"p-4\">\n <div className=\"mb-2 flex items-center justify-between\">\n <span className=\"text-sm font-medium\">Progress</span>\n <span className=\"text-sm\">{progress}%</span>\n </div>\n <div className=\"h-3 overflow-hidden rounded bg-bg-sunken\">\n <div className=\"h-3 rounded bg-action-primary-bg\" style={{ width: `${progress}%` }} />\n </div>\n <p className=\"mt-1 text-xs text-text-secondary\">\n {completedCount} of {courseModules.length} modules completed\n </p>\n </CardContent>\n </GlassCard>\n\n <Card>\n <CardHeader>\n <CardTitle>Course Modules</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n {courseModules.map((module, index) => (\n <div\n key={module.id}\n className={`flex items-center gap-3 rounded border p-3 ${module.status === 'locked' ? 'opacity-50' : ''}`}\n >\n <div className=\"flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-full bg-bg-sunken text-xs font-bold\">\n {module.status === 'completed' ? (\n <CheckCircle className=\"h-5 w-5 text-status-success-text\" />\n ) : (\n index + 1\n )}\n </div>\n <div className=\"flex-1\">\n <p\n className={`text-sm ${module.status === 'completed' ? 'text-text-secondary line-through' : 'font-medium'}`}\n >\n {module.title}\n </p>\n <p className=\"flex items-center gap-1 text-xs text-text-secondary\">\n <Clock className=\"h-3 w-3\" />\n {module.duration}\n </p>\n </div>\n {module.status === 'in_progress' ? (\n <Button size=\"sm\">\n <Play className=\"mr-1 h-3 w-3\" />\n Continue\n </Button>\n ) : null}\n {module.status === 'completed' ? (\n <Badge variant=\"default\" className=\"text-[10px]\">\n Completed\n </Badge>\n ) : null}\n {module.status === 'locked' ? (\n <Badge variant=\"secondary\" className=\"text-[10px]\">\n Locked\n </Badge>\n ) : null}\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":";;;;;;AAsBA,SAAgB,IAAiC;CAC/C,IAAM,EAAE,eAAY,GAAqB,EAEnC,IAAgB,EAAQ,IAExB,IAAgB,QAA8B;EAClD,IAAM,IAAc,KAAK,IAAI,GAAe,WAAW,GAAG,EAAE;AAC5D,SAAO,MAAM,KAAK,EAAE,QAAQ,GAAa,GAAG,GAAG,MAAU;GACvD,IAAM,IACJ,IAAQ,IAAI,cAAc,MAAU,IAAI,gBAAgB;AAC1D,UAAO;IACL,IAAI,UAAU,IAAQ;IACtB,OAAO,GAAG,GAAe,SAAS,WAAW,UAAU,IAAQ;IAC/D,UAAU,GAAG,KAAM,IAAQ,IAAK,GAAG;IACnC;IACD;IACD;IACD,CAAC,EAAc,CAAC,EAEb,IAAiB,EAAc,QAAQ,MAAW,EAAO,WAAW,YAAY,CAAC,QACjF,IAAW,KAAK,MAAO,IAAiB,KAAK,IAAI,EAAc,QAAQ,EAAE,GAAI,IAAI;AAEvF,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,OAAD,EAAA,UAAA;IACE,kBAAC,MAAD;KAAI,WAAU;eACZ,kBAAC,GAAD,EAAA,UACG,GAAe,SAAS,6CACZ,CAAA;KACZ,CAAA;IACL,kBAAC,KAAD;KAAG,WAAU;eAAb;MAA2C;MACrC,GAAe,cAAc;MAAsB;MAAW,IAAiB;MAAE;MAAI;MACxF,EAAc;MACb;;IACJ,kBAAC,GAAD;KAAa,WAAU;eAAO;KAA2H,CAAA;IACrJ,EAAA,CAAA;GAEN,kBAAC,GAAD;IAAW,WAAU;IAAQ,MAAA;IAAK,WAAU;cAC1C,kBAAC,GAAD;KAAa,WAAU;eAAvB;MACE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,QAAD;QAAM,WAAU;kBAAsB;QAAe,CAAA,EACrD,kBAAC,QAAD;QAAM,WAAU;kBAAhB,CAA2B,GAAS,IAAQ;UACxC;;MACN,kBAAC,OAAD;OAAK,WAAU;iBACb,kBAAC,OAAD;QAAK,WAAU;QAAmC,OAAO,EAAE,OAAO,GAAG,EAAS,IAAI;QAAI,CAAA;OAClF,CAAA;MACN,kBAAC,KAAD;OAAG,WAAU;iBAAb;QACG;QAAe;QAAK,EAAc;QAAO;QACxC;;MACQ;;IACJ,CAAA;GAEZ,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAA,UAAW,kBAA0B,CAAA,EAC1B,CAAA,EACb,kBAAC,GAAD;IAAa,WAAU;cACpB,EAAc,KAAK,GAAQ,MAC1B,kBAAC,OAAD;KAEE,WAAW,8CAA8C,EAAO,WAAW,WAAW,eAAe;eAFvG;MAIE,kBAAC,OAAD;OAAK,WAAU;iBACZ,EAAO,WAAW,cACjB,kBAAC,GAAD,EAAa,WAAU,oCAAqC,CAAA,GAE5D,IAAQ;OAEN,CAAA;MACN,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,KAAD;QACE,WAAW,WAAW,EAAO,WAAW,cAAc,qCAAqC;kBAE1F,EAAO;QACN,CAAA,EACJ,kBAAC,KAAD;QAAG,WAAU;kBAAb,CACE,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA,EAC5B,EAAO,SACN;UACA;;MACL,EAAO,WAAW,gBACjB,kBAAC,GAAD;OAAQ,MAAK;iBAAb,CACE,kBAAC,GAAD,EAAM,WAAU,gBAAiB,CAAA,EAAA,WAE1B;WACP;MACH,EAAO,WAAW,cACjB,kBAAC,GAAD;OAAO,SAAQ;OAAU,WAAU;iBAAc;OAEzC,CAAA,GACN;MACH,EAAO,WAAW,WACjB,kBAAC,GAAD;OAAO,SAAQ;OAAY,WAAU;iBAAc;OAE3C,CAAA,GACN;MACA;OArCC,EAAO,GAqCR,CACN;IACU,CAAA,CACT,EAAA,CAAA;GACH"}
@@ -2,34 +2,50 @@ import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
2
2
  import { useState as t } from "react";
3
3
  import { Search as n, Star as r, Users as i } from "lucide-react";
4
4
  import { jsx as a, jsxs as o } from "react/jsx-runtime";
5
- import { Badge as s, Card as c, CardContent as l, CardDescription as u, CardHeader as d, CardTitle as f, Input as p } from "@burdenoff/fe-libs/ui";
5
+ import { Badge as s, CardContent as c, CardDescription as l, CardHeader as u, CardTitle as d, GlassCard as f, GradientText as p, IllustratedEmptyState as m, Input as h, PagePurpose as g } from "@burdenoff/fe-libs/ui";
6
6
  //#region src/crewfoundry/pages/LearningCoursesPagePage.tsx
7
- function m() {
8
- let { courses: m } = e(), [h, g] = t(""), _ = m.filter((e) => `${e.title} ${e.category} ${e.instructor}`.toLowerCase().includes(h.toLowerCase()));
7
+ function _() {
8
+ let { courses: _ } = e(), [v, y] = t(""), b = _.filter((e) => `${e.title} ${e.category} ${e.instructor}`.toLowerCase().includes(v.toLowerCase()));
9
9
  return /* @__PURE__ */ o("div", {
10
10
  className: "space-y-6 p-6",
11
11
  children: [
12
- /* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("h1", {
13
- className: "text-2xl font-semibold",
14
- children: "Course Catalog"
15
- }), /* @__PURE__ */ o("p", {
16
- className: "text-sm text-text-secondary",
17
- children: [m.length, " courses available"]
18
- })] }),
12
+ /* @__PURE__ */ o("div", { children: [
13
+ /* @__PURE__ */ a("h1", {
14
+ className: "text-2xl font-semibold",
15
+ children: /* @__PURE__ */ a(p, { children: "Course Catalog" })
16
+ }),
17
+ /* @__PURE__ */ o("p", {
18
+ className: "text-sm text-text-secondary",
19
+ children: [_.length, " courses available"]
20
+ }),
21
+ /* @__PURE__ */ a(g, {
22
+ className: "mt-1",
23
+ children: "Browse the course catalog — find training to grow your team's skills and enroll in the programs that fit your goals."
24
+ })
25
+ ] }),
19
26
  /* @__PURE__ */ o("div", {
20
27
  className: "relative max-w-sm",
21
- children: [/* @__PURE__ */ a(n, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ a(p, {
28
+ children: [/* @__PURE__ */ a(n, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ a(h, {
22
29
  placeholder: "Search courses...",
23
30
  className: "pl-9",
24
- value: h,
25
- onChange: (e) => g(e.target.value)
31
+ value: v,
32
+ onChange: (e) => y(e.target.value)
26
33
  })]
27
34
  }),
28
35
  /* @__PURE__ */ a("div", {
29
36
  className: "grid gap-4 md:grid-cols-2 lg:grid-cols-3",
30
- children: _.map((e) => /* @__PURE__ */ o(c, {
37
+ children: b.length === 0 ? /* @__PURE__ */ a("div", {
38
+ className: "col-span-full",
39
+ children: /* @__PURE__ */ a(m, {
40
+ illustration: "empty-search",
41
+ title: "No courses found",
42
+ description: "Try a different search term to find training."
43
+ })
44
+ }) : b.map((e, t) => /* @__PURE__ */ o(f, {
45
+ treatment: t === 0 ? "glass" : "plain",
46
+ glow: t === 0,
31
47
  className: "hover:shadow-md transition-shadow cursor-pointer",
32
- children: [/* @__PURE__ */ o(d, { children: [
48
+ children: [/* @__PURE__ */ o(u, { children: [
33
49
  /* @__PURE__ */ o("div", {
34
50
  className: "flex items-center justify-between",
35
51
  children: [/* @__PURE__ */ a(s, {
@@ -42,11 +58,11 @@ function m() {
42
58
  children: e.level
43
59
  })]
44
60
  }),
45
- /* @__PURE__ */ a(f, {
61
+ /* @__PURE__ */ a(d, {
46
62
  className: "text-base mt-2",
47
63
  children: e.title
48
64
  }),
49
- /* @__PURE__ */ o(u, { children: [
65
+ /* @__PURE__ */ o(l, { children: [
50
66
  e.instructor,
51
67
  " · ",
52
68
  e.duration,
@@ -54,7 +70,7 @@ function m() {
54
70
  e.modules,
55
71
  " modules"
56
72
  ] })
57
- ] }), /* @__PURE__ */ o(l, { children: [
73
+ ] }), /* @__PURE__ */ o(c, { children: [
58
74
  /* @__PURE__ */ a("p", {
59
75
  className: "text-sm text-text-secondary mb-3",
60
76
  children: e.description
@@ -72,7 +88,7 @@ function m() {
72
88
  children: [
73
89
  /* @__PURE__ */ o("span", {
74
90
  className: "flex items-center gap-1",
75
- children: [/* @__PURE__ */ a(r, { className: "h-3 w-3 text-yellow-500" }), e.rating]
91
+ children: [/* @__PURE__ */ a(r, { className: "h-3 w-3 text-status-warning-text" }), e.rating]
76
92
  }),
77
93
  /* @__PURE__ */ o("span", {
78
94
  className: "flex items-center gap-1",
@@ -92,6 +108,6 @@ function m() {
92
108
  });
93
109
  }
94
110
  //#endregion
95
- export { m as LearningCoursesPagePage };
111
+ export { _ as LearningCoursesPagePage };
96
112
 
97
113
  //# sourceMappingURL=LearningCoursesPagePage.js.map