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