@burdenoff/microfe-crewfoundry 2026.608.1 → 2026.625.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/dist/crewfoundry/pages/AdminAdminPagePage.js +94 -78
  2. package/dist/crewfoundry/pages/AdminAdminPagePage.js.map +1 -1
  3. package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js +112 -96
  4. package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
  5. package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js +101 -85
  6. package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js.map +1 -1
  7. package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js +131 -115
  8. package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js.map +1 -1
  9. package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js +116 -100
  10. package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js.map +1 -1
  11. package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js +15 -15
  12. package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js.map +1 -1
  13. package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js +63 -51
  14. package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js.map +1 -1
  15. package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js +16 -16
  16. package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js.map +1 -1
  17. package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js +26 -26
  18. package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js.map +1 -1
  19. package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js +28 -28
  20. package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js.map +1 -1
  21. package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js +10 -10
  22. package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js.map +1 -1
  23. package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js +71 -59
  24. package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js.map +1 -1
  25. package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js +59 -47
  26. package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js.map +1 -1
  27. package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js +77 -61
  28. package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js.map +1 -1
  29. package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js +40 -40
  30. package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js.map +1 -1
  31. package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js +13 -13
  32. package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js.map +1 -1
  33. package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js +102 -86
  34. package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js.map +1 -1
  35. package/dist/crewfoundry/pages/DashboardDashboardPagePage.js +173 -139
  36. package/dist/crewfoundry/pages/DashboardDashboardPagePage.js.map +1 -1
  37. package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js +59 -59
  38. package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js.map +1 -1
  39. package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js +113 -97
  40. package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js.map +1 -1
  41. package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js +45 -45
  42. package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js.map +1 -1
  43. package/dist/crewfoundry/pages/HiringApplicationsPagePage.js +85 -69
  44. package/dist/crewfoundry/pages/HiringApplicationsPagePage.js.map +1 -1
  45. package/dist/crewfoundry/pages/HiringCandidatesPagePage.js +23 -23
  46. package/dist/crewfoundry/pages/HiringCandidatesPagePage.js.map +1 -1
  47. package/dist/crewfoundry/pages/HiringCreateJobPagePage.js +40 -40
  48. package/dist/crewfoundry/pages/HiringCreateJobPagePage.js.map +1 -1
  49. package/dist/crewfoundry/pages/HiringInterviewsPagePage.js +59 -47
  50. package/dist/crewfoundry/pages/HiringInterviewsPagePage.js.map +1 -1
  51. package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js +52 -48
  52. package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js.map +1 -1
  53. package/dist/crewfoundry/pages/HiringJobsPagePage.js +31 -26
  54. package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
  55. package/dist/crewfoundry/pages/HrDepartmentsPagePage.js +61 -49
  56. package/dist/crewfoundry/pages/HrDepartmentsPagePage.js.map +1 -1
  57. package/dist/crewfoundry/pages/HrEmployeesPagePage.js +83 -67
  58. package/dist/crewfoundry/pages/HrEmployeesPagePage.js.map +1 -1
  59. package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js +90 -74
  60. package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js.map +1 -1
  61. package/dist/crewfoundry/pages/HrPayrollPagePage.js +90 -74
  62. package/dist/crewfoundry/pages/HrPayrollPagePage.js.map +1 -1
  63. package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js +83 -67
  64. package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js.map +1 -1
  65. package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js +54 -42
  66. package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js.map +1 -1
  67. package/dist/crewfoundry/pages/LearningCertificatesPagePage.js +16 -16
  68. package/dist/crewfoundry/pages/LearningCertificatesPagePage.js.map +1 -1
  69. package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js +39 -35
  70. package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js.map +1 -1
  71. package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js +24 -24
  72. package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js.map +1 -1
  73. package/dist/crewfoundry/pages/LearningCoursesPagePage.js +14 -14
  74. package/dist/crewfoundry/pages/LearningCoursesPagePage.js.map +1 -1
  75. package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js +81 -65
  76. package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js.map +1 -1
  77. package/dist/crewfoundry/pages/LearningLearningPagePage.js +73 -57
  78. package/dist/crewfoundry/pages/LearningLearningPagePage.js.map +1 -1
  79. package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js +28 -28
  80. package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js.map +1 -1
  81. package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js +12 -12
  82. package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js.map +1 -1
  83. package/dist/crewfoundry/pages/LearningMyLearningPagePage.js +75 -59
  84. package/dist/crewfoundry/pages/LearningMyLearningPagePage.js.map +1 -1
  85. package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js +57 -45
  86. package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js.map +1 -1
  87. package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js +71 -59
  88. package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js.map +1 -1
  89. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js +48 -48
  90. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js.map +1 -1
  91. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js +44 -43
  92. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js.map +1 -1
  93. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js +58 -46
  94. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js.map +1 -1
  95. package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js +16 -16
  96. package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js.map +1 -1
  97. package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js +23 -23
  98. package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js.map +1 -1
  99. package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js +9 -9
  100. package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js.map +1 -1
  101. package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js +43 -39
  102. package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js.map +1 -1
  103. package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js +31 -27
  104. package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js.map +1 -1
  105. package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js +59 -47
  106. package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js.map +1 -1
  107. package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js +13 -13
  108. package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js.map +1 -1
  109. package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js +66 -50
  110. package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js.map +1 -1
  111. package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js +18 -18
  112. package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js.map +1 -1
  113. package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js +74 -62
  114. package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js.map +1 -1
  115. package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js +21 -21
  116. package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js.map +1 -1
  117. package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js +47 -43
  118. package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js.map +1 -1
  119. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js +20 -20
  120. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js.map +1 -1
  121. package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js +58 -46
  122. package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js.map +1 -1
  123. package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js +38 -34
  124. package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js.map +1 -1
  125. package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js +14 -14
  126. package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js.map +1 -1
  127. package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js +67 -67
  128. package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js.map +1 -1
  129. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js +16 -16
  130. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js.map +1 -1
  131. package/package.json +2 -2
@@ -2,98 +2,110 @@ import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
2
2
  import { useMemo as t } from "react";
3
3
  import { ArrowUp as n, DollarSign as r, TrendingUp as i, Wallet as a } from "lucide-react";
4
4
  import { jsx as o, jsxs as s } from "react/jsx-runtime";
5
- import { Badge as c, Card as l, CardContent as u, CardHeader as d, CardTitle as f } from "@burdenoff/fe-libs/ui";
5
+ import { Badge as c, Card as l, CardContent as u, CardHeader as d, CardTitle as f, GlassCard as p, GradientText as m } from "@burdenoff/fe-libs/ui";
6
6
  //#region src/crewfoundry/pages/MarketplaceEarningsPagePage.tsx
7
- var p = (e) => {
7
+ var h = (e) => {
8
8
  let t = new Date(e);
9
9
  return Number.isNaN(t.getTime()) ? "N/A" : t.toLocaleString("en-US", { month: "short" });
10
- }, m = (e) => {
10
+ }, g = (e) => {
11
11
  let t = new Date(e);
12
12
  return Number.isNaN(t.getTime()) ? "Unknown" : t.toISOString().split("T")[0];
13
13
  };
14
- function h() {
15
- let { invoices: h, marketplaceServices: g, clients: _ } = e(), v = t(() => h.slice(0, 12).map((e, t) => ({
14
+ function _() {
15
+ let { invoices: _, marketplaceServices: v, clients: y } = e(), b = t(() => _.slice(0, 12).map((e, t) => ({
16
16
  id: e.id,
17
17
  client: e.clientName,
18
- service: g[t % Math.max(g.length, 1)]?.title || "Marketplace Service",
18
+ service: v[t % Math.max(v.length, 1)]?.title || "Marketplace Service",
19
19
  amount: e.amount,
20
- date: m(e.issueDate),
20
+ date: g(e.issueDate),
21
21
  status: e.status === "paid" ? "completed" : "pending"
22
- })), [h, g]), y = t(() => v.slice(0, 6).map((e, t) => {
23
- let n = v.filter((t) => p(t.date) === p(e.date)), r = n.reduce((e, t) => e + t.amount, 0);
22
+ })), [_, v]), x = t(() => b.slice(0, 6).map((e, t) => {
23
+ let n = b.filter((t) => h(t.date) === h(e.date)), r = n.reduce((e, t) => e + t.amount, 0);
24
24
  return {
25
- month: p(e.date) || `M${t + 1}`,
25
+ month: h(e.date) || `M${t + 1}`,
26
26
  amount: r,
27
27
  orders: n.length
28
28
  };
29
- }), [v]), b = y.reduce((e, t) => e + t.amount, 0), x = Math.max(1, ...y.map((e) => e.amount)), S = y.reduce((e, t) => e + t.orders, 0), C = v.filter((e) => e.status === "pending").reduce((e, t) => e + t.amount, 0), w = _.length > 0 ? Math.round(S / _.length * 100) : 0;
29
+ }), [b]), S = x.reduce((e, t) => e + t.amount, 0), C = Math.max(1, ...x.map((e) => e.amount)), w = x.reduce((e, t) => e + t.orders, 0), T = b.filter((e) => e.status === "pending").reduce((e, t) => e + t.amount, 0), E = y.length > 0 ? Math.round(w / y.length * 100) : 0;
30
30
  return /* @__PURE__ */ s("div", {
31
31
  className: "space-y-6 p-6",
32
32
  children: [
33
33
  /* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("h1", {
34
34
  className: "text-2xl font-semibold",
35
- children: "Earnings"
35
+ children: /* @__PURE__ */ o(m, { children: "Earnings" })
36
36
  }), /* @__PURE__ */ o("p", {
37
- className: "text-sm text-muted-foreground",
37
+ className: "text-sm text-text-secondary",
38
38
  children: "Revenue from marketplace services"
39
39
  })] }),
40
40
  /* @__PURE__ */ s("div", {
41
41
  className: "grid gap-4 md:grid-cols-3",
42
42
  children: [
43
- /* @__PURE__ */ s(l, { children: [/* @__PURE__ */ s(d, {
44
- className: "flex flex-row items-center justify-between space-y-0 pb-2",
45
- children: [/* @__PURE__ */ o(f, {
46
- className: "text-sm font-medium",
47
- children: "Total Earnings"
48
- }), /* @__PURE__ */ o(r, { className: "h-4 w-4 text-muted-foreground" })]
49
- }), /* @__PURE__ */ s(u, { children: [/* @__PURE__ */ s("div", {
50
- className: "text-2xl font-bold",
51
- children: ["$", b.toLocaleString()]
52
- }), /* @__PURE__ */ s("div", {
53
- className: "flex items-center text-xs text-green-600",
54
- children: [
55
- /* @__PURE__ */ o(n, { className: "mr-1 h-3 w-3" }),
56
- "+",
57
- w,
58
- "% from recent cycle"
59
- ]
60
- })] })] }),
61
- /* @__PURE__ */ s(l, { children: [/* @__PURE__ */ s(d, {
62
- className: "flex flex-row items-center justify-between space-y-0 pb-2",
63
- children: [/* @__PURE__ */ o(f, {
64
- className: "text-sm font-medium",
65
- children: "Avg Order Value"
66
- }), /* @__PURE__ */ o(i, { className: "h-4 w-4 text-muted-foreground" })]
67
- }), /* @__PURE__ */ o(u, { children: /* @__PURE__ */ s("div", {
68
- className: "text-2xl font-bold",
69
- children: ["$", Math.round(b / Math.max(S, 1)).toLocaleString()]
70
- }) })] }),
71
- /* @__PURE__ */ s(l, { children: [/* @__PURE__ */ s(d, {
72
- className: "flex flex-row items-center justify-between space-y-0 pb-2",
73
- children: [/* @__PURE__ */ o(f, {
74
- className: "text-sm font-medium",
75
- children: "Pending"
76
- }), /* @__PURE__ */ o(a, { className: "h-4 w-4 text-yellow-500" })]
77
- }), /* @__PURE__ */ o(u, { children: /* @__PURE__ */ s("div", {
78
- className: "text-2xl font-bold",
79
- children: ["$", C.toLocaleString()]
80
- }) })] })
43
+ /* @__PURE__ */ s(p, {
44
+ treatment: "metric",
45
+ className: "border-border-seam",
46
+ children: [/* @__PURE__ */ s(d, {
47
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
48
+ children: [/* @__PURE__ */ o(f, {
49
+ className: "text-sm font-medium",
50
+ children: "Total Earnings"
51
+ }), /* @__PURE__ */ o(r, { className: "h-4 w-4 text-text-secondary" })]
52
+ }), /* @__PURE__ */ s(u, { children: [/* @__PURE__ */ s("div", {
53
+ className: "text-2xl font-bold tabular-nums",
54
+ children: ["$", S.toLocaleString()]
55
+ }), /* @__PURE__ */ s("div", {
56
+ className: "flex items-center text-xs text-status-success-text",
57
+ children: [
58
+ /* @__PURE__ */ o(n, { className: "mr-1 h-3 w-3" }),
59
+ "+",
60
+ E,
61
+ "% from recent cycle"
62
+ ]
63
+ })] })]
64
+ }),
65
+ /* @__PURE__ */ s(p, {
66
+ treatment: "metric",
67
+ className: "border-border-seam",
68
+ children: [/* @__PURE__ */ s(d, {
69
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
70
+ children: [/* @__PURE__ */ o(f, {
71
+ className: "text-sm font-medium",
72
+ children: "Avg Order Value"
73
+ }), /* @__PURE__ */ o(i, { className: "h-4 w-4 text-text-secondary" })]
74
+ }), /* @__PURE__ */ o(u, { children: /* @__PURE__ */ s("div", {
75
+ className: "text-2xl font-bold tabular-nums",
76
+ children: ["$", Math.round(S / Math.max(w, 1)).toLocaleString()]
77
+ }) })]
78
+ }),
79
+ /* @__PURE__ */ s(p, {
80
+ treatment: "metric",
81
+ className: "border-border-seam",
82
+ children: [/* @__PURE__ */ s(d, {
83
+ className: "flex flex-row items-center justify-between space-y-0 pb-2",
84
+ children: [/* @__PURE__ */ o(f, {
85
+ className: "text-sm font-medium",
86
+ children: "Pending"
87
+ }), /* @__PURE__ */ o(a, { className: "h-4 w-4 text-status-warning-text" })]
88
+ }), /* @__PURE__ */ o(u, { children: /* @__PURE__ */ s("div", {
89
+ className: "text-2xl font-bold tabular-nums",
90
+ children: ["$", T.toLocaleString()]
91
+ }) })]
92
+ })
81
93
  ]
82
94
  }),
83
95
  /* @__PURE__ */ s(l, { children: [/* @__PURE__ */ o(d, { children: /* @__PURE__ */ o(f, { children: "Earnings Trend" }) }), /* @__PURE__ */ o(u, {
84
96
  className: "space-y-3",
85
- children: y.map((e, t) => /* @__PURE__ */ s("div", {
97
+ children: x.map((e, t) => /* @__PURE__ */ s("div", {
86
98
  className: "flex items-center gap-3",
87
99
  children: [
88
100
  /* @__PURE__ */ o("span", {
89
- className: "w-10 text-sm text-muted-foreground",
101
+ className: "w-10 text-sm text-text-secondary",
90
102
  children: e.month
91
103
  }),
92
104
  /* @__PURE__ */ o("div", {
93
- className: "h-4 flex-1 overflow-hidden rounded bg-muted",
105
+ className: "h-4 flex-1 overflow-hidden rounded bg-bg-sunken",
94
106
  children: /* @__PURE__ */ o("div", {
95
- className: "h-4 rounded bg-primary",
96
- style: { width: `${Math.round(e.amount / x * 100)}%` }
107
+ className: "h-4 rounded bg-action-primary-bg",
108
+ style: { width: `${Math.round(e.amount / C * 100)}%` }
97
109
  })
98
110
  }),
99
111
  /* @__PURE__ */ s("span", {
@@ -114,13 +126,13 @@ function h() {
114
126
  })] }),
115
127
  /* @__PURE__ */ s(l, { children: [/* @__PURE__ */ o(d, { children: /* @__PURE__ */ o(f, { children: "Recent Payments" }) }), /* @__PURE__ */ o(u, {
116
128
  className: "space-y-3",
117
- children: v.map((e) => /* @__PURE__ */ s("div", {
129
+ children: b.map((e) => /* @__PURE__ */ s("div", {
118
130
  className: "flex items-center justify-between rounded border p-3",
119
131
  children: [/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("p", {
120
132
  className: "text-sm font-medium",
121
133
  children: e.client
122
134
  }), /* @__PURE__ */ s("p", {
123
- className: "text-xs text-muted-foreground",
135
+ className: "text-xs text-text-secondary",
124
136
  children: [
125
137
  e.service,
126
138
  " · ",
@@ -143,6 +155,6 @@ function h() {
143
155
  });
144
156
  }
145
157
  //#endregion
146
- export { h as MarketplaceEarningsPagePage };
158
+ export { _ as MarketplaceEarningsPagePage };
147
159
 
148
160
  //# sourceMappingURL=MarketplaceEarningsPagePage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MarketplaceEarningsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceEarningsPagePage.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport { Badge, Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { ArrowUp, DollarSign, TrendingUp, Wallet } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\ntype EarningPoint = {\n month: string;\n amount: number;\n orders: number;\n};\n\ntype PaymentItem = {\n id: string;\n client: string;\n service: string;\n amount: number;\n date: string;\n status: 'completed' | 'pending';\n};\n\nconst monthLabel = (value: string): string => {\n const parsed = new Date(value);\n if (Number.isNaN(parsed.getTime())) {\n return 'N/A';\n }\n return parsed.toLocaleString('en-US', { month: 'short' });\n};\n\nconst isoDate = (value: string): string => {\n const parsed = new Date(value);\n if (Number.isNaN(parsed.getTime())) {\n return 'Unknown';\n }\n return parsed.toISOString().split('T')[0];\n};\n\nexport function MarketplaceEarningsPagePage() {\n const { invoices, marketplaceServices, clients } = useCrewFoundryStore();\n\n const recentPayments = useMemo<PaymentItem[]>(() => {\n return invoices.slice(0, 12).map((invoice, index) => ({\n id: invoice.id,\n client: invoice.clientName,\n service:\n marketplaceServices[index % Math.max(marketplaceServices.length, 1)]?.title ||\n 'Marketplace Service',\n amount: invoice.amount,\n date: isoDate(invoice.issueDate),\n status: invoice.status === 'paid' ? 'completed' : 'pending',\n }));\n }, [invoices, marketplaceServices]);\n\n const earningsData = useMemo<EarningPoint[]>(() => {\n return recentPayments.slice(0, 6).map((payment, index) => {\n const sibling = recentPayments.filter(\n (item) => monthLabel(item.date) === monthLabel(payment.date)\n );\n const amount = sibling.reduce((sum, item) => sum + item.amount, 0);\n return {\n month: monthLabel(payment.date) || `M${index + 1}`,\n amount,\n orders: sibling.length,\n };\n });\n }, [recentPayments]);\n\n const totalEarnings = earningsData.reduce((sum, point) => sum + point.amount, 0);\n const maxEarning = Math.max(1, ...earningsData.map((point) => point.amount));\n const totalOrders = earningsData.reduce((sum, point) => sum + point.orders, 0);\n const pendingAmount = recentPayments\n .filter((payment) => payment.status === 'pending')\n .reduce((sum, payment) => sum + payment.amount, 0);\n const growthBase = clients.length > 0 ? Math.round((totalOrders / clients.length) * 100) : 0;\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Earnings</h1>\n <p className=\"text-sm text-muted-foreground\">Revenue from marketplace services</p>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-3\">\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Total Earnings</CardTitle>\n <DollarSign className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">${totalEarnings.toLocaleString()}</div>\n <div className=\"flex items-center text-xs text-green-600\">\n <ArrowUp className=\"mr-1 h-3 w-3\" />+{growthBase}% from recent cycle\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Avg Order Value</CardTitle>\n <TrendingUp className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">\n ${Math.round(totalEarnings / Math.max(totalOrders, 1)).toLocaleString()}\n </div>\n </CardContent>\n </Card>\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">Pending</CardTitle>\n <Wallet className=\"h-4 w-4 text-yellow-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">${pendingAmount.toLocaleString()}</div>\n </CardContent>\n </Card>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle>Earnings Trend</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {earningsData.map((earning, index) => (\n <div key={`${earning.month}-${index}`} className=\"flex items-center gap-3\">\n <span className=\"w-10 text-sm text-muted-foreground\">{earning.month}</span>\n <div className=\"h-4 flex-1 overflow-hidden rounded bg-muted\">\n <div\n className=\"h-4 rounded bg-primary\"\n style={{ width: `${Math.round((earning.amount / maxEarning) * 100)}%` }}\n />\n </div>\n <span className=\"w-16 text-right text-sm font-medium\">\n ${(earning.amount / 1000).toFixed(1)}K\n </span>\n <Badge variant=\"outline\" className=\"text-[10px]\">\n {earning.orders} orders\n </Badge>\n </div>\n ))}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Recent Payments</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {recentPayments.map((payment) => (\n <div key={payment.id} className=\"flex items-center justify-between rounded border p-3\">\n <div>\n <p className=\"text-sm font-medium\">{payment.client}</p>\n <p className=\"text-xs text-muted-foreground\">\n {payment.service} · {payment.date}\n </p>\n </div>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-bold\">${payment.amount.toLocaleString()}</span>\n <Badge\n variant={payment.status === 'completed' ? 'default' : 'secondary'}\n className=\"text-[10px]\"\n >\n {payment.status}\n </Badge>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":";;;;;;AAoBA,IAAM,KAAc,MAA0B;CAC5C,IAAM,IAAS,IAAI,KAAK,EAAM;AAI9B,QAHI,OAAO,MAAM,EAAO,SAAS,CAAC,GACzB,QAEF,EAAO,eAAe,SAAS,EAAE,OAAO,SAAS,CAAC;GAGrD,KAAW,MAA0B;CACzC,IAAM,IAAS,IAAI,KAAK,EAAM;AAI9B,QAHI,OAAO,MAAM,EAAO,SAAS,CAAC,GACzB,YAEF,EAAO,aAAa,CAAC,MAAM,IAAI,CAAC;;AAGzC,SAAgB,IAA8B;CAC5C,IAAM,EAAE,aAAU,wBAAqB,eAAY,GAAqB,EAElE,IAAiB,QACd,EAAS,MAAM,GAAG,GAAG,CAAC,KAAK,GAAS,OAAW;EACpD,IAAI,EAAQ;EACZ,QAAQ,EAAQ;EAChB,SACE,EAAoB,IAAQ,KAAK,IAAI,EAAoB,QAAQ,EAAE,GAAG,SACtE;EACF,QAAQ,EAAQ;EAChB,MAAM,EAAQ,EAAQ,UAAU;EAChC,QAAQ,EAAQ,WAAW,SAAS,cAAc;EACnD,EAAE,EACF,CAAC,GAAU,EAAoB,CAAC,EAE7B,IAAe,QACZ,EAAe,MAAM,GAAG,EAAE,CAAC,KAAK,GAAS,MAAU;EACxD,IAAM,IAAU,EAAe,QAC5B,MAAS,EAAW,EAAK,KAAK,KAAK,EAAW,EAAQ,KAAK,CAC7D,EACK,IAAS,EAAQ,QAAQ,GAAK,MAAS,IAAM,EAAK,QAAQ,EAAE;AAClE,SAAO;GACL,OAAO,EAAW,EAAQ,KAAK,IAAI,IAAI,IAAQ;GAC/C;GACA,QAAQ,EAAQ;GACjB;GACD,EACD,CAAC,EAAe,CAAC,EAEd,IAAgB,EAAa,QAAQ,GAAK,MAAU,IAAM,EAAM,QAAQ,EAAE,EAC1E,IAAa,KAAK,IAAI,GAAG,GAAG,EAAa,KAAK,MAAU,EAAM,OAAO,CAAC,EACtE,IAAc,EAAa,QAAQ,GAAK,MAAU,IAAM,EAAM,QAAQ,EAAE,EACxE,IAAgB,EACnB,QAAQ,MAAY,EAAQ,WAAW,UAAU,CACjD,QAAQ,GAAK,MAAY,IAAM,EAAQ,QAAQ,EAAE,EAC9C,IAAa,EAAQ,SAAS,IAAI,KAAK,MAAO,IAAc,EAAQ,SAAU,IAAI,GAAG;AAE3F,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;IAAI,WAAU;cAAyB;IAAa,CAAA,EACpD,kBAAC,KAAD;IAAG,WAAU;cAAgC;IAAqC,CAAA,CAC9E,EAAA,CAAA;GAEN,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;MAAY,WAAU;gBAAtB,CACE,kBAAC,GAAD;OAAW,WAAU;iBAAsB;OAA0B,CAAA,EACrE,kBAAC,GAAD,EAAY,WAAU,iCAAkC,CAAA,CAC7C;SACb,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CAAoC,KAAE,EAAc,gBAAgB,CAAO;SAC3E,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,GAAD,EAAS,WAAU,gBAAiB,CAAA;;OAAE;OAAW;OAC7C;QACM,EAAA,CAAA,CACT,EAAA,CAAA;KACP,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;MAAY,WAAU;gBAAtB,CACE,kBAAC,GAAD;OAAW,WAAU;iBAAsB;OAA2B,CAAA,EACtE,kBAAC,GAAD,EAAY,WAAU,iCAAkC,CAAA,CAC7C;SACb,kBAAC,GAAD,EAAA,UACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CAAoC,KAChC,KAAK,MAAM,IAAgB,KAAK,IAAI,GAAa,EAAE,CAAC,CAAC,gBAAgB,CACnE;SACM,CAAA,CACT,EAAA,CAAA;KACP,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;MAAY,WAAU;gBAAtB,CACE,kBAAC,GAAD;OAAW,WAAU;iBAAsB;OAAmB,CAAA,EAC9D,kBAAC,GAAD,EAAQ,WAAU,2BAA4B,CAAA,CACnC;SACb,kBAAC,GAAD,EAAA,UACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CAAoC,KAAE,EAAc,gBAAgB,CAAO;SAC/D,CAAA,CACT,EAAA,CAAA;KACH;;GAEN,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAA,UAAW,kBAA0B,CAAA,EAC1B,CAAA,EACb,kBAAC,GAAD;IAAa,WAAU;cACpB,EAAa,KAAK,GAAS,MAC1B,kBAAC,OAAD;KAAuC,WAAU;eAAjD;MACE,kBAAC,QAAD;OAAM,WAAU;iBAAsC,EAAQ;OAAa,CAAA;MAC3E,kBAAC,OAAD;OAAK,WAAU;iBACb,kBAAC,OAAD;QACE,WAAU;QACV,OAAO,EAAE,OAAO,GAAG,KAAK,MAAO,EAAQ,SAAS,IAAc,IAAI,CAAC,IAAI;QACvE,CAAA;OACE,CAAA;MACN,kBAAC,QAAD;OAAM,WAAU;iBAAhB;QAAsD;SACjD,EAAQ,SAAS,KAAM,QAAQ,EAAE;QAAC;QAChC;;MACP,kBAAC,GAAD;OAAO,SAAQ;OAAU,WAAU;iBAAnC,CACG,EAAQ,QAAO,UACV;;MACJ;OAdI,GAAG,EAAQ,MAAM,GAAG,IAcxB,CACN;IACU,CAAA,CACT,EAAA,CAAA;GAEP,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAA,UAAW,mBAA2B,CAAA,EAC3B,CAAA,EACb,kBAAC,GAAD;IAAa,WAAU;cACpB,EAAe,KAAK,MACnB,kBAAC,OAAD;KAAsB,WAAU;eAAhC,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;MAAG,WAAU;gBAAuB,EAAQ;MAAW,CAAA,EACvD,kBAAC,KAAD;MAAG,WAAU;gBAAb;OACG,EAAQ;OAAQ;OAAI,EAAQ;OAC3B;QACA,EAAA,CAAA,EACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,QAAD;OAAM,WAAU;iBAAhB,CAAoC,KAAE,EAAQ,OAAO,gBAAgB,CAAQ;UAC7E,kBAAC,GAAD;OACE,SAAS,EAAQ,WAAW,cAAc,YAAY;OACtD,WAAU;iBAET,EAAQ;OACH,CAAA,CACJ;QACF;OAhBI,EAAQ,GAgBZ,CACN;IACU,CAAA,CACT,EAAA,CAAA;GACH"}
1
+ {"version":3,"file":"MarketplaceEarningsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceEarningsPagePage.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport {\n Badge,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n GlassCard,\n GradientText,\n} from '@burdenoff/fe-libs/ui';\nimport { ArrowUp, DollarSign, TrendingUp, Wallet } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\ntype EarningPoint = {\n month: string;\n amount: number;\n orders: number;\n};\n\ntype PaymentItem = {\n id: string;\n client: string;\n service: string;\n amount: number;\n date: string;\n status: 'completed' | 'pending';\n};\n\nconst monthLabel = (value: string): string => {\n const parsed = new Date(value);\n if (Number.isNaN(parsed.getTime())) {\n return 'N/A';\n }\n return parsed.toLocaleString('en-US', { month: 'short' });\n};\n\nconst isoDate = (value: string): string => {\n const parsed = new Date(value);\n if (Number.isNaN(parsed.getTime())) {\n return 'Unknown';\n }\n return parsed.toISOString().split('T')[0];\n};\n\nexport function MarketplaceEarningsPagePage() {\n const { invoices, marketplaceServices, clients } = useCrewFoundryStore();\n\n const recentPayments = useMemo<PaymentItem[]>(() => {\n return invoices.slice(0, 12).map((invoice, index) => ({\n id: invoice.id,\n client: invoice.clientName,\n service:\n marketplaceServices[index % Math.max(marketplaceServices.length, 1)]?.title ||\n 'Marketplace Service',\n amount: invoice.amount,\n date: isoDate(invoice.issueDate),\n status: invoice.status === 'paid' ? 'completed' : 'pending',\n }));\n }, [invoices, marketplaceServices]);\n\n const earningsData = useMemo<EarningPoint[]>(() => {\n return recentPayments.slice(0, 6).map((payment, index) => {\n const sibling = recentPayments.filter(\n (item) => monthLabel(item.date) === monthLabel(payment.date)\n );\n const amount = sibling.reduce((sum, item) => sum + item.amount, 0);\n return {\n month: monthLabel(payment.date) || `M${index + 1}`,\n amount,\n orders: sibling.length,\n };\n });\n }, [recentPayments]);\n\n const totalEarnings = earningsData.reduce((sum, point) => sum + point.amount, 0);\n const maxEarning = Math.max(1, ...earningsData.map((point) => point.amount));\n const totalOrders = earningsData.reduce((sum, point) => sum + point.orders, 0);\n const pendingAmount = recentPayments\n .filter((payment) => payment.status === 'pending')\n .reduce((sum, payment) => sum + payment.amount, 0);\n const growthBase = clients.length > 0 ? Math.round((totalOrders / clients.length) * 100) : 0;\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>Earnings</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">Revenue from marketplace services</p>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-3\">\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\">Total Earnings</CardTitle>\n <DollarSign className=\"h-4 w-4 text-text-secondary\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">${totalEarnings.toLocaleString()}</div>\n <div className=\"flex items-center text-xs text-status-success-text\">\n <ArrowUp className=\"mr-1 h-3 w-3\" />+{growthBase}% from recent cycle\n </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\">Avg Order Value</CardTitle>\n <TrendingUp className=\"h-4 w-4 text-text-secondary\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">\n ${Math.round(totalEarnings / Math.max(totalOrders, 1)).toLocaleString()}\n </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\">Pending</CardTitle>\n <Wallet className=\"h-4 w-4 text-status-warning-text\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">${pendingAmount.toLocaleString()}</div>\n </CardContent>\n </GlassCard>\n </div>\n\n <Card>\n <CardHeader>\n <CardTitle>Earnings Trend</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {earningsData.map((earning, index) => (\n <div key={`${earning.month}-${index}`} className=\"flex items-center gap-3\">\n <span className=\"w-10 text-sm text-text-secondary\">{earning.month}</span>\n <div className=\"h-4 flex-1 overflow-hidden rounded bg-bg-sunken\">\n <div\n className=\"h-4 rounded bg-action-primary-bg\"\n style={{ width: `${Math.round((earning.amount / maxEarning) * 100)}%` }}\n />\n </div>\n <span className=\"w-16 text-right text-sm font-medium\">\n ${(earning.amount / 1000).toFixed(1)}K\n </span>\n <Badge variant=\"outline\" className=\"text-[10px]\">\n {earning.orders} orders\n </Badge>\n </div>\n ))}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Recent Payments</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {recentPayments.map((payment) => (\n <div key={payment.id} className=\"flex items-center justify-between rounded border p-3\">\n <div>\n <p className=\"text-sm font-medium\">{payment.client}</p>\n <p className=\"text-xs text-text-secondary\">\n {payment.service} · {payment.date}\n </p>\n </div>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-bold\">${payment.amount.toLocaleString()}</span>\n <Badge\n variant={payment.status === 'completed' ? 'default' : 'secondary'}\n className=\"text-[10px]\"\n >\n {payment.status}\n </Badge>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -2,10 +2,10 @@ import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
2
2
  import { useMemo as t, useState as n } from "react";
3
3
  import { BarChart3 as r, Briefcase as i, Calendar as a, CheckCircle as o, Clock as s, DollarSign as c, Globe as l, MapPin as u, MessageSquare as d, Star as f, TrendingUp as p, Users as m, Video as h } from "lucide-react";
4
4
  import { jsx as g, jsxs as _ } from "react/jsx-runtime";
5
- import { Badge as v, Button as y, Card as b, CardContent as x, CardDescription as S, CardHeader as C, CardTitle as w, Separator as T, Tabs as E, TabsContent as D, TabsList as O, TabsTrigger as k } from "@burdenoff/fe-libs/ui";
5
+ import { Badge as v, Button as y, Card as b, CardContent as x, CardDescription as S, CardHeader as C, CardTitle as w, GradientText as T, Separator as E, Tabs as D, TabsContent as O, TabsList as k, TabsTrigger as A } from "@burdenoff/fe-libs/ui";
6
6
  //#region src/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.tsx
7
- function A() {
8
- let [A, j] = n("overview"), { marketplaceServices: M, clients: N, candidates: P } = e(), F = t(() => [
7
+ function j() {
8
+ let [j, M] = n("overview"), { marketplaceServices: N, clients: P, candidates: F } = e(), I = t(() => [
9
9
  {
10
10
  day: "Monday",
11
11
  slots: [
@@ -38,34 +38,34 @@ function A() {
38
38
  day: "Friday",
39
39
  slots: ["9:00 AM", "10:00 AM"]
40
40
  }
41
- ], []), I = t(() => M.slice(0, 6).map((e) => ({
41
+ ], []), L = t(() => N.slice(0, 6).map((e) => ({
42
42
  title: e.title,
43
43
  price: e.priceType === "hourly" ? `$${e.price}/hr` : e.priceType === "monthly" ? `$${e.price}/mo` : `$${e.price}`,
44
44
  type: e.priceType,
45
45
  description: e.description,
46
46
  delivery: e.deliveryTime
47
- })), [M]), L = t(() => [
47
+ })), [N]), R = t(() => [
48
48
  {
49
49
  label: "Avg. Placement Time",
50
- value: `${Math.max(15, 45 - P.filter((e) => e.status === "hired").length)} days`,
50
+ value: `${Math.max(15, 45 - F.filter((e) => e.status === "hired").length)} days`,
51
51
  trend: "-3 days vs avg"
52
52
  },
53
53
  {
54
54
  label: "Offer Acceptance Rate",
55
- value: `${Math.round(P.filter((e) => e.status === "hired").length / Math.max(P.filter((e) => e.status === "offer").length, 1) * 100)}%`,
55
+ value: `${Math.round(F.filter((e) => e.status === "hired").length / Math.max(F.filter((e) => e.status === "offer").length, 1) * 100)}%`,
56
56
  trend: "+8% vs avg"
57
57
  },
58
58
  {
59
59
  label: "Client Retention",
60
- value: `${Math.min(99, Math.max(70, Math.round(N.filter((e) => e.status === "active").length / Math.max(N.length, 1) * 100)))}%`,
60
+ value: `${Math.min(99, Math.max(70, Math.round(P.filter((e) => e.status === "active").length / Math.max(P.length, 1) * 100)))}%`,
61
61
  trend: "repeat clients"
62
62
  },
63
63
  {
64
64
  label: "Candidates Placed (YTD)",
65
- value: `${P.filter((e) => e.status === "hired").length}`,
65
+ value: `${F.filter((e) => e.status === "hired").length}`,
66
66
  trend: "+12% YoY"
67
67
  }
68
- ], [P, N]);
68
+ ], [F, P]);
69
69
  return /* @__PURE__ */ _("div", {
70
70
  className: "space-y-6 p-6",
71
71
  children: [
@@ -74,7 +74,7 @@ function A() {
74
74
  children: /* @__PURE__ */ _("div", {
75
75
  className: "flex items-start gap-6",
76
76
  children: [/* @__PURE__ */ g("div", {
77
- className: "flex h-24 w-24 shrink-0 items-center justify-center rounded-2xl bg-gradient-to-br from-primary to-primary/60 text-primary-foreground text-3xl font-semibold",
77
+ className: "flex h-24 w-24 shrink-0 items-center justify-center rounded-2xl bg-gradient-to-br from-primary to-primary/60 text-action-primary-text text-3xl font-semibold",
78
78
  children: "MS"
79
79
  }), /* @__PURE__ */ _("div", {
80
80
  className: "flex-1 space-y-2",
@@ -84,7 +84,7 @@ function A() {
84
84
  children: [
85
85
  /* @__PURE__ */ g("h1", {
86
86
  className: "text-2xl font-semibold",
87
- children: "Maria Santos"
87
+ children: /* @__PURE__ */ g(T, { children: "Maria Santos" })
88
88
  }),
89
89
  /* @__PURE__ */ g(v, { children: "Top Rated Plus" }),
90
90
  /* @__PURE__ */ g(v, {
@@ -93,7 +93,7 @@ function A() {
93
93
  }),
94
94
  /* @__PURE__ */ g(v, {
95
95
  variant: "outline",
96
- className: "text-green-600 border-green-300",
96
+ className: "text-status-success-text border-status-success-text/30",
97
97
  children: "Available Now"
98
98
  })
99
99
  ]
@@ -103,11 +103,11 @@ function A() {
103
103
  children: "Senior HR Consultant & Technical Recruiter"
104
104
  }),
105
105
  /* @__PURE__ */ g("p", {
106
- className: "text-xs text-muted-foreground",
106
+ className: "text-xs text-text-secondary",
107
107
  children: "TalentPro Solutions"
108
108
  }),
109
109
  /* @__PURE__ */ _("div", {
110
- className: "flex flex-wrap items-center gap-4 text-xs text-muted-foreground",
110
+ className: "flex flex-wrap items-center gap-4 text-xs text-text-secondary",
111
111
  children: [
112
112
  /* @__PURE__ */ _("span", {
113
113
  className: "flex items-center gap-1",
@@ -119,7 +119,7 @@ function A() {
119
119
  }),
120
120
  /* @__PURE__ */ _("span", {
121
121
  className: "flex items-center gap-1",
122
- children: [/* @__PURE__ */ g(f, { className: "h-3 w-3 text-yellow-500 fill-yellow-500" }), " 4.9 (47 reviews)"]
122
+ children: [/* @__PURE__ */ g(f, { className: "h-3 w-3 text-status-warning-text fill-yellow-500" }), " 4.9 (47 reviews)"]
123
123
  }),
124
124
  /* @__PURE__ */ _("span", {
125
125
  className: "flex items-center gap-1",
@@ -156,11 +156,11 @@ function A() {
156
156
  }) }),
157
157
  /* @__PURE__ */ g("div", {
158
158
  className: "grid gap-4 md:grid-cols-4",
159
- children: L.map((e) => /* @__PURE__ */ g(b, { children: /* @__PURE__ */ _(x, {
159
+ children: R.map((e) => /* @__PURE__ */ g(b, { children: /* @__PURE__ */ _(x, {
160
160
  className: "pt-6",
161
161
  children: [
162
162
  /* @__PURE__ */ g("p", {
163
- className: "text-xs text-muted-foreground",
163
+ className: "text-xs text-text-secondary",
164
164
  children: e.label
165
165
  }),
166
166
  /* @__PURE__ */ g("p", {
@@ -168,35 +168,35 @@ function A() {
168
168
  children: e.value
169
169
  }),
170
170
  /* @__PURE__ */ g("p", {
171
- className: "text-[10px] text-green-600",
171
+ className: "text-[10px] text-status-success-text",
172
172
  children: e.trend
173
173
  })
174
174
  ]
175
175
  }) }, e.label))
176
176
  }),
177
- /* @__PURE__ */ _(E, {
178
- value: A,
179
- onValueChange: j,
177
+ /* @__PURE__ */ _(D, {
178
+ value: j,
179
+ onValueChange: M,
180
180
  children: [
181
- /* @__PURE__ */ _(O, { children: [
182
- /* @__PURE__ */ g(k, {
181
+ /* @__PURE__ */ _(k, { children: [
182
+ /* @__PURE__ */ g(A, {
183
183
  value: "overview",
184
184
  children: "Overview"
185
185
  }),
186
- /* @__PURE__ */ g(k, {
186
+ /* @__PURE__ */ g(A, {
187
187
  value: "services",
188
188
  children: "Services"
189
189
  }),
190
- /* @__PURE__ */ g(k, {
190
+ /* @__PURE__ */ g(A, {
191
191
  value: "availability",
192
192
  children: "Availability"
193
193
  }),
194
- /* @__PURE__ */ g(k, {
194
+ /* @__PURE__ */ g(A, {
195
195
  value: "analytics",
196
196
  children: "Performance"
197
197
  })
198
198
  ] }),
199
- /* @__PURE__ */ g(D, {
199
+ /* @__PURE__ */ g(O, {
200
200
  value: "overview",
201
201
  className: "space-y-6 mt-4",
202
202
  children: /* @__PURE__ */ _("div", {
@@ -207,29 +207,29 @@ function A() {
207
207
  className: "text-base",
208
208
  children: "Professional Summary"
209
209
  }) }), /* @__PURE__ */ _(x, {
210
- className: "text-sm text-muted-foreground space-y-3",
210
+ className: "text-sm text-text-secondary space-y-3",
211
211
  children: [
212
212
  /* @__PURE__ */ g("p", { children: "Award-winning HR consultant with 12+ years specializing in technical recruitment and talent strategy for high-growth technology companies. Deep expertise in building engineering teams, executive search, and implementing scalable hiring processes." }),
213
213
  /* @__PURE__ */ g("p", { children: "Named one of the \"Top 50 HR Influencers\" by HR Tech Magazine in 2025. Regular speaker at HR technology conferences and contributor to industry publications." }),
214
- /* @__PURE__ */ g(T, {}),
214
+ /* @__PURE__ */ g(E, {}),
215
215
  /* @__PURE__ */ _("div", {
216
216
  className: "grid grid-cols-2 gap-3 text-xs",
217
217
  children: [
218
218
  /* @__PURE__ */ _("div", {
219
219
  className: "flex items-center gap-2",
220
- children: [/* @__PURE__ */ g(o, { className: "h-3 w-3 text-green-500" }), " Background verified"]
220
+ children: [/* @__PURE__ */ g(o, { className: "h-3 w-3 text-status-success-text" }), " Background verified"]
221
221
  }),
222
222
  /* @__PURE__ */ _("div", {
223
223
  className: "flex items-center gap-2",
224
- children: [/* @__PURE__ */ g(o, { className: "h-3 w-3 text-green-500" }), " Identity confirmed"]
224
+ children: [/* @__PURE__ */ g(o, { className: "h-3 w-3 text-status-success-text" }), " Identity confirmed"]
225
225
  }),
226
226
  /* @__PURE__ */ _("div", {
227
227
  className: "flex items-center gap-2",
228
- children: [/* @__PURE__ */ g(o, { className: "h-3 w-3 text-green-500" }), " References checked"]
228
+ children: [/* @__PURE__ */ g(o, { className: "h-3 w-3 text-status-success-text" }), " References checked"]
229
229
  }),
230
230
  /* @__PURE__ */ _("div", {
231
231
  className: "flex items-center gap-2",
232
- children: [/* @__PURE__ */ g(o, { className: "h-3 w-3 text-green-500" }), " Skills assessed"]
232
+ children: [/* @__PURE__ */ g(o, { className: "h-3 w-3 text-status-success-text" }), " Skills assessed"]
233
233
  })
234
234
  ]
235
235
  })
@@ -265,24 +265,24 @@ function A() {
265
265
  className: "space-y-2",
266
266
  children: [/* @__PURE__ */ _("div", {
267
267
  className: "flex items-center gap-2 text-sm",
268
- children: [/* @__PURE__ */ g(s, { className: "h-4 w-4 text-green-500" }), /* @__PURE__ */ g("span", {
268
+ children: [/* @__PURE__ */ g(s, { className: "h-4 w-4 text-status-success-text" }), /* @__PURE__ */ g("span", {
269
269
  className: "font-medium",
270
270
  children: "Usually responds within 2 hours"
271
271
  })]
272
272
  }), /* @__PURE__ */ g("p", {
273
- className: "text-xs text-muted-foreground",
273
+ className: "text-xs text-text-secondary",
274
274
  children: "Available Mon-Fri, 9 AM - 6 PM PST"
275
275
  })]
276
276
  })] })]
277
277
  })]
278
278
  })
279
279
  }),
280
- /* @__PURE__ */ g(D, {
280
+ /* @__PURE__ */ g(O, {
281
281
  value: "services",
282
282
  className: "mt-4",
283
283
  children: /* @__PURE__ */ g("div", {
284
284
  className: "grid gap-4 md:grid-cols-2",
285
- children: I.map((e) => /* @__PURE__ */ _(b, { children: [/* @__PURE__ */ _(C, { children: [/* @__PURE__ */ _("div", {
285
+ children: L.map((e) => /* @__PURE__ */ _(b, { children: [/* @__PURE__ */ _(C, { children: [/* @__PURE__ */ _("div", {
286
286
  className: "flex items-center justify-between",
287
287
  children: [/* @__PURE__ */ g(w, {
288
288
  className: "text-sm",
@@ -297,7 +297,7 @@ function A() {
297
297
  children: e.description
298
298
  })] }), /* @__PURE__ */ _(x, {
299
299
  className: "pt-0",
300
- children: [/* @__PURE__ */ g(T, { className: "mb-3" }), /* @__PURE__ */ _("div", {
300
+ children: [/* @__PURE__ */ g(E, { className: "mb-3" }), /* @__PURE__ */ _("div", {
301
301
  className: "flex items-center justify-between",
302
302
  children: [/* @__PURE__ */ _("div", {
303
303
  className: "space-y-0.5",
@@ -305,7 +305,7 @@ function A() {
305
305
  className: "text-sm font-semibold",
306
306
  children: e.price
307
307
  }), /* @__PURE__ */ _("p", {
308
- className: "text-[10px] text-muted-foreground",
308
+ className: "text-[10px] text-text-secondary",
309
309
  children: ["Delivery: ", e.delivery]
310
310
  })]
311
311
  }), /* @__PURE__ */ g(y, {
@@ -316,7 +316,7 @@ function A() {
316
316
  })] }, e.title))
317
317
  })
318
318
  }),
319
- /* @__PURE__ */ g(D, {
319
+ /* @__PURE__ */ g(O, {
320
320
  value: "availability",
321
321
  className: "mt-4",
322
322
  children: /* @__PURE__ */ _(b, { children: [/* @__PURE__ */ _(C, { children: [/* @__PURE__ */ g(w, {
@@ -324,7 +324,7 @@ function A() {
324
324
  children: "This Week's Availability"
325
325
  }), /* @__PURE__ */ g(S, { children: "Select a time slot to schedule a consultation" })] }), /* @__PURE__ */ g(x, {
326
326
  className: "space-y-4",
327
- children: F.map((e) => /* @__PURE__ */ _("div", {
327
+ children: I.map((e) => /* @__PURE__ */ _("div", {
328
328
  className: "flex items-center gap-4",
329
329
  children: [/* @__PURE__ */ g("span", {
330
330
  className: "w-24 text-sm font-medium",
@@ -341,7 +341,7 @@ function A() {
341
341
  }, e.day))
342
342
  })] })
343
343
  }),
344
- /* @__PURE__ */ g(D, {
344
+ /* @__PURE__ */ g(O, {
345
345
  value: "analytics",
346
346
  className: "mt-4",
347
347
  children: /* @__PURE__ */ _("div", {
@@ -381,7 +381,7 @@ function A() {
381
381
  className: "flex items-center justify-between",
382
382
  children: [/* @__PURE__ */ _("div", {
383
383
  className: "flex items-center gap-2 text-sm",
384
- children: [/* @__PURE__ */ g(e.icon, { className: "h-4 w-4 text-muted-foreground" }), /* @__PURE__ */ g("span", { children: e.label })]
384
+ children: [/* @__PURE__ */ g(e.icon, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ g("span", { children: e.label })]
385
385
  }), /* @__PURE__ */ g("span", {
386
386
  className: "font-semibold text-sm",
387
387
  children: e.value
@@ -418,13 +418,13 @@ function A() {
418
418
  children: [/* @__PURE__ */ _("div", {
419
419
  className: "flex items-center justify-between text-sm",
420
420
  children: [/* @__PURE__ */ g("span", { children: e.industry }), /* @__PURE__ */ _("span", {
421
- className: "text-xs text-muted-foreground",
421
+ className: "text-xs text-text-secondary",
422
422
  children: [e.percentage, "%"]
423
423
  })]
424
424
  }), /* @__PURE__ */ g("div", {
425
- className: "h-1.5 rounded-full bg-muted overflow-hidden",
425
+ className: "h-1.5 rounded-full bg-bg-sunken overflow-hidden",
426
426
  children: /* @__PURE__ */ g("div", {
427
- className: "h-full rounded-full bg-primary",
427
+ className: "h-full rounded-full bg-action-primary-bg",
428
428
  style: { width: `${e.percentage}%` }
429
429
  })
430
430
  })]
@@ -438,6 +438,6 @@ function A() {
438
438
  });
439
439
  }
440
440
  //#endregion
441
- export { A as MarketplaceFreelancerProfilePageEnhancedPage };
441
+ export { j as MarketplaceFreelancerProfilePageEnhancedPage };
442
442
 
443
443
  //# sourceMappingURL=MarketplaceFreelancerProfilePageEnhancedPage.js.map