@burdenoff/microfe-crewfoundry 2026.624.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 +86 -70
  2. package/dist/crewfoundry/pages/AdminAdminPagePage.js.map +1 -1
  3. package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js +104 -88
  4. package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
  5. package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js +91 -75
  6. package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js.map +1 -1
  7. package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js +119 -103
  8. package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js.map +1 -1
  9. package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js +107 -91
  10. package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js.map +1 -1
  11. package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js +10 -10
  12. package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js.map +1 -1
  13. package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js +60 -48
  14. package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js.map +1 -1
  15. package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js +10 -10
  16. package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js.map +1 -1
  17. package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js +20 -20
  18. package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js.map +1 -1
  19. package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js +22 -22
  20. package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js.map +1 -1
  21. package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js +7 -7
  22. package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js.map +1 -1
  23. package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js +67 -55
  24. package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js.map +1 -1
  25. package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js +54 -42
  26. package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js.map +1 -1
  27. package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js +68 -52
  28. package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js.map +1 -1
  29. package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js +30 -30
  30. package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js.map +1 -1
  31. package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js +9 -9
  32. package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js.map +1 -1
  33. package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js +90 -74
  34. package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js.map +1 -1
  35. package/dist/crewfoundry/pages/DashboardDashboardPagePage.js +166 -132
  36. package/dist/crewfoundry/pages/DashboardDashboardPagePage.js.map +1 -1
  37. package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js +43 -43
  38. package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js.map +1 -1
  39. package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js +107 -91
  40. package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js.map +1 -1
  41. package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js +35 -35
  42. package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js.map +1 -1
  43. package/dist/crewfoundry/pages/HiringApplicationsPagePage.js +78 -62
  44. package/dist/crewfoundry/pages/HiringApplicationsPagePage.js.map +1 -1
  45. package/dist/crewfoundry/pages/HiringCandidatesPagePage.js +17 -17
  46. package/dist/crewfoundry/pages/HiringCandidatesPagePage.js.map +1 -1
  47. package/dist/crewfoundry/pages/HiringCreateJobPagePage.js +39 -39
  48. package/dist/crewfoundry/pages/HiringCreateJobPagePage.js.map +1 -1
  49. package/dist/crewfoundry/pages/HiringInterviewsPagePage.js +53 -41
  50. package/dist/crewfoundry/pages/HiringInterviewsPagePage.js.map +1 -1
  51. package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js +41 -37
  52. package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js.map +1 -1
  53. package/dist/crewfoundry/pages/HiringJobsPagePage.js +25 -20
  54. package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
  55. package/dist/crewfoundry/pages/HrDepartmentsPagePage.js +54 -42
  56. package/dist/crewfoundry/pages/HrDepartmentsPagePage.js.map +1 -1
  57. package/dist/crewfoundry/pages/HrEmployeesPagePage.js +76 -60
  58. package/dist/crewfoundry/pages/HrEmployeesPagePage.js.map +1 -1
  59. package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js +83 -67
  60. package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js.map +1 -1
  61. package/dist/crewfoundry/pages/HrPayrollPagePage.js +86 -70
  62. package/dist/crewfoundry/pages/HrPayrollPagePage.js.map +1 -1
  63. package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js +79 -63
  64. package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js.map +1 -1
  65. package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js +51 -39
  66. package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js.map +1 -1
  67. package/dist/crewfoundry/pages/LearningCertificatesPagePage.js +14 -14
  68. package/dist/crewfoundry/pages/LearningCertificatesPagePage.js.map +1 -1
  69. package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js +29 -25
  70. package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js.map +1 -1
  71. package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js +17 -17
  72. package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js.map +1 -1
  73. package/dist/crewfoundry/pages/LearningCoursesPagePage.js +11 -11
  74. package/dist/crewfoundry/pages/LearningCoursesPagePage.js.map +1 -1
  75. package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js +76 -60
  76. package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js.map +1 -1
  77. package/dist/crewfoundry/pages/LearningLearningPagePage.js +67 -51
  78. package/dist/crewfoundry/pages/LearningLearningPagePage.js.map +1 -1
  79. package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js +17 -17
  80. package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js.map +1 -1
  81. package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js +7 -7
  82. package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js.map +1 -1
  83. package/dist/crewfoundry/pages/LearningMyLearningPagePage.js +69 -53
  84. package/dist/crewfoundry/pages/LearningMyLearningPagePage.js.map +1 -1
  85. package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js +54 -42
  86. package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js.map +1 -1
  87. package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js +66 -54
  88. package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js.map +1 -1
  89. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js +37 -37
  90. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js.map +1 -1
  91. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js +33 -32
  92. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js.map +1 -1
  93. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js +54 -42
  94. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js.map +1 -1
  95. package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js +11 -11
  96. package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js.map +1 -1
  97. package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js +18 -18
  98. package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js.map +1 -1
  99. package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js +7 -7
  100. package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js.map +1 -1
  101. package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js +29 -25
  102. package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js.map +1 -1
  103. package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js +22 -18
  104. package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js.map +1 -1
  105. package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js +55 -43
  106. package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js.map +1 -1
  107. package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js +7 -7
  108. package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js.map +1 -1
  109. package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js +62 -46
  110. package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js.map +1 -1
  111. package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js +14 -14
  112. package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js.map +1 -1
  113. package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js +71 -59
  114. package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js.map +1 -1
  115. package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js +20 -20
  116. package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js.map +1 -1
  117. package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js +33 -29
  118. package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js.map +1 -1
  119. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js +16 -16
  120. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js.map +1 -1
  121. package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js +53 -41
  122. package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js.map +1 -1
  123. package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js +25 -21
  124. package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js.map +1 -1
  125. package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js +9 -9
  126. package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js.map +1 -1
  127. package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js +48 -48
  128. package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js.map +1 -1
  129. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js +13 -13
  130. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js.map +1 -1
  131. package/package.json +2 -2
@@ -2,37 +2,37 @@ 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
37
  className: "text-sm text-text-secondary",
38
38
  children: "Revenue from marketplace services"
@@ -40,49 +40,61 @@ function h() {
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-text-secondary" })]
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-text-secondary" })]
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", {
@@ -93,7 +105,7 @@ function h() {
93
105
  className: "h-4 flex-1 overflow-hidden rounded bg-bg-sunken",
94
106
  children: /* @__PURE__ */ o("div", {
95
107
  className: "h-4 rounded bg-action-primary-bg",
96
- style: { width: `${Math.round(e.amount / x * 100)}%` }
108
+ style: { width: `${Math.round(e.amount / C * 100)}%` }
97
109
  })
98
110
  }),
99
111
  /* @__PURE__ */ s("span", {
@@ -114,7 +126,7 @@ 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",
@@ -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-text-secondary\">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-text-secondary\" />\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-text-secondary\" />\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-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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"}
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: [
@@ -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
  ]
@@ -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,7 +156,7 @@ 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", {
@@ -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", {
@@ -211,25 +211,25 @@ function A() {
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,7 +265,7 @@ 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
  })]
@@ -277,12 +277,12 @@ function A() {
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",
@@ -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", {
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"MarketplaceFreelancerProfilePageEnhancedPage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n Separator,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n} from '@burdenoff/fe-libs/ui';\nimport {\n BarChart3,\n Briefcase,\n Calendar,\n CheckCircle,\n Clock,\n DollarSign,\n Globe,\n MapPin,\n MessageSquare,\n Star,\n TrendingUp,\n Users,\n Video,\n} from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function MarketplaceFreelancerProfilePageEnhancedPage() {\n const [selectedTab, setSelectedTab] = useState('overview');\n const { marketplaceServices, clients, candidates } = useCrewFoundryStore();\n\n const availability = useMemo(\n () => [\n { day: 'Monday', slots: ['9:00 AM', '11:00 AM', '2:00 PM'] },\n { day: 'Tuesday', slots: ['10:00 AM', '1:00 PM', '3:00 PM'] },\n { day: 'Wednesday', slots: ['9:00 AM', '2:00 PM'] },\n { day: 'Thursday', slots: ['11:00 AM', '1:00 PM', '4:00 PM'] },\n { day: 'Friday', slots: ['9:00 AM', '10:00 AM'] },\n ],\n []\n );\n\n const services = useMemo(\n () =>\n marketplaceServices.slice(0, 6).map((service) => ({\n title: service.title,\n price:\n service.priceType === 'hourly'\n ? `$${service.price}/hr`\n : service.priceType === 'monthly'\n ? `$${service.price}/mo`\n : `$${service.price}`,\n type: service.priceType,\n description: service.description,\n delivery: service.deliveryTime,\n })),\n [marketplaceServices]\n );\n\n const analytics = useMemo(\n () => [\n {\n label: 'Avg. Placement Time',\n value: `${Math.max(15, 45 - candidates.filter((candidate) => candidate.status === 'hired').length)} days`,\n trend: '-3 days vs avg',\n },\n {\n label: 'Offer Acceptance Rate',\n value: `${Math.round((candidates.filter((candidate) => candidate.status === 'hired').length / Math.max(candidates.filter((candidate) => candidate.status === 'offer').length, 1)) * 100)}%`,\n trend: '+8% vs avg',\n },\n {\n label: 'Client Retention',\n value: `${Math.min(99, Math.max(70, Math.round((clients.filter((client) => client.status === 'active').length / Math.max(clients.length, 1)) * 100)))}%`,\n trend: 'repeat clients',\n },\n {\n label: 'Candidates Placed (YTD)',\n value: `${candidates.filter((candidate) => candidate.status === 'hired').length}`,\n trend: '+12% YoY',\n },\n ],\n [candidates, clients]\n );\n\n return (\n <div className=\"space-y-6 p-6\">\n <Card>\n <CardContent className=\"pt-6\">\n <div className=\"flex items-start gap-6\">\n <div 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\">\n MS\n </div>\n <div className=\"flex-1 space-y-2\">\n <div className=\"flex items-center gap-3 flex-wrap\">\n <h1 className=\"text-2xl font-semibold\">Maria Santos</h1>\n <Badge>Top Rated Plus</Badge>\n <Badge variant=\"secondary\">Expert-Vetted</Badge>\n <Badge variant=\"outline\" className=\"text-green-600 border-green-300\">\n Available Now\n </Badge>\n </div>\n <p className=\"text-sm font-medium\">Senior HR Consultant & Technical Recruiter</p>\n <p className=\"text-xs text-text-secondary\">TalentPro Solutions</p>\n <div className=\"flex flex-wrap items-center gap-4 text-xs text-text-secondary\">\n <span className=\"flex items-center gap-1\">\n <MapPin className=\"h-3 w-3\" /> San Francisco, CA\n </span>\n <span className=\"flex items-center gap-1\">\n <Globe className=\"h-3 w-3\" /> UTC-8 (PST)\n </span>\n <span className=\"flex items-center gap-1\">\n <Star className=\"h-3 w-3 text-yellow-500 fill-yellow-500\" /> 4.9 (47 reviews)\n </span>\n <span className=\"flex items-center gap-1\">\n <Briefcase className=\"h-3 w-3\" /> 47 completed projects\n </span>\n <span className=\"flex items-center gap-1\">\n <DollarSign className=\"h-3 w-3\" /> $150/hr\n </span>\n </div>\n <div className=\"flex gap-2 pt-2\">\n <Button size=\"sm\">\n <MessageSquare className=\"h-3 w-3 mr-1\" /> Send Proposal\n </Button>\n <Button size=\"sm\" variant=\"outline\">\n <Video className=\"h-3 w-3 mr-1\" /> Video Intro\n </Button>\n <Button size=\"sm\" variant=\"outline\">\n <Calendar className=\"h-3 w-3 mr-1\" /> Schedule Call\n </Button>\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n {analytics.map((stat) => (\n <Card key={stat.label}>\n <CardContent className=\"pt-6\">\n <p className=\"text-xs text-text-secondary\">{stat.label}</p>\n <p className=\"text-lg font-bold\">{stat.value}</p>\n <p className=\"text-[10px] text-green-600\">{stat.trend}</p>\n </CardContent>\n </Card>\n ))}\n </div>\n\n <Tabs value={selectedTab} onValueChange={setSelectedTab}>\n <TabsList>\n <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n <TabsTrigger value=\"services\">Services</TabsTrigger>\n <TabsTrigger value=\"availability\">Availability</TabsTrigger>\n <TabsTrigger value=\"analytics\">Performance</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"overview\" className=\"space-y-6 mt-4\">\n <div className=\"grid gap-6 lg:grid-cols-3\">\n <div className=\"lg:col-span-2 space-y-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Professional Summary</CardTitle>\n </CardHeader>\n <CardContent className=\"text-sm text-text-secondary space-y-3\">\n <p>\n Award-winning HR consultant with 12+ years specializing in technical recruitment\n and talent strategy for high-growth technology companies. Deep expertise in\n building engineering teams, executive search, and implementing scalable hiring\n processes.\n </p>\n <p>\n Named one of the &quot;Top 50 HR Influencers&quot; by HR Tech Magazine in 2025.\n Regular speaker at HR technology conferences and contributor to industry\n publications.\n </p>\n <Separator />\n <div className=\"grid grid-cols-2 gap-3 text-xs\">\n <div className=\"flex items-center gap-2\">\n <CheckCircle className=\"h-3 w-3 text-green-500\" /> Background verified\n </div>\n <div className=\"flex items-center gap-2\">\n <CheckCircle className=\"h-3 w-3 text-green-500\" /> Identity confirmed\n </div>\n <div className=\"flex items-center gap-2\">\n <CheckCircle className=\"h-3 w-3 text-green-500\" /> References checked\n </div>\n <div className=\"flex items-center gap-2\">\n <CheckCircle className=\"h-3 w-3 text-green-500\" /> Skills assessed\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n <div className=\"space-y-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-sm\">Expertise Areas</CardTitle>\n </CardHeader>\n <CardContent className=\"flex flex-wrap gap-1.5\">\n {[\n 'Technical Recruitment',\n 'Executive Search',\n 'HR Consulting',\n 'Talent Strategy',\n 'Employer Branding',\n 'Comp Analysis',\n 'ATS Implementation',\n 'Interview Training',\n 'DEI Programs',\n 'Workforce Planning',\n ].map((s) => (\n <Badge key={s} variant=\"secondary\" className=\"text-xs\">\n {s}\n </Badge>\n ))}\n </CardContent>\n </Card>\n <Card>\n <CardHeader>\n <CardTitle className=\"text-sm\">Response Time</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n <div className=\"flex items-center gap-2 text-sm\">\n <Clock className=\"h-4 w-4 text-green-500\" />\n <span className=\"font-medium\">Usually responds within 2 hours</span>\n </div>\n <p className=\"text-xs text-text-secondary\">\n Available Mon-Fri, 9 AM - 6 PM PST\n </p>\n </CardContent>\n </Card>\n </div>\n </div>\n </TabsContent>\n\n <TabsContent value=\"services\" className=\"mt-4\">\n <div className=\"grid gap-4 md:grid-cols-2\">\n {services.map((svc) => (\n <Card key={svc.title}>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <CardTitle className=\"text-sm\">{svc.title}</CardTitle>\n <Badge variant=\"outline\" className=\"text-xs\">\n {svc.type}\n </Badge>\n </div>\n <CardDescription className=\"text-xs\">{svc.description}</CardDescription>\n </CardHeader>\n <CardContent className=\"pt-0\">\n <Separator className=\"mb-3\" />\n <div className=\"flex items-center justify-between\">\n <div className=\"space-y-0.5\">\n <p className=\"text-sm font-semibold\">{svc.price}</p>\n <p className=\"text-[10px] text-text-secondary\">Delivery: {svc.delivery}</p>\n </div>\n <Button size=\"sm\">Book Now</Button>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n </TabsContent>\n\n <TabsContent value=\"availability\" className=\"mt-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">This Week&apos;s Availability</CardTitle>\n <CardDescription>Select a time slot to schedule a consultation</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {availability.map((day) => (\n <div key={day.day} className=\"flex items-center gap-4\">\n <span className=\"w-24 text-sm font-medium\">{day.day}</span>\n <div className=\"flex flex-wrap gap-2\">\n {day.slots.map((slot) => (\n <Button key={slot} variant=\"outline\" size=\"sm\" className=\"text-xs h-7\">\n {slot}\n </Button>\n ))}\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n </TabsContent>\n\n <TabsContent value=\"analytics\" className=\"mt-4\">\n <div className=\"grid gap-4 md:grid-cols-2\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Performance Metrics</CardTitle>\n <CardDescription>Historical performance data</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {[\n { label: 'Total Placements', value: '312', icon: Users },\n { label: 'Client Satisfaction', value: '4.9/5.0', icon: Star },\n { label: 'On-Time Delivery', value: '97%', icon: Clock },\n { label: 'Revenue Generated', value: '$2.1M', icon: TrendingUp },\n { label: 'Repeat Client Rate', value: '92%', icon: BarChart3 },\n ].map((metric) => (\n <div key={metric.label} className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2 text-sm\">\n <metric.icon className=\"h-4 w-4 text-text-secondary\" />\n <span>{metric.label}</span>\n </div>\n <span className=\"font-semibold text-sm\">{metric.value}</span>\n </div>\n ))}\n </CardContent>\n </Card>\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Industry Specialization</CardTitle>\n <CardDescription>Experience by industry sector</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {[\n { industry: 'Technology', percentage: 45 },\n { industry: 'Healthcare', percentage: 20 },\n { industry: 'Finance', percentage: 15 },\n { industry: 'E-commerce', percentage: 12 },\n { industry: 'Education', percentage: 8 },\n ].map((item) => (\n <div key={item.industry} className=\"space-y-1\">\n <div className=\"flex items-center justify-between text-sm\">\n <span>{item.industry}</span>\n <span className=\"text-xs text-text-secondary\">{item.percentage}%</span>\n </div>\n <div className=\"h-1.5 rounded-full bg-bg-sunken overflow-hidden\">\n <div\n className=\"h-full rounded-full bg-action-primary-bg\"\n style={{ width: `${item.percentage}%` }}\n />\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n </TabsContent>\n </Tabs>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"MarketplaceFreelancerProfilePageEnhancedPage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n GradientText,\n Separator,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n} from '@burdenoff/fe-libs/ui';\nimport {\n BarChart3,\n Briefcase,\n Calendar,\n CheckCircle,\n Clock,\n DollarSign,\n Globe,\n MapPin,\n MessageSquare,\n Star,\n TrendingUp,\n Users,\n Video,\n} from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function MarketplaceFreelancerProfilePageEnhancedPage() {\n const [selectedTab, setSelectedTab] = useState('overview');\n const { marketplaceServices, clients, candidates } = useCrewFoundryStore();\n\n const availability = useMemo(\n () => [\n { day: 'Monday', slots: ['9:00 AM', '11:00 AM', '2:00 PM'] },\n { day: 'Tuesday', slots: ['10:00 AM', '1:00 PM', '3:00 PM'] },\n { day: 'Wednesday', slots: ['9:00 AM', '2:00 PM'] },\n { day: 'Thursday', slots: ['11:00 AM', '1:00 PM', '4:00 PM'] },\n { day: 'Friday', slots: ['9:00 AM', '10:00 AM'] },\n ],\n []\n );\n\n const services = useMemo(\n () =>\n marketplaceServices.slice(0, 6).map((service) => ({\n title: service.title,\n price:\n service.priceType === 'hourly'\n ? `$${service.price}/hr`\n : service.priceType === 'monthly'\n ? `$${service.price}/mo`\n : `$${service.price}`,\n type: service.priceType,\n description: service.description,\n delivery: service.deliveryTime,\n })),\n [marketplaceServices]\n );\n\n const analytics = useMemo(\n () => [\n {\n label: 'Avg. Placement Time',\n value: `${Math.max(15, 45 - candidates.filter((candidate) => candidate.status === 'hired').length)} days`,\n trend: '-3 days vs avg',\n },\n {\n label: 'Offer Acceptance Rate',\n value: `${Math.round((candidates.filter((candidate) => candidate.status === 'hired').length / Math.max(candidates.filter((candidate) => candidate.status === 'offer').length, 1)) * 100)}%`,\n trend: '+8% vs avg',\n },\n {\n label: 'Client Retention',\n value: `${Math.min(99, Math.max(70, Math.round((clients.filter((client) => client.status === 'active').length / Math.max(clients.length, 1)) * 100)))}%`,\n trend: 'repeat clients',\n },\n {\n label: 'Candidates Placed (YTD)',\n value: `${candidates.filter((candidate) => candidate.status === 'hired').length}`,\n trend: '+12% YoY',\n },\n ],\n [candidates, clients]\n );\n\n return (\n <div className=\"space-y-6 p-6\">\n <Card>\n <CardContent className=\"pt-6\">\n <div className=\"flex items-start gap-6\">\n <div 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\">\n MS\n </div>\n <div className=\"flex-1 space-y-2\">\n <div className=\"flex items-center gap-3 flex-wrap\">\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>Maria Santos</GradientText>\n </h1>\n <Badge>Top Rated Plus</Badge>\n <Badge variant=\"secondary\">Expert-Vetted</Badge>\n <Badge\n variant=\"outline\"\n className=\"text-status-success-text border-status-success-text/30\"\n >\n Available Now\n </Badge>\n </div>\n <p className=\"text-sm font-medium\">Senior HR Consultant & Technical Recruiter</p>\n <p className=\"text-xs text-text-secondary\">TalentPro Solutions</p>\n <div className=\"flex flex-wrap items-center gap-4 text-xs text-text-secondary\">\n <span className=\"flex items-center gap-1\">\n <MapPin className=\"h-3 w-3\" /> San Francisco, CA\n </span>\n <span className=\"flex items-center gap-1\">\n <Globe className=\"h-3 w-3\" /> UTC-8 (PST)\n </span>\n <span className=\"flex items-center gap-1\">\n <Star className=\"h-3 w-3 text-status-warning-text fill-yellow-500\" /> 4.9 (47\n reviews)\n </span>\n <span className=\"flex items-center gap-1\">\n <Briefcase className=\"h-3 w-3\" /> 47 completed projects\n </span>\n <span className=\"flex items-center gap-1\">\n <DollarSign className=\"h-3 w-3\" /> $150/hr\n </span>\n </div>\n <div className=\"flex gap-2 pt-2\">\n <Button size=\"sm\">\n <MessageSquare className=\"h-3 w-3 mr-1\" /> Send Proposal\n </Button>\n <Button size=\"sm\" variant=\"outline\">\n <Video className=\"h-3 w-3 mr-1\" /> Video Intro\n </Button>\n <Button size=\"sm\" variant=\"outline\">\n <Calendar className=\"h-3 w-3 mr-1\" /> Schedule Call\n </Button>\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n {analytics.map((stat) => (\n <Card key={stat.label}>\n <CardContent className=\"pt-6\">\n <p className=\"text-xs text-text-secondary\">{stat.label}</p>\n <p className=\"text-lg font-bold\">{stat.value}</p>\n <p className=\"text-[10px] text-status-success-text\">{stat.trend}</p>\n </CardContent>\n </Card>\n ))}\n </div>\n\n <Tabs value={selectedTab} onValueChange={setSelectedTab}>\n <TabsList>\n <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n <TabsTrigger value=\"services\">Services</TabsTrigger>\n <TabsTrigger value=\"availability\">Availability</TabsTrigger>\n <TabsTrigger value=\"analytics\">Performance</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"overview\" className=\"space-y-6 mt-4\">\n <div className=\"grid gap-6 lg:grid-cols-3\">\n <div className=\"lg:col-span-2 space-y-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Professional Summary</CardTitle>\n </CardHeader>\n <CardContent className=\"text-sm text-text-secondary space-y-3\">\n <p>\n Award-winning HR consultant with 12+ years specializing in technical recruitment\n and talent strategy for high-growth technology companies. Deep expertise in\n building engineering teams, executive search, and implementing scalable hiring\n processes.\n </p>\n <p>\n Named one of the &quot;Top 50 HR Influencers&quot; by HR Tech Magazine in 2025.\n Regular speaker at HR technology conferences and contributor to industry\n publications.\n </p>\n <Separator />\n <div className=\"grid grid-cols-2 gap-3 text-xs\">\n <div className=\"flex items-center gap-2\">\n <CheckCircle className=\"h-3 w-3 text-status-success-text\" /> Background\n verified\n </div>\n <div className=\"flex items-center gap-2\">\n <CheckCircle className=\"h-3 w-3 text-status-success-text\" /> Identity\n confirmed\n </div>\n <div className=\"flex items-center gap-2\">\n <CheckCircle className=\"h-3 w-3 text-status-success-text\" /> References\n checked\n </div>\n <div className=\"flex items-center gap-2\">\n <CheckCircle className=\"h-3 w-3 text-status-success-text\" /> Skills assessed\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n <div className=\"space-y-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-sm\">Expertise Areas</CardTitle>\n </CardHeader>\n <CardContent className=\"flex flex-wrap gap-1.5\">\n {[\n 'Technical Recruitment',\n 'Executive Search',\n 'HR Consulting',\n 'Talent Strategy',\n 'Employer Branding',\n 'Comp Analysis',\n 'ATS Implementation',\n 'Interview Training',\n 'DEI Programs',\n 'Workforce Planning',\n ].map((s) => (\n <Badge key={s} variant=\"secondary\" className=\"text-xs\">\n {s}\n </Badge>\n ))}\n </CardContent>\n </Card>\n <Card>\n <CardHeader>\n <CardTitle className=\"text-sm\">Response Time</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n <div className=\"flex items-center gap-2 text-sm\">\n <Clock className=\"h-4 w-4 text-status-success-text\" />\n <span className=\"font-medium\">Usually responds within 2 hours</span>\n </div>\n <p className=\"text-xs text-text-secondary\">Available Mon-Fri, 9 AM - 6 PM PST</p>\n </CardContent>\n </Card>\n </div>\n </div>\n </TabsContent>\n\n <TabsContent value=\"services\" className=\"mt-4\">\n <div className=\"grid gap-4 md:grid-cols-2\">\n {services.map((svc) => (\n <Card key={svc.title}>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <CardTitle className=\"text-sm\">{svc.title}</CardTitle>\n <Badge variant=\"outline\" className=\"text-xs\">\n {svc.type}\n </Badge>\n </div>\n <CardDescription className=\"text-xs\">{svc.description}</CardDescription>\n </CardHeader>\n <CardContent className=\"pt-0\">\n <Separator className=\"mb-3\" />\n <div className=\"flex items-center justify-between\">\n <div className=\"space-y-0.5\">\n <p className=\"text-sm font-semibold\">{svc.price}</p>\n <p className=\"text-[10px] text-text-secondary\">Delivery: {svc.delivery}</p>\n </div>\n <Button size=\"sm\">Book Now</Button>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n </TabsContent>\n\n <TabsContent value=\"availability\" className=\"mt-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">This Week&apos;s Availability</CardTitle>\n <CardDescription>Select a time slot to schedule a consultation</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {availability.map((day) => (\n <div key={day.day} className=\"flex items-center gap-4\">\n <span className=\"w-24 text-sm font-medium\">{day.day}</span>\n <div className=\"flex flex-wrap gap-2\">\n {day.slots.map((slot) => (\n <Button key={slot} variant=\"outline\" size=\"sm\" className=\"text-xs h-7\">\n {slot}\n </Button>\n ))}\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n </TabsContent>\n\n <TabsContent value=\"analytics\" className=\"mt-4\">\n <div className=\"grid gap-4 md:grid-cols-2\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Performance Metrics</CardTitle>\n <CardDescription>Historical performance data</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {[\n { label: 'Total Placements', value: '312', icon: Users },\n { label: 'Client Satisfaction', value: '4.9/5.0', icon: Star },\n { label: 'On-Time Delivery', value: '97%', icon: Clock },\n { label: 'Revenue Generated', value: '$2.1M', icon: TrendingUp },\n { label: 'Repeat Client Rate', value: '92%', icon: BarChart3 },\n ].map((metric) => (\n <div key={metric.label} className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2 text-sm\">\n <metric.icon className=\"h-4 w-4 text-text-secondary\" />\n <span>{metric.label}</span>\n </div>\n <span className=\"font-semibold text-sm\">{metric.value}</span>\n </div>\n ))}\n </CardContent>\n </Card>\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Industry Specialization</CardTitle>\n <CardDescription>Experience by industry sector</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {[\n { industry: 'Technology', percentage: 45 },\n { industry: 'Healthcare', percentage: 20 },\n { industry: 'Finance', percentage: 15 },\n { industry: 'E-commerce', percentage: 12 },\n { industry: 'Education', percentage: 8 },\n ].map((item) => (\n <div key={item.industry} className=\"space-y-1\">\n <div className=\"flex items-center justify-between text-sm\">\n <span>{item.industry}</span>\n <span className=\"text-xs text-text-secondary\">{item.percentage}%</span>\n </div>\n <div className=\"h-1.5 rounded-full bg-bg-sunken overflow-hidden\">\n <div\n className=\"h-full rounded-full bg-action-primary-bg\"\n style={{ width: `${item.percentage}%` }}\n />\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n </TabsContent>\n </Tabs>\n </div>\n );\n}\n"],"mappings":"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"}