@burdenoff/microfe-organization 2026.624.2 → 2026.625.2

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