@burdenoff/microfe-workspaces 2026.625.4 → 2026.626.1

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 (35) hide show
  1. package/dist/hooks/useMemberMutations.js +6 -6
  2. package/dist/hooks/useMemberMutations.js.map +1 -1
  3. package/dist/pages/ActivityListPage.js +94 -90
  4. package/dist/pages/ActivityListPage.js.map +1 -1
  5. package/dist/pages/CreateWorkspacePage.js +68 -63
  6. package/dist/pages/CreateWorkspacePage.js.map +1 -1
  7. package/dist/pages/InviteAcceptancePage.js +101 -96
  8. package/dist/pages/InviteAcceptancePage.js.map +1 -1
  9. package/dist/pages/MembersListPage.js +185 -184
  10. package/dist/pages/MembersListPage.js.map +1 -1
  11. package/dist/pages/PendingInvitesPage.js +70 -68
  12. package/dist/pages/PendingInvitesPage.js.map +1 -1
  13. package/dist/pages/ProjectDetailPage.js +119 -78
  14. package/dist/pages/ProjectDetailPage.js.map +1 -1
  15. package/dist/pages/ProjectMembersPage.js +105 -104
  16. package/dist/pages/ProjectMembersPage.js.map +1 -1
  17. package/dist/pages/ProjectsListPage.js +158 -157
  18. package/dist/pages/ProjectsListPage.js.map +1 -1
  19. package/dist/pages/WorkspaceDetailPage.js +236 -198
  20. package/dist/pages/WorkspaceDetailPage.js.map +1 -1
  21. package/dist/pages/WorkspaceInvitePage.js +341 -300
  22. package/dist/pages/WorkspaceInvitePage.js.map +1 -1
  23. package/dist/pages/WorkspaceSettingsPage.js +87 -85
  24. package/dist/pages/WorkspaceSettingsPage.js.map +1 -1
  25. package/dist/pages/WorkspacesListPage.js +122 -121
  26. package/dist/pages/WorkspacesListPage.js.map +1 -1
  27. package/dist/pages/dashboard/DashboardPage.js +55 -51
  28. package/dist/pages/dashboard/DashboardPage.js.map +1 -1
  29. package/dist/pages/dashboard/widgets/GroupsWidget.js +16 -17
  30. package/dist/pages/dashboard/widgets/GroupsWidget.js.map +1 -1
  31. package/dist/pages/dashboard/widgets/TagCloudWidget.js +18 -19
  32. package/dist/pages/dashboard/widgets/TagCloudWidget.js.map +1 -1
  33. package/dist/pages/dashboard/widgets/WorkflowStatsWidget.js +10 -11
  34. package/dist/pages/dashboard/widgets/WorkflowStatsWidget.js.map +1 -1
  35. package/package.json +2 -2
@@ -8,220 +8,221 @@ import { nativeConfirm as ee, nativeImpact as te } from "../utils/nativeBridge.j
8
8
  import { useWorkspaceInvitations as ne, useWorkspaceMembers as re } from "../hooks/useWorkspaceMembers.js";
9
9
  import { useRemoveUserFromWorkspace as ie, useResendInvitation as ae } from "../hooks/useMemberMutations.js";
10
10
  import { useWorkspacePermissions as oe } from "../hooks/useWorkspacePermissions.js";
11
- import { MemberListItem as o } from "../components/MemberListItem.js";
12
- import { useEffect as s, useMemo as c, useState as l } from "react";
13
- import { AlertCircle as se, RefreshCw as ce, Search as le, UserPlus as u, Users as ue } from "lucide-react";
14
- import { jsx as d, jsxs as f } from "react/jsx-runtime";
15
- import { Badge as p, Button as m, IllustratedEmptyState as h, Input as de, PageContainer as fe, Skeleton as g } from "@burdenoff/fe-libs/ui";
16
- import { useNavigate as pe, useParams as me, useSearchParams as he } from "react-router-dom";
17
- import { useDebounce as ge } from "@burdenoff/fe-libs/shared/hooks";
18
- import { PermissionButton as _ } from "@burdenoff/fe-libs/shared/components";
19
- import { useI18n as _e } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
20
- import { useActorProfiles as ve } from "@burdenoff/fe-libs/shared";
11
+ import { MemberListItem as se } from "../components/MemberListItem.js";
12
+ import { useEffect as o, useMemo as s, useState as c } from "react";
13
+ import { AlertCircle as ce, RefreshCw as le, Search as ue, UserPlus as l, Users as de } from "lucide-react";
14
+ import { jsx as u, jsxs as d } from "react/jsx-runtime";
15
+ import { Badge as f, Button as p, IllustratedEmptyState as m, Input as fe, PageContainer as pe, PagePurpose as me, Skeleton as h } from "@burdenoff/fe-libs/ui";
16
+ import { useNavigate as he, useParams as ge, useSearchParams as _e } from "react-router-dom";
17
+ import { useDebounce as ve } from "@burdenoff/fe-libs/shared/hooks";
18
+ import { PermissionButton as g } from "@burdenoff/fe-libs/shared/components";
19
+ import { useI18n as ye } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
20
+ import { useActorProfiles as be } from "@burdenoff/fe-libs/shared";
21
21
  //#region src/pages/MembersListPage.tsx
22
- function v() {
23
- let { t: v } = _e(), { memberFilters: ye, setMemberFilters: y, selectedMemberIds: b, toggleMemberSelection: x, clearMemberSelection: S } = t(), C = pe(), { workspaceId: be } = e(), { basePath: w = "/workspaces" } = e(), { withCurrentSearch: T } = n(), { workspaceId: xe } = me(), E = xe || be;
22
+ function _() {
23
+ let { t: _ } = ye(), { memberFilters: xe, setMemberFilters: v, selectedMemberIds: y, toggleMemberSelection: b, clearMemberSelection: x } = t(), S = he(), { workspaceId: Se } = e(), { basePath: C = "/workspaces" } = e(), { withCurrentSearch: w } = n(), { workspaceId: Ce } = ge(), T = Ce || Se;
24
24
  a("workspaces.members", {
25
- workspaceId: E,
25
+ workspaceId: T,
26
26
  requireParams: !0
27
27
  });
28
- let [D, Se] = l(ye.search || ""), O = ge(D, 500);
29
- s(() => {
30
- y({ search: O });
31
- }, [O, y]);
32
- let { data: k, isLoading: Ce, error: A } = re(E || ""), { data: j, isLoading: we } = ne(E || "", "PENDING"), { mutate: M, isPending: N } = ae(), { mutate: Te, isPending: Ee } = ie(), [P, F] = l(null), [I, L] = l(/* @__PURE__ */ new Set()), De = (e) => {
33
- F(e), M(e, {
28
+ let [E, we] = c(xe.search || ""), D = ve(E, 500);
29
+ o(() => {
30
+ v({ search: D });
31
+ }, [D, v]);
32
+ let { data: O, isLoading: k, error: A } = re(T || ""), { data: j, isLoading: Te } = ne(T || "", "PENDING"), { mutate: M, isPending: N } = ae(), { mutate: Ee, isPending: P } = ie(), [F, I] = c(null), [L, R] = c(/* @__PURE__ */ new Set()), De = (e) => {
33
+ I(e), M(e, {
34
34
  onSuccess: () => {
35
- F(null);
35
+ I(null);
36
36
  },
37
37
  onError: (e) => {
38
- console.error("Failed to resend invitation:", e), F(null);
38
+ console.error("Failed to resend invitation:", e), I(null);
39
39
  }
40
40
  });
41
- }, R = c(() => k?.items || [], [k?.items]), z = c(() => j?.items || [], [j?.items]), B = Ce || we, V = R.length > 0, H = z.length > 0, { apiGatewayUrl: Oe, authToken: ke, organizationId: Ae } = e(), je = ve(c(() => R.map((e) => ({
41
+ }, z = s(() => O?.items || [], [O?.items]), B = s(() => j?.items || [], [j?.items]), V = k || Te, H = z.length > 0, U = B.length > 0, { apiGatewayUrl: Oe, authToken: ke, organizationId: Ae } = e(), je = be(s(() => z.map((e) => ({
42
42
  actorId: e.userId,
43
43
  actorType: "user"
44
- })), [R]), {
44
+ })), [z]), {
45
45
  apiGatewayUrl: Oe,
46
46
  authToken: ke,
47
47
  orgId: Ae,
48
- workspaceId: E
49
- }), U = R.filter((e) => {
50
- if (!O) return !0;
51
- let t = O.toLowerCase(), n = je[e.userId];
48
+ workspaceId: T
49
+ }), W = z.filter((e) => {
50
+ if (!D) return !0;
51
+ let t = D.toLowerCase(), n = je[e.userId];
52
52
  if (n && (n.displayName.toLowerCase().includes(t) || n.email?.toLowerCase().includes(t))) return !0;
53
53
  let r = e.context?.metadata, i = typeof r?.email == "string" ? r.email : "", a = typeof r?.displayName == "string" ? r.displayName : typeof r?.name == "string" ? r.name : "";
54
54
  return i.toLowerCase().includes(t) || a.toLowerCase().includes(t) ? !0 : e.userId.toLowerCase().includes(t);
55
- }), W = c(() => U.filter((e) => b.has(e.id)), [U, b]), G = c(() => z.filter((e) => I.has(e.id)), [z, I]), K = U.length > 0 && U.every((e) => b.has(e.id)), Me = U.some((e) => b.has(e.id)) && !K, q = z.length > 0 && z.every((e) => I.has(e.id)), Ne = z.some((e) => I.has(e.id)) && !q;
56
- s(() => () => S(), [S]);
57
- let [J, Y] = he();
58
- s(() => {
59
- if (J.get("invite") === "true" && E) {
60
- let e = new URLSearchParams(J);
61
- e.delete("invite"), Y(e, { replace: !0 }), C(T(`${w}/${E}/invite`), { replace: !0 });
55
+ }), G = s(() => W.filter((e) => y.has(e.id)), [W, y]), K = s(() => B.filter((e) => L.has(e.id)), [B, L]), q = W.length > 0 && W.every((e) => y.has(e.id)), Me = W.some((e) => y.has(e.id)) && !q, J = B.length > 0 && B.every((e) => L.has(e.id)), Ne = B.some((e) => L.has(e.id)) && !J;
56
+ o(() => () => x(), [x]);
57
+ let [Y, X] = _e();
58
+ o(() => {
59
+ if (Y.get("invite") === "true" && T) {
60
+ let e = new URLSearchParams(Y);
61
+ e.delete("invite"), X(e, { replace: !0 }), S(w(`${C}/${T}/invite`), { replace: !0 });
62
62
  }
63
63
  }, [
64
- J,
65
64
  Y,
66
- E,
67
- C,
65
+ X,
68
66
  T,
69
- w
67
+ S,
68
+ w,
69
+ C
70
70
  ]);
71
- let { canListMembers: Pe, canInviteMember: X, canRemoveMember: Z, isLoading: Fe } = oe();
72
- if (Fe) return /* @__PURE__ */ f("div", {
71
+ let { canListMembers: Pe, canInviteMember: Z, canRemoveMember: Q, isLoading: Fe } = oe();
72
+ if (Fe) return /* @__PURE__ */ d("div", {
73
73
  className: "space-y-4 p-6",
74
- children: [/* @__PURE__ */ d(g, { className: "h-10 w-1/3" }), /* @__PURE__ */ d(g, { className: "h-64" })]
74
+ children: [/* @__PURE__ */ u(h, { className: "h-10 w-1/3" }), /* @__PURE__ */ u(h, { className: "h-64" })]
75
75
  });
76
- if (!Pe && !X) return /* @__PURE__ */ d("div", {
76
+ if (!Pe && !Z) return /* @__PURE__ */ u("div", {
77
77
  className: "flex items-center justify-center min-h-[400px]",
78
- children: /* @__PURE__ */ f("div", {
78
+ children: /* @__PURE__ */ d("div", {
79
79
  className: "text-center space-y-2",
80
- children: [/* @__PURE__ */ d("h2", {
80
+ children: [/* @__PURE__ */ u("h2", {
81
81
  className: "text-lg font-semibold",
82
- children: i(v, "membersList.accessDenied", "Access Denied")
83
- }), /* @__PURE__ */ d("p", {
82
+ children: i(_, "membersList.accessDenied", "Access Denied")
83
+ }), /* @__PURE__ */ u("p", {
84
84
  className: "text-sm text-text-secondary",
85
- children: i(v, "membersList.noPermissionToViewMembers", "You don't have permission to view workspace members.")
85
+ children: i(_, "membersList.noPermissionToViewMembers", "You don't have permission to view workspace members.")
86
86
  })]
87
87
  })
88
88
  });
89
- let Q = () => {
90
- E && C(T(`${w}/${E}/invite`));
89
+ let $ = () => {
90
+ T && S(w(`${C}/${T}/invite`));
91
91
  }, Ie = (e) => {
92
- U.forEach((t) => {
93
- e !== b.has(t.id) && x(t.id);
92
+ W.forEach((t) => {
93
+ e !== y.has(t.id) && b(t.id);
94
94
  });
95
- }, $ = (e, t) => {
96
- L((n) => {
95
+ }, Le = (e, t) => {
96
+ R((n) => {
97
97
  let r = new Set(n);
98
98
  return t ? r.add(e) : r.delete(e), r;
99
99
  });
100
- }, Le = (e) => {
101
- L((t) => {
100
+ }, Re = (e) => {
101
+ R((t) => {
102
102
  let n = new Set(t);
103
- return z.forEach((t) => {
103
+ return B.forEach((t) => {
104
104
  e ? n.add(t.id) : n.delete(t.id);
105
105
  }), n;
106
106
  });
107
- }, Re = async () => {
108
- if (W.length === 0) return;
107
+ }, ze = async () => {
108
+ if (G.length === 0) return;
109
109
  te("medium");
110
- let e = `${i(v, "membersList.bulkRemoveConfirmPrefix", "Remove")} ${W.length} ${W.length === 1 ? i(v, "membersList.bulkRemoveConfirmSingular", "selected member") : i(v, "membersList.bulkRemoveConfirmPlural", "selected members")} ${i(v, "membersList.bulkRemoveConfirmSuffix", "from this workspace?")}`, t = await ee({
110
+ let e = `${i(_, "membersList.bulkRemoveConfirmPrefix", "Remove")} ${G.length} ${G.length === 1 ? i(_, "membersList.bulkRemoveConfirmSingular", "selected member") : i(_, "membersList.bulkRemoveConfirmPlural", "selected members")} ${i(_, "membersList.bulkRemoveConfirmSuffix", "from this workspace?")}`, t = await ee({
111
111
  title: "Remove members",
112
112
  message: e,
113
113
  okButtonTitle: "Remove",
114
114
  cancelButtonTitle: "Cancel"
115
115
  });
116
- (t === null ? window.confirm(e) : t) && (W.forEach((e) => {
117
- Te(e.userId);
118
- }), S());
119
- }, ze = () => {
120
- G.length !== 0 && G.forEach((e) => {
116
+ (t === null ? window.confirm(e) : t) && (G.forEach((e) => {
117
+ Ee(e.userId);
118
+ }), x());
119
+ }, Be = () => {
120
+ K.length !== 0 && K.forEach((e) => {
121
121
  M(e.id, { onSuccess: () => {
122
- L((t) => {
122
+ R((t) => {
123
123
  let n = new Set(t);
124
124
  return n.delete(e.id), n;
125
125
  });
126
126
  } });
127
127
  });
128
128
  };
129
- return /* @__PURE__ */ d(fe, {
129
+ return /* @__PURE__ */ u(pe, {
130
130
  padded: !1,
131
- children: /* @__PURE__ */ f("div", {
131
+ children: /* @__PURE__ */ d("div", {
132
132
  className: "space-y-4 sm:space-y-6 p-3 sm:p-6",
133
133
  children: [
134
- /* @__PURE__ */ f("div", {
134
+ /* @__PURE__ */ d("div", {
135
135
  className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",
136
- children: [/* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("h1", {
136
+ children: [/* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("h1", {
137
137
  className: "text-2xl sm:text-3xl font-bold",
138
- children: i(v, "membersList.pageTitle", "Members")
139
- }), /* @__PURE__ */ d("p", {
138
+ children: i(_, "membersList.pageTitle", "Members")
139
+ }), /* @__PURE__ */ u("p", {
140
140
  className: "text-text-secondary text-sm sm:text-base",
141
- children: i(v, "membersList.pageSubtitle", "Manage workspace members and invitations")
142
- })] }), /* @__PURE__ */ d("div", {
141
+ children: i(_, "membersList.pageSubtitle", "Manage workspace members and invitations")
142
+ })] }), /* @__PURE__ */ u("div", {
143
143
  className: "flex gap-2",
144
- children: /* @__PURE__ */ d(_, {
144
+ children: /* @__PURE__ */ u(g, {
145
145
  permission: r.MEMBER_CREATE,
146
146
  deniedBehavior: "disable",
147
- deniedTooltip: i(v, "membersList.noPermissionToInvite", "You don't have permission to invite members"),
148
- children: /* @__PURE__ */ f(m, {
149
- onClick: Q,
150
- disabled: !E,
151
- children: [/* @__PURE__ */ d(u, { className: "size-4 sm:mr-2" }), /* @__PURE__ */ d("span", {
147
+ deniedTooltip: i(_, "membersList.noPermissionToInvite", "You don't have permission to invite members"),
148
+ children: /* @__PURE__ */ d(p, {
149
+ onClick: $,
150
+ disabled: !T,
151
+ children: [/* @__PURE__ */ u(l, { className: "size-4 sm:mr-2" }), /* @__PURE__ */ u("span", {
152
152
  className: "hidden sm:inline",
153
- children: i(v, "membersList.inviteMember", "Invite Member")
153
+ children: i(_, "membersList.inviteMember", "Invite Member")
154
154
  })]
155
155
  })
156
156
  })
157
157
  })]
158
158
  }),
159
- /* @__PURE__ */ f("div", {
159
+ /* @__PURE__ */ u(me, { children: i(_, "membersList.purpose", "Members are the people who belong to this workspace. From here you invite teammates, see who has accepted, resend or track invitations that are still pending, and remove people who no longer need access. Search by name or email to find someone quickly.") }),
160
+ /* @__PURE__ */ d("div", {
160
161
  className: "flex flex-col sm:flex-row gap-3 sm:gap-4",
161
- children: [/* @__PURE__ */ f("div", {
162
+ children: [/* @__PURE__ */ d("div", {
162
163
  className: "relative flex-1",
163
- children: [/* @__PURE__ */ d(le, { className: "absolute left-3 top-1/2 -translate-y-1/2 size-4 text-text-secondary" }), /* @__PURE__ */ d(de, {
164
- placeholder: i(v, "membersList.searchPlaceholder", "Search members..."),
165
- value: D,
166
- onChange: (e) => Se(e.target.value),
164
+ children: [/* @__PURE__ */ u(ue, { className: "absolute left-3 top-1/2 -translate-y-1/2 size-4 text-text-secondary" }), /* @__PURE__ */ u(fe, {
165
+ placeholder: i(_, "membersList.searchPlaceholder", "Search members..."),
166
+ value: E,
167
+ onChange: (e) => we(e.target.value),
167
168
  className: "pl-9"
168
169
  })]
169
- }), H && /* @__PURE__ */ d("div", {
170
+ }), U && /* @__PURE__ */ u("div", {
170
171
  className: "flex items-center gap-2",
171
- children: /* @__PURE__ */ f(p, {
172
+ children: /* @__PURE__ */ d(f, {
172
173
  variant: "secondary",
173
174
  className: "text-sm",
174
175
  children: [
175
- z.length,
176
+ B.length,
176
177
  " ",
177
- z.length === 1 ? i(v, "membersList.pendingInvitation", "Pending Invitation") : i(v, "membersList.pendingInvitations", "Pending Invitations")
178
+ B.length === 1 ? i(_, "membersList.pendingInvitation", "Pending Invitation") : i(_, "membersList.pendingInvitations", "Pending Invitations")
178
179
  ]
179
180
  })
180
181
  })]
181
182
  }),
182
- U.length > 0 && /* @__PURE__ */ f("div", {
183
+ W.length > 0 && /* @__PURE__ */ d("div", {
183
184
  className: "flex flex-col gap-3 rounded-lg border border-border-seam bg-bg-surface p-4 sm:flex-row sm:items-center sm:justify-between",
184
- children: [/* @__PURE__ */ f("label", {
185
+ children: [/* @__PURE__ */ d("label", {
185
186
  className: "flex items-center gap-2 text-sm text-text-primary",
186
- children: [/* @__PURE__ */ d("input", {
187
+ children: [/* @__PURE__ */ u("input", {
187
188
  type: "checkbox",
188
- checked: K,
189
+ checked: q,
189
190
  ref: (e) => {
190
- e && (e.indeterminate = Me && !K);
191
+ e && (e.indeterminate = Me && !q);
191
192
  },
192
193
  onChange: (e) => Ie(e.target.checked),
193
- "aria-label": i(v, "membersList.selectAllMembersAriaLabel", "Select all workspace members"),
194
+ "aria-label": i(_, "membersList.selectAllMembersAriaLabel", "Select all workspace members"),
194
195
  className: "size-4 rounded border-border-subtle text-primary"
195
- }), /* @__PURE__ */ d("span", { children: i(v, "membersList.selectAllVisibleMembers", "Select all visible members") })]
196
- }), /* @__PURE__ */ f("div", {
196
+ }), /* @__PURE__ */ u("span", { children: i(_, "membersList.selectAllVisibleMembers", "Select all visible members") })]
197
+ }), /* @__PURE__ */ d("div", {
197
198
  className: "flex flex-wrap items-center gap-2",
198
199
  children: [
199
- /* @__PURE__ */ f("span", {
200
+ /* @__PURE__ */ d("span", {
200
201
  className: "text-sm text-text-secondary",
201
202
  children: [
202
- b.size,
203
+ y.size,
203
204
  " ",
204
- i(v, "membersList.selected", "selected")
205
+ i(_, "membersList.selected", "selected")
205
206
  ]
206
207
  }),
207
- b.size > 0 && /* @__PURE__ */ d(m, {
208
+ y.size > 0 && /* @__PURE__ */ u(p, {
208
209
  variant: "ghost",
209
210
  size: "sm",
210
- onClick: S,
211
- children: i(v, "membersList.clearSelection", "Clear selection")
211
+ onClick: x,
212
+ children: i(_, "membersList.clearSelection", "Clear selection")
212
213
  }),
213
- Z && /* @__PURE__ */ f(m, {
214
+ Q && /* @__PURE__ */ d(p, {
214
215
  variant: "outline",
215
216
  size: "sm",
216
- onClick: Re,
217
- disabled: W.length === 0 || Ee,
217
+ onClick: ze,
218
+ disabled: G.length === 0 || P,
218
219
  className: "text-status-error-text",
219
- children: [i(v, "membersList.removeSelected", "Remove Selected"), W.length > 0 ? ` (${W.length})` : ""]
220
+ children: [i(_, "membersList.removeSelected", "Remove Selected"), G.length > 0 ? ` (${G.length})` : ""]
220
221
  })
221
222
  ]
222
223
  })]
223
224
  }),
224
- B && /* @__PURE__ */ d("div", {
225
+ V && /* @__PURE__ */ u("div", {
225
226
  className: "space-y-3",
226
227
  children: [...[
227
228
  ,
@@ -229,172 +230,172 @@ function v() {
229
230
  ,
230
231
  ,
231
232
  ,
232
- ]].map((e, t) => /* @__PURE__ */ d(g, { className: "h-20 w-full" }, t))
233
+ ]].map((e, t) => /* @__PURE__ */ u(h, { className: "h-20 w-full" }, t))
233
234
  }),
234
- !B && A && /* @__PURE__ */ f("div", {
235
+ !V && A && /* @__PURE__ */ d("div", {
235
236
  className: "flex flex-col items-center justify-center py-12 text-center",
236
237
  children: [
237
- /* @__PURE__ */ d("div", {
238
+ /* @__PURE__ */ u("div", {
238
239
  className: "rounded-full bg-status-error-bg/10 p-6 mb-4",
239
- children: /* @__PURE__ */ d(se, {
240
+ children: /* @__PURE__ */ u(ce, {
240
241
  size: 48,
241
242
  className: "text-status-error-text"
242
243
  })
243
244
  }),
244
- /* @__PURE__ */ d("h3", {
245
+ /* @__PURE__ */ u("h3", {
245
246
  className: "text-lg font-semibold mb-2",
246
- children: i(v, "membersList.failedToLoad", "Failed to Load Members")
247
+ children: i(_, "membersList.failedToLoad", "Failed to Load Members")
247
248
  }),
248
- /* @__PURE__ */ d("p", {
249
+ /* @__PURE__ */ u("p", {
249
250
  className: "text-text-secondary max-w-sm",
250
- children: A instanceof Error ? A.message : i(v, "membersList.errorLoadingMembers", "An error occurred while loading members")
251
+ children: A instanceof Error ? A.message : i(_, "membersList.errorLoadingMembers", "An error occurred while loading members")
251
252
  })
252
253
  ]
253
254
  }),
254
- !B && !A && !E && /* @__PURE__ */ d(h, {
255
+ !V && !A && !T && /* @__PURE__ */ u(m, {
255
256
  illustration: "empty-people",
256
- title: i(v, "membersList.noWorkspaceSelected", "No Workspace Selected"),
257
- description: i(v, "membersList.selectWorkspacePrompt", "Select a workspace to view and manage its members")
257
+ title: i(_, "membersList.noWorkspaceSelected", "No Workspace Selected"),
258
+ description: i(_, "membersList.selectWorkspacePrompt", "Select a workspace to view and manage its members")
258
259
  }),
259
- !B && !A && E && !V && /* @__PURE__ */ d(h, {
260
+ !V && !A && T && !H && /* @__PURE__ */ u(m, {
260
261
  illustration: "empty-people",
261
- title: i(v, "membersList.noMembersYet", "No Members Yet"),
262
- description: i(v, "membersList.noMembersPrompt", "Start building your team by inviting members to this workspace"),
263
- action: /* @__PURE__ */ d(_, {
262
+ title: i(_, "membersList.noMembersYet", "No Members Yet"),
263
+ description: i(_, "membersList.noMembersPrompt", "Start building your team by inviting members to this workspace"),
264
+ action: /* @__PURE__ */ u(g, {
264
265
  permission: r.MEMBER_CREATE,
265
266
  deniedBehavior: "disable",
266
- deniedTooltip: i(v, "membersList.noPermissionToInvite", "You don't have permission to invite members"),
267
- children: /* @__PURE__ */ f(m, {
268
- onClick: Q,
269
- children: [/* @__PURE__ */ d(u, { className: "mr-2 size-4" }), i(v, "membersList.inviteFirstMember", "Invite Your First Member")]
267
+ deniedTooltip: i(_, "membersList.noPermissionToInvite", "You don't have permission to invite members"),
268
+ children: /* @__PURE__ */ d(p, {
269
+ onClick: $,
270
+ children: [/* @__PURE__ */ u(l, { className: "mr-2 size-4" }), i(_, "membersList.inviteFirstMember", "Invite Your First Member")]
270
271
  })
271
272
  })
272
273
  }),
273
- !B && !A && E && V && U.length === 0 && /* @__PURE__ */ d(h, {
274
+ !V && !A && T && H && W.length === 0 && /* @__PURE__ */ u(m, {
274
275
  illustration: "empty-search",
275
- title: i(v, "membersList.noMembersFound", "No Members Found"),
276
- description: i(v, "membersList.noMembersFoundPrompt", "No members match your search criteria. Try adjusting your search.")
276
+ title: i(_, "membersList.noMembersFound", "No Members Found"),
277
+ description: i(_, "membersList.noMembersFoundPrompt", "No members match your search criteria. Try adjusting your search.")
277
278
  }),
278
- !B && U.length > 0 && /* @__PURE__ */ f("div", {
279
+ !V && W.length > 0 && /* @__PURE__ */ d("div", {
279
280
  className: "space-y-3",
280
- children: [/* @__PURE__ */ d("div", {
281
+ children: [/* @__PURE__ */ u("div", {
281
282
  className: "flex items-center justify-between",
282
- children: /* @__PURE__ */ f("h2", {
283
+ children: /* @__PURE__ */ d("h2", {
283
284
  className: "text-lg font-semibold",
284
285
  children: [
285
- i(v, "membersList.activeMembers", "Active Members"),
286
+ i(_, "membersList.activeMembers", "Active Members"),
286
287
  " (",
287
- U.length,
288
+ W.length,
288
289
  ")"
289
290
  ]
290
291
  })
291
- }), /* @__PURE__ */ d("div", {
292
+ }), /* @__PURE__ */ u("div", {
292
293
  className: "space-y-2",
293
- children: U.map((e) => /* @__PURE__ */ d(o, {
294
+ children: W.map((e) => /* @__PURE__ */ u(se, {
294
295
  member: e,
295
- selected: b.has(e.id),
296
+ selected: y.has(e.id),
296
297
  onToggleSelect: (t) => {
297
- t !== b.has(e.id) && x(e.id);
298
+ t !== y.has(e.id) && b(e.id);
298
299
  },
299
- canRemove: Z
300
+ canRemove: Q
300
301
  }, e.id))
301
302
  })]
302
303
  }),
303
- !B && H && /* @__PURE__ */ f("div", {
304
+ !V && U && /* @__PURE__ */ d("div", {
304
305
  className: "space-y-3",
305
306
  children: [
306
- /* @__PURE__ */ d("h2", {
307
+ /* @__PURE__ */ u("h2", {
307
308
  className: "text-lg font-semibold",
308
- children: i(v, "membersList.pendingInvitationsHeader", "Pending Invitations")
309
+ children: i(_, "membersList.pendingInvitationsHeader", "Pending Invitations")
309
310
  }),
310
- /* @__PURE__ */ f("div", {
311
+ /* @__PURE__ */ d("div", {
311
312
  className: "flex flex-col gap-3 rounded-lg border border-border-seam bg-bg-surface p-4 sm:flex-row sm:items-center sm:justify-between",
312
- children: [/* @__PURE__ */ f("label", {
313
+ children: [/* @__PURE__ */ d("label", {
313
314
  className: "flex items-center gap-2 text-sm text-text-primary",
314
- children: [/* @__PURE__ */ d("input", {
315
+ children: [/* @__PURE__ */ u("input", {
315
316
  type: "checkbox",
316
- checked: q,
317
+ checked: J,
317
318
  ref: (e) => {
318
- e && (e.indeterminate = Ne && !q);
319
+ e && (e.indeterminate = Ne && !J);
319
320
  },
320
- onChange: (e) => Le(e.target.checked),
321
- "aria-label": i(v, "membersList.selectAllInvitationsAriaLabel", "Select all pending invitations"),
321
+ onChange: (e) => Re(e.target.checked),
322
+ "aria-label": i(_, "membersList.selectAllInvitationsAriaLabel", "Select all pending invitations"),
322
323
  className: "size-4 rounded border-border-subtle text-primary"
323
- }), /* @__PURE__ */ d("span", { children: i(v, "membersList.selectAllInvitations", "Select all invitations") })]
324
- }), /* @__PURE__ */ f("div", {
324
+ }), /* @__PURE__ */ u("span", { children: i(_, "membersList.selectAllInvitations", "Select all invitations") })]
325
+ }), /* @__PURE__ */ d("div", {
325
326
  className: "flex flex-wrap items-center gap-2",
326
327
  children: [
327
- /* @__PURE__ */ f("span", {
328
+ /* @__PURE__ */ d("span", {
328
329
  className: "text-sm text-text-secondary",
329
330
  children: [
330
- I.size,
331
+ L.size,
331
332
  " ",
332
- i(v, "membersList.selected", "selected")
333
+ i(_, "membersList.selected", "selected")
333
334
  ]
334
335
  }),
335
- I.size > 0 && /* @__PURE__ */ d(m, {
336
+ L.size > 0 && /* @__PURE__ */ u(p, {
336
337
  variant: "ghost",
337
338
  size: "sm",
338
- onClick: () => L(/* @__PURE__ */ new Set()),
339
- children: i(v, "membersList.clearSelection", "Clear selection")
339
+ onClick: () => R(/* @__PURE__ */ new Set()),
340
+ children: i(_, "membersList.clearSelection", "Clear selection")
340
341
  }),
341
- X && /* @__PURE__ */ f(m, {
342
+ Z && /* @__PURE__ */ d(p, {
342
343
  variant: "outline",
343
344
  size: "sm",
344
- onClick: ze,
345
- disabled: G.length === 0 || N,
346
- children: [i(v, "membersList.resendSelected", "Resend Selected"), G.length > 0 ? ` (${G.length})` : ""]
345
+ onClick: Be,
346
+ disabled: K.length === 0 || N,
347
+ children: [i(_, "membersList.resendSelected", "Resend Selected"), K.length > 0 ? ` (${K.length})` : ""]
347
348
  })
348
349
  ]
349
350
  })]
350
351
  }),
351
- /* @__PURE__ */ d("div", {
352
+ /* @__PURE__ */ u("div", {
352
353
  className: "space-y-2",
353
- children: z.map((e) => /* @__PURE__ */ f("div", {
354
+ children: B.map((e) => /* @__PURE__ */ d("div", {
354
355
  className: "flex items-center justify-between p-4 border rounded-lg bg-bg-surface",
355
- children: [/* @__PURE__ */ f("div", {
356
+ children: [/* @__PURE__ */ d("div", {
356
357
  className: "flex items-center gap-3",
357
358
  children: [
358
- /* @__PURE__ */ d("input", {
359
+ /* @__PURE__ */ u("input", {
359
360
  type: "checkbox",
360
- checked: I.has(e.id),
361
- onChange: (t) => $(e.id, t.target.checked),
362
- "aria-label": `${i(v, "membersList.selectInvitationAriaLabel", "Select invitation")} ${e.email}`,
361
+ checked: L.has(e.id),
362
+ onChange: (t) => Le(e.id, t.target.checked),
363
+ "aria-label": `${i(_, "membersList.selectInvitationAriaLabel", "Select invitation")} ${e.email}`,
363
364
  className: "size-4 rounded border-border-subtle text-primary"
364
365
  }),
365
- /* @__PURE__ */ d("div", {
366
+ /* @__PURE__ */ u("div", {
366
367
  className: "size-10 rounded-full bg-status-warning/10 flex items-center justify-center transition-colors",
367
- children: /* @__PURE__ */ d(ue, { className: "size-5 text-status-warning" })
368
+ children: /* @__PURE__ */ u(de, { className: "size-5 text-status-warning" })
368
369
  }),
369
- /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("p", {
370
+ /* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("p", {
370
371
  className: "font-medium text-sm",
371
372
  children: e.email
372
- }), /* @__PURE__ */ f("p", {
373
+ }), /* @__PURE__ */ d("p", {
373
374
  className: "text-xs text-text-secondary",
374
375
  children: [
375
- i(v, "membersList.invited", "Invited"),
376
+ i(_, "membersList.invited", "Invited"),
376
377
  " ",
377
378
  new Date(e.createdAt).toLocaleDateString()
378
379
  ]
379
380
  })] })
380
381
  ]
381
- }), /* @__PURE__ */ f("div", {
382
+ }), /* @__PURE__ */ d("div", {
382
383
  className: "flex items-center gap-2",
383
- children: [/* @__PURE__ */ d(_, {
384
+ children: [/* @__PURE__ */ u(g, {
384
385
  permission: r.MEMBER_CREATE,
385
386
  deniedBehavior: "disable",
386
- deniedTooltip: i(v, "membersList.noPermissionToResend", "You don't have permission to resend invitations"),
387
- children: /* @__PURE__ */ f(m, {
387
+ deniedTooltip: i(_, "membersList.noPermissionToResend", "You don't have permission to resend invitations"),
388
+ children: /* @__PURE__ */ d(p, {
388
389
  variant: "outline",
389
390
  size: "sm",
390
391
  onClick: () => De(e.id),
391
- disabled: N && P === e.id,
392
- children: [/* @__PURE__ */ d(ce, { className: `size-4 mr-1 ${N && P === e.id ? "animate-spin" : ""}` }), N && P === e.id ? i(v, "membersList.sending", "Sending...") : i(v, "membersList.resend", "Resend")]
392
+ disabled: N && F === e.id,
393
+ children: [/* @__PURE__ */ u(le, { className: `size-4 mr-1 ${N && F === e.id ? "animate-spin" : ""}` }), N && F === e.id ? i(_, "membersList.sending", "Sending...") : i(_, "membersList.resend", "Resend")]
393
394
  })
394
- }), /* @__PURE__ */ d(p, {
395
+ }), /* @__PURE__ */ u(f, {
395
396
  variant: "outline",
396
397
  className: "bg-status-warning/10 text-status-warning border-status-warning/30 transition-colors",
397
- children: i(v, "membersList.pending", "Pending")
398
+ children: i(_, "membersList.pending", "Pending")
398
399
  })]
399
400
  })]
400
401
  }, e.id))
@@ -406,6 +407,6 @@ function v() {
406
407
  });
407
408
  }
408
409
  //#endregion
409
- export { v as MembersListPage };
410
+ export { _ as MembersListPage };
410
411
 
411
412
  //# sourceMappingURL=MembersListPage.js.map