@burdenoff/microfe-crewfoundry 2026.704.3 → 2026.704.5

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 (101) hide show
  1. package/dist/crewfoundry/pages/AdminAdminPagePage.js +76 -75
  2. package/dist/crewfoundry/pages/AdminAdminPagePage.js.map +1 -1
  3. package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js +118 -117
  4. package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js.map +1 -1
  5. package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js +115 -114
  6. package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js.map +1 -1
  7. package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js +105 -104
  8. package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js.map +1 -1
  9. package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js +52 -51
  10. package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js.map +1 -1
  11. package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js +94 -93
  12. package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js.map +1 -1
  13. package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js +97 -96
  14. package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js.map +1 -1
  15. package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js +68 -67
  16. package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js.map +1 -1
  17. package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js +96 -95
  18. package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js.map +1 -1
  19. package/dist/crewfoundry/pages/DashboardDashboardPagePage.js +153 -152
  20. package/dist/crewfoundry/pages/DashboardDashboardPagePage.js.map +1 -1
  21. package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js +111 -110
  22. package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js.map +1 -1
  23. package/dist/crewfoundry/pages/HiringApplicationsPagePage.js +77 -76
  24. package/dist/crewfoundry/pages/HiringApplicationsPagePage.js.map +1 -1
  25. package/dist/crewfoundry/pages/HiringCandidatesPagePage.js +80 -79
  26. package/dist/crewfoundry/pages/HiringCandidatesPagePage.js.map +1 -1
  27. package/dist/crewfoundry/pages/HiringCreateJobPagePage.js +1 -1
  28. package/dist/crewfoundry/pages/HiringCreateJobPagePage.js.map +1 -1
  29. package/dist/crewfoundry/pages/HiringInterviewsPagePage.js +102 -101
  30. package/dist/crewfoundry/pages/HiringInterviewsPagePage.js.map +1 -1
  31. package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js +126 -125
  32. package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js.map +1 -1
  33. package/dist/crewfoundry/pages/HiringJobsPagePage.js +64 -63
  34. package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
  35. package/dist/crewfoundry/pages/HrDepartmentsPagePage.js +96 -95
  36. package/dist/crewfoundry/pages/HrDepartmentsPagePage.js.map +1 -1
  37. package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js +129 -127
  38. package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js.map +1 -1
  39. package/dist/crewfoundry/pages/HrPayrollPagePage.js +118 -117
  40. package/dist/crewfoundry/pages/HrPayrollPagePage.js.map +1 -1
  41. package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js +123 -122
  42. package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js.map +1 -1
  43. package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js +1 -1
  44. package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js.map +1 -1
  45. package/dist/crewfoundry/pages/LearningCertificatesPagePage.js +1 -1
  46. package/dist/crewfoundry/pages/LearningCertificatesPagePage.js.map +1 -1
  47. package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js +77 -76
  48. package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js.map +1 -1
  49. package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js +49 -48
  50. package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js.map +1 -1
  51. package/dist/crewfoundry/pages/LearningCoursesPagePage.js +62 -61
  52. package/dist/crewfoundry/pages/LearningCoursesPagePage.js.map +1 -1
  53. package/dist/crewfoundry/pages/LearningLearningPagePage.js +72 -71
  54. package/dist/crewfoundry/pages/LearningLearningPagePage.js.map +1 -1
  55. package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js +70 -69
  56. package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js.map +1 -1
  57. package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js +57 -56
  58. package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js.map +1 -1
  59. package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js +58 -57
  60. package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js.map +1 -1
  61. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js +122 -121
  62. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js.map +1 -1
  63. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js +2 -2
  64. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js.map +1 -1
  65. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js +70 -69
  66. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js.map +1 -1
  67. package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js +41 -40
  68. package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js.map +1 -1
  69. package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js +65 -64
  70. package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js.map +1 -1
  71. package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js +75 -74
  72. package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js.map +1 -1
  73. package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js +4 -4
  74. package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js.map +1 -1
  75. package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js +60 -59
  76. package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js.map +1 -1
  77. package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js +53 -52
  78. package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js.map +1 -1
  79. package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js +37 -36
  80. package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js.map +1 -1
  81. package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js +1 -1
  82. package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js.map +1 -1
  83. package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js +126 -125
  84. package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js.map +1 -1
  85. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js +62 -61
  86. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js.map +1 -1
  87. package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js +50 -49
  88. package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js.map +1 -1
  89. package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js +72 -71
  90. package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js.map +1 -1
  91. package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js +40 -39
  92. package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js.map +1 -1
  93. package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js +134 -133
  94. package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js.map +1 -1
  95. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js +60 -59
  96. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js.map +1 -1
  97. package/dist/crewfoundry/store/crewfoundryStore.js +177 -146
  98. package/dist/crewfoundry/store/crewfoundryStore.js.map +1 -1
  99. package/dist/crewfoundry/utils/formatEnumLabel.js +8 -0
  100. package/dist/crewfoundry/utils/formatEnumLabel.js.map +1 -0
  101. package/package.json +1 -1
@@ -1,120 +1,121 @@
1
1
  import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
2
- import { useMemo as t } from "react";
3
- import { DollarSign as n, TrendingUp as r, Wallet as i } from "lucide-react";
4
- import { jsx as a, jsxs as o } from "react/jsx-runtime";
5
- import { Badge as s, Card as c, CardContent as l, CardHeader as u, CardTitle as d, GlassCard as f, GradientText as p, PagePurpose as m } from "@burdenoff/fe-libs/ui";
2
+ import { formatEnumLabel as t } from "../utils/formatEnumLabel.js";
3
+ import { useMemo as n } from "react";
4
+ import { DollarSign as r, TrendingUp as i, Wallet as a } from "lucide-react";
5
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
6
+ import { Badge as c, Card as l, CardContent as u, CardHeader as d, CardTitle as f, GlassCard as p, GradientText as m, PagePurpose as h } from "@burdenoff/fe-libs/ui";
6
7
  //#region src/crewfoundry/pages/MarketplaceEarningsPagePage.tsx
7
- var h = (e) => {
8
+ var g = (e) => {
8
9
  let t = new Date(e);
9
10
  return Number.isNaN(t.getTime()) ? "N/A" : t.toLocaleString("en-US", { month: "short" });
10
- }, g = (e) => {
11
+ }, _ = (e) => {
11
12
  let t = new Date(e);
12
13
  return Number.isNaN(t.getTime()) ? "Unknown" : t.toISOString().split("T")[0];
13
14
  };
14
- function _() {
15
- let { invoices: _ } = e(), v = t(() => _.slice(0, 12).map((e) => ({
15
+ function v() {
16
+ let { invoices: v } = e(), y = n(() => v.slice(0, 12).map((e) => ({
16
17
  id: e.id,
17
18
  client: e.clientName,
18
19
  amount: e.amount,
19
- date: g(e.issueDate),
20
+ date: _(e.issueDate),
20
21
  status: e.status === "paid" ? "completed" : "pending"
21
- })), [_]), y = t(() => v.slice(0, 6).map((e, t) => {
22
- let n = v.filter((t) => h(t.date) === h(e.date)), r = n.reduce((e, t) => e + t.amount, 0);
22
+ })), [v]), b = n(() => y.slice(0, 6).map((e, t) => {
23
+ let n = y.filter((t) => g(t.date) === g(e.date)), r = n.reduce((e, t) => e + t.amount, 0);
23
24
  return {
24
- month: h(e.date) || `M${t + 1}`,
25
+ month: g(e.date) || `M${t + 1}`,
25
26
  amount: r,
26
27
  orders: n.length
27
28
  };
28
- }), [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);
29
- return /* @__PURE__ */ o("div", {
29
+ }), [y]), x = b.reduce((e, t) => e + t.amount, 0), S = Math.max(1, ...b.map((e) => e.amount)), C = b.reduce((e, t) => e + t.orders, 0), w = y.filter((e) => e.status === "pending").reduce((e, t) => e + t.amount, 0);
30
+ return /* @__PURE__ */ s("div", {
30
31
  className: "space-y-6 p-6",
31
32
  children: [
32
- /* @__PURE__ */ o("div", { children: [
33
- /* @__PURE__ */ a("h1", {
33
+ /* @__PURE__ */ s("div", { children: [
34
+ /* @__PURE__ */ o("h1", {
34
35
  className: "text-2xl font-semibold",
35
- children: /* @__PURE__ */ a(p, { children: "Earnings" })
36
+ children: /* @__PURE__ */ o(m, { children: "Earnings" })
36
37
  }),
37
- /* @__PURE__ */ a("p", {
38
+ /* @__PURE__ */ o("p", {
38
39
  className: "text-sm text-text-secondary",
39
40
  children: "Revenue from marketplace services"
40
41
  }),
41
- /* @__PURE__ */ a(m, {
42
+ /* @__PURE__ */ o(h, {
42
43
  className: "mt-1",
43
44
  children: "Track what you've earned on the marketplace — payouts, pending balances, and earning trends so you always know where you stand."
44
45
  })
45
46
  ] }),
46
- /* @__PURE__ */ o("div", {
47
+ /* @__PURE__ */ s("div", {
47
48
  className: "grid gap-4 md:grid-cols-3",
48
49
  children: [
49
- /* @__PURE__ */ o(f, {
50
+ /* @__PURE__ */ s(p, {
50
51
  treatment: "glass",
51
52
  glow: !0,
52
53
  className: "border-border-seam",
53
- children: [/* @__PURE__ */ o(u, {
54
+ children: [/* @__PURE__ */ s(d, {
54
55
  className: "flex flex-row items-center justify-between space-y-0 pb-2",
55
- children: [/* @__PURE__ */ a(d, {
56
+ children: [/* @__PURE__ */ o(f, {
56
57
  className: "text-sm font-medium",
57
58
  children: "Total Earnings"
58
- }), /* @__PURE__ */ a(n, { className: "h-4 w-4 text-text-secondary" })]
59
- }), /* @__PURE__ */ o(l, { children: [/* @__PURE__ */ o("div", {
59
+ }), /* @__PURE__ */ o(r, { className: "h-4 w-4 text-text-secondary" })]
60
+ }), /* @__PURE__ */ s(u, { children: [/* @__PURE__ */ s("div", {
60
61
  className: "text-2xl font-bold tabular-nums",
61
- children: ["$", b.toLocaleString()]
62
- }), /* @__PURE__ */ o("p", {
62
+ children: ["$", x.toLocaleString()]
63
+ }), /* @__PURE__ */ s("p", {
63
64
  className: "text-xs text-text-secondary",
64
65
  children: [
65
66
  "Across ",
66
- S,
67
+ C,
67
68
  " paid orders"
68
69
  ]
69
70
  })] })]
70
71
  }),
71
- /* @__PURE__ */ o(f, {
72
+ /* @__PURE__ */ s(p, {
72
73
  treatment: "metric",
73
74
  className: "border-border-seam",
74
- children: [/* @__PURE__ */ o(u, {
75
+ children: [/* @__PURE__ */ s(d, {
75
76
  className: "flex flex-row items-center justify-between space-y-0 pb-2",
76
- children: [/* @__PURE__ */ a(d, {
77
+ children: [/* @__PURE__ */ o(f, {
77
78
  className: "text-sm font-medium",
78
79
  children: "Avg Order Value"
79
- }), /* @__PURE__ */ a(r, { className: "h-4 w-4 text-text-secondary" })]
80
- }), /* @__PURE__ */ a(l, { children: /* @__PURE__ */ o("div", {
80
+ }), /* @__PURE__ */ o(i, { className: "h-4 w-4 text-text-secondary" })]
81
+ }), /* @__PURE__ */ o(u, { children: /* @__PURE__ */ s("div", {
81
82
  className: "text-2xl font-bold tabular-nums",
82
- children: ["$", Math.round(b / Math.max(S, 1)).toLocaleString()]
83
+ children: ["$", Math.round(x / Math.max(C, 1)).toLocaleString()]
83
84
  }) })]
84
85
  }),
85
- /* @__PURE__ */ o(f, {
86
+ /* @__PURE__ */ s(p, {
86
87
  treatment: "metric",
87
88
  className: "border-border-seam",
88
- children: [/* @__PURE__ */ o(u, {
89
+ children: [/* @__PURE__ */ s(d, {
89
90
  className: "flex flex-row items-center justify-between space-y-0 pb-2",
90
- children: [/* @__PURE__ */ a(d, {
91
+ children: [/* @__PURE__ */ o(f, {
91
92
  className: "text-sm font-medium",
92
93
  children: "Pending"
93
- }), /* @__PURE__ */ a(i, { className: "h-4 w-4 text-status-warning-text" })]
94
- }), /* @__PURE__ */ a(l, { children: /* @__PURE__ */ o("div", {
94
+ }), /* @__PURE__ */ o(a, { className: "h-4 w-4 text-status-warning-text" })]
95
+ }), /* @__PURE__ */ o(u, { children: /* @__PURE__ */ s("div", {
95
96
  className: "text-2xl font-bold tabular-nums",
96
- children: ["$", C.toLocaleString()]
97
+ children: ["$", w.toLocaleString()]
97
98
  }) })]
98
99
  })
99
100
  ]
100
101
  }),
101
- /* @__PURE__ */ o(c, { children: [/* @__PURE__ */ a(u, { children: /* @__PURE__ */ a(d, { children: "Earnings Trend" }) }), /* @__PURE__ */ a(l, {
102
+ /* @__PURE__ */ s(l, { children: [/* @__PURE__ */ o(d, { children: /* @__PURE__ */ o(f, { children: "Earnings Trend" }) }), /* @__PURE__ */ o(u, {
102
103
  className: "space-y-3",
103
- children: y.map((e, t) => /* @__PURE__ */ o("div", {
104
+ children: b.map((e, t) => /* @__PURE__ */ s("div", {
104
105
  className: "flex items-center gap-3",
105
106
  children: [
106
- /* @__PURE__ */ a("span", {
107
+ /* @__PURE__ */ o("span", {
107
108
  className: "w-10 text-sm text-text-secondary",
108
109
  children: e.month
109
110
  }),
110
- /* @__PURE__ */ a("div", {
111
+ /* @__PURE__ */ o("div", {
111
112
  className: "h-4 flex-1 overflow-hidden rounded bg-bg-sunken",
112
- children: /* @__PURE__ */ a("div", {
113
+ children: /* @__PURE__ */ o("div", {
113
114
  className: "h-4 rounded bg-action-primary-bg",
114
- style: { width: `${Math.round(e.amount / x * 100)}%` }
115
+ style: { width: `${Math.round(e.amount / S * 100)}%` }
115
116
  })
116
117
  }),
117
- /* @__PURE__ */ o("span", {
118
+ /* @__PURE__ */ s("span", {
118
119
  className: "w-16 text-right text-sm font-medium",
119
120
  children: [
120
121
  "$",
@@ -122,7 +123,7 @@ function _() {
122
123
  "K"
123
124
  ]
124
125
  }),
125
- /* @__PURE__ */ o(s, {
126
+ /* @__PURE__ */ s(c, {
126
127
  variant: "outline",
127
128
  className: "text-[10px]",
128
129
  children: [e.orders, " orders"]
@@ -130,25 +131,25 @@ function _() {
130
131
  ]
131
132
  }, `${e.month}-${t}`))
132
133
  })] }),
133
- /* @__PURE__ */ o(c, { children: [/* @__PURE__ */ a(u, { children: /* @__PURE__ */ a(d, { children: "Recent Payments" }) }), /* @__PURE__ */ a(l, {
134
+ /* @__PURE__ */ s(l, { children: [/* @__PURE__ */ o(d, { children: /* @__PURE__ */ o(f, { children: "Recent Payments" }) }), /* @__PURE__ */ o(u, {
134
135
  className: "space-y-3",
135
- children: v.map((e) => /* @__PURE__ */ o("div", {
136
+ children: y.map((e) => /* @__PURE__ */ s("div", {
136
137
  className: "flex items-center justify-between rounded border p-3",
137
- children: [/* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("p", {
138
+ children: [/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("p", {
138
139
  className: "text-sm font-medium",
139
140
  children: e.client
140
- }), /* @__PURE__ */ a("p", {
141
+ }), /* @__PURE__ */ o("p", {
141
142
  className: "text-xs text-text-secondary",
142
143
  children: e.date
143
- })] }), /* @__PURE__ */ o("div", {
144
+ })] }), /* @__PURE__ */ s("div", {
144
145
  className: "flex items-center gap-2",
145
- children: [/* @__PURE__ */ o("span", {
146
+ children: [/* @__PURE__ */ s("span", {
146
147
  className: "text-sm font-bold",
147
148
  children: ["$", e.amount.toLocaleString()]
148
- }), /* @__PURE__ */ a(s, {
149
+ }), /* @__PURE__ */ o(c, {
149
150
  variant: e.status === "completed" ? "default" : "secondary",
150
151
  className: "text-[10px]",
151
- children: e.status
152
+ children: t(e.status)
152
153
  })]
153
154
  })]
154
155
  }, e.id))
@@ -157,6 +158,6 @@ function _() {
157
158
  });
158
159
  }
159
160
  //#endregion
160
- export { _ as MarketplaceEarningsPagePage };
161
+ export { v as MarketplaceEarningsPagePage };
161
162
 
162
163
  //# 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 {\n Badge,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n GlassCard,\n GradientText,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { 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 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 } = useCrewFoundryStore();\n\n const recentPayments = useMemo<PaymentItem[]>(() => {\n return invoices.slice(0, 12).map((invoice) => ({\n id: invoice.id,\n client: invoice.clientName,\n amount: invoice.amount,\n date: isoDate(invoice.issueDate),\n status: invoice.status === 'paid' ? 'completed' : 'pending',\n }));\n }, [invoices]);\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\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 <PagePurpose className=\"mt-1\">\n Track what you&apos;ve earned on the marketplace — payouts, pending balances, and earning\n trends so you always know where you stand.\n </PagePurpose>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-3\">\n <GlassCard treatment=\"glass\" glow className=\"border-border-seam\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">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 <p className=\"text-xs text-text-secondary\">Across {totalOrders} paid orders</p>\n </CardContent>\n </GlassCard>\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">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\">{payment.date}</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 PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { DollarSign, TrendingUp, Wallet } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\nimport { formatEnumLabel } from '../utils/formatEnumLabel';\n\ntype EarningPoint = {\n month: string;\n amount: number;\n orders: number;\n};\n\ntype PaymentItem = {\n id: string;\n client: 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 } = useCrewFoundryStore();\n\n const recentPayments = useMemo<PaymentItem[]>(() => {\n return invoices.slice(0, 12).map((invoice) => ({\n id: invoice.id,\n client: invoice.clientName,\n amount: invoice.amount,\n date: isoDate(invoice.issueDate),\n status: invoice.status === 'paid' ? 'completed' : 'pending',\n }));\n }, [invoices]);\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\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 <PagePurpose className=\"mt-1\">\n Track what you&apos;ve earned on the marketplace — payouts, pending balances, and earning\n trends so you always know where you stand.\n </PagePurpose>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-3\">\n <GlassCard treatment=\"glass\" glow className=\"border-border-seam\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">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 <p className=\"text-xs text-text-secondary\">Across {totalOrders} paid orders</p>\n </CardContent>\n </GlassCard>\n <GlassCard treatment=\"metric\" className=\"border-border-seam\">\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">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\">{payment.date}</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 {formatEnumLabel(payment.status)}\n </Badge>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}