@burdenoff/microfe-devportal 2026.828.1 → 2026.830.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/dist/devportal/AdminDevportalRoot.d.ts.map +1 -1
  2. package/dist/devportal/AdminDevportalRoot.js +16 -19
  3. package/dist/devportal/AdminDevportalRoot.js.map +1 -1
  4. package/dist/devportal/DevportalRoot.d.ts.map +1 -1
  5. package/dist/devportal/DevportalRoot.js +36 -39
  6. package/dist/devportal/DevportalRoot.js.map +1 -1
  7. package/dist/devportal/components/AppCard.js +41 -41
  8. package/dist/devportal/components/ConfirmDialog.d.ts.map +1 -1
  9. package/dist/devportal/components/ConfirmDialog.js +19 -22
  10. package/dist/devportal/components/ConfirmDialog.js.map +1 -1
  11. package/dist/devportal/components/DataTable.d.ts.map +1 -1
  12. package/dist/devportal/components/DataTable.js +31 -34
  13. package/dist/devportal/components/DataTable.js.map +1 -1
  14. package/dist/devportal/components/FeatureFlaggedRoute.js +8 -8
  15. package/dist/devportal/components/FormField.d.ts.map +1 -1
  16. package/dist/devportal/components/FormField.js +26 -32
  17. package/dist/devportal/components/FormField.js.map +1 -1
  18. package/dist/devportal/components/GrantDelegationModal.js +64 -64
  19. package/dist/devportal/components/GrantDelegationModal.js.map +1 -1
  20. package/dist/devportal/components/LoadingState.d.ts.map +1 -1
  21. package/dist/devportal/components/LoadingState.js +5 -8
  22. package/dist/devportal/components/LoadingState.js.map +1 -1
  23. package/dist/devportal/components/PageLayout.d.ts.map +1 -1
  24. package/dist/devportal/components/PageLayout.js +10 -13
  25. package/dist/devportal/components/PageLayout.js.map +1 -1
  26. package/dist/devportal/components/PermissionGuard.d.ts.map +1 -1
  27. package/dist/devportal/components/PermissionGuard.js +11 -14
  28. package/dist/devportal/components/PermissionGuard.js.map +1 -1
  29. package/dist/devportal/components/SecretDisplay.d.ts.map +1 -1
  30. package/dist/devportal/components/SecretDisplay.js +24 -30
  31. package/dist/devportal/components/SecretDisplay.js.map +1 -1
  32. package/dist/devportal/components/SectionNav.d.ts.map +1 -1
  33. package/dist/devportal/components/SectionNav.js +24 -27
  34. package/dist/devportal/components/SectionNav.js.map +1 -1
  35. package/dist/devportal/components/StatusBadge.d.ts.map +1 -1
  36. package/dist/devportal/components/StatusBadge.js +24 -33
  37. package/dist/devportal/components/StatusBadge.js.map +1 -1
  38. package/dist/devportal/index.d.ts +1 -0
  39. package/dist/devportal/index.d.ts.map +1 -1
  40. package/dist/devportal/index.js +1 -0
  41. package/dist/devportal/pages/AdminReviewPage.js +172 -172
  42. package/dist/devportal/pages/AnalyticsDashboardPage.js +43 -43
  43. package/dist/devportal/pages/AnalyticsDashboardPage.js.map +1 -1
  44. package/dist/devportal/pages/ApiKeysPage.js +119 -119
  45. package/dist/devportal/pages/ApiKeysPage.js.map +1 -1
  46. package/dist/devportal/pages/AppLogsPage.js +45 -45
  47. package/dist/devportal/pages/ApplicationDetailPage.js +607 -607
  48. package/dist/devportal/pages/ApplicationVersionsPage.js +13 -13
  49. package/dist/devportal/pages/ApplicationsPage.d.ts.map +1 -1
  50. package/dist/devportal/pages/ApplicationsPage.js +104 -101
  51. package/dist/devportal/pages/ApplicationsPage.js.map +1 -1
  52. package/dist/devportal/pages/CreateApiKeyPage.js +45 -45
  53. package/dist/devportal/pages/CreateApplicationPage.js +38 -38
  54. package/dist/devportal/pages/CreateApplicationPage.js.map +1 -1
  55. package/dist/devportal/pages/CreateOAuthClientPage.js +52 -52
  56. package/dist/devportal/pages/CreateOrganizationPage.js +26 -26
  57. package/dist/devportal/pages/CreateWebhookPage.d.ts.map +1 -1
  58. package/dist/devportal/pages/CreateWebhookPage.js +48 -48
  59. package/dist/devportal/pages/CreateWebhookPage.js.map +1 -1
  60. package/dist/devportal/pages/DashboardPage.d.ts.map +1 -1
  61. package/dist/devportal/pages/DashboardPage.js +66 -72
  62. package/dist/devportal/pages/DashboardPage.js.map +1 -1
  63. package/dist/devportal/pages/DelegationsPage.js +174 -174
  64. package/dist/devportal/pages/DocumentationPage.js +93 -93
  65. package/dist/devportal/pages/EditApplicationPage.js +14 -14
  66. package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
  67. package/dist/devportal/pages/ListingPreviewPage.js +76 -76
  68. package/dist/devportal/pages/OAuthClientDetailPage.js +75 -75
  69. package/dist/devportal/pages/OAuthClientDetailPage.js.map +1 -1
  70. package/dist/devportal/pages/OAuthClientsPage.js +64 -64
  71. package/dist/devportal/pages/OrganizationDetailPage.js +189 -189
  72. package/dist/devportal/pages/OrganizationDetailPage.js.map +1 -1
  73. package/dist/devportal/pages/OrganizationMembersPage.js +10 -10
  74. package/dist/devportal/pages/OrganizationsPage.d.ts.map +1 -1
  75. package/dist/devportal/pages/OrganizationsPage.js +163 -154
  76. package/dist/devportal/pages/OrganizationsPage.js.map +1 -1
  77. package/dist/devportal/pages/PublishPage.js +104 -104
  78. package/dist/devportal/pages/PublishPage.js.map +1 -1
  79. package/dist/devportal/pages/PublisherProfilePage.js +55 -55
  80. package/dist/devportal/pages/ResourcesPage.js +60 -60
  81. package/dist/devportal/pages/RevenueDashboardPage.js +60 -60
  82. package/dist/devportal/pages/RevenueDashboardPage.js.map +1 -1
  83. package/dist/devportal/pages/SellerDashboardPage.js +83 -83
  84. package/dist/devportal/pages/SellerItemsPage.js +163 -163
  85. package/dist/devportal/pages/SellerItemsPage.js.map +1 -1
  86. package/dist/devportal/pages/SellerOrdersPage.js +63 -63
  87. package/dist/devportal/pages/SettingsPage.js +21 -21
  88. package/dist/devportal/pages/SetupPage.js +183 -183
  89. package/dist/devportal/pages/SetupPage.js.map +1 -1
  90. package/dist/devportal/pages/StoreSubmissionPage.js +5 -5
  91. package/dist/devportal/pages/WebhookDetailPage.js +123 -123
  92. package/dist/devportal/pages/WebhookDetailPage.js.map +1 -1
  93. package/dist/devportal/pages/WebhooksPage.js +118 -118
  94. package/dist/devportal/pages/WebhooksPage.js.map +1 -1
  95. package/dist/devportal/utils/i18n.d.ts +9 -2
  96. package/dist/devportal/utils/i18n.d.ts.map +1 -1
  97. package/dist/devportal/utils/i18n.js +13 -10
  98. package/dist/devportal/utils/i18n.js.map +1 -1
  99. package/dist/index.js +2 -1
  100. package/dist/translations/en.d.ts +1251 -0
  101. package/dist/translations/en.d.ts.map +1 -0
  102. package/dist/translations/en.js +1235 -0
  103. package/dist/translations/en.js.map +1 -0
  104. package/package.json +1 -1
@@ -16,16 +16,16 @@ import { DEVPORTAL_PERMISSIONS as pe } from "../constants/permissions.js";
16
16
  import me from "../../node_modules/date-fns/format.js";
17
17
  import { usePackageUpload as he } from "../hooks/usePackageUpload.js";
18
18
  import { useCallback as o, useEffect as ge, useMemo as s, useRef as c, useState as l } from "react";
19
- import { useI18n as _e } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
20
- import { AlertCircle as u, Archive as ve, CheckCircle as ye, Clock as be, Loader2 as d, Package as xe, Plus as Se, Send as f, Upload as p, XCircle as Ce } from "lucide-react";
21
- import { useParams as we } from "react-router";
19
+ import { AlertCircle as u, Archive as _e, CheckCircle as ve, Clock as ye, Loader2 as d, Package as be, Plus as xe, Send as f, Upload as p, XCircle as Se } from "lucide-react";
20
+ import { useParams as Ce } from "react-router";
22
21
  import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
22
+ import { useI18n as we } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
23
23
  //#region src/devportal/pages/ApplicationVersionsPage.tsx
24
24
  var Te = () => {
25
- let { t: Te } = _e(), _ = (e, t) => {
25
+ let { t: Te } = we(), _ = (e, t) => {
26
26
  let n = Te(e);
27
27
  return n === e ? t : n;
28
- }, { allowed: v } = fe(pe.APP_VERSION_CREATE), { allowed: y } = fe(pe.APP_VERSION_PUBLISH), { allowed: b } = fe(pe.APP_VERSION_DEPRECATE), { appId: x } = we(), { workspacesGatewayUrl: Ee, authToken: De, workspaceId: Oe, getWorkspaceToken: ke } = e(), { upload: S, uploading: C, progress: Ae, error: w } = he(Ee, De, Oe, ke), je = c(null), Me = c(null), Ne = c(null), Pe = c(null), [Fe, T] = l(null), [Ie, E] = l(null), [Le, D] = l(!1), [O, k] = l(null), [A, j] = l({
28
+ }, { allowed: v } = fe(pe.APP_VERSION_CREATE), { allowed: y } = fe(pe.APP_VERSION_PUBLISH), { allowed: b } = fe(pe.APP_VERSION_DEPRECATE), { appId: x } = Ce(), { workspacesGatewayUrl: Ee, authToken: De, workspaceId: Oe, getWorkspaceToken: ke } = e(), { upload: S, uploading: C, progress: Ae, error: w } = he(Ee, De, Oe, ke), je = c(null), Me = c(null), Ne = c(null), Pe = c(null), [Fe, T] = l(null), [Ie, E] = l(null), [Le, D] = l(!1), [O, k] = l(null), [A, j] = l({
29
29
  version: "",
30
30
  releaseNotes: "",
31
31
  changelog: "",
@@ -208,22 +208,22 @@ var Te = () => {
208
208
  M(e instanceof Error ? e.message : _("devportal.versionRejectFailed", "Failed to reject version"));
209
209
  }
210
210
  }
211
- }, gt = (e) => e.status === "published" && e.isLatest ? /* @__PURE__ */ h(ye, {
211
+ }, gt = (e) => e.status === "published" && e.isLatest ? /* @__PURE__ */ h(ve, {
212
212
  size: 16,
213
213
  className: "text-status-success-text"
214
214
  }) : e.status === "pending_review" ? /* @__PURE__ */ h(f, {
215
215
  size: 16,
216
216
  className: "text-status-info-text"
217
- }) : e.status === "rejected" ? /* @__PURE__ */ h(Ce, {
217
+ }) : e.status === "rejected" ? /* @__PURE__ */ h(Se, {
218
218
  size: 16,
219
219
  className: "text-status-error-text"
220
- }) : e.status === "draft" ? /* @__PURE__ */ h(be, {
220
+ }) : e.status === "draft" ? /* @__PURE__ */ h(ye, {
221
221
  size: 16,
222
222
  className: "text-status-warning-text"
223
- }) : e.status === "deprecated" ? /* @__PURE__ */ h(ve, {
223
+ }) : e.status === "deprecated" ? /* @__PURE__ */ h(_e, {
224
224
  size: 16,
225
225
  className: "text-text-secondary"
226
- }) : /* @__PURE__ */ h(xe, {
226
+ }) : /* @__PURE__ */ h(be, {
227
227
  size: 16,
228
228
  className: "text-accent-blue"
229
229
  }), _t = (e, t) => {
@@ -276,7 +276,7 @@ var Te = () => {
276
276
  disabled: !v,
277
277
  "aria-disabled": !v,
278
278
  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",
279
- children: [/* @__PURE__ */ h(Se, { size: 16 }), _("devportal.newVersion", "New Version")]
279
+ children: [/* @__PURE__ */ h(xe, { size: 16 }), _("devportal.newVersion", "New Version")]
280
280
  }),
281
281
  children: [
282
282
  Re && /* @__PURE__ */ g("div", {
@@ -297,7 +297,7 @@ var Te = () => {
297
297
  ze && /* @__PURE__ */ g("div", {
298
298
  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",
299
299
  children: [
300
- /* @__PURE__ */ h(ye, {
300
+ /* @__PURE__ */ h(ve, {
301
301
  size: 16,
302
302
  className: "flex-shrink-0"
303
303
  }),
@@ -528,7 +528,7 @@ var Te = () => {
528
528
  P(null), D(!0);
529
529
  },
530
530
  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",
531
- children: [/* @__PURE__ */ h(Se, { size: 16 }), _("devportal.createVersion", "Create Version")]
531
+ children: [/* @__PURE__ */ h(xe, { size: 16 }), _("devportal.createVersion", "Create Version")]
532
532
  })
533
533
  }),
534
534
  Le && /* @__PURE__ */ h(i, {
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationsPage.d.ts","sourceRoot":"","sources":["../../../src/devportal/pages/ApplicationsPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAoIhC;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAukB9B,CAAC"}
1
+ {"version":3,"file":"ApplicationsPage.d.ts","sourceRoot":"","sources":["../../../src/devportal/pages/ApplicationsPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AA0IhC;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,EA2lB9B,CAAC"}
@@ -1,27 +1,27 @@
1
1
  import { useDevportal as e } from "../providers/DevportalProvider.js";
2
- import { EmptyState as t } from "../components/EmptyState.js";
3
- import { useDeactivateApplicationMutation as n, useGetApplicationsQuery as r } from "../../generated/global-operations.js";
4
- import { getErrorMessage as i } from "../hooks/useGraphQL.js";
5
- import { PageLayout as a } from "../components/PageLayout.js";
6
- import { APP_STATUS_COLORS as o, APP_TYPE_LABELS as s } from "../utils/constants.js";
7
- import { SelectionCheckbox as c } from "../components/SelectionCheckbox.js";
8
- import { AppCard as l } from "../components/AppCard.js";
9
- import { ConfirmDialog as ee } from "../components/ConfirmDialog.js";
10
- import { PermissionGuard as te } from "../components/PermissionGuard.js";
2
+ import { useTr as t } from "../utils/i18n.js";
3
+ import { EmptyState as n } from "../components/EmptyState.js";
4
+ import { useDeactivateApplicationMutation as r, useGetApplicationsQuery as ee } from "../../generated/global-operations.js";
5
+ import { getErrorMessage as te } from "../hooks/useGraphQL.js";
6
+ import { PageLayout as i } from "../components/PageLayout.js";
7
+ import { APP_STATUS_COLORS as ne, APP_TYPE_LABELS as a } from "../utils/constants.js";
8
+ import { SelectionCheckbox as o } from "../components/SelectionCheckbox.js";
9
+ import { AppCard as re } from "../components/AppCard.js";
10
+ import { ConfirmDialog as s } from "../components/ConfirmDialog.js";
11
+ import { PermissionGuard as ie } from "../components/PermissionGuard.js";
11
12
  import "../components/index.js";
12
- import { useDevportalPermission as u } from "../hooks/usePermission.js";
13
+ import { useDevportalPermission as c } from "../hooks/usePermission.js";
13
14
  import "../hooks/index.js";
14
- import { DEVPORTAL_PERMISSIONS as d } from "../constants/permissions.js";
15
- import { useMemo as f, useState as p } from "react";
16
- import { useI18n as ne } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
17
- import { AlertCircle as re, AppWindow as m, Archive as ie, Grid as ae, List as h, Loader2 as g, Plus as _, Search as oe } from "lucide-react";
15
+ import { DEVPORTAL_PERMISSIONS as l } from "../constants/permissions.js";
16
+ import { useMemo as u, useState as d } from "react";
17
+ import { AlertCircle as ae, AppWindow as f, Archive as oe, Grid as p, List as m, Loader2 as h, Plus as g, Search as _ } from "lucide-react";
18
18
  import { jsx as v, jsxs as y } from "react/jsx-runtime";
19
19
  import { EmphasisPanel as se, GlassCard as b } from "@burdenoff/fe-libs/ui";
20
20
  //#region src/devportal/pages/ApplicationsPage.tsx
21
21
  function ce(e, t, n) {
22
22
  return `${e} ${t} application${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`;
23
23
  }
24
- function le({ status: e }) {
24
+ function le({ status: e, tr: t }) {
25
25
  return /* @__PURE__ */ v("span", {
26
26
  className: `inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${{
27
27
  ACTIVE: "bg-status-success-bg-subtle text-status-success-text",
@@ -37,10 +37,10 @@ function le({ status: e }) {
37
37
  REVOKED: "bg-status-error-bg-subtle text-status-error-text",
38
38
  DEPRECATED: "bg-bg-sunken text-text-muted"
39
39
  }[e] ?? "bg-bg-sunken text-text-secondary"}`,
40
- children: e === "INACTIVE" || e === "REVOKED" ? "Deactivated" : e.replace(/_/g, " ")
40
+ children: e === "INACTIVE" || e === "REVOKED" ? t("devportal.status.deactivated", "Deactivated") : e.replace(/_/g, " ")
41
41
  });
42
42
  }
43
- function ue(e) {
43
+ function x(e) {
44
44
  let t = Array.isArray(e.screenshots) ? e.screenshots.length > 0 ? e.screenshots : void 0 : e.screenshots, n = e.pricingDetails && typeof e.pricingDetails == "object" ? e.pricingDetails : void 0;
45
45
  return {
46
46
  id: e.id,
@@ -86,65 +86,62 @@ function ue(e) {
86
86
  updatedAt: e.updatedAt
87
87
  };
88
88
  }
89
- var x = () => {
90
- let { navigate: x, basePath: S, activeOrgId: C } = e(), { t: w } = ne(), T = (e, t) => {
91
- let n = w(e);
92
- return n === e ? t : n;
93
- }, E = u(d.APP_CREATE), D = u(d.APP_UPDATE), [O, k] = p("list"), [A, de] = p(""), [j, M] = p(""), [N, fe] = p(""), [P, F] = p(/* @__PURE__ */ new Set()), [I, L] = p(null), [R, z] = p(null), { data: B, loading: pe, error: V, refetch: H } = r({
89
+ var S = () => {
90
+ let { navigate: S, basePath: C, activeOrgId: w } = e(), T = t(), E = c(l.APP_CREATE), D = c(l.APP_UPDATE), [O, k] = d("list"), [A, ue] = d(""), [j, de] = d(""), [M, fe] = d(""), [N, P] = d(/* @__PURE__ */ new Set()), [F, I] = d(null), [L, R] = d(null), { data: z, loading: B, error: V, refetch: H } = ee({
94
91
  variables: {
95
92
  limit: 50,
96
93
  offset: 0,
97
94
  status: j || void 0,
98
- organizationId: C ?? void 0
95
+ organizationId: w ?? void 0
99
96
  },
100
97
  fetchPolicy: "cache-and-network"
101
- }), U = f(() => B?.applications?.edges?.map((e) => ue(e.node)) ?? [], [B?.applications?.edges]), [me] = n(), W = (e) => {
102
- x?.(`${S}${e}`);
98
+ }), U = u(() => z?.applications?.edges?.map((e) => x(e.node)) ?? [], [z?.applications?.edges]), [pe] = r(), W = (e) => {
99
+ S?.(`${C}${e}`);
103
100
  }, G = U.filter((e) => {
104
- let t = !C || e.developerOrganizationId === C, n = !A || e.name.toLowerCase().includes(A.toLowerCase()) || e.shortDescription?.toLowerCase().includes(A.toLowerCase()), r = !N || e.appType === N;
101
+ let t = !w || e.developerOrganizationId === w, n = !A || e.name.toLowerCase().includes(A.toLowerCase()) || e.shortDescription?.toLowerCase().includes(A.toLowerCase()), r = !M || e.appType === M;
105
102
  return t && n && r;
106
- }), K = f(() => ({
107
- total: B?.applications?.totalCount ?? G.length,
103
+ }), K = u(() => ({
104
+ total: z?.applications?.totalCount ?? G.length,
108
105
  active: G.filter((e) => e.status === "ACTIVE").length,
109
106
  draft: G.filter((e) => e.status === "DRAFT").length,
110
107
  published: G.filter((e) => e.status === "PUBLISHED").length
111
- }), [G, B?.applications?.totalCount]), q = f(() => U.filter((e) => P.has(e.id)), [U, P]), J = f(() => q.filter((e) => e.status !== "INACTIVE" && e.status !== "REVOKED"), [q]), Y = G.length > 0 && G.every((e) => P.has(e.id)), X = G.some((e) => P.has(e.id)) && !Y, Z = (e, t) => {
112
- F((n) => {
108
+ }), [G, z?.applications?.totalCount]), q = u(() => U.filter((e) => N.has(e.id)), [U, N]), J = u(() => q.filter((e) => e.status !== "INACTIVE" && e.status !== "REVOKED"), [q]), Y = G.length > 0 && G.every((e) => N.has(e.id)), X = G.some((e) => N.has(e.id)) && !Y, Z = (e, t) => {
109
+ P((n) => {
113
110
  let r = new Set(n);
114
111
  return t ? r.add(e) : r.delete(e), r;
115
112
  });
116
113
  }, Q = (e) => {
117
- F((t) => {
114
+ P((t) => {
118
115
  let n = new Set(t);
119
116
  return G.forEach((t) => {
120
117
  e ? n.add(t.id) : n.delete(t.id);
121
118
  }), n;
122
119
  });
123
- }, $ = () => F(/* @__PURE__ */ new Set());
124
- return pe && !B ? /* @__PURE__ */ v(a, {
120
+ }, $ = () => P(/* @__PURE__ */ new Set());
121
+ return B && !z ? /* @__PURE__ */ v(i, {
125
122
  title: T("devportal.myApplications", "My Applications"),
126
123
  description: T("devportal.manageYourApps", "Manage your developer applications"),
127
124
  children: /* @__PURE__ */ y("div", {
128
125
  className: "flex items-center justify-center py-12",
129
- children: [/* @__PURE__ */ v(g, { className: "h-8 w-8 animate-spin text-text-secondary" }), /* @__PURE__ */ v("span", {
126
+ children: [/* @__PURE__ */ v(h, { className: "h-8 w-8 animate-spin text-text-secondary" }), /* @__PURE__ */ v("span", {
130
127
  className: "ml-2 text-text-secondary",
131
128
  children: T("devportal.loadingApplications", "Loading applications...")
132
129
  })]
133
130
  })
134
- }) : V ? /* @__PURE__ */ v(a, {
131
+ }) : V ? /* @__PURE__ */ v(i, {
135
132
  title: T("devportal.myApplications", "My Applications"),
136
133
  description: T("devportal.manageYourApps", "Manage your developer applications"),
137
134
  children: /* @__PURE__ */ y("div", {
138
135
  className: "rounded-lg border border-status-error-border/50 bg-status-error-bg/10 p-6 text-center",
139
136
  children: [
140
- /* @__PURE__ */ v(re, { className: "mx-auto h-8 w-8 text-status-error-text" }),
137
+ /* @__PURE__ */ v(ae, { className: "mx-auto h-8 w-8 text-status-error-text" }),
141
138
  /* @__PURE__ */ v("h3", {
142
139
  className: "mt-2 font-medium text-status-error-text",
143
140
  children: T("devportal.failedToLoadApplications", "Failed to load applications")
144
141
  }),
145
142
  /* @__PURE__ */ v("p", {
146
143
  className: "mt-1 text-sm text-text-secondary",
147
- children: i(V)
144
+ children: te(V)
148
145
  }),
149
146
  /* @__PURE__ */ v("button", {
150
147
  onClick: () => H(),
@@ -153,9 +150,9 @@ var x = () => {
153
150
  })
154
151
  ]
155
152
  })
156
- }) : /* @__PURE__ */ v(te, {
153
+ }) : /* @__PURE__ */ v(ie, {
157
154
  authOnly: !0,
158
- children: /* @__PURE__ */ y(a, {
155
+ children: /* @__PURE__ */ y(i, {
159
156
  title: T("devportal.myApplications", "My Applications"),
160
157
  description: T("devportal.manageYourApps", "Manage your developer applications"),
161
158
  purpose: T("devportal.applicationsPurpose", "Applications are the integrations you build on the platform — OAuth apps, store listings, and API consumers. Create one here to get client credentials, request scopes, and ship to the marketplace."),
@@ -165,7 +162,7 @@ var x = () => {
165
162
  "aria-disabled": !E.allowed,
166
163
  title: E.allowed ? void 0 : T("devportal.common.noPermission", "You do not have permission to perform this action"),
167
164
  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 transition-colors disabled:opacity-50 disabled:cursor-not-allowed focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary",
168
- children: [/* @__PURE__ */ v(_, {
165
+ children: [/* @__PURE__ */ v(g, {
169
166
  size: 16,
170
167
  "aria-hidden": "true"
171
168
  }), T("devportal.createApp", "Create App")]
@@ -178,37 +175,37 @@ var x = () => {
178
175
  children: [
179
176
  /* @__PURE__ */ y("div", {
180
177
  className: "relative flex-1 max-w-md",
181
- children: [/* @__PURE__ */ v(oe, {
178
+ children: [/* @__PURE__ */ v(_, {
182
179
  size: 16,
183
180
  className: "absolute left-3 top-1/2 -translate-y-1/2 text-text-secondary"
184
181
  }), /* @__PURE__ */ v("input", {
185
182
  type: "text",
186
183
  placeholder: T("devportal.searchApplications", "Search applications..."),
187
184
  value: A,
188
- onChange: (e) => de(e.target.value),
185
+ onChange: (e) => ue(e.target.value),
189
186
  className: "w-full rounded-md border bg-bg-surface pl-9 pr-4 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary"
190
187
  })]
191
188
  }),
192
189
  /* @__PURE__ */ y("select", {
193
190
  value: j,
194
- onChange: (e) => M(e.target.value),
191
+ onChange: (e) => de(e.target.value),
195
192
  className: "rounded-md border bg-bg-surface px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary",
196
193
  children: [/* @__PURE__ */ v("option", {
197
194
  value: "",
198
195
  children: T("devportal.allStatus", "All Status")
199
- }), Object.keys(o).map((e) => /* @__PURE__ */ v("option", {
196
+ }), Object.keys(ne).map((e) => /* @__PURE__ */ v("option", {
200
197
  value: e,
201
- children: e.replace(/_/g, " ")
198
+ children: T(`devportal.appStatus.${e}`, e.replace(/_/g, " "))
202
199
  }, e))]
203
200
  }),
204
201
  /* @__PURE__ */ y("select", {
205
- value: N,
202
+ value: M,
206
203
  onChange: (e) => fe(e.target.value),
207
204
  className: "rounded-md border bg-bg-surface px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary",
208
205
  children: [/* @__PURE__ */ v("option", {
209
206
  value: "",
210
207
  children: T("devportal.allTypes", "All Types")
211
- }), Object.entries(s).map(([e, t]) => /* @__PURE__ */ v("option", {
208
+ }), Object.entries(a).map(([e, t]) => /* @__PURE__ */ v("option", {
212
209
  value: e,
213
210
  children: t
214
211
  }, e))]
@@ -219,13 +216,13 @@ var x = () => {
219
216
  children: [/* @__PURE__ */ v("button", {
220
217
  onClick: () => k("grid"),
221
218
  className: `rounded p-1.5 ${O === "grid" ? "bg-bg-sunken" : "hover:bg-bg-sunken/50"}`,
222
- title: "Grid view",
223
- children: /* @__PURE__ */ v(ae, { size: 16 })
219
+ title: T("devportal.gridView", "Grid view"),
220
+ children: /* @__PURE__ */ v(p, { size: 16 })
224
221
  }), /* @__PURE__ */ v("button", {
225
222
  onClick: () => k("list"),
226
223
  className: `rounded p-1.5 ${O === "list" ? "bg-bg-sunken" : "hover:bg-bg-sunken/50"}`,
227
- title: "Table view",
228
- children: /* @__PURE__ */ v(h, { size: 16 })
224
+ title: T("devportal.tableView", "Table view"),
225
+ children: /* @__PURE__ */ v(m, { size: 16 })
229
226
  })]
230
227
  })]
231
228
  }),
@@ -281,14 +278,14 @@ var x = () => {
281
278
  ]
282
279
  })
283
280
  }),
284
- R && /* @__PURE__ */ v("div", {
285
- className: `rounded-lg border px-4 py-3 text-sm ${R.type === "success" ? "border-border-subtle bg-status-success-bg-subtle text-status-success-text" : "border-status-error-border/40 bg-status-error-bg/10 text-status-error-text"}`,
281
+ L && /* @__PURE__ */ v("div", {
282
+ className: `rounded-lg border px-4 py-3 text-sm ${L.type === "success" ? "border-border-subtle bg-status-success-bg-subtle text-status-success-text" : "border-status-error-border/40 bg-status-error-bg/10 text-status-error-text"}`,
286
283
  children: /* @__PURE__ */ y("div", {
287
284
  className: "flex items-center justify-between gap-3",
288
- children: [/* @__PURE__ */ v("span", { children: R.message }), /* @__PURE__ */ v("button", {
289
- onClick: () => z(null),
285
+ children: [/* @__PURE__ */ v("span", { children: L.message }), /* @__PURE__ */ v("button", {
286
+ onClick: () => R(null),
290
287
  className: "text-xs font-medium underline underline-offset-2",
291
- children: "Dismiss"
288
+ children: T("devportal.dismiss", "Dismiss")
292
289
  })]
293
290
  })
294
291
  }),
@@ -300,33 +297,37 @@ var x = () => {
300
297
  className: "flex flex-wrap items-center gap-3",
301
298
  children: [/* @__PURE__ */ y("div", {
302
299
  className: "flex items-center gap-2",
303
- children: [/* @__PURE__ */ v(c, {
300
+ children: [/* @__PURE__ */ v(o, {
304
301
  checked: Y,
305
302
  indeterminate: X,
306
303
  onChange: Q,
307
- ariaLabel: "Select all visible applications"
304
+ ariaLabel: T("devportal.selectAllVisibleApplications", "Select all visible applications")
308
305
  }), /* @__PURE__ */ v("span", {
309
306
  className: "text-sm font-medium",
310
- children: "Select all visible"
307
+ children: T("devportal.selectAllVisible", "Select all visible")
311
308
  })]
312
- }), P.size > 0 && /* @__PURE__ */ v("button", {
309
+ }), N.size > 0 && /* @__PURE__ */ v("button", {
313
310
  onClick: $,
314
311
  className: "text-sm text-text-secondary hover:text-text-primary",
315
- children: "Clear selection"
312
+ children: T("devportal.clearSelection", "Clear selection")
316
313
  })]
317
314
  }), /* @__PURE__ */ y("div", {
318
315
  className: "flex flex-wrap items-center gap-2",
319
316
  children: [/* @__PURE__ */ y("span", {
320
317
  className: "rounded-full bg-bg-sunken px-3 py-1 text-sm font-medium text-text-secondary",
321
- children: [P.size, " selected"]
318
+ children: [
319
+ N.size,
320
+ " ",
321
+ T("devportal.selectedLower", "selected")
322
+ ]
322
323
  }), /* @__PURE__ */ y("button", {
323
- onClick: () => L("deactivate"),
324
+ onClick: () => I("deactivate"),
324
325
  disabled: J.length === 0 || !D.allowed,
325
326
  "aria-disabled": J.length === 0 || !D.allowed,
326
327
  title: D.allowed ? void 0 : T("devportal.common.noPermission", "You do not have permission to perform this action"),
327
328
  className: "inline-flex items-center gap-2 rounded-md border border-status-warning-bg px-3 py-2 text-sm font-medium text-status-warning-text transition-colors hover:bg-status-warning-bg-subtle disabled:cursor-not-allowed disabled:opacity-50 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary",
328
329
  children: [
329
- /* @__PURE__ */ v(ie, {
330
+ /* @__PURE__ */ v(oe, {
330
331
  size: 16,
331
332
  "aria-hidden": "true"
332
333
  }),
@@ -341,16 +342,15 @@ var x = () => {
341
342
  className: "text-sm text-text-secondary",
342
343
  children: [
343
344
  G.length,
344
- " application",
345
- G.length === 1 ? "" : "s",
346
- " found"
345
+ " ",
346
+ G.length === 1 ? T("devportal.applicationFound", "application found") : T("devportal.applicationsFound", "applications found")
347
347
  ]
348
348
  }),
349
349
  G.length > 0 ? O === "grid" ? /* @__PURE__ */ v("div", {
350
350
  className: "grid gap-4 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",
351
- children: G.map((e) => /* @__PURE__ */ v(l, {
351
+ children: G.map((e) => /* @__PURE__ */ v(re, {
352
352
  app: e,
353
- selected: P.has(e.id),
353
+ selected: N.has(e.id),
354
354
  onToggleSelect: (t) => Z(e.id, t)
355
355
  }, e.id))
356
356
  }) : /* @__PURE__ */ v("div", {
@@ -362,42 +362,42 @@ var x = () => {
362
362
  children: [
363
363
  /* @__PURE__ */ v("th", {
364
364
  className: "w-10 px-4 py-3",
365
- children: /* @__PURE__ */ v(c, {
365
+ children: /* @__PURE__ */ v(o, {
366
366
  checked: Y,
367
367
  indeterminate: X,
368
368
  onChange: Q,
369
- ariaLabel: "Select all"
369
+ ariaLabel: T("devportal.selectAll", "Select all")
370
370
  })
371
371
  }),
372
372
  /* @__PURE__ */ v("th", {
373
373
  className: "px-4 py-3 font-medium text-text-secondary",
374
- children: "Name"
374
+ children: T("devportal.name", "Name")
375
375
  }),
376
376
  /* @__PURE__ */ v("th", {
377
377
  className: "px-4 py-3 font-medium text-text-secondary",
378
- children: "Status"
378
+ children: T("devportal.status", "Status")
379
379
  }),
380
380
  /* @__PURE__ */ v("th", {
381
381
  className: "px-4 py-3 font-medium text-text-secondary",
382
- children: "Type"
382
+ children: T("devportal.type", "Type")
383
383
  }),
384
384
  /* @__PURE__ */ v("th", {
385
385
  className: "px-4 py-3 font-medium text-text-secondary",
386
- children: "Created"
386
+ children: T("devportal.created", "Created")
387
387
  }),
388
388
  /* @__PURE__ */ v("th", { className: "px-4 py-3 font-medium text-text-secondary" })
389
389
  ]
390
390
  }) }), /* @__PURE__ */ v("tbody", {
391
391
  className: "divide-y divide-border-seam",
392
392
  children: G.map((e) => /* @__PURE__ */ y("tr", {
393
- className: `hover:bg-bg-surface-hover transition-colors ${P.has(e.id) ? "bg-action-primary-bg/5" : ""}`,
393
+ className: `hover:bg-bg-surface-hover transition-colors ${N.has(e.id) ? "bg-action-primary-bg/5" : ""}`,
394
394
  children: [
395
395
  /* @__PURE__ */ v("td", {
396
396
  className: "w-10 px-4 py-3",
397
- children: /* @__PURE__ */ v(c, {
398
- checked: P.has(e.id),
397
+ children: /* @__PURE__ */ v(o, {
398
+ checked: N.has(e.id),
399
399
  onChange: (t) => Z(e.id, t),
400
- ariaLabel: `Select ${e.name}`
400
+ ariaLabel: T("devportal.selectNamed", "Select {{name}}", { name: e.name })
401
401
  })
402
402
  }),
403
403
  /* @__PURE__ */ v("td", {
@@ -411,7 +411,7 @@ var x = () => {
411
411
  className: "h-8 w-8 rounded object-cover"
412
412
  }) : /* @__PURE__ */ v("div", {
413
413
  className: "flex h-8 w-8 items-center justify-center rounded bg-bg-sunken text-text-secondary",
414
- children: /* @__PURE__ */ v(m, { size: 14 })
414
+ children: /* @__PURE__ */ v(f, { size: 14 })
415
415
  }), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
416
416
  className: "font-medium text-text-primary group-hover:text-action-primary-text transition-colors",
417
417
  children: e.name
@@ -423,11 +423,14 @@ var x = () => {
423
423
  }),
424
424
  /* @__PURE__ */ v("td", {
425
425
  className: "px-4 py-3",
426
- children: /* @__PURE__ */ v(le, { status: e.status })
426
+ children: /* @__PURE__ */ v(le, {
427
+ status: e.status,
428
+ tr: T
429
+ })
427
430
  }),
428
431
  /* @__PURE__ */ v("td", {
429
432
  className: "px-4 py-3 text-text-secondary",
430
- children: s[e.appType] || e.appType
433
+ children: a[e.appType] || e.appType
431
434
  }),
432
435
  /* @__PURE__ */ v("td", {
433
436
  className: "px-4 py-3 text-text-secondary tabular-nums",
@@ -438,41 +441,41 @@ var x = () => {
438
441
  children: /* @__PURE__ */ v("button", {
439
442
  onClick: () => W(`/apps/${e.id}`),
440
443
  className: "rounded-md px-3 py-1.5 text-xs font-medium text-text-secondary hover:bg-bg-sunken hover:text-text-primary transition-colors",
441
- children: "View"
444
+ children: T("devportal.view", "View")
442
445
  })
443
446
  })
444
447
  ]
445
448
  }, e.id))
446
449
  })]
447
450
  })
448
- }) : /* @__PURE__ */ v(t, {
449
- illustration: A || j || N ? "empty-search" : "empty-data",
450
- icon: /* @__PURE__ */ v(m, { size: 32 }),
451
+ }) : /* @__PURE__ */ v(n, {
452
+ illustration: A || j || M ? "empty-search" : "empty-data",
453
+ icon: /* @__PURE__ */ v(f, { size: 32 }),
451
454
  title: T("devportal.noApplicationsFound", "No applications found"),
452
- description: A || j || N ? T("devportal.tryAdjustingFilters", "Try adjusting your filters") : T("devportal.createFirstApp", "Create your first application to get started"),
453
- action: !A && !j && !N ? /* @__PURE__ */ y("button", {
455
+ description: A || j || M ? T("devportal.tryAdjustingFilters", "Try adjusting your filters") : T("devportal.createFirstApp", "Create your first application to get started"),
456
+ action: !A && !j && !M ? /* @__PURE__ */ y("button", {
454
457
  onClick: () => W("/apps/new"),
455
458
  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",
456
- children: [/* @__PURE__ */ v(_, { size: 16 }), T("devportal.createApp", "Create App")]
459
+ children: [/* @__PURE__ */ v(g, { size: 16 }), T("devportal.createApp", "Create App")]
457
460
  }) : void 0
458
461
  }),
459
- /* @__PURE__ */ v(ee, {
460
- open: I === "deactivate",
462
+ /* @__PURE__ */ v(s, {
463
+ open: F === "deactivate",
461
464
  onOpenChange: (e) => {
462
- e || L(null);
465
+ e || I(null);
463
466
  },
464
467
  onConfirm: async () => {
465
468
  if (J.length === 0) return;
466
- let e = await Promise.allSettled(J.map((e) => me({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
467
- z({
469
+ let e = await Promise.allSettled(J.map((e) => pe({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
470
+ R({
468
471
  type: n === 0 ? "success" : "error",
469
- message: ce("Deactivated", t, n)
470
- }), $(), L(null), await H();
472
+ message: ce(T("devportal.deactivated", "Deactivated"), t, n)
473
+ }), $(), I(null), await H();
471
474
  },
472
- title: "Deactivate selected applications",
473
- description: `Deactivate ${J.length} selected application${J.length === 1 ? "" : "s"}? Users and integrations may lose access until these apps are re-enabled.`,
474
- confirmLabel: "Deactivate",
475
- cancelLabel: "Cancel",
475
+ title: T("devportal.deactivateSelectedApplications", "Deactivate selected applications"),
476
+ description: T("devportal.deactivateSelectedApplicationsDescription", "Deactivate {{count}} selected application(s)? Users and integrations may lose access until these apps are re-enabled.", { count: J.length }),
477
+ confirmLabel: T("devportal.deactivate", "Deactivate"),
478
+ cancelLabel: T("devportal.cancel", "Cancel"),
476
479
  variant: "warning"
477
480
  })
478
481
  ]
@@ -480,6 +483,6 @@ var x = () => {
480
483
  });
481
484
  };
482
485
  //#endregion
483
- export { x as ApplicationsPage };
486
+ export { S as ApplicationsPage };
484
487
 
485
488
  //# sourceMappingURL=ApplicationsPage.js.map