@burdenoff/microfe-crewfoundry 2026.625.1 → 2026.626.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/crewfoundry/pages/AdminAdminPagePage.js +37 -29
- package/dist/crewfoundry/pages/AdminAdminPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js +50 -42
- package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js +39 -31
- package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js +52 -44
- package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js +46 -38
- 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 +30 -22
- 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 +86 -67
- 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 +37 -29
- package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js +29 -21
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js +25 -17
- package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js +42 -35
- 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 +41 -33
- package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardDashboardPagePage.js +142 -108
- package/dist/crewfoundry/pages/DashboardDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js +177 -136
- package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js +44 -36
- package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js.map +1 -1
- package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js +49 -38
- package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringApplicationsPagePage.js +26 -18
- 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 +53 -46
- package/dist/crewfoundry/pages/HiringCreateJobPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringInterviewsPagePage.js +31 -23
- package/dist/crewfoundry/pages/HiringInterviewsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js +129 -90
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringJobsPagePage.js +96 -85
- package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrDepartmentsPagePage.js +26 -18
- package/dist/crewfoundry/pages/HrDepartmentsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrEmployeesPagePage.js +47 -35
- package/dist/crewfoundry/pages/HrEmployeesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js +33 -25
- package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrPayrollPagePage.js +36 -28
- package/dist/crewfoundry/pages/HrPayrollPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js +27 -19
- package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js +27 -19
- 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 +111 -70
- package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js +65 -53
- package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCoursesPagePage.js +35 -19
- package/dist/crewfoundry/pages/LearningCoursesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js +33 -25
- package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPagePage.js +26 -18
- package/dist/crewfoundry/pages/LearningLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js +80 -55
- 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 +31 -23
- package/dist/crewfoundry/pages/LearningMyLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js +29 -21
- package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js +35 -27
- package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js +147 -112
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js +31 -27
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js +31 -23
- 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 +75 -56
- 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 +133 -92
- package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js +93 -52
- package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js +28 -20
- 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 +25 -17
- 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 +41 -33
- 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 +103 -72
- 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 +28 -20
- package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js +103 -62
- 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,88 +1,122 @@
|
|
|
1
1
|
import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
|
|
2
|
-
import { Calendar as t, DollarSign as n,
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { Calendar as t, DollarSign as n, MessageSquare as r, Users as i } from "lucide-react";
|
|
3
|
+
import { useNavigate as a } from "react-router-dom";
|
|
4
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
5
|
+
import { Badge as c, Card as l, CardContent as u, EmphasisPanel as d, GradientText as f, IllustratedEmptyState as p, NextSteps as m, PagePurpose as h } from "@burdenoff/fe-libs/ui";
|
|
5
6
|
//#region src/crewfoundry/pages/MarketplaceProjectDetailsPagePage.tsx
|
|
6
|
-
function
|
|
7
|
-
let { projects:
|
|
8
|
-
return
|
|
7
|
+
function g() {
|
|
8
|
+
let g = a(), { projects: _ } = e(), v = _[0];
|
|
9
|
+
return v ? /* @__PURE__ */ s("div", {
|
|
9
10
|
className: "space-y-6 p-6 max-w-4xl",
|
|
10
11
|
children: [
|
|
11
|
-
/* @__PURE__ */
|
|
12
|
+
/* @__PURE__ */ s("div", {
|
|
12
13
|
className: "flex items-center justify-between",
|
|
13
|
-
children: [/* @__PURE__ */
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
14
|
+
children: [/* @__PURE__ */ s("div", { children: [
|
|
15
|
+
/* @__PURE__ */ o("h1", {
|
|
16
|
+
className: "text-2xl font-semibold",
|
|
17
|
+
children: /* @__PURE__ */ o(f, { children: v.name })
|
|
18
|
+
}),
|
|
19
|
+
/* @__PURE__ */ o("p", {
|
|
20
|
+
className: "text-sm text-text-secondary",
|
|
21
|
+
children: v.description
|
|
22
|
+
}),
|
|
23
|
+
/* @__PURE__ */ o(h, {
|
|
24
|
+
className: "mt-2",
|
|
25
|
+
children: "The full picture of a marketplace project — scope, budget, timeline, and progress — so you can track delivery and stay aligned with the team doing the work."
|
|
26
|
+
})
|
|
27
|
+
] }), /* @__PURE__ */ o(c, {
|
|
28
|
+
variant: v.status === "active" ? "default" : "secondary",
|
|
29
|
+
children: v.status
|
|
22
30
|
})]
|
|
23
31
|
}),
|
|
24
|
-
/* @__PURE__ */
|
|
32
|
+
/* @__PURE__ */ o(m, {
|
|
33
|
+
storageKey: "crewfoundry-marketplace-project-details",
|
|
34
|
+
steps: [
|
|
35
|
+
{
|
|
36
|
+
id: "message",
|
|
37
|
+
label: "Message the team",
|
|
38
|
+
description: "Coordinate on scope, blockers, and next milestones.",
|
|
39
|
+
icon: /* @__PURE__ */ o(r, { className: "h-4 w-4" }),
|
|
40
|
+
onClick: () => g("../../marketplace/messaging-page")
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
id: "bookings",
|
|
44
|
+
label: "Review bookings",
|
|
45
|
+
description: "Check the engagements tied to this project.",
|
|
46
|
+
icon: /* @__PURE__ */ o(t, { className: "h-4 w-4" }),
|
|
47
|
+
onClick: () => g("../../marketplace/booking-management-page")
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
id: "earnings",
|
|
51
|
+
label: "Track earnings",
|
|
52
|
+
description: "See payouts and balances connected to your work.",
|
|
53
|
+
icon: /* @__PURE__ */ o(n, { className: "h-4 w-4" }),
|
|
54
|
+
onClick: () => g("../../marketplace/earnings-page")
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
}),
|
|
58
|
+
/* @__PURE__ */ s("div", {
|
|
25
59
|
className: "grid gap-4 md:grid-cols-4",
|
|
26
60
|
children: [
|
|
27
|
-
/* @__PURE__ */
|
|
61
|
+
/* @__PURE__ */ o(l, { children: /* @__PURE__ */ s(u, {
|
|
28
62
|
className: "p-4 text-center",
|
|
29
63
|
children: [
|
|
30
|
-
/* @__PURE__ */
|
|
31
|
-
/* @__PURE__ */
|
|
64
|
+
/* @__PURE__ */ o(n, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
|
|
65
|
+
/* @__PURE__ */ s("p", {
|
|
32
66
|
className: "text-lg font-bold",
|
|
33
67
|
children: [
|
|
34
68
|
"$",
|
|
35
|
-
(
|
|
69
|
+
(v.budget / 1e3).toFixed(0),
|
|
36
70
|
"K"
|
|
37
71
|
]
|
|
38
72
|
}),
|
|
39
|
-
/* @__PURE__ */
|
|
73
|
+
/* @__PURE__ */ o("p", {
|
|
40
74
|
className: "text-xs text-text-secondary",
|
|
41
75
|
children: "Budget"
|
|
42
76
|
})
|
|
43
77
|
]
|
|
44
78
|
}) }),
|
|
45
|
-
/* @__PURE__ */
|
|
79
|
+
/* @__PURE__ */ o(l, { children: /* @__PURE__ */ s(u, {
|
|
46
80
|
className: "p-4 text-center",
|
|
47
81
|
children: [
|
|
48
|
-
/* @__PURE__ */
|
|
49
|
-
/* @__PURE__ */
|
|
82
|
+
/* @__PURE__ */ o(n, { className: "h-5 w-5 mx-auto text-status-success-text mb-1" }),
|
|
83
|
+
/* @__PURE__ */ s("p", {
|
|
50
84
|
className: "text-lg font-bold",
|
|
51
85
|
children: [
|
|
52
86
|
"$",
|
|
53
|
-
(
|
|
87
|
+
(v.spent / 1e3).toFixed(0),
|
|
54
88
|
"K"
|
|
55
89
|
]
|
|
56
90
|
}),
|
|
57
|
-
/* @__PURE__ */
|
|
91
|
+
/* @__PURE__ */ o("p", {
|
|
58
92
|
className: "text-xs text-text-secondary",
|
|
59
93
|
children: "Spent"
|
|
60
94
|
})
|
|
61
95
|
]
|
|
62
96
|
}) }),
|
|
63
|
-
/* @__PURE__ */
|
|
97
|
+
/* @__PURE__ */ o(l, { children: /* @__PURE__ */ s(u, {
|
|
64
98
|
className: "p-4 text-center",
|
|
65
99
|
children: [
|
|
66
|
-
/* @__PURE__ */ i
|
|
67
|
-
/* @__PURE__ */
|
|
100
|
+
/* @__PURE__ */ o(i, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
|
|
101
|
+
/* @__PURE__ */ o("p", {
|
|
68
102
|
className: "text-lg font-bold",
|
|
69
|
-
children:
|
|
103
|
+
children: v.teamName
|
|
70
104
|
}),
|
|
71
|
-
/* @__PURE__ */
|
|
105
|
+
/* @__PURE__ */ o("p", {
|
|
72
106
|
className: "text-xs text-text-secondary",
|
|
73
107
|
children: "Team"
|
|
74
108
|
})
|
|
75
109
|
]
|
|
76
110
|
}) }),
|
|
77
|
-
/* @__PURE__ */
|
|
111
|
+
/* @__PURE__ */ o(l, { children: /* @__PURE__ */ s(u, {
|
|
78
112
|
className: "p-4 text-center",
|
|
79
113
|
children: [
|
|
80
|
-
/* @__PURE__ */
|
|
81
|
-
/* @__PURE__ */
|
|
114
|
+
/* @__PURE__ */ o(t, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
|
|
115
|
+
/* @__PURE__ */ o("p", {
|
|
82
116
|
className: "text-lg font-bold",
|
|
83
|
-
children:
|
|
117
|
+
children: v.endDate
|
|
84
118
|
}),
|
|
85
|
-
/* @__PURE__ */
|
|
119
|
+
/* @__PURE__ */ o("p", {
|
|
86
120
|
className: "text-xs text-text-secondary",
|
|
87
121
|
children: "Deadline"
|
|
88
122
|
})
|
|
@@ -90,63 +124,70 @@ function p() {
|
|
|
90
124
|
}) })
|
|
91
125
|
]
|
|
92
126
|
}),
|
|
93
|
-
/* @__PURE__ */
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
"
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
127
|
+
/* @__PURE__ */ s(d, { children: [
|
|
128
|
+
/* @__PURE__ */ o("div", {
|
|
129
|
+
className: "mb-2 text-lg font-semibold",
|
|
130
|
+
children: "Progress"
|
|
131
|
+
}),
|
|
132
|
+
/* @__PURE__ */ s("div", {
|
|
133
|
+
className: "space-y-2",
|
|
134
|
+
children: [/* @__PURE__ */ s("div", {
|
|
135
|
+
className: "flex justify-between text-sm",
|
|
136
|
+
children: [/* @__PURE__ */ s("span", { children: [
|
|
137
|
+
v.completedTasks,
|
|
138
|
+
" of ",
|
|
139
|
+
v.tasks,
|
|
140
|
+
" tasks"
|
|
141
|
+
] }), /* @__PURE__ */ s("span", {
|
|
142
|
+
className: "font-medium",
|
|
143
|
+
children: [v.progress, "%"]
|
|
144
|
+
})]
|
|
145
|
+
}), /* @__PURE__ */ o("div", {
|
|
146
|
+
className: "h-3 bg-bg-sunken rounded overflow-hidden",
|
|
147
|
+
children: /* @__PURE__ */ o("div", {
|
|
148
|
+
className: "h-3 bg-action-primary-bg rounded",
|
|
149
|
+
style: { width: `${v.progress}%` }
|
|
150
|
+
})
|
|
105
151
|
})]
|
|
106
|
-
}),
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
className: "text-sm",
|
|
142
|
-
children: m.endDate
|
|
143
|
-
})] })
|
|
144
|
-
]
|
|
145
|
-
})] })] })
|
|
152
|
+
}),
|
|
153
|
+
/* @__PURE__ */ s("div", {
|
|
154
|
+
className: "grid grid-cols-2 gap-4 mt-4",
|
|
155
|
+
children: [
|
|
156
|
+
/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("p", {
|
|
157
|
+
className: "text-xs text-text-secondary",
|
|
158
|
+
children: "Manager"
|
|
159
|
+
}), /* @__PURE__ */ o("p", {
|
|
160
|
+
className: "text-sm font-medium",
|
|
161
|
+
children: v.managerName
|
|
162
|
+
})] }),
|
|
163
|
+
/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("p", {
|
|
164
|
+
className: "text-xs text-text-secondary",
|
|
165
|
+
children: "Priority"
|
|
166
|
+
}), /* @__PURE__ */ o(c, {
|
|
167
|
+
variant: v.priority === "critical" ? "destructive" : v.priority === "high" ? "default" : "secondary",
|
|
168
|
+
children: v.priority
|
|
169
|
+
})] }),
|
|
170
|
+
/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("p", {
|
|
171
|
+
className: "text-xs text-text-secondary",
|
|
172
|
+
children: "Start Date"
|
|
173
|
+
}), /* @__PURE__ */ o("p", {
|
|
174
|
+
className: "text-sm",
|
|
175
|
+
children: v.startDate
|
|
176
|
+
})] }),
|
|
177
|
+
/* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("p", {
|
|
178
|
+
className: "text-xs text-text-secondary",
|
|
179
|
+
children: "End Date"
|
|
180
|
+
}), /* @__PURE__ */ o("p", {
|
|
181
|
+
className: "text-sm",
|
|
182
|
+
children: v.endDate
|
|
183
|
+
})] })
|
|
184
|
+
]
|
|
185
|
+
})
|
|
186
|
+
] })
|
|
146
187
|
]
|
|
147
|
-
}) : /* @__PURE__ */
|
|
188
|
+
}) : /* @__PURE__ */ o("div", {
|
|
148
189
|
className: "p-6",
|
|
149
|
-
children: /* @__PURE__ */
|
|
190
|
+
children: /* @__PURE__ */ o(p, {
|
|
150
191
|
illustration: "empty-search",
|
|
151
192
|
title: "Project not found",
|
|
152
193
|
description: "This project is no longer available."
|
|
@@ -154,6 +195,6 @@ function p() {
|
|
|
154
195
|
});
|
|
155
196
|
}
|
|
156
197
|
//#endregion
|
|
157
|
-
export {
|
|
198
|
+
export { g as MarketplaceProjectDetailsPagePage };
|
|
158
199
|
|
|
159
200
|
//# sourceMappingURL=MarketplaceProjectDetailsPagePage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarketplaceProjectDetailsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceProjectDetailsPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Card,\n CardContent,\n
|
|
1
|
+
{"version":3,"file":"MarketplaceProjectDetailsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceProjectDetailsPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Card,\n CardContent,\n EmphasisPanel,\n GradientText,\n IllustratedEmptyState,\n NextSteps,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { Calendar, DollarSign, MessageSquare, Users } from 'lucide-react';\nimport { useNavigate } from 'react-router-dom';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function MarketplaceProjectDetailsPagePage() {\n const navigate = useNavigate();\n const { projects } = useCrewFoundryStore();\n const project = projects[0];\n if (!project)\n return (\n <div className=\"p-6\">\n <IllustratedEmptyState\n illustration=\"empty-search\"\n title=\"Project not found\"\n description=\"This project is no longer available.\"\n />\n </div>\n );\n\n return (\n <div className=\"space-y-6 p-6 max-w-4xl\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>{project.name}</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">{project.description}</p>\n <PagePurpose className=\"mt-2\">\n The full picture of a marketplace project — scope, budget, timeline, and progress — so\n you can track delivery and stay aligned with the team doing the work.\n </PagePurpose>\n </div>\n <Badge variant={project.status === 'active' ? 'default' : 'secondary'}>\n {project.status}\n </Badge>\n </div>\n\n <NextSteps\n storageKey=\"crewfoundry-marketplace-project-details\"\n steps={[\n {\n id: 'message',\n label: 'Message the team',\n description: 'Coordinate on scope, blockers, and next milestones.',\n icon: <MessageSquare className=\"h-4 w-4\" />,\n onClick: () => navigate('../../marketplace/messaging-page'),\n },\n {\n id: 'bookings',\n label: 'Review bookings',\n description: 'Check the engagements tied to this project.',\n icon: <Calendar className=\"h-4 w-4\" />,\n onClick: () => navigate('../../marketplace/booking-management-page'),\n },\n {\n id: 'earnings',\n label: 'Track earnings',\n description: 'See payouts and balances connected to your work.',\n icon: <DollarSign className=\"h-4 w-4\" />,\n onClick: () => navigate('../../marketplace/earnings-page'),\n },\n ]}\n />\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n <Card>\n <CardContent className=\"p-4 text-center\">\n <DollarSign className=\"h-5 w-5 mx-auto text-text-secondary mb-1\" />\n <p className=\"text-lg font-bold\">${(project.budget / 1000).toFixed(0)}K</p>\n <p className=\"text-xs text-text-secondary\">Budget</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <DollarSign className=\"h-5 w-5 mx-auto text-status-success-text mb-1\" />\n <p className=\"text-lg font-bold\">${(project.spent / 1000).toFixed(0)}K</p>\n <p className=\"text-xs text-text-secondary\">Spent</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <Users className=\"h-5 w-5 mx-auto text-text-secondary mb-1\" />\n <p className=\"text-lg font-bold\">{project.teamName}</p>\n <p className=\"text-xs text-text-secondary\">Team</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <Calendar className=\"h-5 w-5 mx-auto text-text-secondary mb-1\" />\n <p className=\"text-lg font-bold\">{project.endDate}</p>\n <p className=\"text-xs text-text-secondary\">Deadline</p>\n </CardContent>\n </Card>\n </div>\n <EmphasisPanel>\n <div className=\"mb-2 text-lg font-semibold\">Progress</div>\n <div className=\"space-y-2\">\n <div className=\"flex justify-between text-sm\">\n <span>\n {project.completedTasks} of {project.tasks} tasks\n </span>\n <span className=\"font-medium\">{project.progress}%</span>\n </div>\n <div className=\"h-3 bg-bg-sunken rounded overflow-hidden\">\n <div\n className=\"h-3 bg-action-primary-bg rounded\"\n style={{ width: `${project.progress}%` }}\n />\n </div>\n </div>\n <div className=\"grid grid-cols-2 gap-4 mt-4\">\n <div>\n <p className=\"text-xs text-text-secondary\">Manager</p>\n <p className=\"text-sm font-medium\">{project.managerName}</p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Priority</p>\n <Badge\n variant={\n project.priority === 'critical'\n ? 'destructive'\n : project.priority === 'high'\n ? 'default'\n : 'secondary'\n }\n >\n {project.priority}\n </Badge>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Start Date</p>\n <p className=\"text-sm\">{project.startDate}</p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">End Date</p>\n <p className=\"text-sm\">{project.endDate}</p>\n </div>\n </div>\n </EmphasisPanel>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,83 +1,117 @@
|
|
|
1
1
|
import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
|
|
2
2
|
import { Clock as t, DollarSign as n, MessageSquare as r, Star as i, Users as a } from "lucide-react";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { useNavigate as o } from "react-router-dom";
|
|
4
|
+
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
5
|
+
import { Badge as l, Button as u, Card as d, CardContent as f, EmphasisPanel as p, GradientText as m, IllustratedEmptyState as h, NextSteps as g, PagePurpose as _ } from "@burdenoff/fe-libs/ui";
|
|
5
6
|
//#region src/crewfoundry/pages/MarketplaceServiceDetailsPagePage.tsx
|
|
6
|
-
function
|
|
7
|
-
let { marketplaceServices:
|
|
8
|
-
return
|
|
7
|
+
function v() {
|
|
8
|
+
let v = o(), { marketplaceServices: y } = e(), b = y[0];
|
|
9
|
+
return b ? /* @__PURE__ */ c("div", {
|
|
9
10
|
className: "space-y-6 p-6 max-w-4xl",
|
|
10
11
|
children: [
|
|
11
|
-
/* @__PURE__ */
|
|
12
|
+
/* @__PURE__ */ c("div", {
|
|
12
13
|
className: "flex items-center justify-between",
|
|
13
|
-
children: [/* @__PURE__ */
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
children: [/* @__PURE__ */ c("div", { children: [
|
|
15
|
+
/* @__PURE__ */ s("h1", {
|
|
16
|
+
className: "text-2xl font-semibold",
|
|
17
|
+
children: /* @__PURE__ */ s(m, { children: b.title })
|
|
18
|
+
}),
|
|
19
|
+
/* @__PURE__ */ c("p", {
|
|
20
|
+
className: "text-sm text-text-secondary",
|
|
21
|
+
children: ["by ", b.provider]
|
|
22
|
+
}),
|
|
23
|
+
/* @__PURE__ */ s(_, {
|
|
24
|
+
className: "mt-2",
|
|
25
|
+
children: "See exactly what this service includes, what it costs, and how others rated it — use it to compare offerings and hire the right provider for your project."
|
|
26
|
+
})
|
|
27
|
+
] }), /* @__PURE__ */ c("div", {
|
|
20
28
|
className: "flex gap-2",
|
|
21
|
-
children: [/* @__PURE__ */
|
|
29
|
+
children: [/* @__PURE__ */ c(u, {
|
|
22
30
|
variant: "outline",
|
|
23
|
-
children: [/* @__PURE__ */
|
|
24
|
-
}), /* @__PURE__ */
|
|
31
|
+
children: [/* @__PURE__ */ s(r, { className: "h-4 w-4 mr-1" }), "Contact"]
|
|
32
|
+
}), /* @__PURE__ */ s(u, { children: "Hire Now" })]
|
|
25
33
|
})]
|
|
26
34
|
}),
|
|
27
|
-
/* @__PURE__ */ s(
|
|
35
|
+
/* @__PURE__ */ s(g, {
|
|
36
|
+
storageKey: "crewfoundry-service-details",
|
|
37
|
+
steps: [
|
|
38
|
+
{
|
|
39
|
+
id: "contact",
|
|
40
|
+
label: "Message the provider",
|
|
41
|
+
description: "Ask questions before you commit to hiring.",
|
|
42
|
+
icon: /* @__PURE__ */ s(r, { className: "h-4 w-4" }),
|
|
43
|
+
onClick: () => v("../../marketplace/messaging-page")
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: "compare",
|
|
47
|
+
label: "Compare other services",
|
|
48
|
+
description: "Browse similar offerings on the marketplace.",
|
|
49
|
+
icon: /* @__PURE__ */ s(a, { className: "h-4 w-4" }),
|
|
50
|
+
onClick: () => v("../../marketplace/marketplace-services-page")
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
id: "bookings",
|
|
54
|
+
label: "Manage your bookings",
|
|
55
|
+
description: "Track engagements you have already arranged.",
|
|
56
|
+
icon: /* @__PURE__ */ s(t, { className: "h-4 w-4" }),
|
|
57
|
+
onClick: () => v("../../marketplace/booking-management-page")
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}),
|
|
61
|
+
/* @__PURE__ */ c("div", {
|
|
28
62
|
className: "grid gap-4 md:grid-cols-4",
|
|
29
63
|
children: [
|
|
30
|
-
/* @__PURE__ */
|
|
64
|
+
/* @__PURE__ */ s(d, { children: /* @__PURE__ */ c(f, {
|
|
31
65
|
className: "p-4 text-center",
|
|
32
66
|
children: [
|
|
33
|
-
/* @__PURE__ */
|
|
34
|
-
/* @__PURE__ */
|
|
67
|
+
/* @__PURE__ */ s(n, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
|
|
68
|
+
/* @__PURE__ */ c("p", {
|
|
35
69
|
className: "text-lg font-bold",
|
|
36
|
-
children: ["$",
|
|
70
|
+
children: ["$", b.price.toLocaleString()]
|
|
37
71
|
}),
|
|
38
|
-
/* @__PURE__ */
|
|
72
|
+
/* @__PURE__ */ c("p", {
|
|
39
73
|
className: "text-xs text-text-secondary",
|
|
40
|
-
children: ["per ",
|
|
74
|
+
children: ["per ", b.priceType]
|
|
41
75
|
})
|
|
42
76
|
]
|
|
43
77
|
}) }),
|
|
44
|
-
/* @__PURE__ */
|
|
78
|
+
/* @__PURE__ */ s(d, { children: /* @__PURE__ */ c(f, {
|
|
45
79
|
className: "p-4 text-center",
|
|
46
80
|
children: [
|
|
47
|
-
/* @__PURE__ */
|
|
48
|
-
/* @__PURE__ */
|
|
81
|
+
/* @__PURE__ */ s(i, { className: "h-5 w-5 mx-auto text-status-warning-text mb-1" }),
|
|
82
|
+
/* @__PURE__ */ c("p", {
|
|
49
83
|
className: "text-lg font-bold",
|
|
50
|
-
children: [
|
|
84
|
+
children: [b.rating, "/5"]
|
|
51
85
|
}),
|
|
52
|
-
/* @__PURE__ */
|
|
86
|
+
/* @__PURE__ */ c("p", {
|
|
53
87
|
className: "text-xs text-text-secondary",
|
|
54
|
-
children: [
|
|
88
|
+
children: [b.reviews, " reviews"]
|
|
55
89
|
})
|
|
56
90
|
]
|
|
57
91
|
}) }),
|
|
58
|
-
/* @__PURE__ */
|
|
92
|
+
/* @__PURE__ */ s(d, { children: /* @__PURE__ */ c(f, {
|
|
59
93
|
className: "p-4 text-center",
|
|
60
94
|
children: [
|
|
61
|
-
/* @__PURE__ */
|
|
62
|
-
/* @__PURE__ */
|
|
95
|
+
/* @__PURE__ */ s(t, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
|
|
96
|
+
/* @__PURE__ */ s("p", {
|
|
63
97
|
className: "text-lg font-bold",
|
|
64
|
-
children:
|
|
98
|
+
children: b.deliveryTime
|
|
65
99
|
}),
|
|
66
|
-
/* @__PURE__ */
|
|
100
|
+
/* @__PURE__ */ s("p", {
|
|
67
101
|
className: "text-xs text-text-secondary",
|
|
68
102
|
children: "Delivery"
|
|
69
103
|
})
|
|
70
104
|
]
|
|
71
105
|
}) }),
|
|
72
|
-
/* @__PURE__ */
|
|
106
|
+
/* @__PURE__ */ s(d, { children: /* @__PURE__ */ c(f, {
|
|
73
107
|
className: "p-4 text-center",
|
|
74
108
|
children: [
|
|
75
|
-
/* @__PURE__ */
|
|
76
|
-
/* @__PURE__ */
|
|
109
|
+
/* @__PURE__ */ s(a, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
|
|
110
|
+
/* @__PURE__ */ s("p", {
|
|
77
111
|
className: "text-lg font-bold",
|
|
78
|
-
children:
|
|
112
|
+
children: b.category
|
|
79
113
|
}),
|
|
80
|
-
/* @__PURE__ */
|
|
114
|
+
/* @__PURE__ */ s("p", {
|
|
81
115
|
className: "text-xs text-text-secondary",
|
|
82
116
|
children: "Category"
|
|
83
117
|
})
|
|
@@ -85,20 +119,27 @@ function g() {
|
|
|
85
119
|
}) })
|
|
86
120
|
]
|
|
87
121
|
}),
|
|
88
|
-
/* @__PURE__ */
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
children:
|
|
96
|
-
},
|
|
97
|
-
|
|
122
|
+
/* @__PURE__ */ c(p, { children: [
|
|
123
|
+
/* @__PURE__ */ s("div", {
|
|
124
|
+
className: "mb-2 text-lg font-semibold",
|
|
125
|
+
children: "About this Service"
|
|
126
|
+
}),
|
|
127
|
+
/* @__PURE__ */ s("p", {
|
|
128
|
+
className: "text-sm text-text-secondary",
|
|
129
|
+
children: b.description
|
|
130
|
+
}),
|
|
131
|
+
/* @__PURE__ */ s("div", {
|
|
132
|
+
className: "flex flex-wrap gap-1 mt-3",
|
|
133
|
+
children: b.skills.map((e) => /* @__PURE__ */ s(l, {
|
|
134
|
+
variant: "outline",
|
|
135
|
+
children: e
|
|
136
|
+
}, e))
|
|
137
|
+
})
|
|
138
|
+
] })
|
|
98
139
|
]
|
|
99
|
-
}) : /* @__PURE__ */
|
|
140
|
+
}) : /* @__PURE__ */ s("div", {
|
|
100
141
|
className: "p-6",
|
|
101
|
-
children: /* @__PURE__ */
|
|
142
|
+
children: /* @__PURE__ */ s(h, {
|
|
102
143
|
illustration: "empty-search",
|
|
103
144
|
title: "Service not found",
|
|
104
145
|
description: "This service is no longer available."
|
|
@@ -106,6 +147,6 @@ function g() {
|
|
|
106
147
|
});
|
|
107
148
|
}
|
|
108
149
|
//#endregion
|
|
109
|
-
export {
|
|
150
|
+
export { v as MarketplaceServiceDetailsPagePage };
|
|
110
151
|
|
|
111
152
|
//# sourceMappingURL=MarketplaceServiceDetailsPagePage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarketplaceServiceDetailsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceServiceDetailsPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n
|
|
1
|
+
{"version":3,"file":"MarketplaceServiceDetailsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceServiceDetailsPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n Card,\n CardContent,\n EmphasisPanel,\n GradientText,\n IllustratedEmptyState,\n NextSteps,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { Clock, DollarSign, MessageSquare, Star, Users } from 'lucide-react';\nimport { useNavigate } from 'react-router-dom';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function MarketplaceServiceDetailsPagePage() {\n const navigate = useNavigate();\n const { marketplaceServices } = useCrewFoundryStore();\n const svc = marketplaceServices[0];\n if (!svc)\n return (\n <div className=\"p-6\">\n <IllustratedEmptyState\n illustration=\"empty-search\"\n title=\"Service not found\"\n description=\"This service is no longer available.\"\n />\n </div>\n );\n\n return (\n <div className=\"space-y-6 p-6 max-w-4xl\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>{svc.title}</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">by {svc.provider}</p>\n <PagePurpose className=\"mt-2\">\n See exactly what this service includes, what it costs, and how others rated it — use it\n to compare offerings and hire the right provider for your project.\n </PagePurpose>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\">\n <MessageSquare className=\"h-4 w-4 mr-1\" />\n Contact\n </Button>\n <Button>Hire Now</Button>\n </div>\n </div>\n\n <NextSteps\n storageKey=\"crewfoundry-service-details\"\n steps={[\n {\n id: 'contact',\n label: 'Message the provider',\n description: 'Ask questions before you commit to hiring.',\n icon: <MessageSquare className=\"h-4 w-4\" />,\n onClick: () => navigate('../../marketplace/messaging-page'),\n },\n {\n id: 'compare',\n label: 'Compare other services',\n description: 'Browse similar offerings on the marketplace.',\n icon: <Users className=\"h-4 w-4\" />,\n onClick: () => navigate('../../marketplace/marketplace-services-page'),\n },\n {\n id: 'bookings',\n label: 'Manage your bookings',\n description: 'Track engagements you have already arranged.',\n icon: <Clock className=\"h-4 w-4\" />,\n onClick: () => navigate('../../marketplace/booking-management-page'),\n },\n ]}\n />\n\n <div className=\"grid gap-4 md:grid-cols-4\">\n <Card>\n <CardContent className=\"p-4 text-center\">\n <DollarSign className=\"h-5 w-5 mx-auto text-text-secondary mb-1\" />\n <p className=\"text-lg font-bold\">${svc.price.toLocaleString()}</p>\n <p className=\"text-xs text-text-secondary\">per {svc.priceType}</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <Star className=\"h-5 w-5 mx-auto text-status-warning-text mb-1\" />\n <p className=\"text-lg font-bold\">{svc.rating}/5</p>\n <p className=\"text-xs text-text-secondary\">{svc.reviews} reviews</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <Clock className=\"h-5 w-5 mx-auto text-text-secondary mb-1\" />\n <p className=\"text-lg font-bold\">{svc.deliveryTime}</p>\n <p className=\"text-xs text-text-secondary\">Delivery</p>\n </CardContent>\n </Card>\n <Card>\n <CardContent className=\"p-4 text-center\">\n <Users className=\"h-5 w-5 mx-auto text-text-secondary mb-1\" />\n <p className=\"text-lg font-bold\">{svc.category}</p>\n <p className=\"text-xs text-text-secondary\">Category</p>\n </CardContent>\n </Card>\n </div>\n <EmphasisPanel>\n <div className=\"mb-2 text-lg font-semibold\">About this Service</div>\n <p className=\"text-sm text-text-secondary\">{svc.description}</p>\n <div className=\"flex flex-wrap gap-1 mt-3\">\n {svc.skills.map((s) => (\n <Badge key={s} variant=\"outline\">\n {s}\n </Badge>\n ))}\n </div>\n </EmphasisPanel>\n </div>\n );\n}\n"],"mappings":"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"}
|