@burdenoff/microfe-organization 2026.527.4 → 2026.528.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.
@@ -13,180 +13,195 @@ import { MemberRoleBadge as u } from "../components/MemberRoleBadge.js";
13
13
  import { useMembers as d, useRemoveMember as f } from "../hooks/useMembers.js";
14
14
  import { useEffect as te, useMemo as p, useState as m } from "react";
15
15
  import { Eye as h, Mail as g, RefreshCw as _, Shield as v, Trash2 as y } from "lucide-react";
16
- import { useFeatureFlagDetails as b } from "@burdenoff/fe-libs/shared/feature-flags";
17
- import { usePermissions as ne } from "@burdenoff/fe-libs/shared/providers/shell";
18
- import { Fragment as re, jsx as x, jsxs as S } from "react/jsx-runtime";
19
- import { useParams as C } from "react-router-dom";
16
+ import { useFeatureFlagDetails as ne } from "@burdenoff/fe-libs/shared/feature-flags";
17
+ import { usePermissions as re } from "@burdenoff/fe-libs/shared/providers/shell";
18
+ import { Fragment as ie, jsx as b, jsxs as x } from "react/jsx-runtime";
19
+ import { useParams as ae } from "react-router-dom";
20
+ import { useActorProfiles as S } from "@burdenoff/fe-libs/shared";
20
21
  //#region src/organization-management/modules/members/pages/MembersListPage.tsx
21
- function w() {
22
+ function oe() {
22
23
  let e = n();
23
24
  return (t) => t ? new Date(t).toLocaleDateString() : e("common.status.pending", "Pending");
24
25
  }
25
- function T() {
26
- let T = n(), E = w(), { navigate: D, basePath: O = "/organizations" } = e(), { hasPermission: k, isLoading: A } = ne(), j = b("organization.invite"), M = j ? !!j.value : !0, { organizationId: N } = C(), [P, ie] = m(""), F = c(P, 250), [I, L] = m(/* @__PURE__ */ new Set()), { openConfirmDialog: R, ConfirmDialog: z } = ee(), { members: B, loading: V, error: H, refetch: U } = d(N ?? "", 50, 0), { removeMember: W, loading: G } = f(), K = p(() => {
27
- if (!F) return B;
28
- let e = F.toLowerCase();
29
- return B.filter((t) => t.userId.toLowerCase().includes(e) || t.role.toLowerCase().includes(e));
30
- }, [F, B]);
26
+ function C() {
27
+ let C = n(), w = oe(), { navigate: T, basePath: E = "/organizations" } = e(), { hasPermission: D, isLoading: se } = re(), O = ne("organization.invite"), k = O ? !!O.value : !0, { organizationId: A } = ae(), [j, ce] = m(""), M = c(j, 250), [N, P] = m(/* @__PURE__ */ new Set()), { openConfirmDialog: F, ConfirmDialog: I } = ee(), { members: L, loading: R, error: z, refetch: B } = d(A ?? "", 50, 0), { removeMember: V, loading: H } = f(), { apiGatewayUrl: U, authToken: W } = e(), G = S(p(() => L.map((e) => ({
28
+ actorId: e.userId,
29
+ actorType: "user"
30
+ })), [L]), {
31
+ apiGatewayUrl: U,
32
+ authToken: W,
33
+ orgId: A
34
+ }), K = p(() => {
35
+ if (!M) return L;
36
+ let e = M.toLowerCase();
37
+ return L.filter((t) => {
38
+ let n = G[t.userId];
39
+ return n?.displayName.toLowerCase().includes(e) || n?.email?.toLowerCase().includes(e) ? !0 : t.userId.toLowerCase().includes(e) || t.role.toLowerCase().includes(e);
40
+ });
41
+ }, [
42
+ M,
43
+ L,
44
+ G
45
+ ]);
31
46
  te(() => {
32
- L((e) => {
47
+ P((e) => {
33
48
  let t = new Set(K.map((e) => e.id)), n = new Set([...e].filter((e) => t.has(e)));
34
49
  return n.size === e.size ? e : n;
35
50
  });
36
51
  }, [K]);
37
- let q = p(() => K.filter((e) => I.has(e.id)), [K, I]), J = K.length > 0 && K.every((e) => I.has(e.id)), Y = K.some((e) => I.has(e.id)) && !J, X = async (e) => {
38
- if (N) try {
52
+ let q = p(() => K.filter((e) => N.has(e.id)), [K, N]), J = K.length > 0 && K.every((e) => N.has(e.id)), Y = K.some((e) => N.has(e.id)) && !J, X = async (e) => {
53
+ if (A) try {
39
54
  let n = (await Promise.allSettled(e.map(async (e) => {
40
- let t = await W(N, e);
55
+ let t = await V(A, e);
41
56
  if (t.errors?.length) throw Error(t.errors[0]?.message ?? "Failed to remove member");
42
57
  }))).find((e) => e.status === "rejected");
43
58
  if (n?.status === "rejected") throw n.reason;
44
- L(/* @__PURE__ */ new Set()), await U(), t.success(e.length === 1 ? T("members.remove.successSingle", "Member removed successfully") : `${e.length} ${T("members.remove.successMany", "members removed successfully")}`);
59
+ P(/* @__PURE__ */ new Set()), await B(), t.success(e.length === 1 ? C("members.remove.successSingle", "Member removed successfully") : `${e.length} ${C("members.remove.successMany", "members removed successfully")}`);
45
60
  } catch (e) {
46
- t.error(e instanceof Error ? e.message : T("members.remove.failed", "Failed to remove member"));
61
+ t.error(e instanceof Error ? e.message : C("members.remove.failed", "Failed to remove member"));
47
62
  }
48
63
  }, Z = (e) => {
49
- R({
50
- title: T("members.remove.title", "Remove member"),
51
- description: `${T("members.remove.descriptionPrefix", "Remove")} ${e} ${T("members.remove.descriptionSuffix", "from this organization? Workspace access inherited from this membership will be impacted.")}`,
52
- confirmText: T("members.remove.confirm", "Remove"),
64
+ F({
65
+ title: C("members.remove.title", "Remove member"),
66
+ description: `${C("members.remove.descriptionPrefix", "Remove")} ${e} ${C("members.remove.descriptionSuffix", "from this organization? Workspace access inherited from this membership will be impacted.")}`,
67
+ confirmText: C("members.remove.confirm", "Remove"),
53
68
  variant: "danger",
54
69
  onConfirm: () => {
55
70
  X([e]);
56
71
  }
57
72
  });
58
- }, ae = () => {
59
- q.length !== 0 && R({
60
- title: T("members.remove.bulkTitle", "Remove selected members"),
61
- description: `${T("members.remove.bulkPrefix", "Remove")} ${q.length} ${T(q.length === 1 ? "members.remove.bulkSuffixSingle" : "members.remove.bulkSuffixMany", q.length === 1 ? "selected member from this organization?" : "selected members from this organization?")}`,
62
- confirmText: `${T("members.remove.confirm", "Remove")} ${q.length}`,
73
+ }, le = () => {
74
+ q.length !== 0 && F({
75
+ title: C("members.remove.bulkTitle", "Remove selected members"),
76
+ description: `${C("members.remove.bulkPrefix", "Remove")} ${q.length} ${C(q.length === 1 ? "members.remove.bulkSuffixSingle" : "members.remove.bulkSuffixMany", q.length === 1 ? "selected member from this organization?" : "selected members from this organization?")}`,
77
+ confirmText: `${C("members.remove.confirm", "Remove")} ${q.length}`,
63
78
  variant: "danger",
64
79
  onConfirm: () => {
65
80
  X(q.map((e) => e.userId));
66
81
  }
67
82
  });
68
83
  }, Q = (e, t) => {
69
- L((n) => {
84
+ P((n) => {
70
85
  let r = new Set(n);
71
86
  return t ? r.add(e) : r.delete(e), r;
72
87
  });
73
88
  }, $ = (e) => {
74
- L((t) => {
89
+ P((t) => {
75
90
  let n = new Set(t);
76
91
  return K.forEach((t) => {
77
92
  e ? n.add(t.id) : n.delete(t.id);
78
93
  }), n;
79
94
  });
80
95
  };
81
- return N ? A ? /* @__PURE__ */ x("div", {
96
+ return A ? se ? /* @__PURE__ */ b("div", {
82
97
  className: "min-h-full bg-[var(--color-bg-canvas)] p-6",
83
- children: /* @__PURE__ */ x(a, { message: T("common.loadingPermissions", "Loading permissions...") })
84
- }) : k(l.MEMBER_LIST) ? V ? /* @__PURE__ */ x("div", {
98
+ children: /* @__PURE__ */ b(a, { message: C("common.loadingPermissions", "Loading permissions...") })
99
+ }) : D(l.MEMBER_LIST) ? R ? /* @__PURE__ */ b("div", {
85
100
  className: "min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6",
86
- children: /* @__PURE__ */ x(a, { message: T("members.list.loading", "Loading members...") })
87
- }) : H ? /* @__PURE__ */ x("div", {
101
+ children: /* @__PURE__ */ b(a, { message: C("members.list.loading", "Loading members...") })
102
+ }) : z ? /* @__PURE__ */ b("div", {
88
103
  className: "min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6",
89
- children: /* @__PURE__ */ x(o, {
90
- message: H.message,
104
+ children: /* @__PURE__ */ b(o, {
105
+ message: z.message,
91
106
  action: {
92
- label: T("common.retry", "Retry"),
107
+ label: C("common.retry", "Retry"),
93
108
  onClick: () => {
94
- U();
109
+ B();
95
110
  }
96
111
  }
97
112
  })
98
- }) : /* @__PURE__ */ S("div", {
113
+ }) : /* @__PURE__ */ x("div", {
99
114
  className: "min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6 animate-in fade-in duration-300",
100
- children: [/* @__PURE__ */ S("div", {
115
+ children: [/* @__PURE__ */ x("div", {
101
116
  className: "mx-auto flex w-full max-w-7xl flex-col gap-6",
102
117
  children: [
103
- /* @__PURE__ */ S("div", {
118
+ /* @__PURE__ */ x("div", {
104
119
  className: "flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between",
105
- children: [/* @__PURE__ */ S("div", {
120
+ children: [/* @__PURE__ */ x("div", {
106
121
  className: "space-y-2",
107
- children: [/* @__PURE__ */ x("h1", {
122
+ children: [/* @__PURE__ */ b("h1", {
108
123
  className: "text-3xl font-bold text-[var(--color-text-primary)]",
109
- children: T("members.list.title", "Members")
110
- }), /* @__PURE__ */ x("p", {
124
+ children: C("members.list.title", "Members")
125
+ }), /* @__PURE__ */ b("p", {
111
126
  className: "max-w-2xl text-[var(--color-text-secondary)]",
112
- children: T("members.list.subtitle", "Manage organization members, inspect their roles, and invite more people into this organization.")
127
+ children: C("members.list.subtitle", "Manage organization members, inspect their roles, and invite more people into this organization.")
113
128
  })]
114
- }), M && k(l.MEMBER_INVITE) && /* @__PURE__ */ S("button", {
129
+ }), k && D(l.MEMBER_INVITE) && /* @__PURE__ */ x("button", {
115
130
  type: "button",
116
- onClick: () => D(`${O}/${N}/members/invite`),
131
+ onClick: () => T(`${E}/${A}/members/invite`),
117
132
  className: "inline-flex min-h-11 items-center justify-center gap-2 rounded-lg bg-[var(--color-action-primary-bg)] px-4 py-2.5 text-[var(--color-action-primary-text)] transition-all duration-200 hover:opacity-90 active:scale-[0.98]",
118
- children: [/* @__PURE__ */ x(g, {
133
+ children: [/* @__PURE__ */ b(g, {
119
134
  size: 18,
120
135
  "aria-hidden": "true"
121
- }), /* @__PURE__ */ x("span", {
136
+ }), /* @__PURE__ */ b("span", {
122
137
  className: "font-medium",
123
- children: T("members.invite.button", "Invite Member")
138
+ children: C("members.invite.button", "Invite Member")
124
139
  })]
125
140
  })]
126
141
  }),
127
- /* @__PURE__ */ S("div", {
142
+ /* @__PURE__ */ x("div", {
128
143
  className: "rounded-xl border border-[var(--color-border-default)] bg-[var(--color-bg-surface)] p-4 shadow-[var(--shadow-elevation-1)]",
129
- children: [/* @__PURE__ */ S("div", {
144
+ children: [/* @__PURE__ */ x("div", {
130
145
  className: "flex flex-col gap-3 sm:flex-row sm:items-center",
131
- children: [/* @__PURE__ */ x(r, {
132
- value: P,
133
- onChange: ie,
134
- placeholder: T("members.list.searchPlaceholder", "Search by member ID or role..."),
135
- label: T("members.list.searchLabel", "Search organization members"),
146
+ children: [/* @__PURE__ */ b(r, {
147
+ value: j,
148
+ onChange: ce,
149
+ placeholder: C("members.list.searchPlaceholder", "Search by member ID or role..."),
150
+ label: C("members.list.searchLabel", "Search organization members"),
136
151
  inputId: "organization-members-search",
137
152
  className: "flex-1"
138
- }), /* @__PURE__ */ x("button", {
153
+ }), /* @__PURE__ */ b("button", {
139
154
  type: "button",
140
155
  onClick: () => {
141
- U();
156
+ B();
142
157
  },
143
158
  className: "inline-flex min-h-11 items-center justify-center gap-2 rounded-lg border border-[var(--color-border-default)] bg-[var(--color-bg-surface)] px-4 py-2 text-[var(--color-text-primary)] transition-all duration-200 hover:bg-[var(--color-bg-subtle)] active:scale-95",
144
- "aria-label": T("members.list.refresh", "Refresh members"),
145
- title: T("members.list.refresh", "Refresh members"),
146
- children: /* @__PURE__ */ x(_, {
159
+ "aria-label": C("members.list.refresh", "Refresh members"),
160
+ title: C("members.list.refresh", "Refresh members"),
161
+ children: /* @__PURE__ */ b(_, {
147
162
  size: 18,
148
163
  "aria-hidden": "true"
149
164
  })
150
165
  })]
151
- }), K.length > 0 ? /* @__PURE__ */ S("div", {
166
+ }), K.length > 0 ? /* @__PURE__ */ x("div", {
152
167
  className: "mt-4 flex flex-col gap-3 rounded-lg border border-[var(--color-border-default)] bg-[var(--color-bg-canvas)] p-4 sm:flex-row sm:items-center sm:justify-between",
153
- children: [/* @__PURE__ */ S("div", {
168
+ children: [/* @__PURE__ */ x("div", {
154
169
  className: "flex flex-wrap items-center gap-3",
155
- children: [/* @__PURE__ */ S("label", {
170
+ children: [/* @__PURE__ */ x("label", {
156
171
  className: "flex items-center gap-2 text-sm text-[var(--color-text-primary)]",
157
- children: [/* @__PURE__ */ x(i, {
172
+ children: [/* @__PURE__ */ b(i, {
158
173
  checked: J,
159
174
  indeterminate: Y,
160
175
  onChange: $,
161
- ariaLabel: T("members.list.selectAll", "Select all members")
162
- }), /* @__PURE__ */ x("span", { children: T("common.selectAllVisible", "Select all visible") })]
163
- }), I.size > 0 ? /* @__PURE__ */ x("button", {
176
+ ariaLabel: C("members.list.selectAll", "Select all members")
177
+ }), /* @__PURE__ */ b("span", { children: C("common.selectAllVisible", "Select all visible") })]
178
+ }), N.size > 0 ? /* @__PURE__ */ b("button", {
164
179
  type: "button",
165
- onClick: () => L(/* @__PURE__ */ new Set()),
180
+ onClick: () => P(/* @__PURE__ */ new Set()),
166
181
  className: "text-sm text-[var(--color-text-secondary)] transition-colors hover:text-[var(--color-text-primary)]",
167
- children: T("common.clearSelection", "Clear selection")
182
+ children: C("common.clearSelection", "Clear selection")
168
183
  }) : null]
169
- }), /* @__PURE__ */ S("div", {
184
+ }), /* @__PURE__ */ x("div", {
170
185
  className: "flex flex-col gap-2 sm:flex-row sm:items-center",
171
- children: [/* @__PURE__ */ S("span", {
186
+ children: [/* @__PURE__ */ x("span", {
172
187
  className: "text-sm text-[var(--color-text-secondary)]",
173
188
  children: [
174
- I.size,
189
+ N.size,
175
190
  " ",
176
- T("common.selected", "selected")
191
+ C("common.selected", "selected")
177
192
  ]
178
- }), k(l.MEMBER_REMOVE) && /* @__PURE__ */ S("button", {
193
+ }), D(l.MEMBER_REMOVE) && /* @__PURE__ */ x("button", {
179
194
  type: "button",
180
- onClick: ae,
181
- disabled: q.length === 0 || G,
195
+ onClick: le,
196
+ disabled: q.length === 0 || H,
182
197
  className: "inline-flex min-h-11 items-center justify-center gap-2 rounded-lg border border-[var(--color-status-error-border)] px-3 py-2 text-[var(--color-status-error-text)] transition-all duration-200 hover:bg-[var(--color-status-error-bgSubtle)] disabled:cursor-not-allowed disabled:opacity-50",
183
198
  children: [
184
- /* @__PURE__ */ x(y, {
199
+ /* @__PURE__ */ b(y, {
185
200
  size: 16,
186
201
  "aria-hidden": "true"
187
202
  }),
188
- /* @__PURE__ */ x("span", { children: T("common.removeSelected", "Remove Selected") }),
189
- q.length > 0 ? /* @__PURE__ */ S("span", { children: [
203
+ /* @__PURE__ */ b("span", { children: C("common.removeSelected", "Remove Selected") }),
204
+ q.length > 0 ? /* @__PURE__ */ x("span", { children: [
190
205
  "(",
191
206
  q.length,
192
207
  ")"
@@ -196,164 +211,190 @@ function T() {
196
211
  })]
197
212
  }) : null]
198
213
  }),
199
- K.length === 0 ? /* @__PURE__ */ x("div", {
214
+ K.length === 0 ? /* @__PURE__ */ b("div", {
200
215
  className: "rounded-xl border border-[var(--color-border-default)] bg-[var(--color-bg-surface)] p-6 shadow-[var(--shadow-elevation-1)]",
201
- children: /* @__PURE__ */ x(s, {
202
- icon: /* @__PURE__ */ x(v, {
216
+ children: /* @__PURE__ */ b(s, {
217
+ icon: /* @__PURE__ */ b(v, {
203
218
  size: 40,
204
219
  "aria-hidden": "true"
205
220
  }),
206
- title: T("members.list.emptyTitle", "No members found"),
207
- description: T("members.list.emptyDescription", "Invite someone to this organization to grant them access and assign their role."),
208
- action: M && k(l.MEMBER_INVITE) ? {
209
- label: T("members.invite.button", "Invite Member"),
210
- onClick: () => D(`${O}/${N}/members/invite`)
221
+ title: C("members.list.emptyTitle", "No members found"),
222
+ description: C("members.list.emptyDescription", "Invite someone to this organization to grant them access and assign their role."),
223
+ action: k && D(l.MEMBER_INVITE) ? {
224
+ label: C("members.invite.button", "Invite Member"),
225
+ onClick: () => T(`${E}/${A}/members/invite`)
211
226
  } : void 0
212
227
  })
213
- }) : /* @__PURE__ */ S(re, { children: [/* @__PURE__ */ x("div", {
228
+ }) : /* @__PURE__ */ x(ie, { children: [/* @__PURE__ */ b("div", {
214
229
  className: "grid gap-4 md:hidden",
215
- children: K.map((e) => /* @__PURE__ */ S("article", {
230
+ children: K.map((e) => /* @__PURE__ */ x("article", {
216
231
  className: "rounded-xl border border-[var(--color-border-default)] bg-[var(--color-bg-surface)] p-4 shadow-[var(--shadow-elevation-1)]",
217
- children: [/* @__PURE__ */ S("div", {
232
+ children: [/* @__PURE__ */ x("div", {
218
233
  className: "flex items-start gap-3",
219
- children: [/* @__PURE__ */ x(i, {
220
- checked: I.has(e.id),
234
+ children: [/* @__PURE__ */ b(i, {
235
+ checked: N.has(e.id),
221
236
  onChange: (t) => Q(e.id, t),
222
- ariaLabel: `${T("members.list.selectMember", "Select member")} ${e.userId}`
223
- }), /* @__PURE__ */ S("div", {
237
+ ariaLabel: `${C("members.list.selectMember", "Select member")} ${e.userId}`
238
+ }), /* @__PURE__ */ x("div", {
224
239
  className: "flex min-w-0 flex-1 gap-3",
225
- children: [/* @__PURE__ */ x("div", {
240
+ children: [/* @__PURE__ */ b("div", {
226
241
  className: "flex size-10 items-center justify-center rounded-full bg-[var(--color-status-info-bgSubtle)] text-[var(--color-status-info-text)]",
227
- children: /* @__PURE__ */ x(v, {
242
+ children: /* @__PURE__ */ b(v, {
228
243
  size: 18,
229
244
  "aria-hidden": "true"
230
245
  })
231
- }), /* @__PURE__ */ S("div", {
246
+ }), /* @__PURE__ */ x("div", {
232
247
  className: "min-w-0 flex-1 space-y-3",
233
- children: [/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ S("div", {
234
- className: "flex flex-wrap items-start gap-2",
235
- children: [/* @__PURE__ */ x("h2", {
236
- className: "break-all text-base font-semibold text-[var(--color-text-primary)]",
237
- children: e.userId
238
- }), /* @__PURE__ */ x(u, { role: e.role })]
239
- }), /* @__PURE__ */ S("p", {
240
- className: "mt-1 break-all font-mono text-xs text-[var(--color-text-muted)]",
241
- children: [
242
- T("members.list.memberId", "Member ID"),
243
- ": ",
244
- e.id
245
- ]
246
- })] }), /* @__PURE__ */ S("dl", {
248
+ children: [/* @__PURE__ */ x("div", { children: [
249
+ /* @__PURE__ */ x("div", {
250
+ className: "flex flex-wrap items-start gap-2",
251
+ children: [/* @__PURE__ */ b("h2", {
252
+ className: "break-all text-base font-semibold text-[var(--color-text-primary)]",
253
+ children: G[e.userId]?.displayName ?? `User ${e.userId.slice(0, 8)}…`
254
+ }), /* @__PURE__ */ b(u, { role: e.role })]
255
+ }),
256
+ G[e.userId]?.email ? /* @__PURE__ */ b("p", {
257
+ className: "mt-0.5 break-all text-xs text-[var(--color-text-secondary)]",
258
+ children: G[e.userId]?.email
259
+ }) : null,
260
+ /* @__PURE__ */ x("details", {
261
+ className: "mt-1 text-xs text-[var(--color-text-muted)]",
262
+ children: [
263
+ /* @__PURE__ */ b("summary", {
264
+ className: "cursor-pointer",
265
+ children: C("members.list.showIds", "Show IDs")
266
+ }),
267
+ /* @__PURE__ */ x("p", {
268
+ className: "mt-1 break-all font-mono",
269
+ children: [
270
+ C("members.detail.userId", "User ID"),
271
+ ":",
272
+ " ",
273
+ e.userId
274
+ ]
275
+ }),
276
+ /* @__PURE__ */ x("p", {
277
+ className: "mt-0.5 break-all font-mono",
278
+ children: [
279
+ C("members.list.memberId", "Member ID"),
280
+ ":",
281
+ " ",
282
+ e.id
283
+ ]
284
+ })
285
+ ]
286
+ })
287
+ ] }), /* @__PURE__ */ x("dl", {
247
288
  className: "grid grid-cols-1 gap-3 text-sm",
248
- children: [/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("dt", {
289
+ children: [/* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("dt", {
249
290
  className: "text-[var(--color-text-secondary)]",
250
- children: T("members.list.invitedBy", "Invited by")
251
- }), /* @__PURE__ */ x("dd", {
291
+ children: C("members.list.invitedBy", "Invited by")
292
+ }), /* @__PURE__ */ b("dd", {
252
293
  className: "mt-1 break-all font-mono text-[var(--color-text-primary)]",
253
- children: e.invitedBy || T("common.notAvailable", "N/A")
254
- })] }), /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("dt", {
294
+ children: e.invitedBy || C("common.notAvailable", "N/A")
295
+ })] }), /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("dt", {
255
296
  className: "text-[var(--color-text-secondary)]",
256
- children: T("members.list.joined", "Joined")
257
- }), /* @__PURE__ */ x("dd", {
297
+ children: C("members.list.joined", "Joined")
298
+ }), /* @__PURE__ */ b("dd", {
258
299
  className: "mt-1 text-[var(--color-text-primary)]",
259
- children: E(e.joinedAt)
300
+ children: w(e.joinedAt)
260
301
  })] })]
261
302
  })]
262
303
  })]
263
304
  })]
264
- }), /* @__PURE__ */ S("div", {
305
+ }), /* @__PURE__ */ x("div", {
265
306
  className: "mt-4 flex flex-wrap gap-2 border-t border-[var(--color-border-default)] pt-4",
266
- children: [/* @__PURE__ */ S("button", {
307
+ children: [/* @__PURE__ */ x("button", {
267
308
  type: "button",
268
- onClick: () => D(`${O}/${N}/members/${e.userId}`),
309
+ onClick: () => T(`${E}/${A}/members/${e.userId}`),
269
310
  className: "inline-flex min-h-10 items-center gap-2 rounded-lg border border-[var(--color-border-default)] px-3 py-2 text-sm text-[var(--color-text-primary)] transition-all duration-200 hover:bg-[var(--color-bg-subtle)]",
270
- children: [/* @__PURE__ */ x(h, {
311
+ children: [/* @__PURE__ */ b(h, {
271
312
  size: 16,
272
313
  "aria-hidden": "true"
273
- }), T("common.view", "View")]
274
- }), k(l.MEMBER_REMOVE) && /* @__PURE__ */ S("button", {
314
+ }), C("common.view", "View")]
315
+ }), D(l.MEMBER_REMOVE) && /* @__PURE__ */ x("button", {
275
316
  type: "button",
276
317
  onClick: () => Z(e.userId),
277
- disabled: G,
318
+ disabled: H,
278
319
  className: "inline-flex min-h-10 items-center gap-2 rounded-lg border border-[var(--color-status-error-border)] px-3 py-2 text-sm text-[var(--color-status-error-text)] transition-all duration-200 hover:bg-[var(--color-status-error-bgSubtle)] disabled:cursor-not-allowed disabled:opacity-50",
279
- children: [/* @__PURE__ */ x(y, {
320
+ children: [/* @__PURE__ */ b(y, {
280
321
  size: 16,
281
322
  "aria-hidden": "true"
282
- }), T("members.remove.confirm", "Remove")]
323
+ }), C("members.remove.confirm", "Remove")]
283
324
  })]
284
325
  })]
285
326
  }, e.id))
286
- }), /* @__PURE__ */ x("div", {
327
+ }), /* @__PURE__ */ b("div", {
287
328
  className: "hidden overflow-hidden rounded-xl border border-[var(--color-border-default)] bg-[var(--color-bg-surface)] shadow-[var(--shadow-elevation-1)] md:block",
288
- children: /* @__PURE__ */ x("div", {
329
+ children: /* @__PURE__ */ b("div", {
289
330
  className: "overflow-x-auto",
290
- children: /* @__PURE__ */ S("table", {
331
+ children: /* @__PURE__ */ x("table", {
291
332
  className: "min-w-full",
292
- children: [/* @__PURE__ */ x("thead", {
333
+ children: [/* @__PURE__ */ b("thead", {
293
334
  className: "bg-[var(--color-bg-subtle)]",
294
- children: /* @__PURE__ */ S("tr", { children: [
295
- /* @__PURE__ */ x("th", {
335
+ children: /* @__PURE__ */ x("tr", { children: [
336
+ /* @__PURE__ */ b("th", {
296
337
  className: "w-12 px-6 py-3 text-left text-xs font-semibold uppercase tracking-wide text-[var(--color-text-secondary)]",
297
- children: /* @__PURE__ */ x(i, {
338
+ children: /* @__PURE__ */ b(i, {
298
339
  checked: J,
299
340
  indeterminate: Y,
300
341
  onChange: $,
301
- ariaLabel: T("members.list.selectAll", "Select all members")
342
+ ariaLabel: C("members.list.selectAll", "Select all members")
302
343
  })
303
344
  }),
304
- /* @__PURE__ */ x("th", {
345
+ /* @__PURE__ */ b("th", {
305
346
  className: "px-6 py-3 text-left text-xs font-semibold uppercase tracking-wide text-[var(--color-text-secondary)]",
306
- children: T("members.list.column.user", "User")
347
+ children: C("members.list.column.user", "User")
307
348
  }),
308
- /* @__PURE__ */ x("th", {
349
+ /* @__PURE__ */ b("th", {
309
350
  className: "px-6 py-3 text-left text-xs font-semibold uppercase tracking-wide text-[var(--color-text-secondary)]",
310
- children: T("members.list.column.role", "Role")
351
+ children: C("members.list.column.role", "Role")
311
352
  }),
312
- /* @__PURE__ */ x("th", {
353
+ /* @__PURE__ */ b("th", {
313
354
  className: "px-6 py-3 text-left text-xs font-semibold uppercase tracking-wide text-[var(--color-text-secondary)]",
314
- children: T("members.list.invitedBy", "Invited by")
355
+ children: C("members.list.invitedBy", "Invited by")
315
356
  }),
316
- /* @__PURE__ */ x("th", {
357
+ /* @__PURE__ */ b("th", {
317
358
  className: "px-6 py-3 text-left text-xs font-semibold uppercase tracking-wide text-[var(--color-text-secondary)]",
318
- children: T("members.list.joined", "Joined")
359
+ children: C("members.list.joined", "Joined")
319
360
  }),
320
- /* @__PURE__ */ x("th", {
361
+ /* @__PURE__ */ b("th", {
321
362
  className: "px-6 py-3 text-right text-xs font-semibold uppercase tracking-wide text-[var(--color-text-secondary)]",
322
- children: T("common.actions", "Actions")
363
+ children: C("common.actions", "Actions")
323
364
  })
324
365
  ] })
325
- }), /* @__PURE__ */ x("tbody", {
366
+ }), /* @__PURE__ */ b("tbody", {
326
367
  className: "divide-y divide-[var(--color-border-default)]",
327
- children: K.map((e) => /* @__PURE__ */ S("tr", {
368
+ children: K.map((e) => /* @__PURE__ */ x("tr", {
328
369
  className: "transition-colors hover:bg-[var(--color-bg-subtle)]",
329
370
  children: [
330
- /* @__PURE__ */ x("td", {
371
+ /* @__PURE__ */ b("td", {
331
372
  className: "px-6 py-4 align-top",
332
- children: /* @__PURE__ */ x(i, {
333
- checked: I.has(e.id),
373
+ children: /* @__PURE__ */ b(i, {
374
+ checked: N.has(e.id),
334
375
  onChange: (t) => Q(e.id, t),
335
- ariaLabel: `${T("members.list.selectMember", "Select member")} ${e.userId}`
376
+ ariaLabel: `${C("members.list.selectMember", "Select member")} ${e.userId}`
336
377
  })
337
378
  }),
338
- /* @__PURE__ */ x("td", {
379
+ /* @__PURE__ */ b("td", {
339
380
  className: "px-6 py-4",
340
- children: /* @__PURE__ */ S("div", {
381
+ children: /* @__PURE__ */ x("div", {
341
382
  className: "flex items-start gap-3",
342
- children: [/* @__PURE__ */ x("div", {
383
+ children: [/* @__PURE__ */ b("div", {
343
384
  className: "flex size-10 items-center justify-center rounded-full bg-[var(--color-status-info-bgSubtle)] text-[var(--color-status-info-text)]",
344
- children: /* @__PURE__ */ x(v, {
385
+ children: /* @__PURE__ */ b(v, {
345
386
  size: 18,
346
387
  "aria-hidden": "true"
347
388
  })
348
- }), /* @__PURE__ */ S("div", {
389
+ }), /* @__PURE__ */ x("div", {
349
390
  className: "min-w-0",
350
- children: [/* @__PURE__ */ x("p", {
391
+ children: [/* @__PURE__ */ b("p", {
351
392
  className: "break-all font-medium text-[var(--color-text-primary)]",
352
393
  children: e.userId
353
- }), /* @__PURE__ */ S("p", {
394
+ }), /* @__PURE__ */ x("p", {
354
395
  className: "break-all font-mono text-xs text-[var(--color-text-muted)]",
355
396
  children: [
356
- T("common.idLabel", "ID"),
397
+ C("common.idLabel", "ID"),
357
398
  ": ",
358
399
  e.id
359
400
  ]
@@ -361,40 +402,40 @@ function T() {
361
402
  })]
362
403
  })
363
404
  }),
364
- /* @__PURE__ */ x("td", {
405
+ /* @__PURE__ */ b("td", {
365
406
  className: "px-6 py-4 align-top",
366
- children: /* @__PURE__ */ x(u, { role: e.role })
407
+ children: /* @__PURE__ */ b(u, { role: e.role })
367
408
  }),
368
- /* @__PURE__ */ x("td", {
409
+ /* @__PURE__ */ b("td", {
369
410
  className: "px-6 py-4 align-top text-sm text-[var(--color-text-secondary)]",
370
- children: e.invitedBy || T("common.notAvailable", "N/A")
411
+ children: e.invitedBy || C("common.notAvailable", "N/A")
371
412
  }),
372
- /* @__PURE__ */ x("td", {
413
+ /* @__PURE__ */ b("td", {
373
414
  className: "px-6 py-4 align-top text-sm text-[var(--color-text-secondary)]",
374
- children: E(e.joinedAt)
415
+ children: w(e.joinedAt)
375
416
  }),
376
- /* @__PURE__ */ x("td", {
417
+ /* @__PURE__ */ b("td", {
377
418
  className: "px-6 py-4 align-top",
378
- children: /* @__PURE__ */ S("div", {
419
+ children: /* @__PURE__ */ x("div", {
379
420
  className: "flex items-center justify-end gap-2",
380
- children: [/* @__PURE__ */ x("button", {
421
+ children: [/* @__PURE__ */ b("button", {
381
422
  type: "button",
382
- onClick: () => D(`${O}/${N}/members/${e.userId}`),
423
+ onClick: () => T(`${E}/${A}/members/${e.userId}`),
383
424
  className: "rounded-lg p-2 text-[var(--color-text-secondary)] transition-all duration-200 hover:bg-[var(--color-bg-muted)] hover:text-[var(--color-text-primary)]",
384
- "aria-label": `${T("members.list.viewMember", "View member")} ${e.userId}`,
385
- title: `${T("members.list.viewMember", "View member")} ${e.userId}`,
386
- children: /* @__PURE__ */ x(h, {
425
+ "aria-label": `${C("members.list.viewMember", "View member")} ${e.userId}`,
426
+ title: `${C("members.list.viewMember", "View member")} ${e.userId}`,
427
+ children: /* @__PURE__ */ b(h, {
387
428
  size: 18,
388
429
  "aria-hidden": "true"
389
430
  })
390
- }), k(l.MEMBER_REMOVE) && /* @__PURE__ */ x("button", {
431
+ }), D(l.MEMBER_REMOVE) && /* @__PURE__ */ b("button", {
391
432
  type: "button",
392
433
  onClick: () => Z(e.userId),
393
- disabled: G,
434
+ disabled: H,
394
435
  className: "rounded-lg p-2 text-[var(--color-status-error-text)] transition-all duration-200 hover:bg-[var(--color-status-error-bgSubtle)] disabled:cursor-not-allowed disabled:opacity-50",
395
- "aria-label": `${T("members.list.removeMember", "Remove member")} ${e.userId}`,
396
- title: `${T("members.list.removeMember", "Remove member")} ${e.userId}`,
397
- children: /* @__PURE__ */ x(y, {
436
+ "aria-label": `${C("members.list.removeMember", "Remove member")} ${e.userId}`,
437
+ title: `${C("members.list.removeMember", "Remove member")} ${e.userId}`,
438
+ children: /* @__PURE__ */ b(y, {
398
439
  size: 18,
399
440
  "aria-hidden": "true"
400
441
  })
@@ -408,25 +449,25 @@ function T() {
408
449
  })
409
450
  })] })
410
451
  ]
411
- }), z]
412
- }) : /* @__PURE__ */ x("div", {
452
+ }), I]
453
+ }) : /* @__PURE__ */ b("div", {
413
454
  className: "min-h-full bg-[var(--color-bg-canvas)] p-6",
414
- children: /* @__PURE__ */ x("div", {
455
+ children: /* @__PURE__ */ b("div", {
415
456
  className: "p-8 text-center text-[var(--color-text-secondary)]",
416
- children: T("members.list.noPermission", "You don't have permission to view members.")
457
+ children: C("members.list.noPermission", "You don't have permission to view members.")
417
458
  })
418
- }) : /* @__PURE__ */ x("div", {
459
+ }) : /* @__PURE__ */ b("div", {
419
460
  className: "min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6",
420
- children: /* @__PURE__ */ x(o, {
421
- message: T("members.list.missingOrg", "Organization ID is required to view members"),
461
+ children: /* @__PURE__ */ b(o, {
462
+ message: C("members.list.missingOrg", "Organization ID is required to view members"),
422
463
  action: {
423
- label: T("members.list.goToOrganizations", "Go to Organizations"),
424
- onClick: () => D(O)
464
+ label: C("members.list.goToOrganizations", "Go to Organizations"),
465
+ onClick: () => T(E)
425
466
  }
426
467
  })
427
468
  });
428
469
  }
429
470
  //#endregion
430
- export { T as MembersListPage };
471
+ export { C as MembersListPage };
431
472
 
432
473
  //# sourceMappingURL=MembersListPage.js.map