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