@burdenoff/microfe-crewfoundry 2026.704.3 → 2026.704.4
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 +76 -75
- package/dist/crewfoundry/pages/AdminAdminPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js +118 -117
- package/dist/crewfoundry/pages/AnalyticsFinancialAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js +115 -114
- package/dist/crewfoundry/pages/AnalyticsHiringAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js +105 -104
- package/dist/crewfoundry/pages/CommunicationsAnnouncementsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js +52 -51
- package/dist/crewfoundry/pages/CommunicationsTeamsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js +94 -93
- package/dist/crewfoundry/pages/CompanyClientManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js +97 -96
- package/dist/crewfoundry/pages/CompanyCompanyProfilePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js +68 -67
- package/dist/crewfoundry/pages/CompanyVendorManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js +96 -95
- package/dist/crewfoundry/pages/DashboardAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardDashboardPagePage.js +153 -152
- package/dist/crewfoundry/pages/DashboardDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js +107 -106
- package/dist/crewfoundry/pages/DashboardEnhancedDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringApplicationsPagePage.js +77 -76
- package/dist/crewfoundry/pages/HiringApplicationsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringCandidatesPagePage.js +80 -79
- package/dist/crewfoundry/pages/HiringCandidatesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringInterviewsPagePage.js +102 -101
- package/dist/crewfoundry/pages/HiringInterviewsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js +126 -125
- package/dist/crewfoundry/pages/HiringJobDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HiringJobsPagePage.js +64 -63
- package/dist/crewfoundry/pages/HiringJobsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrDepartmentsPagePage.js +96 -95
- package/dist/crewfoundry/pages/HrDepartmentsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js +127 -126
- package/dist/crewfoundry/pages/HrLeaveManagementPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrPayrollPagePage.js +118 -117
- package/dist/crewfoundry/pages/HrPayrollPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js +123 -122
- package/dist/crewfoundry/pages/HrTimeTrackingPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js +77 -76
- package/dist/crewfoundry/pages/LearningCourseDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js +49 -48
- package/dist/crewfoundry/pages/LearningCourseLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningCoursesPagePage.js +62 -61
- package/dist/crewfoundry/pages/LearningCoursesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPagePage.js +72 -71
- package/dist/crewfoundry/pages/LearningLearningPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js +70 -69
- package/dist/crewfoundry/pages/LearningLearningPathDetailPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js +57 -56
- package/dist/crewfoundry/pages/LearningLearningPathsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js +58 -57
- package/dist/crewfoundry/pages/MarketplaceEarningsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js +122 -121
- package/dist/crewfoundry/pages/MarketplaceFreelancerProfilePageEnhancedPage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js +70 -69
- package/dist/crewfoundry/pages/MarketplaceMarketplacePagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js +41 -40
- package/dist/crewfoundry/pages/MarketplaceMarketplaceServicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js +65 -64
- package/dist/crewfoundry/pages/MarketplaceMyServicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js +75 -74
- package/dist/crewfoundry/pages/MarketplaceProjectDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js +60 -59
- package/dist/crewfoundry/pages/PaymentsInvoicesPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js +53 -52
- package/dist/crewfoundry/pages/PaymentsPaymentDashboardPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js +37 -36
- package/dist/crewfoundry/pages/PaymentsPaymentMethodsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js +126 -125
- package/dist/crewfoundry/pages/ProjectsProjectDetailsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js +62 -61
- package/dist/crewfoundry/pages/ProjectsProjectsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js +50 -49
- package/dist/crewfoundry/pages/TeamsTeamAnalyticsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js +72 -71
- package/dist/crewfoundry/pages/TeamsTeamDetailPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js +40 -39
- package/dist/crewfoundry/pages/TeamsTeamDirectoryPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js +130 -129
- package/dist/crewfoundry/pages/TeamsTeamSettingsPagePage.js.map +1 -1
- package/dist/crewfoundry/pages/TeamsTeamsPagePage.js +60 -59
- package/dist/crewfoundry/pages/TeamsTeamsPagePage.js.map +1 -1
- package/dist/crewfoundry/store/crewfoundryStore.js +177 -146
- package/dist/crewfoundry/store/crewfoundryStore.js.map +1 -1
- package/dist/crewfoundry/utils/formatEnumLabel.js +8 -0
- package/dist/crewfoundry/utils/formatEnumLabel.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,72 +1,73 @@
|
|
|
1
1
|
import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { formatEnumLabel as t } from "../utils/formatEnumLabel.js";
|
|
3
|
+
import { Building2 as n, CreditCard as r, ExternalLink as i } from "lucide-react";
|
|
4
|
+
import { useNavigate as a } from "react-router-dom";
|
|
5
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
6
|
+
import { Badge as c, Button as l, CardContent as u, GlassCard as d, GradientText as f, IllustratedEmptyState as p, PagePurpose as m } from "@burdenoff/fe-libs/ui";
|
|
6
7
|
//#region src/crewfoundry/pages/PaymentsPaymentMethodsPagePage.tsx
|
|
7
|
-
var
|
|
8
|
-
function
|
|
9
|
-
let
|
|
10
|
-
return /* @__PURE__ */
|
|
8
|
+
var h = "/billing/payment-methods";
|
|
9
|
+
function g() {
|
|
10
|
+
let g = a(), { paymentMethods: _ } = e(), v = () => g(h);
|
|
11
|
+
return /* @__PURE__ */ s("div", {
|
|
11
12
|
className: "space-y-6 p-6",
|
|
12
|
-
children: [/* @__PURE__ */
|
|
13
|
+
children: [/* @__PURE__ */ s("div", {
|
|
13
14
|
className: "flex items-center justify-between",
|
|
14
|
-
children: [/* @__PURE__ */
|
|
15
|
-
/* @__PURE__ */
|
|
15
|
+
children: [/* @__PURE__ */ s("div", { children: [
|
|
16
|
+
/* @__PURE__ */ o("h1", {
|
|
16
17
|
className: "text-2xl font-semibold",
|
|
17
|
-
children: /* @__PURE__ */
|
|
18
|
+
children: /* @__PURE__ */ o(f, { children: "Payment Methods" })
|
|
18
19
|
}),
|
|
19
|
-
/* @__PURE__ */
|
|
20
|
+
/* @__PURE__ */ o("p", {
|
|
20
21
|
className: "text-sm text-text-secondary",
|
|
21
22
|
children: "Managed in your platform Billing settings"
|
|
22
23
|
}),
|
|
23
|
-
/* @__PURE__ */
|
|
24
|
+
/* @__PURE__ */ o(m, {
|
|
24
25
|
className: "mt-1",
|
|
25
26
|
children: "Manage how you pay and get paid — cards, bank accounts, and payout methods are held securely in Billing settings."
|
|
26
27
|
})
|
|
27
|
-
] }), /* @__PURE__ */
|
|
28
|
+
] }), /* @__PURE__ */ s(l, {
|
|
28
29
|
size: "sm",
|
|
29
|
-
onClick:
|
|
30
|
-
children: [/* @__PURE__ */
|
|
30
|
+
onClick: v,
|
|
31
|
+
children: [/* @__PURE__ */ o(i, { className: "mr-1 h-4 w-4" }), "Manage in Billing settings"]
|
|
31
32
|
})]
|
|
32
|
-
}), /* @__PURE__ */
|
|
33
|
+
}), /* @__PURE__ */ o("div", {
|
|
33
34
|
className: "grid gap-4 md:grid-cols-2",
|
|
34
|
-
children:
|
|
35
|
+
children: _.length === 0 ? /* @__PURE__ */ o("div", {
|
|
35
36
|
className: "col-span-full",
|
|
36
|
-
children: /* @__PURE__ */
|
|
37
|
+
children: /* @__PURE__ */ o(p, {
|
|
37
38
|
illustration: "empty-generic",
|
|
38
39
|
title: "No payment methods",
|
|
39
40
|
description: "Payment methods live in your platform Billing settings. Add a card or bank account there to pay and get paid.",
|
|
40
|
-
action: /* @__PURE__ */
|
|
41
|
+
action: /* @__PURE__ */ s(l, {
|
|
41
42
|
size: "sm",
|
|
42
|
-
onClick:
|
|
43
|
-
children: [/* @__PURE__ */
|
|
43
|
+
onClick: v,
|
|
44
|
+
children: [/* @__PURE__ */ o(i, { className: "mr-1 h-4 w-4" }), "Open Billing settings"]
|
|
44
45
|
})
|
|
45
46
|
})
|
|
46
|
-
}) :
|
|
47
|
-
treatment:
|
|
48
|
-
glow:
|
|
49
|
-
children: /* @__PURE__ */
|
|
47
|
+
}) : _.map((e, i) => /* @__PURE__ */ o(d, {
|
|
48
|
+
treatment: i === 0 ? "glass" : "plain",
|
|
49
|
+
glow: i === 0,
|
|
50
|
+
children: /* @__PURE__ */ s(u, {
|
|
50
51
|
className: "p-4",
|
|
51
|
-
children: [/* @__PURE__ */
|
|
52
|
+
children: [/* @__PURE__ */ s("div", {
|
|
52
53
|
className: "mb-3 flex items-center justify-between",
|
|
53
|
-
children: [/* @__PURE__ */
|
|
54
|
+
children: [/* @__PURE__ */ s("div", {
|
|
54
55
|
className: "flex items-center gap-2",
|
|
55
|
-
children: [e.type === "bank" ? /* @__PURE__ */
|
|
56
|
+
children: [e.type === "bank" ? /* @__PURE__ */ o(n, { className: "h-5 w-5 text-text-secondary" }) : /* @__PURE__ */ o(r, { className: "h-5 w-5 text-text-secondary" }), /* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("p", {
|
|
56
57
|
className: "text-sm font-medium",
|
|
57
58
|
children: e.name
|
|
58
|
-
}), /* @__PURE__ */
|
|
59
|
+
}), /* @__PURE__ */ o("p", {
|
|
59
60
|
className: "text-xs text-text-secondary",
|
|
60
61
|
children: e.bank
|
|
61
62
|
})] })]
|
|
62
|
-
}), /* @__PURE__ */
|
|
63
|
+
}), /* @__PURE__ */ o(c, {
|
|
63
64
|
variant: e.status === "primary" ? "default" : "secondary",
|
|
64
65
|
className: "text-[10px]",
|
|
65
|
-
children: e.status
|
|
66
|
+
children: t(e.status)
|
|
66
67
|
})]
|
|
67
|
-
}), /* @__PURE__ */
|
|
68
|
+
}), /* @__PURE__ */ s("div", {
|
|
68
69
|
className: "flex items-center justify-between text-sm text-text-secondary",
|
|
69
|
-
children: [/* @__PURE__ */
|
|
70
|
+
children: [/* @__PURE__ */ s("span", { children: ["•••• •••• •••• ", e.last4] }), e.expiry ? /* @__PURE__ */ s("span", { children: ["Exp: ", e.expiry] }) : null]
|
|
70
71
|
})]
|
|
71
72
|
})
|
|
72
73
|
}, e.id))
|
|
@@ -74,6 +75,6 @@ function h() {
|
|
|
74
75
|
});
|
|
75
76
|
}
|
|
76
77
|
//#endregion
|
|
77
|
-
export {
|
|
78
|
+
export { g as PaymentsPaymentMethodsPagePage };
|
|
78
79
|
|
|
79
80
|
//# sourceMappingURL=PaymentsPaymentMethodsPagePage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaymentsPaymentMethodsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/PaymentsPaymentMethodsPagePage.tsx"],"sourcesContent":["import { useNavigate } from 'react-router-dom';\nimport {\n Badge,\n Button,\n CardContent,\n GlassCard,\n GradientText,\n IllustratedEmptyState,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { Building2, CreditCard, ExternalLink } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\n\n// Payment methods are owned by the platform Billing module (global billing\n// account), not by CrewFoundry. We read the real methods surfaced via the\n// billing overlap and send all add/manage actions to Billing settings — there\n// is deliberately no crew-local payment-method store.\nconst BILLING_PAYMENT_METHODS_ROUTE = '/billing/payment-methods';\n\nexport function PaymentsPaymentMethodsPagePage() {\n const navigate = useNavigate();\n const { paymentMethods } = useCrewFoundryStore();\n\n const goToBilling = () => navigate(BILLING_PAYMENT_METHODS_ROUTE);\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>Payment Methods</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">Managed in your platform Billing settings</p>\n <PagePurpose className=\"mt-1\">\n Manage how you pay and get paid — cards, bank accounts, and payout methods are held\n securely in Billing settings.\n </PagePurpose>\n </div>\n <Button size=\"sm\" onClick={goToBilling}>\n <ExternalLink className=\"mr-1 h-4 w-4\" />\n Manage in Billing settings\n </Button>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-2\">\n {paymentMethods.length === 0 ? (\n <div className=\"col-span-full\">\n <IllustratedEmptyState\n illustration=\"empty-generic\"\n title=\"No payment methods\"\n description=\"Payment methods live in your platform Billing settings. Add a card or bank account there to pay and get paid.\"\n action={\n <Button size=\"sm\" onClick={goToBilling}>\n <ExternalLink className=\"mr-1 h-4 w-4\" />\n Open Billing settings\n </Button>\n }\n />\n </div>\n ) : (\n paymentMethods.map((method, _idx) => (\n <GlassCard key={method.id} treatment={_idx === 0 ? 'glass' : 'plain'} glow={_idx === 0}>\n <CardContent className=\"p-4\">\n <div className=\"mb-3 flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {method.type === 'bank' ? (\n <Building2 className=\"h-5 w-5 text-text-secondary\" />\n ) : (\n <CreditCard className=\"h-5 w-5 text-text-secondary\" />\n )}\n <div>\n <p className=\"text-sm font-medium\">{method.name}</p>\n <p className=\"text-xs text-text-secondary\">{method.bank}</p>\n </div>\n </div>\n <Badge\n variant={method.status === 'primary' ? 'default' : 'secondary'}\n className=\"text-[10px]\"\n >\n {method.status}\n </Badge>\n </div>\n <div className=\"flex items-center justify-between text-sm text-text-secondary\">\n <span>•••• •••• •••• {method.last4}</span>\n {method.expiry ? <span>Exp: {method.expiry}</span> : null}\n </div>\n </CardContent>\n </GlassCard>\n ))\n )}\n </div>\n </div>\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"PaymentsPaymentMethodsPagePage.js","names":[],"sources":["../../../src/crewfoundry/pages/PaymentsPaymentMethodsPagePage.tsx"],"sourcesContent":["import { useNavigate } from 'react-router-dom';\nimport {\n Badge,\n Button,\n CardContent,\n GlassCard,\n GradientText,\n IllustratedEmptyState,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { Building2, CreditCard, ExternalLink } from 'lucide-react';\nimport { useCrewFoundryStore } from '../store/crewfoundryStore';\nimport { formatEnumLabel } from '../utils/formatEnumLabel';\n\n// Payment methods are owned by the platform Billing module (global billing\n// account), not by CrewFoundry. We read the real methods surfaced via the\n// billing overlap and send all add/manage actions to Billing settings — there\n// is deliberately no crew-local payment-method store.\nconst BILLING_PAYMENT_METHODS_ROUTE = '/billing/payment-methods';\n\nexport function PaymentsPaymentMethodsPagePage() {\n const navigate = useNavigate();\n const { paymentMethods } = useCrewFoundryStore();\n\n const goToBilling = () => navigate(BILLING_PAYMENT_METHODS_ROUTE);\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>Payment Methods</GradientText>\n </h1>\n <p className=\"text-sm text-text-secondary\">Managed in your platform Billing settings</p>\n <PagePurpose className=\"mt-1\">\n Manage how you pay and get paid — cards, bank accounts, and payout methods are held\n securely in Billing settings.\n </PagePurpose>\n </div>\n <Button size=\"sm\" onClick={goToBilling}>\n <ExternalLink className=\"mr-1 h-4 w-4\" />\n Manage in Billing settings\n </Button>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-2\">\n {paymentMethods.length === 0 ? (\n <div className=\"col-span-full\">\n <IllustratedEmptyState\n illustration=\"empty-generic\"\n title=\"No payment methods\"\n description=\"Payment methods live in your platform Billing settings. Add a card or bank account there to pay and get paid.\"\n action={\n <Button size=\"sm\" onClick={goToBilling}>\n <ExternalLink className=\"mr-1 h-4 w-4\" />\n Open Billing settings\n </Button>\n }\n />\n </div>\n ) : (\n paymentMethods.map((method, _idx) => (\n <GlassCard key={method.id} treatment={_idx === 0 ? 'glass' : 'plain'} glow={_idx === 0}>\n <CardContent className=\"p-4\">\n <div className=\"mb-3 flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {method.type === 'bank' ? (\n <Building2 className=\"h-5 w-5 text-text-secondary\" />\n ) : (\n <CreditCard className=\"h-5 w-5 text-text-secondary\" />\n )}\n <div>\n <p className=\"text-sm font-medium\">{method.name}</p>\n <p className=\"text-xs text-text-secondary\">{method.bank}</p>\n </div>\n </div>\n <Badge\n variant={method.status === 'primary' ? 'default' : 'secondary'}\n className=\"text-[10px]\"\n >\n {formatEnumLabel(method.status)}\n </Badge>\n </div>\n <div className=\"flex items-center justify-between text-sm text-text-secondary\">\n <span>•••• •••• •••• {method.last4}</span>\n {method.expiry ? <span>Exp: {method.expiry}</span> : null}\n </div>\n </CardContent>\n </GlassCard>\n ))\n )}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;AAkBA,IAAM,IAAgC;AAEtC,SAAgB,IAAiC;CAC/C,IAAM,IAAW,GAAa,EACxB,EAAE,sBAAmB,GAAqB,EAE1C,UAAoB,EAAS,EAA8B;AAEjE,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,mBAA8B,CAAA;KACzC,CAAA;IACL,kBAAC,KAAD;KAAG,WAAU;eAA8B;KAA6C,CAAA;IACxF,kBAAC,GAAD;KAAa,WAAU;eAAO;KAGhB,CAAA;IACV,EAAA,CAAA,EACN,kBAAC,GAAD;IAAQ,MAAK;IAAK,SAAS;cAA3B,CACE,kBAAC,GAAD,EAAc,WAAU,gBAAiB,CAAA,EAAA,6BAElC;MACL;MAEN,kBAAC,OAAD;GAAK,WAAU;aACZ,EAAe,WAAW,IACzB,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,GAAD;KACE,cAAa;KACb,OAAM;KACN,aAAY;KACZ,QACE,kBAAC,GAAD;MAAQ,MAAK;MAAK,SAAS;gBAA3B,CACE,kBAAC,GAAD,EAAc,WAAU,gBAAiB,CAAA,EAAA,wBAElC;;KAEX,CAAA;IACE,CAAA,GAEN,EAAe,KAAK,GAAQ,MAC1B,kBAAC,GAAD;IAA2B,WAAW,MAAS,IAAI,UAAU;IAAS,MAAM,MAAS;cACnF,kBAAC,GAAD;KAAa,WAAU;eAAvB,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACG,EAAO,SAAS,SACf,kBAAC,GAAD,EAAW,WAAU,+BAAgC,CAAA,GAErD,kBAAC,GAAD,EAAY,WAAU,+BAAgC,CAAA,EAExD,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;QAAG,WAAU;kBAAuB,EAAO;QAAS,CAAA,EACpD,kBAAC,KAAD;QAAG,WAAU;kBAA+B,EAAO;QAAS,CAAA,CACxD,EAAA,CAAA,CACF;UACN,kBAAC,GAAD;OACE,SAAS,EAAO,WAAW,YAAY,YAAY;OACnD,WAAU;iBAET,EAAgB,EAAO,OAAO;OACzB,CAAA,CACJ;SACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,QAAD,EAAA,UAAA,CAAM,mBAAgB,EAAO,MAAa,EAAA,CAAA,EACzC,EAAO,SAAS,kBAAC,QAAD,EAAA,UAAA,CAAM,SAAM,EAAO,OAAc,EAAA,CAAA,GAAG,KACjD;QACM;;IACJ,EA1BI,EAAO,GA0BX,CACZ;GAEA,CAAA,CACF"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
2
|
+
import { formatEnumLabel as t } from "../utils/formatEnumLabel.js";
|
|
3
|
+
import { FormModal as n, useFormModal as r } from "../components/forms/FormModal.js";
|
|
4
|
+
import { useState as i } from "react";
|
|
5
|
+
import { Calendar as a, DollarSign as o, FolderKanban as s, Pencil as c, Target as l, Trash2 as u, Users as d } from "lucide-react";
|
|
6
|
+
import { useNavigate as f, useSearchParams as p } from "react-router-dom";
|
|
7
|
+
import { jsx as m, jsxs as h } from "react/jsx-runtime";
|
|
8
|
+
import { Badge as g, Button as _, Card as v, CardContent as y, CardHeader as b, CardTitle as x, EmphasisPanel as S, GradientText as C, IllustratedEmptyState as w, NextSteps as T, PagePurpose as E, ResponsiveDialog as D, ResponsiveDialogContent as O, ResponsiveDialogDescription as k, ResponsiveDialogFooter as A, ResponsiveDialogHeader as j, ResponsiveDialogTitle as M } from "@burdenoff/fe-libs/ui";
|
|
9
|
+
import { useGlobalUi as N } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
9
10
|
//#region src/crewfoundry/pages/ProjectsProjectDetailsPagePage.tsx
|
|
10
|
-
var
|
|
11
|
+
var P = [
|
|
11
12
|
{
|
|
12
13
|
name: "name",
|
|
13
14
|
label: "Project Name",
|
|
@@ -82,150 +83,150 @@ var N = [
|
|
|
82
83
|
type: "number"
|
|
83
84
|
}
|
|
84
85
|
];
|
|
85
|
-
function
|
|
86
|
-
let
|
|
87
|
-
if (!
|
|
86
|
+
function F() {
|
|
87
|
+
let F = f(), [I] = p(), { showToast: L } = N(), R = e((e) => e.projects), z = e((e) => e.updateProject), B = e((e) => e.removeProject), V = r(), [H, U] = i(!1), [W, G] = i(!1), K = I.get("id"), q = R.find((e) => e.id === K) ?? R[0];
|
|
88
|
+
if (!q) return /* @__PURE__ */ m("div", {
|
|
88
89
|
className: "p-6",
|
|
89
|
-
children: /* @__PURE__ */
|
|
90
|
+
children: /* @__PURE__ */ m(w, {
|
|
90
91
|
illustration: "empty-search",
|
|
91
92
|
title: "Project not found",
|
|
92
93
|
description: "This project is no longer available."
|
|
93
94
|
})
|
|
94
95
|
});
|
|
95
|
-
let
|
|
96
|
-
name:
|
|
97
|
-
description:
|
|
98
|
-
status:
|
|
99
|
-
priority:
|
|
100
|
-
budget:
|
|
101
|
-
progress:
|
|
96
|
+
let J = q.budget > 0 ? Math.round(q.spent / q.budget * 100) : 0, Y = q.budget > 0 && q.spent / q.budget > .9, X = {
|
|
97
|
+
name: q.name,
|
|
98
|
+
description: q.description,
|
|
99
|
+
status: q.status,
|
|
100
|
+
priority: q.priority,
|
|
101
|
+
budget: q.budget,
|
|
102
|
+
progress: q.progress
|
|
102
103
|
};
|
|
103
|
-
return /* @__PURE__ */
|
|
104
|
+
return /* @__PURE__ */ h("div", {
|
|
104
105
|
className: "space-y-6 p-6 max-w-4xl",
|
|
105
106
|
children: [
|
|
106
|
-
/* @__PURE__ */
|
|
107
|
+
/* @__PURE__ */ h("div", {
|
|
107
108
|
className: "flex items-center justify-between gap-4",
|
|
108
|
-
children: [/* @__PURE__ */
|
|
109
|
+
children: [/* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("h1", {
|
|
109
110
|
className: "text-2xl font-semibold",
|
|
110
|
-
children: /* @__PURE__ */
|
|
111
|
-
}), /* @__PURE__ */
|
|
111
|
+
children: /* @__PURE__ */ m(C, { children: q.name })
|
|
112
|
+
}), /* @__PURE__ */ m("p", {
|
|
112
113
|
className: "text-sm text-text-secondary",
|
|
113
|
-
children:
|
|
114
|
-
})] }), /* @__PURE__ */
|
|
114
|
+
children: q.description
|
|
115
|
+
})] }), /* @__PURE__ */ h("div", {
|
|
115
116
|
className: "flex items-center gap-2",
|
|
116
117
|
children: [
|
|
117
|
-
/* @__PURE__ */
|
|
118
|
+
/* @__PURE__ */ h("div", {
|
|
118
119
|
className: "hidden gap-1 sm:flex",
|
|
119
|
-
children: [/* @__PURE__ */
|
|
120
|
-
variant:
|
|
121
|
-
children:
|
|
122
|
-
}), /* @__PURE__ */
|
|
123
|
-
variant:
|
|
124
|
-
children:
|
|
120
|
+
children: [/* @__PURE__ */ m(g, {
|
|
121
|
+
variant: q.priority === "critical" ? "destructive" : "default",
|
|
122
|
+
children: t(q.priority)
|
|
123
|
+
}), /* @__PURE__ */ m(g, {
|
|
124
|
+
variant: q.status === "active" ? "default" : "secondary",
|
|
125
|
+
children: t(q.status)
|
|
125
126
|
})]
|
|
126
127
|
}),
|
|
127
|
-
/* @__PURE__ */
|
|
128
|
+
/* @__PURE__ */ h(_, {
|
|
128
129
|
variant: "outline",
|
|
129
130
|
size: "sm",
|
|
130
|
-
onClick: () =>
|
|
131
|
-
children: [/* @__PURE__ */
|
|
131
|
+
onClick: () => V.openModal(),
|
|
132
|
+
children: [/* @__PURE__ */ m(c, { className: "h-4 w-4 mr-1" }), "Edit"]
|
|
132
133
|
}),
|
|
133
|
-
/* @__PURE__ */
|
|
134
|
+
/* @__PURE__ */ m(_, {
|
|
134
135
|
variant: "ghost",
|
|
135
136
|
size: "sm",
|
|
136
137
|
"aria-label": "Delete project",
|
|
137
138
|
className: "h-9 w-9 p-0 text-text-secondary hover:text-status-error-text",
|
|
138
|
-
onClick: () =>
|
|
139
|
-
children: /* @__PURE__ */
|
|
139
|
+
onClick: () => U(!0),
|
|
140
|
+
children: /* @__PURE__ */ m(u, { className: "h-4 w-4" })
|
|
140
141
|
})
|
|
141
142
|
]
|
|
142
143
|
})]
|
|
143
144
|
}),
|
|
144
|
-
/* @__PURE__ */
|
|
145
|
-
/* @__PURE__ */
|
|
145
|
+
/* @__PURE__ */ m(E, { 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." }),
|
|
146
|
+
/* @__PURE__ */ m(T, {
|
|
146
147
|
storageKey: "crewfoundry-project-details",
|
|
147
148
|
steps: [
|
|
148
149
|
{
|
|
149
150
|
id: "all-projects",
|
|
150
151
|
label: "View all projects",
|
|
151
152
|
description: "See how this project compares across your portfolio.",
|
|
152
|
-
icon: /* @__PURE__ */
|
|
153
|
-
onClick: () =>
|
|
153
|
+
icon: /* @__PURE__ */ m(s, { className: "h-4 w-4" }),
|
|
154
|
+
onClick: () => F("../../projects/projects-page")
|
|
154
155
|
},
|
|
155
156
|
{
|
|
156
157
|
id: "team",
|
|
157
158
|
label: "Check the team",
|
|
158
159
|
description: "Review who is working on this and their workload.",
|
|
159
|
-
icon: /* @__PURE__ */
|
|
160
|
-
onClick: () =>
|
|
160
|
+
icon: /* @__PURE__ */ m(d, { className: "h-4 w-4" }),
|
|
161
|
+
onClick: () => F("../../teams/teams-page")
|
|
161
162
|
},
|
|
162
163
|
{
|
|
163
164
|
id: "new-project",
|
|
164
165
|
label: "Start a new project",
|
|
165
166
|
description: "Kick off the next piece of work.",
|
|
166
|
-
icon: /* @__PURE__ */
|
|
167
|
-
onClick: () =>
|
|
167
|
+
icon: /* @__PURE__ */ m(l, { className: "h-4 w-4" }),
|
|
168
|
+
onClick: () => F("../../projects/create-project-page")
|
|
168
169
|
}
|
|
169
170
|
]
|
|
170
171
|
}),
|
|
171
|
-
/* @__PURE__ */
|
|
172
|
+
/* @__PURE__ */ h("div", {
|
|
172
173
|
className: "grid gap-4 md:grid-cols-4",
|
|
173
174
|
children: [
|
|
174
|
-
/* @__PURE__ */
|
|
175
|
+
/* @__PURE__ */ m(v, { children: /* @__PURE__ */ h(y, {
|
|
175
176
|
className: "p-4 text-center",
|
|
176
177
|
children: [
|
|
177
|
-
/* @__PURE__ */
|
|
178
|
-
/* @__PURE__ */
|
|
178
|
+
/* @__PURE__ */ m(l, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
|
|
179
|
+
/* @__PURE__ */ h("p", {
|
|
179
180
|
className: "text-lg font-bold",
|
|
180
|
-
children: [
|
|
181
|
+
children: [q.progress, "%"]
|
|
181
182
|
}),
|
|
182
|
-
/* @__PURE__ */
|
|
183
|
+
/* @__PURE__ */ m("p", {
|
|
183
184
|
className: "text-xs text-text-secondary",
|
|
184
185
|
children: "Progress"
|
|
185
186
|
})
|
|
186
187
|
]
|
|
187
188
|
}) }),
|
|
188
|
-
/* @__PURE__ */
|
|
189
|
+
/* @__PURE__ */ m(v, { children: /* @__PURE__ */ h(y, {
|
|
189
190
|
className: "p-4 text-center",
|
|
190
191
|
children: [
|
|
191
|
-
/* @__PURE__ */
|
|
192
|
-
/* @__PURE__ */
|
|
192
|
+
/* @__PURE__ */ m(o, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
|
|
193
|
+
/* @__PURE__ */ h("p", {
|
|
193
194
|
className: "text-lg font-bold",
|
|
194
195
|
children: [
|
|
195
196
|
"$",
|
|
196
|
-
(
|
|
197
|
+
(q.budget / 1e3).toFixed(0),
|
|
197
198
|
"K"
|
|
198
199
|
]
|
|
199
200
|
}),
|
|
200
|
-
/* @__PURE__ */
|
|
201
|
+
/* @__PURE__ */ m("p", {
|
|
201
202
|
className: "text-xs text-text-secondary",
|
|
202
203
|
children: "Budget"
|
|
203
204
|
})
|
|
204
205
|
]
|
|
205
206
|
}) }),
|
|
206
|
-
/* @__PURE__ */
|
|
207
|
+
/* @__PURE__ */ m(v, { children: /* @__PURE__ */ h(y, {
|
|
207
208
|
className: "p-4 text-center",
|
|
208
209
|
children: [
|
|
209
|
-
/* @__PURE__ */
|
|
210
|
-
/* @__PURE__ */
|
|
210
|
+
/* @__PURE__ */ m(d, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
|
|
211
|
+
/* @__PURE__ */ m("p", {
|
|
211
212
|
className: "text-lg font-bold",
|
|
212
|
-
children:
|
|
213
|
+
children: q.teamName
|
|
213
214
|
}),
|
|
214
|
-
/* @__PURE__ */
|
|
215
|
+
/* @__PURE__ */ m("p", {
|
|
215
216
|
className: "text-xs text-text-secondary",
|
|
216
217
|
children: "Team"
|
|
217
218
|
})
|
|
218
219
|
]
|
|
219
220
|
}) }),
|
|
220
|
-
/* @__PURE__ */
|
|
221
|
+
/* @__PURE__ */ m(v, { children: /* @__PURE__ */ h(y, {
|
|
221
222
|
className: "p-4 text-center",
|
|
222
223
|
children: [
|
|
223
|
-
/* @__PURE__ */
|
|
224
|
-
/* @__PURE__ */
|
|
224
|
+
/* @__PURE__ */ m(a, { className: "h-5 w-5 mx-auto text-text-secondary mb-1" }),
|
|
225
|
+
/* @__PURE__ */ m("p", {
|
|
225
226
|
className: "text-lg font-bold",
|
|
226
|
-
children:
|
|
227
|
+
children: q.endDate
|
|
227
228
|
}),
|
|
228
|
-
/* @__PURE__ */
|
|
229
|
+
/* @__PURE__ */ m("p", {
|
|
229
230
|
className: "text-xs text-text-secondary",
|
|
230
231
|
children: "Deadline"
|
|
231
232
|
})
|
|
@@ -233,118 +234,118 @@ function P() {
|
|
|
233
234
|
}) })
|
|
234
235
|
]
|
|
235
236
|
}),
|
|
236
|
-
/* @__PURE__ */
|
|
237
|
+
/* @__PURE__ */ h(S, { children: [/* @__PURE__ */ m("div", {
|
|
237
238
|
className: "mb-2 text-lg font-semibold",
|
|
238
239
|
children: "Task Progress"
|
|
239
|
-
}), /* @__PURE__ */
|
|
240
|
+
}), /* @__PURE__ */ h("div", {
|
|
240
241
|
className: "space-y-2",
|
|
241
|
-
children: [/* @__PURE__ */
|
|
242
|
+
children: [/* @__PURE__ */ h("div", {
|
|
242
243
|
className: "flex justify-between text-sm",
|
|
243
|
-
children: [/* @__PURE__ */
|
|
244
|
-
|
|
244
|
+
children: [/* @__PURE__ */ h("span", { children: [
|
|
245
|
+
q.completedTasks,
|
|
245
246
|
" of ",
|
|
246
|
-
|
|
247
|
+
q.tasks,
|
|
247
248
|
" tasks completed"
|
|
248
|
-
] }), /* @__PURE__ */
|
|
249
|
+
] }), /* @__PURE__ */ h("span", {
|
|
249
250
|
className: "font-medium",
|
|
250
|
-
children: [
|
|
251
|
+
children: [q.progress, "%"]
|
|
251
252
|
})]
|
|
252
|
-
}), /* @__PURE__ */
|
|
253
|
+
}), /* @__PURE__ */ m("div", {
|
|
253
254
|
className: "h-3 bg-bg-sunken rounded overflow-hidden",
|
|
254
|
-
children: /* @__PURE__ */
|
|
255
|
+
children: /* @__PURE__ */ m("div", {
|
|
255
256
|
className: "h-3 bg-action-primary-bg rounded",
|
|
256
|
-
style: { width: `${
|
|
257
|
+
style: { width: `${q.progress}%` }
|
|
257
258
|
})
|
|
258
259
|
})]
|
|
259
260
|
})] }),
|
|
260
|
-
/* @__PURE__ */
|
|
261
|
+
/* @__PURE__ */ h(v, { children: [/* @__PURE__ */ m(b, { children: /* @__PURE__ */ m(x, { children: "Budget Tracking" }) }), /* @__PURE__ */ h(y, { children: [/* @__PURE__ */ h("div", {
|
|
261
262
|
className: "space-y-2",
|
|
262
|
-
children: [/* @__PURE__ */
|
|
263
|
+
children: [/* @__PURE__ */ h("div", {
|
|
263
264
|
className: "flex justify-between text-sm",
|
|
264
|
-
children: [/* @__PURE__ */
|
|
265
|
+
children: [/* @__PURE__ */ h("span", { children: [
|
|
265
266
|
"Spent $",
|
|
266
|
-
(
|
|
267
|
+
(q.spent / 1e3).toFixed(0),
|
|
267
268
|
"K of $",
|
|
268
|
-
(
|
|
269
|
+
(q.budget / 1e3).toFixed(0),
|
|
269
270
|
"K"
|
|
270
|
-
] }), /* @__PURE__ */
|
|
271
|
+
] }), /* @__PURE__ */ h("span", {
|
|
271
272
|
className: "font-medium",
|
|
272
|
-
children: [
|
|
273
|
+
children: [J, "%"]
|
|
273
274
|
})]
|
|
274
|
-
}), /* @__PURE__ */
|
|
275
|
+
}), /* @__PURE__ */ m("div", {
|
|
275
276
|
className: "h-3 bg-bg-sunken rounded overflow-hidden",
|
|
276
|
-
children: /* @__PURE__ */
|
|
277
|
-
className: `h-3 rounded ${
|
|
278
|
-
style: { width: `${
|
|
277
|
+
children: /* @__PURE__ */ m("div", {
|
|
278
|
+
className: `h-3 rounded ${Y ? "bg-status-error-text" : "bg-status-success-text"}`,
|
|
279
|
+
style: { width: `${J}%` }
|
|
279
280
|
})
|
|
280
281
|
})]
|
|
281
|
-
}), /* @__PURE__ */
|
|
282
|
+
}), /* @__PURE__ */ h("div", {
|
|
282
283
|
className: "grid grid-cols-2 gap-4 mt-4 text-sm",
|
|
283
|
-
children: [/* @__PURE__ */
|
|
284
|
+
children: [/* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
|
|
284
285
|
className: "text-xs text-text-secondary",
|
|
285
286
|
children: "Manager"
|
|
286
|
-
}), /* @__PURE__ */
|
|
287
|
+
}), /* @__PURE__ */ m("p", {
|
|
287
288
|
className: "font-medium",
|
|
288
|
-
children:
|
|
289
|
-
})] }), /* @__PURE__ */
|
|
289
|
+
children: q.managerName
|
|
290
|
+
})] }), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("p", {
|
|
290
291
|
className: "text-xs text-text-secondary",
|
|
291
292
|
children: "Timeline"
|
|
292
|
-
}), /* @__PURE__ */
|
|
293
|
-
|
|
293
|
+
}), /* @__PURE__ */ h("p", { children: [
|
|
294
|
+
q.startDate,
|
|
294
295
|
" — ",
|
|
295
|
-
|
|
296
|
+
q.endDate
|
|
296
297
|
] })] })]
|
|
297
298
|
})] })] }),
|
|
298
|
-
/* @__PURE__ */
|
|
299
|
-
open:
|
|
300
|
-
onOpenChange:
|
|
299
|
+
/* @__PURE__ */ m(n, {
|
|
300
|
+
open: V.open,
|
|
301
|
+
onOpenChange: V.onOpenChange,
|
|
301
302
|
title: "Edit Project",
|
|
302
|
-
description: `Update the details for ${
|
|
303
|
-
fields:
|
|
304
|
-
initialValues:
|
|
303
|
+
description: `Update the details for ${q.name}.`,
|
|
304
|
+
fields: P,
|
|
305
|
+
initialValues: X,
|
|
305
306
|
submitLabel: "Save Changes",
|
|
306
307
|
onSubmit: async (e) => {
|
|
307
308
|
let t = {
|
|
308
309
|
name: String(e.name ?? "").trim(),
|
|
309
310
|
description: String(e.description ?? "").trim(),
|
|
310
|
-
status: String(e.status ??
|
|
311
|
-
priority: String(e.priority ??
|
|
311
|
+
status: String(e.status ?? q.status),
|
|
312
|
+
priority: String(e.priority ?? q.priority)
|
|
312
313
|
};
|
|
313
|
-
typeof e.budget == "number" && !Number.isNaN(e.budget) && (t.budget = e.budget), typeof e.progress == "number" && !Number.isNaN(e.progress) && (t.progress = e.progress), await
|
|
314
|
+
typeof e.budget == "number" && !Number.isNaN(e.budget) && (t.budget = e.budget), typeof e.progress == "number" && !Number.isNaN(e.progress) && (t.progress = e.progress), await z(q.id, t), L("Project updated", "success");
|
|
314
315
|
}
|
|
315
316
|
}),
|
|
316
|
-
/* @__PURE__ */
|
|
317
|
-
open:
|
|
318
|
-
onOpenChange:
|
|
319
|
-
children: /* @__PURE__ */
|
|
317
|
+
/* @__PURE__ */ m(D, {
|
|
318
|
+
open: H,
|
|
319
|
+
onOpenChange: U,
|
|
320
|
+
children: /* @__PURE__ */ h(O, {
|
|
320
321
|
className: "sm:max-w-[440px]",
|
|
321
|
-
children: [/* @__PURE__ */
|
|
322
|
+
children: [/* @__PURE__ */ h(j, { children: [/* @__PURE__ */ h(M, { children: [
|
|
322
323
|
"Delete ",
|
|
323
|
-
|
|
324
|
+
q.name,
|
|
324
325
|
"?"
|
|
325
|
-
] }), /* @__PURE__ */
|
|
326
|
+
] }), /* @__PURE__ */ m(k, { children: "This permanently removes the project and its tracking data. This cannot be undone." })] }), /* @__PURE__ */ h(A, { children: [/* @__PURE__ */ m(_, {
|
|
326
327
|
type: "button",
|
|
327
328
|
variant: "outline",
|
|
328
|
-
onClick: () =>
|
|
329
|
-
disabled:
|
|
329
|
+
onClick: () => U(!1),
|
|
330
|
+
disabled: W,
|
|
330
331
|
children: "Cancel"
|
|
331
|
-
}), /* @__PURE__ */
|
|
332
|
+
}), /* @__PURE__ */ m(_, {
|
|
332
333
|
type: "button",
|
|
333
334
|
variant: "destructive",
|
|
334
335
|
onClick: async () => {
|
|
335
|
-
if (!
|
|
336
|
-
|
|
336
|
+
if (!W) {
|
|
337
|
+
G(!0);
|
|
337
338
|
try {
|
|
338
|
-
await
|
|
339
|
+
await B(q.id), L("Project deleted", "success"), U(!1), F("../../projects/projects-page");
|
|
339
340
|
} catch (e) {
|
|
340
|
-
|
|
341
|
+
L(e instanceof Error ? e.message : "Unable to delete project", "error");
|
|
341
342
|
} finally {
|
|
342
|
-
|
|
343
|
+
G(!1);
|
|
343
344
|
}
|
|
344
345
|
}
|
|
345
346
|
},
|
|
346
|
-
disabled:
|
|
347
|
-
children:
|
|
347
|
+
disabled: W,
|
|
348
|
+
children: W ? "Deleting…" : "Delete Project"
|
|
348
349
|
})] })]
|
|
349
350
|
})
|
|
350
351
|
})
|
|
@@ -352,6 +353,6 @@ function P() {
|
|
|
352
353
|
});
|
|
353
354
|
}
|
|
354
355
|
//#endregion
|
|
355
|
-
export {
|
|
356
|
+
export { F as ProjectsProjectDetailsPagePage };
|
|
356
357
|
|
|
357
358
|
//# sourceMappingURL=ProjectsProjectDetailsPagePage.js.map
|