@burdenoff/microfe-crewfoundry 2026.529.1 → 2026.624.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 +15 -15
  2. package/dist/crewfoundry/pages/AdminAdminPagePage.js.map +1 -1
  3. package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js +15 -15
  4. package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
  5. package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js +17 -17
  6. package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js.map +1 -1
  7. package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js +19 -19
  8. package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js.map +1 -1
  9. package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js +16 -16
  10. package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js.map +1 -1
  11. package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js +5 -5
  12. package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js.map +1 -1
  13. package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js +7 -7
  14. package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js.map +1 -1
  15. package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js +7 -7
  16. package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js.map +1 -1
  17. package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js +7 -7
  18. package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js.map +1 -1
  19. package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js +7 -7
  20. package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js.map +1 -1
  21. package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js +3 -3
  22. package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js.map +1 -1
  23. package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js +8 -8
  24. package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js.map +1 -1
  25. package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js +8 -8
  26. package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js.map +1 -1
  27. package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js +14 -14
  28. package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js.map +1 -1
  29. package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js +10 -10
  30. package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js.map +1 -1
  31. package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js +4 -4
  32. package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js.map +1 -1
  33. package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js +17 -17
  34. package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js.map +1 -1
  35. package/dist/crewfoundry/pages/DashboardDashboardPagePage.js +19 -19
  36. package/dist/crewfoundry/pages/DashboardDashboardPagePage.js.map +1 -1
  37. package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js +17 -17
  38. package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js.map +1 -1
  39. package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js +12 -12
  40. package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js.map +1 -1
  41. package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js +12 -12
  42. package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js.map +1 -1
  43. package/dist/crewfoundry/pages/HiringApplicationsPagePage.js +11 -11
  44. package/dist/crewfoundry/pages/HiringApplicationsPagePage.js.map +1 -1
  45. package/dist/crewfoundry/pages/HiringCandidatesPagePage.js +7 -7
  46. package/dist/crewfoundry/pages/HiringCandidatesPagePage.js.map +1 -1
  47. package/dist/crewfoundry/pages/HiringCreateJobPagePage.js +1 -1
  48. package/dist/crewfoundry/pages/HiringCreateJobPagePage.js.map +1 -1
  49. package/dist/crewfoundry/pages/HiringInterviewsPagePage.js +7 -7
  50. package/dist/crewfoundry/pages/HiringInterviewsPagePage.js.map +1 -1
  51. package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js +13 -13
  52. package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js.map +1 -1
  53. package/dist/crewfoundry/pages/HiringJobsPagePage.js +7 -7
  54. package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
  55. package/dist/crewfoundry/pages/HrDepartmentsPagePage.js +10 -10
  56. package/dist/crewfoundry/pages/HrDepartmentsPagePage.js.map +1 -1
  57. package/dist/crewfoundry/pages/HrEmployeesPagePage.js +9 -9
  58. package/dist/crewfoundry/pages/HrEmployeesPagePage.js.map +1 -1
  59. package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js +13 -13
  60. package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js.map +1 -1
  61. package/dist/crewfoundry/pages/HrPayrollPagePage.js +10 -10
  62. package/dist/crewfoundry/pages/HrPayrollPagePage.js.map +1 -1
  63. package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js +9 -9
  64. package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js.map +1 -1
  65. package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js +3 -3
  66. package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js.map +1 -1
  67. package/dist/crewfoundry/pages/LearningCertificatesPagePage.js +2 -2
  68. package/dist/crewfoundry/pages/LearningCertificatesPagePage.js.map +1 -1
  69. package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js +11 -11
  70. package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js.map +1 -1
  71. package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js +7 -7
  72. package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js.map +1 -1
  73. package/dist/crewfoundry/pages/LearningCoursesPagePage.js +4 -4
  74. package/dist/crewfoundry/pages/LearningCoursesPagePage.js.map +1 -1
  75. package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js +9 -9
  76. package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js.map +1 -1
  77. package/dist/crewfoundry/pages/LearningLearningPagePage.js +10 -10
  78. package/dist/crewfoundry/pages/LearningLearningPagePage.js.map +1 -1
  79. package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js +11 -11
  80. package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js.map +1 -1
  81. package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js +5 -5
  82. package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js.map +1 -1
  83. package/dist/crewfoundry/pages/LearningMyLearningPagePage.js +7 -7
  84. package/dist/crewfoundry/pages/LearningMyLearningPagePage.js.map +1 -1
  85. package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js +3 -3
  86. package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js.map +1 -1
  87. package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js +7 -7
  88. package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js.map +1 -1
  89. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js +11 -11
  90. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js.map +1 -1
  91. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js +11 -11
  92. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js.map +1 -1
  93. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js +6 -6
  94. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js.map +1 -1
  95. package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js +6 -6
  96. package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js.map +1 -1
  97. package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js +7 -7
  98. package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js.map +1 -1
  99. package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js +2 -2
  100. package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js.map +1 -1
  101. package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js +15 -15
  102. package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js.map +1 -1
  103. package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js +10 -10
  104. package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js.map +1 -1
  105. package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js +5 -5
  106. package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js.map +1 -1
  107. package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js +6 -6
  108. package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js.map +1 -1
  109. package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js +6 -6
  110. package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js.map +1 -1
  111. package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js +4 -4
  112. package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js.map +1 -1
  113. package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js +4 -4
  114. package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js.map +1 -1
  115. package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js +1 -1
  116. package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js.map +1 -1
  117. package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js +15 -15
  118. package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js.map +1 -1
  119. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js +4 -4
  120. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js.map +1 -1
  121. package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js +8 -8
  122. package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js.map +1 -1
  123. package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js +14 -14
  124. package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js.map +1 -1
  125. package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js +6 -6
  126. package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js.map +1 -1
  127. package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js +20 -20
  128. package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js.map +1 -1
  129. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js +3 -3
  130. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js.map +1 -1
  131. package/package.json +1 -1
@@ -34,7 +34,7 @@ function h() {
34
34
  className: "text-2xl font-semibold",
35
35
  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", {
@@ -45,7 +45,7 @@ function h() {
45
45
  children: [/* @__PURE__ */ o(f, {
46
46
  className: "text-sm font-medium",
47
47
  children: "Total Earnings"
48
- }), /* @__PURE__ */ o(r, { className: "h-4 w-4 text-muted-foreground" })]
48
+ }), /* @__PURE__ */ o(r, { className: "h-4 w-4 text-text-secondary" })]
49
49
  }), /* @__PURE__ */ s(u, { children: [/* @__PURE__ */ s("div", {
50
50
  className: "text-2xl font-bold",
51
51
  children: ["$", b.toLocaleString()]
@@ -63,7 +63,7 @@ function h() {
63
63
  children: [/* @__PURE__ */ o(f, {
64
64
  className: "text-sm font-medium",
65
65
  children: "Avg Order Value"
66
- }), /* @__PURE__ */ o(i, { className: "h-4 w-4 text-muted-foreground" })]
66
+ }), /* @__PURE__ */ o(i, { className: "h-4 w-4 text-text-secondary" })]
67
67
  }), /* @__PURE__ */ o(u, { children: /* @__PURE__ */ s("div", {
68
68
  className: "text-2xl font-bold",
69
69
  children: ["$", Math.round(b / Math.max(S, 1)).toLocaleString()]
@@ -86,13 +86,13 @@ function h() {
86
86
  className: "flex items-center gap-3",
87
87
  children: [
88
88
  /* @__PURE__ */ o("span", {
89
- className: "w-10 text-sm text-muted-foreground",
89
+ className: "w-10 text-sm text-text-secondary",
90
90
  children: e.month
91
91
  }),
92
92
  /* @__PURE__ */ o("div", {
93
- className: "h-4 flex-1 overflow-hidden rounded bg-muted",
93
+ className: "h-4 flex-1 overflow-hidden rounded bg-bg-sunken",
94
94
  children: /* @__PURE__ */ o("div", {
95
- className: "h-4 rounded bg-primary",
95
+ className: "h-4 rounded bg-action-primary-bg",
96
96
  style: { width: `${Math.round(e.amount / x * 100)}%` }
97
97
  })
98
98
  }),
@@ -120,7 +120,7 @@ function h() {
120
120
  className: "text-sm font-medium",
121
121
  children: e.client
122
122
  }), /* @__PURE__ */ s("p", {
123
- className: "text-xs text-muted-foreground",
123
+ className: "text-xs text-text-secondary",
124
124
  children: [
125
125
  e.service,
126
126
  " · ",
@@ -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":"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"}
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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"}
@@ -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",
@@ -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",
@@ -160,7 +160,7 @@ function A() {
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", {
@@ -207,7 +207,7 @@ 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." }),
@@ -270,7 +270,7 @@ function A() {
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
  })] })]
@@ -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, {
@@ -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
  })]
@@ -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-primary-foreground 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-muted-foreground\">TalentPro Solutions</p>\n <div className=\"flex flex-wrap items-center gap-4 text-xs text-muted-foreground\">\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-muted-foreground\">{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-muted-foreground 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-muted-foreground\">\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-muted-foreground\">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-muted-foreground\" />\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-muted-foreground\">{item.percentage}%</span>\n </div>\n <div className=\"h-1.5 rounded-full bg-muted overflow-hidden\">\n <div\n className=\"h-full rounded-full bg-primary\"\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 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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"}
@@ -31,7 +31,7 @@ function w() {
31
31
  /* @__PURE__ */ h("div", {
32
32
  className: "flex items-start gap-6",
33
33
  children: [/* @__PURE__ */ m("div", {
34
- className: "flex h-20 w-20 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground text-2xl font-semibold",
34
+ className: "flex h-20 w-20 shrink-0 items-center justify-center rounded-full bg-action-primary-bg text-action-primary-text text-2xl font-semibold",
35
35
  children: "MS"
36
36
  }), /* @__PURE__ */ h("div", {
37
37
  className: "flex-1 space-y-2",
@@ -51,11 +51,11 @@ function w() {
51
51
  ]
52
52
  }),
53
53
  /* @__PURE__ */ m("p", {
54
- className: "text-sm text-muted-foreground",
54
+ className: "text-sm text-text-secondary",
55
55
  children: "Senior HR Consultant & Technical Recruiter"
56
56
  }),
57
57
  /* @__PURE__ */ h("div", {
58
- className: "flex flex-wrap items-center gap-4 text-xs text-muted-foreground",
58
+ className: "flex flex-wrap items-center gap-4 text-xs text-text-secondary",
59
59
  children: [
60
60
  /* @__PURE__ */ h("span", {
61
61
  className: "flex items-center gap-1",
@@ -126,7 +126,7 @@ function w() {
126
126
  ].map((e) => /* @__PURE__ */ m(v, { children: /* @__PURE__ */ h(y, {
127
127
  className: "flex items-center gap-3 pt-6",
128
128
  children: [/* @__PURE__ */ m(e.icon, { className: `h-5 w-5 ${e.color}` }), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
129
- className: "text-xs text-muted-foreground",
129
+ className: "text-xs text-text-secondary",
130
130
  children: e.label
131
131
  }), /* @__PURE__ */ m("p", {
132
132
  className: "text-lg font-bold",
@@ -143,7 +143,7 @@ function w() {
143
143
  className: "text-base",
144
144
  children: "About"
145
145
  }) }), /* @__PURE__ */ h(y, {
146
- className: "text-sm text-muted-foreground space-y-3",
146
+ className: "text-sm text-text-secondary space-y-3",
147
147
  children: [/* @__PURE__ */ m("p", { children: "With 12+ years of experience in HR consulting and technical recruitment, I specialize in helping companies build world-class teams. My focus areas include executive search, engineering team buildouts, and designing scalable hiring processes for high-growth companies." }), /* @__PURE__ */ m("p", { children: "I've placed 300+ candidates across startups and Fortune 500 companies, with a 98% client satisfaction rate and 95% offer acceptance rate." })]
148
148
  })] }),
149
149
  /* @__PURE__ */ h(v, { children: [/* @__PURE__ */ h(x, { children: [/* @__PURE__ */ m(S, {
@@ -166,11 +166,11 @@ function w() {
166
166
  })]
167
167
  }),
168
168
  /* @__PURE__ */ m("p", {
169
- className: "text-xs text-muted-foreground",
169
+ className: "text-xs text-text-secondary",
170
170
  children: e.client
171
171
  }),
172
172
  /* @__PURE__ */ m("p", {
173
- className: "text-xs text-muted-foreground",
173
+ className: "text-xs text-text-secondary",
174
174
  children: e.description
175
175
  }),
176
176
  /* @__PURE__ */ h("div", {
@@ -197,7 +197,7 @@ function w() {
197
197
  className: "text-sm font-medium",
198
198
  children: e.author
199
199
  }), /* @__PURE__ */ h("p", {
200
- className: "text-xs text-muted-foreground",
200
+ className: "text-xs text-text-secondary",
201
201
  children: [
202
202
  e.company,
203
203
  " - ",
@@ -209,7 +209,7 @@ function w() {
209
209
  })]
210
210
  }),
211
211
  /* @__PURE__ */ m("p", {
212
- className: "text-xs text-muted-foreground",
212
+ className: "text-xs text-text-secondary",
213
213
  children: e.text
214
214
  }),
215
215
  /* @__PURE__ */ m(C, {})
@@ -254,10 +254,10 @@ function w() {
254
254
  className: "space-y-2",
255
255
  children: [/* @__PURE__ */ h("div", {
256
256
  className: "flex items-center gap-2 text-sm",
257
- children: [/* @__PURE__ */ m(c, { className: "h-3 w-3 text-muted-foreground" }), /* @__PURE__ */ m("span", { children: "maria@talentpro.com" })]
257
+ children: [/* @__PURE__ */ m(c, { className: "h-3 w-3 text-text-secondary" }), /* @__PURE__ */ m("span", { children: "maria@talentpro.com" })]
258
258
  }), /* @__PURE__ */ h("div", {
259
259
  className: "flex items-center gap-2 text-sm",
260
- children: [/* @__PURE__ */ m(d, { className: "h-3 w-3 text-muted-foreground" }), /* @__PURE__ */ m("span", { children: "+1-555-0301" })]
260
+ children: [/* @__PURE__ */ m(d, { className: "h-3 w-3 text-text-secondary" }), /* @__PURE__ */ m("span", { children: "+1-555-0301" })]
261
261
  })]
262
262
  })] })
263
263
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"MarketplaceFreelancerProfilePagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n Separator,\n} from '@burdenoff/fe-libs/ui';\nimport {\n Award,\n Briefcase,\n Calendar,\n Clock,\n DollarSign,\n Globe,\n Mail,\n MapPin,\n MessageSquare,\n Phone,\n Star,\n ThumbsUp,\n} from 'lucide-react';\nimport { useMemo } from 'react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function MarketplaceFreelancerProfilePagePage() {\n const { marketplaceServices, clients, announcements } = useCrewFoundryStore();\n\n const skills = useMemo(\n () =>\n Array.from(new Set(marketplaceServices.flatMap((service) => service.skills))).slice(0, 12),\n [marketplaceServices]\n );\n\n const portfolio = useMemo(\n () =>\n marketplaceServices.slice(0, 3).map((service, index) => ({\n title: service.title,\n client: clients[index % Math.max(clients.length, 1)]?.name || service.provider,\n duration: service.deliveryTime,\n description: service.description,\n outcome: `${Math.round(service.rating * 20)}% satisfaction`,\n })),\n [clients, marketplaceServices]\n );\n\n const reviews = useMemo(\n () =>\n announcements.slice(0, 3).map((announcement, index) => ({\n author: announcement.author,\n company: clients[index % Math.max(clients.length, 1)]?.name || 'CrewFoundry Client',\n rating: Math.min(\n 5,\n Math.max(\n 4,\n Math.round(\n marketplaceServices[index % Math.max(marketplaceServices.length, 1)]?.rating || 4.5\n )\n )\n ),\n date: new Date(announcement.createdAt).toLocaleString('en-US', {\n month: 'short',\n year: 'numeric',\n }),\n text: announcement.content,\n })),\n [announcements, clients, marketplaceServices]\n );\n\n const avgRating =\n marketplaceServices.length > 0\n ? (\n marketplaceServices.reduce((sum, service) => sum + service.rating, 0) /\n marketplaceServices.length\n ).toFixed(1)\n : '4.8';\n\n const totalProjects = marketplaceServices.reduce((sum, service) => sum + service.reviews, 0);\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-start gap-6\">\n <div className=\"flex h-20 w-20 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground text-2xl font-semibold\">\n MS\n </div>\n <div className=\"flex-1 space-y-2\">\n <div className=\"flex items-center gap-3\">\n <h1 className=\"text-2xl font-semibold\">Maria Santos</h1>\n <Badge>Top Rated</Badge>\n <Badge variant=\"secondary\">Pro</Badge>\n </div>\n <p className=\"text-sm text-muted-foreground\">\n Senior HR Consultant & Technical Recruiter\n </p>\n <div className=\"flex flex-wrap items-center gap-4 text-xs text-muted-foreground\">\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\" /> crewfoundry.com\n </span>\n <span className=\"flex items-center gap-1\">\n <Clock className=\"h-3 w-3\" /> Member since 2022\n </span>\n <span className=\"flex items-center gap-1\">\n <Star className=\"h-3 w-3 text-yellow-500\" /> {avgRating} ({totalProjects} reviews)\n </span>\n </div>\n <div className=\"flex gap-2 pt-1\">\n <Button size=\"sm\">\n <MessageSquare className=\"h-3 w-3 mr-1\" /> Message\n </Button>\n <Button size=\"sm\" variant=\"outline\">\n <Calendar className=\"h-3 w-3 mr-1\" /> Book Consultation\n </Button>\n </div>\n </div>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n {[\n {\n icon: Briefcase,\n label: 'Projects',\n value: `${totalProjects}`,\n color: 'text-blue-500',\n },\n {\n icon: ThumbsUp,\n label: 'Success Rate',\n value: `${Math.min(99, Math.max(80, Math.round(Number(avgRating) * 20)))}%`,\n color: 'text-green-500',\n },\n {\n icon: DollarSign,\n label: 'Hourly Rate',\n value: `$${Math.round((marketplaceServices[0]?.price || 150) / 10)}`,\n color: 'text-purple-500',\n },\n {\n icon: Award,\n label: 'Certifications',\n value: `${Math.max(3, Math.round(skills.length / 2))}`,\n color: 'text-yellow-500',\n },\n ].map((stat) => (\n <Card key={stat.label}>\n <CardContent className=\"flex items-center gap-3 pt-6\">\n <stat.icon className={`h-5 w-5 ${stat.color}`} />\n <div>\n <p className=\"text-xs text-muted-foreground\">{stat.label}</p>\n <p className=\"text-lg font-bold\">{stat.value}</p>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n\n <div className=\"grid gap-6 lg:grid-cols-3\">\n <div className=\"lg:col-span-2 space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">About</CardTitle>\n </CardHeader>\n <CardContent className=\"text-sm text-muted-foreground space-y-3\">\n <p>\n With 12+ years of experience in HR consulting and technical recruitment, I\n specialize in helping companies build world-class teams. My focus areas include\n executive search, engineering team buildouts, and designing scalable hiring\n processes for high-growth companies.\n </p>\n <p>\n I&apos;ve placed 300+ candidates across startups and Fortune 500 companies, with a\n 98% client satisfaction rate and 95% offer acceptance rate.\n </p>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Portfolio</CardTitle>\n <CardDescription>Selected projects and outcomes</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {portfolio.map((item) => (\n <div key={item.title} className=\"rounded-lg border p-4 space-y-2\">\n <div className=\"flex items-center justify-between\">\n <p className=\"font-medium text-sm\">{item.title}</p>\n <Badge variant=\"secondary\" className=\"text-[10px]\">\n {item.duration}\n </Badge>\n </div>\n <p className=\"text-xs text-muted-foreground\">{item.client}</p>\n <p className=\"text-xs text-muted-foreground\">{item.description}</p>\n <div className=\"flex items-center gap-2 text-xs\">\n <ThumbsUp className=\"h-3 w-3 text-green-500\" />\n <span className=\"text-green-600 font-medium\">{item.outcome}</span>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Client Reviews</CardTitle>\n <CardDescription>What clients say about working with Maria</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {reviews.map((review) => (\n <div key={review.author} className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm font-medium\">{review.author}</p>\n <p className=\"text-xs text-muted-foreground\">\n {review.company} - {review.date}\n </p>\n </div>\n <div className=\"flex items-center gap-0.5\">\n {Array.from({ length: review.rating }).map((_, i) => (\n <Star key={i} className=\"h-3 w-3 text-yellow-500 fill-yellow-500\" />\n ))}\n </div>\n </div>\n <p className=\"text-xs text-muted-foreground\">{review.text}</p>\n <Separator />\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n\n <div className=\"space-y-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-sm\">Skills & Expertise</CardTitle>\n </CardHeader>\n <CardContent className=\"flex flex-wrap gap-1.5\">\n {skills.map((skill) => (\n <Badge key={skill} variant=\"secondary\" className=\"text-xs\">\n {skill}\n </Badge>\n ))}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-sm\">Certifications</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n {[\n 'SHRM-SCP (Senior Certified Professional)',\n 'PHR (Professional in Human Resources)',\n 'LinkedIn Certified Recruiter',\n 'Google Project Management',\n 'DEI in the Workplace - Cornell',\n ].map((cert) => (\n <div key={cert} className=\"flex items-center gap-2 text-xs\">\n <Award className=\"h-3 w-3 text-yellow-500 shrink-0\" />\n <span>{cert}</span>\n </div>\n ))}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-sm\">Contact</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n <div className=\"flex items-center gap-2 text-sm\">\n <Mail className=\"h-3 w-3 text-muted-foreground\" />\n <span>maria@talentpro.com</span>\n </div>\n <div className=\"flex items-center gap-2 text-sm\">\n <Phone className=\"h-3 w-3 text-muted-foreground\" />\n <span>+1-555-0301</span>\n </div>\n </CardContent>\n </Card>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"MarketplaceFreelancerProfilePagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n Separator,\n} from '@burdenoff/fe-libs/ui';\nimport {\n Award,\n Briefcase,\n Calendar,\n Clock,\n DollarSign,\n Globe,\n Mail,\n MapPin,\n MessageSquare,\n Phone,\n Star,\n ThumbsUp,\n} from 'lucide-react';\nimport { useMemo } from 'react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function MarketplaceFreelancerProfilePagePage() {\n const { marketplaceServices, clients, announcements } = useCrewFoundryStore();\n\n const skills = useMemo(\n () =>\n Array.from(new Set(marketplaceServices.flatMap((service) => service.skills))).slice(0, 12),\n [marketplaceServices]\n );\n\n const portfolio = useMemo(\n () =>\n marketplaceServices.slice(0, 3).map((service, index) => ({\n title: service.title,\n client: clients[index % Math.max(clients.length, 1)]?.name || service.provider,\n duration: service.deliveryTime,\n description: service.description,\n outcome: `${Math.round(service.rating * 20)}% satisfaction`,\n })),\n [clients, marketplaceServices]\n );\n\n const reviews = useMemo(\n () =>\n announcements.slice(0, 3).map((announcement, index) => ({\n author: announcement.author,\n company: clients[index % Math.max(clients.length, 1)]?.name || 'CrewFoundry Client',\n rating: Math.min(\n 5,\n Math.max(\n 4,\n Math.round(\n marketplaceServices[index % Math.max(marketplaceServices.length, 1)]?.rating || 4.5\n )\n )\n ),\n date: new Date(announcement.createdAt).toLocaleString('en-US', {\n month: 'short',\n year: 'numeric',\n }),\n text: announcement.content,\n })),\n [announcements, clients, marketplaceServices]\n );\n\n const avgRating =\n marketplaceServices.length > 0\n ? (\n marketplaceServices.reduce((sum, service) => sum + service.rating, 0) /\n marketplaceServices.length\n ).toFixed(1)\n : '4.8';\n\n const totalProjects = marketplaceServices.reduce((sum, service) => sum + service.reviews, 0);\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-start gap-6\">\n <div className=\"flex h-20 w-20 shrink-0 items-center justify-center rounded-full bg-action-primary-bg text-action-primary-text text-2xl font-semibold\">\n MS\n </div>\n <div className=\"flex-1 space-y-2\">\n <div className=\"flex items-center gap-3\">\n <h1 className=\"text-2xl font-semibold\">Maria Santos</h1>\n <Badge>Top Rated</Badge>\n <Badge variant=\"secondary\">Pro</Badge>\n </div>\n <p className=\"text-sm text-text-secondary\">\n Senior HR Consultant & Technical Recruiter\n </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\" /> crewfoundry.com\n </span>\n <span className=\"flex items-center gap-1\">\n <Clock className=\"h-3 w-3\" /> Member since 2022\n </span>\n <span className=\"flex items-center gap-1\">\n <Star className=\"h-3 w-3 text-yellow-500\" /> {avgRating} ({totalProjects} reviews)\n </span>\n </div>\n <div className=\"flex gap-2 pt-1\">\n <Button size=\"sm\">\n <MessageSquare className=\"h-3 w-3 mr-1\" /> Message\n </Button>\n <Button size=\"sm\" variant=\"outline\">\n <Calendar className=\"h-3 w-3 mr-1\" /> Book Consultation\n </Button>\n </div>\n </div>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n {[\n {\n icon: Briefcase,\n label: 'Projects',\n value: `${totalProjects}`,\n color: 'text-blue-500',\n },\n {\n icon: ThumbsUp,\n label: 'Success Rate',\n value: `${Math.min(99, Math.max(80, Math.round(Number(avgRating) * 20)))}%`,\n color: 'text-green-500',\n },\n {\n icon: DollarSign,\n label: 'Hourly Rate',\n value: `$${Math.round((marketplaceServices[0]?.price || 150) / 10)}`,\n color: 'text-purple-500',\n },\n {\n icon: Award,\n label: 'Certifications',\n value: `${Math.max(3, Math.round(skills.length / 2))}`,\n color: 'text-yellow-500',\n },\n ].map((stat) => (\n <Card key={stat.label}>\n <CardContent className=\"flex items-center gap-3 pt-6\">\n <stat.icon className={`h-5 w-5 ${stat.color}`} />\n <div>\n <p className=\"text-xs text-text-secondary\">{stat.label}</p>\n <p className=\"text-lg font-bold\">{stat.value}</p>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n\n <div className=\"grid gap-6 lg:grid-cols-3\">\n <div className=\"lg:col-span-2 space-y-6\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">About</CardTitle>\n </CardHeader>\n <CardContent className=\"text-sm text-text-secondary space-y-3\">\n <p>\n With 12+ years of experience in HR consulting and technical recruitment, I\n specialize in helping companies build world-class teams. My focus areas include\n executive search, engineering team buildouts, and designing scalable hiring\n processes for high-growth companies.\n </p>\n <p>\n I&apos;ve placed 300+ candidates across startups and Fortune 500 companies, with a\n 98% client satisfaction rate and 95% offer acceptance rate.\n </p>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Portfolio</CardTitle>\n <CardDescription>Selected projects and outcomes</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {portfolio.map((item) => (\n <div key={item.title} className=\"rounded-lg border p-4 space-y-2\">\n <div className=\"flex items-center justify-between\">\n <p className=\"font-medium text-sm\">{item.title}</p>\n <Badge variant=\"secondary\" className=\"text-[10px]\">\n {item.duration}\n </Badge>\n </div>\n <p className=\"text-xs text-text-secondary\">{item.client}</p>\n <p className=\"text-xs text-text-secondary\">{item.description}</p>\n <div className=\"flex items-center gap-2 text-xs\">\n <ThumbsUp className=\"h-3 w-3 text-green-500\" />\n <span className=\"text-green-600 font-medium\">{item.outcome}</span>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-base\">Client Reviews</CardTitle>\n <CardDescription>What clients say about working with Maria</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {reviews.map((review) => (\n <div key={review.author} className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm font-medium\">{review.author}</p>\n <p className=\"text-xs text-text-secondary\">\n {review.company} - {review.date}\n </p>\n </div>\n <div className=\"flex items-center gap-0.5\">\n {Array.from({ length: review.rating }).map((_, i) => (\n <Star key={i} className=\"h-3 w-3 text-yellow-500 fill-yellow-500\" />\n ))}\n </div>\n </div>\n <p className=\"text-xs text-text-secondary\">{review.text}</p>\n <Separator />\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n\n <div className=\"space-y-4\">\n <Card>\n <CardHeader>\n <CardTitle className=\"text-sm\">Skills & Expertise</CardTitle>\n </CardHeader>\n <CardContent className=\"flex flex-wrap gap-1.5\">\n {skills.map((skill) => (\n <Badge key={skill} variant=\"secondary\" className=\"text-xs\">\n {skill}\n </Badge>\n ))}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-sm\">Certifications</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n {[\n 'SHRM-SCP (Senior Certified Professional)',\n 'PHR (Professional in Human Resources)',\n 'LinkedIn Certified Recruiter',\n 'Google Project Management',\n 'DEI in the Workplace - Cornell',\n ].map((cert) => (\n <div key={cert} className=\"flex items-center gap-2 text-xs\">\n <Award className=\"h-3 w-3 text-yellow-500 shrink-0\" />\n <span>{cert}</span>\n </div>\n ))}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle className=\"text-sm\">Contact</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n <div className=\"flex items-center gap-2 text-sm\">\n <Mail className=\"h-3 w-3 text-text-secondary\" />\n <span>maria@talentpro.com</span>\n </div>\n <div className=\"flex items-center gap-2 text-sm\">\n <Phone className=\"h-3 w-3 text-text-secondary\" />\n <span>+1-555-0301</span>\n </div>\n </CardContent>\n </Card>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -16,7 +16,7 @@ function p() {
16
16
  className: "text-2xl font-semibold",
17
17
  children: h("crewfoundry.marketplace.title", "HR Services Marketplace")
18
18
  }), /* @__PURE__ */ i("p", {
19
- className: "text-sm text-muted-foreground",
19
+ className: "text-sm text-text-secondary",
20
20
  children: h("crewfoundry.marketplace.subtitle", "Find and hire professional HR service providers")
21
21
  })] }),
22
22
  /* @__PURE__ */ a("div", {
@@ -27,7 +27,7 @@ function p() {
27
27
  children: [/* @__PURE__ */ i(d, {
28
28
  className: "text-sm font-medium",
29
29
  children: h("crewfoundry.marketplace.stats.services", "Services")
30
- }), /* @__PURE__ */ i(t, { className: "h-4 w-4 text-muted-foreground" })]
30
+ }), /* @__PURE__ */ i(t, { className: "h-4 w-4 text-text-secondary" })]
31
31
  }), /* @__PURE__ */ i(c, { children: /* @__PURE__ */ i("div", {
32
32
  className: "text-2xl font-bold",
33
33
  children: m.length
@@ -47,7 +47,7 @@ function p() {
47
47
  children: [/* @__PURE__ */ i(d, {
48
48
  className: "text-sm font-medium",
49
49
  children: h("crewfoundry.marketplace.stats.totalReviews", "Total Reviews")
50
- }), /* @__PURE__ */ i(r, { className: "h-4 w-4 text-muted-foreground" })]
50
+ }), /* @__PURE__ */ i(r, { className: "h-4 w-4 text-text-secondary" })]
51
51
  }), /* @__PURE__ */ i(c, { children: /* @__PURE__ */ i("div", {
52
52
  className: "text-2xl font-bold",
53
53
  children: m.reduce((e, t) => e + t.reviews, 0)
@@ -82,7 +82,7 @@ function p() {
82
82
  /* @__PURE__ */ i(l, { children: e.provider })
83
83
  ] }), /* @__PURE__ */ a(c, { children: [
84
84
  /* @__PURE__ */ i("p", {
85
- className: "text-sm text-muted-foreground mb-3",
85
+ className: "text-sm text-text-secondary mb-3",
86
86
  children: e.description
87
87
  }),
88
88
  /* @__PURE__ */ i("div", {
@@ -101,7 +101,7 @@ function p() {
101
101
  "$",
102
102
  e.price.toLocaleString(),
103
103
  /* @__PURE__ */ a("span", {
104
- className: "text-xs font-normal text-muted-foreground",
104
+ className: "text-xs font-normal text-text-secondary",
105
105
  children: ["/", e.priceType]
106
106
  })
107
107
  ]
@@ -117,7 +117,7 @@ function p() {
117
117
  })]
118
118
  }),
119
119
  /* @__PURE__ */ a("p", {
120
- className: "text-xs text-muted-foreground mt-1",
120
+ className: "text-xs text-text-secondary mt-1",
121
121
  children: [
122
122
  h("crewfoundry.marketplace.card.delivery", "Delivery"),
123
123
  ": ",
@@ -1 +1 @@
1
- {"version":3,"file":"MarketplaceMarketplacePagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceMarketplacePagePage.tsx"],"sourcesContent":["import {\n Badge,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from '@burdenoff/fe-libs/ui';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { DollarSign, ShoppingBag, Star, TrendingUp, Users } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function MarketplaceMarketplacePagePage() {\n const { t: translate } = useI18n();\n const { marketplaceServices } = useCrewFoundryStore();\n const t = (key: string, fallback: string) => {\n const value = translate(key);\n return value === key ? fallback : value;\n };\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n {t('crewfoundry.marketplace.title', 'HR Services Marketplace')}\n </h1>\n <p className=\"text-sm text-muted-foreground\">\n {t('crewfoundry.marketplace.subtitle', 'Find and hire professional HR service providers')}\n </p>\n </div>\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\">\n {t('crewfoundry.marketplace.stats.services', 'Services')}\n </CardTitle>\n <ShoppingBag className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{marketplaceServices.length}</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\">\n {t('crewfoundry.marketplace.stats.avgRating', 'Avg Rating')}\n </CardTitle>\n <Star className=\"h-4 w-4 text-yellow-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">\n {(\n marketplaceServices.reduce((s, m) => s + m.rating, 0) / marketplaceServices.length\n ).toFixed(1)}\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\">\n {t('crewfoundry.marketplace.stats.totalReviews', 'Total Reviews')}\n </CardTitle>\n <Users className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">\n {marketplaceServices.reduce((s, m) => s + m.reviews, 0)}\n </div>\n </CardContent>\n </Card>\n </div>\n <h2 className=\"text-lg font-medium\">\n {t('crewfoundry.marketplace.featured.title', 'Featured Services')}\n </h2>\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-3\">\n {marketplaceServices.map((svc) => (\n <Card key={svc.id} className=\"hover:shadow-md transition-shadow cursor-pointer\">\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <Badge variant=\"outline\" className=\"text-[10px]\">\n {svc.category}\n </Badge>\n <Badge\n variant={svc.status === 'active' ? 'default' : 'secondary'}\n className=\"text-[10px]\"\n >\n {svc.status}\n </Badge>\n </div>\n <CardTitle className=\"text-base mt-2\">{svc.title}</CardTitle>\n <CardDescription>{svc.provider}</CardDescription>\n </CardHeader>\n <CardContent>\n <p className=\"text-sm text-muted-foreground mb-3\">{svc.description}</p>\n <div className=\"flex flex-wrap gap-1 mb-3\">\n {svc.skills.map((s) => (\n <Badge key={s} variant=\"outline\" className=\"text-[9px]\">\n {s}\n </Badge>\n ))}\n </div>\n <div className=\"flex items-center justify-between text-sm\">\n <span className=\"font-bold\">\n ${svc.price.toLocaleString()}\n <span className=\"text-xs font-normal text-muted-foreground\">\n /{svc.priceType}\n </span>\n </span>\n <span className=\"flex items-center gap-1\">\n <Star className=\"h-3 w-3 text-yellow-500\" />\n {svc.rating} ({svc.reviews})\n </span>\n </div>\n <p className=\"text-xs text-muted-foreground mt-1\">\n {t('crewfoundry.marketplace.card.delivery', 'Delivery')}: {svc.deliveryTime}\n </p>\n </CardContent>\n </Card>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"MarketplaceMarketplacePagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceMarketplacePagePage.tsx"],"sourcesContent":["import {\n Badge,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from '@burdenoff/fe-libs/ui';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { DollarSign, ShoppingBag, Star, TrendingUp, Users } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function MarketplaceMarketplacePagePage() {\n const { t: translate } = useI18n();\n const { marketplaceServices } = useCrewFoundryStore();\n const t = (key: string, fallback: string) => {\n const value = translate(key);\n return value === key ? fallback : value;\n };\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n {t('crewfoundry.marketplace.title', 'HR Services Marketplace')}\n </h1>\n <p className=\"text-sm text-text-secondary\">\n {t('crewfoundry.marketplace.subtitle', 'Find and hire professional HR service providers')}\n </p>\n </div>\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\">\n {t('crewfoundry.marketplace.stats.services', 'Services')}\n </CardTitle>\n <ShoppingBag className=\"h-4 w-4 text-text-secondary\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{marketplaceServices.length}</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\">\n {t('crewfoundry.marketplace.stats.avgRating', 'Avg Rating')}\n </CardTitle>\n <Star className=\"h-4 w-4 text-yellow-500\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">\n {(\n marketplaceServices.reduce((s, m) => s + m.rating, 0) / marketplaceServices.length\n ).toFixed(1)}\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\">\n {t('crewfoundry.marketplace.stats.totalReviews', 'Total Reviews')}\n </CardTitle>\n <Users className=\"h-4 w-4 text-text-secondary\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">\n {marketplaceServices.reduce((s, m) => s + m.reviews, 0)}\n </div>\n </CardContent>\n </Card>\n </div>\n <h2 className=\"text-lg font-medium\">\n {t('crewfoundry.marketplace.featured.title', 'Featured Services')}\n </h2>\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-3\">\n {marketplaceServices.map((svc) => (\n <Card key={svc.id} className=\"hover:shadow-md transition-shadow cursor-pointer\">\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <Badge variant=\"outline\" className=\"text-[10px]\">\n {svc.category}\n </Badge>\n <Badge\n variant={svc.status === 'active' ? 'default' : 'secondary'}\n className=\"text-[10px]\"\n >\n {svc.status}\n </Badge>\n </div>\n <CardTitle className=\"text-base mt-2\">{svc.title}</CardTitle>\n <CardDescription>{svc.provider}</CardDescription>\n </CardHeader>\n <CardContent>\n <p className=\"text-sm text-text-secondary mb-3\">{svc.description}</p>\n <div className=\"flex flex-wrap gap-1 mb-3\">\n {svc.skills.map((s) => (\n <Badge key={s} variant=\"outline\" className=\"text-[9px]\">\n {s}\n </Badge>\n ))}\n </div>\n <div className=\"flex items-center justify-between text-sm\">\n <span className=\"font-bold\">\n ${svc.price.toLocaleString()}\n <span className=\"text-xs font-normal text-text-secondary\">\n /{svc.priceType}\n </span>\n </span>\n <span className=\"flex items-center gap-1\">\n <Star className=\"h-3 w-3 text-yellow-500\" />\n {svc.rating} ({svc.reviews})\n </span>\n </div>\n <p className=\"text-xs text-text-secondary mt-1\">\n {t('crewfoundry.marketplace.card.delivery', 'Delivery')}: {svc.deliveryTime}\n </p>\n </CardContent>\n </Card>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}