@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarketplaceMyServicesPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceMyServicesPagePage.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"MarketplaceMyServicesPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceMyServicesPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Button,\n CardContent,\n CardHeader,\n CardTitle,\n GlassCard,\n GradientText,\n IllustratedEmptyState,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { Plus, Star } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function MarketplaceMyServicesPagePage() {\n const { marketplaceServices } = useCrewFoundryStore();\n // Show a subset as \"my services\"\n const myServices = marketplaceServices.slice(0, 3);\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>My Services</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">Manage your listed services</p>\n <PagePurpose className=\"mt-1\">Manage the services you offer to clients — list, edit, and showcase your offerings to win more work on the marketplace.</PagePurpose>\n </div>\n <Button size=\"sm\">\n <Plus className=\"h-4 w-4 mr-1\" />\n Create Service\n </Button>\n </div>\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-3\">\n {myServices.length === 0 ? (\n <div className=\"col-span-full\">\n <IllustratedEmptyState illustration=\"empty-generic\" title=\"No services listed\" description=\"List a service to start winning work on the marketplace.\" />\n </div>\n ) : (\n myServices.map((svc, _idx) => (\n <GlassCard key={svc.id} treatment={_idx === 0 ? 'glass' : 'plain'} glow={_idx === 0}>\n <CardHeader>\n <div className=\"flex items-center justify-between\">\n <CardTitle className=\"text-base\">{svc.title}</CardTitle>\n <Badge\n variant={svc.status === 'active' ? 'default' : 'secondary'}\n className=\"text-[10px]\"\n >\n {svc.status}\n </Badge>\n </div>\n </CardHeader>\n <CardContent>\n <p className=\"text-sm text-text-secondary mb-3\">{svc.description}</p>\n <div className=\"flex items-center justify-between text-sm\">\n <span className=\"font-bold\">\n ${svc.price}/{svc.priceType}\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 <div className=\"flex gap-2 mt-3\">\n <Button variant=\"outline\" size=\"sm\" className=\"flex-1\">\n Edit\n </Button>\n <Button size=\"sm\" className=\"flex-1\">\n View\n </Button>\n </div>\n </CardContent>\n </GlassCard>\n )))}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AAcA,SAAgB,IAAgC;CAC9C,IAAM,EAAE,2BAAwB,GAAqB,EAE/C,IAAa,EAAoB,MAAM,GAAG,EAAE;AAElD,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD,EAAA,UAAA;IACE,kBAAC,MAAD;KAAI,WAAU;eACZ,kBAAC,GAAD,EAAA,UAAc,eAA0B,CAAA;KACrC,CAAA;IACL,kBAAC,KAAD;KAAG,WAAU;eAA8B;KAA+B,CAAA;IAC1E,kBAAC,GAAD;KAAa,WAAU;eAAO;KAAqI,CAAA;IAC/J,EAAA,CAAA,EACN,kBAAC,GAAD;IAAQ,MAAK;cAAb,CACE,kBAAC,GAAD,EAAM,WAAU,gBAAiB,CAAA,EAAA,iBAE1B;MACL;MACN,kBAAC,OAAD;GAAK,WAAU;aACZ,EAAW,WAAW,IACrB,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,GAAD;KAAuB,cAAa;KAAgB,OAAM;KAAqB,aAAY;KAA6D,CAAA;IACpJ,CAAA,GAEN,EAAW,KAAK,GAAK,MACrB,kBAAC,GAAD;IAAwB,WAAW,MAAS,IAAI,UAAU;IAAS,MAAM,MAAS;cAAlF,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD;MAAW,WAAU;gBAAa,EAAI;MAAkB,CAAA,EACxD,kBAAC,GAAD;MACE,SAAS,EAAI,WAAW,WAAW,YAAY;MAC/C,WAAU;gBAET,EAAI;MACC,CAAA,CACJ;QACK,CAAA,EACb,kBAAC,GAAD,EAAA,UAAA;KACE,kBAAC,KAAD;MAAG,WAAU;gBAAoC,EAAI;MAAgB,CAAA;KACrE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,QAAD;OAAM,WAAU;iBAAhB;QAA4B;QACxB,EAAI;QAAM;QAAE,EAAI;QACb;UACP,kBAAC,QAAD;OAAM,WAAU;iBAAhB;QACE,kBAAC,GAAD,EAAM,WAAU,oCAAqC,CAAA;QACpD,EAAI;QAAO;QAAG,EAAI;QAAQ;QACtB;SACH;;KACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,GAAD;OAAQ,SAAQ;OAAU,MAAK;OAAK,WAAU;iBAAS;OAE9C,CAAA,EACT,kBAAC,GAAD;OAAQ,MAAK;OAAK,WAAU;iBAAS;OAE5B,CAAA,CACL;;KACM,EAAA,CAAA,CACJ;MAhCI,EAAI,GAgCR,CACZ;GACE,CAAA,CACF"}
|
|
@@ -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,66 +124,77 @@ function d() {
|
|
|
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: f.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__ */
|
|
148
|
-
className: "p-6
|
|
149
|
-
children:
|
|
188
|
+
}) : /* @__PURE__ */ o("div", {
|
|
189
|
+
className: "p-6",
|
|
190
|
+
children: /* @__PURE__ */ o(p, {
|
|
191
|
+
illustration: "empty-search",
|
|
192
|
+
title: "Project not found",
|
|
193
|
+
description: "This project is no longer available."
|
|
194
|
+
})
|
|
150
195
|
});
|
|
151
196
|
}
|
|
152
197
|
//#endregion
|
|
153
|
-
export {
|
|
198
|
+
export { g as MarketplaceProjectDetailsPagePage };
|
|
154
199
|
|
|
155
200
|
//# sourceMappingURL=MarketplaceProjectDetailsPagePage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarketplaceProjectDetailsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceProjectDetailsPagePage.tsx"],"sourcesContent":["import {
|
|
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,23 +119,34 @@ function m() {
|
|
|
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__ */
|
|
100
|
-
className: "p-6
|
|
101
|
-
children:
|
|
140
|
+
}) : /* @__PURE__ */ s("div", {
|
|
141
|
+
className: "p-6",
|
|
142
|
+
children: /* @__PURE__ */ s(h, {
|
|
143
|
+
illustration: "empty-search",
|
|
144
|
+
title: "Service not found",
|
|
145
|
+
description: "This service is no longer available."
|
|
146
|
+
})
|
|
102
147
|
});
|
|
103
148
|
}
|
|
104
149
|
//#endregion
|
|
105
|
-
export {
|
|
150
|
+
export { v as MarketplaceServiceDetailsPagePage };
|
|
106
151
|
|
|
107
152
|
//# sourceMappingURL=MarketplaceServiceDetailsPagePage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarketplaceServiceDetailsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/MarketplaceServiceDetailsPagePage.tsx"],"sourcesContent":["import {
|
|
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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"}
|