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