@burdenoff/microfe-crewfoundry 2026.703.2 → 2026.704.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 (130) hide show
  1. package/dist/crewfoundry/components/forms/FormModal.js.map +1 -1
  2. package/dist/crewfoundry/pages/AdminAdminPagePage.js +117 -164
  3. package/dist/crewfoundry/pages/AdminAdminPagePage.js.map +1 -1
  4. package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js +99 -82
  5. package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
  6. package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js +160 -192
  7. package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js.map +1 -1
  8. package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js +238 -231
  9. package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js.map +1 -1
  10. package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js +196 -166
  11. package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js.map +1 -1
  12. package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js.map +1 -1
  13. package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js +45 -147
  14. package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js.map +1 -1
  15. package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js +20 -11
  16. package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js.map +1 -1
  17. package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js +45 -152
  18. package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js.map +1 -1
  19. package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js +50 -138
  20. package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js.map +1 -1
  21. package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js +149 -67
  22. package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js.map +1 -1
  23. package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js +50 -201
  24. package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js.map +1 -1
  25. package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js +205 -136
  26. package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js.map +1 -1
  27. package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js +25 -31
  28. package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js.map +1 -1
  29. package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js +118 -104
  30. package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js.map +1 -1
  31. package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js +117 -58
  32. package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js.map +1 -1
  33. package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js +90 -94
  34. package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js.map +1 -1
  35. package/dist/crewfoundry/pages/DashboardDashboardPagePage.js +210 -191
  36. package/dist/crewfoundry/pages/DashboardDashboardPagePage.js.map +1 -1
  37. package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js +213 -180
  38. package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js.map +1 -1
  39. package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js +133 -264
  40. package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js.map +1 -1
  41. package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js +279 -212
  42. package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js.map +1 -1
  43. package/dist/crewfoundry/pages/HiringApplicationsPagePage.js +131 -105
  44. package/dist/crewfoundry/pages/HiringApplicationsPagePage.js.map +1 -1
  45. package/dist/crewfoundry/pages/HiringCandidatesPagePage.js +167 -148
  46. package/dist/crewfoundry/pages/HiringCandidatesPagePage.js.map +1 -1
  47. package/dist/crewfoundry/pages/HiringCreateJobPagePage.js +3 -3
  48. package/dist/crewfoundry/pages/HiringCreateJobPagePage.js.map +1 -1
  49. package/dist/crewfoundry/pages/HiringInterviewsPagePage.js +13 -5
  50. package/dist/crewfoundry/pages/HiringInterviewsPagePage.js.map +1 -1
  51. package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js +151 -152
  52. package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js.map +1 -1
  53. package/dist/crewfoundry/pages/HiringJobsPagePage.js +38 -21
  54. package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
  55. package/dist/crewfoundry/pages/HrDepartmentsPagePage.js +3 -3
  56. package/dist/crewfoundry/pages/HrDepartmentsPagePage.js.map +1 -1
  57. package/dist/crewfoundry/pages/HrEmployeesPagePage.js +134 -127
  58. package/dist/crewfoundry/pages/HrEmployeesPagePage.js.map +1 -1
  59. package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js +163 -132
  60. package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js.map +1 -1
  61. package/dist/crewfoundry/pages/HrPayrollPagePage.js +202 -160
  62. package/dist/crewfoundry/pages/HrPayrollPagePage.js.map +1 -1
  63. package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js +104 -91
  64. package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js.map +1 -1
  65. package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js +29 -147
  66. package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js.map +1 -1
  67. package/dist/crewfoundry/pages/LearningCertificatesPagePage.js +22 -106
  68. package/dist/crewfoundry/pages/LearningCertificatesPagePage.js.map +1 -1
  69. package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js +74 -74
  70. package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js.map +1 -1
  71. package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js +101 -97
  72. package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js.map +1 -1
  73. package/dist/crewfoundry/pages/LearningCoursesPagePage.js +64 -47
  74. package/dist/crewfoundry/pages/LearningCoursesPagePage.js.map +1 -1
  75. package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js +111 -121
  76. package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js.map +1 -1
  77. package/dist/crewfoundry/pages/LearningLearningPagePage.js +131 -110
  78. package/dist/crewfoundry/pages/LearningLearningPagePage.js.map +1 -1
  79. package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js +65 -64
  80. package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js.map +1 -1
  81. package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js +58 -43
  82. package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js.map +1 -1
  83. package/dist/crewfoundry/pages/LearningMyLearningPagePage.js +66 -82
  84. package/dist/crewfoundry/pages/LearningMyLearningPagePage.js.map +1 -1
  85. package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js +38 -88
  86. package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js.map +1 -1
  87. package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js +59 -65
  88. package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js.map +1 -1
  89. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js +209 -323
  90. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js.map +1 -1
  91. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js +175 -220
  92. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js.map +1 -1
  93. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js +74 -59
  94. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js.map +1 -1
  95. package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js +96 -80
  96. package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js.map +1 -1
  97. package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js +28 -100
  98. package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js.map +1 -1
  99. package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js +27 -20
  100. package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js.map +1 -1
  101. package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js +73 -73
  102. package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js.map +1 -1
  103. package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js +62 -56
  104. package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js.map +1 -1
  105. package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js +40 -138
  106. package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js.map +1 -1
  107. package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js +126 -93
  108. package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js.map +1 -1
  109. package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js +99 -77
  110. package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js.map +1 -1
  111. package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js.map +1 -1
  112. package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js +73 -74
  113. package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js.map +1 -1
  114. package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js +1 -1
  115. package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js.map +1 -1
  116. package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js +122 -122
  117. package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js.map +1 -1
  118. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js +130 -113
  119. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js.map +1 -1
  120. package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js +68 -59
  121. package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js.map +1 -1
  122. package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js +73 -62
  123. package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js.map +1 -1
  124. package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js +82 -58
  125. package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js.map +1 -1
  126. package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js +153 -153
  127. package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js.map +1 -1
  128. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js +63 -48
  129. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js.map +1 -1
  130. package/package.json +1 -1
@@ -1,178 +1,199 @@
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
- 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, GlassCard as m, GradientText as h, PagePurpose as g } from "@burdenoff/fe-libs/ui";
3
+ import { useNavigate as o } from "react-router-dom";
4
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
5
+ import { Badge as l, Card as u, CardContent as d, CardDescription as f, CardHeader as p, CardTitle as m, GlassCard as h, GradientText as g, PagePurpose as _ } from "@burdenoff/fe-libs/ui";
5
6
  //#region src/crewfoundry/pages/LearningLearningPagePage.tsx
6
- function _() {
7
- let { courses: _, learningPaths: v } = e(), y = _.reduce((e, t) => e + t.enrolled, 0), b = _.reduce((e, t) => e + t.completed, 0);
8
- return /* @__PURE__ */ s("div", {
7
+ function v() {
8
+ let v = o(), { courses: y, learningPaths: b } = e(), x = y.reduce((e, t) => e + t.enrolled, 0), S = y.reduce((e, t) => e + t.completed, 0), C = [...y].sort((e, t) => t.rating - e.rating).slice(0, 3), w = (e) => v(`../../learning/course-details-page?id=${encodeURIComponent(e)}`), T = (e) => v(`../../learning/learning-path-detail-page?id=${encodeURIComponent(e)}`);
9
+ return /* @__PURE__ */ c("div", {
9
10
  className: "space-y-6 p-6",
10
11
  children: [
11
- /* @__PURE__ */ s("div", { children: [
12
- /* @__PURE__ */ o("h1", {
12
+ /* @__PURE__ */ c("div", { children: [
13
+ /* @__PURE__ */ s("h1", {
13
14
  className: "text-2xl font-semibold",
14
- children: /* @__PURE__ */ o(h, { children: "Learning & Development" })
15
+ children: /* @__PURE__ */ s(g, { children: "Learning & Development" })
15
16
  }),
16
- /* @__PURE__ */ o("p", {
17
+ /* @__PURE__ */ s("p", {
17
18
  className: "text-sm text-text-secondary",
18
19
  children: "Explore courses, learning paths, and grow your skills"
19
20
  }),
20
- /* @__PURE__ */ o(g, {
21
+ /* @__PURE__ */ s(_, {
21
22
  className: "mt-1",
22
23
  children: "Your learning home — discover courses, continue where you left off, and keep developing the skills your role needs."
23
24
  })
24
25
  ] }),
25
- /* @__PURE__ */ s("div", {
26
+ /* @__PURE__ */ c("div", {
26
27
  className: "grid gap-4 md:grid-cols-2 lg:grid-cols-4",
27
28
  children: [
28
- /* @__PURE__ */ s(m, {
29
+ /* @__PURE__ */ c(h, {
29
30
  treatment: "glass",
30
31
  glow: !0,
31
32
  className: "border-border-seam",
32
- children: [/* @__PURE__ */ s(f, {
33
+ children: [/* @__PURE__ */ c(p, {
33
34
  className: "flex flex-row items-center justify-between space-y-0 pb-2",
34
- children: [/* @__PURE__ */ o(p, {
35
+ children: [/* @__PURE__ */ s(m, {
35
36
  className: "text-sm font-medium",
36
37
  children: "Courses"
37
- }), /* @__PURE__ */ o(t, { className: "h-4 w-4 text-text-secondary" })]
38
- }), /* @__PURE__ */ s(u, { children: [/* @__PURE__ */ o("div", {
38
+ }), /* @__PURE__ */ s(t, { className: "h-4 w-4 text-text-secondary" })]
39
+ }), /* @__PURE__ */ c(d, { children: [/* @__PURE__ */ s("div", {
39
40
  className: "text-2xl font-bold tabular-nums",
40
- children: _.length
41
- }), /* @__PURE__ */ o("p", {
41
+ children: y.length
42
+ }), /* @__PURE__ */ s("p", {
42
43
  className: "text-xs text-text-secondary",
43
44
  children: "Active courses"
44
45
  })] })]
45
46
  }),
46
- /* @__PURE__ */ s(m, {
47
+ /* @__PURE__ */ c(h, {
47
48
  treatment: "metric",
48
49
  className: "border-border-seam",
49
- children: [/* @__PURE__ */ s(f, {
50
+ children: [/* @__PURE__ */ c(p, {
50
51
  className: "flex flex-row items-center justify-between space-y-0 pb-2",
51
- children: [/* @__PURE__ */ o(p, {
52
+ children: [/* @__PURE__ */ s(m, {
52
53
  className: "text-sm font-medium",
53
54
  children: "Enrolled"
54
- }), /* @__PURE__ */ o(a, { className: "h-4 w-4 text-text-secondary" })]
55
- }), /* @__PURE__ */ o(u, { children: /* @__PURE__ */ o("div", {
55
+ }), /* @__PURE__ */ s(a, { className: "h-4 w-4 text-text-secondary" })]
56
+ }), /* @__PURE__ */ s(d, { children: /* @__PURE__ */ s("div", {
56
57
  className: "text-2xl font-bold tabular-nums",
57
- children: y
58
+ children: x
58
59
  }) })]
59
60
  }),
60
- /* @__PURE__ */ s(m, {
61
+ /* @__PURE__ */ c(h, {
61
62
  treatment: "metric",
62
63
  className: "border-border-seam",
63
- children: [/* @__PURE__ */ s(f, {
64
+ children: [/* @__PURE__ */ c(p, {
64
65
  className: "flex flex-row items-center justify-between space-y-0 pb-2",
65
- children: [/* @__PURE__ */ o(p, {
66
+ children: [/* @__PURE__ */ s(m, {
66
67
  className: "text-sm font-medium",
67
68
  children: "Completed"
68
- }), /* @__PURE__ */ o(n, { className: "h-4 w-4 text-status-success-text" })]
69
- }), /* @__PURE__ */ o(u, { children: /* @__PURE__ */ o("div", {
69
+ }), /* @__PURE__ */ s(n, { className: "h-4 w-4 text-status-success-text" })]
70
+ }), /* @__PURE__ */ s(d, { children: /* @__PURE__ */ s("div", {
70
71
  className: "text-2xl font-bold tabular-nums",
71
- children: b
72
+ children: S
72
73
  }) })]
73
74
  }),
74
- /* @__PURE__ */ s(m, {
75
+ /* @__PURE__ */ c(h, {
75
76
  treatment: "metric",
76
77
  className: "border-border-seam",
77
- children: [/* @__PURE__ */ s(f, {
78
+ children: [/* @__PURE__ */ c(p, {
78
79
  className: "flex flex-row items-center justify-between space-y-0 pb-2",
79
- children: [/* @__PURE__ */ o(p, {
80
+ children: [/* @__PURE__ */ s(m, {
80
81
  className: "text-sm font-medium",
81
82
  children: "Paths"
82
- }), /* @__PURE__ */ o(i, { className: "h-4 w-4 text-text-secondary" })]
83
- }), /* @__PURE__ */ o(u, { children: /* @__PURE__ */ o("div", {
83
+ }), /* @__PURE__ */ s(i, { className: "h-4 w-4 text-text-secondary" })]
84
+ }), /* @__PURE__ */ s(d, { children: /* @__PURE__ */ s("div", {
84
85
  className: "text-2xl font-bold tabular-nums",
85
- children: v.length
86
+ children: b.length
86
87
  }) })]
87
88
  })
88
89
  ]
89
90
  }),
90
- /* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("h2", {
91
+ /* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("h2", {
91
92
  className: "text-lg font-medium mb-3",
92
93
  children: "Featured Courses"
93
- }), /* @__PURE__ */ o("div", {
94
+ }), /* @__PURE__ */ s("div", {
94
95
  className: "grid gap-4 md:grid-cols-2 lg:grid-cols-3",
95
- children: _.slice(0, 3).map((e) => /* @__PURE__ */ s(l, { children: [/* @__PURE__ */ s(f, { children: [/* @__PURE__ */ o(p, {
96
- className: "text-base",
97
- children: e.title
98
- }), /* @__PURE__ */ s(d, { children: [
99
- e.instructor,
100
- " · ",
101
- e.duration
102
- ] })] }), /* @__PURE__ */ s(u, { children: [
103
- /* @__PURE__ */ o("p", {
104
- className: "text-sm text-text-secondary mb-3",
105
- children: e.description
106
- }),
107
- /* @__PURE__ */ s("div", {
108
- className: "flex items-center justify-between",
109
- children: [/* @__PURE__ */ s("div", {
110
- className: "flex items-center gap-1",
111
- children: [/* @__PURE__ */ o(r, { className: "h-3 w-3 text-status-warning-text" }), /* @__PURE__ */ o("span", {
112
- className: "text-sm",
113
- children: e.rating
114
- })]
115
- }), /* @__PURE__ */ s("div", {
116
- className: "flex gap-1",
117
- children: [/* @__PURE__ */ o(c, {
118
- variant: "outline",
119
- className: "text-[10px]",
120
- children: e.level
121
- }), /* @__PURE__ */ o(c, {
122
- variant: "outline",
123
- className: "text-[10px]",
124
- children: e.category
96
+ children: C.map((e) => /* @__PURE__ */ c(u, {
97
+ role: "button",
98
+ tabIndex: 0,
99
+ "aria-label": `View ${e.title}`,
100
+ onClick: () => w(e.id),
101
+ onKeyDown: (t) => {
102
+ (t.key === "Enter" || t.key === " ") && (t.preventDefault(), w(e.id));
103
+ },
104
+ className: "cursor-pointer transition-shadow hover:shadow-md focus-visible:outline-none focus-visible:shadow-[var(--shadow-focus)]",
105
+ children: [/* @__PURE__ */ c(p, { children: [/* @__PURE__ */ s(m, {
106
+ className: "text-base",
107
+ children: e.title
108
+ }), /* @__PURE__ */ c(f, { children: [
109
+ e.instructor,
110
+ " · ",
111
+ e.duration
112
+ ] })] }), /* @__PURE__ */ c(d, { children: [
113
+ /* @__PURE__ */ s("p", {
114
+ className: "text-sm text-text-secondary mb-3",
115
+ children: e.description
116
+ }),
117
+ /* @__PURE__ */ c("div", {
118
+ className: "flex items-center justify-between",
119
+ children: [/* @__PURE__ */ c("div", {
120
+ className: "flex items-center gap-1",
121
+ children: [/* @__PURE__ */ s(r, { className: "h-3 w-3 text-status-warning-text" }), /* @__PURE__ */ s("span", {
122
+ className: "text-sm",
123
+ children: e.rating
124
+ })]
125
+ }), /* @__PURE__ */ c("div", {
126
+ className: "flex gap-1",
127
+ children: [/* @__PURE__ */ s(l, {
128
+ variant: "outline",
129
+ className: "text-[10px]",
130
+ children: e.level
131
+ }), /* @__PURE__ */ s(l, {
132
+ variant: "outline",
133
+ className: "text-[10px]",
134
+ children: e.category
135
+ })]
125
136
  })]
126
- })]
127
- }),
128
- /* @__PURE__ */ s("div", {
129
- className: "mt-2 text-xs text-text-secondary",
130
- children: [
131
- e.enrolled,
132
- " enrolled · ",
133
- e.completed,
134
- " completed"
135
- ]
136
- })
137
- ] })] }, e.id))
137
+ }),
138
+ /* @__PURE__ */ c("div", {
139
+ className: "mt-2 text-xs text-text-secondary",
140
+ children: [
141
+ e.enrolled,
142
+ " enrolled · ",
143
+ e.completed,
144
+ " completed"
145
+ ]
146
+ })
147
+ ] })]
148
+ }, e.id))
138
149
  })] }),
139
- /* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("h2", {
150
+ /* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("h2", {
140
151
  className: "text-lg font-medium mb-3",
141
152
  children: "Learning Paths"
142
- }), /* @__PURE__ */ o("div", {
153
+ }), /* @__PURE__ */ s("div", {
143
154
  className: "grid gap-4 md:grid-cols-3",
144
- children: v.map((e) => /* @__PURE__ */ s(l, { children: [/* @__PURE__ */ s(f, { children: [/* @__PURE__ */ o(p, {
145
- className: "text-base",
146
- children: e.title
147
- }), /* @__PURE__ */ o(d, { children: e.description })] }), /* @__PURE__ */ s(u, { children: [/* @__PURE__ */ s("div", {
148
- className: "flex items-center justify-between text-sm text-text-secondary",
149
- children: [/* @__PURE__ */ s("span", { children: [
150
- e.courses.length,
151
- " courses · ",
152
- e.duration
153
- ] }), /* @__PURE__ */ o(c, {
154
- variant: "outline",
155
- className: "text-[10px]",
156
- children: e.level
157
- })]
158
- }), /* @__PURE__ */ s("div", {
159
- className: "mt-2 space-y-1",
160
- children: [/* @__PURE__ */ s("div", {
161
- className: "flex justify-between text-xs",
162
- children: [/* @__PURE__ */ s("span", { children: [e.enrolled, " enrolled"] }), /* @__PURE__ */ s("span", { children: [e.completionRate, "%"] })]
163
- }), /* @__PURE__ */ o("div", {
164
- className: "h-2 bg-bg-sunken rounded overflow-hidden",
165
- children: /* @__PURE__ */ o("div", {
166
- className: "h-2 bg-action-primary-bg rounded",
167
- style: { width: `${e.completionRate}%` }
168
- })
169
- })]
170
- })] })] }, e.id))
155
+ children: b.map((e) => /* @__PURE__ */ c(u, {
156
+ role: "button",
157
+ tabIndex: 0,
158
+ "aria-label": `View ${e.title}`,
159
+ onClick: () => T(e.id),
160
+ onKeyDown: (t) => {
161
+ (t.key === "Enter" || t.key === " ") && (t.preventDefault(), T(e.id));
162
+ },
163
+ className: "cursor-pointer transition-shadow hover:shadow-md focus-visible:outline-none focus-visible:shadow-[var(--shadow-focus)]",
164
+ children: [/* @__PURE__ */ c(p, { children: [/* @__PURE__ */ s(m, {
165
+ className: "text-base",
166
+ children: e.title
167
+ }), /* @__PURE__ */ s(f, { children: e.description })] }), /* @__PURE__ */ c(d, { children: [/* @__PURE__ */ c("div", {
168
+ className: "flex items-center justify-between text-sm text-text-secondary",
169
+ children: [/* @__PURE__ */ c("span", { children: [
170
+ e.courses.length,
171
+ " courses · ",
172
+ e.duration
173
+ ] }), /* @__PURE__ */ s(l, {
174
+ variant: "outline",
175
+ className: "text-[10px]",
176
+ children: e.level
177
+ })]
178
+ }), /* @__PURE__ */ c("div", {
179
+ className: "mt-2 space-y-1",
180
+ children: [/* @__PURE__ */ c("div", {
181
+ className: "flex justify-between text-xs",
182
+ children: [/* @__PURE__ */ c("span", { children: [e.enrolled, " enrolled"] }), /* @__PURE__ */ c("span", { children: [e.completionRate, "%"] })]
183
+ }), /* @__PURE__ */ s("div", {
184
+ className: "h-2 bg-bg-sunken rounded overflow-hidden",
185
+ children: /* @__PURE__ */ s("div", {
186
+ className: "h-2 bg-action-primary-bg rounded",
187
+ style: { width: `${e.completionRate}%` }
188
+ })
189
+ })]
190
+ })] })]
191
+ }, e.id))
171
192
  })] })
172
193
  ]
173
194
  });
174
195
  }
175
196
  //#endregion
176
- export { _ as LearningLearningPagePage };
197
+ export { v as LearningLearningPagePage };
177
198
 
178
199
  //# sourceMappingURL=LearningLearningPagePage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LearningLearningPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/LearningLearningPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n GlassCard,\n GradientText,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { 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 <PagePurpose className=\"mt-1\">Your learning home — discover courses, continue where you left off, and keep developing the skills your role needs.</PagePurpose>\n </div>\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-4\">\n <GlassCard treatment=\"glass\" glow 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
+ {"version":3,"file":"LearningLearningPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/LearningLearningPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n GlassCard,\n GradientText,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { BookOpen, GraduationCap, Star, TrendingUp, Users } from 'lucide-react';\nimport { useNavigate } from 'react-router-dom';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function LearningLearningPagePage() {\n const navigate = useNavigate();\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 const featuredCourses = [...courses].sort((a, b) => b.rating - a.rating).slice(0, 3);\n const openCourse = (id: string) =>\n navigate(`../../learning/course-details-page?id=${encodeURIComponent(id)}`);\n const openPath = (id: string) =>\n navigate(`../../learning/learning-path-detail-page?id=${encodeURIComponent(id)}`);\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 <PagePurpose className=\"mt-1\">\n Your learning home — discover courses, continue where you left off, and keep developing\n the skills your role needs.\n </PagePurpose>\n </div>\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-4\">\n <GlassCard treatment=\"glass\" glow 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 {featuredCourses.map((course) => (\n <Card\n key={course.id}\n role=\"button\"\n tabIndex={0}\n aria-label={`View ${course.title}`}\n onClick={() => openCourse(course.id)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n openCourse(course.id);\n }\n }}\n className=\"cursor-pointer transition-shadow hover:shadow-md focus-visible:outline-none focus-visible:shadow-[var(--shadow-focus)]\"\n >\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\n key={path.id}\n role=\"button\"\n tabIndex={0}\n aria-label={`View ${path.title}`}\n onClick={() => openPath(path.id)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n openPath(path.id);\n }\n }}\n className=\"cursor-pointer transition-shadow hover:shadow-md focus-visible:outline-none focus-visible:shadow-[var(--shadow-focus)]\"\n >\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,113 +1,114 @@
1
1
  import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
2
2
  import { useState as t } from "react";
3
3
  import { BookOpen as n, CheckCircle as r, Clock as i, Star as a, Users as o } from "lucide-react";
4
- import { jsx as s, jsxs as c } from "react/jsx-runtime";
5
- import { Badge as l, Button as u, Card as d, CardContent as f, EmphasisPanel as p, GradientText as m, IllustratedEmptyState as h, PagePurpose as g } from "@burdenoff/fe-libs/ui";
6
- import { useGlobalUi as _ } from "@burdenoff/fe-libs/shared/providers/shell";
4
+ import { useSearchParams as s } from "react-router-dom";
5
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
6
+ import { Badge as u, Button as d, Card as f, CardContent as p, EmphasisPanel as m, GradientText as h, IllustratedEmptyState as g, PagePurpose as _ } from "@burdenoff/fe-libs/ui";
7
+ import { useGlobalUi as v } from "@burdenoff/fe-libs/shared/providers/shell";
7
8
  //#region src/crewfoundry/pages/LearningLearningPathDetailPagePage.tsx
8
- function v() {
9
- let { learningPaths: v, courses: y, enrollCourse: b } = e(), { showToast: x } = _(), [S, C] = t(!1), w = v[0];
10
- if (!w) return /* @__PURE__ */ s("div", {
9
+ function y() {
10
+ let [y] = s(), { learningPaths: b, courses: x, enrollCourse: S } = e(), { showToast: C } = v(), [w, T] = t(!1), E = y.get("id"), D = E ? b.find((e) => e.id === E) : b[0];
11
+ if (!D) return /* @__PURE__ */ c("div", {
11
12
  className: "p-6",
12
- children: /* @__PURE__ */ s(h, {
13
+ children: /* @__PURE__ */ c(g, {
13
14
  illustration: "empty-search",
14
15
  title: "No learning path found",
15
16
  description: "This learning path is no longer available."
16
17
  })
17
18
  });
18
- let T = y.filter((e) => w.courses.includes(e.id));
19
- return /* @__PURE__ */ c("div", {
19
+ let O = x.filter((e) => D.courses.includes(e.id));
20
+ return /* @__PURE__ */ l("div", {
20
21
  className: "space-y-6 p-6 max-w-4xl",
21
22
  children: [
22
- /* @__PURE__ */ c("div", {
23
+ /* @__PURE__ */ l("div", {
23
24
  className: "flex items-center justify-between",
24
- children: [/* @__PURE__ */ c("div", { children: [
25
- /* @__PURE__ */ s("h1", {
25
+ children: [/* @__PURE__ */ l("div", { children: [
26
+ /* @__PURE__ */ c("h1", {
26
27
  className: "text-2xl font-semibold",
27
- children: /* @__PURE__ */ s(m, { children: w.title })
28
+ children: /* @__PURE__ */ c(h, { children: D.title })
28
29
  }),
29
- /* @__PURE__ */ s("p", {
30
+ /* @__PURE__ */ c("p", {
30
31
  className: "text-sm text-text-secondary",
31
- children: w.description
32
+ children: D.description
32
33
  }),
33
- /* @__PURE__ */ s(g, {
34
+ /* @__PURE__ */ c(_, {
34
35
  className: "mt-1",
35
36
  children: "Follow a single learning path end-to-end — see its courses, your progress, and what to complete next to finish the journey."
36
37
  })
37
- ] }), /* @__PURE__ */ s(u, {
38
+ ] }), /* @__PURE__ */ c(d, {
38
39
  onClick: async () => {
39
- if (T.length === 0) {
40
- x("No courses in this path yet", "warning");
40
+ if (O.length === 0) {
41
+ C("No courses in this path yet", "warning");
41
42
  return;
42
43
  }
43
- C(!0);
44
+ T(!0);
44
45
  try {
45
- for (let e of T) await b(e.id);
46
- x(`Enrolled in ${T.length} course${T.length > 1 ? "s" : ""}`, "success");
46
+ for (let e of O) await S(e.id);
47
+ C(`Enrolled in ${O.length} course${O.length > 1 ? "s" : ""}`, "success");
47
48
  } catch (e) {
48
- x(e instanceof Error ? e.message : "Unable to enroll in path", "error");
49
+ C(e instanceof Error ? e.message : "Unable to enroll in path", "error");
49
50
  } finally {
50
- C(!1);
51
+ T(!1);
51
52
  }
52
53
  },
53
- disabled: S,
54
- children: S ? "Enrolling…" : "Enroll Now"
54
+ disabled: w,
55
+ children: w ? "Enrolling…" : "Enroll Now"
55
56
  })]
56
57
  }),
57
- /* @__PURE__ */ c("div", {
58
+ /* @__PURE__ */ l("div", {
58
59
  className: "grid gap-4 md:grid-cols-4",
59
60
  children: [
60
- /* @__PURE__ */ s(d, { children: /* @__PURE__ */ c(f, {
61
+ /* @__PURE__ */ c(f, { children: /* @__PURE__ */ l(p, {
61
62
  className: "p-4 text-center",
62
63
  children: [
63
- /* @__PURE__ */ s(n, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
64
- /* @__PURE__ */ s("p", {
64
+ /* @__PURE__ */ c(n, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
65
+ /* @__PURE__ */ c("p", {
65
66
  className: "text-lg font-bold",
66
- children: w.courses.length
67
+ children: D.courses.length
67
68
  }),
68
- /* @__PURE__ */ s("p", {
69
+ /* @__PURE__ */ c("p", {
69
70
  className: "text-xs text-text-secondary",
70
71
  children: "Courses"
71
72
  })
72
73
  ]
73
74
  }) }),
74
- /* @__PURE__ */ s(d, { children: /* @__PURE__ */ c(f, {
75
+ /* @__PURE__ */ c(f, { children: /* @__PURE__ */ l(p, {
75
76
  className: "p-4 text-center",
76
77
  children: [
77
- /* @__PURE__ */ s(i, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
78
- /* @__PURE__ */ s("p", {
78
+ /* @__PURE__ */ c(i, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
79
+ /* @__PURE__ */ c("p", {
79
80
  className: "text-lg font-bold",
80
- children: w.duration
81
+ children: D.duration
81
82
  }),
82
- /* @__PURE__ */ s("p", {
83
+ /* @__PURE__ */ c("p", {
83
84
  className: "text-xs text-text-secondary",
84
85
  children: "Duration"
85
86
  })
86
87
  ]
87
88
  }) }),
88
- /* @__PURE__ */ s(d, { children: /* @__PURE__ */ c(f, {
89
+ /* @__PURE__ */ c(f, { children: /* @__PURE__ */ l(p, {
89
90
  className: "p-4 text-center",
90
91
  children: [
91
- /* @__PURE__ */ s(o, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
92
- /* @__PURE__ */ s("p", {
92
+ /* @__PURE__ */ c(o, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
93
+ /* @__PURE__ */ c("p", {
93
94
  className: "text-lg font-bold",
94
- children: w.enrolled
95
+ children: D.enrolled
95
96
  }),
96
- /* @__PURE__ */ s("p", {
97
+ /* @__PURE__ */ c("p", {
97
98
  className: "text-xs text-text-secondary",
98
99
  children: "Enrolled"
99
100
  })
100
101
  ]
101
102
  }) }),
102
- /* @__PURE__ */ s(d, { children: /* @__PURE__ */ c(f, {
103
+ /* @__PURE__ */ c(f, { children: /* @__PURE__ */ l(p, {
103
104
  className: "p-4 text-center",
104
105
  children: [
105
- /* @__PURE__ */ s(r, { className: "h-5 w-5 mx-auto text-status-success-text mb-1" }),
106
- /* @__PURE__ */ c("p", {
106
+ /* @__PURE__ */ c(r, { className: "h-5 w-5 mx-auto text-status-success-text mb-1" }),
107
+ /* @__PURE__ */ l("p", {
107
108
  className: "text-lg font-bold",
108
- children: [w.completionRate, "%"]
109
+ children: [D.completionRate, "%"]
109
110
  }),
110
- /* @__PURE__ */ s("p", {
111
+ /* @__PURE__ */ c("p", {
111
112
  className: "text-xs text-text-secondary",
112
113
  children: "Completion"
113
114
  })
@@ -115,38 +116,38 @@ function v() {
115
116
  }) })
116
117
  ]
117
118
  }),
118
- /* @__PURE__ */ c(p, { children: [
119
- /* @__PURE__ */ s("div", {
119
+ /* @__PURE__ */ l(m, { children: [
120
+ /* @__PURE__ */ c("div", {
120
121
  className: "text-lg font-semibold",
121
122
  children: "Courses in this Path"
122
123
  }),
123
- /* @__PURE__ */ c("p", {
124
+ /* @__PURE__ */ l("p", {
124
125
  className: "mb-4 text-sm text-text-secondary",
125
126
  children: [
126
- T.length,
127
+ O.length,
127
128
  " courses · ",
128
- w.level
129
+ D.level
129
130
  ]
130
131
  }),
131
- /* @__PURE__ */ s("div", {
132
+ /* @__PURE__ */ c("div", {
132
133
  className: "space-y-3",
133
- children: T.length === 0 ? /* @__PURE__ */ s(h, {
134
+ children: O.length === 0 ? /* @__PURE__ */ c(g, {
134
135
  illustration: "empty-generic",
135
136
  title: "No courses in this path yet",
136
137
  description: "Courses added to this path will appear here in order."
137
- }) : T.map((e, t) => /* @__PURE__ */ c("div", {
138
+ }) : O.map((e, t) => /* @__PURE__ */ l("div", {
138
139
  className: "flex items-center gap-3 rounded border p-4",
139
140
  children: [
140
- /* @__PURE__ */ s("div", {
141
+ /* @__PURE__ */ c("div", {
141
142
  className: "flex-shrink-0 w-8 h-8 rounded-full bg-action-primary-bg/10 flex items-center justify-center text-sm font-bold",
142
143
  children: t + 1
143
144
  }),
144
- /* @__PURE__ */ c("div", {
145
+ /* @__PURE__ */ l("div", {
145
146
  className: "flex-1",
146
- children: [/* @__PURE__ */ s("p", {
147
+ children: [/* @__PURE__ */ c("p", {
147
148
  className: "text-sm font-medium",
148
149
  children: e.title
149
- }), /* @__PURE__ */ c("p", {
150
+ }), /* @__PURE__ */ l("p", {
150
151
  className: "text-xs text-text-secondary",
151
152
  children: [
152
153
  e.instructor,
@@ -158,15 +159,15 @@ function v() {
158
159
  ]
159
160
  })]
160
161
  }),
161
- /* @__PURE__ */ c("div", {
162
+ /* @__PURE__ */ l("div", {
162
163
  className: "flex items-center gap-2",
163
- children: [/* @__PURE__ */ c("div", {
164
+ children: [/* @__PURE__ */ l("div", {
164
165
  className: "flex items-center gap-1",
165
- children: [/* @__PURE__ */ s(a, { className: "h-3 w-3 text-status-warning-text" }), /* @__PURE__ */ s("span", {
166
+ children: [/* @__PURE__ */ c(a, { className: "h-3 w-3 text-status-warning-text" }), /* @__PURE__ */ c("span", {
166
167
  className: "text-sm",
167
168
  children: e.rating
168
169
  })]
169
- }), /* @__PURE__ */ s(l, {
170
+ }), /* @__PURE__ */ c(u, {
170
171
  variant: e.level === "beginner" ? "secondary" : e.level === "intermediate" ? "default" : "destructive",
171
172
  className: "text-[10px]",
172
173
  children: e.level
@@ -180,6 +181,6 @@ function v() {
180
181
  });
181
182
  }
182
183
  //#endregion
183
- export { v as LearningLearningPathDetailPagePage };
184
+ export { y as LearningLearningPathDetailPagePage };
184
185
 
185
186
  //# sourceMappingURL=LearningLearningPathDetailPagePage.js.map