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