@burdenoff/microfe-devportal 2026.705.3 → 2026.707.1
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/devportal/DevportalRoutes.js +19 -12
- package/dist/devportal/DevportalRoutes.js.map +1 -1
- package/dist/devportal/pages/ApplicationDetailPage.js +97 -74
- package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
- package/dist/devportal/pages/InvitationDecisionPage.js +142 -0
- package/dist/devportal/pages/InvitationDecisionPage.js.map +1 -0
- package/dist/devportal/pages/OrganizationDetailPage.js +564 -403
- package/dist/devportal/pages/OrganizationDetailPage.js.map +1 -1
- package/dist/devportal/pages/OrganizationMembersPage.js +354 -339
- package/dist/devportal/pages/OrganizationMembersPage.js.map +1 -1
- package/dist/devportal/types/index.js.map +1 -1
- package/dist/generated/global-operations.js +146 -84
- package/dist/generated/global-operations.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,310 +6,337 @@ import { ORG_ROLE_LABELS as o } from "../utils/constants.js";
|
|
|
6
6
|
import { StatusBadge as s } from "../components/StatusBadge.js";
|
|
7
7
|
import { SelectionCheckbox as c } from "../components/SelectionCheckbox.js";
|
|
8
8
|
import { DataTable as le } from "../components/DataTable.js";
|
|
9
|
-
import { InputField as ue, SelectField as de } from "../components/FormField.js";
|
|
9
|
+
import { InputField as ue, SelectField as de, TextareaField as fe } from "../components/FormField.js";
|
|
10
10
|
import { ConfirmDialog as l } from "../components/ConfirmDialog.js";
|
|
11
|
-
import { PermissionGuard as
|
|
11
|
+
import { PermissionGuard as pe } from "../components/PermissionGuard.js";
|
|
12
12
|
import "../components/index.js";
|
|
13
13
|
import { DEVPORTAL_PERMISSIONS as u } from "../constants/permissions.js";
|
|
14
14
|
import { useDevportalPermission as d } from "../hooks/usePermission.js";
|
|
15
15
|
import "../hooks/index.js";
|
|
16
|
-
import
|
|
17
|
-
import { useEffect as
|
|
18
|
-
import { useI18n as
|
|
19
|
-
import { AlertCircle as
|
|
20
|
-
import { useParams as
|
|
21
|
-
import { jsx as
|
|
16
|
+
import me from "../../node_modules/date-fns/format.js";
|
|
17
|
+
import { useEffect as he, useMemo as f, useState as p } from "react";
|
|
18
|
+
import { useI18n as ge } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
19
|
+
import { AlertCircle as m, Loader2 as _e, Mail as ve, Plus as ye, RefreshCw as be, Shield as xe, UserMinus as Se } from "lucide-react";
|
|
20
|
+
import { useParams as Ce } from "react-router-dom";
|
|
21
|
+
import { jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
22
22
|
//#region src/devportal/pages/OrganizationMembersPage.tsx
|
|
23
|
-
var
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
var we = {
|
|
24
|
+
VIEWER: 0,
|
|
25
|
+
DEVELOPER: 1,
|
|
26
|
+
ADMIN: 2,
|
|
27
|
+
OWNER: 3
|
|
28
|
+
}, _ = () => {
|
|
29
|
+
let { orgId: _ } = Ce(), { currentUser: v } = e(), { allowed: Te } = d(u.ORG_INVITATION_CREATE), { allowed: Ee } = d(u.ORG_MEMBER_UPDATE), { allowed: De } = d(u.ORG_MEMBER_DELETE), { allowed: Oe } = d(u.ORG_MEMBER_ACTIVATE), { allowed: ke } = d(u.ORG_MEMBER_DEACTIVATE), y = (e) => e.email ? e.email : v?.id === e.userId && v.email ? v.email : e.userId, { t: Ae } = ge(), b = (e, t) => {
|
|
30
|
+
let n = Ae(e);
|
|
26
31
|
return n === e ? t : n;
|
|
27
|
-
}, [
|
|
28
|
-
variables: { id:
|
|
29
|
-
skip: !
|
|
32
|
+
}, [x, S] = p(!1), [C, w] = p(""), [T, E] = p("DEVELOPER"), [je, Me] = p(""), [Ne, D] = p(null), [Pe, O] = p(null), [k, A] = p(/* @__PURE__ */ new Set()), [j, M] = p(/* @__PURE__ */ new Set()), [Fe, N] = p(!1), [Ie, P] = p(!1), [F, I] = p(null), { data: Le } = te({
|
|
33
|
+
variables: { id: _ ?? "" },
|
|
34
|
+
skip: !_,
|
|
30
35
|
fetchPolicy: "cache-first"
|
|
31
36
|
});
|
|
32
|
-
|
|
33
|
-
let e =
|
|
34
|
-
if (!
|
|
37
|
+
he(() => {
|
|
38
|
+
let e = Le?.developerOrganization?.name;
|
|
39
|
+
if (!_ || !e) return;
|
|
35
40
|
let t = window.__breadcrumbRegistry;
|
|
36
|
-
return t?.register(
|
|
37
|
-
}, [
|
|
38
|
-
let { data:
|
|
39
|
-
variables: { organizationId:
|
|
40
|
-
skip: !
|
|
41
|
+
return t?.register(_, e), () => t?.unregister(_);
|
|
42
|
+
}, [_, Le?.developerOrganization?.name]);
|
|
43
|
+
let { data: L, loading: Re, error: ze } = ee({
|
|
44
|
+
variables: { organizationId: _ },
|
|
45
|
+
skip: !_,
|
|
41
46
|
fetchPolicy: "cache-and-network"
|
|
42
|
-
}), {
|
|
47
|
+
}), [Be, { loading: Ve }] = ne({ refetchQueries: ["GetOrganizationInvitations"] }), [He] = ie({ refetchQueries: ["GetOrganizationMembers"] }), [Ue] = oe({ refetchQueries: ["GetOrganizationMembers"] }), [We] = re({ refetchQueries: ["GetOrganizationMembers"] }), [Ge] = ce({ refetchQueries: ["GetOrganizationMembers", "GetOrganization"] }), [Ke] = se({ refetchQueries: ["GetOrganizationMembers", "GetOrganization"] }), [qe] = n({ refetchQueries: ["GetOrganizationInvitations"] }), [Je] = ae(), R = f(() => L?.developerOrgMembers?.edges?.map((e) => e.node) ?? [], [L?.developerOrgMembers?.edges]), Ye = (v ? R.find((e) => e.userId === v.id) : void 0)?.role, z = Ye !== void 0 && we[Ye] >= we.ADMIN, B = z && Te, V = z && Ee, H = z && De, U = z && Oe, W = z && ke, { data: G, loading: Xe, error: Ze } = r({
|
|
43
48
|
variables: {
|
|
44
|
-
organizationId:
|
|
49
|
+
organizationId: _,
|
|
45
50
|
status: "PENDING"
|
|
46
51
|
},
|
|
47
|
-
skip: !
|
|
52
|
+
skip: !_ || !z,
|
|
48
53
|
fetchPolicy: "cache-and-network"
|
|
49
|
-
}),
|
|
50
|
-
if (!(!
|
|
51
|
-
|
|
54
|
+
}), K = f(() => G?.developerOrgInvitations?.edges?.map((e) => e.node) ?? [], [G?.developerOrgInvitations?.edges]), Qe = L?.developerOrgMembers?.totalCount ?? 0, $e = G?.developerOrgInvitations?.totalCount ?? 0, q = f(() => R.filter((e) => k.has(e.id)), [R, k]), J = f(() => K.filter((e) => j.has(e.id)), [K, j]), Y = R.filter((e) => e.role !== "OWNER"), et = Y.length > 0 && Y.every((e) => k.has(e.id)), tt = Y.some((e) => k.has(e.id)) && !et, X = K.length > 0 && K.every((e) => j.has(e.id)), nt = K.some((e) => j.has(e.id)) && !X, Z = q.filter((e) => e.role !== "OWNER" && !e.isSuspended), Q = q.filter((e) => e.isSuspended), $ = q.filter((e) => e.role !== "OWNER"), rt = async () => {
|
|
55
|
+
if (!(!_ || !C.trim())) {
|
|
56
|
+
D(null);
|
|
52
57
|
try {
|
|
53
|
-
await
|
|
54
|
-
organizationId:
|
|
58
|
+
await Be({ variables: {
|
|
59
|
+
organizationId: _,
|
|
55
60
|
input: {
|
|
56
|
-
email:
|
|
57
|
-
role:
|
|
58
|
-
message:
|
|
61
|
+
email: C,
|
|
62
|
+
role: T,
|
|
63
|
+
message: je || void 0
|
|
59
64
|
}
|
|
60
|
-
} }),
|
|
65
|
+
} }), S(!1), w(""), E("DEVELOPER"), Me(""), O(b("devportal.invitationSent", "Invitation created and email sent to the team member."));
|
|
61
66
|
} catch (e) {
|
|
62
|
-
|
|
67
|
+
D(e instanceof Error ? e.message : b("devportal.failedToSendInvitation", "Failed to send invitation"));
|
|
63
68
|
}
|
|
64
69
|
}
|
|
65
|
-
},
|
|
66
|
-
|
|
70
|
+
}, it = async (e) => {
|
|
71
|
+
D(null);
|
|
67
72
|
try {
|
|
68
|
-
await
|
|
73
|
+
await He({ variables: { id: e } });
|
|
69
74
|
} catch (e) {
|
|
70
|
-
|
|
75
|
+
D(e instanceof Error ? e.message : b("devportal.failedToRemoveMember", "Failed to remove member"));
|
|
71
76
|
}
|
|
72
|
-
},
|
|
73
|
-
|
|
77
|
+
}, at = async (e, t) => {
|
|
78
|
+
D(null);
|
|
74
79
|
try {
|
|
75
|
-
await
|
|
80
|
+
await Ue({ variables: {
|
|
76
81
|
id: e,
|
|
77
82
|
reason: t || void 0
|
|
78
83
|
} });
|
|
79
84
|
} catch (e) {
|
|
80
|
-
|
|
85
|
+
D(e instanceof Error ? e.message : b("devportal.failedToSuspendMember", "Failed to suspend member"));
|
|
81
86
|
}
|
|
82
|
-
},
|
|
83
|
-
|
|
87
|
+
}, ot = async (e) => {
|
|
88
|
+
D(null);
|
|
84
89
|
try {
|
|
85
|
-
await
|
|
90
|
+
await We({ variables: { id: e } });
|
|
86
91
|
} catch (e) {
|
|
87
|
-
|
|
92
|
+
D(e instanceof Error ? e.message : b("devportal.failedToReactivateMember", "Failed to reactivate member"));
|
|
88
93
|
}
|
|
89
|
-
},
|
|
90
|
-
|
|
94
|
+
}, st = async (e, t) => {
|
|
95
|
+
D(null);
|
|
91
96
|
try {
|
|
92
|
-
await
|
|
97
|
+
await Ge({ variables: {
|
|
93
98
|
id: e,
|
|
94
99
|
role: t,
|
|
95
100
|
permissions: void 0
|
|
96
|
-
} }),
|
|
101
|
+
} }), O(b("devportal.memberRoleUpdated", "Member role updated successfully"));
|
|
97
102
|
} catch (e) {
|
|
98
|
-
|
|
103
|
+
D(e instanceof Error ? e.message : b("devportal.failedToUpdateMemberRole", "Failed to update member role"));
|
|
99
104
|
}
|
|
100
|
-
},
|
|
101
|
-
let e =
|
|
102
|
-
if (!(!
|
|
103
|
-
|
|
105
|
+
}, ct = async () => {
|
|
106
|
+
let e = F;
|
|
107
|
+
if (!(!_ || !e)) {
|
|
108
|
+
D(null);
|
|
104
109
|
try {
|
|
105
|
-
await
|
|
106
|
-
organizationId:
|
|
110
|
+
await Ke({ variables: {
|
|
111
|
+
organizationId: _,
|
|
107
112
|
newOwnerId: e.userId
|
|
108
|
-
} }),
|
|
113
|
+
} }), I(null), O(b("devportal.organizationOwnershipTransferred", "Organization ownership transferred successfully"));
|
|
109
114
|
} catch (e) {
|
|
110
|
-
|
|
115
|
+
D(e instanceof Error ? e.message : b("devportal.failedToTransferOwnership", "Failed to transfer organization ownership"));
|
|
111
116
|
}
|
|
112
117
|
}
|
|
113
|
-
},
|
|
114
|
-
|
|
118
|
+
}, lt = async (e) => {
|
|
119
|
+
D(null);
|
|
115
120
|
try {
|
|
116
|
-
await
|
|
121
|
+
await qe({ variables: { id: e } });
|
|
117
122
|
} catch (e) {
|
|
118
|
-
|
|
123
|
+
D(e instanceof Error ? e.message : b("devportal.failedToCancelInvitation", "Failed to cancel invitation"));
|
|
119
124
|
}
|
|
120
|
-
},
|
|
121
|
-
|
|
125
|
+
}, ut = async (e) => {
|
|
126
|
+
D(null);
|
|
122
127
|
try {
|
|
123
|
-
await
|
|
128
|
+
await Je({ variables: { id: e } });
|
|
124
129
|
} catch (e) {
|
|
125
|
-
|
|
130
|
+
D(e instanceof Error ? e.message : b("devportal.failedToResendInvitation", "Failed to resend invitation"));
|
|
126
131
|
}
|
|
127
|
-
},
|
|
128
|
-
|
|
129
|
-
},
|
|
130
|
-
|
|
132
|
+
}, dt = () => {
|
|
133
|
+
A(/* @__PURE__ */ new Set()), M(/* @__PURE__ */ new Set());
|
|
134
|
+
}, ft = (e, t) => {
|
|
135
|
+
A((n) => {
|
|
131
136
|
let r = new Set(n);
|
|
132
137
|
return t ? r.add(e) : r.delete(e), r;
|
|
133
138
|
});
|
|
134
|
-
},
|
|
135
|
-
|
|
139
|
+
}, pt = (e) => {
|
|
140
|
+
A((t) => {
|
|
136
141
|
let n = new Set(t);
|
|
137
|
-
return
|
|
142
|
+
return Y.forEach((t) => {
|
|
138
143
|
e ? n.add(t.id) : n.delete(t.id);
|
|
139
144
|
}), n;
|
|
140
145
|
});
|
|
141
|
-
},
|
|
142
|
-
|
|
146
|
+
}, mt = (e, t) => {
|
|
147
|
+
M((n) => {
|
|
143
148
|
let r = new Set(n);
|
|
144
149
|
return t ? r.add(e) : r.delete(e), r;
|
|
145
150
|
});
|
|
151
|
+
}, ht = (e) => {
|
|
152
|
+
M((t) => {
|
|
153
|
+
let n = new Set(t);
|
|
154
|
+
return K.forEach((t) => {
|
|
155
|
+
e ? n.add(t.id) : n.delete(t.id);
|
|
156
|
+
}), n;
|
|
157
|
+
});
|
|
158
|
+
}, gt = async () => {
|
|
159
|
+
if (Z.length === 0) return;
|
|
160
|
+
D(null);
|
|
161
|
+
let e = await Promise.allSettled(Z.map((e) => Ue({ variables: {
|
|
162
|
+
id: e.id,
|
|
163
|
+
reason: void 0
|
|
164
|
+
} }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
|
|
165
|
+
O(`${b("devportal.suspended", "Suspended")} ${t} ${t === 1 ? b("devportal.memberLower", "member") : b("devportal.membersLower", "members")}${n > 0 ? ` • ${n} ${b("devportal.failed", "failed")}` : ""}`), A(/* @__PURE__ */ new Set());
|
|
166
|
+
}, _t = async () => {
|
|
167
|
+
if (Q.length === 0) return;
|
|
168
|
+
D(null);
|
|
169
|
+
let e = await Promise.allSettled(Q.map((e) => We({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
|
|
170
|
+
O(`${b("devportal.reactivated", "Reactivated")} ${t} ${t === 1 ? b("devportal.memberLower", "member") : b("devportal.membersLower", "members")}${n > 0 ? ` • ${n} ${b("devportal.failed", "failed")}` : ""}`), A(/* @__PURE__ */ new Set());
|
|
171
|
+
}, vt = async () => {
|
|
172
|
+
if ($.length === 0) return;
|
|
173
|
+
D(null);
|
|
174
|
+
let e = await Promise.allSettled($.map((e) => He({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
|
|
175
|
+
O(`${b("devportal.removed", "Removed")} ${t} ${t === 1 ? b("devportal.memberLower", "member") : b("devportal.membersLower", "members")}${n > 0 ? ` • ${n} ${b("devportal.failed", "failed")}` : ""}`), N(!1), A(/* @__PURE__ */ new Set());
|
|
176
|
+
}, yt = async () => {
|
|
177
|
+
if (J.length === 0) return;
|
|
178
|
+
D(null);
|
|
179
|
+
let e = await Promise.allSettled(J.map((e) => Je({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
|
|
180
|
+
O(`${b("devportal.resent", "Resent")} ${t} ${t === 1 ? b("devportal.invitationLower", "invitation") : b("devportal.invitationsLower", "invitations")}${n > 0 ? ` • ${n} ${b("devportal.failed", "failed")}` : ""}`), M(/* @__PURE__ */ new Set());
|
|
181
|
+
}, bt = async () => {
|
|
182
|
+
if (J.length === 0) return;
|
|
183
|
+
D(null);
|
|
184
|
+
let e = await Promise.allSettled(J.map((e) => qe({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
|
|
185
|
+
O(`${b("devportal.cancelled", "Cancelled")} ${t} ${t === 1 ? b("devportal.invitationLower", "invitation") : b("devportal.invitationsLower", "invitations")}${n > 0 ? ` • ${n} ${b("devportal.failed", "failed")}` : ""}`), P(!1), M(/* @__PURE__ */ new Set());
|
|
146
186
|
};
|
|
147
|
-
return (
|
|
148
|
-
title:
|
|
149
|
-
description:
|
|
150
|
-
backLink: `/organizations/${
|
|
151
|
-
backLabel:
|
|
152
|
-
children: /* @__PURE__ */
|
|
187
|
+
return (Re || Xe) && !L && !G ? /* @__PURE__ */ h(i, {
|
|
188
|
+
title: b("devportal.teamMembers", "Team Members"),
|
|
189
|
+
description: b("devportal.manageYourOrganizationsTeam", "Manage your organization's team"),
|
|
190
|
+
backLink: `/organizations/${_}`,
|
|
191
|
+
backLabel: b("devportal.backToOrganization", "Back to Organization"),
|
|
192
|
+
children: /* @__PURE__ */ h("div", {
|
|
153
193
|
className: "flex items-center justify-center py-16",
|
|
154
|
-
children: /* @__PURE__ */
|
|
194
|
+
children: /* @__PURE__ */ h(_e, { className: "h-8 w-8 animate-spin text-text-secondary" })
|
|
155
195
|
})
|
|
156
|
-
}) : (
|
|
157
|
-
title:
|
|
158
|
-
description:
|
|
159
|
-
backLink: `/organizations/${
|
|
160
|
-
backLabel:
|
|
161
|
-
children: /* @__PURE__ */
|
|
162
|
-
icon: /* @__PURE__ */
|
|
196
|
+
}) : (ze || Ze) && !L && !G ? /* @__PURE__ */ h(i, {
|
|
197
|
+
title: b("devportal.teamMembers", "Team Members"),
|
|
198
|
+
description: b("devportal.manageYourOrganizationsTeam", "Manage your organization's team"),
|
|
199
|
+
backLink: `/organizations/${_}`,
|
|
200
|
+
backLabel: b("devportal.backToOrganization", "Back to Organization"),
|
|
201
|
+
children: /* @__PURE__ */ h(t, {
|
|
202
|
+
icon: /* @__PURE__ */ h(m, {
|
|
163
203
|
size: 32,
|
|
164
204
|
className: "text-status-error-text"
|
|
165
205
|
}),
|
|
166
|
-
title:
|
|
167
|
-
description:
|
|
206
|
+
title: b("devportal.failedToLoadMembers", "Failed to load members"),
|
|
207
|
+
description: ze?.message || Ze?.message || b("devportal.anErrorOccurredWhileLoadingTeamData", "An error occurred while loading team data")
|
|
168
208
|
})
|
|
169
|
-
}) : /* @__PURE__ */
|
|
209
|
+
}) : /* @__PURE__ */ h(pe, {
|
|
170
210
|
permission: u.ORG_MEMBER_READ,
|
|
171
|
-
children: /* @__PURE__ */
|
|
172
|
-
title:
|
|
173
|
-
description:
|
|
174
|
-
purpose:
|
|
175
|
-
backLink: `/organizations/${
|
|
176
|
-
backLabel:
|
|
177
|
-
actions: /* @__PURE__ */
|
|
178
|
-
onClick: () =>
|
|
179
|
-
disabled: !
|
|
180
|
-
"aria-disabled": !
|
|
211
|
+
children: /* @__PURE__ */ g(i, {
|
|
212
|
+
title: b("devportal.teamMembers", "Team Members"),
|
|
213
|
+
description: b("devportal.manageYourOrganizationsTeam", "Manage your organization's team"),
|
|
214
|
+
purpose: b("devportal.teamMembersPurpose", "Control who can work on this organization's apps and what they can do. Invite teammates by email, assign roles to grant the right level of access, and suspend or remove anyone who should no longer have it."),
|
|
215
|
+
backLink: `/organizations/${_}`,
|
|
216
|
+
backLabel: b("devportal.backToOrganization", "Back to Organization"),
|
|
217
|
+
actions: B ? /* @__PURE__ */ g("button", {
|
|
218
|
+
onClick: () => S(!0),
|
|
219
|
+
disabled: !B,
|
|
220
|
+
"aria-disabled": !B,
|
|
181
221
|
className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 disabled:opacity-50",
|
|
182
|
-
children: [/* @__PURE__ */
|
|
183
|
-
}),
|
|
222
|
+
children: [/* @__PURE__ */ h(ye, { size: 16 }), b("devportal.inviteMember", "Invite Member")]
|
|
223
|
+
}) : void 0,
|
|
184
224
|
children: [
|
|
185
|
-
|
|
225
|
+
Ne && /* @__PURE__ */ g("div", {
|
|
186
226
|
className: "rounded-lg border border-border-subtle bg-status-error-bg-subtle p-3 flex items-center gap-2 text-sm text-status-error-text",
|
|
187
227
|
children: [
|
|
188
|
-
/* @__PURE__ */
|
|
228
|
+
/* @__PURE__ */ h(m, {
|
|
189
229
|
size: 16,
|
|
190
230
|
className: "flex-shrink-0"
|
|
191
231
|
}),
|
|
192
|
-
|
|
193
|
-
/* @__PURE__ */
|
|
194
|
-
onClick: () =>
|
|
232
|
+
Ne,
|
|
233
|
+
/* @__PURE__ */ h("button", {
|
|
234
|
+
onClick: () => D(null),
|
|
195
235
|
className: "ml-auto text-status-error-text hover:text-status-error-text",
|
|
196
|
-
children:
|
|
236
|
+
children: b("devportal.dismiss", "Dismiss")
|
|
197
237
|
})
|
|
198
238
|
]
|
|
199
239
|
}),
|
|
200
|
-
|
|
240
|
+
Pe && /* @__PURE__ */ g("div", {
|
|
201
241
|
className: "rounded-lg border border-border-subtle bg-status-success-bg-subtle p-3 flex items-center gap-2 text-sm text-status-success-text",
|
|
202
242
|
children: [
|
|
203
|
-
/* @__PURE__ */
|
|
243
|
+
/* @__PURE__ */ h(m, {
|
|
204
244
|
size: 16,
|
|
205
245
|
className: "flex-shrink-0"
|
|
206
246
|
}),
|
|
207
|
-
|
|
208
|
-
/* @__PURE__ */
|
|
209
|
-
onClick: () =>
|
|
247
|
+
Pe,
|
|
248
|
+
/* @__PURE__ */ h("button", {
|
|
249
|
+
onClick: () => O(null),
|
|
210
250
|
className: "ml-auto text-status-success-text hover:text-status-success-text",
|
|
211
|
-
children:
|
|
251
|
+
children: b("devportal.dismiss", "Dismiss")
|
|
212
252
|
})
|
|
213
253
|
]
|
|
214
254
|
}),
|
|
215
|
-
(
|
|
255
|
+
(k.size > 0 || j.size > 0) && /* @__PURE__ */ g("div", {
|
|
216
256
|
className: "flex flex-wrap items-center gap-3 rounded-card border border-border-seam bg-bg-surface p-4",
|
|
217
|
-
children: [/* @__PURE__ */
|
|
257
|
+
children: [/* @__PURE__ */ g("span", {
|
|
218
258
|
className: "rounded-full bg-bg-sunken px-3 py-1 text-sm font-medium text-text-secondary",
|
|
219
259
|
children: [
|
|
220
|
-
|
|
260
|
+
k.size + j.size,
|
|
221
261
|
" ",
|
|
222
|
-
|
|
262
|
+
b("devportal.selected", "selected")
|
|
223
263
|
]
|
|
224
|
-
}), /* @__PURE__ */
|
|
225
|
-
onClick:
|
|
264
|
+
}), /* @__PURE__ */ h("button", {
|
|
265
|
+
onClick: dt,
|
|
226
266
|
className: "text-sm text-text-secondary hover:text-text-primary",
|
|
227
|
-
children:
|
|
267
|
+
children: b("devportal.clearAllSelections", "Clear all selections")
|
|
228
268
|
})]
|
|
229
269
|
}),
|
|
230
|
-
/* @__PURE__ */
|
|
231
|
-
title: `${
|
|
232
|
-
actions:
|
|
270
|
+
/* @__PURE__ */ h(a, {
|
|
271
|
+
title: `${b("devportal.members", "Members")} (${Qe})`,
|
|
272
|
+
actions: R.length > 0 && z ? /* @__PURE__ */ g("div", {
|
|
233
273
|
className: "flex flex-wrap items-center gap-2",
|
|
234
274
|
children: [
|
|
235
|
-
/* @__PURE__ */
|
|
236
|
-
onClick:
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
let e = await Promise.allSettled(Z.map((e) => U({ variables: {
|
|
240
|
-
id: e.id,
|
|
241
|
-
reason: void 0
|
|
242
|
-
} }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
|
|
243
|
-
k(`${T("devportal.suspended", "Suspended")} ${t} ${t === 1 ? T("devportal.memberLower", "member") : T("devportal.membersLower", "members")}${n > 0 ? ` • ${n} ${T("devportal.failed", "failed")}` : ""}`), j(/* @__PURE__ */ new Set());
|
|
244
|
-
},
|
|
245
|
-
disabled: Z.length === 0 || !C,
|
|
246
|
-
"aria-disabled": !C,
|
|
275
|
+
/* @__PURE__ */ g("button", {
|
|
276
|
+
onClick: gt,
|
|
277
|
+
disabled: Z.length === 0 || !W,
|
|
278
|
+
"aria-disabled": !W,
|
|
247
279
|
className: "rounded-md border border-status-warning-bg px-3 py-2 text-sm font-medium text-status-warning-text hover:bg-status-warning-bg-subtle disabled:cursor-not-allowed disabled:opacity-50",
|
|
248
|
-
children: [
|
|
280
|
+
children: [b("devportal.suspendSelected", "Suspend Selected"), Z.length > 0 ? ` (${Z.length})` : ""]
|
|
249
281
|
}),
|
|
250
|
-
/* @__PURE__ */
|
|
251
|
-
onClick:
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
let e = await Promise.allSettled(Q.map((e) => W({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
|
|
255
|
-
k(`${T("devportal.reactivated", "Reactivated")} ${t} ${t === 1 ? T("devportal.memberLower", "member") : T("devportal.membersLower", "members")}${n > 0 ? ` • ${n} ${T("devportal.failed", "failed")}` : ""}`), j(/* @__PURE__ */ new Set());
|
|
256
|
-
},
|
|
257
|
-
disabled: Q.length === 0 || !S,
|
|
258
|
-
"aria-disabled": !S,
|
|
282
|
+
/* @__PURE__ */ g("button", {
|
|
283
|
+
onClick: _t,
|
|
284
|
+
disabled: Q.length === 0 || !U,
|
|
285
|
+
"aria-disabled": !U,
|
|
259
286
|
className: "rounded-md border border-status-success-bg px-3 py-2 text-sm font-medium text-status-success-text hover:bg-status-success-bg-subtle disabled:cursor-not-allowed disabled:opacity-50",
|
|
260
|
-
children: [
|
|
287
|
+
children: [b("devportal.reactivateSelected", "Reactivate Selected"), Q.length > 0 ? ` (${Q.length})` : ""]
|
|
261
288
|
}),
|
|
262
|
-
/* @__PURE__ */
|
|
263
|
-
onClick: () =>
|
|
264
|
-
disabled: $.length === 0 || !
|
|
265
|
-
"aria-disabled": !
|
|
289
|
+
/* @__PURE__ */ g("button", {
|
|
290
|
+
onClick: () => N(!0),
|
|
291
|
+
disabled: $.length === 0 || !H,
|
|
292
|
+
"aria-disabled": !H,
|
|
266
293
|
className: "rounded-md border border-status-error-bg px-3 py-2 text-sm font-medium text-status-error-text hover:bg-status-error-bg-subtle disabled:cursor-not-allowed disabled:opacity-50",
|
|
267
|
-
children: [
|
|
294
|
+
children: [b("devportal.removeSelected", "Remove Selected"), $.length > 0 ? ` (${$.length})` : ""]
|
|
268
295
|
})
|
|
269
296
|
]
|
|
270
297
|
}) : null,
|
|
271
|
-
children:
|
|
272
|
-
data:
|
|
298
|
+
children: R.length > 0 ? /* @__PURE__ */ h(le, {
|
|
299
|
+
data: R,
|
|
273
300
|
keyField: "id",
|
|
274
301
|
columns: [
|
|
275
|
-
{
|
|
302
|
+
...z ? [{
|
|
276
303
|
key: "select",
|
|
277
|
-
header: /* @__PURE__ */
|
|
278
|
-
checked:
|
|
279
|
-
indeterminate:
|
|
280
|
-
onChange:
|
|
281
|
-
ariaLabel:
|
|
304
|
+
header: /* @__PURE__ */ h(c, {
|
|
305
|
+
checked: et,
|
|
306
|
+
indeterminate: tt,
|
|
307
|
+
onChange: pt,
|
|
308
|
+
ariaLabel: b("devportal.selectAllMembers", "Select all members")
|
|
282
309
|
}),
|
|
283
310
|
className: "w-12",
|
|
284
|
-
render: (e) => /* @__PURE__ */
|
|
311
|
+
render: (e) => /* @__PURE__ */ h("div", {
|
|
285
312
|
onClick: (e) => e.stopPropagation(),
|
|
286
|
-
children: /* @__PURE__ */
|
|
287
|
-
checked:
|
|
313
|
+
children: /* @__PURE__ */ h(c, {
|
|
314
|
+
checked: k.has(e.id),
|
|
288
315
|
disabled: e.role === "OWNER",
|
|
289
|
-
onChange: (t) =>
|
|
290
|
-
ariaLabel: `Select member ${
|
|
316
|
+
onChange: (t) => ft(e.id, t),
|
|
317
|
+
ariaLabel: `Select member ${y(e)}`
|
|
291
318
|
})
|
|
292
319
|
})
|
|
293
|
-
},
|
|
320
|
+
}] : [],
|
|
294
321
|
{
|
|
295
322
|
key: "email",
|
|
296
|
-
header:
|
|
323
|
+
header: b("devportal.memberColumn", "Member"),
|
|
297
324
|
render: (e) => {
|
|
298
|
-
let t =
|
|
299
|
-
return /* @__PURE__ */
|
|
325
|
+
let t = y(e);
|
|
326
|
+
return /* @__PURE__ */ g("div", {
|
|
300
327
|
className: "flex items-center gap-3",
|
|
301
|
-
children: [/* @__PURE__ */
|
|
328
|
+
children: [/* @__PURE__ */ h("div", {
|
|
302
329
|
className: "flex h-8 w-8 items-center justify-center rounded-full bg-action-primary-bg/10 text-primary text-sm font-medium",
|
|
303
330
|
children: t.charAt(0).toUpperCase()
|
|
304
|
-
}), /* @__PURE__ */
|
|
331
|
+
}), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("p", {
|
|
305
332
|
className: "font-medium",
|
|
306
333
|
children: t
|
|
307
|
-
}), /* @__PURE__ */
|
|
334
|
+
}), /* @__PURE__ */ g("p", {
|
|
308
335
|
className: "text-xs text-text-secondary",
|
|
309
336
|
children: [
|
|
310
|
-
|
|
337
|
+
b("devportal.joined", "Joined"),
|
|
311
338
|
" ",
|
|
312
|
-
|
|
339
|
+
me(new Date(e.joinedAt), "MMM d, yyyy")
|
|
313
340
|
]
|
|
314
341
|
})] })]
|
|
315
342
|
});
|
|
@@ -317,17 +344,17 @@ var v = () => {
|
|
|
317
344
|
},
|
|
318
345
|
{
|
|
319
346
|
key: "role",
|
|
320
|
-
header:
|
|
321
|
-
render: (e) => /* @__PURE__ */
|
|
347
|
+
header: b("devportal.roleColumn", "Role"),
|
|
348
|
+
render: (e) => /* @__PURE__ */ g("div", {
|
|
322
349
|
className: "flex items-center gap-2",
|
|
323
|
-
children: [/* @__PURE__ */
|
|
350
|
+
children: [/* @__PURE__ */ h(xe, {
|
|
324
351
|
size: 14,
|
|
325
352
|
className: "text-text-secondary"
|
|
326
|
-
}), e.role === "OWNER" ? /* @__PURE__ */
|
|
353
|
+
}), e.role === "OWNER" || !V ? /* @__PURE__ */ h("span", { children: o[e.role] ?? e.role }) : /* @__PURE__ */ h("select", {
|
|
327
354
|
value: e.role,
|
|
328
|
-
onChange: (t) => void
|
|
355
|
+
onChange: (t) => void st(e.id, t.target.value),
|
|
329
356
|
className: "rounded-md border border-border-subtle bg-bg-surface px-2 py-1 text-xs text-text-primary",
|
|
330
|
-
children: Object.entries(o).filter(([e]) => e !== "OWNER").map(([e, t]) => /* @__PURE__ */
|
|
357
|
+
children: Object.entries(o).filter(([e]) => e !== "OWNER").map(([e, t]) => /* @__PURE__ */ h("option", {
|
|
331
358
|
value: e,
|
|
332
359
|
children: t
|
|
333
360
|
}, e))
|
|
@@ -336,122 +363,110 @@ var v = () => {
|
|
|
336
363
|
},
|
|
337
364
|
{
|
|
338
365
|
key: "status",
|
|
339
|
-
header:
|
|
340
|
-
render: (e) => e.isSuspended ? /* @__PURE__ */
|
|
366
|
+
header: b("devportal.statusColumn", "Status"),
|
|
367
|
+
render: (e) => e.isSuspended ? /* @__PURE__ */ h(s, {
|
|
341
368
|
status: "SUSPENDED",
|
|
342
369
|
type: "app"
|
|
343
|
-
}) : e.isActive ? /* @__PURE__ */
|
|
370
|
+
}) : e.isActive ? /* @__PURE__ */ h(s, {
|
|
344
371
|
status: "ACTIVE",
|
|
345
372
|
type: "app"
|
|
346
|
-
}) : /* @__PURE__ */
|
|
373
|
+
}) : /* @__PURE__ */ h(s, {
|
|
347
374
|
status: "INACTIVE",
|
|
348
375
|
type: "app"
|
|
349
376
|
})
|
|
350
377
|
},
|
|
351
|
-
{
|
|
378
|
+
...z ? [{
|
|
352
379
|
key: "actions",
|
|
353
380
|
header: "",
|
|
354
381
|
className: "w-32",
|
|
355
|
-
render: (e) => e.role !== "OWNER" && /* @__PURE__ */
|
|
382
|
+
render: (e) => e.role !== "OWNER" && /* @__PURE__ */ g("div", {
|
|
356
383
|
className: "flex gap-1",
|
|
357
384
|
children: [
|
|
358
|
-
e.isSuspended ? /* @__PURE__ */
|
|
385
|
+
e.isSuspended ? /* @__PURE__ */ h("button", {
|
|
359
386
|
className: "text-xs text-status-success-text hover:underline disabled:opacity-50",
|
|
360
|
-
disabled: !
|
|
361
|
-
"aria-disabled": !
|
|
362
|
-
title:
|
|
363
|
-
onClick: () =>
|
|
364
|
-
children:
|
|
365
|
-
}) : /* @__PURE__ */
|
|
387
|
+
disabled: !U,
|
|
388
|
+
"aria-disabled": !U,
|
|
389
|
+
title: b("devportal.reactivateMember", "Reactivate member"),
|
|
390
|
+
onClick: () => ot(e.id),
|
|
391
|
+
children: b("devportal.reactivate", "Reactivate")
|
|
392
|
+
}) : /* @__PURE__ */ h("button", {
|
|
366
393
|
className: "text-xs text-status-warning-text hover:underline disabled:opacity-50",
|
|
367
|
-
disabled: !
|
|
368
|
-
"aria-disabled": !
|
|
369
|
-
title:
|
|
370
|
-
onClick: () =>
|
|
371
|
-
children:
|
|
394
|
+
disabled: !W,
|
|
395
|
+
"aria-disabled": !W,
|
|
396
|
+
title: b("devportal.suspendMember", "Suspend member"),
|
|
397
|
+
onClick: () => at(e.id),
|
|
398
|
+
children: b("devportal.suspend", "Suspend")
|
|
372
399
|
}),
|
|
373
|
-
/* @__PURE__ */
|
|
400
|
+
/* @__PURE__ */ h("button", {
|
|
374
401
|
className: "text-xs text-status-error-text hover:underline disabled:opacity-50",
|
|
375
|
-
disabled: !
|
|
376
|
-
"aria-disabled": !
|
|
377
|
-
title:
|
|
378
|
-
onClick: () =>
|
|
379
|
-
children:
|
|
402
|
+
disabled: !H,
|
|
403
|
+
"aria-disabled": !H,
|
|
404
|
+
title: b("devportal.removeMember", "Remove member"),
|
|
405
|
+
onClick: () => it(e.id),
|
|
406
|
+
children: b("devportal.remove", "Remove")
|
|
380
407
|
}),
|
|
381
|
-
/* @__PURE__ */
|
|
408
|
+
/* @__PURE__ */ h("button", {
|
|
382
409
|
className: "text-xs text-primary hover:underline disabled:opacity-50",
|
|
383
|
-
disabled: !
|
|
384
|
-
"aria-disabled": !
|
|
385
|
-
title:
|
|
386
|
-
onClick: () =>
|
|
387
|
-
children:
|
|
410
|
+
disabled: !V,
|
|
411
|
+
"aria-disabled": !V,
|
|
412
|
+
title: b("devportal.transferOwnership", "Transfer ownership"),
|
|
413
|
+
onClick: () => I(e),
|
|
414
|
+
children: b("devportal.makeOwner", "Make Owner")
|
|
388
415
|
})
|
|
389
416
|
]
|
|
390
417
|
})
|
|
391
|
-
}
|
|
418
|
+
}] : []
|
|
392
419
|
]
|
|
393
|
-
}) : /* @__PURE__ */
|
|
420
|
+
}) : /* @__PURE__ */ h(t, {
|
|
394
421
|
illustration: "empty-people",
|
|
395
|
-
title:
|
|
396
|
-
description:
|
|
422
|
+
title: b("devportal.noMembers", "No members"),
|
|
423
|
+
description: b("devportal.inviteTeamMembersToCollaborate", "Invite team members to collaborate")
|
|
397
424
|
})
|
|
398
425
|
}),
|
|
399
|
-
|
|
400
|
-
title: `${
|
|
401
|
-
actions: /* @__PURE__ */
|
|
426
|
+
z && K.length > 0 && /* @__PURE__ */ h(a, {
|
|
427
|
+
title: `${b("devportal.pendingInvitations", "Pending Invitations")} (${$e})`,
|
|
428
|
+
actions: /* @__PURE__ */ g("div", {
|
|
402
429
|
className: "flex flex-wrap items-center gap-2",
|
|
403
|
-
children: [/* @__PURE__ */
|
|
404
|
-
onClick:
|
|
405
|
-
|
|
406
|
-
O(null);
|
|
407
|
-
let e = await Promise.allSettled(Y.map((e) => Ve({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
|
|
408
|
-
k(`${T("devportal.resent", "Resent")} ${t} ${t === 1 ? T("devportal.invitationLower", "invitation") : T("devportal.invitationsLower", "invitations")}${n > 0 ? ` • ${n} ${T("devportal.failed", "failed")}` : ""}`), N(/* @__PURE__ */ new Set());
|
|
409
|
-
},
|
|
410
|
-
disabled: Y.length === 0,
|
|
430
|
+
children: [/* @__PURE__ */ g("button", {
|
|
431
|
+
onClick: yt,
|
|
432
|
+
disabled: J.length === 0,
|
|
411
433
|
className: "rounded-md border border-primary/30 px-3 py-2 text-sm font-medium text-primary hover:bg-action-primary-bg/5 disabled:cursor-not-allowed disabled:opacity-50",
|
|
412
|
-
children: [
|
|
413
|
-
}), /* @__PURE__ */
|
|
414
|
-
onClick: () =>
|
|
415
|
-
disabled:
|
|
434
|
+
children: [b("devportal.resendSelected", "Resend Selected"), J.length > 0 ? ` (${J.length})` : ""]
|
|
435
|
+
}), /* @__PURE__ */ g("button", {
|
|
436
|
+
onClick: () => P(!0),
|
|
437
|
+
disabled: J.length === 0,
|
|
416
438
|
className: "rounded-md border border-status-error-bg px-3 py-2 text-sm font-medium text-status-error-text hover:bg-status-error-bg-subtle disabled:cursor-not-allowed disabled:opacity-50",
|
|
417
|
-
children: [
|
|
439
|
+
children: [b("devportal.cancelSelected", "Cancel Selected"), J.length > 0 ? ` (${J.length})` : ""]
|
|
418
440
|
})]
|
|
419
441
|
}),
|
|
420
|
-
children: /* @__PURE__ */
|
|
421
|
-
data:
|
|
442
|
+
children: /* @__PURE__ */ h(le, {
|
|
443
|
+
data: K,
|
|
422
444
|
keyField: "id",
|
|
423
445
|
columns: [
|
|
424
446
|
{
|
|
425
447
|
key: "select",
|
|
426
|
-
header: /* @__PURE__ */
|
|
427
|
-
checked:
|
|
428
|
-
indeterminate:
|
|
429
|
-
onChange:
|
|
430
|
-
|
|
431
|
-
let n = new Set(t);
|
|
432
|
-
return q.forEach((t) => {
|
|
433
|
-
e ? n.add(t.id) : n.delete(t.id);
|
|
434
|
-
}), n;
|
|
435
|
-
});
|
|
436
|
-
},
|
|
437
|
-
ariaLabel: T("devportal.selectAllInvitations", "Select all invitations")
|
|
448
|
+
header: /* @__PURE__ */ h(c, {
|
|
449
|
+
checked: X,
|
|
450
|
+
indeterminate: nt,
|
|
451
|
+
onChange: ht,
|
|
452
|
+
ariaLabel: b("devportal.selectAllInvitations", "Select all invitations")
|
|
438
453
|
}),
|
|
439
454
|
className: "w-12",
|
|
440
|
-
render: (e) => /* @__PURE__ */
|
|
455
|
+
render: (e) => /* @__PURE__ */ h("div", {
|
|
441
456
|
onClick: (e) => e.stopPropagation(),
|
|
442
|
-
children: /* @__PURE__ */
|
|
443
|
-
checked:
|
|
444
|
-
onChange: (t) =>
|
|
457
|
+
children: /* @__PURE__ */ h(c, {
|
|
458
|
+
checked: j.has(e.id),
|
|
459
|
+
onChange: (t) => mt(e.id, t),
|
|
445
460
|
ariaLabel: `Select invitation ${e.invitedEmail}`
|
|
446
461
|
})
|
|
447
462
|
})
|
|
448
463
|
},
|
|
449
464
|
{
|
|
450
465
|
key: "invitedEmail",
|
|
451
|
-
header:
|
|
452
|
-
render: (e) => /* @__PURE__ */
|
|
466
|
+
header: b("devportal.emailColumn", "Email"),
|
|
467
|
+
render: (e) => /* @__PURE__ */ g("div", {
|
|
453
468
|
className: "flex items-center gap-2",
|
|
454
|
-
children: [/* @__PURE__ */
|
|
469
|
+
children: [/* @__PURE__ */ h(ve, {
|
|
455
470
|
size: 16,
|
|
456
471
|
className: "text-text-secondary"
|
|
457
472
|
}), e.invitedEmail]
|
|
@@ -459,122 +474,122 @@ var v = () => {
|
|
|
459
474
|
},
|
|
460
475
|
{
|
|
461
476
|
key: "role",
|
|
462
|
-
header:
|
|
477
|
+
header: b("devportal.invitedRoleColumn", "Invited Role"),
|
|
463
478
|
render: (e) => o[e.role] ?? e.role
|
|
464
479
|
},
|
|
465
480
|
{
|
|
466
481
|
key: "status",
|
|
467
|
-
header:
|
|
468
|
-
render: (e) => /* @__PURE__ */
|
|
482
|
+
header: b("devportal.statusColumn", "Status"),
|
|
483
|
+
render: (e) => /* @__PURE__ */ h(s, {
|
|
469
484
|
status: e.status,
|
|
470
485
|
type: "invitation"
|
|
471
486
|
})
|
|
472
487
|
},
|
|
473
488
|
{
|
|
474
489
|
key: "expiresAt",
|
|
475
|
-
header:
|
|
476
|
-
render: (e) =>
|
|
490
|
+
header: b("devportal.expiresColumn", "Expires"),
|
|
491
|
+
render: (e) => me(new Date(e.expiresAt), "MMM d, yyyy")
|
|
477
492
|
},
|
|
478
493
|
{
|
|
479
494
|
key: "actions",
|
|
480
495
|
header: "",
|
|
481
496
|
className: "w-24",
|
|
482
|
-
render: (e) => /* @__PURE__ */
|
|
497
|
+
render: (e) => /* @__PURE__ */ g("div", {
|
|
483
498
|
className: "flex gap-1",
|
|
484
|
-
children: [/* @__PURE__ */
|
|
499
|
+
children: [/* @__PURE__ */ h("button", {
|
|
485
500
|
className: "rounded p-1 hover:bg-bg-sunken",
|
|
486
|
-
title:
|
|
487
|
-
onClick: () =>
|
|
488
|
-
children: /* @__PURE__ */
|
|
489
|
-
}), /* @__PURE__ */
|
|
501
|
+
title: b("devportal.resend", "Resend"),
|
|
502
|
+
onClick: () => ut(e.id),
|
|
503
|
+
children: /* @__PURE__ */ h(be, { size: 14 })
|
|
504
|
+
}), /* @__PURE__ */ h("button", {
|
|
490
505
|
className: "rounded p-1 hover:bg-bg-sunken text-status-error-text",
|
|
491
|
-
title:
|
|
492
|
-
onClick: () =>
|
|
493
|
-
children: /* @__PURE__ */
|
|
506
|
+
title: b("devportal.cancel", "Cancel"),
|
|
507
|
+
onClick: () => lt(e.id),
|
|
508
|
+
children: /* @__PURE__ */ h(Se, { size: 14 })
|
|
494
509
|
})]
|
|
495
510
|
})
|
|
496
511
|
}
|
|
497
512
|
]
|
|
498
513
|
})
|
|
499
514
|
}),
|
|
500
|
-
|
|
501
|
-
open:
|
|
502
|
-
onOpenChange:
|
|
503
|
-
onConfirm:
|
|
504
|
-
title:
|
|
505
|
-
confirmLabel:
|
|
506
|
-
children: /* @__PURE__ */
|
|
515
|
+
x && /* @__PURE__ */ h(l, {
|
|
516
|
+
open: x,
|
|
517
|
+
onOpenChange: S,
|
|
518
|
+
onConfirm: rt,
|
|
519
|
+
title: b("devportal.inviteTeamMember", "Invite Team Member"),
|
|
520
|
+
confirmLabel: Ve ? b("devportal.sendingDots", "Sending...") : b("devportal.sendInvitation", "Send Invitation"),
|
|
521
|
+
children: /* @__PURE__ */ g("div", {
|
|
507
522
|
className: "space-y-4",
|
|
508
|
-
children: [
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
523
|
+
children: [
|
|
524
|
+
/* @__PURE__ */ h(ue, {
|
|
525
|
+
label: b("devportal.emailAddress", "Email Address"),
|
|
526
|
+
type: "email",
|
|
527
|
+
value: C,
|
|
528
|
+
onChange: (e) => w(e.target.value),
|
|
529
|
+
placeholder: "colleague@example.com",
|
|
530
|
+
hint: b("devportal.mustBeExistingVerifiedUser", "Must be an existing verified user"),
|
|
531
|
+
required: !0
|
|
532
|
+
}),
|
|
533
|
+
/* @__PURE__ */ h(de, {
|
|
534
|
+
label: b("devportal.roleColumn", "Role"),
|
|
535
|
+
value: T,
|
|
536
|
+
onChange: (e) => E(e.target.value),
|
|
537
|
+
options: [
|
|
538
|
+
{
|
|
539
|
+
value: "ADMIN",
|
|
540
|
+
label: b("devportal.adminFullAccess", "Admin - Full access")
|
|
541
|
+
},
|
|
542
|
+
{
|
|
543
|
+
value: "DEVELOPER",
|
|
544
|
+
label: b("devportal.developerCreateAndManageApps", "Developer - Create and manage apps")
|
|
545
|
+
},
|
|
546
|
+
{
|
|
547
|
+
value: "VIEWER",
|
|
548
|
+
label: b("devportal.viewerReadOnlyAccess", "Viewer - Read-only access")
|
|
549
|
+
}
|
|
550
|
+
],
|
|
551
|
+
required: !0
|
|
552
|
+
}),
|
|
553
|
+
/* @__PURE__ */ h(fe, {
|
|
554
|
+
label: b("devportal.personalMessage", "Personal Message"),
|
|
555
|
+
value: je,
|
|
556
|
+
onChange: (e) => Me(e.target.value),
|
|
557
|
+
placeholder: b("devportal.personalMessagePlaceholder", "Add a short note to include in the invitation email"),
|
|
558
|
+
rows: 3
|
|
559
|
+
})
|
|
560
|
+
]
|
|
536
561
|
})
|
|
537
562
|
}),
|
|
538
|
-
/* @__PURE__ */
|
|
539
|
-
open:
|
|
540
|
-
onOpenChange:
|
|
541
|
-
onConfirm:
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
},
|
|
547
|
-
title: T("devportal.removeSelectedMembers", "Remove selected members"),
|
|
548
|
-
description: `${T("devportal.removeNSelectedMembers", "Remove")} ${$.length} ${T("devportal.selectedMembersFromOrg", "selected member(s) from this organization? This action cannot be undone.")}`,
|
|
549
|
-
confirmLabel: T("devportal.removeMembers", "Remove Members"),
|
|
550
|
-
cancelLabel: T("devportal.cancel", "Cancel"),
|
|
563
|
+
/* @__PURE__ */ h(l, {
|
|
564
|
+
open: Fe,
|
|
565
|
+
onOpenChange: N,
|
|
566
|
+
onConfirm: vt,
|
|
567
|
+
title: b("devportal.removeSelectedMembers", "Remove selected members"),
|
|
568
|
+
description: `${b("devportal.removeNSelectedMembers", "Remove")} ${$.length} ${b("devportal.selectedMembersFromOrg", "selected member(s) from this organization? This action cannot be undone.")}`,
|
|
569
|
+
confirmLabel: b("devportal.removeMembers", "Remove Members"),
|
|
570
|
+
cancelLabel: b("devportal.cancel", "Cancel"),
|
|
551
571
|
variant: "danger"
|
|
552
572
|
}),
|
|
553
|
-
/* @__PURE__ */
|
|
554
|
-
open:
|
|
555
|
-
onOpenChange:
|
|
556
|
-
onConfirm:
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
},
|
|
562
|
-
title: T("devportal.cancelSelectedInvitations", "Cancel selected invitations"),
|
|
563
|
-
description: `${T("devportal.cancelNPendingInvitations", "Cancel")} ${Y.length} ${T("devportal.pendingInvitationsQuestion", "pending invitation(s)?")}`,
|
|
564
|
-
confirmLabel: T("devportal.cancelInvitations", "Cancel Invitations"),
|
|
565
|
-
cancelLabel: T("devportal.keepInvitations", "Keep Invitations"),
|
|
573
|
+
/* @__PURE__ */ h(l, {
|
|
574
|
+
open: Ie,
|
|
575
|
+
onOpenChange: P,
|
|
576
|
+
onConfirm: bt,
|
|
577
|
+
title: b("devportal.cancelSelectedInvitations", "Cancel selected invitations"),
|
|
578
|
+
description: `${b("devportal.cancelNPendingInvitations", "Cancel")} ${J.length} ${b("devportal.pendingInvitationsQuestion", "pending invitation(s)?")}`,
|
|
579
|
+
confirmLabel: b("devportal.cancelInvitations", "Cancel Invitations"),
|
|
580
|
+
cancelLabel: b("devportal.keepInvitations", "Keep Invitations"),
|
|
566
581
|
variant: "danger"
|
|
567
582
|
}),
|
|
568
|
-
/* @__PURE__ */
|
|
569
|
-
open:
|
|
583
|
+
/* @__PURE__ */ h(l, {
|
|
584
|
+
open: F !== null,
|
|
570
585
|
onOpenChange: (e) => {
|
|
571
|
-
e ||
|
|
586
|
+
e || I(null);
|
|
572
587
|
},
|
|
573
|
-
onConfirm:
|
|
574
|
-
title:
|
|
575
|
-
description:
|
|
576
|
-
confirmLabel:
|
|
577
|
-
cancelLabel:
|
|
588
|
+
onConfirm: ct,
|
|
589
|
+
title: b("devportal.transferOwnership", "Transfer ownership"),
|
|
590
|
+
description: F ? b("devportal.transferOwnershipConfirmation", `Transfer organization ownership to ${y(F)}?`) : void 0,
|
|
591
|
+
confirmLabel: b("devportal.makeOwner", "Make Owner"),
|
|
592
|
+
cancelLabel: b("devportal.cancel", "Cancel"),
|
|
578
593
|
variant: "warning"
|
|
579
594
|
})
|
|
580
595
|
]
|
|
@@ -582,6 +597,6 @@ var v = () => {
|
|
|
582
597
|
});
|
|
583
598
|
};
|
|
584
599
|
//#endregion
|
|
585
|
-
export {
|
|
600
|
+
export { _ as OrganizationMembersPage };
|
|
586
601
|
|
|
587
602
|
//# sourceMappingURL=OrganizationMembersPage.js.map
|