@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,23 +1,24 @@
|
|
|
1
1
|
import { useCrewFoundryStore as e } from "../store/crewfoundryStore.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
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 { BarChart3 as a, Bell as o, Lock as s, Save as ee, Settings as c, Shield as l, Trash2 as u, UserMinus as d, UserPlus as te, Users as f } from "lucide-react";
|
|
6
|
+
import { useNavigate as p, useSearchParams as m } from "react-router-dom";
|
|
7
|
+
import { jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
8
|
+
import { Badge as _, Button as v, Card as y, CardContent as b, CardDescription as x, CardHeader as S, CardTitle as C, EmphasisPanel as ne, GradientText as w, IllustratedEmptyState as T, Input as E, Label as D, NextSteps as re, PagePurpose as ie, ResponsiveDialog as ae, ResponsiveDialogContent as oe, ResponsiveDialogDescription as se, ResponsiveDialogFooter as ce, ResponsiveDialogHeader as O, ResponsiveDialogTitle as k, Separator as A, Switch as j, Textarea as M } from "@burdenoff/fe-libs/ui";
|
|
8
9
|
import { useGlobalUi as N } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
9
10
|
//#region src/crewfoundry/pages/TeamsTeamSettingsPagePage.tsx
|
|
10
11
|
function P() {
|
|
11
|
-
let P = p(), [F] =
|
|
12
|
-
if (!H) return /* @__PURE__ */
|
|
12
|
+
let P = p(), [F] = m(), { showToast: I } = N(), L = e((e) => e.teams), R = e((e) => e.employees), z = e((e) => e.updateTeam), B = e((e) => e.removeTeam), V = F.get("id"), H = L.find((e) => e.id === V) ?? L[0], [U, W] = i(H?.name ?? ""), [G, le] = i(H?.description ?? ""), [K, q] = i(!1), [ue, J] = i(!1), [Y, X] = i(!1), Z = r();
|
|
13
|
+
if (!H) return /* @__PURE__ */ h("div", {
|
|
13
14
|
className: "p-6",
|
|
14
|
-
children: /* @__PURE__ */
|
|
15
|
+
children: /* @__PURE__ */ h(T, {
|
|
15
16
|
illustration: "empty-people",
|
|
16
17
|
title: "No team to configure",
|
|
17
18
|
description: "Create a team first, then return here to manage its settings."
|
|
18
19
|
})
|
|
19
20
|
});
|
|
20
|
-
let Q = R.filter((e) => H.members.includes(e.id)), $ = R.filter((e) => !H.members.includes(e.id)),
|
|
21
|
+
let Q = R.filter((e) => H.members.includes(e.id)), $ = R.filter((e) => !H.members.includes(e.id)), de = async () => {
|
|
21
22
|
if (!K) {
|
|
22
23
|
if (U.trim() === "") {
|
|
23
24
|
I("Team Name is required", "warning");
|
|
@@ -35,7 +36,7 @@ function P() {
|
|
|
35
36
|
q(!1);
|
|
36
37
|
}
|
|
37
38
|
}
|
|
38
|
-
},
|
|
39
|
+
}, fe = [{
|
|
39
40
|
name: "employeeId",
|
|
40
41
|
label: "Employee",
|
|
41
42
|
type: "select",
|
|
@@ -46,155 +47,155 @@ function P() {
|
|
|
46
47
|
label: `${e.firstName} ${e.lastName} — ${e.position}`,
|
|
47
48
|
value: e.id
|
|
48
49
|
}))
|
|
49
|
-
}],
|
|
50
|
+
}], pe = async (e) => {
|
|
50
51
|
let t = String(e.employeeId ?? "");
|
|
51
52
|
t && (await z(H.id, { members: [...H.members, t] }), I("Member added to team", "success"));
|
|
52
|
-
},
|
|
53
|
+
}, me = async (e) => {
|
|
53
54
|
try {
|
|
54
55
|
await z(H.id, { members: H.members.filter((t) => t !== e) }), I("Member removed from team", "success");
|
|
55
56
|
} catch (e) {
|
|
56
57
|
I(e instanceof Error ? e.message : "Unable to remove member", "error");
|
|
57
58
|
}
|
|
58
59
|
};
|
|
59
|
-
return /* @__PURE__ */
|
|
60
|
+
return /* @__PURE__ */ g("div", {
|
|
60
61
|
className: "space-y-6 p-6",
|
|
61
62
|
children: [
|
|
62
|
-
/* @__PURE__ */
|
|
63
|
+
/* @__PURE__ */ g("div", {
|
|
63
64
|
className: "flex items-center justify-between",
|
|
64
|
-
children: [/* @__PURE__ */
|
|
65
|
-
/* @__PURE__ */
|
|
65
|
+
children: [/* @__PURE__ */ g("div", { children: [
|
|
66
|
+
/* @__PURE__ */ h("h1", {
|
|
66
67
|
className: "text-2xl font-semibold",
|
|
67
|
-
children: /* @__PURE__ */
|
|
68
|
+
children: /* @__PURE__ */ h(w, { children: "Team Settings" })
|
|
68
69
|
}),
|
|
69
|
-
/* @__PURE__ */
|
|
70
|
+
/* @__PURE__ */ g("p", {
|
|
70
71
|
className: "text-sm text-text-secondary",
|
|
71
72
|
children: ["Configure settings for ", H.name]
|
|
72
73
|
}),
|
|
73
|
-
/* @__PURE__ */
|
|
74
|
+
/* @__PURE__ */ h(ie, {
|
|
74
75
|
className: "mt-1",
|
|
75
76
|
children: "Configure a team's settings — membership, permissions, and preferences that control how the team works in CrewFoundry."
|
|
76
77
|
})
|
|
77
|
-
] }), /* @__PURE__ */
|
|
78
|
-
onClick:
|
|
78
|
+
] }), /* @__PURE__ */ g(v, {
|
|
79
|
+
onClick: de,
|
|
79
80
|
disabled: K,
|
|
80
|
-
children: [/* @__PURE__ */
|
|
81
|
+
children: [/* @__PURE__ */ h(ee, { className: "h-4 w-4 mr-1" }), K ? "Saving…" : "Save Changes"]
|
|
81
82
|
})]
|
|
82
83
|
}),
|
|
83
|
-
/* @__PURE__ */
|
|
84
|
+
/* @__PURE__ */ h(re, {
|
|
84
85
|
storageKey: "crewfoundry-team-settings",
|
|
85
86
|
steps: [
|
|
86
87
|
{
|
|
87
88
|
id: "members",
|
|
88
89
|
label: "Manage members",
|
|
89
90
|
description: "Add or remove people and adjust their roles below.",
|
|
90
|
-
icon: /* @__PURE__ */
|
|
91
|
+
icon: /* @__PURE__ */ h(f, { className: "h-4 w-4" }),
|
|
91
92
|
onClick: () => P("../../teams/team-directory-page")
|
|
92
93
|
},
|
|
93
94
|
{
|
|
94
95
|
id: "analytics",
|
|
95
96
|
label: "Review team analytics",
|
|
96
97
|
description: "See how this team is performing before you change settings.",
|
|
97
|
-
icon: /* @__PURE__ */
|
|
98
|
+
icon: /* @__PURE__ */ h(a, { className: "h-4 w-4" }),
|
|
98
99
|
onClick: () => P("../../teams/team-analytics-page")
|
|
99
100
|
},
|
|
100
101
|
{
|
|
101
102
|
id: "detail",
|
|
102
103
|
label: "Open the team overview",
|
|
103
104
|
description: "See members and projects at a glance.",
|
|
104
|
-
icon: /* @__PURE__ */
|
|
105
|
+
icon: /* @__PURE__ */ h(c, { className: "h-4 w-4" }),
|
|
105
106
|
onClick: () => P(`../../teams/team-detail-page?id=${encodeURIComponent(H.id)}`)
|
|
106
107
|
}
|
|
107
108
|
]
|
|
108
109
|
}),
|
|
109
|
-
/* @__PURE__ */
|
|
110
|
+
/* @__PURE__ */ g("div", {
|
|
110
111
|
className: "grid gap-4 md:grid-cols-3",
|
|
111
112
|
children: [
|
|
112
|
-
/* @__PURE__ */
|
|
113
|
+
/* @__PURE__ */ h(y, { children: /* @__PURE__ */ g(b, {
|
|
113
114
|
className: "flex items-center gap-3 pt-6",
|
|
114
|
-
children: [/* @__PURE__ */
|
|
115
|
+
children: [/* @__PURE__ */ h(f, { className: "h-5 w-5 text-status-info-text" }), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("p", {
|
|
115
116
|
className: "text-xs text-text-secondary",
|
|
116
117
|
children: "Members"
|
|
117
|
-
}), /* @__PURE__ */
|
|
118
|
+
}), /* @__PURE__ */ h("p", {
|
|
118
119
|
className: "text-lg font-bold",
|
|
119
120
|
children: H.memberCount
|
|
120
121
|
})] })]
|
|
121
122
|
}) }),
|
|
122
|
-
/* @__PURE__ */
|
|
123
|
+
/* @__PURE__ */ h(y, { children: /* @__PURE__ */ g(b, {
|
|
123
124
|
className: "flex items-center gap-3 pt-6",
|
|
124
|
-
children: [/* @__PURE__ */
|
|
125
|
+
children: [/* @__PURE__ */ h(c, { className: "h-5 w-5 text-action-primary-bg" }), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("p", {
|
|
125
126
|
className: "text-xs text-text-secondary",
|
|
126
127
|
children: "Active Projects"
|
|
127
|
-
}), /* @__PURE__ */
|
|
128
|
+
}), /* @__PURE__ */ h("p", {
|
|
128
129
|
className: "text-lg font-bold",
|
|
129
130
|
children: H.projectCount
|
|
130
131
|
})] })]
|
|
131
132
|
}) }),
|
|
132
|
-
/* @__PURE__ */
|
|
133
|
+
/* @__PURE__ */ h(y, { children: /* @__PURE__ */ g(b, {
|
|
133
134
|
className: "flex items-center gap-3 pt-6",
|
|
134
|
-
children: [/* @__PURE__ */
|
|
135
|
+
children: [/* @__PURE__ */ h(l, { className: "h-5 w-5 text-status-success-text" }), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("p", {
|
|
135
136
|
className: "text-xs text-text-secondary",
|
|
136
137
|
children: "Status"
|
|
137
|
-
}), /* @__PURE__ */
|
|
138
|
+
}), /* @__PURE__ */ h("p", {
|
|
138
139
|
className: "text-lg font-bold capitalize",
|
|
139
|
-
children: H.status
|
|
140
|
+
children: t(H.status)
|
|
140
141
|
})] })]
|
|
141
142
|
}) })
|
|
142
143
|
]
|
|
143
144
|
}),
|
|
144
|
-
/* @__PURE__ */
|
|
145
|
+
/* @__PURE__ */ g("div", {
|
|
145
146
|
className: "grid gap-6 lg:grid-cols-3",
|
|
146
|
-
children: [/* @__PURE__ */
|
|
147
|
+
children: [/* @__PURE__ */ g("div", {
|
|
147
148
|
className: "lg:col-span-2 space-y-6",
|
|
148
149
|
children: [
|
|
149
|
-
/* @__PURE__ */
|
|
150
|
-
/* @__PURE__ */
|
|
150
|
+
/* @__PURE__ */ g(ne, { children: [
|
|
151
|
+
/* @__PURE__ */ h("div", {
|
|
151
152
|
className: "text-base font-semibold",
|
|
152
153
|
children: "General Settings"
|
|
153
154
|
}),
|
|
154
|
-
/* @__PURE__ */
|
|
155
|
+
/* @__PURE__ */ h("p", {
|
|
155
156
|
className: "mb-4 text-sm text-text-secondary",
|
|
156
157
|
children: "Basic team information"
|
|
157
158
|
}),
|
|
158
|
-
/* @__PURE__ */
|
|
159
|
+
/* @__PURE__ */ g("div", {
|
|
159
160
|
className: "space-y-4",
|
|
160
161
|
children: [
|
|
161
|
-
/* @__PURE__ */
|
|
162
|
+
/* @__PURE__ */ g("div", {
|
|
162
163
|
className: "space-y-2",
|
|
163
|
-
children: [/* @__PURE__ */
|
|
164
|
+
children: [/* @__PURE__ */ h(D, {
|
|
164
165
|
htmlFor: "tsName",
|
|
165
166
|
children: "Team Name"
|
|
166
|
-
}), /* @__PURE__ */
|
|
167
|
+
}), /* @__PURE__ */ h(E, {
|
|
167
168
|
id: "tsName",
|
|
168
169
|
value: U,
|
|
169
170
|
disabled: K,
|
|
170
171
|
onChange: (e) => W(e.target.value)
|
|
171
172
|
})]
|
|
172
173
|
}),
|
|
173
|
-
/* @__PURE__ */
|
|
174
|
+
/* @__PURE__ */ g("div", {
|
|
174
175
|
className: "space-y-2",
|
|
175
|
-
children: [/* @__PURE__ */
|
|
176
|
+
children: [/* @__PURE__ */ h(D, {
|
|
176
177
|
htmlFor: "tsDesc",
|
|
177
178
|
children: "Description"
|
|
178
|
-
}), /* @__PURE__ */
|
|
179
|
+
}), /* @__PURE__ */ h(M, {
|
|
179
180
|
id: "tsDesc",
|
|
180
181
|
className: "min-h-[80px]",
|
|
181
182
|
value: G,
|
|
182
183
|
disabled: K,
|
|
183
|
-
onChange: (e) =>
|
|
184
|
+
onChange: (e) => le(e.target.value)
|
|
184
185
|
})]
|
|
185
186
|
}),
|
|
186
|
-
/* @__PURE__ */
|
|
187
|
+
/* @__PURE__ */ g("div", {
|
|
187
188
|
className: "grid gap-4 sm:grid-cols-2",
|
|
188
|
-
children: [/* @__PURE__ */
|
|
189
|
+
children: [/* @__PURE__ */ g("div", {
|
|
189
190
|
className: "space-y-2",
|
|
190
|
-
children: [/* @__PURE__ */
|
|
191
|
+
children: [/* @__PURE__ */ h(D, { children: "Department" }), /* @__PURE__ */ h(E, {
|
|
191
192
|
value: H.department,
|
|
192
193
|
disabled: !0,
|
|
193
194
|
className: "bg-bg-sunken"
|
|
194
195
|
})]
|
|
195
|
-
}), /* @__PURE__ */
|
|
196
|
+
}), /* @__PURE__ */ g("div", {
|
|
196
197
|
className: "space-y-2",
|
|
197
|
-
children: [/* @__PURE__ */
|
|
198
|
+
children: [/* @__PURE__ */ h(D, { children: "Team Lead" }), /* @__PURE__ */ h(E, {
|
|
198
199
|
value: H.leadName,
|
|
199
200
|
disabled: !0,
|
|
200
201
|
className: "bg-bg-sunken"
|
|
@@ -204,90 +205,90 @@ function P() {
|
|
|
204
205
|
]
|
|
205
206
|
})
|
|
206
207
|
] }),
|
|
207
|
-
/* @__PURE__ */
|
|
208
|
+
/* @__PURE__ */ g(y, { children: [/* @__PURE__ */ h(S, { children: /* @__PURE__ */ g("div", {
|
|
208
209
|
className: "flex items-center justify-between",
|
|
209
|
-
children: [/* @__PURE__ */
|
|
210
|
+
children: [/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h(C, {
|
|
210
211
|
className: "text-base",
|
|
211
212
|
children: "Team Members"
|
|
212
|
-
}), /* @__PURE__ */
|
|
213
|
+
}), /* @__PURE__ */ g(x, { children: [Q.length, " active members"] })] }), /* @__PURE__ */ g(v, {
|
|
213
214
|
size: "sm",
|
|
214
215
|
onClick: () => Z.openModal(),
|
|
215
216
|
disabled: $.length === 0,
|
|
216
|
-
children: [/* @__PURE__ */
|
|
217
|
+
children: [/* @__PURE__ */ h(te, { className: "h-3 w-3 mr-1" }), "Add Member"]
|
|
217
218
|
})]
|
|
218
|
-
}) }), /* @__PURE__ */
|
|
219
|
+
}) }), /* @__PURE__ */ h(b, {
|
|
219
220
|
className: "p-0",
|
|
220
|
-
children: Q.length === 0 ? /* @__PURE__ */
|
|
221
|
+
children: Q.length === 0 ? /* @__PURE__ */ h("p", {
|
|
221
222
|
className: "px-6 py-4 text-sm text-text-secondary",
|
|
222
223
|
children: "No members yet. Use “Add Member” to build out this team."
|
|
223
|
-
}) : Q.map((e,
|
|
224
|
-
className: `flex items-center justify-between px-6 py-3 ${
|
|
225
|
-
children: [/* @__PURE__ */
|
|
224
|
+
}) : Q.map((e, n) => /* @__PURE__ */ g("div", {
|
|
225
|
+
className: `flex items-center justify-between px-6 py-3 ${n < Q.length - 1 ? "border-b" : ""}`,
|
|
226
|
+
children: [/* @__PURE__ */ g("div", {
|
|
226
227
|
className: "flex items-center gap-3",
|
|
227
|
-
children: [/* @__PURE__ */
|
|
228
|
+
children: [/* @__PURE__ */ g("div", {
|
|
228
229
|
className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-bg-sunken text-xs font-medium",
|
|
229
230
|
children: [e.firstName[0], e.lastName[0]]
|
|
230
|
-
}), /* @__PURE__ */
|
|
231
|
+
}), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ g("div", {
|
|
231
232
|
className: "flex items-center gap-2",
|
|
232
|
-
children: [/* @__PURE__ */
|
|
233
|
+
children: [/* @__PURE__ */ g("p", {
|
|
233
234
|
className: "text-sm font-medium",
|
|
234
235
|
children: [
|
|
235
236
|
e.firstName,
|
|
236
237
|
" ",
|
|
237
238
|
e.lastName
|
|
238
239
|
]
|
|
239
|
-
}), e.id === H.leadId && /* @__PURE__ */
|
|
240
|
+
}), e.id === H.leadId && /* @__PURE__ */ h(_, {
|
|
240
241
|
className: "text-[10px]",
|
|
241
242
|
children: "Lead"
|
|
242
243
|
})]
|
|
243
|
-
}), /* @__PURE__ */
|
|
244
|
+
}), /* @__PURE__ */ h("p", {
|
|
244
245
|
className: "text-xs text-text-secondary",
|
|
245
246
|
children: e.position
|
|
246
247
|
})] })]
|
|
247
|
-
}), /* @__PURE__ */
|
|
248
|
+
}), /* @__PURE__ */ g("div", {
|
|
248
249
|
className: "flex items-center gap-2",
|
|
249
|
-
children: [/* @__PURE__ */
|
|
250
|
+
children: [/* @__PURE__ */ h(_, {
|
|
250
251
|
variant: e.status === "active" ? "secondary" : "outline",
|
|
251
252
|
className: "text-[10px]",
|
|
252
|
-
children: e.status
|
|
253
|
-
}), e.id !== H.leadId && /* @__PURE__ */
|
|
253
|
+
children: t(e.status)
|
|
254
|
+
}), e.id !== H.leadId && /* @__PURE__ */ h(v, {
|
|
254
255
|
variant: "ghost",
|
|
255
256
|
size: "sm",
|
|
256
257
|
"aria-label": `Remove ${e.firstName} ${e.lastName} from team`,
|
|
257
258
|
className: "h-7 w-7 p-0 text-text-secondary hover:text-status-error-text",
|
|
258
|
-
onClick: () =>
|
|
259
|
-
children: /* @__PURE__ */
|
|
259
|
+
onClick: () => me(e.id),
|
|
260
|
+
children: /* @__PURE__ */ h(d, { className: "h-3 w-3" })
|
|
260
261
|
})]
|
|
261
262
|
})]
|
|
262
263
|
}, e.id))
|
|
263
264
|
})] }),
|
|
264
|
-
/* @__PURE__ */
|
|
265
|
+
/* @__PURE__ */ g(y, { children: [/* @__PURE__ */ g(S, { children: [/* @__PURE__ */ h(C, {
|
|
265
266
|
className: "text-base",
|
|
266
267
|
children: "Permissions & Access"
|
|
267
|
-
}), /* @__PURE__ */
|
|
268
|
+
}), /* @__PURE__ */ h(x, { children: "Visibility and join controls — coming soon on the CrewFoundry roadmap." })] }), /* @__PURE__ */ g(b, {
|
|
268
269
|
className: "space-y-4",
|
|
269
270
|
children: [
|
|
270
|
-
/* @__PURE__ */
|
|
271
|
+
/* @__PURE__ */ g("div", {
|
|
271
272
|
className: "flex items-center justify-between",
|
|
272
|
-
children: [/* @__PURE__ */
|
|
273
|
+
children: [/* @__PURE__ */ g("div", {
|
|
273
274
|
className: "space-y-0.5",
|
|
274
|
-
children: [/* @__PURE__ */
|
|
275
|
+
children: [/* @__PURE__ */ h("p", {
|
|
275
276
|
className: "text-sm font-medium",
|
|
276
277
|
children: "Private Team"
|
|
277
|
-
}), /* @__PURE__ */
|
|
278
|
+
}), /* @__PURE__ */ h("p", {
|
|
278
279
|
className: "text-xs text-text-secondary",
|
|
279
280
|
children: "Only invited members can see this team"
|
|
280
281
|
})]
|
|
281
|
-
}), /* @__PURE__ */
|
|
282
|
+
}), /* @__PURE__ */ g("div", {
|
|
282
283
|
className: "flex items-center gap-2",
|
|
283
284
|
children: [
|
|
284
|
-
/* @__PURE__ */
|
|
285
|
-
/* @__PURE__ */
|
|
285
|
+
/* @__PURE__ */ h(s, { className: "h-4 w-4 text-text-secondary" }),
|
|
286
|
+
/* @__PURE__ */ h(_, {
|
|
286
287
|
variant: "outline",
|
|
287
288
|
className: "text-[10px]",
|
|
288
289
|
children: "Coming soon"
|
|
289
290
|
}),
|
|
290
|
-
/* @__PURE__ */
|
|
291
|
+
/* @__PURE__ */ h(j, {
|
|
291
292
|
checked: !1,
|
|
292
293
|
disabled: !0,
|
|
293
294
|
"aria-label": "Private team (coming soon)"
|
|
@@ -295,25 +296,25 @@ function P() {
|
|
|
295
296
|
]
|
|
296
297
|
})]
|
|
297
298
|
}),
|
|
298
|
-
/* @__PURE__ */
|
|
299
|
-
/* @__PURE__ */
|
|
299
|
+
/* @__PURE__ */ h(A, {}),
|
|
300
|
+
/* @__PURE__ */ g("div", {
|
|
300
301
|
className: "flex items-center justify-between",
|
|
301
|
-
children: [/* @__PURE__ */
|
|
302
|
+
children: [/* @__PURE__ */ g("div", {
|
|
302
303
|
className: "space-y-0.5",
|
|
303
|
-
children: [/* @__PURE__ */
|
|
304
|
+
children: [/* @__PURE__ */ h("p", {
|
|
304
305
|
className: "text-sm font-medium",
|
|
305
306
|
children: "Auto-Approve Join Requests"
|
|
306
|
-
}), /* @__PURE__ */
|
|
307
|
+
}), /* @__PURE__ */ h("p", {
|
|
307
308
|
className: "text-xs text-text-secondary",
|
|
308
309
|
children: "Automatically accept when employees request to join"
|
|
309
310
|
})]
|
|
310
|
-
}), /* @__PURE__ */
|
|
311
|
+
}), /* @__PURE__ */ g("div", {
|
|
311
312
|
className: "flex items-center gap-2",
|
|
312
|
-
children: [/* @__PURE__ */
|
|
313
|
+
children: [/* @__PURE__ */ h(_, {
|
|
313
314
|
variant: "outline",
|
|
314
315
|
className: "text-[10px]",
|
|
315
316
|
children: "Coming soon"
|
|
316
|
-
}), /* @__PURE__ */
|
|
317
|
+
}), /* @__PURE__ */ h(j, {
|
|
317
318
|
checked: !1,
|
|
318
319
|
disabled: !0,
|
|
319
320
|
"aria-label": "Auto-approve join requests (coming soon)"
|
|
@@ -323,48 +324,48 @@ function P() {
|
|
|
323
324
|
]
|
|
324
325
|
})] })
|
|
325
326
|
]
|
|
326
|
-
}), /* @__PURE__ */
|
|
327
|
+
}), /* @__PURE__ */ g("div", {
|
|
327
328
|
className: "space-y-4",
|
|
328
329
|
children: [
|
|
329
|
-
/* @__PURE__ */
|
|
330
|
+
/* @__PURE__ */ g(y, { children: [/* @__PURE__ */ g(S, { children: [/* @__PURE__ */ h(C, {
|
|
330
331
|
className: "text-sm",
|
|
331
332
|
children: "Notification Preferences"
|
|
332
|
-
}), /* @__PURE__ */
|
|
333
|
+
}), /* @__PURE__ */ h(x, {
|
|
333
334
|
className: "text-xs",
|
|
334
335
|
children: "Coming soon on the roadmap."
|
|
335
|
-
})] }), /* @__PURE__ */
|
|
336
|
+
})] }), /* @__PURE__ */ g(b, {
|
|
336
337
|
className: "space-y-4",
|
|
337
338
|
children: [
|
|
338
|
-
/* @__PURE__ */
|
|
339
|
+
/* @__PURE__ */ g("div", {
|
|
339
340
|
className: "flex items-center justify-between",
|
|
340
|
-
children: [/* @__PURE__ */
|
|
341
|
+
children: [/* @__PURE__ */ g("div", {
|
|
341
342
|
className: "flex items-center gap-2",
|
|
342
|
-
children: [/* @__PURE__ */
|
|
343
|
+
children: [/* @__PURE__ */ h(o, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("p", {
|
|
343
344
|
className: "text-xs font-medium",
|
|
344
345
|
children: "New Member Alerts"
|
|
345
|
-
}), /* @__PURE__ */
|
|
346
|
+
}), /* @__PURE__ */ h("p", {
|
|
346
347
|
className: "text-[10px] text-text-secondary",
|
|
347
348
|
children: "Notify when members join or leave"
|
|
348
349
|
})] })]
|
|
349
|
-
}), /* @__PURE__ */
|
|
350
|
+
}), /* @__PURE__ */ h(j, {
|
|
350
351
|
checked: !1,
|
|
351
352
|
disabled: !0,
|
|
352
353
|
"aria-label": "New member alerts (coming soon)"
|
|
353
354
|
})]
|
|
354
355
|
}),
|
|
355
|
-
/* @__PURE__ */
|
|
356
|
-
/* @__PURE__ */
|
|
356
|
+
/* @__PURE__ */ h(A, {}),
|
|
357
|
+
/* @__PURE__ */ g("div", {
|
|
357
358
|
className: "flex items-center justify-between",
|
|
358
|
-
children: [/* @__PURE__ */
|
|
359
|
+
children: [/* @__PURE__ */ g("div", {
|
|
359
360
|
className: "flex items-center gap-2",
|
|
360
|
-
children: [/* @__PURE__ */
|
|
361
|
+
children: [/* @__PURE__ */ h(o, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("p", {
|
|
361
362
|
className: "text-xs font-medium",
|
|
362
363
|
children: "Weekly Digest"
|
|
363
|
-
}), /* @__PURE__ */
|
|
364
|
+
}), /* @__PURE__ */ h("p", {
|
|
364
365
|
className: "text-[10px] text-text-secondary",
|
|
365
366
|
children: "Summary of team activity"
|
|
366
367
|
})] })]
|
|
367
|
-
}), /* @__PURE__ */
|
|
368
|
+
}), /* @__PURE__ */ h(j, {
|
|
368
369
|
checked: !1,
|
|
369
370
|
disabled: !0,
|
|
370
371
|
"aria-label": "Weekly digest (coming soon)"
|
|
@@ -372,10 +373,10 @@ function P() {
|
|
|
372
373
|
})
|
|
373
374
|
]
|
|
374
375
|
})] }),
|
|
375
|
-
/* @__PURE__ */
|
|
376
|
+
/* @__PURE__ */ g(y, { children: [/* @__PURE__ */ h(S, { children: /* @__PURE__ */ h(C, {
|
|
376
377
|
className: "text-sm",
|
|
377
378
|
children: "Team Info"
|
|
378
|
-
}) }), /* @__PURE__ */
|
|
379
|
+
}) }), /* @__PURE__ */ h(b, {
|
|
379
380
|
className: "space-y-2 text-sm",
|
|
380
381
|
children: [
|
|
381
382
|
{
|
|
@@ -398,64 +399,64 @@ function P() {
|
|
|
398
399
|
label: "Members",
|
|
399
400
|
value: H.memberCount.toString()
|
|
400
401
|
}
|
|
401
|
-
].map((e) => /* @__PURE__ */
|
|
402
|
+
].map((e) => /* @__PURE__ */ g("div", {
|
|
402
403
|
className: "flex items-center justify-between",
|
|
403
|
-
children: [/* @__PURE__ */
|
|
404
|
+
children: [/* @__PURE__ */ h("span", {
|
|
404
405
|
className: "text-text-secondary text-xs",
|
|
405
406
|
children: e.label
|
|
406
|
-
}), /* @__PURE__ */
|
|
407
|
+
}), /* @__PURE__ */ h("span", {
|
|
407
408
|
className: "text-xs font-medium",
|
|
408
409
|
children: e.value
|
|
409
410
|
})]
|
|
410
411
|
}, e.label))
|
|
411
412
|
})] }),
|
|
412
|
-
/* @__PURE__ */
|
|
413
|
+
/* @__PURE__ */ g(y, {
|
|
413
414
|
className: "border-status-error-border/50",
|
|
414
|
-
children: [/* @__PURE__ */
|
|
415
|
+
children: [/* @__PURE__ */ h(S, { children: /* @__PURE__ */ h(C, {
|
|
415
416
|
className: "text-sm text-status-error-text",
|
|
416
417
|
children: "Danger Zone"
|
|
417
|
-
}) }), /* @__PURE__ */
|
|
418
|
+
}) }), /* @__PURE__ */ g(b, {
|
|
418
419
|
className: "space-y-3",
|
|
419
|
-
children: [/* @__PURE__ */
|
|
420
|
+
children: [/* @__PURE__ */ h("p", {
|
|
420
421
|
className: "text-xs text-text-secondary",
|
|
421
422
|
children: "Archiving a team removes it from the active roster and deactivates associated projects. This action can be reversed by an admin."
|
|
422
|
-
}), /* @__PURE__ */
|
|
423
|
+
}), /* @__PURE__ */ g(v, {
|
|
423
424
|
variant: "destructive",
|
|
424
425
|
size: "sm",
|
|
425
426
|
className: "w-full",
|
|
426
427
|
onClick: () => J(!0),
|
|
427
|
-
children: [/* @__PURE__ */
|
|
428
|
+
children: [/* @__PURE__ */ h(u, { className: "h-3 w-3 mr-1" }), "Archive Team"]
|
|
428
429
|
})]
|
|
429
430
|
})]
|
|
430
431
|
})
|
|
431
432
|
]
|
|
432
433
|
})]
|
|
433
434
|
}),
|
|
434
|
-
/* @__PURE__ */
|
|
435
|
+
/* @__PURE__ */ h(n, {
|
|
435
436
|
open: Z.open,
|
|
436
437
|
onOpenChange: Z.onOpenChange,
|
|
437
438
|
title: "Add Team Member",
|
|
438
439
|
description: `Add an employee to ${H.name}.`,
|
|
439
|
-
fields:
|
|
440
|
+
fields: fe,
|
|
440
441
|
submitLabel: "Add Member",
|
|
441
|
-
onSubmit:
|
|
442
|
+
onSubmit: pe
|
|
442
443
|
}),
|
|
443
|
-
/* @__PURE__ */
|
|
444
|
-
open:
|
|
444
|
+
/* @__PURE__ */ h(ae, {
|
|
445
|
+
open: ue,
|
|
445
446
|
onOpenChange: J,
|
|
446
|
-
children: /* @__PURE__ */
|
|
447
|
+
children: /* @__PURE__ */ g(oe, {
|
|
447
448
|
className: "sm:max-w-[440px]",
|
|
448
|
-
children: [/* @__PURE__ */
|
|
449
|
+
children: [/* @__PURE__ */ g(O, { children: [/* @__PURE__ */ g(k, { children: [
|
|
449
450
|
"Archive ",
|
|
450
451
|
H.name,
|
|
451
452
|
"?"
|
|
452
|
-
] }), /* @__PURE__ */
|
|
453
|
+
] }), /* @__PURE__ */ h(se, { children: "This removes the team from the active roster. An admin can restore it later." })] }), /* @__PURE__ */ g(ce, { children: [/* @__PURE__ */ h(v, {
|
|
453
454
|
type: "button",
|
|
454
455
|
variant: "outline",
|
|
455
456
|
onClick: () => J(!1),
|
|
456
457
|
disabled: Y,
|
|
457
458
|
children: "Cancel"
|
|
458
|
-
}), /* @__PURE__ */
|
|
459
|
+
}), /* @__PURE__ */ h(v, {
|
|
459
460
|
type: "button",
|
|
460
461
|
variant: "destructive",
|
|
461
462
|
onClick: async () => {
|