@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,24 +1,31 @@
|
|
|
1
1
|
import { useState as e } from "react";
|
|
2
2
|
import { FolderKanban as t, Save as n } from "lucide-react";
|
|
3
3
|
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
4
|
-
import { Button as a,
|
|
4
|
+
import { Button as a, EmphasisPanel as o, GradientText as s, Input as c, PagePurpose as l, Textarea as u } from "@burdenoff/fe-libs/ui";
|
|
5
5
|
//#region src/crewfoundry/pages/ProjectsCreateProjectPagePage.tsx
|
|
6
|
-
function
|
|
7
|
-
let [
|
|
6
|
+
function d() {
|
|
7
|
+
let [d, f] = e(""), [p, m] = e(""), [h, g] = e(""), [_, v] = e(""), [y, b] = e("");
|
|
8
8
|
return /* @__PURE__ */ i("div", {
|
|
9
9
|
className: "space-y-6 p-6 max-w-3xl",
|
|
10
10
|
children: [
|
|
11
|
-
/* @__PURE__ */ i("div", { children: [
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
11
|
+
/* @__PURE__ */ i("div", { children: [
|
|
12
|
+
/* @__PURE__ */ r("h1", {
|
|
13
|
+
className: "text-2xl font-semibold",
|
|
14
|
+
children: /* @__PURE__ */ r(s, { children: "Create Project" })
|
|
15
|
+
}),
|
|
16
|
+
/* @__PURE__ */ r("p", {
|
|
17
|
+
className: "text-sm text-text-secondary",
|
|
18
|
+
children: "Set up a new project for your team"
|
|
19
|
+
}),
|
|
20
|
+
/* @__PURE__ */ r(l, {
|
|
21
|
+
className: "mt-1",
|
|
22
|
+
children: "Start a new project — define its scope, budget, and team here so you can begin tracking work toward a clear goal."
|
|
23
|
+
})
|
|
24
|
+
] }),
|
|
25
|
+
/* @__PURE__ */ i(o, { children: [/* @__PURE__ */ i("div", {
|
|
26
|
+
className: "mb-4 flex items-center gap-2 text-lg font-semibold",
|
|
20
27
|
children: [/* @__PURE__ */ r(t, { className: "h-5 w-5" }), "Project Details"]
|
|
21
|
-
})
|
|
28
|
+
}), /* @__PURE__ */ i("div", {
|
|
22
29
|
className: "space-y-4",
|
|
23
30
|
children: [
|
|
24
31
|
/* @__PURE__ */ i("div", {
|
|
@@ -26,10 +33,10 @@ function f() {
|
|
|
26
33
|
children: [/* @__PURE__ */ r("label", {
|
|
27
34
|
className: "text-sm font-medium",
|
|
28
35
|
children: "Project Name"
|
|
29
|
-
}), /* @__PURE__ */ r(
|
|
36
|
+
}), /* @__PURE__ */ r(c, {
|
|
30
37
|
placeholder: "e.g. HR Analytics Dashboard v3",
|
|
31
|
-
value:
|
|
32
|
-
onChange: (e) =>
|
|
38
|
+
value: d,
|
|
39
|
+
onChange: (e) => f(e.target.value)
|
|
33
40
|
})]
|
|
34
41
|
}),
|
|
35
42
|
/* @__PURE__ */ i("div", {
|
|
@@ -37,11 +44,11 @@ function f() {
|
|
|
37
44
|
children: [/* @__PURE__ */ r("label", {
|
|
38
45
|
className: "text-sm font-medium",
|
|
39
46
|
children: "Description"
|
|
40
|
-
}), /* @__PURE__ */ r(
|
|
47
|
+
}), /* @__PURE__ */ r(u, {
|
|
41
48
|
placeholder: "Describe the project objectives and scope...",
|
|
42
49
|
rows: 3,
|
|
43
|
-
value:
|
|
44
|
-
onChange: (e) =>
|
|
50
|
+
value: p,
|
|
51
|
+
onChange: (e) => m(e.target.value)
|
|
45
52
|
})]
|
|
46
53
|
}),
|
|
47
54
|
/* @__PURE__ */ i("div", {
|
|
@@ -51,20 +58,20 @@ function f() {
|
|
|
51
58
|
children: [/* @__PURE__ */ r("label", {
|
|
52
59
|
className: "text-sm font-medium",
|
|
53
60
|
children: "Start Date"
|
|
54
|
-
}), /* @__PURE__ */ r(
|
|
61
|
+
}), /* @__PURE__ */ r(c, {
|
|
55
62
|
type: "date",
|
|
56
|
-
value:
|
|
57
|
-
onChange: (e) =>
|
|
63
|
+
value: h,
|
|
64
|
+
onChange: (e) => g(e.target.value)
|
|
58
65
|
})]
|
|
59
66
|
}), /* @__PURE__ */ i("div", {
|
|
60
67
|
className: "space-y-2",
|
|
61
68
|
children: [/* @__PURE__ */ r("label", {
|
|
62
69
|
className: "text-sm font-medium",
|
|
63
70
|
children: "End Date"
|
|
64
|
-
}), /* @__PURE__ */ r(
|
|
71
|
+
}), /* @__PURE__ */ r(c, {
|
|
65
72
|
type: "date",
|
|
66
|
-
value:
|
|
67
|
-
onChange: (e) =>
|
|
73
|
+
value: _,
|
|
74
|
+
onChange: (e) => v(e.target.value)
|
|
68
75
|
})]
|
|
69
76
|
})]
|
|
70
77
|
}),
|
|
@@ -73,11 +80,11 @@ function f() {
|
|
|
73
80
|
children: [/* @__PURE__ */ r("label", {
|
|
74
81
|
className: "text-sm font-medium",
|
|
75
82
|
children: "Budget ($)"
|
|
76
|
-
}), /* @__PURE__ */ r(
|
|
83
|
+
}), /* @__PURE__ */ r(c, {
|
|
77
84
|
type: "number",
|
|
78
85
|
placeholder: "e.g. 250000",
|
|
79
|
-
value:
|
|
80
|
-
onChange: (e) =>
|
|
86
|
+
value: y,
|
|
87
|
+
onChange: (e) => b(e.target.value)
|
|
81
88
|
})]
|
|
82
89
|
})
|
|
83
90
|
]
|
|
@@ -93,6 +100,6 @@ function f() {
|
|
|
93
100
|
});
|
|
94
101
|
}
|
|
95
102
|
//#endregion
|
|
96
|
-
export {
|
|
103
|
+
export { d as ProjectsCreateProjectPagePage };
|
|
97
104
|
|
|
98
105
|
//# sourceMappingURL=ProjectsCreateProjectPagePage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectsCreateProjectPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/ProjectsCreateProjectPagePage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport {\n Button,\n
|
|
1
|
+
{"version":3,"file":"ProjectsCreateProjectPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/ProjectsCreateProjectPagePage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport {\n Button,\n EmphasisPanel,\n GradientText,\n Input,\n PagePurpose,\n Textarea,\n} from '@burdenoff/fe-libs/ui';\nimport { FolderKanban, Save } from 'lucide-react';\n\nexport function ProjectsCreateProjectPagePage() {\n const [name, setName] = useState('');\n const [description, setDescription] = useState('');\n const [startDate, setStartDate] = useState('');\n const [endDate, setEndDate] = useState('');\n const [budget, setBudget] = useState('');\n\n return (\n <div className=\"space-y-6 p-6 max-w-3xl\">\n <div>\n <h1 className=\"text-2xl font-semibold\">\n <GradientText>Create Project</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">Set up a new project for your team</p>\n <PagePurpose className=\"mt-1\">Start a new project — define its scope, budget, and team here so you can begin tracking work toward a clear goal.</PagePurpose>\n </div>\n <EmphasisPanel>\n <div className=\"mb-4 flex items-center gap-2 text-lg font-semibold\">\n <FolderKanban className=\"h-5 w-5\" />\n Project Details\n </div>\n <div className=\"space-y-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Project Name</label>\n <Input\n placeholder=\"e.g. HR Analytics Dashboard v3\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n />\n </div>\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Description</label>\n <Textarea\n placeholder=\"Describe the project objectives and scope...\"\n rows={3}\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Start Date</label>\n <Input type=\"date\" value={startDate} onChange={(e) => setStartDate(e.target.value)} />\n </div>\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">End Date</label>\n <Input type=\"date\" value={endDate} onChange={(e) => setEndDate(e.target.value)} />\n </div>\n </div>\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium\">Budget ($)</label>\n <Input\n type=\"number\"\n placeholder=\"e.g. 250000\"\n value={budget}\n onChange={(e) => setBudget(e.target.value)}\n />\n </div>\n </div>\n </EmphasisPanel>\n <div className=\"flex justify-end gap-2\">\n <Button variant=\"outline\">Save as Draft</Button>\n <Button>\n <Save className=\"h-4 w-4 mr-1\" />\n Create Project\n </Button>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AAWA,SAAgB,IAAgC;CAC9C,IAAM,CAAC,GAAM,KAAW,EAAS,GAAG,EAC9B,CAAC,GAAa,KAAkB,EAAS,GAAG,EAC5C,CAAC,GAAW,KAAgB,EAAS,GAAG,EACxC,CAAC,GAAS,KAAc,EAAS,GAAG,EACpC,CAAC,GAAQ,KAAa,EAAS,GAAG;AAExC,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,OAAD,EAAA,UAAA;IACE,kBAAC,MAAD;KAAI,WAAU;eACZ,kBAAC,GAAD,EAAA,UAAc,kBAA6B,CAAA;KACxC,CAAA;IACL,kBAAC,KAAD;KAAG,WAAU;eAA8B;KAAsC,CAAA;IACjF,kBAAC,GAAD;KAAa,WAAU;eAAO;KAA+H,CAAA;IACzJ,EAAA,CAAA;GACN,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,GAAD,EAAc,WAAU,WAAY,CAAA,EAAA,kBAEhC;OACN,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,SAAD;OAAO,WAAU;iBAAsB;OAAoB,CAAA,EAC3D,kBAAC,GAAD;OACE,aAAY;OACZ,OAAO;OACP,WAAW,MAAM,EAAQ,EAAE,OAAO,MAAM;OACxC,CAAA,CACE;;KACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,SAAD;OAAO,WAAU;iBAAsB;OAAmB,CAAA,EAC1D,kBAAC,GAAD;OACE,aAAY;OACZ,MAAM;OACN,OAAO;OACP,WAAW,MAAM,EAAe,EAAE,OAAO,MAAM;OAC/C,CAAA,CACE;;KACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,SAAD;QAAO,WAAU;kBAAsB;QAAkB,CAAA,EACzD,kBAAC,GAAD;QAAO,MAAK;QAAO,OAAO;QAAW,WAAW,MAAM,EAAa,EAAE,OAAO,MAAM;QAAI,CAAA,CAClF;UACN,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,SAAD;QAAO,WAAU;kBAAsB;QAAgB,CAAA,EACvD,kBAAC,GAAD;QAAO,MAAK;QAAO,OAAO;QAAS,WAAW,MAAM,EAAW,EAAE,OAAO,MAAM;QAAI,CAAA,CAC9E;SACF;;KACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,SAAD;OAAO,WAAU;iBAAsB;OAAkB,CAAA,EACzD,kBAAC,GAAD;OACE,MAAK;OACL,aAAY;OACZ,OAAO;OACP,WAAW,MAAM,EAAU,EAAE,OAAO,MAAM;OAC1C,CAAA,CACE;;KACF;MACQ,EAAA,CAAA;GAChB,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,GAAD;KAAQ,SAAQ;eAAU;KAAsB,CAAA,EAChD,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAM,WAAU,gBAAiB,CAAA,EAAA,iBAE1B,EAAA,CAAA,CACL;;GACF"}
|
|
@@ -1,90 +1,118 @@
|
|
|
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, FolderKanban as r, Target as i, Users as a } from "lucide-react";
|
|
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, Card as u, CardContent as d, CardHeader as f, CardTitle as p, EmphasisPanel as m, GradientText as h, IllustratedEmptyState as g, NextSteps as _, PagePurpose as v } from "@burdenoff/fe-libs/ui";
|
|
5
6
|
//#region src/crewfoundry/pages/ProjectsProjectDetailsPagePage.tsx
|
|
6
|
-
function
|
|
7
|
-
let { projects:
|
|
8
|
-
return
|
|
7
|
+
function y() {
|
|
8
|
+
let y = o(), { projects: b } = e(), x = b[1];
|
|
9
|
+
return x ? /* @__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
|
+
children: [/* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("h1", {
|
|
14
15
|
className: "text-2xl font-semibold",
|
|
15
|
-
children:
|
|
16
|
-
}), /* @__PURE__ */
|
|
16
|
+
children: /* @__PURE__ */ s(h, { children: x.name })
|
|
17
|
+
}), /* @__PURE__ */ s("p", {
|
|
17
18
|
className: "text-sm text-text-secondary",
|
|
18
|
-
children:
|
|
19
|
-
})] }), /* @__PURE__ */
|
|
19
|
+
children: x.description
|
|
20
|
+
})] }), /* @__PURE__ */ c("div", {
|
|
20
21
|
className: "flex gap-1",
|
|
21
|
-
children: [/* @__PURE__ */
|
|
22
|
-
variant:
|
|
23
|
-
children:
|
|
24
|
-
}), /* @__PURE__ */
|
|
25
|
-
variant:
|
|
26
|
-
children:
|
|
22
|
+
children: [/* @__PURE__ */ s(l, {
|
|
23
|
+
variant: x.priority === "critical" ? "destructive" : "default",
|
|
24
|
+
children: x.priority
|
|
25
|
+
}), /* @__PURE__ */ s(l, {
|
|
26
|
+
variant: x.status === "active" ? "default" : "secondary",
|
|
27
|
+
children: x.status
|
|
27
28
|
})]
|
|
28
29
|
})]
|
|
29
30
|
}),
|
|
30
|
-
/* @__PURE__ */
|
|
31
|
+
/* @__PURE__ */ s(v, { children: "Track a single project end-to-end — progress, budget, team, and timeline in one place — so you can spot risks early and keep delivery on schedule and on budget." }),
|
|
32
|
+
/* @__PURE__ */ s(_, {
|
|
33
|
+
storageKey: "crewfoundry-project-details",
|
|
34
|
+
steps: [
|
|
35
|
+
{
|
|
36
|
+
id: "all-projects",
|
|
37
|
+
label: "View all projects",
|
|
38
|
+
description: "See how this project compares across your portfolio.",
|
|
39
|
+
icon: /* @__PURE__ */ s(r, { className: "h-4 w-4" }),
|
|
40
|
+
onClick: () => y("../../projects/projects-page")
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
id: "team",
|
|
44
|
+
label: "Check the team",
|
|
45
|
+
description: "Review who is working on this and their workload.",
|
|
46
|
+
icon: /* @__PURE__ */ s(a, { className: "h-4 w-4" }),
|
|
47
|
+
onClick: () => y("../../teams/teams-page")
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
id: "new-project",
|
|
51
|
+
label: "Start a new project",
|
|
52
|
+
description: "Kick off the next piece of work.",
|
|
53
|
+
icon: /* @__PURE__ */ s(i, { className: "h-4 w-4" }),
|
|
54
|
+
onClick: () => y("../../projects/create-project-page")
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
}),
|
|
58
|
+
/* @__PURE__ */ c("div", {
|
|
31
59
|
className: "grid gap-4 md:grid-cols-4",
|
|
32
60
|
children: [
|
|
33
|
-
/* @__PURE__ */
|
|
61
|
+
/* @__PURE__ */ s(u, { children: /* @__PURE__ */ c(d, {
|
|
34
62
|
className: "p-4 text-center",
|
|
35
63
|
children: [
|
|
36
|
-
/* @__PURE__ */
|
|
37
|
-
/* @__PURE__ */
|
|
64
|
+
/* @__PURE__ */ s(i, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
|
|
65
|
+
/* @__PURE__ */ c("p", {
|
|
38
66
|
className: "text-lg font-bold",
|
|
39
|
-
children: [
|
|
67
|
+
children: [x.progress, "%"]
|
|
40
68
|
}),
|
|
41
|
-
/* @__PURE__ */
|
|
69
|
+
/* @__PURE__ */ s("p", {
|
|
42
70
|
className: "text-xs text-text-secondary",
|
|
43
71
|
children: "Progress"
|
|
44
72
|
})
|
|
45
73
|
]
|
|
46
74
|
}) }),
|
|
47
|
-
/* @__PURE__ */
|
|
75
|
+
/* @__PURE__ */ s(u, { children: /* @__PURE__ */ c(d, {
|
|
48
76
|
className: "p-4 text-center",
|
|
49
77
|
children: [
|
|
50
|
-
/* @__PURE__ */
|
|
51
|
-
/* @__PURE__ */
|
|
78
|
+
/* @__PURE__ */ s(n, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
|
|
79
|
+
/* @__PURE__ */ c("p", {
|
|
52
80
|
className: "text-lg font-bold",
|
|
53
81
|
children: [
|
|
54
82
|
"$",
|
|
55
|
-
(
|
|
83
|
+
(x.budget / 1e3).toFixed(0),
|
|
56
84
|
"K"
|
|
57
85
|
]
|
|
58
86
|
}),
|
|
59
|
-
/* @__PURE__ */
|
|
87
|
+
/* @__PURE__ */ s("p", {
|
|
60
88
|
className: "text-xs text-text-secondary",
|
|
61
89
|
children: "Budget"
|
|
62
90
|
})
|
|
63
91
|
]
|
|
64
92
|
}) }),
|
|
65
|
-
/* @__PURE__ */
|
|
93
|
+
/* @__PURE__ */ s(u, { children: /* @__PURE__ */ c(d, {
|
|
66
94
|
className: "p-4 text-center",
|
|
67
95
|
children: [
|
|
68
|
-
/* @__PURE__ */ a
|
|
69
|
-
/* @__PURE__ */
|
|
96
|
+
/* @__PURE__ */ s(a, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
|
|
97
|
+
/* @__PURE__ */ s("p", {
|
|
70
98
|
className: "text-lg font-bold",
|
|
71
|
-
children:
|
|
99
|
+
children: x.teamName
|
|
72
100
|
}),
|
|
73
|
-
/* @__PURE__ */
|
|
101
|
+
/* @__PURE__ */ s("p", {
|
|
74
102
|
className: "text-xs text-text-secondary",
|
|
75
103
|
children: "Team"
|
|
76
104
|
})
|
|
77
105
|
]
|
|
78
106
|
}) }),
|
|
79
|
-
/* @__PURE__ */
|
|
107
|
+
/* @__PURE__ */ s(u, { children: /* @__PURE__ */ c(d, {
|
|
80
108
|
className: "p-4 text-center",
|
|
81
109
|
children: [
|
|
82
|
-
/* @__PURE__ */
|
|
83
|
-
/* @__PURE__ */
|
|
110
|
+
/* @__PURE__ */ s(t, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
|
|
111
|
+
/* @__PURE__ */ s("p", {
|
|
84
112
|
className: "text-lg font-bold",
|
|
85
|
-
children:
|
|
113
|
+
children: x.endDate
|
|
86
114
|
}),
|
|
87
|
-
/* @__PURE__ */
|
|
115
|
+
/* @__PURE__ */ s("p", {
|
|
88
116
|
className: "text-xs text-text-secondary",
|
|
89
117
|
children: "Deadline"
|
|
90
118
|
})
|
|
@@ -92,72 +120,79 @@ function f() {
|
|
|
92
120
|
}) })
|
|
93
121
|
]
|
|
94
122
|
}),
|
|
95
|
-
/* @__PURE__ */
|
|
123
|
+
/* @__PURE__ */ c(m, { children: [/* @__PURE__ */ s("div", {
|
|
124
|
+
className: "mb-2 text-lg font-semibold",
|
|
125
|
+
children: "Task Progress"
|
|
126
|
+
}), /* @__PURE__ */ c("div", {
|
|
96
127
|
className: "space-y-2",
|
|
97
|
-
children: [/* @__PURE__ */
|
|
128
|
+
children: [/* @__PURE__ */ c("div", {
|
|
98
129
|
className: "flex justify-between text-sm",
|
|
99
|
-
children: [/* @__PURE__ */
|
|
100
|
-
|
|
130
|
+
children: [/* @__PURE__ */ c("span", { children: [
|
|
131
|
+
x.completedTasks,
|
|
101
132
|
" of ",
|
|
102
|
-
|
|
133
|
+
x.tasks,
|
|
103
134
|
" tasks completed"
|
|
104
|
-
] }), /* @__PURE__ */
|
|
135
|
+
] }), /* @__PURE__ */ c("span", {
|
|
105
136
|
className: "font-medium",
|
|
106
|
-
children: [
|
|
137
|
+
children: [x.progress, "%"]
|
|
107
138
|
})]
|
|
108
|
-
}), /* @__PURE__ */
|
|
139
|
+
}), /* @__PURE__ */ s("div", {
|
|
109
140
|
className: "h-3 bg-bg-sunken rounded overflow-hidden",
|
|
110
|
-
children: /* @__PURE__ */
|
|
141
|
+
children: /* @__PURE__ */ s("div", {
|
|
111
142
|
className: "h-3 bg-action-primary-bg rounded",
|
|
112
|
-
style: { width: `${
|
|
143
|
+
style: { width: `${x.progress}%` }
|
|
113
144
|
})
|
|
114
145
|
})]
|
|
115
|
-
})
|
|
116
|
-
/* @__PURE__ */
|
|
146
|
+
})] }),
|
|
147
|
+
/* @__PURE__ */ c(u, { children: [/* @__PURE__ */ s(f, { children: /* @__PURE__ */ s(p, { children: "Budget Tracking" }) }), /* @__PURE__ */ c(d, { children: [/* @__PURE__ */ c("div", {
|
|
117
148
|
className: "space-y-2",
|
|
118
|
-
children: [/* @__PURE__ */
|
|
149
|
+
children: [/* @__PURE__ */ c("div", {
|
|
119
150
|
className: "flex justify-between text-sm",
|
|
120
|
-
children: [/* @__PURE__ */
|
|
151
|
+
children: [/* @__PURE__ */ c("span", { children: [
|
|
121
152
|
"Spent $",
|
|
122
|
-
(
|
|
153
|
+
(x.spent / 1e3).toFixed(0),
|
|
123
154
|
"K of $",
|
|
124
|
-
(
|
|
155
|
+
(x.budget / 1e3).toFixed(0),
|
|
125
156
|
"K"
|
|
126
|
-
] }), /* @__PURE__ */
|
|
157
|
+
] }), /* @__PURE__ */ c("span", {
|
|
127
158
|
className: "font-medium",
|
|
128
|
-
children: [Math.round(
|
|
159
|
+
children: [Math.round(x.spent / x.budget * 100), "%"]
|
|
129
160
|
})]
|
|
130
|
-
}), /* @__PURE__ */
|
|
161
|
+
}), /* @__PURE__ */ s("div", {
|
|
131
162
|
className: "h-3 bg-bg-sunken rounded overflow-hidden",
|
|
132
|
-
children: /* @__PURE__ */
|
|
133
|
-
className: `h-3 rounded ${
|
|
134
|
-
style: { width: `${Math.round(
|
|
163
|
+
children: /* @__PURE__ */ s("div", {
|
|
164
|
+
className: `h-3 rounded ${x.spent / x.budget > .9 ? "bg-status-error-text" : "bg-status-success-text"}`,
|
|
165
|
+
style: { width: `${Math.round(x.spent / x.budget * 100)}%` }
|
|
135
166
|
})
|
|
136
167
|
})]
|
|
137
|
-
}), /* @__PURE__ */
|
|
168
|
+
}), /* @__PURE__ */ c("div", {
|
|
138
169
|
className: "grid grid-cols-2 gap-4 mt-4 text-sm",
|
|
139
|
-
children: [/* @__PURE__ */
|
|
170
|
+
children: [/* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("p", {
|
|
140
171
|
className: "text-xs text-text-secondary",
|
|
141
172
|
children: "Manager"
|
|
142
|
-
}), /* @__PURE__ */
|
|
173
|
+
}), /* @__PURE__ */ s("p", {
|
|
143
174
|
className: "font-medium",
|
|
144
|
-
children:
|
|
145
|
-
})] }), /* @__PURE__ */
|
|
175
|
+
children: x.managerName
|
|
176
|
+
})] }), /* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("p", {
|
|
146
177
|
className: "text-xs text-text-secondary",
|
|
147
178
|
children: "Timeline"
|
|
148
|
-
}), /* @__PURE__ */
|
|
149
|
-
|
|
179
|
+
}), /* @__PURE__ */ c("p", { children: [
|
|
180
|
+
x.startDate,
|
|
150
181
|
" — ",
|
|
151
|
-
|
|
182
|
+
x.endDate
|
|
152
183
|
] })] })]
|
|
153
184
|
})] })] })
|
|
154
185
|
]
|
|
155
|
-
}) : /* @__PURE__ */
|
|
156
|
-
className: "p-6
|
|
157
|
-
children:
|
|
186
|
+
}) : /* @__PURE__ */ s("div", {
|
|
187
|
+
className: "p-6",
|
|
188
|
+
children: /* @__PURE__ */ s(g, {
|
|
189
|
+
illustration: "empty-search",
|
|
190
|
+
title: "Project not found",
|
|
191
|
+
description: "This project is no longer available."
|
|
192
|
+
})
|
|
158
193
|
});
|
|
159
194
|
}
|
|
160
195
|
//#endregion
|
|
161
|
-
export {
|
|
196
|
+
export { y as ProjectsProjectDetailsPagePage };
|
|
162
197
|
|
|
163
198
|
//# sourceMappingURL=ProjectsProjectDetailsPagePage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectsProjectDetailsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/ProjectsProjectDetailsPagePage.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"ProjectsProjectDetailsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/ProjectsProjectDetailsPagePage.tsx"],"sourcesContent":["import {\n Badge,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n EmphasisPanel,\n GradientText,\n IllustratedEmptyState,\n NextSteps,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { Calendar, DollarSign, FolderKanban, Target, Users } from 'lucide-react';\nimport { useNavigate } from 'react-router-dom';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function ProjectsProjectDetailsPagePage() {\n const navigate = useNavigate();\n const { projects } = useCrewFoundryStore();\n const project = projects[1]; // Show second project for variety\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 </div>\n <div className=\"flex gap-1\">\n <Badge variant={project.priority === 'critical' ? 'destructive' : 'default'}>\n {project.priority}\n </Badge>\n <Badge variant={project.status === 'active' ? 'default' : 'secondary'}>\n {project.status}\n </Badge>\n </div>\n </div>\n <PagePurpose>\n Track a single project end-to-end — progress, budget, team, and timeline in one place — so\n you can spot risks early and keep delivery on schedule and on budget.\n </PagePurpose>\n\n <NextSteps\n storageKey=\"crewfoundry-project-details\"\n steps={[\n {\n id: 'all-projects',\n label: 'View all projects',\n description: 'See how this project compares across your portfolio.',\n icon: <FolderKanban className=\"h-4 w-4\" />,\n onClick: () => navigate('../../projects/projects-page'),\n },\n {\n id: 'team',\n label: 'Check the team',\n description: 'Review who is working on this and their workload.',\n icon: <Users className=\"h-4 w-4\" />,\n onClick: () => navigate('../../teams/teams-page'),\n },\n {\n id: 'new-project',\n label: 'Start a new project',\n description: 'Kick off the next piece of work.',\n icon: <Target className=\"h-4 w-4\" />,\n onClick: () => navigate('../../projects/create-project-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 <Target className=\"h-5 w-5 mx-auto text-text-secondary mb-1\" />\n <p className=\"text-lg font-bold\">{project.progress}%</p>\n <p className=\"text-xs text-text-secondary\">Progress</p>\n </CardContent>\n </Card>\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 <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\">Task 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 completed\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 </EmphasisPanel>\n <Card>\n <CardHeader>\n <CardTitle>Budget Tracking</CardTitle>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-2\">\n <div className=\"flex justify-between text-sm\">\n <span>\n Spent ${(project.spent / 1000).toFixed(0)}K of ${(project.budget / 1000).toFixed(0)}\n K\n </span>\n <span className=\"font-medium\">\n {Math.round((project.spent / project.budget) * 100)}%\n </span>\n </div>\n <div className=\"h-3 bg-bg-sunken rounded overflow-hidden\">\n <div\n className={`h-3 rounded ${project.spent / project.budget > 0.9 ? 'bg-status-error-text' : 'bg-status-success-text'}`}\n style={{ width: `${Math.round((project.spent / project.budget) * 100)}%` }}\n />\n </div>\n </div>\n <div className=\"grid grid-cols-2 gap-4 mt-4 text-sm\">\n <div>\n <p className=\"text-xs text-text-secondary\">Manager</p>\n <p className=\"font-medium\">{project.managerName}</p>\n </div>\n <div>\n <p className=\"text-xs text-text-secondary\">Timeline</p>\n <p>\n {project.startDate} — {project.endDate}\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,39 +1,55 @@
|
|
|
1
1
|
import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
|
|
2
2
|
import { Plus as t } from "lucide-react";
|
|
3
3
|
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
4
|
-
import { Badge as i, Button as a,
|
|
5
|
-
import { useI18n as
|
|
4
|
+
import { Badge as i, Button as a, CardContent as o, CardDescription 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
|
+
import { useI18n as m } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
6
6
|
//#region src/crewfoundry/pages/ProjectsProjectsPagePage.tsx
|
|
7
|
-
function
|
|
8
|
-
let { t:
|
|
9
|
-
let n =
|
|
7
|
+
function h() {
|
|
8
|
+
let { t: h } = m(), { projects: g } = e(), _ = g.filter((e) => e.status === "active"), v = (e, t) => {
|
|
9
|
+
let n = h(e);
|
|
10
10
|
return n === e ? t : n;
|
|
11
11
|
};
|
|
12
12
|
return /* @__PURE__ */ r("div", {
|
|
13
13
|
className: "space-y-6 p-6",
|
|
14
14
|
children: [/* @__PURE__ */ r("div", {
|
|
15
15
|
className: "flex items-center justify-between",
|
|
16
|
-
children: [/* @__PURE__ */ r("div", { children: [
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
16
|
+
children: [/* @__PURE__ */ r("div", { children: [
|
|
17
|
+
/* @__PURE__ */ n("h1", {
|
|
18
|
+
className: "text-2xl font-semibold",
|
|
19
|
+
children: /* @__PURE__ */ n(d, { children: v("crewfoundry.projects.title", "Projects") })
|
|
20
|
+
}),
|
|
21
|
+
/* @__PURE__ */ r("p", {
|
|
22
|
+
className: "text-sm text-text-secondary",
|
|
23
|
+
children: [
|
|
24
|
+
_.length,
|
|
25
|
+
" ",
|
|
26
|
+
v("crewfoundry.projects.summary.activeProjects", "active projects")
|
|
27
|
+
]
|
|
28
|
+
}),
|
|
29
|
+
/* @__PURE__ */ n(p, {
|
|
30
|
+
className: "mt-1",
|
|
31
|
+
children: "All your projects in one view — track status, progress, and budgets so nothing stalls and everything ships on time."
|
|
32
|
+
})
|
|
33
|
+
] }), /* @__PURE__ */ r(a, {
|
|
27
34
|
size: "sm",
|
|
28
|
-
children: [/* @__PURE__ */ n(t, { className: "h-4 w-4 mr-1" }),
|
|
35
|
+
children: [/* @__PURE__ */ n(t, { className: "h-4 w-4 mr-1" }), v("crewfoundry.projects.actions.newProject", "New Project")]
|
|
29
36
|
})]
|
|
30
37
|
}), /* @__PURE__ */ n("div", {
|
|
31
38
|
className: "grid gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
32
|
-
children:
|
|
39
|
+
children: g.length === 0 ? /* @__PURE__ */ n("div", {
|
|
40
|
+
className: "col-span-full",
|
|
41
|
+
children: /* @__PURE__ */ n(f, {
|
|
42
|
+
illustration: "empty-data",
|
|
43
|
+
title: "No projects yet",
|
|
44
|
+
description: "Create your first project to start tracking work."
|
|
45
|
+
})
|
|
46
|
+
}) : g.map((e, t) => /* @__PURE__ */ r(u, {
|
|
47
|
+
treatment: t === 0 ? "glass" : "plain",
|
|
48
|
+
glow: t === 0,
|
|
33
49
|
className: "hover:shadow-md transition-shadow cursor-pointer",
|
|
34
|
-
children: [/* @__PURE__ */ r(
|
|
50
|
+
children: [/* @__PURE__ */ r(c, { children: [/* @__PURE__ */ r("div", {
|
|
35
51
|
className: "flex items-center justify-between",
|
|
36
|
-
children: [/* @__PURE__ */ n(
|
|
52
|
+
children: [/* @__PURE__ */ n(l, {
|
|
37
53
|
className: "text-base",
|
|
38
54
|
children: e.name
|
|
39
55
|
}), /* @__PURE__ */ n(i, {
|
|
@@ -41,7 +57,7 @@ function f() {
|
|
|
41
57
|
className: "text-[10px]",
|
|
42
58
|
children: e.status
|
|
43
59
|
})]
|
|
44
|
-
}), /* @__PURE__ */ n(
|
|
60
|
+
}), /* @__PURE__ */ n(s, { children: e.description })] }), /* @__PURE__ */ r(o, { children: [
|
|
45
61
|
/* @__PURE__ */ r("div", {
|
|
46
62
|
className: "space-y-2 mb-3",
|
|
47
63
|
children: [/* @__PURE__ */ r("div", {
|
|
@@ -51,7 +67,7 @@ function f() {
|
|
|
51
67
|
"/",
|
|
52
68
|
e.tasks,
|
|
53
69
|
" ",
|
|
54
|
-
|
|
70
|
+
v("crewfoundry.projects.card.tasks", "tasks")
|
|
55
71
|
] }), /* @__PURE__ */ r("span", { children: [e.progress, "%"] })]
|
|
56
72
|
}), /* @__PURE__ */ n("div", {
|
|
57
73
|
className: "h-2 bg-bg-sunken rounded overflow-hidden",
|
|
@@ -65,23 +81,23 @@ function f() {
|
|
|
65
81
|
className: "grid grid-cols-2 gap-2 text-xs text-text-secondary",
|
|
66
82
|
children: [
|
|
67
83
|
/* @__PURE__ */ r("span", { children: [
|
|
68
|
-
|
|
84
|
+
v("crewfoundry.projects.card.team", "Team"),
|
|
69
85
|
": ",
|
|
70
86
|
e.teamName
|
|
71
87
|
] }),
|
|
72
88
|
/* @__PURE__ */ r("span", { children: [
|
|
73
|
-
|
|
89
|
+
v("crewfoundry.projects.card.manager", "Manager"),
|
|
74
90
|
": ",
|
|
75
91
|
e.managerName
|
|
76
92
|
] }),
|
|
77
93
|
/* @__PURE__ */ r("span", { children: [
|
|
78
|
-
|
|
94
|
+
v("crewfoundry.projects.card.budget", "Budget"),
|
|
79
95
|
": $",
|
|
80
96
|
(e.budget / 1e3).toFixed(0),
|
|
81
97
|
"K"
|
|
82
98
|
] }),
|
|
83
99
|
/* @__PURE__ */ r("span", { children: [
|
|
84
|
-
|
|
100
|
+
v("crewfoundry.projects.card.spent", "Spent"),
|
|
85
101
|
": $",
|
|
86
102
|
(e.spent / 1e3).toFixed(0),
|
|
87
103
|
"K"
|
|
@@ -110,6 +126,6 @@ function f() {
|
|
|
110
126
|
});
|
|
111
127
|
}
|
|
112
128
|
//#endregion
|
|
113
|
-
export {
|
|
129
|
+
export { h as ProjectsProjectsPagePage };
|
|
114
130
|
|
|
115
131
|
//# sourceMappingURL=ProjectsProjectsPagePage.js.map
|