@burdenoff/microfe-organization 2026.616.1 → 2026.624.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 (53) hide show
  1. package/dist/organization-management/AdminOrganizationRoot.js +4 -4
  2. package/dist/organization-management/AdminOrganizationRoot.js.map +1 -1
  3. package/dist/organization-management/UserOrganizationRoot.js +4 -4
  4. package/dist/organization-management/UserOrganizationRoot.js.map +1 -1
  5. package/dist/organization-management/modules/members/components/BulkInviteForm.js +157 -176
  6. package/dist/organization-management/modules/members/components/BulkInviteForm.js.map +1 -1
  7. package/dist/organization-management/modules/members/components/InviteMemberForm.js +2 -2
  8. package/dist/organization-management/modules/members/components/InviteMemberForm.js.map +1 -1
  9. package/dist/organization-management/modules/members/components/MyInviteCard.js +2 -2
  10. package/dist/organization-management/modules/members/components/MyInviteCard.js.map +1 -1
  11. package/dist/organization-management/modules/members/components/PendingInvitesList.js +78 -101
  12. package/dist/organization-management/modules/members/components/PendingInvitesList.js.map +1 -1
  13. package/dist/organization-management/modules/members/pages/InvitePeoplePage.js +1 -1
  14. package/dist/organization-management/modules/members/pages/InvitePeoplePage.js.map +1 -1
  15. package/dist/organization-management/modules/members/pages/MemberDetailPage.js +2 -2
  16. package/dist/organization-management/modules/members/pages/MemberDetailPage.js.map +1 -1
  17. package/dist/organization-management/modules/members/pages/MembersListPage.js +3 -3
  18. package/dist/organization-management/modules/members/pages/MembersListPage.js.map +1 -1
  19. package/dist/organization-management/modules/members/pages/MyInvitesPage.js +2 -2
  20. package/dist/organization-management/modules/members/pages/MyInvitesPage.js.map +1 -1
  21. package/dist/organization-management/modules/members/pages/OrganizationInviteAcceptancePage.js +5 -5
  22. package/dist/organization-management/modules/members/pages/OrganizationInviteAcceptancePage.js.map +1 -1
  23. package/dist/organization-management/modules/organizations/components/OrganizationForm.js +2 -2
  24. package/dist/organization-management/modules/organizations/components/OrganizationForm.js.map +1 -1
  25. package/dist/organization-management/modules/organizations/pages/OrganizationCreatePage.js +2 -2
  26. package/dist/organization-management/modules/organizations/pages/OrganizationCreatePage.js.map +1 -1
  27. package/dist/organization-management/modules/organizations/pages/OrganizationDetailPage.js +4 -4
  28. package/dist/organization-management/modules/organizations/pages/OrganizationDetailPage.js.map +1 -1
  29. package/dist/organization-management/modules/organizations/pages/OrganizationEditPage.js +2 -2
  30. package/dist/organization-management/modules/organizations/pages/OrganizationEditPage.js.map +1 -1
  31. package/dist/organization-management/modules/organizations/pages/OrganizationsListPage.js +5 -5
  32. package/dist/organization-management/modules/organizations/pages/OrganizationsListPage.js.map +1 -1
  33. package/dist/organization-management/modules/workspaces/components/WorkspaceCard.js +3 -3
  34. package/dist/organization-management/modules/workspaces/components/WorkspaceCard.js.map +1 -1
  35. package/dist/organization-management/modules/workspaces/components/WorkspaceForm.js +2 -2
  36. package/dist/organization-management/modules/workspaces/components/WorkspaceForm.js.map +1 -1
  37. package/dist/organization-management/modules/workspaces/pages/WorkspaceCreatePage.js +2 -2
  38. package/dist/organization-management/modules/workspaces/pages/WorkspaceCreatePage.js.map +1 -1
  39. package/dist/organization-management/modules/workspaces/pages/WorkspaceDetailPage.js +215 -285
  40. package/dist/organization-management/modules/workspaces/pages/WorkspaceDetailPage.js.map +1 -1
  41. package/dist/organization-management/modules/workspaces/pages/WorkspaceEditPage.js +2 -2
  42. package/dist/organization-management/modules/workspaces/pages/WorkspaceEditPage.js.map +1 -1
  43. package/dist/organization-management/modules/workspaces/pages/WorkspacesListPage.js +4 -4
  44. package/dist/organization-management/modules/workspaces/pages/WorkspacesListPage.js.map +1 -1
  45. package/dist/organization-management/shared/components/feedback/EmptyState.js +2 -2
  46. package/dist/organization-management/shared/components/feedback/EmptyState.js.map +1 -1
  47. package/dist/organization-management/shared/components/feedback/ErrorState.js +2 -2
  48. package/dist/organization-management/shared/components/feedback/ErrorState.js.map +1 -1
  49. package/dist/organization-management/shared/components/feedback/LoadingState.js +1 -1
  50. package/dist/organization-management/shared/components/feedback/LoadingState.js.map +1 -1
  51. package/dist/organization-management/shared/components/input/SearchInput.js +1 -1
  52. package/dist/organization-management/shared/components/input/SearchInput.js.map +1 -1
  53. package/package.json +1 -1
@@ -9,16 +9,17 @@ import { PERMISSIONS as s } from "../../../constants/permissions.js";
9
9
  import { MemberRoleBadge as c } from "../../members/components/MemberRoleBadge.js";
10
10
  import { useWorkspace as l } from "../hooks/useWorkspaces.js";
11
11
  import { WorkspaceStatusBadge as u } from "../components/WorkspaceStatusBadge.js";
12
- import { useRemoveWorkspaceMember as ee, useWorkspaceMembers as te } from "../hooks/useWorkspaceMembers.js";
13
- import { AddWorkspaceMemberDialog as d } from "../components/AddWorkspaceMemberDialog.js";
14
- import { useMemo as f, useState as p } from "react";
15
- import { ArrowLeft as m, Briefcase as h, Edit as ne, Trash2 as g, UserPlus as _, Users as v } from "lucide-react";
16
- import { usePermissions as y } from "@burdenoff/fe-libs/shared/providers/shell";
17
- import { Fragment as b, jsx as x, jsxs as S } from "react/jsx-runtime";
18
- import { useParams as C } from "react-router-dom";
19
- import { ActorIdentity as w, buildActorFallback as T, useActorProfiles as E } from "@burdenoff/fe-libs/shared";
12
+ import { useRemoveWorkspaceMember as d, useWorkspaceMembers as f } from "../hooks/useWorkspaceMembers.js";
13
+ import { AddWorkspaceMemberDialog as p } from "../components/AddWorkspaceMemberDialog.js";
14
+ import { useMemo as m, useState as h } from "react";
15
+ import { ArrowLeft as g, Briefcase as _, Edit as v, Trash2 as y, UserPlus as b, Users as x } from "lucide-react";
16
+ import { ResponsiveTable as S } from "@burdenoff/fe-libs/ui";
17
+ import { usePermissions as C } from "@burdenoff/fe-libs/shared/providers/shell";
18
+ import { jsx as w, jsxs as T } from "react/jsx-runtime";
19
+ import { useParams as ee } from "react-router-dom";
20
+ import { ActorIdentity as E, buildActorFallback as D, useActorProfiles as O } from "@burdenoff/fe-libs/shared";
20
21
  //#region src/organization-management/modules/workspaces/pages/WorkspaceDetailPage.tsx
21
- function D(e) {
22
+ function k(e) {
22
23
  return new Date(e).toLocaleDateString("en-US", {
23
24
  year: "numeric",
24
25
  month: "long",
@@ -27,397 +28,326 @@ function D(e) {
27
28
  minute: "2-digit"
28
29
  });
29
30
  }
30
- function O() {
31
- let O = n(), { id: k } = C(), { navigate: A, basePath: j = "/organizations", apiGatewayUrl: M, authToken: N } = e(), { hasPermission: P, isLoading: F } = y(), { workspace: I, loading: L, error: R } = l(k ?? ""), [z, B] = p("overview"), [V, H] = p(!1), { openConfirmDialog: U, ConfirmDialog: W } = o(), { members: G, loading: K, error: q, refetch: J } = te(z === "members" && k ? k ?? "" : "", 50, 0), { removeWorkspaceMember: Y, loading: X } = ee(), Z = G.length > 0 || z === "members" ? G.length : I?.memberCount ?? 0, Q = E(f(() => G.map((e) => ({
31
+ function A() {
32
+ let A = n(), { id: j } = ee(), { navigate: M, basePath: N = "/organizations", apiGatewayUrl: P, authToken: F } = e(), { hasPermission: I, isLoading: L } = C(), { workspace: R, loading: z, error: B } = l(j ?? ""), [V, H] = h("overview"), [U, W] = h(!1), { openConfirmDialog: G, ConfirmDialog: K } = o(), { members: q, loading: J, error: Y, refetch: X } = f(V === "members" && j ? j ?? "" : "", 50, 0), { removeWorkspaceMember: Z, loading: Q } = d(), $ = q.length > 0 || V === "members" ? q.length : R?.memberCount ?? 0, te = O(m(() => q.map((e) => ({
32
33
  actorId: e.userId,
33
34
  actorType: "user"
34
- })), [G]), {
35
- apiGatewayUrl: M,
36
- authToken: N,
37
- orgId: I?.organizationId,
38
- workspaceId: k
39
- }), re = f(() => [{
35
+ })), [q]), {
36
+ apiGatewayUrl: P,
37
+ authToken: F,
38
+ orgId: R?.organizationId,
39
+ workspaceId: j
40
+ }), ne = m(() => [{
40
41
  id: "overview",
41
- label: O("workspaces.detail.tab.overview", "Overview")
42
+ label: A("workspaces.detail.tab.overview", "Overview")
42
43
  }, {
43
44
  id: "members",
44
- label: `${O("workspaces.detail.tab.members", "Members")} (${Z})`
45
- }], [Z, O]), $ = (e) => {
46
- k && U({
47
- title: O("workspaces.removeMember.title", "Remove workspace member"),
48
- description: `${O("workspaces.removeMember.prefix", "Remove")} ${e} ${O("workspaces.removeMember.suffix", "from this workspace? They will keep their organization membership.")}`,
49
- confirmText: O("common.remove", "Remove"),
45
+ label: `${A("workspaces.detail.tab.members", "Members")} (${$})`
46
+ }], [$, A]), re = (e) => {
47
+ j && G({
48
+ title: A("workspaces.removeMember.title", "Remove workspace member"),
49
+ description: `${A("workspaces.removeMember.prefix", "Remove")} ${e} ${A("workspaces.removeMember.suffix", "from this workspace? They will keep their organization membership.")}`,
50
+ confirmText: A("common.remove", "Remove"),
50
51
  variant: "danger",
51
52
  onConfirm: () => {
52
53
  (async () => {
53
54
  try {
54
- let n = await Y(k, e);
55
- if (n.errors?.length) throw Error(n.errors[0]?.message ?? O("workspaces.removeMember.failed", "Failed to remove workspace member"));
56
- await J(), t.success(O("workspaces.removeMember.success", "Workspace member removed successfully"));
55
+ let n = await Z(j, e);
56
+ if (n.errors?.length) throw Error(n.errors[0]?.message ?? A("workspaces.removeMember.failed", "Failed to remove workspace member"));
57
+ await X(), t.success(A("workspaces.removeMember.success", "Workspace member removed successfully"));
57
58
  } catch (e) {
58
- t.error(e instanceof Error ? e.message : O("workspaces.removeMember.failed", "Failed to remove workspace member"));
59
+ t.error(e instanceof Error ? e.message : A("workspaces.removeMember.failed", "Failed to remove workspace member"));
59
60
  }
60
61
  })();
61
62
  }
62
63
  });
63
- };
64
- return F ? /* @__PURE__ */ x("div", {
64
+ }, ie = [
65
+ {
66
+ key: "user",
67
+ header: A("members.detail.userId", "User ID"),
68
+ priority: "primary",
69
+ cell: (e) => /* @__PURE__ */ w(E, {
70
+ profile: te[e.userId] ?? D({
71
+ actorId: e.userId,
72
+ actorType: "user"
73
+ }),
74
+ variant: "cell"
75
+ })
76
+ },
77
+ {
78
+ key: "role",
79
+ header: A("members.list.column.role", "Role"),
80
+ priority: "secondary",
81
+ cell: (e) => /* @__PURE__ */ w(c, { role: e.role })
82
+ },
83
+ {
84
+ key: "joined",
85
+ header: A("members.list.joined", "Joined"),
86
+ priority: "secondary",
87
+ cell: (e) => /* @__PURE__ */ w("span", {
88
+ className: "text-sm text-[var(--color-text-secondary)]",
89
+ children: k(e.joinedAt)
90
+ })
91
+ },
92
+ {
93
+ key: "invitedBy",
94
+ header: A("members.list.invitedBy", "Invited by"),
95
+ priority: "secondary",
96
+ cell: (e) => /* @__PURE__ */ w("span", {
97
+ className: "break-all font-mono text-sm text-[var(--color-text-secondary)]",
98
+ children: e.invitedBy || "—"
99
+ })
100
+ }
101
+ ];
102
+ return L ? /* @__PURE__ */ w("div", {
65
103
  className: "min-h-full bg-[var(--color-bg-canvas)] p-6",
66
- children: /* @__PURE__ */ x(r, { message: O("common.loadingPermissions", "Loading permissions...") })
67
- }) : P(s.WORKSPACE_READ) ? L ? /* @__PURE__ */ x("div", {
104
+ children: /* @__PURE__ */ w(r, { message: A("common.loadingPermissions", "Loading permissions...") })
105
+ }) : I(s.WORKSPACE_READ) ? z ? /* @__PURE__ */ w("div", {
68
106
  className: "min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6",
69
- children: /* @__PURE__ */ x(r, { message: O("workspaces.detail.loading", "Loading workspace details...") })
70
- }) : R || !I ? /* @__PURE__ */ x("div", {
107
+ children: /* @__PURE__ */ w(r, { message: A("workspaces.detail.loading", "Loading workspace details...") })
108
+ }) : B || !R ? /* @__PURE__ */ w("div", {
71
109
  className: "min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6",
72
- children: /* @__PURE__ */ x(i, {
73
- message: R?.message || O("workspaces.detail.notFound", "Workspace not found"),
110
+ children: /* @__PURE__ */ w(i, {
111
+ message: B?.message || A("workspaces.detail.notFound", "Workspace not found"),
74
112
  action: {
75
- label: O("workspaces.create.backToWorkspaces", "Back to Workspaces"),
76
- onClick: () => A(`${j}/workspaces`)
113
+ label: A("workspaces.create.backToWorkspaces", "Back to Workspaces"),
114
+ onClick: () => M(`${N}/workspaces`)
77
115
  }
78
116
  })
79
- }) : /* @__PURE__ */ S("div", {
80
- className: "min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6 animate-in fade-in duration-300",
117
+ }) : /* @__PURE__ */ T("div", {
118
+ className: "min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6 animate-in fade-in duration-200",
81
119
  children: [
82
- /* @__PURE__ */ S("div", {
120
+ /* @__PURE__ */ T("div", {
83
121
  className: "mx-auto flex w-full max-w-7xl flex-col gap-6",
84
- children: [/* @__PURE__ */ S("div", {
122
+ children: [/* @__PURE__ */ T("div", {
85
123
  className: "space-y-4",
86
- children: [/* @__PURE__ */ S("button", {
124
+ children: [/* @__PURE__ */ T("button", {
87
125
  type: "button",
88
- onClick: () => A(`${j}/workspaces`),
89
- className: "inline-flex min-h-10 items-center gap-2 text-[var(--color-text-secondary)] transition-all duration-200 hover:text-[var(--color-text-primary)] active:scale-[0.98]",
90
- children: [/* @__PURE__ */ x(m, {
126
+ onClick: () => M(`${N}/workspaces`),
127
+ className: "inline-flex min-h-10 items-center gap-2 text-[var(--color-text-secondary)] transition-all duration-200 hover:text-[var(--color-text-primary)]",
128
+ children: [/* @__PURE__ */ w(g, {
91
129
  size: 20,
92
130
  "aria-hidden": "true"
93
- }), /* @__PURE__ */ x("span", {
131
+ }), /* @__PURE__ */ w("span", {
94
132
  className: "text-sm font-medium",
95
- children: O("workspaces.create.backToWorkspaces", "Back to Workspaces")
133
+ children: A("workspaces.create.backToWorkspaces", "Back to Workspaces")
96
134
  })]
97
- }), /* @__PURE__ */ S("div", {
135
+ }), /* @__PURE__ */ T("div", {
98
136
  className: "flex flex-col gap-4 rounded-xl border border-[var(--color-border-default)] bg-[var(--color-bg-surface)] p-5 shadow-[var(--shadow-elevation-1)] lg:flex-row lg:items-start lg:justify-between",
99
- children: [/* @__PURE__ */ S("div", {
137
+ children: [/* @__PURE__ */ T("div", {
100
138
  className: "flex min-w-0 items-start gap-4",
101
- children: [/* @__PURE__ */ x("div", {
139
+ children: [/* @__PURE__ */ w("div", {
102
140
  className: "flex size-16 items-center justify-center rounded-xl bg-[var(--color-status-info-bgSubtle)] text-[var(--color-status-info-text)]",
103
- children: /* @__PURE__ */ x(h, {
141
+ children: /* @__PURE__ */ w(_, {
104
142
  size: 28,
105
143
  "aria-hidden": "true"
106
144
  })
107
- }), /* @__PURE__ */ S("div", {
145
+ }), /* @__PURE__ */ T("div", {
108
146
  className: "min-w-0 space-y-2",
109
- children: [/* @__PURE__ */ S("div", {
147
+ children: [/* @__PURE__ */ T("div", {
110
148
  className: "flex flex-wrap items-start gap-2",
111
- children: [/* @__PURE__ */ x("h1", {
149
+ children: [/* @__PURE__ */ w("h1", {
112
150
  className: "text-3xl font-bold text-[var(--color-text-primary)]",
113
- children: I.name
114
- }), /* @__PURE__ */ x(u, { status: I.status })]
115
- }), /* @__PURE__ */ S("p", {
151
+ children: R.name
152
+ }), /* @__PURE__ */ w(u, { status: R.status })]
153
+ }), /* @__PURE__ */ T("p", {
116
154
  className: "break-all font-mono text-sm text-[var(--color-text-secondary)]",
117
- children: ["/", I.slug]
155
+ children: ["/", R.slug]
118
156
  })]
119
157
  })]
120
- }), /* @__PURE__ */ S("div", {
158
+ }), /* @__PURE__ */ T("div", {
121
159
  className: "flex flex-col gap-3 sm:flex-row",
122
- children: [/* @__PURE__ */ S("button", {
160
+ children: [/* @__PURE__ */ T("button", {
123
161
  type: "button",
124
- onClick: () => A(`${j}/${I.organizationId}`),
162
+ onClick: () => M(`${N}/${R.organizationId}`),
125
163
  className: "inline-flex min-h-11 items-center justify-center gap-2 rounded-lg border border-[var(--color-border-default)] px-4 py-2.5 text-[var(--color-text-primary)] transition-all duration-200 hover:bg-[var(--color-bg-subtle)]",
126
- children: [/* @__PURE__ */ x(v, {
164
+ children: [/* @__PURE__ */ w(x, {
127
165
  size: 16,
128
166
  "aria-hidden": "true"
129
- }), /* @__PURE__ */ x("span", { children: O("workspaces.detail.viewOrganization", "View Organization") })]
130
- }), P(s.WORKSPACE_UPDATE) && /* @__PURE__ */ S("button", {
167
+ }), /* @__PURE__ */ w("span", { children: A("workspaces.detail.viewOrganization", "View Organization") })]
168
+ }), I(s.WORKSPACE_UPDATE) && /* @__PURE__ */ T("button", {
131
169
  type: "button",
132
- onClick: () => A(`${j}/workspaces/${k}/edit`),
133
- className: "inline-flex min-h-11 items-center justify-center gap-2 rounded-lg bg-[var(--color-action-primary-bg)] px-4 py-2.5 text-[var(--color-action-primary-text)] transition-all duration-200 hover:opacity-90 active:scale-[0.98]",
134
- children: [/* @__PURE__ */ x(ne, {
170
+ onClick: () => M(`${N}/workspaces/${j}/edit`),
171
+ 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",
172
+ children: [/* @__PURE__ */ w(v, {
135
173
  size: 16,
136
174
  "aria-hidden": "true"
137
- }), /* @__PURE__ */ x("span", { children: O("workspaces.edit.title", "Edit Workspace") })]
175
+ }), /* @__PURE__ */ w("span", { children: A("workspaces.edit.title", "Edit Workspace") })]
138
176
  })]
139
177
  })]
140
178
  })]
141
- }), /* @__PURE__ */ S("div", {
179
+ }), /* @__PURE__ */ T("div", {
142
180
  className: "rounded-xl border border-[var(--color-border-default)] bg-[var(--color-bg-surface)] shadow-[var(--shadow-elevation-1)]",
143
- children: [/* @__PURE__ */ x("div", {
181
+ children: [/* @__PURE__ */ w("div", {
144
182
  className: "overflow-x-auto border-b border-[var(--color-border-default)]",
145
- children: /* @__PURE__ */ x("div", {
183
+ children: /* @__PURE__ */ w("div", {
146
184
  className: "flex min-w-max gap-2 px-4 pt-4 sm:px-6",
147
- children: re.map((e) => {
148
- let t = z === e.id;
149
- return /* @__PURE__ */ x("button", {
185
+ children: ne.map((e) => {
186
+ let t = V === e.id;
187
+ return /* @__PURE__ */ w("button", {
150
188
  type: "button",
151
- onClick: () => B(e.id),
189
+ onClick: () => H(e.id),
152
190
  className: `inline-flex min-h-11 items-center rounded-t-lg border-b-2 px-4 py-3 text-sm font-medium transition-colors ${t ? "border-[var(--color-action-primary-bg)] text-[var(--color-action-primary-bg)]" : "border-transparent text-[var(--color-text-secondary)] hover:text-[var(--color-text-primary)]"}`,
153
191
  "aria-pressed": t,
154
192
  children: e.label
155
193
  }, e.id);
156
194
  })
157
195
  })
158
- }), /* @__PURE__ */ x("div", {
196
+ }), /* @__PURE__ */ w("div", {
159
197
  className: "p-4 sm:p-6",
160
- children: z === "overview" ? /* @__PURE__ */ S("div", {
198
+ children: V === "overview" ? /* @__PURE__ */ T("div", {
161
199
  className: "grid grid-cols-1 gap-6 xl:grid-cols-[minmax(0,1fr)_320px]",
162
- children: [/* @__PURE__ */ S("section", {
200
+ children: [/* @__PURE__ */ T("section", {
163
201
  className: "rounded-xl border border-[var(--color-border-default)] bg-[var(--color-bg-canvas)] p-5",
164
- children: [/* @__PURE__ */ x("h2", {
202
+ children: [/* @__PURE__ */ w("h2", {
165
203
  className: "text-lg font-semibold text-[var(--color-text-primary)]",
166
- children: O("workspaces.detail.detailsSection", "Workspace details")
167
- }), /* @__PURE__ */ S("dl", {
204
+ children: A("workspaces.detail.detailsSection", "Workspace details")
205
+ }), /* @__PURE__ */ T("dl", {
168
206
  className: "mt-5 grid grid-cols-1 gap-4 sm:grid-cols-2",
169
207
  children: [
170
- /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("dt", {
208
+ /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("dt", {
171
209
  className: "text-sm font-medium text-[var(--color-text-secondary)]",
172
- children: O("common.name", "Name")
173
- }), /* @__PURE__ */ x("dd", {
210
+ children: A("common.name", "Name")
211
+ }), /* @__PURE__ */ w("dd", {
174
212
  className: "mt-1 text-sm text-[var(--color-text-primary)]",
175
- children: I.name
213
+ children: R.name
176
214
  })] }),
177
- /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("dt", {
215
+ /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("dt", {
178
216
  className: "text-sm font-medium text-[var(--color-text-secondary)]",
179
- children: O("common.slug", "Slug")
180
- }), /* @__PURE__ */ x("dd", {
217
+ children: A("common.slug", "Slug")
218
+ }), /* @__PURE__ */ w("dd", {
181
219
  className: "mt-1 break-all font-mono text-sm text-[var(--color-text-primary)]",
182
- children: I.slug
220
+ children: R.slug
183
221
  })] }),
184
- /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("dt", {
222
+ /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("dt", {
185
223
  className: "text-sm font-medium text-[var(--color-text-secondary)]",
186
- children: O("common.status", "Status")
187
- }), /* @__PURE__ */ x("dd", {
224
+ children: A("common.status", "Status")
225
+ }), /* @__PURE__ */ w("dd", {
188
226
  className: "mt-1",
189
- children: /* @__PURE__ */ x(u, { status: I.status })
227
+ children: /* @__PURE__ */ w(u, { status: R.status })
190
228
  })] }),
191
- /* @__PURE__ */ S("div", {
229
+ /* @__PURE__ */ T("div", {
192
230
  className: "sm:col-span-2",
193
- children: [/* @__PURE__ */ x("dt", {
231
+ children: [/* @__PURE__ */ w("dt", {
194
232
  className: "text-sm font-medium text-[var(--color-text-secondary)]",
195
- children: O("members.detail.orgId", "Organization ID")
196
- }), /* @__PURE__ */ x("dd", {
233
+ children: A("members.detail.orgId", "Organization ID")
234
+ }), /* @__PURE__ */ w("dd", {
197
235
  className: "mt-1 break-all font-mono text-sm text-[var(--color-text-primary)]",
198
- children: I.organizationId
236
+ children: R.organizationId
199
237
  })]
200
238
  }),
201
- I.endpoint ? /* @__PURE__ */ S("div", {
239
+ R.endpoint ? /* @__PURE__ */ T("div", {
202
240
  className: "sm:col-span-2",
203
- children: [/* @__PURE__ */ x("dt", {
241
+ children: [/* @__PURE__ */ w("dt", {
204
242
  className: "text-sm font-medium text-[var(--color-text-secondary)]",
205
- children: O("workspaces.detail.endpoint", "Endpoint")
206
- }), /* @__PURE__ */ x("dd", {
243
+ children: A("workspaces.detail.endpoint", "Endpoint")
244
+ }), /* @__PURE__ */ w("dd", {
207
245
  className: "mt-1 break-all font-mono text-sm text-[var(--color-text-primary)]",
208
- children: I.endpoint
246
+ children: R.endpoint
209
247
  })]
210
248
  }) : null
211
249
  ]
212
250
  })]
213
- }), /* @__PURE__ */ S("aside", {
251
+ }), /* @__PURE__ */ T("aside", {
214
252
  className: "rounded-xl border border-[var(--color-border-default)] bg-[var(--color-bg-canvas)] p-5",
215
- children: [/* @__PURE__ */ x("h2", {
253
+ children: [/* @__PURE__ */ w("h2", {
216
254
  className: "text-lg font-semibold text-[var(--color-text-primary)]",
217
- children: O("common.metadata", "Metadata")
218
- }), /* @__PURE__ */ S("dl", {
255
+ children: A("common.metadata", "Metadata")
256
+ }), /* @__PURE__ */ T("dl", {
219
257
  className: "mt-5 space-y-4",
220
258
  children: [
221
- /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("dt", {
259
+ /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("dt", {
222
260
  className: "text-sm font-medium text-[var(--color-text-secondary)]",
223
- children: O("workspaces.list.members", "Members")
224
- }), /* @__PURE__ */ x("dd", {
261
+ children: A("workspaces.list.members", "Members")
262
+ }), /* @__PURE__ */ w("dd", {
225
263
  className: "mt-1 text-sm text-[var(--color-text-primary)]",
226
- children: Z
264
+ children: $
227
265
  })] }),
228
- /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("dt", {
266
+ /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("dt", {
229
267
  className: "text-sm font-medium text-[var(--color-text-secondary)]",
230
- children: O("common.created", "Created")
231
- }), /* @__PURE__ */ x("dd", {
268
+ children: A("common.created", "Created")
269
+ }), /* @__PURE__ */ w("dd", {
232
270
  className: "mt-1 text-sm text-[var(--color-text-primary)]",
233
- children: D(I.createdAt)
271
+ children: k(R.createdAt)
234
272
  })] }),
235
- /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("dt", {
273
+ /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("dt", {
236
274
  className: "text-sm font-medium text-[var(--color-text-secondary)]",
237
- children: O("common.lastUpdated", "Last updated")
238
- }), /* @__PURE__ */ x("dd", {
275
+ children: A("common.lastUpdated", "Last updated")
276
+ }), /* @__PURE__ */ w("dd", {
239
277
  className: "mt-1 text-sm text-[var(--color-text-primary)]",
240
- children: D(I.updatedAt)
278
+ children: k(R.updatedAt)
241
279
  })] }),
242
- I.region ? /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("dt", {
280
+ R.region ? /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("dt", {
243
281
  className: "text-sm font-medium text-[var(--color-text-secondary)]",
244
- children: O("workspaces.detail.region", "Region")
245
- }), /* @__PURE__ */ x("dd", {
282
+ children: A("workspaces.detail.region", "Region")
283
+ }), /* @__PURE__ */ w("dd", {
246
284
  className: "mt-1 text-sm text-[var(--color-text-primary)]",
247
- children: I.region
285
+ children: R.region
248
286
  })] }) : null
249
287
  ]
250
288
  })]
251
289
  })]
252
- }) : /* @__PURE__ */ S("section", {
290
+ }) : /* @__PURE__ */ T("section", {
253
291
  className: "space-y-4",
254
- children: [/* @__PURE__ */ S("div", {
292
+ children: [/* @__PURE__ */ T("div", {
255
293
  className: "flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",
256
- children: [/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("h2", {
294
+ children: [/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("h2", {
257
295
  className: "text-lg font-semibold text-[var(--color-text-primary)]",
258
- children: O("workspaces.detail.membersTitle", "Workspace members")
259
- }), /* @__PURE__ */ x("p", {
296
+ children: A("workspaces.detail.membersTitle", "Workspace members")
297
+ }), /* @__PURE__ */ w("p", {
260
298
  className: "text-sm text-[var(--color-text-secondary)]",
261
- children: O("workspaces.detail.membersSubtitle", "Add organization members to this workspace and manage access.")
262
- })] }), P(s.MEMBER_INVITE) && /* @__PURE__ */ S("button", {
299
+ children: A("workspaces.detail.membersSubtitle", "Add organization members to this workspace and manage access.")
300
+ })] }), I(s.MEMBER_INVITE) && /* @__PURE__ */ T("button", {
263
301
  type: "button",
264
- onClick: () => H(!0),
265
- className: "inline-flex min-h-11 items-center justify-center gap-2 rounded-lg bg-[var(--color-action-primary-bg)] px-4 py-2.5 text-[var(--color-action-primary-text)] transition-all duration-200 hover:opacity-90 active:scale-[0.98]",
266
- children: [/* @__PURE__ */ x(_, {
302
+ onClick: () => W(!0),
303
+ 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",
304
+ children: [/* @__PURE__ */ w(b, {
267
305
  size: 16,
268
306
  "aria-hidden": "true"
269
- }), /* @__PURE__ */ x("span", { children: O("workspaces.detail.addMember", "Add Member") })]
307
+ }), /* @__PURE__ */ w("span", { children: A("workspaces.detail.addMember", "Add Member") })]
270
308
  })]
271
- }), K ? /* @__PURE__ */ x("div", {
309
+ }), J ? /* @__PURE__ */ w("div", {
272
310
  className: "py-8",
273
- children: /* @__PURE__ */ x(r, { message: O("workspaces.detail.loadingMembers", "Loading workspace members...") })
274
- }) : q ? /* @__PURE__ */ x(i, {
275
- message: q.message,
311
+ children: /* @__PURE__ */ w(r, { message: A("workspaces.detail.loadingMembers", "Loading workspace members...") })
312
+ }) : Y ? /* @__PURE__ */ w(i, {
313
+ message: Y.message,
276
314
  action: {
277
- label: O("common.retry", "Retry"),
315
+ label: A("common.retry", "Retry"),
278
316
  onClick: () => {
279
- J();
317
+ X();
280
318
  }
281
319
  }
282
- }) : G.length > 0 ? /* @__PURE__ */ S(b, { children: [/* @__PURE__ */ x("div", {
283
- className: "grid gap-4 md:hidden",
284
- children: G.map((e) => /* @__PURE__ */ x("article", {
285
- className: "rounded-xl border border-[var(--color-border-default)] bg-[var(--color-bg-canvas)] p-4",
286
- children: /* @__PURE__ */ S("div", {
287
- className: "space-y-3",
288
- children: [
289
- /* @__PURE__ */ S("div", {
290
- className: "flex items-start justify-between gap-3",
291
- children: [/* @__PURE__ */ S("div", {
292
- className: "min-w-0",
293
- children: [/* @__PURE__ */ x(w, {
294
- profile: Q[e.userId] ?? T({
295
- actorId: e.userId,
296
- actorType: "user"
297
- }),
298
- variant: "inline"
299
- }), /* @__PURE__ */ S("p", {
300
- className: "mt-1 text-sm text-[var(--color-text-secondary)]",
301
- children: [
302
- O("members.list.joined", "Joined"),
303
- " ",
304
- D(e.joinedAt)
305
- ]
306
- })]
307
- }), /* @__PURE__ */ x(c, { role: e.role })]
308
- }),
309
- /* @__PURE__ */ x("dl", {
310
- className: "grid grid-cols-1 gap-3 text-sm",
311
- children: /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("dt", {
312
- className: "text-[var(--color-text-secondary)]",
313
- children: O("members.list.invitedBy", "Invited by")
314
- }), /* @__PURE__ */ x("dd", {
315
- className: "mt-1 break-all font-mono text-[var(--color-text-primary)]",
316
- children: e.invitedBy || "—"
317
- })] })
318
- }),
319
- /* @__PURE__ */ S("button", {
320
- type: "button",
321
- onClick: () => $(e.userId),
322
- disabled: X,
323
- 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",
324
- children: [/* @__PURE__ */ x(g, {
325
- size: 16,
326
- "aria-hidden": "true"
327
- }), O("common.remove", "Remove")]
328
- })
329
- ]
330
- })
331
- }, e.id))
332
- }), /* @__PURE__ */ x("div", {
333
- className: "hidden overflow-hidden rounded-xl border border-[var(--color-border-default)] bg-[var(--color-bg-canvas)] md:block",
334
- children: /* @__PURE__ */ x("div", {
335
- className: "overflow-x-auto",
336
- children: /* @__PURE__ */ S("table", {
337
- className: "min-w-full",
338
- children: [/* @__PURE__ */ x("thead", {
339
- className: "bg-[var(--color-bg-subtle)]",
340
- children: /* @__PURE__ */ S("tr", { children: [
341
- /* @__PURE__ */ x("th", {
342
- className: "px-6 py-3 text-left text-xs font-semibold uppercase tracking-wide text-[var(--color-text-secondary)]",
343
- children: O("members.detail.userId", "User ID")
344
- }),
345
- /* @__PURE__ */ x("th", {
346
- className: "px-6 py-3 text-left text-xs font-semibold uppercase tracking-wide text-[var(--color-text-secondary)]",
347
- children: O("members.list.column.role", "Role")
348
- }),
349
- /* @__PURE__ */ x("th", {
350
- className: "px-6 py-3 text-left text-xs font-semibold uppercase tracking-wide text-[var(--color-text-secondary)]",
351
- children: O("members.list.joined", "Joined")
352
- }),
353
- /* @__PURE__ */ x("th", {
354
- className: "px-6 py-3 text-left text-xs font-semibold uppercase tracking-wide text-[var(--color-text-secondary)]",
355
- children: O("members.list.invitedBy", "Invited by")
356
- }),
357
- /* @__PURE__ */ x("th", {
358
- className: "px-6 py-3 text-right text-xs font-semibold uppercase tracking-wide text-[var(--color-text-secondary)]",
359
- children: O("common.actions", "Actions")
360
- })
361
- ] })
362
- }), /* @__PURE__ */ x("tbody", {
363
- className: "divide-y divide-[var(--color-border-default)]",
364
- children: G.map((e) => /* @__PURE__ */ S("tr", {
365
- className: "transition-colors hover:bg-[var(--color-bg-subtle)]",
366
- children: [
367
- /* @__PURE__ */ x("td", {
368
- className: "px-6 py-4",
369
- children: /* @__PURE__ */ x(w, {
370
- profile: Q[e.userId] ?? T({
371
- actorId: e.userId,
372
- actorType: "user"
373
- }),
374
- variant: "cell"
375
- })
376
- }),
377
- /* @__PURE__ */ x("td", {
378
- className: "px-6 py-4",
379
- children: /* @__PURE__ */ x(c, { role: e.role })
380
- }),
381
- /* @__PURE__ */ x("td", {
382
- className: "px-6 py-4 text-sm text-[var(--color-text-secondary)]",
383
- children: D(e.joinedAt)
384
- }),
385
- /* @__PURE__ */ x("td", {
386
- className: "px-6 py-4 break-all font-mono text-sm text-[var(--color-text-secondary)]",
387
- children: e.invitedBy || "—"
388
- }),
389
- /* @__PURE__ */ x("td", {
390
- className: "px-6 py-4 text-right",
391
- children: /* @__PURE__ */ x("button", {
392
- type: "button",
393
- onClick: () => $(e.userId),
394
- disabled: X,
395
- 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",
396
- "aria-label": `${O("workspaces.removeMember.ariaPrefix", "Remove")} ${e.userId} ${O("workspaces.removeMember.ariaSuffix", "from workspace")}`,
397
- title: `${O("workspaces.removeMember.ariaPrefix", "Remove")} ${e.userId} ${O("workspaces.removeMember.ariaSuffix", "from workspace")}`,
398
- children: /* @__PURE__ */ x(g, {
399
- size: 18,
400
- "aria-hidden": "true"
401
- })
402
- })
403
- })
404
- ]
405
- }, e.id))
406
- })]
320
+ }) : q.length > 0 ? /* @__PURE__ */ w("div", {
321
+ className: "overflow-hidden rounded-xl border border-[var(--color-border-default)] bg-[var(--color-bg-canvas)] md:p-2",
322
+ children: /* @__PURE__ */ w(S, {
323
+ columns: ie,
324
+ data: q,
325
+ rowKey: (e) => e.id,
326
+ rowActions: (e) => /* @__PURE__ */ w("button", {
327
+ type: "button",
328
+ onClick: () => re(e.userId),
329
+ disabled: Q,
330
+ 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",
331
+ "aria-label": `${A("workspaces.removeMember.ariaPrefix", "Remove")} ${e.userId} ${A("workspaces.removeMember.ariaSuffix", "from workspace")}`,
332
+ title: `${A("workspaces.removeMember.ariaPrefix", "Remove")} ${e.userId} ${A("workspaces.removeMember.ariaSuffix", "from workspace")}`,
333
+ children: /* @__PURE__ */ w(y, {
334
+ size: 18,
335
+ "aria-hidden": "true"
336
+ })
407
337
  })
408
338
  })
409
- })] }) : /* @__PURE__ */ x("div", {
339
+ }) : /* @__PURE__ */ w("div", {
410
340
  className: "rounded-xl border border-[var(--color-border-default)] bg-[var(--color-bg-canvas)] p-6",
411
- children: /* @__PURE__ */ x(a, {
412
- icon: /* @__PURE__ */ x(v, {
341
+ children: /* @__PURE__ */ w(a, {
342
+ icon: /* @__PURE__ */ w(x, {
413
343
  size: 40,
414
344
  "aria-hidden": "true"
415
345
  }),
416
- title: O("workspaces.detail.emptyMembersTitle", "No workspace members yet"),
417
- description: O("workspaces.detail.emptyMembersDescription", "Add people from the parent organization to grant workspace access."),
346
+ title: A("workspaces.detail.emptyMembersTitle", "No workspace members yet"),
347
+ description: A("workspaces.detail.emptyMembersDescription", "Add people from the parent organization to grant workspace access."),
418
348
  action: {
419
- label: O("workspaces.detail.addMember", "Add Member"),
420
- onClick: () => H(!0)
349
+ label: A("workspaces.detail.addMember", "Add Member"),
350
+ onClick: () => W(!0)
421
351
  }
422
352
  })
423
353
  })]
@@ -425,25 +355,25 @@ function O() {
425
355
  })]
426
356
  })]
427
357
  }),
428
- /* @__PURE__ */ x(d, {
429
- open: V,
430
- onOpenChange: H,
431
- workspaceId: I.id,
432
- organizationId: I.organizationId,
433
- existingMembers: G,
434
- onInviteOrganizationMember: () => A(`${j}/${I.organizationId}/members/invite`)
358
+ /* @__PURE__ */ w(p, {
359
+ open: U,
360
+ onOpenChange: W,
361
+ workspaceId: R.id,
362
+ organizationId: R.organizationId,
363
+ existingMembers: q,
364
+ onInviteOrganizationMember: () => M(`${N}/${R.organizationId}/members/invite`)
435
365
  }),
436
- W
366
+ K
437
367
  ]
438
- }) : /* @__PURE__ */ x("div", {
368
+ }) : /* @__PURE__ */ w("div", {
439
369
  className: "min-h-full bg-[var(--color-bg-canvas)] p-6",
440
- children: /* @__PURE__ */ x("div", {
370
+ children: /* @__PURE__ */ w("div", {
441
371
  className: "p-8 text-center text-[var(--color-text-secondary)]",
442
- children: O("workspaces.detail.noPermission", "You don't have permission to view this workspace.")
372
+ children: A("workspaces.detail.noPermission", "You don't have permission to view this workspace.")
443
373
  })
444
374
  });
445
375
  }
446
376
  //#endregion
447
- export { O as WorkspaceDetailPage };
377
+ export { A as WorkspaceDetailPage };
448
378
 
449
379
  //# sourceMappingURL=WorkspaceDetailPage.js.map