@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.
- package/dist/organization-management/AdminOrganizationRoot.js +4 -4
- package/dist/organization-management/AdminOrganizationRoot.js.map +1 -1
- package/dist/organization-management/UserOrganizationRoot.js +4 -4
- package/dist/organization-management/UserOrganizationRoot.js.map +1 -1
- package/dist/organization-management/modules/members/components/BulkInviteForm.js +157 -176
- package/dist/organization-management/modules/members/components/BulkInviteForm.js.map +1 -1
- package/dist/organization-management/modules/members/components/InviteMemberForm.js +2 -2
- package/dist/organization-management/modules/members/components/InviteMemberForm.js.map +1 -1
- package/dist/organization-management/modules/members/components/MyInviteCard.js +2 -2
- package/dist/organization-management/modules/members/components/MyInviteCard.js.map +1 -1
- package/dist/organization-management/modules/members/components/PendingInvitesList.js +78 -101
- package/dist/organization-management/modules/members/components/PendingInvitesList.js.map +1 -1
- package/dist/organization-management/modules/members/pages/InvitePeoplePage.js +1 -1
- package/dist/organization-management/modules/members/pages/InvitePeoplePage.js.map +1 -1
- package/dist/organization-management/modules/members/pages/MemberDetailPage.js +2 -2
- package/dist/organization-management/modules/members/pages/MemberDetailPage.js.map +1 -1
- package/dist/organization-management/modules/members/pages/MembersListPage.js +3 -3
- package/dist/organization-management/modules/members/pages/MembersListPage.js.map +1 -1
- package/dist/organization-management/modules/members/pages/MyInvitesPage.js +2 -2
- package/dist/organization-management/modules/members/pages/MyInvitesPage.js.map +1 -1
- package/dist/organization-management/modules/members/pages/OrganizationInviteAcceptancePage.js +5 -5
- package/dist/organization-management/modules/members/pages/OrganizationInviteAcceptancePage.js.map +1 -1
- package/dist/organization-management/modules/organizations/components/OrganizationForm.js +2 -2
- package/dist/organization-management/modules/organizations/components/OrganizationForm.js.map +1 -1
- package/dist/organization-management/modules/organizations/pages/OrganizationCreatePage.js +2 -2
- package/dist/organization-management/modules/organizations/pages/OrganizationCreatePage.js.map +1 -1
- package/dist/organization-management/modules/organizations/pages/OrganizationDetailPage.js +4 -4
- package/dist/organization-management/modules/organizations/pages/OrganizationDetailPage.js.map +1 -1
- package/dist/organization-management/modules/organizations/pages/OrganizationEditPage.js +2 -2
- package/dist/organization-management/modules/organizations/pages/OrganizationEditPage.js.map +1 -1
- package/dist/organization-management/modules/organizations/pages/OrganizationsListPage.js +5 -5
- package/dist/organization-management/modules/organizations/pages/OrganizationsListPage.js.map +1 -1
- package/dist/organization-management/modules/workspaces/components/WorkspaceCard.js +3 -3
- package/dist/organization-management/modules/workspaces/components/WorkspaceCard.js.map +1 -1
- package/dist/organization-management/modules/workspaces/components/WorkspaceForm.js +2 -2
- package/dist/organization-management/modules/workspaces/components/WorkspaceForm.js.map +1 -1
- package/dist/organization-management/modules/workspaces/pages/WorkspaceCreatePage.js +2 -2
- package/dist/organization-management/modules/workspaces/pages/WorkspaceCreatePage.js.map +1 -1
- package/dist/organization-management/modules/workspaces/pages/WorkspaceDetailPage.js +215 -285
- package/dist/organization-management/modules/workspaces/pages/WorkspaceDetailPage.js.map +1 -1
- package/dist/organization-management/modules/workspaces/pages/WorkspaceEditPage.js +2 -2
- package/dist/organization-management/modules/workspaces/pages/WorkspaceEditPage.js.map +1 -1
- package/dist/organization-management/modules/workspaces/pages/WorkspacesListPage.js +4 -4
- package/dist/organization-management/modules/workspaces/pages/WorkspacesListPage.js.map +1 -1
- package/dist/organization-management/shared/components/feedback/EmptyState.js +2 -2
- package/dist/organization-management/shared/components/feedback/EmptyState.js.map +1 -1
- package/dist/organization-management/shared/components/feedback/ErrorState.js +2 -2
- package/dist/organization-management/shared/components/feedback/ErrorState.js.map +1 -1
- package/dist/organization-management/shared/components/feedback/LoadingState.js +1 -1
- package/dist/organization-management/shared/components/feedback/LoadingState.js.map +1 -1
- package/dist/organization-management/shared/components/input/SearchInput.js +1 -1
- package/dist/organization-management/shared/components/input/SearchInput.js.map +1 -1
- 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
|
|
13
|
-
import { AddWorkspaceMemberDialog as
|
|
14
|
-
import { useMemo as
|
|
15
|
-
import { ArrowLeft as
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
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
|
|
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
|
|
31
|
-
let
|
|
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
|
-
})), [
|
|
35
|
-
apiGatewayUrl:
|
|
36
|
-
authToken:
|
|
37
|
-
orgId:
|
|
38
|
-
workspaceId:
|
|
39
|
-
}),
|
|
35
|
+
})), [q]), {
|
|
36
|
+
apiGatewayUrl: P,
|
|
37
|
+
authToken: F,
|
|
38
|
+
orgId: R?.organizationId,
|
|
39
|
+
workspaceId: j
|
|
40
|
+
}), ne = m(() => [{
|
|
40
41
|
id: "overview",
|
|
41
|
-
label:
|
|
42
|
+
label: A("workspaces.detail.tab.overview", "Overview")
|
|
42
43
|
}, {
|
|
43
44
|
id: "members",
|
|
44
|
-
label: `${
|
|
45
|
-
}], [
|
|
46
|
-
|
|
47
|
-
title:
|
|
48
|
-
description: `${
|
|
49
|
-
confirmText:
|
|
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
|
|
55
|
-
if (n.errors?.length) throw Error(n.errors[0]?.message ??
|
|
56
|
-
await
|
|
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 :
|
|
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
|
-
|
|
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__ */
|
|
67
|
-
}) :
|
|
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__ */
|
|
70
|
-
}) :
|
|
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__ */
|
|
73
|
-
message:
|
|
110
|
+
children: /* @__PURE__ */ w(i, {
|
|
111
|
+
message: B?.message || A("workspaces.detail.notFound", "Workspace not found"),
|
|
74
112
|
action: {
|
|
75
|
-
label:
|
|
76
|
-
onClick: () =>
|
|
113
|
+
label: A("workspaces.create.backToWorkspaces", "Back to Workspaces"),
|
|
114
|
+
onClick: () => M(`${N}/workspaces`)
|
|
77
115
|
}
|
|
78
116
|
})
|
|
79
|
-
}) : /* @__PURE__ */
|
|
80
|
-
className: "min-h-full bg-[var(--color-bg-canvas)] px-4 py-6 sm:px-6 animate-in fade-in duration-
|
|
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__ */
|
|
120
|
+
/* @__PURE__ */ T("div", {
|
|
83
121
|
className: "mx-auto flex w-full max-w-7xl flex-col gap-6",
|
|
84
|
-
children: [/* @__PURE__ */
|
|
122
|
+
children: [/* @__PURE__ */ T("div", {
|
|
85
123
|
className: "space-y-4",
|
|
86
|
-
children: [/* @__PURE__ */
|
|
124
|
+
children: [/* @__PURE__ */ T("button", {
|
|
87
125
|
type: "button",
|
|
88
|
-
onClick: () =>
|
|
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)]
|
|
90
|
-
children: [/* @__PURE__ */
|
|
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__ */
|
|
131
|
+
}), /* @__PURE__ */ w("span", {
|
|
94
132
|
className: "text-sm font-medium",
|
|
95
|
-
children:
|
|
133
|
+
children: A("workspaces.create.backToWorkspaces", "Back to Workspaces")
|
|
96
134
|
})]
|
|
97
|
-
}), /* @__PURE__ */
|
|
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__ */
|
|
137
|
+
children: [/* @__PURE__ */ T("div", {
|
|
100
138
|
className: "flex min-w-0 items-start gap-4",
|
|
101
|
-
children: [/* @__PURE__ */
|
|
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__ */
|
|
141
|
+
children: /* @__PURE__ */ w(_, {
|
|
104
142
|
size: 28,
|
|
105
143
|
"aria-hidden": "true"
|
|
106
144
|
})
|
|
107
|
-
}), /* @__PURE__ */
|
|
145
|
+
}), /* @__PURE__ */ T("div", {
|
|
108
146
|
className: "min-w-0 space-y-2",
|
|
109
|
-
children: [/* @__PURE__ */
|
|
147
|
+
children: [/* @__PURE__ */ T("div", {
|
|
110
148
|
className: "flex flex-wrap items-start gap-2",
|
|
111
|
-
children: [/* @__PURE__ */
|
|
149
|
+
children: [/* @__PURE__ */ w("h1", {
|
|
112
150
|
className: "text-3xl font-bold text-[var(--color-text-primary)]",
|
|
113
|
-
children:
|
|
114
|
-
}), /* @__PURE__ */
|
|
115
|
-
}), /* @__PURE__ */
|
|
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: ["/",
|
|
155
|
+
children: ["/", R.slug]
|
|
118
156
|
})]
|
|
119
157
|
})]
|
|
120
|
-
}), /* @__PURE__ */
|
|
158
|
+
}), /* @__PURE__ */ T("div", {
|
|
121
159
|
className: "flex flex-col gap-3 sm:flex-row",
|
|
122
|
-
children: [/* @__PURE__ */
|
|
160
|
+
children: [/* @__PURE__ */ T("button", {
|
|
123
161
|
type: "button",
|
|
124
|
-
onClick: () =>
|
|
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
|
|
164
|
+
children: [/* @__PURE__ */ w(x, {
|
|
127
165
|
size: 16,
|
|
128
166
|
"aria-hidden": "true"
|
|
129
|
-
}), /* @__PURE__ */
|
|
130
|
-
}),
|
|
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: () =>
|
|
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
|
|
134
|
-
children: [/* @__PURE__ */
|
|
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__ */
|
|
175
|
+
}), /* @__PURE__ */ w("span", { children: A("workspaces.edit.title", "Edit Workspace") })]
|
|
138
176
|
})]
|
|
139
177
|
})]
|
|
140
178
|
})]
|
|
141
|
-
}), /* @__PURE__ */
|
|
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__ */
|
|
181
|
+
children: [/* @__PURE__ */ w("div", {
|
|
144
182
|
className: "overflow-x-auto border-b border-[var(--color-border-default)]",
|
|
145
|
-
children: /* @__PURE__ */
|
|
183
|
+
children: /* @__PURE__ */ w("div", {
|
|
146
184
|
className: "flex min-w-max gap-2 px-4 pt-4 sm:px-6",
|
|
147
|
-
children:
|
|
148
|
-
let t =
|
|
149
|
-
return /* @__PURE__ */
|
|
185
|
+
children: ne.map((e) => {
|
|
186
|
+
let t = V === e.id;
|
|
187
|
+
return /* @__PURE__ */ w("button", {
|
|
150
188
|
type: "button",
|
|
151
|
-
onClick: () =>
|
|
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__ */
|
|
196
|
+
}), /* @__PURE__ */ w("div", {
|
|
159
197
|
className: "p-4 sm:p-6",
|
|
160
|
-
children:
|
|
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__ */
|
|
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__ */
|
|
202
|
+
children: [/* @__PURE__ */ w("h2", {
|
|
165
203
|
className: "text-lg font-semibold text-[var(--color-text-primary)]",
|
|
166
|
-
children:
|
|
167
|
-
}), /* @__PURE__ */
|
|
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__ */
|
|
208
|
+
/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("dt", {
|
|
171
209
|
className: "text-sm font-medium text-[var(--color-text-secondary)]",
|
|
172
|
-
children:
|
|
173
|
-
}), /* @__PURE__ */
|
|
210
|
+
children: A("common.name", "Name")
|
|
211
|
+
}), /* @__PURE__ */ w("dd", {
|
|
174
212
|
className: "mt-1 text-sm text-[var(--color-text-primary)]",
|
|
175
|
-
children:
|
|
213
|
+
children: R.name
|
|
176
214
|
})] }),
|
|
177
|
-
/* @__PURE__ */
|
|
215
|
+
/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("dt", {
|
|
178
216
|
className: "text-sm font-medium text-[var(--color-text-secondary)]",
|
|
179
|
-
children:
|
|
180
|
-
}), /* @__PURE__ */
|
|
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:
|
|
220
|
+
children: R.slug
|
|
183
221
|
})] }),
|
|
184
|
-
/* @__PURE__ */
|
|
222
|
+
/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("dt", {
|
|
185
223
|
className: "text-sm font-medium text-[var(--color-text-secondary)]",
|
|
186
|
-
children:
|
|
187
|
-
}), /* @__PURE__ */
|
|
224
|
+
children: A("common.status", "Status")
|
|
225
|
+
}), /* @__PURE__ */ w("dd", {
|
|
188
226
|
className: "mt-1",
|
|
189
|
-
children: /* @__PURE__ */
|
|
227
|
+
children: /* @__PURE__ */ w(u, { status: R.status })
|
|
190
228
|
})] }),
|
|
191
|
-
/* @__PURE__ */
|
|
229
|
+
/* @__PURE__ */ T("div", {
|
|
192
230
|
className: "sm:col-span-2",
|
|
193
|
-
children: [/* @__PURE__ */
|
|
231
|
+
children: [/* @__PURE__ */ w("dt", {
|
|
194
232
|
className: "text-sm font-medium text-[var(--color-text-secondary)]",
|
|
195
|
-
children:
|
|
196
|
-
}), /* @__PURE__ */
|
|
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:
|
|
236
|
+
children: R.organizationId
|
|
199
237
|
})]
|
|
200
238
|
}),
|
|
201
|
-
|
|
239
|
+
R.endpoint ? /* @__PURE__ */ T("div", {
|
|
202
240
|
className: "sm:col-span-2",
|
|
203
|
-
children: [/* @__PURE__ */
|
|
241
|
+
children: [/* @__PURE__ */ w("dt", {
|
|
204
242
|
className: "text-sm font-medium text-[var(--color-text-secondary)]",
|
|
205
|
-
children:
|
|
206
|
-
}), /* @__PURE__ */
|
|
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:
|
|
246
|
+
children: R.endpoint
|
|
209
247
|
})]
|
|
210
248
|
}) : null
|
|
211
249
|
]
|
|
212
250
|
})]
|
|
213
|
-
}), /* @__PURE__ */
|
|
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__ */
|
|
253
|
+
children: [/* @__PURE__ */ w("h2", {
|
|
216
254
|
className: "text-lg font-semibold text-[var(--color-text-primary)]",
|
|
217
|
-
children:
|
|
218
|
-
}), /* @__PURE__ */
|
|
255
|
+
children: A("common.metadata", "Metadata")
|
|
256
|
+
}), /* @__PURE__ */ T("dl", {
|
|
219
257
|
className: "mt-5 space-y-4",
|
|
220
258
|
children: [
|
|
221
|
-
/* @__PURE__ */
|
|
259
|
+
/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("dt", {
|
|
222
260
|
className: "text-sm font-medium text-[var(--color-text-secondary)]",
|
|
223
|
-
children:
|
|
224
|
-
}), /* @__PURE__ */
|
|
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:
|
|
264
|
+
children: $
|
|
227
265
|
})] }),
|
|
228
|
-
/* @__PURE__ */
|
|
266
|
+
/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("dt", {
|
|
229
267
|
className: "text-sm font-medium text-[var(--color-text-secondary)]",
|
|
230
|
-
children:
|
|
231
|
-
}), /* @__PURE__ */
|
|
268
|
+
children: A("common.created", "Created")
|
|
269
|
+
}), /* @__PURE__ */ w("dd", {
|
|
232
270
|
className: "mt-1 text-sm text-[var(--color-text-primary)]",
|
|
233
|
-
children:
|
|
271
|
+
children: k(R.createdAt)
|
|
234
272
|
})] }),
|
|
235
|
-
/* @__PURE__ */
|
|
273
|
+
/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("dt", {
|
|
236
274
|
className: "text-sm font-medium text-[var(--color-text-secondary)]",
|
|
237
|
-
children:
|
|
238
|
-
}), /* @__PURE__ */
|
|
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:
|
|
278
|
+
children: k(R.updatedAt)
|
|
241
279
|
})] }),
|
|
242
|
-
|
|
280
|
+
R.region ? /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("dt", {
|
|
243
281
|
className: "text-sm font-medium text-[var(--color-text-secondary)]",
|
|
244
|
-
children:
|
|
245
|
-
}), /* @__PURE__ */
|
|
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:
|
|
285
|
+
children: R.region
|
|
248
286
|
})] }) : null
|
|
249
287
|
]
|
|
250
288
|
})]
|
|
251
289
|
})]
|
|
252
|
-
}) : /* @__PURE__ */
|
|
290
|
+
}) : /* @__PURE__ */ T("section", {
|
|
253
291
|
className: "space-y-4",
|
|
254
|
-
children: [/* @__PURE__ */
|
|
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__ */
|
|
294
|
+
children: [/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("h2", {
|
|
257
295
|
className: "text-lg font-semibold text-[var(--color-text-primary)]",
|
|
258
|
-
children:
|
|
259
|
-
}), /* @__PURE__ */
|
|
296
|
+
children: A("workspaces.detail.membersTitle", "Workspace members")
|
|
297
|
+
}), /* @__PURE__ */ w("p", {
|
|
260
298
|
className: "text-sm text-[var(--color-text-secondary)]",
|
|
261
|
-
children:
|
|
262
|
-
})] }),
|
|
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: () =>
|
|
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
|
|
266
|
-
children: [/* @__PURE__ */
|
|
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__ */
|
|
307
|
+
}), /* @__PURE__ */ w("span", { children: A("workspaces.detail.addMember", "Add Member") })]
|
|
270
308
|
})]
|
|
271
|
-
}),
|
|
309
|
+
}), J ? /* @__PURE__ */ w("div", {
|
|
272
310
|
className: "py-8",
|
|
273
|
-
children: /* @__PURE__ */
|
|
274
|
-
}) :
|
|
275
|
-
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:
|
|
315
|
+
label: A("common.retry", "Retry"),
|
|
278
316
|
onClick: () => {
|
|
279
|
-
|
|
317
|
+
X();
|
|
280
318
|
}
|
|
281
319
|
}
|
|
282
|
-
}) :
|
|
283
|
-
className: "
|
|
284
|
-
children:
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
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
|
-
})
|
|
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__ */
|
|
412
|
-
icon: /* @__PURE__ */ x
|
|
341
|
+
children: /* @__PURE__ */ w(a, {
|
|
342
|
+
icon: /* @__PURE__ */ w(x, {
|
|
413
343
|
size: 40,
|
|
414
344
|
"aria-hidden": "true"
|
|
415
345
|
}),
|
|
416
|
-
title:
|
|
417
|
-
description:
|
|
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:
|
|
420
|
-
onClick: () =>
|
|
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__ */
|
|
429
|
-
open:
|
|
430
|
-
onOpenChange:
|
|
431
|
-
workspaceId:
|
|
432
|
-
organizationId:
|
|
433
|
-
existingMembers:
|
|
434
|
-
onInviteOrganizationMember: () =>
|
|
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
|
-
|
|
366
|
+
K
|
|
437
367
|
]
|
|
438
|
-
}) : /* @__PURE__ */
|
|
368
|
+
}) : /* @__PURE__ */ w("div", {
|
|
439
369
|
className: "min-h-full bg-[var(--color-bg-canvas)] p-6",
|
|
440
|
-
children: /* @__PURE__ */
|
|
370
|
+
children: /* @__PURE__ */ w("div", {
|
|
441
371
|
className: "p-8 text-center text-[var(--color-text-secondary)]",
|
|
442
|
-
children:
|
|
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 {
|
|
377
|
+
export { A as WorkspaceDetailPage };
|
|
448
378
|
|
|
449
379
|
//# sourceMappingURL=WorkspaceDetailPage.js.map
|