@burdenoff/microfe-crewfoundry 2026.704.3 → 2026.704.4

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 (89) 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 +107 -106
  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/HiringInterviewsPagePage.js +102 -101
  28. package/dist/crewfoundry/pages/HiringInterviewsPagePage.js.map +1 -1
  29. package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js +126 -125
  30. package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js.map +1 -1
  31. package/dist/crewfoundry/pages/HiringJobsPagePage.js +64 -63
  32. package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
  33. package/dist/crewfoundry/pages/HrDepartmentsPagePage.js +96 -95
  34. package/dist/crewfoundry/pages/HrDepartmentsPagePage.js.map +1 -1
  35. package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js +127 -126
  36. package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js.map +1 -1
  37. package/dist/crewfoundry/pages/HrPayrollPagePage.js +118 -117
  38. package/dist/crewfoundry/pages/HrPayrollPagePage.js.map +1 -1
  39. package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js +123 -122
  40. package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js.map +1 -1
  41. package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js +77 -76
  42. package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js.map +1 -1
  43. package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js +49 -48
  44. package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js.map +1 -1
  45. package/dist/crewfoundry/pages/LearningCoursesPagePage.js +62 -61
  46. package/dist/crewfoundry/pages/LearningCoursesPagePage.js.map +1 -1
  47. package/dist/crewfoundry/pages/LearningLearningPagePage.js +72 -71
  48. package/dist/crewfoundry/pages/LearningLearningPagePage.js.map +1 -1
  49. package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js +70 -69
  50. package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js.map +1 -1
  51. package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js +57 -56
  52. package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js.map +1 -1
  53. package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js +58 -57
  54. package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js.map +1 -1
  55. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js +122 -121
  56. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js.map +1 -1
  57. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js +70 -69
  58. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js.map +1 -1
  59. package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js +41 -40
  60. package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js.map +1 -1
  61. package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js +65 -64
  62. package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js.map +1 -1
  63. package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js +75 -74
  64. package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js.map +1 -1
  65. package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js +60 -59
  66. package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js.map +1 -1
  67. package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js +53 -52
  68. package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js.map +1 -1
  69. package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js +37 -36
  70. package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js.map +1 -1
  71. package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js +126 -125
  72. package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js.map +1 -1
  73. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js +62 -61
  74. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js.map +1 -1
  75. package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js +50 -49
  76. package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js.map +1 -1
  77. package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js +72 -71
  78. package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js.map +1 -1
  79. package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js +40 -39
  80. package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js.map +1 -1
  81. package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js +130 -129
  82. package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js.map +1 -1
  83. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js +60 -59
  84. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js.map +1 -1
  85. package/dist/crewfoundry/store/crewfoundryStore.js +177 -146
  86. package/dist/crewfoundry/store/crewfoundryStore.js.map +1 -1
  87. package/dist/crewfoundry/utils/formatEnumLabel.js +8 -0
  88. package/dist/crewfoundry/utils/formatEnumLabel.js.map +1 -0
  89. package/package.json +1 -1
@@ -1,143 +1,144 @@
1
1
  import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
2
- import { ShoppingBag as t, Star as n, Users as r } from "lucide-react";
3
- import { useNavigate as i } from "react-router-dom";
4
- import { jsx as a, jsxs as o } from "react/jsx-runtime";
5
- import { Badge as s, Card as c, CardContent as l, CardDescription as u, CardHeader as d, CardTitle as f, GlassCard as p, GradientText as m, PagePurpose as h, Pagination as g } from "@burdenoff/fe-libs/ui";
6
- import { usePagination as _ } from "@burdenoff/fe-libs/shared/hooks";
7
- import { useI18n as v } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
2
+ import { formatEnumLabel as t } from "../utils/formatEnumLabel.js";
3
+ import { ShoppingBag as n, Star as r, Users as i } from "lucide-react";
4
+ import { useNavigate as a } from "react-router-dom";
5
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
6
+ import { Badge as c, Card as l, CardContent as u, CardDescription as d, CardHeader as f, CardTitle as p, GlassCard as m, GradientText as h, PagePurpose as g, Pagination as _ } from "@burdenoff/fe-libs/ui";
7
+ import { usePagination as v } from "@burdenoff/fe-libs/shared/hooks";
8
+ import { useI18n as y } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
8
9
  //#region src/crewfoundry/pages/MarketplaceMarketplacePagePage.tsx
9
- function y() {
10
- let { t: y } = v(), b = i(), { marketplaceServices: x } = e(), S = (e, t) => {
11
- let n = y(e);
10
+ function b() {
11
+ let { t: b } = y(), x = a(), { marketplaceServices: S } = e(), C = (e, t) => {
12
+ let n = b(e);
12
13
  return n === e ? t : n;
13
- }, { page: C, pageSize: w, offset: T, setPage: E } = _({ initialPageSize: 9 }), D = x.length > 0 ? (x.reduce((e, t) => e + t.rating, 0) / x.length).toFixed(1) : "0.0", O = x.slice(T, T + w), k = (e) => b(`../../marketplace/service-details-page?id=${e}`);
14
- return /* @__PURE__ */ o("div", {
14
+ }, { page: w, pageSize: T, offset: E, setPage: D } = v({ initialPageSize: 9 }), O = S.length > 0 ? (S.reduce((e, t) => e + t.rating, 0) / S.length).toFixed(1) : "0.0", k = S.slice(E, E + T), A = (e) => x(`../../marketplace/service-details-page?id=${e}`);
15
+ return /* @__PURE__ */ s("div", {
15
16
  className: "space-y-6 p-6",
16
17
  children: [
17
- /* @__PURE__ */ o("div", { children: [
18
- /* @__PURE__ */ a("h1", {
18
+ /* @__PURE__ */ s("div", { children: [
19
+ /* @__PURE__ */ o("h1", {
19
20
  className: "text-2xl font-semibold",
20
- children: /* @__PURE__ */ a(m, { children: S("crewfoundry.marketplace.title", "HR Services Marketplace") })
21
+ children: /* @__PURE__ */ o(h, { children: C("crewfoundry.marketplace.title", "HR Services Marketplace") })
21
22
  }),
22
- /* @__PURE__ */ a("p", {
23
+ /* @__PURE__ */ o("p", {
23
24
  className: "text-sm text-text-secondary",
24
- children: S("crewfoundry.marketplace.subtitle", "Find and hire professional HR service providers")
25
+ children: C("crewfoundry.marketplace.subtitle", "Find and hire professional HR service providers")
25
26
  }),
26
- /* @__PURE__ */ a(h, {
27
+ /* @__PURE__ */ o(g, {
27
28
  className: "mt-1",
28
29
  children: "Discover freelancers and services for your projects — browse the marketplace to find and hire the right talent on demand."
29
30
  })
30
31
  ] }),
31
- /* @__PURE__ */ o("div", {
32
+ /* @__PURE__ */ s("div", {
32
33
  className: "grid gap-4 md:grid-cols-3",
33
34
  children: [
34
- /* @__PURE__ */ o(p, {
35
+ /* @__PURE__ */ s(m, {
35
36
  treatment: "glass",
36
37
  glow: !0,
37
38
  className: "border-border-seam",
38
- children: [/* @__PURE__ */ o(d, {
39
+ children: [/* @__PURE__ */ s(f, {
39
40
  className: "flex flex-row items-center justify-between space-y-0 pb-2",
40
- children: [/* @__PURE__ */ a(f, {
41
+ children: [/* @__PURE__ */ o(p, {
41
42
  className: "text-sm font-medium",
42
- children: S("crewfoundry.marketplace.stats.services", "Services")
43
- }), /* @__PURE__ */ a(t, { className: "h-4 w-4 text-text-secondary" })]
44
- }), /* @__PURE__ */ a(l, { children: /* @__PURE__ */ a("div", {
43
+ children: C("crewfoundry.marketplace.stats.services", "Services")
44
+ }), /* @__PURE__ */ o(n, { className: "h-4 w-4 text-text-secondary" })]
45
+ }), /* @__PURE__ */ o(u, { children: /* @__PURE__ */ o("div", {
45
46
  className: "text-2xl font-bold tabular-nums",
46
- children: x.length
47
+ children: S.length
47
48
  }) })]
48
49
  }),
49
- /* @__PURE__ */ o(p, {
50
+ /* @__PURE__ */ s(m, {
50
51
  treatment: "metric",
51
52
  className: "border-border-seam",
52
- children: [/* @__PURE__ */ o(d, {
53
+ children: [/* @__PURE__ */ s(f, {
53
54
  className: "flex flex-row items-center justify-between space-y-0 pb-2",
54
- children: [/* @__PURE__ */ a(f, {
55
+ children: [/* @__PURE__ */ o(p, {
55
56
  className: "text-sm font-medium",
56
- children: S("crewfoundry.marketplace.stats.avgRating", "Avg Rating")
57
- }), /* @__PURE__ */ a(n, { className: "h-4 w-4 text-status-warning-text" })]
58
- }), /* @__PURE__ */ a(l, { children: /* @__PURE__ */ a("div", {
57
+ children: C("crewfoundry.marketplace.stats.avgRating", "Avg Rating")
58
+ }), /* @__PURE__ */ o(r, { className: "h-4 w-4 text-status-warning-text" })]
59
+ }), /* @__PURE__ */ o(u, { children: /* @__PURE__ */ o("div", {
59
60
  className: "text-2xl font-bold tabular-nums",
60
- children: D
61
+ children: O
61
62
  }) })]
62
63
  }),
63
- /* @__PURE__ */ o(p, {
64
+ /* @__PURE__ */ s(m, {
64
65
  treatment: "metric",
65
66
  className: "border-border-seam",
66
- children: [/* @__PURE__ */ o(d, {
67
+ children: [/* @__PURE__ */ s(f, {
67
68
  className: "flex flex-row items-center justify-between space-y-0 pb-2",
68
- children: [/* @__PURE__ */ a(f, {
69
+ children: [/* @__PURE__ */ o(p, {
69
70
  className: "text-sm font-medium",
70
- children: S("crewfoundry.marketplace.stats.totalReviews", "Total Reviews")
71
- }), /* @__PURE__ */ a(r, { className: "h-4 w-4 text-text-secondary" })]
72
- }), /* @__PURE__ */ a(l, { children: /* @__PURE__ */ a("div", {
71
+ children: C("crewfoundry.marketplace.stats.totalReviews", "Total Reviews")
72
+ }), /* @__PURE__ */ o(i, { className: "h-4 w-4 text-text-secondary" })]
73
+ }), /* @__PURE__ */ o(u, { children: /* @__PURE__ */ o("div", {
73
74
  className: "text-2xl font-bold tabular-nums",
74
- children: x.reduce((e, t) => e + t.reviews, 0)
75
+ children: S.reduce((e, t) => e + t.reviews, 0)
75
76
  }) })]
76
77
  })
77
78
  ]
78
79
  }),
79
- /* @__PURE__ */ a("h2", {
80
+ /* @__PURE__ */ o("h2", {
80
81
  className: "text-lg font-medium",
81
- children: S("crewfoundry.marketplace.featured.title", "Featured Services")
82
+ children: C("crewfoundry.marketplace.featured.title", "Featured Services")
82
83
  }),
83
- /* @__PURE__ */ a("div", {
84
+ /* @__PURE__ */ o("div", {
84
85
  className: "grid gap-4 md:grid-cols-2 lg:grid-cols-3",
85
- children: O.map((e) => /* @__PURE__ */ o(c, {
86
+ children: k.map((e) => /* @__PURE__ */ s(l, {
86
87
  role: "button",
87
88
  tabIndex: 0,
88
89
  "aria-label": `View details for ${e.title}`,
89
- onClick: () => k(e.id),
90
+ onClick: () => A(e.id),
90
91
  onKeyDown: (t) => {
91
- (t.key === "Enter" || t.key === " ") && (t.preventDefault(), k(e.id));
92
+ (t.key === "Enter" || t.key === " ") && (t.preventDefault(), A(e.id));
92
93
  },
93
94
  className: "hover:shadow-md transition-shadow cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-action-primary-bg",
94
- children: [/* @__PURE__ */ o(d, { children: [
95
- /* @__PURE__ */ o("div", {
95
+ children: [/* @__PURE__ */ s(f, { children: [
96
+ /* @__PURE__ */ s("div", {
96
97
  className: "flex items-center justify-between",
97
- children: [/* @__PURE__ */ a(s, {
98
+ children: [/* @__PURE__ */ o(c, {
98
99
  variant: "outline",
99
100
  className: "text-[10px]",
100
101
  children: e.category
101
- }), /* @__PURE__ */ a(s, {
102
+ }), /* @__PURE__ */ o(c, {
102
103
  variant: e.status === "active" ? "default" : "secondary",
103
104
  className: "text-[10px]",
104
- children: e.status
105
+ children: t(e.status)
105
106
  })]
106
107
  }),
107
- /* @__PURE__ */ a(f, {
108
+ /* @__PURE__ */ o(p, {
108
109
  className: "text-base mt-2",
109
110
  children: e.title
110
111
  }),
111
- /* @__PURE__ */ a(u, { children: e.provider })
112
- ] }), /* @__PURE__ */ o(l, { children: [
113
- /* @__PURE__ */ a("p", {
112
+ /* @__PURE__ */ o(d, { children: e.provider })
113
+ ] }), /* @__PURE__ */ s(u, { children: [
114
+ /* @__PURE__ */ o("p", {
114
115
  className: "text-sm text-text-secondary mb-3",
115
116
  children: e.description
116
117
  }),
117
- /* @__PURE__ */ a("div", {
118
+ /* @__PURE__ */ o("div", {
118
119
  className: "flex flex-wrap gap-1 mb-3",
119
- children: e.skills.map((e) => /* @__PURE__ */ a(s, {
120
+ children: e.skills.map((e) => /* @__PURE__ */ o(c, {
120
121
  variant: "outline",
121
122
  className: "text-[9px]",
122
123
  children: e
123
124
  }, e))
124
125
  }),
125
- /* @__PURE__ */ o("div", {
126
+ /* @__PURE__ */ s("div", {
126
127
  className: "flex items-center justify-between text-sm",
127
- children: [/* @__PURE__ */ o("span", {
128
+ children: [/* @__PURE__ */ s("span", {
128
129
  className: "font-bold",
129
130
  children: [
130
131
  "$",
131
132
  e.price.toLocaleString(),
132
- /* @__PURE__ */ o("span", {
133
+ /* @__PURE__ */ s("span", {
133
134
  className: "text-xs font-normal text-text-secondary",
134
135
  children: ["/", e.priceType]
135
136
  })
136
137
  ]
137
- }), /* @__PURE__ */ o("span", {
138
+ }), /* @__PURE__ */ s("span", {
138
139
  className: "flex items-center gap-1",
139
140
  children: [
140
- /* @__PURE__ */ a(n, { className: "h-3 w-3 text-status-warning-text" }),
141
+ /* @__PURE__ */ o(r, { className: "h-3 w-3 text-status-warning-text" }),
141
142
  e.rating,
142
143
  " (",
143
144
  e.reviews,
@@ -145,10 +146,10 @@ function y() {
145
146
  ]
146
147
  })]
147
148
  }),
148
- /* @__PURE__ */ o("p", {
149
+ /* @__PURE__ */ s("p", {
149
150
  className: "text-xs text-text-secondary mt-1",
150
151
  children: [
151
- S("crewfoundry.marketplace.card.delivery", "Delivery"),
152
+ C("crewfoundry.marketplace.card.delivery", "Delivery"),
152
153
  ": ",
153
154
  e.deliveryTime
154
155
  ]
@@ -156,16 +157,16 @@ function y() {
156
157
  ] })]
157
158
  }, e.id))
158
159
  }),
159
- /* @__PURE__ */ a(g, {
160
- page: C,
161
- pageSize: w,
162
- totalItems: x.length,
163
- onPageChange: E
160
+ /* @__PURE__ */ o(_, {
161
+ page: w,
162
+ pageSize: T,
163
+ totalItems: S.length,
164
+ onPageChange: D
164
165
  })
165
166
  ]
166
167
  });
167
168
  }
168
169
  //#endregion
169
- export { y as MarketplaceMarketplacePagePage };
170
+ export { b as MarketplaceMarketplacePagePage };
170
171
 
171
172
  //# sourceMappingURL=MarketplaceMarketplacePagePage.js.map
@@ -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 GlassCard,\n GradientText,\n PagePurpose,\n Pagination,\n} from '@burdenoff/fe-libs/ui';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { usePagination } from '@burdenoff/fe-libs/shared/hooks';\nimport { ShoppingBag, Star, Users } from 'lucide-react';\nimport { useNavigate } from 'react-router-dom';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function MarketplaceMarketplacePagePage() {\n const { t: translate } = useI18n();\n const navigate = useNavigate();\n const { marketplaceServices } = useCrewFoundryStore();\n const t = (key: string, fallback: string) => {\n const value = translate(key);\n return value === key ? fallback : value;\n };\n const { page, pageSize, offset, setPage } = usePagination({ initialPageSize: 9 });\n const avgRating =\n marketplaceServices.length > 0\n ? (\n marketplaceServices.reduce((s, m) => s + m.rating, 0) / marketplaceServices.length\n ).toFixed(1)\n : '0.0';\n const pagedServices = marketplaceServices.slice(offset, offset + pageSize);\n const openService = (id: string) => navigate(`../../marketplace/service-details-page?id=${id}`);\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>\n {t('crewfoundry.marketplace.title', 'HR Services Marketplace')}\n </GradientText>\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 <PagePurpose className=\"mt-1\">\n Discover freelancers and services for your projects — browse the marketplace to find and\n hire the right talent on demand.\n </PagePurpose>\n </div>\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\">\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 tabular-nums\">{marketplaceServices.length}</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\">\n {t('crewfoundry.marketplace.stats.avgRating', 'Avg Rating')}\n </CardTitle>\n <Star className=\"h-4 w-4 text-status-warning-text\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">{avgRating}</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\">\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 tabular-nums\">\n {marketplaceServices.reduce((s, m) => s + m.reviews, 0)}\n </div>\n </CardContent>\n </GlassCard>\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 {pagedServices.map((svc) => (\n <Card\n key={svc.id}\n role=\"button\"\n tabIndex={0}\n aria-label={`View details for ${svc.title}`}\n onClick={() => openService(svc.id)}\n onKeyDown={(event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n openService(svc.id);\n }\n }}\n className=\"hover:shadow-md transition-shadow cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-action-primary-bg\"\n >\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\">/{svc.priceType}</span>\n </span>\n <span className=\"flex items-center gap-1\">\n <Star className=\"h-3 w-3 text-status-warning-text\" />\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 <Pagination\n page={page}\n pageSize={pageSize}\n totalItems={marketplaceServices.length}\n onPageChange={setPage}\n />\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 GlassCard,\n GradientText,\n PagePurpose,\n Pagination,\n} from '@burdenoff/fe-libs/ui';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { usePagination } from '@burdenoff/fe-libs/shared/hooks';\nimport { ShoppingBag, Star, Users } from 'lucide-react';\nimport { useNavigate } from 'react-router-dom';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\nimport { formatEnumLabel } from '../utils/formatEnumLabel';\n\nexport function MarketplaceMarketplacePagePage() {\n const { t: translate } = useI18n();\n const navigate = useNavigate();\n const { marketplaceServices } = useCrewFoundryStore();\n const t = (key: string, fallback: string) => {\n const value = translate(key);\n return value === key ? fallback : value;\n };\n const { page, pageSize, offset, setPage } = usePagination({ initialPageSize: 9 });\n const avgRating =\n marketplaceServices.length > 0\n ? (\n marketplaceServices.reduce((s, m) => s + m.rating, 0) / marketplaceServices.length\n ).toFixed(1)\n : '0.0';\n const pagedServices = marketplaceServices.slice(offset, offset + pageSize);\n const openService = (id: string) => navigate(`../../marketplace/service-details-page?id=${id}`);\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>\n {t('crewfoundry.marketplace.title', 'HR Services Marketplace')}\n </GradientText>\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 <PagePurpose className=\"mt-1\">\n Discover freelancers and services for your projects — browse the marketplace to find and\n hire the right talent on demand.\n </PagePurpose>\n </div>\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\">\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 tabular-nums\">{marketplaceServices.length}</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\">\n {t('crewfoundry.marketplace.stats.avgRating', 'Avg Rating')}\n </CardTitle>\n <Star className=\"h-4 w-4 text-status-warning-text\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold tabular-nums\">{avgRating}</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\">\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 tabular-nums\">\n {marketplaceServices.reduce((s, m) => s + m.reviews, 0)}\n </div>\n </CardContent>\n </GlassCard>\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 {pagedServices.map((svc) => (\n <Card\n key={svc.id}\n role=\"button\"\n tabIndex={0}\n aria-label={`View details for ${svc.title}`}\n onClick={() => openService(svc.id)}\n onKeyDown={(event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n openService(svc.id);\n }\n }}\n className=\"hover:shadow-md transition-shadow cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-action-primary-bg\"\n >\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 {formatEnumLabel(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\">/{svc.priceType}</span>\n </span>\n <span className=\"flex items-center gap-1\">\n <Star className=\"h-3 w-3 text-status-warning-text\" />\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 <Pagination\n page={page}\n pageSize={pageSize}\n totalItems={marketplaceServices.length}\n onPageChange={setPage}\n />\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,55 +1,56 @@
1
1
  import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
2
- import { useState as t } from "react";
3
- import { Search as n, Star as r } from "lucide-react";
4
- import { useNavigate as i } from "react-router-dom";
5
- import { jsx as a, jsxs as o } from "react/jsx-runtime";
6
- import { Badge as s, CardContent as c, GlassCard as l, GradientText as u, IllustratedEmptyState as d, Input as f, PagePurpose as p, Pagination as m, ResponsiveTable as h } from "@burdenoff/fe-libs/ui";
7
- import { usePagination as g } from "@burdenoff/fe-libs/shared/hooks";
2
+ import { formatEnumLabel as t } from "../utils/formatEnumLabel.js";
3
+ import { useState as n } from "react";
4
+ import { Search as r, Star as i } from "lucide-react";
5
+ import { useNavigate as a } from "react-router-dom";
6
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
7
+ import { Badge as c, CardContent as l, GlassCard as u, GradientText as d, IllustratedEmptyState as f, Input as p, PagePurpose as m, Pagination as h, ResponsiveTable as g } from "@burdenoff/fe-libs/ui";
8
+ import { usePagination as _ } from "@burdenoff/fe-libs/shared/hooks";
8
9
  //#region src/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.tsx
9
- function _() {
10
- let _ = i(), { marketplaceServices: v } = e(), [y, b] = t(""), { page: x, pageSize: S, offset: C, setPage: w } = g({ initialPageSize: 10 }), T = v.filter((e) => `${e.title} ${e.provider} ${e.category}`.toLowerCase().includes(y.toLowerCase())), E = T.slice(C, C + S);
11
- return /* @__PURE__ */ o("div", {
10
+ function v() {
11
+ let v = a(), { marketplaceServices: y } = e(), [b, x] = n(""), { page: S, pageSize: C, offset: w, setPage: T } = _({ initialPageSize: 10 }), E = y.filter((e) => `${e.title} ${e.provider} ${e.category}`.toLowerCase().includes(b.toLowerCase())), D = E.slice(w, w + C);
12
+ return /* @__PURE__ */ s("div", {
12
13
  className: "space-y-6 p-6",
13
14
  children: [
14
- /* @__PURE__ */ o("div", { children: [
15
- /* @__PURE__ */ a("h1", {
15
+ /* @__PURE__ */ s("div", { children: [
16
+ /* @__PURE__ */ o("h1", {
16
17
  className: "text-2xl font-semibold",
17
- children: /* @__PURE__ */ a(u, { children: "Browse Services" })
18
+ children: /* @__PURE__ */ o(d, { children: "Browse Services" })
18
19
  }),
19
- /* @__PURE__ */ o("p", {
20
+ /* @__PURE__ */ s("p", {
20
21
  className: "text-sm text-text-secondary",
21
- children: [v.length, " services available"]
22
+ children: [y.length, " services available"]
22
23
  }),
23
- /* @__PURE__ */ a(p, {
24
+ /* @__PURE__ */ o(m, {
24
25
  className: "mt-1",
25
26
  children: "Explore services offered on the marketplace — search and compare offerings to find exactly the help your project needs."
26
27
  })
27
28
  ] }),
28
- /* @__PURE__ */ o("div", {
29
+ /* @__PURE__ */ s("div", {
29
30
  className: "relative max-w-sm",
30
- children: [/* @__PURE__ */ a(n, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ a(f, {
31
+ children: [/* @__PURE__ */ o(r, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ o(p, {
31
32
  placeholder: "Search services...",
32
33
  className: "pl-9",
33
- value: y,
34
- onChange: (e) => b(e.target.value)
34
+ value: b,
35
+ onChange: (e) => x(e.target.value)
35
36
  })]
36
37
  }),
37
- /* @__PURE__ */ a(l, {
38
+ /* @__PURE__ */ o(u, {
38
39
  treatment: "glass",
39
40
  glow: !0,
40
41
  className: "border-border-seam",
41
- children: /* @__PURE__ */ a(c, {
42
+ children: /* @__PURE__ */ o(l, {
42
43
  className: "p-4",
43
- children: /* @__PURE__ */ a(h, {
44
+ children: /* @__PURE__ */ o(g, {
44
45
  columns: [
45
46
  {
46
47
  key: "service",
47
48
  header: "Service",
48
49
  priority: "primary",
49
- cell: (e) => /* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("p", {
50
+ cell: (e) => /* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("p", {
50
51
  className: "font-medium",
51
52
  children: e.title
52
- }), /* @__PURE__ */ o("p", {
53
+ }), /* @__PURE__ */ s("p", {
53
54
  className: "text-xs text-text-secondary truncate",
54
55
  children: [e.description.slice(0, 60), e.description.length > 60 ? "…" : ""]
55
56
  })] })
@@ -58,7 +59,7 @@ function _() {
58
59
  key: "provider",
59
60
  header: "Provider",
60
61
  priority: "secondary",
61
- cell: (e) => /* @__PURE__ */ a("span", {
62
+ cell: (e) => /* @__PURE__ */ o("span", {
62
63
  className: "text-text-secondary",
63
64
  children: e.provider
64
65
  })
@@ -67,7 +68,7 @@ function _() {
67
68
  key: "category",
68
69
  header: "Category",
69
70
  priority: "secondary",
70
- cell: (e) => /* @__PURE__ */ a(s, {
71
+ cell: (e) => /* @__PURE__ */ o(c, {
71
72
  variant: "outline",
72
73
  className: "w-fit h-fit text-[10px]",
73
74
  children: e.category
@@ -77,7 +78,7 @@ function _() {
77
78
  key: "price",
78
79
  header: "Price",
79
80
  priority: "secondary",
80
- cell: (e) => /* @__PURE__ */ o("span", {
81
+ cell: (e) => /* @__PURE__ */ s("span", {
81
82
  className: "font-medium",
82
83
  children: [
83
84
  "$",
@@ -91,10 +92,10 @@ function _() {
91
92
  key: "rating",
92
93
  header: "Rating",
93
94
  priority: "secondary",
94
- cell: (e) => /* @__PURE__ */ o("span", {
95
+ cell: (e) => /* @__PURE__ */ s("span", {
95
96
  className: "flex items-center gap-1",
96
97
  children: [
97
- /* @__PURE__ */ a(r, { className: "h-3 w-3 text-status-warning-text" }),
98
+ /* @__PURE__ */ o(i, { className: "h-3 w-3 text-status-warning-text" }),
98
99
  e.rating,
99
100
  " (",
100
101
  e.reviews,
@@ -106,17 +107,17 @@ function _() {
106
107
  key: "status",
107
108
  header: "Status",
108
109
  priority: "secondary",
109
- cell: (e) => /* @__PURE__ */ a(s, {
110
+ cell: (e) => /* @__PURE__ */ o(c, {
110
111
  variant: e.status === "active" ? "default" : "secondary",
111
112
  className: "text-[10px]",
112
- children: e.status
113
+ children: t(e.status)
113
114
  })
114
115
  }
115
116
  ],
116
- data: E,
117
+ data: D,
117
118
  rowKey: (e) => e.id,
118
- onRowClick: (e) => _(`../../marketplace/service-details-page?id=${e.id}`),
119
- emptyState: /* @__PURE__ */ a(d, {
119
+ onRowClick: (e) => v(`../../marketplace/service-details-page?id=${e.id}`),
120
+ emptyState: /* @__PURE__ */ o(f, {
120
121
  illustration: "empty-search",
121
122
  title: "No services found",
122
123
  description: "Try a different search term to find the help you need."
@@ -124,16 +125,16 @@ function _() {
124
125
  })
125
126
  })
126
127
  }),
127
- T.length > 0 ? /* @__PURE__ */ a(m, {
128
- page: x,
129
- pageSize: S,
130
- totalItems: T.length,
131
- onPageChange: w
128
+ E.length > 0 ? /* @__PURE__ */ o(h, {
129
+ page: S,
130
+ pageSize: C,
131
+ totalItems: E.length,
132
+ onPageChange: T
132
133
  }) : null
133
134
  ]
134
135
  });
135
136
  }
136
137
  //#endregion
137
- export { _ as MarketplaceMarketplaceServicesPagePage };
138
+ export { v as MarketplaceMarketplaceServicesPagePage };
138
139
 
139
140
  //# sourceMappingURL=MarketplaceMarketplaceServicesPagePage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MarketplaceMarketplaceServicesPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport {\n Badge,\n CardContent,\n GlassCard,\n GradientText,\n IllustratedEmptyState,\n Input,\n PagePurpose,\n Pagination,\n ResponsiveTable,\n type ResponsiveTableColumn,\n} from '@burdenoff/fe-libs/ui';\nimport { usePagination } from '@burdenoff/fe-libs/shared/hooks';\nimport { Search, Star } from 'lucide-react';\nimport { useNavigate } from 'react-router-dom';\nimport { useCrewFoundryStore, type MarketplaceService } from '../store/crewfoundryStore';\n\nexport function MarketplaceMarketplaceServicesPagePage() {\n const navigate = useNavigate();\n const { marketplaceServices } = useCrewFoundryStore();\n const [search, setSearch] = useState('');\n const { page, pageSize, offset, setPage } = usePagination({ initialPageSize: 10 });\n const filtered = marketplaceServices.filter((s) =>\n `${s.title} ${s.provider} ${s.category}`.toLowerCase().includes(search.toLowerCase())\n );\n const paged = filtered.slice(offset, offset + pageSize);\n\n const columns: ResponsiveTableColumn<MarketplaceService>[] = [\n {\n key: 'service',\n header: 'Service',\n priority: 'primary',\n cell: (svc) => (\n <div>\n <p className=\"font-medium\">{svc.title}</p>\n <p className=\"text-xs text-text-secondary truncate\">\n {svc.description.slice(0, 60)}\n {svc.description.length > 60 ? '…' : ''}\n </p>\n </div>\n ),\n },\n {\n key: 'provider',\n header: 'Provider',\n priority: 'secondary',\n cell: (svc) => <span className=\"text-text-secondary\">{svc.provider}</span>,\n },\n {\n key: 'category',\n header: 'Category',\n priority: 'secondary',\n cell: (svc) => (\n <Badge variant=\"outline\" className=\"w-fit h-fit text-[10px]\">\n {svc.category}\n </Badge>\n ),\n },\n {\n key: 'price',\n header: 'Price',\n priority: 'secondary',\n cell: (svc) => (\n <span className=\"font-medium\">\n ${svc.price.toLocaleString()}/{svc.priceType}\n </span>\n ),\n },\n {\n key: 'rating',\n header: 'Rating',\n priority: 'secondary',\n cell: (svc) => (\n <span className=\"flex items-center gap-1\">\n <Star className=\"h-3 w-3 text-status-warning-text\" />\n {svc.rating} ({svc.reviews})\n </span>\n ),\n },\n {\n key: 'status',\n header: 'Status',\n priority: 'secondary',\n cell: (svc) => (\n <Badge variant={svc.status === 'active' ? 'default' : 'secondary'} className=\"text-[10px]\">\n {svc.status}\n </Badge>\n ),\n },\n ];\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>Browse Services</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">\n {marketplaceServices.length} services available\n </p>\n <PagePurpose className=\"mt-1\">\n Explore services offered on the marketplace — search and compare offerings to find exactly\n the help your project needs.\n </PagePurpose>\n </div>\n <div className=\"relative max-w-sm\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary\" />\n <Input\n placeholder=\"Search services...\"\n className=\"pl-9\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n />\n </div>\n <GlassCard treatment=\"glass\" glow className=\"border-border-seam\">\n <CardContent className=\"p-4\">\n <ResponsiveTable\n columns={columns}\n data={paged}\n rowKey={(svc) => svc.id}\n onRowClick={(svc) => navigate(`../../marketplace/service-details-page?id=${svc.id}`)}\n emptyState={\n <IllustratedEmptyState\n illustration=\"empty-search\"\n title=\"No services found\"\n description=\"Try a different search term to find the help you need.\"\n />\n }\n />\n </CardContent>\n </GlassCard>\n {filtered.length > 0 ? (\n <Pagination\n page={page}\n pageSize={pageSize}\n totalItems={filtered.length}\n onPageChange={setPage}\n />\n ) : null}\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAkBA,SAAgB,IAAyC;CACvD,IAAM,IAAW,GAAa,EACxB,EAAE,2BAAwB,GAAqB,EAC/C,CAAC,GAAQ,KAAa,EAAS,GAAG,EAClC,EAAE,SAAM,aAAU,WAAQ,eAAY,EAAc,EAAE,iBAAiB,IAAI,CAAC,EAC5E,IAAW,EAAoB,QAAQ,MAC3C,GAAG,EAAE,MAAM,GAAG,EAAE,SAAS,GAAG,EAAE,WAAW,aAAa,CAAC,SAAS,EAAO,aAAa,CAAC,CACtF,EACK,IAAQ,EAAS,MAAM,GAAQ,IAAS,EAAS;AAkEvD,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,OAAD,EAAA,UAAA;IACE,kBAAC,MAAD;KAAI,WAAU;eACZ,kBAAC,GAAD,EAAA,UAAc,mBAA8B,CAAA;KACzC,CAAA;IACL,kBAAC,KAAD;KAAG,WAAU;eAAb,CACG,EAAoB,QAAO,sBAC1B;;IACJ,kBAAC,GAAD;KAAa,WAAU;eAAO;KAGhB,CAAA;IACV,EAAA,CAAA;GACN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,GAAD,EAAQ,WAAU,wEAAyE,CAAA,EAC3F,kBAAC,GAAD;KACE,aAAY;KACZ,WAAU;KACV,OAAO;KACP,WAAW,MAAM,EAAU,EAAE,OAAO,MAAM;KAC1C,CAAA,CACE;;GACN,kBAAC,GAAD;IAAW,WAAU;IAAQ,MAAA;IAAK,WAAU;cAC1C,kBAAC,GAAD;KAAa,WAAU;eACrB,kBAAC,GAAD;MACW,SA1F0C;OAC3D;QACE,KAAK;QACL,QAAQ;QACR,UAAU;QACV,OAAO,MACL,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;SAAG,WAAU;mBAAe,EAAI;SAAU,CAAA,EAC1C,kBAAC,KAAD;SAAG,WAAU;mBAAb,CACG,EAAI,YAAY,MAAM,GAAG,GAAG,EAC5B,EAAI,YAAY,SAAS,KAAK,MAAM,GACnC;WACA,EAAA,CAAA;QAET;OACD;QACE,KAAK;QACL,QAAQ;QACR,UAAU;QACV,OAAO,MAAQ,kBAAC,QAAD;SAAM,WAAU;mBAAuB,EAAI;SAAgB,CAAA;QAC3E;OACD;QACE,KAAK;QACL,QAAQ;QACR,UAAU;QACV,OAAO,MACL,kBAAC,GAAD;SAAO,SAAQ;SAAU,WAAU;mBAChC,EAAI;SACC,CAAA;QAEX;OACD;QACE,KAAK;QACL,QAAQ;QACR,UAAU;QACV,OAAO,MACL,kBAAC,QAAD;SAAM,WAAU;mBAAhB;UAA8B;UAC1B,EAAI,MAAM,gBAAgB;UAAC;UAAE,EAAI;UAC9B;;QAEV;OACD;QACE,KAAK;QACL,QAAQ;QACR,UAAU;QACV,OAAO,MACL,kBAAC,QAAD;SAAM,WAAU;mBAAhB;UACE,kBAAC,GAAD,EAAM,WAAU,oCAAqC,CAAA;UACpD,EAAI;UAAO;UAAG,EAAI;UAAQ;UACtB;;QAEV;OACD;QACE,KAAK;QACL,QAAQ;QACR,UAAU;QACV,OAAO,MACL,kBAAC,GAAD;SAAO,SAAS,EAAI,WAAW,WAAW,YAAY;SAAa,WAAU;mBAC1E,EAAI;SACC,CAAA;QAEX;OACF;MA6BS,MAAM;MACN,SAAS,MAAQ,EAAI;MACrB,aAAa,MAAQ,EAAS,6CAA6C,EAAI,KAAK;MACpF,YACE,kBAAC,GAAD;OACE,cAAa;OACb,OAAM;OACN,aAAY;OACZ,CAAA;MAEJ,CAAA;KACU,CAAA;IACJ,CAAA;GACX,EAAS,SAAS,IACjB,kBAAC,GAAD;IACQ;IACI;IACV,YAAY,EAAS;IACrB,cAAc;IACd,CAAA,GACA;GACA"}
1
+ {"version":3,"file":"MarketplaceMarketplaceServicesPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport {\n Badge,\n CardContent,\n GlassCard,\n GradientText,\n IllustratedEmptyState,\n Input,\n PagePurpose,\n Pagination,\n ResponsiveTable,\n type ResponsiveTableColumn,\n} from '@burdenoff/fe-libs/ui';\nimport { usePagination } from '@burdenoff/fe-libs/shared/hooks';\nimport { Search, Star } from 'lucide-react';\nimport { useNavigate } from 'react-router-dom';\nimport { useCrewFoundryStore, type MarketplaceService } from '../store/crewfoundryStore';\nimport { formatEnumLabel } from '../utils/formatEnumLabel';\n\nexport function MarketplaceMarketplaceServicesPagePage() {\n const navigate = useNavigate();\n const { marketplaceServices } = useCrewFoundryStore();\n const [search, setSearch] = useState('');\n const { page, pageSize, offset, setPage } = usePagination({ initialPageSize: 10 });\n const filtered = marketplaceServices.filter((s) =>\n `${s.title} ${s.provider} ${s.category}`.toLowerCase().includes(search.toLowerCase())\n );\n const paged = filtered.slice(offset, offset + pageSize);\n\n const columns: ResponsiveTableColumn<MarketplaceService>[] = [\n {\n key: 'service',\n header: 'Service',\n priority: 'primary',\n cell: (svc) => (\n <div>\n <p className=\"font-medium\">{svc.title}</p>\n <p className=\"text-xs text-text-secondary truncate\">\n {svc.description.slice(0, 60)}\n {svc.description.length > 60 ? '…' : ''}\n </p>\n </div>\n ),\n },\n {\n key: 'provider',\n header: 'Provider',\n priority: 'secondary',\n cell: (svc) => <span className=\"text-text-secondary\">{svc.provider}</span>,\n },\n {\n key: 'category',\n header: 'Category',\n priority: 'secondary',\n cell: (svc) => (\n <Badge variant=\"outline\" className=\"w-fit h-fit text-[10px]\">\n {svc.category}\n </Badge>\n ),\n },\n {\n key: 'price',\n header: 'Price',\n priority: 'secondary',\n cell: (svc) => (\n <span className=\"font-medium\">\n ${svc.price.toLocaleString()}/{svc.priceType}\n </span>\n ),\n },\n {\n key: 'rating',\n header: 'Rating',\n priority: 'secondary',\n cell: (svc) => (\n <span className=\"flex items-center gap-1\">\n <Star className=\"h-3 w-3 text-status-warning-text\" />\n {svc.rating} ({svc.reviews})\n </span>\n ),\n },\n {\n key: 'status',\n header: 'Status',\n priority: 'secondary',\n cell: (svc) => (\n <Badge variant={svc.status === 'active' ? 'default' : 'secondary'} className=\"text-[10px]\">\n {formatEnumLabel(svc.status)}\n </Badge>\n ),\n },\n ];\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>Browse Services</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">\n {marketplaceServices.length} services available\n </p>\n <PagePurpose className=\"mt-1\">\n Explore services offered on the marketplace — search and compare offerings to find exactly\n the help your project needs.\n </PagePurpose>\n </div>\n <div className=\"relative max-w-sm\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary\" />\n <Input\n placeholder=\"Search services...\"\n className=\"pl-9\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n />\n </div>\n <GlassCard treatment=\"glass\" glow className=\"border-border-seam\">\n <CardContent className=\"p-4\">\n <ResponsiveTable\n columns={columns}\n data={paged}\n rowKey={(svc) => svc.id}\n onRowClick={(svc) => navigate(`../../marketplace/service-details-page?id=${svc.id}`)}\n emptyState={\n <IllustratedEmptyState\n illustration=\"empty-search\"\n title=\"No services found\"\n description=\"Try a different search term to find the help you need.\"\n />\n }\n />\n </CardContent>\n </GlassCard>\n {filtered.length > 0 ? (\n <Pagination\n page={page}\n pageSize={pageSize}\n totalItems={filtered.length}\n onPageChange={setPage}\n />\n ) : null}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;AAmBA,SAAgB,IAAyC;CACvD,IAAM,IAAW,GAAa,EACxB,EAAE,2BAAwB,GAAqB,EAC/C,CAAC,GAAQ,KAAa,EAAS,GAAG,EAClC,EAAE,SAAM,aAAU,WAAQ,eAAY,EAAc,EAAE,iBAAiB,IAAI,CAAC,EAC5E,IAAW,EAAoB,QAAQ,MAC3C,GAAG,EAAE,MAAM,GAAG,EAAE,SAAS,GAAG,EAAE,WAAW,aAAa,CAAC,SAAS,EAAO,aAAa,CAAC,CACtF,EACK,IAAQ,EAAS,MAAM,GAAQ,IAAS,EAAS;AAkEvD,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,OAAD,EAAA,UAAA;IACE,kBAAC,MAAD;KAAI,WAAU;eACZ,kBAAC,GAAD,EAAA,UAAc,mBAA8B,CAAA;KACzC,CAAA;IACL,kBAAC,KAAD;KAAG,WAAU;eAAb,CACG,EAAoB,QAAO,sBAC1B;;IACJ,kBAAC,GAAD;KAAa,WAAU;eAAO;KAGhB,CAAA;IACV,EAAA,CAAA;GACN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,GAAD,EAAQ,WAAU,wEAAyE,CAAA,EAC3F,kBAAC,GAAD;KACE,aAAY;KACZ,WAAU;KACV,OAAO;KACP,WAAW,MAAM,EAAU,EAAE,OAAO,MAAM;KAC1C,CAAA,CACE;;GACN,kBAAC,GAAD;IAAW,WAAU;IAAQ,MAAA;IAAK,WAAU;cAC1C,kBAAC,GAAD;KAAa,WAAU;eACrB,kBAAC,GAAD;MACW,SA1F0C;OAC3D;QACE,KAAK;QACL,QAAQ;QACR,UAAU;QACV,OAAO,MACL,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;SAAG,WAAU;mBAAe,EAAI;SAAU,CAAA,EAC1C,kBAAC,KAAD;SAAG,WAAU;mBAAb,CACG,EAAI,YAAY,MAAM,GAAG,GAAG,EAC5B,EAAI,YAAY,SAAS,KAAK,MAAM,GACnC;WACA,EAAA,CAAA;QAET;OACD;QACE,KAAK;QACL,QAAQ;QACR,UAAU;QACV,OAAO,MAAQ,kBAAC,QAAD;SAAM,WAAU;mBAAuB,EAAI;SAAgB,CAAA;QAC3E;OACD;QACE,KAAK;QACL,QAAQ;QACR,UAAU;QACV,OAAO,MACL,kBAAC,GAAD;SAAO,SAAQ;SAAU,WAAU;mBAChC,EAAI;SACC,CAAA;QAEX;OACD;QACE,KAAK;QACL,QAAQ;QACR,UAAU;QACV,OAAO,MACL,kBAAC,QAAD;SAAM,WAAU;mBAAhB;UAA8B;UAC1B,EAAI,MAAM,gBAAgB;UAAC;UAAE,EAAI;UAC9B;;QAEV;OACD;QACE,KAAK;QACL,QAAQ;QACR,UAAU;QACV,OAAO,MACL,kBAAC,QAAD;SAAM,WAAU;mBAAhB;UACE,kBAAC,GAAD,EAAM,WAAU,oCAAqC,CAAA;UACpD,EAAI;UAAO;UAAG,EAAI;UAAQ;UACtB;;QAEV;OACD;QACE,KAAK;QACL,QAAQ;QACR,UAAU;QACV,OAAO,MACL,kBAAC,GAAD;SAAO,SAAS,EAAI,WAAW,WAAW,YAAY;SAAa,WAAU;mBAC1E,EAAgB,EAAI,OAAO;SACtB,CAAA;QAEX;OACF;MA6BS,MAAM;MACN,SAAS,MAAQ,EAAI;MACrB,aAAa,MAAQ,EAAS,6CAA6C,EAAI,KAAK;MACpF,YACE,kBAAC,GAAD;OACE,cAAa;OACb,OAAM;OACN,aAAY;OACZ,CAAA;MAEJ,CAAA;KACU,CAAA;IACJ,CAAA;GACX,EAAS,SAAS,IACjB,kBAAC,GAAD;IACQ;IACI;IACV,YAAY,EAAS;IACrB,cAAc;IACd,CAAA,GACA;GACA"}