@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.
Files changed (131) hide show
  1. package/dist/crewfoundry/pages/AdminAdminPagePage.js +100 -76
  2. package/dist/crewfoundry/pages/AdminAdminPagePage.js.map +1 -1
  3. package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js +118 -94
  4. package/dist/crewfoundry/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
  5. package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js +105 -81
  6. package/dist/crewfoundry/pages/AnalyticsEmployeeAnalyticsPagePage.js.map +1 -1
  7. package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js +134 -110
  8. package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js.map +1 -1
  9. package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js +121 -97
  10. package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js.map +1 -1
  11. package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js +28 -15
  12. package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js.map +1 -1
  13. package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js +74 -54
  14. package/dist/crewfoundry/pages/CommunicationsCallsPagePage.js.map +1 -1
  15. package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js +87 -69
  16. package/dist/crewfoundry/pages/CommunicationsDirectoryPagePage.js.map +1 -1
  17. package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js +99 -80
  18. package/dist/crewfoundry/pages/CommunicationsFilesPagePage.js.map +1 -1
  19. package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js +87 -68
  20. package/dist/crewfoundry/pages/CommunicationsMessagesPagePage.js.map +1 -1
  21. package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js +31 -15
  22. package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js.map +1 -1
  23. package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js +81 -61
  24. package/dist/crewfoundry/pages/CommunicationsVideoCallsPagePage.js.map +1 -1
  25. package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js +71 -51
  26. package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js.map +1 -1
  27. package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js +82 -58
  28. package/dist/crewfoundry/pages/CompanyCompanyDashboardPagePage.js.map +1 -1
  29. package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js +46 -39
  30. package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js.map +1 -1
  31. package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js +80 -62
  32. package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js.map +1 -1
  33. package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js +104 -80
  34. package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js.map +1 -1
  35. package/dist/crewfoundry/pages/DashboardDashboardPagePage.js +219 -151
  36. package/dist/crewfoundry/pages/DashboardDashboardPagePage.js.map +1 -1
  37. package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js +183 -142
  38. package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js.map +1 -1
  39. package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js +121 -97
  40. package/dist/crewfoundry/pages/DashboardExecutiveDashboardPage.js.map +1 -1
  41. package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js +57 -46
  42. package/dist/crewfoundry/pages/HelpApiDocumentationPagePage.js.map +1 -1
  43. package/dist/crewfoundry/pages/HiringApplicationsPagePage.js +91 -67
  44. package/dist/crewfoundry/pages/HiringApplicationsPagePage.js.map +1 -1
  45. package/dist/crewfoundry/pages/HiringCandidatesPagePage.js +112 -93
  46. package/dist/crewfoundry/pages/HiringCandidatesPagePage.js.map +1 -1
  47. package/dist/crewfoundry/pages/HiringCreateJobPagePage.js +55 -48
  48. package/dist/crewfoundry/pages/HiringCreateJobPagePage.js.map +1 -1
  49. package/dist/crewfoundry/pages/HiringInterviewsPagePage.js +70 -50
  50. package/dist/crewfoundry/pages/HiringInterviewsPagePage.js.map +1 -1
  51. package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js +140 -97
  52. package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js.map +1 -1
  53. package/dist/crewfoundry/pages/HiringJobsPagePage.js +101 -85
  54. package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
  55. package/dist/crewfoundry/pages/HrDepartmentsPagePage.js +68 -48
  56. package/dist/crewfoundry/pages/HrDepartmentsPagePage.js.map +1 -1
  57. package/dist/crewfoundry/pages/HrEmployeesPagePage.js +99 -71
  58. package/dist/crewfoundry/pages/HrEmployeesPagePage.js.map +1 -1
  59. package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js +97 -73
  60. package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js.map +1 -1
  61. package/dist/crewfoundry/pages/HrPayrollPagePage.js +100 -76
  62. package/dist/crewfoundry/pages/HrPayrollPagePage.js.map +1 -1
  63. package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js +93 -69
  64. package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js.map +1 -1
  65. package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js +65 -45
  66. package/dist/crewfoundry/pages/LearningAssessmentsPagePage.js.map +1 -1
  67. package/dist/crewfoundry/pages/LearningCertificatesPagePage.js +93 -75
  68. package/dist/crewfoundry/pages/LearningCertificatesPagePage.js.map +1 -1
  69. package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js +117 -72
  70. package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js.map +1 -1
  71. package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js +66 -54
  72. package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js.map +1 -1
  73. package/dist/crewfoundry/pages/LearningCoursesPagePage.js +36 -20
  74. package/dist/crewfoundry/pages/LearningCoursesPagePage.js.map +1 -1
  75. package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js +90 -66
  76. package/dist/crewfoundry/pages/LearningLearningAnalyticsPagePage.js.map +1 -1
  77. package/dist/crewfoundry/pages/LearningLearningPagePage.js +81 -57
  78. package/dist/crewfoundry/pages/LearningLearningPagePage.js.map +1 -1
  79. package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js +90 -65
  80. package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js.map +1 -1
  81. package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js +33 -17
  82. package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js.map +1 -1
  83. package/dist/crewfoundry/pages/LearningMyLearningPagePage.js +83 -59
  84. package/dist/crewfoundry/pages/LearningMyLearningPagePage.js.map +1 -1
  85. package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js +68 -48
  86. package/dist/crewfoundry/pages/MarketplaceBookingManagementPagePage.js.map +1 -1
  87. package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js +80 -60
  88. package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js.map +1 -1
  89. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js +153 -118
  90. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js.map +1 -1
  91. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js +42 -37
  92. package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePagePage.js.map +1 -1
  93. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js +67 -47
  94. package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js.map +1 -1
  95. package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js +104 -85
  96. package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js.map +1 -1
  97. package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js +76 -57
  98. package/dist/crewfoundry/pages/MarketplaceMessagingPagePage.js.map +1 -1
  99. package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js +78 -60
  100. package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js.map +1 -1
  101. package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js +138 -93
  102. package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js.map +1 -1
  103. package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js +98 -53
  104. package/dist/crewfoundry/pages/MarketplaceServiceDetailsPagePage.js.map +1 -1
  105. package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js +69 -49
  106. package/dist/crewfoundry/pages/PaymentsEscrowPagePage.js.map +1 -1
  107. package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js +84 -65
  108. package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js.map +1 -1
  109. package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js +76 -52
  110. package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js.map +1 -1
  111. package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js +58 -40
  112. package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js.map +1 -1
  113. package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js +85 -65
  114. package/dist/crewfoundry/pages/PaymentsSecurityPagePage.js.map +1 -1
  115. package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js +36 -29
  116. package/dist/crewfoundry/pages/ProjectsCreateProjectPagePage.js.map +1 -1
  117. package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js +108 -73
  118. package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js.map +1 -1
  119. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js +43 -27
  120. package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js.map +1 -1
  121. package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js +67 -47
  122. package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js.map +1 -1
  123. package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js +108 -63
  124. package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js.map +1 -1
  125. package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js +83 -64
  126. package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js.map +1 -1
  127. package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js +185 -144
  128. package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js.map +1 -1
  129. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js +40 -24
  130. package/dist/crewfoundry/pages/TeamsTeamsPagePage.js.map +1 -1
  131. 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, Card as o, CardContent as s, CardHeader as c, CardTitle as l, Input as u, Textarea as d } from "@burdenoff/fe-libs/ui";
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 f() {
7
- let [f, p] = e(""), [m, h] = e(""), [g, _] = e(""), [v, y] = e(""), [b, x] = e("");
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: [/* @__PURE__ */ r("h1", {
12
- className: "text-2xl font-semibold",
13
- children: "Create Project"
14
- }), /* @__PURE__ */ r("p", {
15
- className: "text-sm text-text-secondary",
16
- children: "Set up a new project for your team"
17
- })] }),
18
- /* @__PURE__ */ i(o, { children: [/* @__PURE__ */ r(c, { children: /* @__PURE__ */ i(l, {
19
- className: "flex items-center gap-2",
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
- }) }), /* @__PURE__ */ i(s, {
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(u, {
36
+ }), /* @__PURE__ */ r(c, {
30
37
  placeholder: "e.g. HR Analytics Dashboard v3",
31
- value: f,
32
- onChange: (e) => p(e.target.value)
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(d, {
47
+ }), /* @__PURE__ */ r(u, {
41
48
  placeholder: "Describe the project objectives and scope...",
42
49
  rows: 3,
43
- value: m,
44
- onChange: (e) => h(e.target.value)
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(u, {
61
+ }), /* @__PURE__ */ r(c, {
55
62
  type: "date",
56
- value: g,
57
- onChange: (e) => _(e.target.value)
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(u, {
71
+ }), /* @__PURE__ */ r(c, {
65
72
  type: "date",
66
- value: v,
67
- onChange: (e) => y(e.target.value)
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(u, {
83
+ }), /* @__PURE__ */ r(c, {
77
84
  type: "number",
78
85
  placeholder: "e.g. 250000",
79
- value: b,
80
- onChange: (e) => x(e.target.value)
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 { f as ProjectsCreateProjectPagePage };
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 Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n Input,\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\">Create Project</h1>\n <p className=\"text-sm text-text-secondary\">Set up a new project for your team</p>\n </div>\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <FolderKanban className=\"h-5 w-5\" />\n Project Details\n </CardTitle>\n </CardHeader>\n <CardContent 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 </CardContent>\n </Card>\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":";;;;;AAaA,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,CACE,kBAAC,MAAD;IAAI,WAAU;cAAyB;IAAmB,CAAA,EAC1D,kBAAC,KAAD;IAAG,WAAU;cAA8B;IAAsC,CAAA,CAC7E,EAAA,CAAA;GACN,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;IAAW,WAAU;cAArB,CACE,kBAAC,GAAD,EAAc,WAAU,WAAY,CAAA,EAAA,kBAE1B;OACD,CAAA,EACb,kBAAC,GAAD;IAAa,WAAU;cAAvB;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;;KACM;MACT,EAAA,CAAA;GACP,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
+ {"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, Target as r, Users as i } from "lucide-react";
3
- import { jsx as a, jsxs as o } from "react/jsx-runtime";
4
- import { Badge as s, Card as c, CardContent as l, CardHeader as u, CardTitle as d } from "@burdenoff/fe-libs/ui";
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 f() {
7
- let { projects: f } = e(), p = f[1];
8
- return p ? /* @__PURE__ */ o("div", {
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__ */ o("div", {
12
+ /* @__PURE__ */ c("div", {
12
13
  className: "flex items-center justify-between",
13
- children: [/* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("h1", {
14
+ children: [/* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("h1", {
14
15
  className: "text-2xl font-semibold",
15
- children: p.name
16
- }), /* @__PURE__ */ a("p", {
16
+ children: /* @__PURE__ */ s(h, { children: x.name })
17
+ }), /* @__PURE__ */ s("p", {
17
18
  className: "text-sm text-text-secondary",
18
- children: p.description
19
- })] }), /* @__PURE__ */ o("div", {
19
+ children: x.description
20
+ })] }), /* @__PURE__ */ c("div", {
20
21
  className: "flex gap-1",
21
- children: [/* @__PURE__ */ a(s, {
22
- variant: p.priority === "critical" ? "destructive" : "default",
23
- children: p.priority
24
- }), /* @__PURE__ */ a(s, {
25
- variant: p.status === "active" ? "default" : "secondary",
26
- children: p.status
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__ */ o("div", {
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__ */ a(c, { children: /* @__PURE__ */ o(l, {
61
+ /* @__PURE__ */ s(u, { children: /* @__PURE__ */ c(d, {
34
62
  className: "p-4 text-center",
35
63
  children: [
36
- /* @__PURE__ */ a(r, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
37
- /* @__PURE__ */ o("p", {
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: [p.progress, "%"]
67
+ children: [x.progress, "%"]
40
68
  }),
41
- /* @__PURE__ */ a("p", {
69
+ /* @__PURE__ */ s("p", {
42
70
  className: "text-xs text-text-secondary",
43
71
  children: "Progress"
44
72
  })
45
73
  ]
46
74
  }) }),
47
- /* @__PURE__ */ a(c, { children: /* @__PURE__ */ o(l, {
75
+ /* @__PURE__ */ s(u, { children: /* @__PURE__ */ c(d, {
48
76
  className: "p-4 text-center",
49
77
  children: [
50
- /* @__PURE__ */ a(n, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
51
- /* @__PURE__ */ o("p", {
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
- (p.budget / 1e3).toFixed(0),
83
+ (x.budget / 1e3).toFixed(0),
56
84
  "K"
57
85
  ]
58
86
  }),
59
- /* @__PURE__ */ a("p", {
87
+ /* @__PURE__ */ s("p", {
60
88
  className: "text-xs text-text-secondary",
61
89
  children: "Budget"
62
90
  })
63
91
  ]
64
92
  }) }),
65
- /* @__PURE__ */ a(c, { children: /* @__PURE__ */ o(l, {
93
+ /* @__PURE__ */ s(u, { children: /* @__PURE__ */ c(d, {
66
94
  className: "p-4 text-center",
67
95
  children: [
68
- /* @__PURE__ */ a(i, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
69
- /* @__PURE__ */ a("p", {
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: p.teamName
99
+ children: x.teamName
72
100
  }),
73
- /* @__PURE__ */ a("p", {
101
+ /* @__PURE__ */ s("p", {
74
102
  className: "text-xs text-text-secondary",
75
103
  children: "Team"
76
104
  })
77
105
  ]
78
106
  }) }),
79
- /* @__PURE__ */ a(c, { children: /* @__PURE__ */ o(l, {
107
+ /* @__PURE__ */ s(u, { children: /* @__PURE__ */ c(d, {
80
108
  className: "p-4 text-center",
81
109
  children: [
82
- /* @__PURE__ */ a(t, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
83
- /* @__PURE__ */ a("p", {
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: p.endDate
113
+ children: x.endDate
86
114
  }),
87
- /* @__PURE__ */ a("p", {
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__ */ o(c, { children: [/* @__PURE__ */ a(u, { children: /* @__PURE__ */ a(d, { children: "Task Progress" }) }), /* @__PURE__ */ a(l, { children: /* @__PURE__ */ o("div", {
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__ */ o("div", {
128
+ children: [/* @__PURE__ */ c("div", {
98
129
  className: "flex justify-between text-sm",
99
- children: [/* @__PURE__ */ o("span", { children: [
100
- p.completedTasks,
130
+ children: [/* @__PURE__ */ c("span", { children: [
131
+ x.completedTasks,
101
132
  " of ",
102
- p.tasks,
133
+ x.tasks,
103
134
  " tasks completed"
104
- ] }), /* @__PURE__ */ o("span", {
135
+ ] }), /* @__PURE__ */ c("span", {
105
136
  className: "font-medium",
106
- children: [p.progress, "%"]
137
+ children: [x.progress, "%"]
107
138
  })]
108
- }), /* @__PURE__ */ a("div", {
139
+ }), /* @__PURE__ */ s("div", {
109
140
  className: "h-3 bg-bg-sunken rounded overflow-hidden",
110
- children: /* @__PURE__ */ a("div", {
141
+ children: /* @__PURE__ */ s("div", {
111
142
  className: "h-3 bg-action-primary-bg rounded",
112
- style: { width: `${p.progress}%` }
143
+ style: { width: `${x.progress}%` }
113
144
  })
114
145
  })]
115
- }) })] }),
116
- /* @__PURE__ */ o(c, { children: [/* @__PURE__ */ a(u, { children: /* @__PURE__ */ a(d, { children: "Budget Tracking" }) }), /* @__PURE__ */ o(l, { children: [/* @__PURE__ */ o("div", {
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__ */ o("div", {
149
+ children: [/* @__PURE__ */ c("div", {
119
150
  className: "flex justify-between text-sm",
120
- children: [/* @__PURE__ */ o("span", { children: [
151
+ children: [/* @__PURE__ */ c("span", { children: [
121
152
  "Spent $",
122
- (p.spent / 1e3).toFixed(0),
153
+ (x.spent / 1e3).toFixed(0),
123
154
  "K of $",
124
- (p.budget / 1e3).toFixed(0),
155
+ (x.budget / 1e3).toFixed(0),
125
156
  "K"
126
- ] }), /* @__PURE__ */ o("span", {
157
+ ] }), /* @__PURE__ */ c("span", {
127
158
  className: "font-medium",
128
- children: [Math.round(p.spent / p.budget * 100), "%"]
159
+ children: [Math.round(x.spent / x.budget * 100), "%"]
129
160
  })]
130
- }), /* @__PURE__ */ a("div", {
161
+ }), /* @__PURE__ */ s("div", {
131
162
  className: "h-3 bg-bg-sunken rounded overflow-hidden",
132
- children: /* @__PURE__ */ a("div", {
133
- className: `h-3 rounded ${p.spent / p.budget > .9 ? "bg-red-500" : "bg-green-500"}`,
134
- style: { width: `${Math.round(p.spent / p.budget * 100)}%` }
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__ */ o("div", {
168
+ }), /* @__PURE__ */ c("div", {
138
169
  className: "grid grid-cols-2 gap-4 mt-4 text-sm",
139
- children: [/* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("p", {
170
+ children: [/* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("p", {
140
171
  className: "text-xs text-text-secondary",
141
172
  children: "Manager"
142
- }), /* @__PURE__ */ a("p", {
173
+ }), /* @__PURE__ */ s("p", {
143
174
  className: "font-medium",
144
- children: p.managerName
145
- })] }), /* @__PURE__ */ o("div", { children: [/* @__PURE__ */ a("p", {
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__ */ o("p", { children: [
149
- p.startDate,
179
+ }), /* @__PURE__ */ c("p", { children: [
180
+ x.startDate,
150
181
  " — ",
151
- p.endDate
182
+ x.endDate
152
183
  ] })] })]
153
184
  })] })] })
154
185
  ]
155
- }) : /* @__PURE__ */ a("div", {
156
- className: "p-6 text-text-secondary",
157
- children: "No project found."
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 { f as ProjectsProjectDetailsPagePage };
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 { Badge, Card, CardContent, CardHeader, CardTitle } from '@burdenoff/fe-libs/ui';\nimport { Calendar, DollarSign, Target, Users } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\nexport function ProjectsProjectDetailsPagePage() {\n const { projects } = useCrewFoundryStore();\n const project = projects[1]; // Show second project for variety\n if (!project) return <div className=\"p-6 text-text-secondary\">No project found.</div>;\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\">{project.name}</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 <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 <Card>\n <CardHeader>\n <CardTitle>Task Progress</CardTitle>\n </CardHeader>\n <CardContent>\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 className=\"h-3 bg-action-primary-bg rounded\" style={{ width: `${project.progress}%` }} />\n </div>\n </div>\n </CardContent>\n </Card>\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-red-500' : 'bg-green-500'}`}\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
+ {"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, Card as o, CardContent as s, CardDescription as c, CardHeader as l, CardTitle as u } from "@burdenoff/fe-libs/ui";
5
- import { useI18n as d } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
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 f() {
8
- let { t: f } = d(), { projects: p } = e(), m = p.filter((e) => e.status === "active"), h = (e, t) => {
9
- let n = f(e);
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: [/* @__PURE__ */ n("h1", {
17
- className: "text-2xl font-semibold",
18
- children: h("crewfoundry.projects.title", "Projects")
19
- }), /* @__PURE__ */ r("p", {
20
- className: "text-sm text-text-secondary",
21
- children: [
22
- m.length,
23
- " ",
24
- h("crewfoundry.projects.summary.activeProjects", "active projects")
25
- ]
26
- })] }), /* @__PURE__ */ r(a, {
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" }), h("crewfoundry.projects.actions.newProject", "New Project")]
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: p.map((e) => /* @__PURE__ */ r(o, {
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(l, { children: [/* @__PURE__ */ r("div", {
50
+ children: [/* @__PURE__ */ r(c, { children: [/* @__PURE__ */ r("div", {
35
51
  className: "flex items-center justify-between",
36
- children: [/* @__PURE__ */ n(u, {
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(c, { children: e.description })] }), /* @__PURE__ */ r(s, { children: [
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
- h("crewfoundry.projects.card.tasks", "tasks")
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
- h("crewfoundry.projects.card.team", "Team"),
84
+ v("crewfoundry.projects.card.team", "Team"),
69
85
  ": ",
70
86
  e.teamName
71
87
  ] }),
72
88
  /* @__PURE__ */ r("span", { children: [
73
- h("crewfoundry.projects.card.manager", "Manager"),
89
+ v("crewfoundry.projects.card.manager", "Manager"),
74
90
  ": ",
75
91
  e.managerName
76
92
  ] }),
77
93
  /* @__PURE__ */ r("span", { children: [
78
- h("crewfoundry.projects.card.budget", "Budget"),
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
- h("crewfoundry.projects.card.spent", "Spent"),
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 { f as ProjectsProjectsPagePage };
129
+ export { h as ProjectsProjectsPagePage };
114
130
 
115
131
  //# sourceMappingURL=ProjectsProjectsPagePage.js.map