@burdenoff/microfe-crewfoundry 2026.624.1 → 2026.625.2
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.
- package/dist/crewfoundry/pages/AdminAdminPagePage.js +100 -76
- package/dist/crewfoundry/pages/AdminAdminPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js +118 -94
- package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js +105 -81
- package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js +134 -110
- package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js +121 -97
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js +28 -15
- package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js +74 -54
- package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js +87 -69
- package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js +99 -80
- package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js +87 -68
- package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js +31 -15
- package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js +81 -61
- package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js +71 -51
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js +82 -58
- package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js +46 -39
- package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js +80 -62
- package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js +104 -80
- package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardDashboardPagePage.js +219 -151
- package/dist/crewfoundry/pages/DashboardDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js +183 -142
- package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js +121 -97
- package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js.map +1 -1
- package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js +57 -46
- package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringApplicationsPagePage.js +91 -67
- package/dist/crewfoundry/pages/HiringApplicationsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringCandidatesPagePage.js +112 -93
- package/dist/crewfoundry/pages/HiringCandidatesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringCreateJobPagePage.js +55 -48
- package/dist/crewfoundry/pages/HiringCreateJobPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringInterviewsPagePage.js +70 -50
- package/dist/crewfoundry/pages/HiringInterviewsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js +140 -97
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringJobsPagePage.js +101 -85
- package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrDepartmentsPagePage.js +68 -48
- package/dist/crewfoundry/pages/HrDepartmentsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrEmployeesPagePage.js +99 -71
- package/dist/crewfoundry/pages/HrEmployeesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js +97 -73
- package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrPayrollPagePage.js +100 -76
- package/dist/crewfoundry/pages/HrPayrollPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js +93 -69
- package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js +65 -45
- package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCertificatesPagePage.js +93 -75
- package/dist/crewfoundry/pages/LearningCertificatesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js +117 -72
- package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js +66 -54
- package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCoursesPagePage.js +36 -20
- package/dist/crewfoundry/pages/LearningCoursesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js +90 -66
- package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPagePage.js +81 -57
- package/dist/crewfoundry/pages/LearningLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js +90 -65
- package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js +33 -17
- package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningMyLearningPagePage.js +83 -59
- package/dist/crewfoundry/pages/LearningMyLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js +68 -48
- package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js +80 -60
- package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js +153 -118
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js +42 -37
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js +67 -47
- package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js +104 -85
- package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js +76 -57
- package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js +78 -60
- package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js +138 -93
- package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js +98 -53
- package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js +69 -49
- package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js +84 -65
- package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js +76 -52
- package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js +58 -40
- package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js +85 -65
- package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js +36 -29
- package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js +108 -73
- package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js +43 -27
- package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js +67 -47
- package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js +108 -63
- package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js +83 -64
- package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js +185 -144
- package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamsPagePage.js +40 -24
- package/dist/crewfoundry/pages/TeamsTeamsPagePage.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,104 +1,123 @@
|
|
|
1
1
|
import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
|
|
2
2
|
import { useState as t } from "react";
|
|
3
3
|
import { Search as n, Star as r } from "lucide-react";
|
|
4
|
-
import {
|
|
5
|
-
import { Badge as
|
|
4
|
+
import { Fragment as i, jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
5
|
+
import { Badge as s, CardContent as c, GlassCard as l, GradientText as u, IllustratedEmptyState as d, Input as f, PagePurpose as p } from "@burdenoff/fe-libs/ui";
|
|
6
6
|
//#region src/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.tsx
|
|
7
|
-
function
|
|
8
|
-
let { marketplaceServices:
|
|
9
|
-
return /* @__PURE__ */
|
|
7
|
+
function m() {
|
|
8
|
+
let { marketplaceServices: m } = e(), [h, g] = t(""), _ = m.filter((e) => `${e.title} ${e.provider} ${e.category}`.toLowerCase().includes(h.toLowerCase()));
|
|
9
|
+
return /* @__PURE__ */ o("div", {
|
|
10
10
|
className: "space-y-6 p-6",
|
|
11
11
|
children: [
|
|
12
|
-
/* @__PURE__ */
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
/* @__PURE__ */ o("div", { children: [
|
|
13
|
+
/* @__PURE__ */ a("h1", {
|
|
14
|
+
className: "text-2xl font-semibold",
|
|
15
|
+
children: /* @__PURE__ */ a(u, { children: "Browse Services" })
|
|
16
|
+
}),
|
|
17
|
+
/* @__PURE__ */ o("p", {
|
|
18
|
+
className: "text-sm text-text-secondary",
|
|
19
|
+
children: [m.length, " services available"]
|
|
20
|
+
}),
|
|
21
|
+
/* @__PURE__ */ a(p, {
|
|
22
|
+
className: "mt-1",
|
|
23
|
+
children: "Explore services offered on the marketplace — search and compare offerings to find exactly the help your project needs."
|
|
24
|
+
})
|
|
25
|
+
] }),
|
|
26
|
+
/* @__PURE__ */ o("div", {
|
|
20
27
|
className: "relative max-w-sm",
|
|
21
|
-
children: [/* @__PURE__ */
|
|
28
|
+
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, {
|
|
22
29
|
placeholder: "Search services...",
|
|
23
30
|
className: "pl-9",
|
|
24
|
-
value:
|
|
25
|
-
onChange: (e) =>
|
|
31
|
+
value: h,
|
|
32
|
+
onChange: (e) => g(e.target.value)
|
|
26
33
|
})]
|
|
27
34
|
}),
|
|
28
|
-
/* @__PURE__ */
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
/* @__PURE__ */
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
/* @__PURE__ */ i("span", {
|
|
41
|
-
className: "text-center",
|
|
42
|
-
children: "Rating"
|
|
43
|
-
}),
|
|
44
|
-
/* @__PURE__ */ i("span", {
|
|
45
|
-
className: "text-center",
|
|
46
|
-
children: "Status"
|
|
35
|
+
/* @__PURE__ */ a(l, {
|
|
36
|
+
treatment: "glass",
|
|
37
|
+
glow: !0,
|
|
38
|
+
className: "border-border-seam",
|
|
39
|
+
children: /* @__PURE__ */ a(c, {
|
|
40
|
+
className: "p-0",
|
|
41
|
+
children: _.length === 0 ? /* @__PURE__ */ a("div", {
|
|
42
|
+
className: "p-6",
|
|
43
|
+
children: /* @__PURE__ */ a(d, {
|
|
44
|
+
illustration: "empty-search",
|
|
45
|
+
title: "No services found",
|
|
46
|
+
description: "Try a different search term to find the help you need."
|
|
47
47
|
})
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
className: "w-fit h-fit text-[10px]",
|
|
66
|
-
children: e.category
|
|
67
|
-
}),
|
|
68
|
-
/* @__PURE__ */ a("span", {
|
|
69
|
-
className: "text-right font-medium",
|
|
70
|
-
children: [
|
|
71
|
-
"$",
|
|
72
|
-
e.price.toLocaleString(),
|
|
73
|
-
"/",
|
|
74
|
-
e.priceType
|
|
75
|
-
]
|
|
76
|
-
}),
|
|
77
|
-
/* @__PURE__ */ a("div", {
|
|
78
|
-
className: "flex items-center justify-center gap-1",
|
|
79
|
-
children: [
|
|
80
|
-
/* @__PURE__ */ i(r, { className: "h-3 w-3 text-yellow-500" }),
|
|
81
|
-
e.rating,
|
|
82
|
-
" (",
|
|
83
|
-
e.reviews,
|
|
84
|
-
")"
|
|
85
|
-
]
|
|
86
|
-
}),
|
|
87
|
-
/* @__PURE__ */ i("div", {
|
|
88
|
-
className: "text-center",
|
|
89
|
-
children: /* @__PURE__ */ i(o, {
|
|
90
|
-
variant: e.status === "active" ? "default" : "secondary",
|
|
91
|
-
className: "text-[10px]",
|
|
92
|
-
children: e.status
|
|
48
|
+
}) : /* @__PURE__ */ o(i, { children: [/* @__PURE__ */ o("div", {
|
|
49
|
+
className: "grid grid-cols-6 gap-2 text-xs font-medium text-text-secondary p-4 border-b",
|
|
50
|
+
children: [
|
|
51
|
+
/* @__PURE__ */ a("span", { children: "Service" }),
|
|
52
|
+
/* @__PURE__ */ a("span", { children: "Provider" }),
|
|
53
|
+
/* @__PURE__ */ a("span", { children: "Category" }),
|
|
54
|
+
/* @__PURE__ */ a("span", {
|
|
55
|
+
className: "text-right",
|
|
56
|
+
children: "Price"
|
|
57
|
+
}),
|
|
58
|
+
/* @__PURE__ */ a("span", {
|
|
59
|
+
className: "text-center",
|
|
60
|
+
children: "Rating"
|
|
61
|
+
}),
|
|
62
|
+
/* @__PURE__ */ a("span", {
|
|
63
|
+
className: "text-center",
|
|
64
|
+
children: "Status"
|
|
93
65
|
})
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
66
|
+
]
|
|
67
|
+
}), _.map((e) => /* @__PURE__ */ o("div", {
|
|
68
|
+
className: "grid grid-cols-6 gap-2 py-3 px-4 border-b last:border-0 text-sm hover:bg-bg-sunken/50",
|
|
69
|
+
children: [
|
|
70
|
+
/* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("p", {
|
|
71
|
+
className: "font-medium",
|
|
72
|
+
children: e.title
|
|
73
|
+
}), /* @__PURE__ */ o("p", {
|
|
74
|
+
className: "text-xs text-text-secondary truncate",
|
|
75
|
+
children: [e.description.slice(0, 60), "..."]
|
|
76
|
+
})] }),
|
|
77
|
+
/* @__PURE__ */ a("span", {
|
|
78
|
+
className: "text-text-secondary",
|
|
79
|
+
children: e.provider
|
|
80
|
+
}),
|
|
81
|
+
/* @__PURE__ */ a(s, {
|
|
82
|
+
variant: "outline",
|
|
83
|
+
className: "w-fit h-fit text-[10px]",
|
|
84
|
+
children: e.category
|
|
85
|
+
}),
|
|
86
|
+
/* @__PURE__ */ o("span", {
|
|
87
|
+
className: "text-right font-medium",
|
|
88
|
+
children: [
|
|
89
|
+
"$",
|
|
90
|
+
e.price.toLocaleString(),
|
|
91
|
+
"/",
|
|
92
|
+
e.priceType
|
|
93
|
+
]
|
|
94
|
+
}),
|
|
95
|
+
/* @__PURE__ */ o("div", {
|
|
96
|
+
className: "flex items-center justify-center gap-1",
|
|
97
|
+
children: [
|
|
98
|
+
/* @__PURE__ */ a(r, { className: "h-3 w-3 text-status-warning-text" }),
|
|
99
|
+
e.rating,
|
|
100
|
+
" (",
|
|
101
|
+
e.reviews,
|
|
102
|
+
")"
|
|
103
|
+
]
|
|
104
|
+
}),
|
|
105
|
+
/* @__PURE__ */ a("div", {
|
|
106
|
+
className: "text-center",
|
|
107
|
+
children: /* @__PURE__ */ a(s, {
|
|
108
|
+
variant: e.status === "active" ? "default" : "secondary",
|
|
109
|
+
className: "text-[10px]",
|
|
110
|
+
children: e.status
|
|
111
|
+
})
|
|
112
|
+
})
|
|
113
|
+
]
|
|
114
|
+
}, e.id))] })
|
|
115
|
+
})
|
|
116
|
+
})
|
|
98
117
|
]
|
|
99
118
|
});
|
|
100
119
|
}
|
|
101
120
|
//#endregion
|
|
102
|
-
export {
|
|
121
|
+
export { m as MarketplaceMarketplaceServicesPagePage };
|
|
103
122
|
|
|
104
123
|
//# 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
|
|
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} from '@burdenoff/fe-libs/ui';\nimport { Search, Star } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function MarketplaceMarketplaceServicesPagePage() {\n const { marketplaceServices } = useCrewFoundryStore();\n const [search, setSearch] = useState('');\n const filtered = marketplaceServices.filter((s) =>\n `${s.title} ${s.provider} ${s.category}`.toLowerCase().includes(search.toLowerCase())\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\">Explore services offered on the marketplace — search and compare offerings to find exactly the help your project needs.</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-0\">\n {filtered.length === 0 ? (\n <div className=\"p-6\">\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 </div>\n ) : (\n <>\n <div className=\"grid grid-cols-6 gap-2 text-xs font-medium text-text-secondary p-4 border-b\">\n <span>Service</span>\n <span>Provider</span>\n <span>Category</span>\n <span className=\"text-right\">Price</span>\n <span className=\"text-center\">Rating</span>\n <span className=\"text-center\">Status</span>\n </div>\n {filtered.map((svc) => (\n <div\n key={svc.id}\n className=\"grid grid-cols-6 gap-2 py-3 px-4 border-b last:border-0 text-sm hover:bg-bg-sunken/50\"\n >\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 </p>\n </div>\n <span className=\"text-text-secondary\">{svc.provider}</span>\n <Badge variant=\"outline\" className=\"w-fit h-fit text-[10px]\">\n {svc.category}\n </Badge>\n <span className=\"text-right font-medium\">\n ${svc.price.toLocaleString()}/{svc.priceType}\n </span>\n <div className=\"flex items-center justify-center gap-1\">\n <Star className=\"h-3 w-3 text-status-warning-text\" />\n {svc.rating} ({svc.reviews})\n </div>\n <div className=\"text-center\">\n <Badge\n variant={svc.status === 'active' ? 'default' : 'secondary'}\n className=\"text-[10px]\"\n >\n {svc.status}\n </Badge>\n </div>\n </div>\n ))}\n </>\n )}\n </CardContent>\n </GlassCard>\n </div>\n );\n}\n"],"mappings":";;;;;;AAaA,SAAgB,IAAyC;CACvD,IAAM,EAAE,2BAAwB,GAAqB,EAC/C,CAAC,GAAQ,KAAa,EAAS,GAAG,EAClC,IAAW,EAAoB,QAAQ,MAC3C,GAAG,EAAE,MAAM,GAAG,EAAE,SAAS,GAAG,EAAE,WAAW,aAAa,CAAC,SAAS,EAAO,aAAa,CAAC,CACtF;AAED,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;KAAqI,CAAA;IAC/J,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;eACpB,EAAS,WAAW,IACnB,kBAAC,OAAD;MAAK,WAAU;gBACb,kBAAC,GAAD;OACE,cAAa;OACb,OAAM;OACN,aAAY;OACZ,CAAA;MACE,CAAA,GAEN,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,QAAD,EAAA,UAAM,WAAc,CAAA;OACpB,kBAAC,QAAD,EAAA,UAAM,YAAe,CAAA;OACrB,kBAAC,QAAD,EAAA,UAAM,YAAe,CAAA;OACrB,kBAAC,QAAD;QAAM,WAAU;kBAAa;QAAY,CAAA;OACzC,kBAAC,QAAD;QAAM,WAAU;kBAAc;QAAa,CAAA;OAC3C,kBAAC,QAAD;QAAM,WAAU;kBAAc;QAAa,CAAA;OACvC;SACL,EAAS,KAAK,MACjB,kBAAC,OAAD;MAEE,WAAU;gBAFZ;OAIE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;QAAG,WAAU;kBAAe,EAAI;QAAU,CAAA,EAC1C,kBAAC,KAAD;QAAG,WAAU;kBAAb,CACG,EAAI,YAAY,MAAM,GAAG,GAAG,EAAC,MAC5B;UACA,EAAA,CAAA;OACN,kBAAC,QAAD;QAAM,WAAU;kBAAuB,EAAI;QAAgB,CAAA;OAC3D,kBAAC,GAAD;QAAO,SAAQ;QAAU,WAAU;kBAChC,EAAI;QACC,CAAA;OACR,kBAAC,QAAD;QAAM,WAAU;kBAAhB;SAAyC;SACrC,EAAI,MAAM,gBAAgB;SAAC;SAAE,EAAI;SAC9B;;OACP,kBAAC,OAAD;QAAK,WAAU;kBAAf;SACE,kBAAC,GAAD,EAAM,WAAU,oCAAqC,CAAA;SACpD,EAAI;SAAO;SAAG,EAAI;SAAQ;SACvB;;OACN,kBAAC,OAAD;QAAK,WAAU;kBACb,kBAAC,GAAD;SACE,SAAS,EAAI,WAAW,WAAW,YAAY;SAC/C,WAAU;mBAET,EAAI;SACC,CAAA;QACJ,CAAA;OACF;QA5BC,EAAI,GA4BL,CACF,CACD,EAAA,CAAA;KAEO,CAAA;IACJ,CAAA;GACR"}
|
|
@@ -2,90 +2,109 @@ import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
|
|
|
2
2
|
import { useMemo as t, useState as n } from "react";
|
|
3
3
|
import { Search as r } from "lucide-react";
|
|
4
4
|
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
5
|
-
import {
|
|
5
|
+
import { CardContent as o, GlassCard as s, GradientText as c, IllustratedEmptyState as l, Input as u, PagePurpose as d } from "@burdenoff/fe-libs/ui";
|
|
6
6
|
//#region src/crewfoundry/pages/MarketplaceMessagingPagePage.tsx
|
|
7
|
-
var
|
|
7
|
+
var f = (e) => {
|
|
8
8
|
let t = new Date(e);
|
|
9
9
|
if (Number.isNaN(t.getTime())) return "recently";
|
|
10
10
|
let n = Math.max(1, Math.floor((Date.now() - t.getTime()) / (1e3 * 60 * 60)));
|
|
11
11
|
return n < 24 ? `${n} hours ago` : `${Math.floor(n / 24)} days ago`;
|
|
12
12
|
};
|
|
13
|
-
function
|
|
14
|
-
let [
|
|
15
|
-
let n =
|
|
13
|
+
function p() {
|
|
14
|
+
let [p, m] = n(""), { marketplaceServices: h, notifications: g, clients: _, vendors: v } = e(), y = t(() => g.slice(0, 20).map((e, t) => {
|
|
15
|
+
let n = h[t % Math.max(h.length, 1)], r = _[t % Math.max(_.length, 1)]?.name || v[t % Math.max(v.length, 1)]?.name || "Marketplace Partner";
|
|
16
16
|
return {
|
|
17
17
|
id: e.id,
|
|
18
18
|
from: n?.provider || r,
|
|
19
19
|
company: r,
|
|
20
20
|
message: e.message,
|
|
21
|
-
time:
|
|
21
|
+
time: f(e.createdAt),
|
|
22
22
|
unread: !e.read
|
|
23
23
|
};
|
|
24
24
|
}), [
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
]).filter((e) => `${e.from} ${e.company} ${e.message}`.toLowerCase().includes(
|
|
25
|
+
_,
|
|
26
|
+
h,
|
|
27
|
+
g,
|
|
28
|
+
v
|
|
29
|
+
]).filter((e) => `${e.from} ${e.company} ${e.message}`.toLowerCase().includes(p.toLowerCase()));
|
|
30
30
|
return /* @__PURE__ */ a("div", {
|
|
31
31
|
className: "space-y-6 p-6",
|
|
32
32
|
children: [
|
|
33
|
-
/* @__PURE__ */ a("div", { children: [
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
33
|
+
/* @__PURE__ */ a("div", { children: [
|
|
34
|
+
/* @__PURE__ */ i("h1", {
|
|
35
|
+
className: "text-2xl font-semibold",
|
|
36
|
+
children: /* @__PURE__ */ i(c, { children: "Service Messages" })
|
|
37
|
+
}),
|
|
38
|
+
/* @__PURE__ */ i("p", {
|
|
39
|
+
className: "text-sm text-text-secondary",
|
|
40
|
+
children: "Communication with service providers"
|
|
41
|
+
}),
|
|
42
|
+
/* @__PURE__ */ i(d, {
|
|
43
|
+
className: "mt-1",
|
|
44
|
+
children: "Message freelancers and clients about your engagements — keep all marketplace conversations in one organized inbox."
|
|
45
|
+
})
|
|
46
|
+
] }),
|
|
40
47
|
/* @__PURE__ */ a("div", {
|
|
41
48
|
className: "relative max-w-sm",
|
|
42
|
-
children: [/* @__PURE__ */ i(r, { className: "absolute top-1/2 left-3 h-4 w-4 -translate-y-1/2 text-text-secondary" }), /* @__PURE__ */ i(
|
|
49
|
+
children: [/* @__PURE__ */ i(r, { className: "absolute top-1/2 left-3 h-4 w-4 -translate-y-1/2 text-text-secondary" }), /* @__PURE__ */ i(u, {
|
|
43
50
|
placeholder: "Search messages...",
|
|
44
51
|
className: "pl-9",
|
|
45
|
-
value:
|
|
46
|
-
onChange: (e) =>
|
|
52
|
+
value: p,
|
|
53
|
+
onChange: (e) => m(e.target.value)
|
|
47
54
|
})]
|
|
48
55
|
}),
|
|
49
|
-
/* @__PURE__ */ i(
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
56
|
+
/* @__PURE__ */ i(s, {
|
|
57
|
+
treatment: "glass",
|
|
58
|
+
glow: !0,
|
|
59
|
+
className: "border-border-seam",
|
|
60
|
+
children: /* @__PURE__ */ i(o, {
|
|
61
|
+
className: "p-0",
|
|
62
|
+
children: y.length === 0 ? /* @__PURE__ */ i("div", {
|
|
63
|
+
className: "p-6",
|
|
64
|
+
children: /* @__PURE__ */ i(l, {
|
|
65
|
+
illustration: "empty-notifications",
|
|
66
|
+
title: "No messages",
|
|
67
|
+
description: "Conversations with providers and clients will appear here."
|
|
68
|
+
})
|
|
69
|
+
}) : y.map((e) => /* @__PURE__ */ a("div", {
|
|
70
|
+
className: `flex cursor-pointer items-center gap-3 border-b p-4 last:border-0 hover:bg-bg-sunken/50 ${e.unread ? "bg-status-info-bg/30" : ""}`,
|
|
71
|
+
children: [
|
|
72
|
+
/* @__PURE__ */ i("div", {
|
|
73
|
+
className: "flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-full bg-action-primary-bg/10 text-sm font-bold",
|
|
74
|
+
children: e.from.split(" ").map((e) => e[0]).join("")
|
|
75
|
+
}),
|
|
76
|
+
/* @__PURE__ */ a("div", {
|
|
77
|
+
className: "min-w-0 flex-1",
|
|
78
|
+
children: [
|
|
79
|
+
/* @__PURE__ */ a("div", {
|
|
80
|
+
className: "flex items-center justify-between",
|
|
81
|
+
children: [/* @__PURE__ */ i("p", {
|
|
82
|
+
className: `text-sm ${e.unread ? "font-bold" : "font-medium"}`,
|
|
83
|
+
children: e.from
|
|
84
|
+
}), /* @__PURE__ */ i("span", {
|
|
85
|
+
className: "text-xs text-text-secondary",
|
|
86
|
+
children: e.time
|
|
87
|
+
})]
|
|
88
|
+
}),
|
|
89
|
+
/* @__PURE__ */ i("p", {
|
|
67
90
|
className: "text-xs text-text-secondary",
|
|
68
|
-
children: e.
|
|
69
|
-
})
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
e.unread ? /* @__PURE__ */ i("div", { className: "h-2 w-2 flex-shrink-0 rounded-full bg-blue-500" }) : null
|
|
82
|
-
]
|
|
83
|
-
}, e.id))
|
|
84
|
-
}) })
|
|
91
|
+
children: e.company
|
|
92
|
+
}),
|
|
93
|
+
/* @__PURE__ */ i("p", {
|
|
94
|
+
className: "mt-0.5 truncate text-xs text-text-secondary",
|
|
95
|
+
children: e.message
|
|
96
|
+
})
|
|
97
|
+
]
|
|
98
|
+
}),
|
|
99
|
+
e.unread ? /* @__PURE__ */ i("div", { className: "h-2 w-2 flex-shrink-0 rounded-full bg-status-info-text" }) : null
|
|
100
|
+
]
|
|
101
|
+
}, e.id))
|
|
102
|
+
})
|
|
103
|
+
})
|
|
85
104
|
]
|
|
86
105
|
});
|
|
87
106
|
}
|
|
88
107
|
//#endregion
|
|
89
|
-
export {
|
|
108
|
+
export { p as MarketplaceMessagingPagePage };
|
|
90
109
|
|
|
91
110
|
//# sourceMappingURL=MarketplaceMessagingPagePage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarketplaceMessagingPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceMessagingPagePage.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport {
|
|
1
|
+
{"version":3,"file":"MarketplaceMessagingPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceMessagingPagePage.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport {\n CardContent,\n GlassCard,\n GradientText,\n IllustratedEmptyState,\n Input,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { Search } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\ntype ServiceMessage = {\n id: string;\n from: string;\n company: string;\n message: string;\n time: string;\n unread: boolean;\n};\n\nconst timeAgo = (value: string): string => {\n const parsed = new Date(value);\n if (Number.isNaN(parsed.getTime())) {\n return 'recently';\n }\n const hours = Math.max(1, Math.floor((Date.now() - parsed.getTime()) / (1000 * 60 * 60)));\n return hours < 24 ? `${hours} hours ago` : `${Math.floor(hours / 24)} days ago`;\n};\n\nexport function MarketplaceMessagingPagePage() {\n const [search, setSearch] = useState('');\n const { marketplaceServices, notifications, clients, vendors } = useCrewFoundryStore();\n\n const serviceMessages = useMemo<ServiceMessage[]>(() => {\n return notifications.slice(0, 20).map((notification, index) => {\n const service = marketplaceServices[index % Math.max(marketplaceServices.length, 1)];\n const counterparty =\n clients[index % Math.max(clients.length, 1)]?.name ||\n vendors[index % Math.max(vendors.length, 1)]?.name ||\n 'Marketplace Partner';\n\n return {\n id: notification.id,\n from: service?.provider || counterparty,\n company: counterparty,\n message: notification.message,\n time: timeAgo(notification.createdAt),\n unread: !notification.read,\n };\n });\n }, [clients, marketplaceServices, notifications, vendors]);\n\n const filtered = serviceMessages.filter((message) =>\n `${message.from} ${message.company} ${message.message}`\n .toLowerCase()\n .includes(search.toLowerCase())\n );\n\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>Service Messages</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">Communication with service providers</p>\n <PagePurpose className=\"mt-1\">Message freelancers and clients about your engagements — keep all marketplace conversations in one organized inbox.</PagePurpose>\n </div>\n\n <div className=\"relative max-w-sm\">\n <Search className=\"absolute top-1/2 left-3 h-4 w-4 -translate-y-1/2 text-text-secondary\" />\n <Input\n placeholder=\"Search messages...\"\n className=\"pl-9\"\n value={search}\n onChange={(event) => setSearch(event.target.value)}\n />\n </div>\n\n <GlassCard treatment=\"glass\" glow className=\"border-border-seam\">\n <CardContent className=\"p-0\">\n {filtered.length === 0 ? (\n <div className=\"p-6\">\n <IllustratedEmptyState\n illustration=\"empty-notifications\"\n title=\"No messages\"\n description=\"Conversations with providers and clients will appear here.\"\n />\n </div>\n ) : (\n filtered.map((message) => (\n <div\n key={message.id}\n className={`flex cursor-pointer items-center gap-3 border-b p-4 last:border-0 hover:bg-bg-sunken/50 ${message.unread ? 'bg-status-info-bg/30' : ''}`}\n >\n <div className=\"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-full bg-action-primary-bg/10 text-sm font-bold\">\n {message.from\n .split(' ')\n .map((part) => part[0])\n .join('')}\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center justify-between\">\n <p className={`text-sm ${message.unread ? 'font-bold' : 'font-medium'}`}>\n {message.from}\n </p>\n <span className=\"text-xs text-text-secondary\">{message.time}</span>\n </div>\n <p className=\"text-xs text-text-secondary\">{message.company}</p>\n <p className=\"mt-0.5 truncate text-xs text-text-secondary\">{message.message}</p>\n </div>\n {message.unread ? (\n <div className=\"h-2 w-2 flex-shrink-0 rounded-full bg-status-info-text\" />\n ) : null}\n </div>\n ))\n )}\n </CardContent>\n </GlassCard>\n </div>\n );\n}\n"],"mappings":";;;;;;AAqBA,IAAM,KAAW,MAA0B;CACzC,IAAM,IAAS,IAAI,KAAK,EAAM;AAC9B,KAAI,OAAO,MAAM,EAAO,SAAS,CAAC,CAChC,QAAO;CAET,IAAM,IAAQ,KAAK,IAAI,GAAG,KAAK,OAAO,KAAK,KAAK,GAAG,EAAO,SAAS,KAAK,MAAO,KAAK,IAAI,CAAC;AACzF,QAAO,IAAQ,KAAK,GAAG,EAAM,cAAc,GAAG,KAAK,MAAM,IAAQ,GAAG,CAAC;;AAGvE,SAAgB,IAA+B;CAC7C,IAAM,CAAC,GAAQ,KAAa,EAAS,GAAG,EAClC,EAAE,wBAAqB,kBAAe,YAAS,eAAY,GAAqB,EAqBhF,IAnBkB,QACf,EAAc,MAAM,GAAG,GAAG,CAAC,KAAK,GAAc,MAAU;EAC7D,IAAM,IAAU,EAAoB,IAAQ,KAAK,IAAI,EAAoB,QAAQ,EAAE,GAC7E,IACJ,EAAQ,IAAQ,KAAK,IAAI,EAAQ,QAAQ,EAAE,GAAG,QAC9C,EAAQ,IAAQ,KAAK,IAAI,EAAQ,QAAQ,EAAE,GAAG,QAC9C;AAEF,SAAO;GACL,IAAI,EAAa;GACjB,MAAM,GAAS,YAAY;GAC3B,SAAS;GACT,SAAS,EAAa;GACtB,MAAM,EAAQ,EAAa,UAAU;GACrC,QAAQ,CAAC,EAAa;GACvB;GACD,EACD;EAAC;EAAS;EAAqB;EAAe;EAAQ,CAAC,CAEzB,QAAQ,MACvC,GAAG,EAAQ,KAAK,GAAG,EAAQ,QAAQ,GAAG,EAAQ,UAC3C,aAAa,CACb,SAAS,EAAO,aAAa,CAAC,CAClC;AAED,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,OAAD,EAAA,UAAA;IACE,kBAAC,MAAD;KAAI,WAAU;eACZ,kBAAC,GAAD,EAAA,UAAc,oBAA+B,CAAA;KAC1C,CAAA;IACL,kBAAC,KAAD;KAAG,WAAU;eAA8B;KAAwC,CAAA;IACnF,kBAAC,GAAD;KAAa,WAAU;eAAO;KAAiI,CAAA;IAC3J,EAAA,CAAA;GAEN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,GAAD,EAAQ,WAAU,wEAAyE,CAAA,EAC3F,kBAAC,GAAD;KACE,aAAY;KACZ,WAAU;KACV,OAAO;KACP,WAAW,MAAU,EAAU,EAAM,OAAO,MAAM;KAClD,CAAA,CACE;;GAEN,kBAAC,GAAD;IAAW,WAAU;IAAQ,MAAA;IAAK,WAAU;cAC1C,kBAAC,GAAD;KAAa,WAAU;eACpB,EAAS,WAAW,IACnB,kBAAC,OAAD;MAAK,WAAU;gBACb,kBAAC,GAAD;OACE,cAAa;OACb,OAAM;OACN,aAAY;OACZ,CAAA;MACE,CAAA,GAEN,EAAS,KAAK,MACd,kBAAC,OAAD;MAEE,WAAW,2FAA2F,EAAQ,SAAS,yBAAyB;gBAFlJ;OAIE,kBAAC,OAAD;QAAK,WAAU;kBACZ,EAAQ,KACN,MAAM,IAAI,CACV,KAAK,MAAS,EAAK,GAAG,CACtB,KAAK,GAAG;QACP,CAAA;OACN,kBAAC,OAAD;QAAK,WAAU;kBAAf;SACE,kBAAC,OAAD;UAAK,WAAU;oBAAf,CACE,kBAAC,KAAD;WAAG,WAAW,WAAW,EAAQ,SAAS,cAAc;qBACrD,EAAQ;WACP,CAAA,EACJ,kBAAC,QAAD;WAAM,WAAU;qBAA+B,EAAQ;WAAY,CAAA,CAC/D;;SACN,kBAAC,KAAD;UAAG,WAAU;oBAA+B,EAAQ;UAAY,CAAA;SAChE,kBAAC,KAAD;UAAG,WAAU;oBAA+C,EAAQ;UAAY,CAAA;SAC5E;;OACL,EAAQ,SACP,kBAAC,OAAD,EAAK,WAAU,0DAA2D,CAAA,GACxE;OACA;QAtBC,EAAQ,GAsBT,CACJ;KAEQ,CAAA;IACJ,CAAA;GACR"}
|
|
@@ -1,80 +1,98 @@
|
|
|
1
1
|
import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
|
|
2
2
|
import { Plus as t, Star as n } from "lucide-react";
|
|
3
3
|
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
4
|
-
import { Badge as a, Button as o,
|
|
4
|
+
import { Badge as a, Button as o, CardContent as s, CardHeader as c, CardTitle as l, GlassCard as u, GradientText as d, IllustratedEmptyState as f, PagePurpose as p } from "@burdenoff/fe-libs/ui";
|
|
5
5
|
//#region src/crewfoundry/pages/MarketplaceMyServicesPagePage.tsx
|
|
6
|
-
function
|
|
7
|
-
let { marketplaceServices:
|
|
6
|
+
function m() {
|
|
7
|
+
let { marketplaceServices: m } = e(), h = m.slice(0, 3);
|
|
8
8
|
return /* @__PURE__ */ i("div", {
|
|
9
9
|
className: "space-y-6 p-6",
|
|
10
10
|
children: [/* @__PURE__ */ i("div", {
|
|
11
11
|
className: "flex items-center justify-between",
|
|
12
|
-
children: [/* @__PURE__ */ i("div", { children: [
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
children: [/* @__PURE__ */ i("div", { children: [
|
|
13
|
+
/* @__PURE__ */ r("h1", {
|
|
14
|
+
className: "text-2xl font-semibold",
|
|
15
|
+
children: /* @__PURE__ */ r(d, { children: "My Services" })
|
|
16
|
+
}),
|
|
17
|
+
/* @__PURE__ */ r("p", {
|
|
18
|
+
className: "text-sm text-text-secondary",
|
|
19
|
+
children: "Manage your listed services"
|
|
20
|
+
}),
|
|
21
|
+
/* @__PURE__ */ r(p, {
|
|
22
|
+
className: "mt-1",
|
|
23
|
+
children: "Manage the services you offer to clients — list, edit, and showcase your offerings to win more work on the marketplace."
|
|
24
|
+
})
|
|
25
|
+
] }), /* @__PURE__ */ i(o, {
|
|
19
26
|
size: "sm",
|
|
20
27
|
children: [/* @__PURE__ */ r(t, { className: "h-4 w-4 mr-1" }), "Create Service"]
|
|
21
28
|
})]
|
|
22
29
|
}), /* @__PURE__ */ r("div", {
|
|
23
30
|
className: "grid gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
24
|
-
children:
|
|
25
|
-
className: "
|
|
26
|
-
children:
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
variant: e.status === "active" ? "default" : "secondary",
|
|
31
|
-
className: "text-[10px]",
|
|
32
|
-
children: e.status
|
|
33
|
-
})]
|
|
34
|
-
}) }), /* @__PURE__ */ i(c, { children: [
|
|
35
|
-
/* @__PURE__ */ r("p", {
|
|
36
|
-
className: "text-sm text-text-secondary mb-3",
|
|
37
|
-
children: e.description
|
|
38
|
-
}),
|
|
39
|
-
/* @__PURE__ */ i("div", {
|
|
40
|
-
className: "flex items-center justify-between text-sm",
|
|
41
|
-
children: [/* @__PURE__ */ i("span", {
|
|
42
|
-
className: "font-bold",
|
|
43
|
-
children: [
|
|
44
|
-
"$",
|
|
45
|
-
e.price,
|
|
46
|
-
"/",
|
|
47
|
-
e.priceType
|
|
48
|
-
]
|
|
49
|
-
}), /* @__PURE__ */ i("span", {
|
|
50
|
-
className: "flex items-center gap-1",
|
|
51
|
-
children: [
|
|
52
|
-
/* @__PURE__ */ r(n, { className: "h-3 w-3 text-yellow-500" }),
|
|
53
|
-
e.rating,
|
|
54
|
-
" (",
|
|
55
|
-
e.reviews,
|
|
56
|
-
")"
|
|
57
|
-
]
|
|
58
|
-
})]
|
|
59
|
-
}),
|
|
60
|
-
/* @__PURE__ */ i("div", {
|
|
61
|
-
className: "flex gap-2 mt-3",
|
|
62
|
-
children: [/* @__PURE__ */ r(o, {
|
|
63
|
-
variant: "outline",
|
|
64
|
-
size: "sm",
|
|
65
|
-
className: "flex-1",
|
|
66
|
-
children: "Edit"
|
|
67
|
-
}), /* @__PURE__ */ r(o, {
|
|
68
|
-
size: "sm",
|
|
69
|
-
className: "flex-1",
|
|
70
|
-
children: "View"
|
|
71
|
-
})]
|
|
31
|
+
children: h.length === 0 ? /* @__PURE__ */ r("div", {
|
|
32
|
+
className: "col-span-full",
|
|
33
|
+
children: /* @__PURE__ */ r(f, {
|
|
34
|
+
illustration: "empty-generic",
|
|
35
|
+
title: "No services listed",
|
|
36
|
+
description: "List a service to start winning work on the marketplace."
|
|
72
37
|
})
|
|
73
|
-
|
|
38
|
+
}) : h.map((e, t) => /* @__PURE__ */ i(u, {
|
|
39
|
+
treatment: t === 0 ? "glass" : "plain",
|
|
40
|
+
glow: t === 0,
|
|
41
|
+
children: [/* @__PURE__ */ r(c, { children: /* @__PURE__ */ i("div", {
|
|
42
|
+
className: "flex items-center justify-between",
|
|
43
|
+
children: [/* @__PURE__ */ r(l, {
|
|
44
|
+
className: "text-base",
|
|
45
|
+
children: e.title
|
|
46
|
+
}), /* @__PURE__ */ r(a, {
|
|
47
|
+
variant: e.status === "active" ? "default" : "secondary",
|
|
48
|
+
className: "text-[10px]",
|
|
49
|
+
children: e.status
|
|
50
|
+
})]
|
|
51
|
+
}) }), /* @__PURE__ */ i(s, { children: [
|
|
52
|
+
/* @__PURE__ */ r("p", {
|
|
53
|
+
className: "text-sm text-text-secondary mb-3",
|
|
54
|
+
children: e.description
|
|
55
|
+
}),
|
|
56
|
+
/* @__PURE__ */ i("div", {
|
|
57
|
+
className: "flex items-center justify-between text-sm",
|
|
58
|
+
children: [/* @__PURE__ */ i("span", {
|
|
59
|
+
className: "font-bold",
|
|
60
|
+
children: [
|
|
61
|
+
"$",
|
|
62
|
+
e.price,
|
|
63
|
+
"/",
|
|
64
|
+
e.priceType
|
|
65
|
+
]
|
|
66
|
+
}), /* @__PURE__ */ i("span", {
|
|
67
|
+
className: "flex items-center gap-1",
|
|
68
|
+
children: [
|
|
69
|
+
/* @__PURE__ */ r(n, { className: "h-3 w-3 text-status-warning-text" }),
|
|
70
|
+
e.rating,
|
|
71
|
+
" (",
|
|
72
|
+
e.reviews,
|
|
73
|
+
")"
|
|
74
|
+
]
|
|
75
|
+
})]
|
|
76
|
+
}),
|
|
77
|
+
/* @__PURE__ */ i("div", {
|
|
78
|
+
className: "flex gap-2 mt-3",
|
|
79
|
+
children: [/* @__PURE__ */ r(o, {
|
|
80
|
+
variant: "outline",
|
|
81
|
+
size: "sm",
|
|
82
|
+
className: "flex-1",
|
|
83
|
+
children: "Edit"
|
|
84
|
+
}), /* @__PURE__ */ r(o, {
|
|
85
|
+
size: "sm",
|
|
86
|
+
className: "flex-1",
|
|
87
|
+
children: "View"
|
|
88
|
+
})]
|
|
89
|
+
})
|
|
90
|
+
] })]
|
|
91
|
+
}, e.id))
|
|
74
92
|
})]
|
|
75
93
|
});
|
|
76
94
|
}
|
|
77
95
|
//#endregion
|
|
78
|
-
export {
|
|
96
|
+
export { m as MarketplaceMyServicesPagePage };
|
|
79
97
|
|
|
80
98
|
//# sourceMappingURL=MarketplaceMyServicesPagePage.js.map
|