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