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