@burdenoff/microfe-organization 2026.625.3 → 2026.731.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 (29) hide show
  1. package/dist/organization-management/modules/members/pages/InviteMemberPage.js +58 -53
  2. package/dist/organization-management/modules/members/pages/InviteMemberPage.js.map +1 -1
  3. package/dist/organization-management/modules/members/pages/InvitePeoplePage.js +47 -40
  4. package/dist/organization-management/modules/members/pages/InvitePeoplePage.js.map +1 -1
  5. package/dist/organization-management/modules/members/pages/MemberDetailPage.js +72 -68
  6. package/dist/organization-management/modules/members/pages/MemberDetailPage.js.map +1 -1
  7. package/dist/organization-management/modules/members/pages/MembersListPage.js +216 -208
  8. package/dist/organization-management/modules/members/pages/MembersListPage.js.map +1 -1
  9. package/dist/organization-management/modules/members/pages/MyInvitesPage.js +164 -158
  10. package/dist/organization-management/modules/members/pages/MyInvitesPage.js.map +1 -1
  11. package/dist/organization-management/modules/members/pages/OrganizationInviteAcceptancePage.js +132 -128
  12. package/dist/organization-management/modules/members/pages/OrganizationInviteAcceptancePage.js.map +1 -1
  13. package/dist/organization-management/modules/organizations/pages/OrganizationCreatePage.js +42 -37
  14. package/dist/organization-management/modules/organizations/pages/OrganizationCreatePage.js.map +1 -1
  15. package/dist/organization-management/modules/organizations/pages/OrganizationDetailPage.js +310 -258
  16. package/dist/organization-management/modules/organizations/pages/OrganizationDetailPage.js.map +1 -1
  17. package/dist/organization-management/modules/organizations/pages/OrganizationEditPage.js +52 -47
  18. package/dist/organization-management/modules/organizations/pages/OrganizationEditPage.js.map +1 -1
  19. package/dist/organization-management/modules/organizations/pages/OrganizationsListPage.js +66 -59
  20. package/dist/organization-management/modules/organizations/pages/OrganizationsListPage.js.map +1 -1
  21. package/dist/organization-management/modules/workspaces/pages/WorkspaceCreatePage.js +43 -38
  22. package/dist/organization-management/modules/workspaces/pages/WorkspaceCreatePage.js.map +1 -1
  23. package/dist/organization-management/modules/workspaces/pages/WorkspaceDetailPage.js +315 -258
  24. package/dist/organization-management/modules/workspaces/pages/WorkspaceDetailPage.js.map +1 -1
  25. package/dist/organization-management/modules/workspaces/pages/WorkspaceEditPage.js +50 -45
  26. package/dist/organization-management/modules/workspaces/pages/WorkspaceEditPage.js.map +1 -1
  27. package/dist/organization-management/modules/workspaces/pages/WorkspacesListPage.js +246 -238
  28. package/dist/organization-management/modules/workspaces/pages/WorkspacesListPage.js.map +1 -1
  29. package/package.json +7 -7
@@ -5,286 +5,294 @@ import { useTr as r } from "../../../shared/hooks/useTr.js";
5
5
  import { SearchInput as i } from "../../../shared/components/input/SearchInput.js";
6
6
  import { SelectionCheckbox as a } from "../../../shared/components/input/SelectionCheckbox.js";
7
7
  import { LoadingState as o } from "../../../shared/components/feedback/LoadingState.js";
8
- import { ErrorState as ee } from "../../../shared/components/feedback/ErrorState.js";
9
- import { useDebouncedValue as te } from "../../../shared/hooks/useDebouncedValue.js";
10
- import { useConfirmDialog as s } from "../../../shared/components/dialog/ConfirmDialog.js";
8
+ import { ErrorState as s } from "../../../shared/components/feedback/ErrorState.js";
9
+ import { useDebouncedValue as ee } from "../../../shared/hooks/useDebouncedValue.js";
10
+ import { useConfirmDialog as te } from "../../../shared/components/dialog/ConfirmDialog.js";
11
11
  import { PERMISSIONS as c } from "../../../constants/permissions.js";
12
12
  import { isNative as l, nativeConfirm as ne, nativeImpact as re, nativeNotify as u, nativeToast as d } from "../../../../utils/nativeBridge.js";
13
- import { useDeleteWorkspace as f, useWorkspaces as p } from "../hooks/useWorkspaces.js";
14
- import { WorkspaceStatusBadge as m } from "../components/WorkspaceStatusBadge.js";
15
- import { useEffect as h, useMemo as g, useState as _ } from "react";
16
- import { Eye as v, Plus as y, RefreshCw as b, SquarePen as x, Trash2 as S } from "lucide-react";
17
- import { GlassCard as C, IllustratedEmptyState as w } from "@burdenoff/fe-libs/ui";
18
- import { usePermissions as ie } from "@burdenoff/fe-libs/shared/providers/shell";
19
- import { Fragment as ae, jsx as T, jsxs as E } from "react/jsx-runtime";
13
+ import { useDeleteWorkspace as ie, useWorkspaces as ae } from "../hooks/useWorkspaces.js";
14
+ import { WorkspaceStatusBadge as f } from "../components/WorkspaceStatusBadge.js";
15
+ import { useEffect as p, useMemo as m, useState as h } from "react";
16
+ import { Eye as g, Plus as _, RefreshCw as oe, SquarePen as v, Trash2 as y } from "lucide-react";
17
+ import { GlassCard as b, IllustratedEmptyState as se, PagePurpose as x } from "@burdenoff/fe-libs/ui";
18
+ import { usePermissions as S } from "@burdenoff/fe-libs/shared/providers/shell";
19
+ import { Fragment as C, jsx as w, jsxs as T } from "react/jsx-runtime";
20
20
  //#region src/organization-management/modules/workspaces/pages/WorkspacesListPage.tsx
21
- function D(e) {
21
+ function E(e) {
22
22
  return new Date(e).toLocaleDateString();
23
23
  }
24
- function O({ mode: O = "my" } = {}) {
25
- let k = r(), { navigate: A, basePath: j = "/organizations" } = e(), { hasPermission: M, isLoading: oe } = ie(), [N, se] = _(""), P = te(N, 300), [F, ce] = _({}), [I, L] = _(/* @__PURE__ */ new Set()), { openConfirmDialog: R, ConfirmDialog: z } = s(), B = O === "admin" ? "all" : "my", { workspaces: V, loading: H, error: U, refetch: W } = p({
26
- ...F,
27
- search: P || void 0
28
- }, B === "my" ? 100 : 20, 0, B), G = g(() => {
29
- if (B !== "my") return V;
30
- let e = P.trim().toLowerCase();
31
- return V.filter((t) => {
32
- let n = !e || t.name.toLowerCase().includes(e) || (t.slug?.toLowerCase().includes(e) ?? !1), r = !F.status || t.status === F.status;
24
+ function D({ mode: D = "my" } = {}) {
25
+ let O = r(), { navigate: k, basePath: A = "/organizations" } = e(), { hasPermission: j, isLoading: ce } = S(), [M, le] = h(""), N = ee(M, 300), [P, ue] = h({}), [F, I] = h(/* @__PURE__ */ new Set()), { openConfirmDialog: L, ConfirmDialog: R } = te(), z = D === "admin" ? "all" : "my", { workspaces: B, loading: V, error: H, refetch: U } = ae({
26
+ ...P,
27
+ search: N || void 0
28
+ }, z === "my" ? 100 : 20, 0, z), W = m(() => {
29
+ if (z !== "my") return B;
30
+ let e = N.trim().toLowerCase();
31
+ return B.filter((t) => {
32
+ let n = !e || t.name.toLowerCase().includes(e) || (t.slug?.toLowerCase().includes(e) ?? !1), r = !P.status || t.status === P.status;
33
33
  return n && r;
34
34
  });
35
35
  }, [
36
- V,
37
36
  B,
38
- P,
39
- F.status
40
- ]), { deleteWorkspace: le, loading: K } = f();
41
- h(() => {
42
- L((e) => {
43
- let t = new Set(G.map((e) => e.id)), n = new Set([...e].filter((e) => t.has(e)));
37
+ z,
38
+ N,
39
+ P.status
40
+ ]), { deleteWorkspace: de, loading: G } = ie();
41
+ p(() => {
42
+ I((e) => {
43
+ let t = new Set(W.map((e) => e.id)), n = new Set([...e].filter((e) => t.has(e)));
44
44
  return n.size === e.size ? e : n;
45
45
  });
46
- }, [G]);
47
- let q = g(() => G.filter((e) => I.has(e.id)), [I, G]), J = G.length > 0 && G.every((e) => I.has(e.id)), Y = G.some((e) => I.has(e.id)) && !J, X = async (e) => {
46
+ }, [W]);
47
+ let K = m(() => W.filter((e) => F.has(e.id)), [F, W]), q = W.length > 0 && W.every((e) => F.has(e.id)), J = W.some((e) => F.has(e.id)) && !q, Y = async (e) => {
48
48
  try {
49
49
  let n = (await Promise.allSettled(e.map(async (e) => {
50
- let t = await le(e);
51
- if (t.errors?.length) throw Error(t.errors[0]?.message ?? k("workspaces.suspend.failed", "Failed to suspend workspace"));
50
+ let t = await de(e);
51
+ if (t.errors?.length) throw Error(t.errors[0]?.message ?? O("workspaces.suspend.failed", "Failed to suspend workspace"));
52
52
  }))).find((e) => e.status === "rejected");
53
53
  if (n?.status === "rejected") throw n.reason;
54
- L(/* @__PURE__ */ new Set()), await W();
55
- let r = e.length === 1 ? k("workspaces.suspend.successSingle", "Workspace suspended successfully") : `${e.length} ${k("workspaces.suspend.successMany", "workspaces suspended successfully")}`;
54
+ I(/* @__PURE__ */ new Set()), await U();
55
+ let r = e.length === 1 ? O("workspaces.suspend.successSingle", "Workspace suspended successfully") : `${e.length} ${O("workspaces.suspend.successMany", "workspaces suspended successfully")}`;
56
56
  t.success(r), u("success"), l() && d(r);
57
57
  } catch (e) {
58
- let n = e instanceof Error ? e.message : k("workspaces.suspend.failed", "Failed to suspend workspace");
58
+ let n = e instanceof Error ? e.message : O("workspaces.suspend.failed", "Failed to suspend workspace");
59
59
  t.error(n), u("error"), l() && d(n);
60
60
  }
61
- }, Z = (e, t) => {
61
+ }, X = (e, t) => {
62
62
  re("medium");
63
- let n = k("workspaces.suspend.title", "Suspend workspace"), r = `${k("workspaces.suspend.prefix", "Suspend")} ${t}? ${k("workspaces.suspend.suffix", "Workspace members will lose access until it is reactivated.")}`;
63
+ let n = O("workspaces.suspend.title", "Suspend workspace"), r = `${O("workspaces.suspend.prefix", "Suspend")} ${t}? ${O("workspaces.suspend.suffix", "Workspace members will lose access until it is reactivated.")}`;
64
64
  ne({
65
65
  title: n,
66
66
  message: r,
67
- okButtonTitle: k("workspaces.suspend.confirm", "Suspend")
67
+ okButtonTitle: O("workspaces.suspend.confirm", "Suspend")
68
68
  }).then((t) => {
69
- t === null ? R({
69
+ t === null ? L({
70
70
  title: n,
71
71
  description: r,
72
- confirmText: k("workspaces.suspend.confirm", "Suspend"),
72
+ confirmText: O("workspaces.suspend.confirm", "Suspend"),
73
73
  variant: "warning",
74
74
  onConfirm: () => {
75
- X([e]);
75
+ Y([e]);
76
76
  }
77
- }) : t && X([e]);
77
+ }) : t && Y([e]);
78
78
  });
79
- }, ue = () => {
80
- q.length !== 0 && R({
81
- title: k("workspaces.suspend.bulkTitle", "Suspend selected workspaces"),
82
- description: `${k("workspaces.suspend.prefix", "Suspend")} ${q.length} ${k(q.length === 1 ? "workspaces.suspend.bulkSuffixSingle" : "workspaces.suspend.bulkSuffixMany", q.length === 1 ? "selected workspace?" : "selected workspaces?")}`,
83
- confirmText: `${k("workspaces.suspend.confirm", "Suspend")} ${q.length}`,
79
+ }, Z = () => {
80
+ K.length !== 0 && L({
81
+ title: O("workspaces.suspend.bulkTitle", "Suspend selected workspaces"),
82
+ description: `${O("workspaces.suspend.prefix", "Suspend")} ${K.length} ${O(K.length === 1 ? "workspaces.suspend.bulkSuffixSingle" : "workspaces.suspend.bulkSuffixMany", K.length === 1 ? "selected workspace?" : "selected workspaces?")}`,
83
+ confirmText: `${O("workspaces.suspend.confirm", "Suspend")} ${K.length}`,
84
84
  variant: "warning",
85
85
  onConfirm: () => {
86
- X(q.map((e) => e.id));
86
+ Y(K.map((e) => e.id));
87
87
  }
88
88
  });
89
89
  }, Q = (e, t) => {
90
- L((n) => {
90
+ I((n) => {
91
91
  let r = new Set(n);
92
92
  return t ? r.add(e) : r.delete(e), r;
93
93
  });
94
94
  }, $ = (e) => {
95
- L((t) => {
95
+ I((t) => {
96
96
  let n = new Set(t);
97
- return G.forEach((t) => {
97
+ return W.forEach((t) => {
98
98
  e ? n.add(t.id) : n.delete(t.id);
99
99
  }), n;
100
100
  });
101
101
  };
102
- return oe ? /* @__PURE__ */ T("div", {
102
+ return ce ? /* @__PURE__ */ w("div", {
103
103
  className: "min-h-full bg-[var(--color-bg-canvas)] p-6",
104
- children: /* @__PURE__ */ T(o, { message: k("common.loadingPermissions", "Loading permissions...") })
105
- }) : M(c.WORKSPACE_LIST) ? H ? /* @__PURE__ */ T("div", {
104
+ children: /* @__PURE__ */ w(o, { message: O("common.loadingPermissions", "Loading permissions...") })
105
+ }) : j(c.WORKSPACE_LIST) ? V ? /* @__PURE__ */ w("div", {
106
106
  className: "min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6",
107
- children: /* @__PURE__ */ T(o, { message: k("workspaces.list.loading", "Loading workspaces...") })
108
- }) : U ? /* @__PURE__ */ T("div", {
107
+ children: /* @__PURE__ */ w(o, { message: O("workspaces.list.loading", "Loading workspaces...") })
108
+ }) : H ? /* @__PURE__ */ w("div", {
109
109
  className: "min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6",
110
- children: /* @__PURE__ */ T(ee, {
111
- message: U.message,
110
+ children: /* @__PURE__ */ w(s, {
111
+ message: H.message,
112
112
  action: {
113
- label: k("common.retry", "Retry"),
113
+ label: O("common.retry", "Retry"),
114
114
  onClick: () => {
115
- W();
115
+ U();
116
116
  }
117
117
  }
118
118
  })
119
- }) : /* @__PURE__ */ E("div", {
119
+ }) : /* @__PURE__ */ T("div", {
120
120
  className: "min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6 animate-in fade-in duration-200",
121
- children: [/* @__PURE__ */ E("div", {
121
+ children: [/* @__PURE__ */ T("div", {
122
122
  className: "mx-auto flex w-full max-w-7xl flex-col gap-6",
123
123
  children: [
124
- /* @__PURE__ */ E("div", {
124
+ /* @__PURE__ */ T("div", {
125
125
  className: "flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between",
126
- children: [/* @__PURE__ */ E("div", {
126
+ children: [/* @__PURE__ */ T("div", {
127
127
  className: "space-y-2",
128
- children: [/* @__PURE__ */ T("h1", {
129
- className: "text-3xl font-bold text-[var(--color-text-primary)]",
130
- children: k("workspaces.list.title", "Workspaces")
131
- }), /* @__PURE__ */ T("p", {
132
- className: "max-w-2xl text-[var(--color-text-secondary)]",
133
- children: k("workspaces.list.subtitle", "Manage organization workspaces, review their status, and open the workspace detail flow.")
134
- })]
135
- }), M(c.WORKSPACE_CREATE) && /* @__PURE__ */ E("button", {
128
+ children: [
129
+ /* @__PURE__ */ w("h1", {
130
+ className: "text-3xl font-bold text-[var(--color-text-primary)]",
131
+ children: O("workspaces.list.title", "Workspaces")
132
+ }),
133
+ /* @__PURE__ */ w("p", {
134
+ className: "max-w-2xl text-[var(--color-text-secondary)]",
135
+ children: O("workspaces.list.subtitle", "Manage organization workspaces, review their status, and open the workspace detail flow.")
136
+ }),
137
+ /* @__PURE__ */ w(x, {
138
+ className: "max-w-2xl",
139
+ children: O("workspaces.list.purpose", "A workspace is where a team actually does its work — it holds the members, settings, and collaboration for one project or department. Create a workspace to give a group its own space, add the right people, and keep its status (active, inactive, archived) under control.")
140
+ })
141
+ ]
142
+ }), j(c.WORKSPACE_CREATE) && /* @__PURE__ */ T("button", {
136
143
  type: "button",
137
- onClick: () => A(`${j}/workspaces/new`),
144
+ onClick: () => k(`${A}/workspaces/new`),
138
145
  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",
139
- children: [/* @__PURE__ */ T(y, {
146
+ children: [/* @__PURE__ */ w(_, {
140
147
  size: 18,
141
148
  "aria-hidden": "true"
142
- }), /* @__PURE__ */ T("span", {
149
+ }), /* @__PURE__ */ w("span", {
143
150
  className: "font-medium",
144
- children: k("workspaces.create.button", "Create Workspace")
151
+ children: O("workspaces.create.button", "Create Workspace")
145
152
  })]
146
153
  })]
147
154
  }),
148
- V.length > 0 ? /* @__PURE__ */ E("div", {
155
+ B.length > 0 ? /* @__PURE__ */ T("div", {
149
156
  className: "grid grid-cols-2 gap-4 sm:grid-cols-3",
150
157
  children: [
151
- /* @__PURE__ */ E(C, {
152
- treatment: "metric",
158
+ /* @__PURE__ */ T(b, {
159
+ treatment: "glass",
160
+ glow: !0,
153
161
  className: "p-4",
154
- children: [/* @__PURE__ */ T("p", {
162
+ children: [/* @__PURE__ */ w("p", {
155
163
  className: "text-sm text-text-secondary",
156
- children: k("workspaces.list.title", "Workspaces")
157
- }), /* @__PURE__ */ T("p", {
164
+ children: O("workspaces.list.title", "Workspaces")
165
+ }), /* @__PURE__ */ w("p", {
158
166
  className: "mt-1 text-2xl font-semibold tabular-nums text-text-primary",
159
- children: V.length
167
+ children: B.length
160
168
  })]
161
169
  }),
162
- /* @__PURE__ */ E(C, {
170
+ /* @__PURE__ */ T(b, {
163
171
  treatment: "metric",
164
172
  className: "p-4",
165
- children: [/* @__PURE__ */ T("p", {
173
+ children: [/* @__PURE__ */ w("p", {
166
174
  className: "text-sm text-text-secondary",
167
- children: k("workspaces.status.active", "Active")
168
- }), /* @__PURE__ */ T("p", {
175
+ children: O("workspaces.status.active", "Active")
176
+ }), /* @__PURE__ */ w("p", {
169
177
  className: "mt-1 text-2xl font-semibold tabular-nums text-text-primary",
170
- children: V.filter((e) => e.status === n.ACTIVE).length
178
+ children: B.filter((e) => e.status === n.ACTIVE).length
171
179
  })]
172
180
  }),
173
- /* @__PURE__ */ E(C, {
181
+ /* @__PURE__ */ T(b, {
174
182
  treatment: "metric",
175
183
  className: "col-span-2 p-4 sm:col-span-1",
176
- children: [/* @__PURE__ */ T("p", {
184
+ children: [/* @__PURE__ */ w("p", {
177
185
  className: "text-sm text-text-secondary",
178
- children: k("workspaces.list.members", "Members")
179
- }), /* @__PURE__ */ T("p", {
186
+ children: O("workspaces.list.members", "Members")
187
+ }), /* @__PURE__ */ w("p", {
180
188
  className: "mt-1 text-2xl font-semibold tabular-nums text-text-primary",
181
- children: V.reduce((e, t) => e + (t.memberCount ?? 0), 0)
189
+ children: B.reduce((e, t) => e + (t.memberCount ?? 0), 0)
182
190
  })]
183
191
  })
184
192
  ]
185
193
  }) : null,
186
- /* @__PURE__ */ E(C, {
194
+ /* @__PURE__ */ T(b, {
187
195
  treatment: "plain",
188
196
  className: "border-border-seam p-4",
189
- children: [/* @__PURE__ */ E("div", {
197
+ children: [/* @__PURE__ */ T("div", {
190
198
  className: "flex flex-col gap-3 lg:flex-row lg:items-center",
191
199
  children: [
192
- /* @__PURE__ */ T(i, {
193
- value: N,
194
- onChange: se,
195
- placeholder: k("workspaces.list.searchPlaceholder", "Search workspaces..."),
196
- label: k("workspaces.list.searchLabel", "Search workspaces"),
200
+ /* @__PURE__ */ w(i, {
201
+ value: M,
202
+ onChange: le,
203
+ placeholder: O("workspaces.list.searchPlaceholder", "Search workspaces..."),
204
+ label: O("workspaces.list.searchLabel", "Search workspaces"),
197
205
  inputId: "workspaces-search",
198
206
  className: "flex-1"
199
207
  }),
200
- /* @__PURE__ */ E("label", {
208
+ /* @__PURE__ */ T("label", {
201
209
  className: "flex min-h-11 min-w-[180px] flex-col justify-center rounded-lg border border-[var(--color-border-default)] bg-[var(--color-bg-surface)] px-3 py-2 text-sm text-[var(--color-text-secondary)]",
202
- children: [/* @__PURE__ */ T("span", {
210
+ children: [/* @__PURE__ */ w("span", {
203
211
  className: "sr-only",
204
- children: k("workspaces.list.filterByStatus", "Filter by workspace status")
205
- }), /* @__PURE__ */ E("select", {
206
- value: F.status || "",
207
- onChange: (e) => ce({
208
- ...F,
212
+ children: O("workspaces.list.filterByStatus", "Filter by workspace status")
213
+ }), /* @__PURE__ */ T("select", {
214
+ value: P.status || "",
215
+ onChange: (e) => ue({
216
+ ...P,
209
217
  status: e.target.value ? e.target.value : void 0
210
218
  }),
211
219
  className: "bg-transparent text-[var(--color-text-primary)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]",
212
- "aria-label": k("workspaces.list.filterByStatus", "Filter by workspace status"),
220
+ "aria-label": O("workspaces.list.filterByStatus", "Filter by workspace status"),
213
221
  children: [
214
- /* @__PURE__ */ T("option", {
222
+ /* @__PURE__ */ w("option", {
215
223
  value: "",
216
- children: k("workspaces.list.allStatuses", "All statuses")
224
+ children: O("workspaces.list.allStatuses", "All statuses")
217
225
  }),
218
- /* @__PURE__ */ T("option", {
226
+ /* @__PURE__ */ w("option", {
219
227
  value: n.ACTIVE,
220
- children: k("workspaces.status.active", "Active")
228
+ children: O("workspaces.status.active", "Active")
221
229
  }),
222
- /* @__PURE__ */ T("option", {
230
+ /* @__PURE__ */ w("option", {
223
231
  value: n.INACTIVE,
224
- children: k("workspaces.status.inactive", "Inactive")
232
+ children: O("workspaces.status.inactive", "Inactive")
225
233
  }),
226
- /* @__PURE__ */ T("option", {
234
+ /* @__PURE__ */ w("option", {
227
235
  value: n.ARCHIVED,
228
- children: k("workspaces.status.archived", "Archived")
236
+ children: O("workspaces.status.archived", "Archived")
229
237
  })
230
238
  ]
231
239
  })]
232
240
  }),
233
- /* @__PURE__ */ T("button", {
241
+ /* @__PURE__ */ w("button", {
234
242
  type: "button",
235
243
  onClick: () => {
236
- W();
244
+ U();
237
245
  },
238
246
  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)]",
239
- "aria-label": k("workspaces.list.refresh", "Refresh workspaces"),
240
- title: k("workspaces.list.refresh", "Refresh workspaces"),
241
- children: /* @__PURE__ */ T(b, {
247
+ "aria-label": O("workspaces.list.refresh", "Refresh workspaces"),
248
+ title: O("workspaces.list.refresh", "Refresh workspaces"),
249
+ children: /* @__PURE__ */ w(oe, {
242
250
  size: 18,
243
251
  "aria-hidden": "true"
244
252
  })
245
253
  })
246
254
  ]
247
- }), G.length > 0 ? /* @__PURE__ */ E("div", {
255
+ }), W.length > 0 ? /* @__PURE__ */ T("div", {
248
256
  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",
249
- children: [/* @__PURE__ */ E("div", {
257
+ children: [/* @__PURE__ */ T("div", {
250
258
  className: "flex flex-wrap items-center gap-3",
251
- children: [/* @__PURE__ */ E("label", {
259
+ children: [/* @__PURE__ */ T("label", {
252
260
  className: "flex items-center gap-2 text-sm text-[var(--color-text-primary)]",
253
- children: [/* @__PURE__ */ T(a, {
254
- checked: J,
255
- indeterminate: Y,
261
+ children: [/* @__PURE__ */ w(a, {
262
+ checked: q,
263
+ indeterminate: J,
256
264
  onChange: $,
257
- ariaLabel: k("workspaces.list.selectAll", "Select all workspaces")
258
- }), /* @__PURE__ */ T("span", { children: k("common.selectAllVisible", "Select all visible") })]
259
- }), I.size > 0 ? /* @__PURE__ */ T("button", {
265
+ ariaLabel: O("workspaces.list.selectAll", "Select all workspaces")
266
+ }), /* @__PURE__ */ w("span", { children: O("common.selectAllVisible", "Select all visible") })]
267
+ }), F.size > 0 ? /* @__PURE__ */ w("button", {
260
268
  type: "button",
261
- onClick: () => L(/* @__PURE__ */ new Set()),
269
+ onClick: () => I(/* @__PURE__ */ new Set()),
262
270
  className: "text-sm text-[var(--color-text-secondary)] transition-colors hover:text-[var(--color-text-primary)]",
263
- children: k("common.clearSelection", "Clear selection")
271
+ children: O("common.clearSelection", "Clear selection")
264
272
  }) : null]
265
- }), /* @__PURE__ */ E("div", {
273
+ }), /* @__PURE__ */ T("div", {
266
274
  className: "flex flex-col gap-2 sm:flex-row sm:items-center",
267
- children: [/* @__PURE__ */ E("span", {
275
+ children: [/* @__PURE__ */ T("span", {
268
276
  className: "text-sm text-[var(--color-text-secondary)]",
269
277
  children: [
270
- I.size,
278
+ F.size,
271
279
  " ",
272
- k("common.selected", "selected")
280
+ O("common.selected", "selected")
273
281
  ]
274
- }), M(c.WORKSPACE_DELETE) && /* @__PURE__ */ E("button", {
282
+ }), j(c.WORKSPACE_DELETE) && /* @__PURE__ */ T("button", {
275
283
  type: "button",
276
- onClick: ue,
277
- disabled: q.length === 0 || K,
284
+ onClick: Z,
285
+ disabled: K.length === 0 || G,
278
286
  className: "inline-flex min-h-11 items-center justify-center gap-2 rounded-lg border border-[var(--color-status-warning-border)] px-3 py-2 text-[var(--color-status-warning-text)] transition-all duration-200 hover:bg-[var(--color-status-warning-bgSubtle)] disabled:cursor-not-allowed disabled:opacity-50",
279
287
  children: [
280
- /* @__PURE__ */ T(S, {
288
+ /* @__PURE__ */ w(y, {
281
289
  size: 16,
282
290
  "aria-hidden": "true"
283
291
  }),
284
- /* @__PURE__ */ T("span", { children: k("workspaces.list.suspendSelected", "Suspend Selected") }),
285
- q.length > 0 ? /* @__PURE__ */ E("span", { children: [
292
+ /* @__PURE__ */ w("span", { children: O("workspaces.list.suspendSelected", "Suspend Selected") }),
293
+ K.length > 0 ? /* @__PURE__ */ T("span", { children: [
286
294
  "(",
287
- q.length,
295
+ K.length,
288
296
  ")"
289
297
  ] }) : null
290
298
  ]
@@ -292,199 +300,199 @@ function O({ mode: O = "my" } = {}) {
292
300
  })]
293
301
  }) : null]
294
302
  }),
295
- G.length === 0 ? /* @__PURE__ */ T(C, {
303
+ W.length === 0 ? /* @__PURE__ */ w(b, {
296
304
  treatment: "glass",
297
- glow: !0,
305
+ glow: B.length === 0,
298
306
  className: "border-border-seam p-6",
299
- children: /* @__PURE__ */ T(w, {
307
+ children: /* @__PURE__ */ w(se, {
300
308
  illustration: "empty-data",
301
- title: k("workspaces.list.emptyNoneTitle", "No workspaces found"),
302
- description: M(c.WORKSPACE_CREATE) ? k("workspaces.list.emptyNoneDescription", "Create a workspace to start mapping members, organization ownership, and collaboration settings.") : k("workspaces.list.emptyNoneDescriptionViewer", "No workspaces have been created yet."),
303
- action: M(c.WORKSPACE_CREATE) ? /* @__PURE__ */ E("button", {
309
+ title: O("workspaces.list.emptyNoneTitle", "No workspaces found"),
310
+ description: j(c.WORKSPACE_CREATE) ? O("workspaces.list.emptyNoneDescription", "Create a workspace to start mapping members, organization ownership, and collaboration settings.") : O("workspaces.list.emptyNoneDescriptionViewer", "No workspaces have been created yet."),
311
+ action: j(c.WORKSPACE_CREATE) ? /* @__PURE__ */ T("button", {
304
312
  type: "button",
305
- onClick: () => A(`${j}/workspaces/new`),
313
+ onClick: () => k(`${A}/workspaces/new`),
306
314
  className: "inline-flex min-h-11 items-center justify-center gap-2 rounded-lg bg-[var(--color-action-primary-bg)] px-4 py-2 font-medium text-[var(--color-action-primary-text)] transition-all duration-200 hover:bg-[var(--color-action-primary-bgHover)]",
307
- children: [/* @__PURE__ */ T(y, {
315
+ children: [/* @__PURE__ */ w(_, {
308
316
  size: 18,
309
317
  "aria-hidden": "true"
310
- }), k("workspaces.create.button", "Create Workspace")]
318
+ }), O("workspaces.create.button", "Create Workspace")]
311
319
  }) : void 0
312
320
  })
313
- }) : /* @__PURE__ */ E(ae, { children: [/* @__PURE__ */ T("div", {
321
+ }) : /* @__PURE__ */ T(C, { children: [/* @__PURE__ */ w("div", {
314
322
  className: "grid gap-4 md:hidden",
315
- children: G.map((e) => /* @__PURE__ */ E(C, {
323
+ children: W.map((e) => /* @__PURE__ */ T(b, {
316
324
  treatment: "insight",
317
325
  className: "border-border-seam p-4",
318
- children: [/* @__PURE__ */ E("div", {
326
+ children: [/* @__PURE__ */ T("div", {
319
327
  className: "flex items-start gap-3",
320
- children: [/* @__PURE__ */ T(a, {
321
- checked: I.has(e.id),
328
+ children: [/* @__PURE__ */ w(a, {
329
+ checked: F.has(e.id),
322
330
  onChange: (t) => Q(e.id, t),
323
- ariaLabel: `${k("workspaces.list.selectOne", "Select workspace")} ${e.name}`
324
- }), /* @__PURE__ */ E("div", {
331
+ ariaLabel: `${O("workspaces.list.selectOne", "Select workspace")} ${e.name}`
332
+ }), /* @__PURE__ */ T("div", {
325
333
  className: "min-w-0 flex-1 space-y-3",
326
- children: [/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ E("div", {
334
+ children: [/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ T("div", {
327
335
  className: "flex flex-wrap items-start gap-2",
328
- children: [/* @__PURE__ */ T("h2", {
336
+ children: [/* @__PURE__ */ w("h2", {
329
337
  className: "text-base font-semibold text-[var(--color-text-primary)]",
330
338
  children: e.name
331
- }), /* @__PURE__ */ T(m, { status: e.status })]
332
- }), /* @__PURE__ */ E("p", {
339
+ }), /* @__PURE__ */ w(f, { status: e.status })]
340
+ }), /* @__PURE__ */ T("p", {
333
341
  className: "mt-1 break-all font-mono text-sm text-[var(--color-text-muted)]",
334
342
  children: ["/", e.slug]
335
- })] }), /* @__PURE__ */ E("dl", {
343
+ })] }), /* @__PURE__ */ T("dl", {
336
344
  className: "grid grid-cols-2 gap-3 text-sm",
337
- children: [/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("dt", {
345
+ children: [/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("dt", {
338
346
  className: "text-[var(--color-text-secondary)]",
339
- children: k("workspaces.list.members", "Members")
340
- }), /* @__PURE__ */ T("dd", {
347
+ children: O("workspaces.list.members", "Members")
348
+ }), /* @__PURE__ */ w("dd", {
341
349
  className: "font-medium text-[var(--color-text-primary)]",
342
350
  children: e.memberCount ?? 0
343
- })] }), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("dt", {
351
+ })] }), /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("dt", {
344
352
  className: "text-[var(--color-text-secondary)]",
345
- children: k("common.created", "Created")
346
- }), /* @__PURE__ */ T("dd", {
353
+ children: O("common.created", "Created")
354
+ }), /* @__PURE__ */ w("dd", {
347
355
  className: "font-medium text-[var(--color-text-primary)]",
348
- children: D(e.createdAt)
356
+ children: E(e.createdAt)
349
357
  })] })]
350
358
  })]
351
359
  })]
352
- }), /* @__PURE__ */ E("div", {
360
+ }), /* @__PURE__ */ T("div", {
353
361
  className: "mt-4 flex flex-wrap gap-2 border-t border-[var(--color-border-default)] pt-4",
354
362
  children: [
355
- /* @__PURE__ */ E("button", {
363
+ /* @__PURE__ */ T("button", {
356
364
  type: "button",
357
- onClick: () => A(`${j}/workspaces/${e.id}`),
365
+ onClick: () => k(`${A}/workspaces/${e.id}`),
358
366
  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)]",
359
- children: [/* @__PURE__ */ T(v, {
367
+ children: [/* @__PURE__ */ w(g, {
360
368
  size: 16,
361
369
  "aria-hidden": "true"
362
- }), k("common.view", "View")]
370
+ }), O("common.view", "View")]
363
371
  }),
364
- M(c.WORKSPACE_UPDATE) && /* @__PURE__ */ E("button", {
372
+ j(c.WORKSPACE_UPDATE) && /* @__PURE__ */ T("button", {
365
373
  type: "button",
366
- onClick: () => A(`${j}/workspaces/${e.id}/edit`),
374
+ onClick: () => k(`${A}/workspaces/${e.id}/edit`),
367
375
  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)]",
368
- children: [/* @__PURE__ */ T(x, {
376
+ children: [/* @__PURE__ */ w(v, {
369
377
  size: 16,
370
378
  "aria-hidden": "true"
371
- }), k("common.edit", "Edit")]
379
+ }), O("common.edit", "Edit")]
372
380
  }),
373
- M(c.WORKSPACE_DELETE) && /* @__PURE__ */ E("button", {
381
+ j(c.WORKSPACE_DELETE) && /* @__PURE__ */ T("button", {
374
382
  type: "button",
375
- onClick: () => Z(e.id, e.name),
376
- disabled: K,
383
+ onClick: () => X(e.id, e.name),
384
+ disabled: G,
377
385
  className: "inline-flex min-h-10 items-center gap-2 rounded-lg border border-[var(--color-status-warning-border)] px-3 py-2 text-sm text-[var(--color-status-warning-text)] transition-all duration-200 hover:bg-[var(--color-status-warning-bgSubtle)] disabled:cursor-not-allowed disabled:opacity-50",
378
- children: [/* @__PURE__ */ T(S, {
386
+ children: [/* @__PURE__ */ w(y, {
379
387
  size: 16,
380
388
  "aria-hidden": "true"
381
- }), k("workspaces.suspend.confirm", "Suspend")]
389
+ }), O("workspaces.suspend.confirm", "Suspend")]
382
390
  })
383
391
  ]
384
392
  })]
385
393
  }, e.id))
386
- }), /* @__PURE__ */ T(C, {
394
+ }), /* @__PURE__ */ w(b, {
387
395
  treatment: "plain",
388
396
  className: "hidden overflow-hidden border-border-seam p-0 md:block",
389
- children: /* @__PURE__ */ T("div", {
397
+ children: /* @__PURE__ */ w("div", {
390
398
  className: "overflow-x-auto",
391
- children: /* @__PURE__ */ E("table", {
399
+ children: /* @__PURE__ */ T("table", {
392
400
  className: "min-w-full",
393
- children: [/* @__PURE__ */ T("thead", {
401
+ children: [/* @__PURE__ */ w("thead", {
394
402
  className: "bg-[var(--color-bg-subtle)]",
395
- children: /* @__PURE__ */ E("tr", { children: [
396
- /* @__PURE__ */ T("th", {
403
+ children: /* @__PURE__ */ T("tr", { children: [
404
+ /* @__PURE__ */ w("th", {
397
405
  className: "w-12 px-6 py-3 text-left text-xs font-semibold uppercase tracking-wide text-[var(--color-text-secondary)]",
398
- children: /* @__PURE__ */ T(a, {
399
- checked: J,
400
- indeterminate: Y,
406
+ children: /* @__PURE__ */ w(a, {
407
+ checked: q,
408
+ indeterminate: J,
401
409
  onChange: $,
402
- ariaLabel: k("workspaces.list.selectAll", "Select all workspaces")
410
+ ariaLabel: O("workspaces.list.selectAll", "Select all workspaces")
403
411
  })
404
412
  }),
405
- /* @__PURE__ */ T("th", {
413
+ /* @__PURE__ */ w("th", {
406
414
  className: "px-6 py-3 text-left text-xs font-semibold uppercase tracking-wide text-[var(--color-text-secondary)]",
407
- children: k("workspaces.list.column.workspace", "Workspace")
415
+ children: O("workspaces.list.column.workspace", "Workspace")
408
416
  }),
409
- /* @__PURE__ */ T("th", {
417
+ /* @__PURE__ */ w("th", {
410
418
  className: "px-6 py-3 text-left text-xs font-semibold uppercase tracking-wide text-[var(--color-text-secondary)]",
411
- children: k("common.status", "Status")
419
+ children: O("common.status", "Status")
412
420
  }),
413
- /* @__PURE__ */ T("th", {
421
+ /* @__PURE__ */ w("th", {
414
422
  className: "px-6 py-3 text-left text-xs font-semibold uppercase tracking-wide text-[var(--color-text-secondary)]",
415
- children: k("common.created", "Created")
423
+ children: O("common.created", "Created")
416
424
  }),
417
- /* @__PURE__ */ T("th", {
425
+ /* @__PURE__ */ w("th", {
418
426
  className: "px-6 py-3 text-right text-xs font-semibold uppercase tracking-wide text-[var(--color-text-secondary)]",
419
- children: k("common.actions", "Actions")
427
+ children: O("common.actions", "Actions")
420
428
  })
421
429
  ] })
422
- }), /* @__PURE__ */ T("tbody", {
430
+ }), /* @__PURE__ */ w("tbody", {
423
431
  className: "divide-y divide-[var(--color-border-seam)]",
424
- children: G.map((e) => /* @__PURE__ */ E("tr", {
432
+ children: W.map((e) => /* @__PURE__ */ T("tr", {
425
433
  className: "transition-colors hover:bg-[var(--color-bg-subtle)]",
426
434
  children: [
427
- /* @__PURE__ */ T("td", {
435
+ /* @__PURE__ */ w("td", {
428
436
  className: "px-6 py-4 align-top",
429
- children: /* @__PURE__ */ T(a, {
430
- checked: I.has(e.id),
437
+ children: /* @__PURE__ */ w(a, {
438
+ checked: F.has(e.id),
431
439
  onChange: (t) => Q(e.id, t),
432
- ariaLabel: `${k("workspaces.list.selectOne", "Select workspace")} ${e.name}`
440
+ ariaLabel: `${O("workspaces.list.selectOne", "Select workspace")} ${e.name}`
433
441
  })
434
442
  }),
435
- /* @__PURE__ */ T("td", {
443
+ /* @__PURE__ */ w("td", {
436
444
  className: "px-6 py-4",
437
- children: /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
445
+ children: /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
438
446
  className: "font-medium text-[var(--color-text-primary)]",
439
447
  children: e.name
440
- }), /* @__PURE__ */ E("p", {
448
+ }), /* @__PURE__ */ T("p", {
441
449
  className: "break-all font-mono text-sm text-[var(--color-text-muted)]",
442
450
  children: ["/", e.slug]
443
451
  })] })
444
452
  }),
445
- /* @__PURE__ */ T("td", {
453
+ /* @__PURE__ */ w("td", {
446
454
  className: "px-6 py-4 align-top",
447
- children: /* @__PURE__ */ T(m, { status: e.status })
455
+ children: /* @__PURE__ */ w(f, { status: e.status })
448
456
  }),
449
- /* @__PURE__ */ T("td", {
457
+ /* @__PURE__ */ w("td", {
450
458
  className: "px-6 py-4 align-top text-sm text-[var(--color-text-secondary)]",
451
- children: D(e.createdAt)
459
+ children: E(e.createdAt)
452
460
  }),
453
- /* @__PURE__ */ T("td", {
461
+ /* @__PURE__ */ w("td", {
454
462
  className: "px-6 py-4 align-top",
455
- children: /* @__PURE__ */ E("div", {
463
+ children: /* @__PURE__ */ T("div", {
456
464
  className: "flex items-center justify-end gap-2",
457
465
  children: [
458
- /* @__PURE__ */ T("button", {
466
+ /* @__PURE__ */ w("button", {
459
467
  type: "button",
460
- onClick: () => A(`${j}/workspaces/${e.id}`),
468
+ onClick: () => k(`${A}/workspaces/${e.id}`),
461
469
  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)]",
462
- title: `${k("common.view", "View")} ${e.name}`,
463
- "aria-label": `${k("common.view", "View")} ${e.name}`,
464
- children: /* @__PURE__ */ T(v, {
470
+ title: `${O("common.view", "View")} ${e.name}`,
471
+ "aria-label": `${O("common.view", "View")} ${e.name}`,
472
+ children: /* @__PURE__ */ w(g, {
465
473
  size: 18,
466
474
  "aria-hidden": "true"
467
475
  })
468
476
  }),
469
- M(c.WORKSPACE_UPDATE) && /* @__PURE__ */ T("button", {
477
+ j(c.WORKSPACE_UPDATE) && /* @__PURE__ */ w("button", {
470
478
  type: "button",
471
- onClick: () => A(`${j}/workspaces/${e.id}/edit`),
479
+ onClick: () => k(`${A}/workspaces/${e.id}/edit`),
472
480
  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)]",
473
- title: `${k("common.edit", "Edit")} ${e.name}`,
474
- "aria-label": `${k("common.edit", "Edit")} ${e.name}`,
475
- children: /* @__PURE__ */ T(x, {
481
+ title: `${O("common.edit", "Edit")} ${e.name}`,
482
+ "aria-label": `${O("common.edit", "Edit")} ${e.name}`,
483
+ children: /* @__PURE__ */ w(v, {
476
484
  size: 18,
477
485
  "aria-hidden": "true"
478
486
  })
479
487
  }),
480
- M(c.WORKSPACE_DELETE) && /* @__PURE__ */ T("button", {
488
+ j(c.WORKSPACE_DELETE) && /* @__PURE__ */ w("button", {
481
489
  type: "button",
482
- onClick: () => Z(e.id, e.name),
483
- disabled: K,
490
+ onClick: () => X(e.id, e.name),
491
+ disabled: G,
484
492
  className: "rounded-lg p-2 text-[var(--color-status-warning-text)] transition-all duration-200 hover:bg-[var(--color-status-warning-bgSubtle)] disabled:cursor-not-allowed disabled:opacity-50",
485
- title: `${k("workspaces.suspend.confirm", "Suspend")} ${e.name}`,
486
- "aria-label": `${k("workspaces.suspend.confirm", "Suspend")} ${e.name}`,
487
- children: /* @__PURE__ */ T(S, {
493
+ title: `${O("workspaces.suspend.confirm", "Suspend")} ${e.name}`,
494
+ "aria-label": `${O("workspaces.suspend.confirm", "Suspend")} ${e.name}`,
495
+ children: /* @__PURE__ */ w(y, {
488
496
  size: 18,
489
497
  "aria-hidden": "true"
490
498
  })
@@ -499,16 +507,16 @@ function O({ mode: O = "my" } = {}) {
499
507
  })
500
508
  })] })
501
509
  ]
502
- }), z]
503
- }) : /* @__PURE__ */ T("div", {
510
+ }), R]
511
+ }) : /* @__PURE__ */ w("div", {
504
512
  className: "min-h-full bg-[var(--color-bg-canvas)] p-6",
505
- children: /* @__PURE__ */ T("div", {
513
+ children: /* @__PURE__ */ w("div", {
506
514
  className: "p-8 text-center text-[var(--color-text-secondary)]",
507
- children: k("workspaces.list.noPermission", "You don't have permission to view workspaces.")
515
+ children: O("workspaces.list.noPermission", "You don't have permission to view workspaces.")
508
516
  })
509
517
  });
510
518
  }
511
519
  //#endregion
512
- export { O as WorkspacesListPage };
520
+ export { D as WorkspacesListPage };
513
521
 
514
522
  //# sourceMappingURL=WorkspacesListPage.js.map