@burdenoff/microfe-devportal 2026.1112.2 → 2026.1113.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 (78) hide show
  1. package/dist/devportal/DevportalRoot.js +65 -119
  2. package/dist/devportal/DevportalRoot.js.map +1 -1
  3. package/dist/devportal/components/AppCard.js +72 -69
  4. package/dist/devportal/components/AppCard.js.map +1 -1
  5. package/dist/devportal/components/DeveloperSettingsHub.d.ts +6 -0
  6. package/dist/devportal/components/DeveloperSettingsHub.js +59 -0
  7. package/dist/devportal/components/DeveloperSettingsHub.js.map +1 -0
  8. package/dist/devportal/components/ImageUploadField.js +82 -80
  9. package/dist/devportal/components/ImageUploadField.js.map +1 -1
  10. package/dist/devportal/components/SectionNav.d.ts +1 -1
  11. package/dist/devportal/components/SectionNav.js +60 -36
  12. package/dist/devportal/components/SectionNav.js.map +1 -1
  13. package/dist/devportal/components/StoreImage.d.ts +15 -0
  14. package/dist/devportal/components/StoreImage.js +30 -0
  15. package/dist/devportal/components/StoreImage.js.map +1 -0
  16. package/dist/devportal/components/index.d.ts +1 -0
  17. package/dist/devportal/components/index.js +17 -16
  18. package/dist/devportal/hooks/usePackageUpload.d.ts +46 -4
  19. package/dist/devportal/hooks/usePackageUpload.js +90 -36
  20. package/dist/devportal/hooks/usePackageUpload.js.map +1 -1
  21. package/dist/devportal/pages/AdminReviewPage.js +205 -202
  22. package/dist/devportal/pages/AdminReviewPage.js.map +1 -1
  23. package/dist/devportal/pages/AnalyticsDashboardPage.js +186 -179
  24. package/dist/devportal/pages/AnalyticsDashboardPage.js.map +1 -1
  25. package/dist/devportal/pages/ApiKeysPage.js +113 -111
  26. package/dist/devportal/pages/ApiKeysPage.js.map +1 -1
  27. package/dist/devportal/pages/AppLogsPage.js +80 -84
  28. package/dist/devportal/pages/AppLogsPage.js.map +1 -1
  29. package/dist/devportal/pages/ApplicationDetailPage.js +529 -504
  30. package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
  31. package/dist/devportal/pages/ApplicationsPage.js +186 -183
  32. package/dist/devportal/pages/ApplicationsPage.js.map +1 -1
  33. package/dist/devportal/pages/CreateApiKeyPage.js +163 -166
  34. package/dist/devportal/pages/CreateApiKeyPage.js.map +1 -1
  35. package/dist/devportal/pages/CreateOAuthClientPage.js +134 -130
  36. package/dist/devportal/pages/CreateOAuthClientPage.js.map +1 -1
  37. package/dist/devportal/pages/CreatePhysicalItemPage.js +2 -2
  38. package/dist/devportal/pages/CreatePhysicalItemPage.js.map +1 -1
  39. package/dist/devportal/pages/DelegationsPage.js +11 -11
  40. package/dist/devportal/pages/DocumentationPage.js +100 -94
  41. package/dist/devportal/pages/DocumentationPage.js.map +1 -1
  42. package/dist/devportal/pages/EditApplicationPage.js +379 -377
  43. package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
  44. package/dist/devportal/pages/EditPhysicalItemPage.js +312 -307
  45. package/dist/devportal/pages/EditPhysicalItemPage.js.map +1 -1
  46. package/dist/devportal/pages/InvitationDecisionPage.js +83 -79
  47. package/dist/devportal/pages/InvitationDecisionPage.js.map +1 -1
  48. package/dist/devportal/pages/ListingPreviewPage.js +175 -171
  49. package/dist/devportal/pages/ListingPreviewPage.js.map +1 -1
  50. package/dist/devportal/pages/OAuthClientDetailPage.js +76 -76
  51. package/dist/devportal/pages/OAuthClientDetailPage.js.map +1 -1
  52. package/dist/devportal/pages/OAuthClientsPage.js +126 -124
  53. package/dist/devportal/pages/OAuthClientsPage.js.map +1 -1
  54. package/dist/devportal/pages/OrganizationDetailPage.js +19 -19
  55. package/dist/devportal/pages/OrganizationMembersPage.js +223 -204
  56. package/dist/devportal/pages/OrganizationMembersPage.js.map +1 -1
  57. package/dist/devportal/pages/ResourcesPage.d.ts +6 -0
  58. package/dist/devportal/pages/ResourcesPage.js +171 -155
  59. package/dist/devportal/pages/ResourcesPage.js.map +1 -1
  60. package/dist/devportal/pages/SellerDashboardPage.js +117 -115
  61. package/dist/devportal/pages/SellerDashboardPage.js.map +1 -1
  62. package/dist/devportal/pages/SellerItemsPage.js +202 -199
  63. package/dist/devportal/pages/SellerItemsPage.js.map +1 -1
  64. package/dist/devportal/pages/SettingsPage.js +330 -315
  65. package/dist/devportal/pages/SettingsPage.js.map +1 -1
  66. package/dist/devportal/pages/SetupPage.js +5 -5
  67. package/dist/devportal/pages/StoreSubmissionPage.js +133 -131
  68. package/dist/devportal/pages/StoreSubmissionPage.js.map +1 -1
  69. package/dist/devportal/pages/WebhookDetailPage.js +6 -6
  70. package/dist/devportal/pages/WebhooksPage.js +39 -39
  71. package/dist/devportal/pages/WebhooksPage.js.map +1 -1
  72. package/dist/devportal/utils/appDetailTabs.d.ts +73 -0
  73. package/dist/devportal/utils/appDetailTabs.js +62 -0
  74. package/dist/devportal/utils/appDetailTabs.js.map +1 -0
  75. package/dist/devportal/utils/developerNav.d.ts +39 -0
  76. package/dist/devportal/utils/developerNav.js +304 -0
  77. package/dist/devportal/utils/developerNav.js.map +1 -0
  78. package/package.json +2 -2
@@ -1,32 +1,34 @@
1
1
  import { appCategoryOptionsFor as e } from "../constants/appCategories.js";
2
2
  import { PageLayout as t, PageSection as n } from "../components/PageLayout.js";
3
- import { CheckboxField as r, InputField as i, SelectField as a, TagInput as o, TextareaField as ee } from "../components/FormField.js";
4
- import { MarkdownEditor as te } from "../components/MarkdownEditor.js";
5
- import { MultiSelectCombobox as ne } from "../components/MultiSelectCombobox.js";
6
- import { StatusBadge as re } from "../components/StatusBadge.js";
7
- import { ConfirmDialog as s } from "../components/ConfirmDialog.js";
8
- import { LoadingState as ie } from "../components/LoadingState.js";
9
- import { EmptyState as ae } from "../components/EmptyState.js";
10
- import { useDevportal as oe } from "../providers/DevportalProvider.js";
11
- import { PermissionGuard as se } from "../components/PermissionGuard.js";
12
- import { nativeImpact as c, nativeNotify as l } from "../../utils/nativeBridge.js";
3
+ import { CheckboxField as ee, InputField as r, SelectField as i, TagInput as a, TextareaField as te } from "../components/FormField.js";
4
+ import { MarkdownEditor as ne } from "../components/MarkdownEditor.js";
5
+ import { MultiSelectCombobox as re } from "../components/MultiSelectCombobox.js";
6
+ import { StatusBadge as ie } from "../components/StatusBadge.js";
7
+ import { ConfirmDialog as o } from "../components/ConfirmDialog.js";
8
+ import { LoadingState as ae } from "../components/LoadingState.js";
9
+ import { EmptyState as oe } from "../components/EmptyState.js";
10
+ import { useDevportal as se, useIsFluidgridsVariant as ce } from "../providers/DevportalProvider.js";
11
+ import { useTr as le } from "../utils/i18n.js";
12
+ import { PermissionGuard as ue } from "../components/PermissionGuard.js";
13
+ import { DEACTIVATE_COPY as s } from "../utils/appDetailTabs.js";
14
+ import { nativeImpact as de, nativeNotify as c } from "../../utils/nativeBridge.js";
13
15
  import "../components/index.js";
14
- import { DEVPORTAL_PERMISSIONS as u } from "../constants/permissions.js";
15
- import { useProducts as ce } from "../hooks/useProducts.js";
16
- import { useDevportalPermission as d } from "../hooks/usePermission.js";
16
+ import { useProducts as fe } from "../hooks/useProducts.js";
17
+ import { DEVPORTAL_PERMISSIONS as l } from "../constants/permissions.js";
18
+ import { useDevportalPermission as u } from "../hooks/usePermission.js";
17
19
  import "../hooks/index.js";
18
- import { APP_TYPE_LABELS as f } from "../utils/constants.js";
19
- import { useDeactivateAppMutation as le, useDeleteApplicationMutation as ue, useGetApplicationQuery as de, useRotateApplicationSigningSecretMutation as fe, useUpdateApplicationMutation as pe } from "../../generated/global-operations.js";
20
- import { useEffect as p, useState as m } from "react";
21
- import { AlertCircle as me, AlertTriangle as he, AppWindow as ge, Archive as _e, Check as ve, Copy as ye, Eye as be, EyeOff as xe, Power as Se, RefreshCw as h, Save as Ce, Send as we, Trash2 as Te } from "lucide-react";
22
- import { useParams as Ee } from "react-router";
23
- import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
24
- import { useI18n as De } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
20
+ import { APP_TYPE_LABELS as d } from "../utils/constants.js";
21
+ import { useDeactivateAppMutation as pe, useDeactivateApplicationMutation as me, useDeleteApplicationMutation as he, useGetApplicationQuery as ge, useRotateApplicationSigningSecretMutation as _e, useUpdateApplicationMutation as ve } from "../../generated/global-operations.js";
22
+ import { useEffect as f, useState as p } from "react";
23
+ import { AlertCircle as ye, AlertTriangle as be, AppWindow as xe, Archive as Se, Check as Ce, Copy as we, Eye as Te, EyeOff as Ee, Power as De, RefreshCw as m, Save as Oe, Send as ke, Trash2 as Ae } from "lucide-react";
24
+ import { useParams as je } from "react-router";
25
+ import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
26
+ import { useI18n as Me } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
25
27
  // src/devportal/pages/EditApplicationPage.tsx
26
- var Oe = Object.entries(f).map(([e, t]) => ({
28
+ var Ne = Object.entries(d).map(([e, t]) => ({
27
29
  value: e,
28
30
  label: t
29
- })), y = [
31
+ })), v = [
30
32
  {
31
33
  value: "PUBLIC",
32
34
  label: "Public — listed in the marketplace after review"
@@ -39,11 +41,11 @@ var Oe = Object.entries(f).map(([e, t]) => ({
39
41
  value: "INTERNAL",
40
42
  label: "Internal — visible to your entire dev org"
41
43
  }
42
- ], ke = [...y, {
44
+ ], Pe = [...v, {
43
45
  value: "UNLISTED",
44
46
  label: "Unlisted — shareable via link, not listed in store"
45
47
  }];
46
- function Ae(e) {
48
+ function Fe(e) {
47
49
  return e ? {
48
50
  id: e.id,
49
51
  name: e.name,
@@ -86,21 +88,21 @@ function Ae(e) {
86
88
  updatedAt: e.updatedAt
87
89
  } : null;
88
90
  }
89
- var b = () => {
90
- let { navigate: f, basePath: b } = oe(), { appId: x } = Ee(), { t: S } = De(), { products: C } = ce(), { allowed: w } = d(u.APP_UPDATE), { allowed: T } = d(u.APP_DELETE), E = (e, t) => {
91
- let n = S(e);
91
+ var y = () => {
92
+ let { navigate: d, basePath: y } = se(), { appId: b } = je(), { t: Ie } = Me(), { products: Le } = fe(), { allowed: x } = u(l.APP_UPDATE), { allowed: S } = u(l.APP_DELETE), C = (e, t) => {
93
+ let n = Ie(e);
92
94
  return n === e ? t : n;
93
- }, [D, O] = m(!1), [k, A] = m({}), [je, j] = m(!1), [Me, M] = m(!1), [Ne, N] = m(!1), [P, F] = m(!1), [I, L] = m(!1), [R, z] = m(!1), [B, Pe] = m(null), [Fe, V] = m(!1), { data: H, loading: Ie, error: U, refetch: Le } = de({
94
- variables: { id: x },
95
- skip: !x
96
- }), [W] = pe(), [Re] = ue(), [ze] = le(), [Be] = fe(), [Ve, G] = m(!1), K = Ae(H?.application);
97
- p(() => {
98
- let e = K?.name;
99
- if (!x || !e) return;
95
+ }, [w, T] = p(!1), [E, D] = p({}), [Re, O] = p(!1), [ze, k] = p(!1), [Be, A] = p(!1), [j, M] = p(!1), [N, P] = p(!1), [F, I] = p(!1), [L, Ve] = p(null), [He, R] = p(!1), { data: z, loading: Ue, error: B, refetch: We } = ge({
96
+ variables: { id: b },
97
+ skip: !b
98
+ }), [V] = ve(), [Ge] = he(), [Ke] = pe(), [qe] = me(), H = ce(), U = le(), [Je] = _e(), [Ye, W] = p(!1), G = Fe(z?.application);
99
+ f(() => {
100
+ let e = G?.name;
101
+ if (!b || !e) return;
100
102
  let t = window.__breadcrumbRegistry;
101
- return t?.register(x, e), () => t?.unregister(x);
102
- }, [x, K?.name]);
103
- let [q, J] = m({
103
+ return t?.register(b, e), () => t?.unregister(b);
104
+ }, [b, G?.name]);
105
+ let [K, q] = p({
104
106
  name: "",
105
107
  slug: "",
106
108
  shortDescription: "",
@@ -119,300 +121,300 @@ var b = () => {
119
121
  oauthAuthUrl: "",
120
122
  oauthRevokeUrl: "",
121
123
  requiresApproval: !1
122
- }), [Y, X] = m([]);
123
- p(() => {
124
- if (K) {
125
- J({
126
- name: K.name,
127
- slug: K.slug,
128
- shortDescription: K.shortDescription || "",
129
- description: K.description || "",
130
- appType: K.appType,
131
- visibility: K.visibility,
132
- category: K.category || "",
133
- tags: K.tags,
134
- keywords: K.keywords,
135
- websiteUrl: K.websiteUrl || "",
136
- documentationUrl: K.documentationUrl || "",
137
- supportUrl: K.supportUrl || "",
138
- privacyPolicyUrl: K.privacyPolicyUrl || "",
139
- termsOfServiceUrl: K.termsOfServiceUrl || "",
140
- githubUrl: K.githubUrl || "",
141
- oauthAuthUrl: K.oauthAuthUrl || "",
142
- oauthRevokeUrl: K.oauthRevokeUrl || "",
143
- requiresApproval: K.requiresApproval
124
+ }), [J, Y] = p([]);
125
+ f(() => {
126
+ if (G) {
127
+ q({
128
+ name: G.name,
129
+ slug: G.slug,
130
+ shortDescription: G.shortDescription || "",
131
+ description: G.description || "",
132
+ appType: G.appType,
133
+ visibility: G.visibility,
134
+ category: G.category || "",
135
+ tags: G.tags,
136
+ keywords: G.keywords,
137
+ websiteUrl: G.websiteUrl || "",
138
+ documentationUrl: G.documentationUrl || "",
139
+ supportUrl: G.supportUrl || "",
140
+ privacyPolicyUrl: G.privacyPolicyUrl || "",
141
+ termsOfServiceUrl: G.termsOfServiceUrl || "",
142
+ githubUrl: G.githubUrl || "",
143
+ oauthAuthUrl: G.oauthAuthUrl || "",
144
+ oauthRevokeUrl: G.oauthRevokeUrl || "",
145
+ requiresApproval: G.requiresApproval
144
146
  });
145
- let e = H?.application?.manifest?.compatibility, t = Array.isArray(e?.products) ? e.products : [];
146
- X(t), F(!1);
147
+ let e = z?.application?.manifest?.compatibility, t = Array.isArray(e?.products) ? e.products : [];
148
+ Y(t), M(!1);
147
149
  }
148
- }, [H?.application]);
149
- let Z = (e) => {
150
- f?.(`${b}${e}`);
151
- }, Q = (e, t) => {
152
- J((n) => ({
150
+ }, [z?.application]);
151
+ let X = (e) => {
152
+ d?.(`${y}${e}`);
153
+ }, Z = (e, t) => {
154
+ q((n) => ({
153
155
  ...n,
154
156
  [e]: t
155
- })), F(!0), k[e] && A((t) => ({
157
+ })), M(!0), E[e] && D((t) => ({
156
158
  ...t,
157
159
  [e]: void 0
158
160
  }));
159
- }, $ = async () => {
160
- if (x) {
161
- z(!0);
161
+ }, Q = async () => {
162
+ if (b) {
163
+ I(!0);
162
164
  try {
163
- let e = (await Be({ variables: { id: x } })).data?.rotateApplicationSigningSecret?.signingSecret;
164
- e && (Pe(e), L(!0));
165
+ let e = (await Je({ variables: { id: b } })).data?.rotateApplicationSigningSecret?.signingSecret;
166
+ e && (Ve(e), P(!0));
165
167
  } catch {
166
- l("error");
168
+ c("error");
167
169
  } finally {
168
- z(!1);
170
+ I(!1);
169
171
  }
170
172
  }
171
- }, He = async (e) => {
172
- await navigator.clipboard.writeText(e), V(!0), setTimeout(() => V(!1), 2e3);
173
- }, Ue = () => {
173
+ }, Xe = async (e) => {
174
+ await navigator.clipboard.writeText(e), R(!0), setTimeout(() => R(!1), 2e3);
175
+ }, Ze = () => {
174
176
  let e = {};
175
- return q.name.trim() ? q.name.length < 3 ? e.name = E("devportal.appNameMinLength", "Name must be at least 3 characters") : q.name.length > 100 && (e.name = E("devportal.appNameMaxLength", "Name must be less than 100 characters")) : e.name = E("devportal.appNameRequired", "Application name is required"), q.slug.trim() ? /^[a-z0-9-]+$/.test(q.slug) || (e.slug = E("devportal.slugInvalidChars", "Slug can only contain lowercase letters, numbers, and hyphens")) : e.slug = E("devportal.slugRequired", "Slug is required"), q.shortDescription.trim() ? q.shortDescription.length > 200 && (e.shortDescription = E("devportal.shortDescriptionMaxLength", "Short description must be less than 200 characters")) : e.shortDescription = E("devportal.shortDescriptionRequired", "Short description is required"), q.appType || (e.appType = E("devportal.appTypeRequired", "Application type is required")), q.category || (e.category = E("devportal.categoryRequired", "Category is required")), A(e), Object.keys(e).length === 0;
176
- }, We = async (e) => {
177
- if (e.preventDefault(), Ue() && K) {
178
- O(!0);
177
+ return K.name.trim() ? K.name.length < 3 ? e.name = C("devportal.appNameMinLength", "Name must be at least 3 characters") : K.name.length > 100 && (e.name = C("devportal.appNameMaxLength", "Name must be less than 100 characters")) : e.name = C("devportal.appNameRequired", "Application name is required"), K.slug.trim() ? /^[a-z0-9-]+$/.test(K.slug) || (e.slug = C("devportal.slugInvalidChars", "Slug can only contain lowercase letters, numbers, and hyphens")) : e.slug = C("devportal.slugRequired", "Slug is required"), K.shortDescription.trim() ? K.shortDescription.length > 200 && (e.shortDescription = C("devportal.shortDescriptionMaxLength", "Short description must be less than 200 characters")) : e.shortDescription = C("devportal.shortDescriptionRequired", "Short description is required"), K.appType || (e.appType = C("devportal.appTypeRequired", "Application type is required")), K.category || (e.category = C("devportal.categoryRequired", "Category is required")), D(e), Object.keys(e).length === 0;
178
+ }, $ = async (e) => {
179
+ if (e.preventDefault(), Ze() && G) {
180
+ T(!0);
179
181
  try {
180
- await W({ variables: {
181
- id: K.id,
182
+ await V({ variables: {
183
+ id: G.id,
182
184
  input: {
183
- name: q.name,
184
- shortDescription: q.shortDescription,
185
- description: q.description,
186
- appType: q.appType,
187
- visibility: q.visibility,
188
- category: q.category,
189
- tags: q.tags,
190
- keywords: q.keywords,
191
- websiteUrl: q.websiteUrl || null,
192
- documentationUrl: q.documentationUrl || null,
193
- supportUrl: q.supportUrl || null,
194
- privacyPolicyUrl: q.privacyPolicyUrl || null,
195
- termsOfServiceUrl: q.termsOfServiceUrl || null,
196
- githubUrl: q.githubUrl || null,
197
- oauthAuthUrl: q.oauthAuthUrl || null,
198
- oauthRevokeUrl: q.oauthRevokeUrl || null,
199
- compatibleProducts: Y
185
+ name: K.name,
186
+ shortDescription: K.shortDescription,
187
+ description: K.description,
188
+ appType: K.appType,
189
+ visibility: K.visibility,
190
+ category: K.category,
191
+ tags: K.tags,
192
+ keywords: K.keywords,
193
+ websiteUrl: K.websiteUrl || null,
194
+ documentationUrl: K.documentationUrl || null,
195
+ supportUrl: K.supportUrl || null,
196
+ privacyPolicyUrl: K.privacyPolicyUrl || null,
197
+ termsOfServiceUrl: K.termsOfServiceUrl || null,
198
+ githubUrl: K.githubUrl || null,
199
+ oauthAuthUrl: K.oauthAuthUrl || null,
200
+ oauthRevokeUrl: K.oauthRevokeUrl || null,
201
+ compatibleProducts: J
200
202
  }
201
- } }), F(!1);
203
+ } }), M(!1);
202
204
  } catch (e) {
203
205
  console.error("Failed to update application:", e);
204
206
  } finally {
205
- O(!1);
207
+ T(!1);
206
208
  }
207
209
  }
208
- }, Ge = async () => {
209
- if (K) {
210
- c("medium");
210
+ }, Qe = async () => {
211
+ if (G) {
212
+ de("medium");
211
213
  try {
212
- await Re({ variables: { id: K.id } }), l("success"), Z("/apps");
214
+ await Ge({ variables: { id: G.id } }), c("success"), X("/apps");
213
215
  } catch (e) {
214
- l("error"), console.error("Failed to delete application:", e);
216
+ c("error"), console.error("Failed to delete application:", e);
215
217
  }
216
218
  }
217
- }, Ke = async () => {
218
- if (K) try {
219
- await W({ variables: {
220
- id: K.id,
219
+ }, $e = async () => {
220
+ if (G) try {
221
+ await V({ variables: {
222
+ id: G.id,
221
223
  input: { visibility: "PRIVATE" }
222
- } }), M(!1);
224
+ } }), k(!1);
223
225
  } catch (e) {
224
226
  console.error("Failed to deprecate application:", e);
225
227
  }
226
- }, qe = async () => {
227
- if (K) try {
228
- await ze({ variables: { id: K.id } }), N(!1), Z("/apps");
228
+ }, et = async () => {
229
+ if (G) try {
230
+ H ? await qe({ variables: { id: G.id } }) : await Ke({ variables: { id: G.id } }), A(!1), X("/apps");
229
231
  } catch (e) {
230
232
  console.error("Failed to deactivate application:", e);
231
233
  }
232
234
  };
233
- if (Ie) return /* @__PURE__ */ _(ie, { message: E("devportal.loadingApplication", "Loading application...") });
234
- if (U) return /* @__PURE__ */ _(t, {
235
- title: E("devportal.error", "Error"),
236
- backLink: `${b}/apps`,
237
- backLabel: E("devportal.backToApplications", "Back to Applications"),
238
- children: /* @__PURE__ */ v("div", {
235
+ if (Ue) return /* @__PURE__ */ g(ae, { message: C("devportal.loadingApplication", "Loading application...") });
236
+ if (B) return /* @__PURE__ */ g(t, {
237
+ title: C("devportal.error", "Error"),
238
+ backLink: `${y}/apps`,
239
+ backLabel: C("devportal.backToApplications", "Back to Applications"),
240
+ children: /* @__PURE__ */ _("div", {
239
241
  className: "flex flex-col items-center justify-center py-12 text-center",
240
242
  children: [
241
- /* @__PURE__ */ _(me, {
243
+ /* @__PURE__ */ g(ye, {
242
244
  size: 48,
243
245
  className: "text-status-error-text mb-4"
244
246
  }),
245
- /* @__PURE__ */ _("h3", {
247
+ /* @__PURE__ */ g("h3", {
246
248
  className: "text-lg font-semibold mb-2",
247
- children: E("devportal.failedToLoadApplication", "Failed to load application")
249
+ children: C("devportal.failedToLoadApplication", "Failed to load application")
248
250
  }),
249
- /* @__PURE__ */ _("p", {
251
+ /* @__PURE__ */ g("p", {
250
252
  className: "text-sm text-text-secondary",
251
- children: U.message
253
+ children: B.message
252
254
  })
253
255
  ]
254
256
  })
255
257
  });
256
- if (!K) return /* @__PURE__ */ _(t, {
257
- title: E("devportal.notFound", "Not Found"),
258
- backLink: `${b}/apps`,
259
- backLabel: E("devportal.backToApplications", "Back to Applications"),
260
- children: /* @__PURE__ */ _(ae, {
258
+ if (!G) return /* @__PURE__ */ g(t, {
259
+ title: C("devportal.notFound", "Not Found"),
260
+ backLink: `${y}/apps`,
261
+ backLabel: C("devportal.backToApplications", "Back to Applications"),
262
+ children: /* @__PURE__ */ g(oe, {
261
263
  illustration: "empty-generic",
262
- icon: /* @__PURE__ */ _(ge, { size: 48 }),
263
- title: E("devportal.applicationNotFound", "Application not found"),
264
- description: E("devportal.applicationNotFoundDescription", "The application you're looking for doesn't exist or you don't have access to it.")
264
+ icon: /* @__PURE__ */ g(xe, { size: 48 }),
265
+ title: C("devportal.applicationNotFound", "Application not found"),
266
+ description: C("devportal.applicationNotFoundDescription", "The application you're looking for doesn't exist or you don't have access to it.")
265
267
  })
266
268
  });
267
- let Je = K.status === "DRAFT" || K.status === "REJECTED", Ye = K.status === "PUBLISHED", Xe = K.status === "ACTIVE" || K.status === "PUBLISHED";
268
- return /* @__PURE__ */ _(se, {
269
+ let tt = G.status === "DRAFT" || G.status === "REJECTED", nt = G.status === "PUBLISHED", rt = G.status === "ACTIVE" || G.status === "PUBLISHED";
270
+ return /* @__PURE__ */ g(ue, {
269
271
  authOnly: !0,
270
- children: /* @__PURE__ */ v(t, {
271
- title: `${E("devportal.editAppTitlePrefix", "Edit:")} ${K.name}`,
272
- description: E("devportal.editAppDescription", "Update your application settings"),
273
- purpose: E("devportal.editAppPurpose", "Change how this app appears and behaves — its name, description, classification, links, and lifecycle settings. Use the danger zone at the bottom to deprecate or delete it when it is retired."),
274
- backLink: `${b}/apps/${K.id}`,
275
- backLabel: E("devportal.backToApplication", "Back to Application"),
276
- actions: /* @__PURE__ */ _("div", {
272
+ children: /* @__PURE__ */ _(t, {
273
+ title: `${C("devportal.editAppTitlePrefix", "Edit:")} ${G.name}`,
274
+ description: C("devportal.editAppDescription", "Update your application settings"),
275
+ purpose: C("devportal.editAppPurpose", "Change how this app appears and behaves — its name, description, classification, links, and lifecycle settings. Use the danger zone at the bottom to deprecate or delete it when it is retired."),
276
+ backLink: `${y}/apps/${G.id}`,
277
+ backLabel: C("devportal.backToApplication", "Back to Application"),
278
+ actions: /* @__PURE__ */ g("div", {
277
279
  className: "flex items-center gap-2",
278
- children: /* @__PURE__ */ _(re, {
279
- status: K.status,
280
+ children: /* @__PURE__ */ g(ie, {
281
+ status: G.status,
280
282
  type: "app"
281
283
  })
282
284
  }),
283
285
  children: [
284
- /* @__PURE__ */ v("form", {
285
- onSubmit: We,
286
+ /* @__PURE__ */ _("form", {
287
+ onSubmit: $,
286
288
  className: "space-y-8 max-w-3xl",
287
289
  children: [
288
- K.status === "PUBLISHED" && /* @__PURE__ */ v("div", {
290
+ G.status === "PUBLISHED" && /* @__PURE__ */ _("div", {
289
291
  className: "rounded-lg border border-border-subtle bg-status-warning-bg-subtle p-4 flex gap-3",
290
- children: [/* @__PURE__ */ _(he, {
292
+ children: [/* @__PURE__ */ g(be, {
291
293
  size: 20,
292
294
  className: "text-status-warning-text flex-shrink-0 mt-0.5"
293
- }), /* @__PURE__ */ v("div", {
295
+ }), /* @__PURE__ */ _("div", {
294
296
  className: "text-sm text-status-warning-text",
295
- children: [/* @__PURE__ */ _("p", {
297
+ children: [/* @__PURE__ */ g("p", {
296
298
  className: "font-medium",
297
- children: E("devportal.appIsPublished", "This application is published")
298
- }), /* @__PURE__ */ _("p", {
299
+ children: C("devportal.appIsPublished", "This application is published")
300
+ }), /* @__PURE__ */ g("p", {
299
301
  className: "mt-1 text-status-warning-text",
300
- children: E("devportal.publishedAppChangesWarning", "Changes to published apps may require re-review. Major changes will put the app back into review status.")
302
+ children: C("devportal.publishedAppChangesWarning", "Changes to published apps may require re-review. Major changes will put the app back into review status.")
301
303
  })]
302
304
  })]
303
305
  }),
304
- /* @__PURE__ */ _(n, {
305
- title: E("devportal.basicInformation", "Basic Information"),
306
- description: E("devportal.basicInformationDescription", "Core details about your application"),
307
- children: /* @__PURE__ */ v("div", {
306
+ /* @__PURE__ */ g(n, {
307
+ title: C("devportal.basicInformation", "Basic Information"),
308
+ description: C("devportal.basicInformationDescription", "Core details about your application"),
309
+ children: /* @__PURE__ */ _("div", {
308
310
  className: "space-y-4",
309
311
  children: [
310
- /* @__PURE__ */ _(i, {
311
- label: E("devportal.applicationName", "Application Name"),
312
- value: q.name,
313
- onChange: (e) => Q("name", e.target.value),
314
- placeholder: E("devportal.applicationNamePlaceholder", "My Awesome App"),
312
+ /* @__PURE__ */ g(r, {
313
+ label: C("devportal.applicationName", "Application Name"),
314
+ value: K.name,
315
+ onChange: (e) => Z("name", e.target.value),
316
+ placeholder: C("devportal.applicationNamePlaceholder", "My Awesome App"),
315
317
  required: !0,
316
- error: k.name
318
+ error: E.name
317
319
  }),
318
- /* @__PURE__ */ _(i, {
319
- label: E("devportal.slug", "Slug"),
320
- value: q.slug,
321
- onChange: (e) => Q("slug", e.target.value.toLowerCase()),
322
- placeholder: E("devportal.slugPlaceholder", "my-awesome-app"),
320
+ /* @__PURE__ */ g(r, {
321
+ label: C("devportal.slug", "Slug"),
322
+ value: K.slug,
323
+ onChange: (e) => Z("slug", e.target.value.toLowerCase()),
324
+ placeholder: C("devportal.slugPlaceholder", "my-awesome-app"),
323
325
  required: !0,
324
- error: k.slug,
325
- hint: E("devportal.slugChangeWarning", "Changing the slug may break existing integrations")
326
+ error: E.slug,
327
+ hint: C("devportal.slugChangeWarning", "Changing the slug may break existing integrations")
326
328
  }),
327
- /* @__PURE__ */ _(ee, {
328
- label: E("devportal.shortDescription", "Short Description"),
329
- value: q.shortDescription,
330
- onChange: (e) => Q("shortDescription", e.target.value),
331
- placeholder: E("devportal.shortDescriptionPlaceholder", "A brief description of what your app does"),
329
+ /* @__PURE__ */ g(te, {
330
+ label: C("devportal.shortDescription", "Short Description"),
331
+ value: K.shortDescription,
332
+ onChange: (e) => Z("shortDescription", e.target.value),
333
+ placeholder: C("devportal.shortDescriptionPlaceholder", "A brief description of what your app does"),
332
334
  required: !0,
333
- error: k.shortDescription,
334
- hint: `${q.shortDescription.length}/200 ${E("devportal.characters", "characters")}`,
335
+ error: E.shortDescription,
336
+ hint: `${K.shortDescription.length}/200 ${C("devportal.characters", "characters")}`,
335
337
  rows: 2
336
338
  }),
337
- /* @__PURE__ */ _(te, {
338
- label: E("devportal.fullDescription", "Full Description"),
339
- value: q.description,
340
- onChange: (e) => Q("description", e),
341
- placeholder: E("devportal.fullDescriptionPlaceholder", "Detailed description of your application, features, and use cases..."),
339
+ /* @__PURE__ */ g(ne, {
340
+ label: C("devportal.fullDescription", "Full Description"),
341
+ value: K.description,
342
+ onChange: (e) => Z("description", e),
343
+ placeholder: C("devportal.fullDescriptionPlaceholder", "Detailed description of your application, features, and use cases..."),
342
344
  rows: 6,
343
- hint: E("devportal.markdownSupported", "Markdown formatting is supported")
345
+ hint: C("devportal.markdownSupported", "Markdown formatting is supported")
344
346
  })
345
347
  ]
346
348
  })
347
349
  }),
348
- /* @__PURE__ */ v(n, {
349
- title: E("devportal.classification", "Classification"),
350
- description: E("devportal.classificationDescription", "Categorize your application"),
350
+ /* @__PURE__ */ _(n, {
351
+ title: C("devportal.classification", "Classification"),
352
+ description: C("devportal.classificationDescription", "Categorize your application"),
351
353
  children: [
352
- /* @__PURE__ */ v("div", {
354
+ /* @__PURE__ */ _("div", {
353
355
  className: "grid gap-4 sm:grid-cols-2",
354
356
  children: [
355
- /* @__PURE__ */ _(a, {
356
- label: E("devportal.applicationType", "Application Type"),
357
- value: q.appType,
358
- onChange: (e) => Q("appType", e.target.value),
359
- options: Oe,
357
+ /* @__PURE__ */ g(i, {
358
+ label: C("devportal.applicationType", "Application Type"),
359
+ value: K.appType,
360
+ onChange: (e) => Z("appType", e.target.value),
361
+ options: Ne,
360
362
  required: !0,
361
- error: k.appType
363
+ error: E.appType
362
364
  }),
363
- /* @__PURE__ */ _(a, {
364
- label: E("devportal.category", "Category"),
365
- value: q.category,
366
- onChange: (e) => Q("category", e.target.value),
367
- options: e(K?.category),
365
+ /* @__PURE__ */ g(i, {
366
+ label: C("devportal.category", "Category"),
367
+ value: K.category,
368
+ onChange: (e) => Z("category", e.target.value),
369
+ options: e(G?.category),
368
370
  required: !0,
369
- error: k.category
371
+ error: E.category
370
372
  }),
371
- /* @__PURE__ */ _(a, {
372
- label: E("devportal.visibility", "Visibility"),
373
- value: q.visibility,
374
- onChange: (e) => Q("visibility", e.target.value),
375
- options: K?.appType === "WORKFLOW" ? ke : y,
376
- hint: q.visibility === "PUBLIC" ? E("devportal.visibilityHintPublic", "Listed in the marketplace after review approval — anyone can discover and install it") : q.visibility === "UNLISTED" ? E("devportal.visibilityHintUnlisted", "Not in the store, but accessible via a direct link. You can still submit for marketplace review") : q.visibility === "INTERNAL" ? E("devportal.visibilityHintInternal", "Visible to all members of your developer organization — no one outside can access it") : E("devportal.visibilityHintPrivate", "Only you (the creator) can see this — other org members cannot access it")
373
+ /* @__PURE__ */ g(i, {
374
+ label: C("devportal.visibility", "Visibility"),
375
+ value: K.visibility,
376
+ onChange: (e) => Z("visibility", e.target.value),
377
+ options: G?.appType === "WORKFLOW" ? Pe : v,
378
+ hint: K.visibility === "PUBLIC" ? C("devportal.visibilityHintPublic", "Listed in the marketplace after review approval — anyone can discover and install it") : K.visibility === "UNLISTED" ? C("devportal.visibilityHintUnlisted", "Not in the store, but accessible via a direct link. You can still submit for marketplace review") : K.visibility === "INTERNAL" ? C("devportal.visibilityHintInternal", "Visible to all members of your developer organization — no one outside can access it") : C("devportal.visibilityHintPrivate", "Only you (the creator) can see this — other org members cannot access it")
377
379
  })
378
380
  ]
379
381
  }),
380
- /* @__PURE__ */ _(o, {
381
- label: E("devportal.tags", "Tags"),
382
- value: q.tags,
383
- onChange: (e) => Q("tags", e),
384
- placeholder: E("devportal.addTagsPlaceholder", "Add tags (press Enter)")
382
+ /* @__PURE__ */ g(a, {
383
+ label: C("devportal.tags", "Tags"),
384
+ value: K.tags,
385
+ onChange: (e) => Z("tags", e),
386
+ placeholder: C("devportal.addTagsPlaceholder", "Add tags (press Enter)")
385
387
  }),
386
- /* @__PURE__ */ _(o, {
387
- label: E("devportal.keywords", "Keywords"),
388
- value: q.keywords,
389
- onChange: (e) => Q("keywords", e),
390
- placeholder: E("devportal.addKeywordsPlaceholder", "Add keywords (press Enter)")
388
+ /* @__PURE__ */ g(a, {
389
+ label: C("devportal.keywords", "Keywords"),
390
+ value: K.keywords,
391
+ onChange: (e) => Z("keywords", e),
392
+ placeholder: C("devportal.addKeywordsPlaceholder", "Add keywords (press Enter)")
391
393
  }),
392
- (q.appType === "NODE" || q.appType === "WORKFLOW") && /* @__PURE__ */ v("div", {
394
+ (K.appType === "NODE" || K.appType === "WORKFLOW") && /* @__PURE__ */ _("div", {
393
395
  className: "space-y-2",
394
396
  children: [
395
- /* @__PURE__ */ _("label", {
397
+ /* @__PURE__ */ g("label", {
396
398
  className: "block text-sm font-medium text-text-primary",
397
399
  children: "Compatible Products"
398
400
  }),
399
- /* @__PURE__ */ v("p", {
401
+ /* @__PURE__ */ _("p", {
400
402
  className: "text-xs text-text-secondary",
401
403
  children: [
402
404
  "Select which products this ",
403
- q.appType.toLowerCase(),
405
+ K.appType.toLowerCase(),
404
406
  " ",
405
407
  "works with. Users will see it in those products' node stores."
406
408
  ]
407
409
  }),
408
- /* @__PURE__ */ _(ne, {
409
- options: C.map((e) => ({
410
+ /* @__PURE__ */ g(re, {
411
+ options: Le.map((e) => ({
410
412
  value: e.slug,
411
413
  label: e.name
412
414
  })),
413
- selected: Y,
415
+ selected: J,
414
416
  onChange: (e) => {
415
- X(e), F(!0);
417
+ Y(e), M(!0);
416
418
  },
417
419
  placeholder: "Select products…",
418
420
  searchPlaceholder: "Search products…"
@@ -421,94 +423,94 @@ var b = () => {
421
423
  })
422
424
  ]
423
425
  }),
424
- /* @__PURE__ */ _(n, {
425
- title: E("devportal.links", "Links"),
426
- description: E("devportal.linksDescription", "External resources for your application"),
427
- children: /* @__PURE__ */ v("div", {
426
+ /* @__PURE__ */ g(n, {
427
+ title: C("devportal.links", "Links"),
428
+ description: C("devportal.linksDescription", "External resources for your application"),
429
+ children: /* @__PURE__ */ _("div", {
428
430
  className: "grid gap-4 sm:grid-cols-2",
429
431
  children: [
430
- /* @__PURE__ */ _(i, {
431
- label: E("devportal.websiteUrl", "Website URL"),
432
+ /* @__PURE__ */ g(r, {
433
+ label: C("devportal.websiteUrl", "Website URL"),
432
434
  type: "url",
433
- value: q.websiteUrl,
434
- onChange: (e) => Q("websiteUrl", e.target.value),
435
- placeholder: E("devportal.websiteUrlPlaceholder", "https://example.com")
435
+ value: K.websiteUrl,
436
+ onChange: (e) => Z("websiteUrl", e.target.value),
437
+ placeholder: C("devportal.websiteUrlPlaceholder", "https://example.com")
436
438
  }),
437
- /* @__PURE__ */ _(i, {
438
- label: E("devportal.documentationUrl", "Documentation URL"),
439
+ /* @__PURE__ */ g(r, {
440
+ label: C("devportal.documentationUrl", "Documentation URL"),
439
441
  type: "url",
440
- value: q.documentationUrl,
441
- onChange: (e) => Q("documentationUrl", e.target.value),
442
- placeholder: E("devportal.documentationUrlPlaceholder", "https://docs.example.com")
442
+ value: K.documentationUrl,
443
+ onChange: (e) => Z("documentationUrl", e.target.value),
444
+ placeholder: C("devportal.documentationUrlPlaceholder", "https://docs.example.com")
443
445
  }),
444
- /* @__PURE__ */ _(i, {
445
- label: E("devportal.supportUrl", "Support URL"),
446
+ /* @__PURE__ */ g(r, {
447
+ label: C("devportal.supportUrl", "Support URL"),
446
448
  type: "url",
447
- value: q.supportUrl,
448
- onChange: (e) => Q("supportUrl", e.target.value),
449
- placeholder: E("devportal.supportUrlPlaceholder", "https://support.example.com")
449
+ value: K.supportUrl,
450
+ onChange: (e) => Z("supportUrl", e.target.value),
451
+ placeholder: C("devportal.supportUrlPlaceholder", "https://support.example.com")
450
452
  }),
451
- /* @__PURE__ */ _(i, {
452
- label: E("devportal.githubUrl", "GitHub URL"),
453
+ /* @__PURE__ */ g(r, {
454
+ label: C("devportal.githubUrl", "GitHub URL"),
453
455
  type: "url",
454
- value: q.githubUrl,
455
- onChange: (e) => Q("githubUrl", e.target.value),
456
- placeholder: E("devportal.githubUrlPlaceholder", "https://github.com/org/repo")
456
+ value: K.githubUrl,
457
+ onChange: (e) => Z("githubUrl", e.target.value),
458
+ placeholder: C("devportal.githubUrlPlaceholder", "https://github.com/org/repo")
457
459
  }),
458
- /* @__PURE__ */ _(i, {
459
- label: E("devportal.privacyPolicyUrl", "Privacy Policy URL"),
460
+ /* @__PURE__ */ g(r, {
461
+ label: C("devportal.privacyPolicyUrl", "Privacy Policy URL"),
460
462
  type: "url",
461
- value: q.privacyPolicyUrl,
462
- onChange: (e) => Q("privacyPolicyUrl", e.target.value),
463
- placeholder: E("devportal.privacyPolicyUrlPlaceholder", "https://example.com/privacy")
463
+ value: K.privacyPolicyUrl,
464
+ onChange: (e) => Z("privacyPolicyUrl", e.target.value),
465
+ placeholder: C("devportal.privacyPolicyUrlPlaceholder", "https://example.com/privacy")
464
466
  }),
465
- /* @__PURE__ */ _(i, {
466
- label: E("devportal.termsOfServiceUrl", "Terms of Service URL"),
467
+ /* @__PURE__ */ g(r, {
468
+ label: C("devportal.termsOfServiceUrl", "Terms of Service URL"),
467
469
  type: "url",
468
- value: q.termsOfServiceUrl,
469
- onChange: (e) => Q("termsOfServiceUrl", e.target.value),
470
- placeholder: E("devportal.termsOfServiceUrlPlaceholder", "https://example.com/terms")
470
+ value: K.termsOfServiceUrl,
471
+ onChange: (e) => Z("termsOfServiceUrl", e.target.value),
472
+ placeholder: C("devportal.termsOfServiceUrlPlaceholder", "https://example.com/terms")
471
473
  })
472
474
  ]
473
475
  })
474
476
  }),
475
- (q.appType === "INTEGRATION" || q.appType === "API_INTEGRATION") && /* @__PURE__ */ _(n, {
477
+ (K.appType === "INTEGRATION" || K.appType === "API_INTEGRATION") && /* @__PURE__ */ g(n, {
476
478
  title: "Integration Setup",
477
479
  description: "Configure the endpoints for your integration. After a user installs, we redirect them to your callback URL so your server can complete the connection.",
478
- children: /* @__PURE__ */ v("div", {
480
+ children: /* @__PURE__ */ _("div", {
479
481
  className: "space-y-4",
480
482
  children: [
481
- /* @__PURE__ */ _(i, {
483
+ /* @__PURE__ */ g(r, {
482
484
  label: "Post-install Callback URL",
483
485
  type: "url",
484
- value: q.oauthAuthUrl,
485
- onChange: (e) => Q("oauthAuthUrl", e.target.value),
486
+ value: K.oauthAuthUrl,
487
+ onChange: (e) => Z("oauthAuthUrl", e.target.value),
486
488
  placeholder: "https://yourapp.com/callback",
487
489
  hint: "Users land here after install with ?installation_id=xxx appended"
488
490
  }),
489
- /* @__PURE__ */ _(i, {
491
+ /* @__PURE__ */ g(r, {
490
492
  label: "Revoke URL",
491
493
  type: "url",
492
- value: q.oauthRevokeUrl,
493
- onChange: (e) => Q("oauthRevokeUrl", e.target.value),
494
+ value: K.oauthRevokeUrl,
495
+ onChange: (e) => Z("oauthRevokeUrl", e.target.value),
494
496
  placeholder: "https://yourapp.com/oauth/revoke",
495
497
  hint: "We POST to this URL when a user uninstalls your integration"
496
498
  }),
497
499
  (() => {
498
- let e = B ?? H?.application?.signingSecret, t = "boff_sk_" + "•".repeat(32);
499
- return /* @__PURE__ */ v("div", {
500
+ let e = L ?? z?.application?.signingSecret, t = "boff_sk_" + "•".repeat(32);
501
+ return /* @__PURE__ */ _("div", {
500
502
  className: "space-y-1.5",
501
503
  children: [
502
- /* @__PURE__ */ _("label", {
504
+ /* @__PURE__ */ g("label", {
503
505
  className: "block text-sm font-medium text-text-primary",
504
506
  children: "Signing Secret"
505
507
  }),
506
- /* @__PURE__ */ v("p", {
508
+ /* @__PURE__ */ _("p", {
507
509
  className: "text-xs text-text-secondary",
508
510
  children: [
509
511
  "Use this secret to authenticate",
510
512
  " ",
511
- /* @__PURE__ */ _("code", {
513
+ /* @__PURE__ */ g("code", {
512
514
  className: "font-mono text-xs bg-bg-sunken px-1 py-0.5 rounded",
513
515
  children: "verifyInstallation"
514
516
  }),
@@ -516,55 +518,55 @@ var b = () => {
516
518
  "calls from your integration server. Store it securely — it is only shown immediately after generation or rotation."
517
519
  ]
518
520
  }),
519
- e ? /* @__PURE__ */ v("div", {
521
+ e ? /* @__PURE__ */ _("div", {
520
522
  className: "flex items-center gap-2",
521
- children: [/* @__PURE__ */ v("div", {
523
+ children: [/* @__PURE__ */ _("div", {
522
524
  className: "flex-1 flex items-center gap-0 rounded-md border border-border-default bg-bg-sunken overflow-hidden",
523
525
  children: [
524
- /* @__PURE__ */ _("code", {
526
+ /* @__PURE__ */ g("code", {
525
527
  className: "flex-1 px-3 py-2 text-xs font-mono text-text-primary truncate",
526
- children: I ? e : t
528
+ children: N ? e : t
527
529
  }),
528
- /* @__PURE__ */ _("button", {
530
+ /* @__PURE__ */ g("button", {
529
531
  type: "button",
530
- onClick: () => L((e) => !e),
532
+ onClick: () => P((e) => !e),
531
533
  className: "px-2 py-2 text-text-secondary hover:text-text-primary border-l border-border-default",
532
- title: I ? "Hide" : "Reveal",
533
- children: _(I ? xe : be, { size: 14 })
534
+ title: N ? "Hide" : "Reveal",
535
+ children: g(N ? Ee : Te, { size: 14 })
534
536
  }),
535
- /* @__PURE__ */ _("button", {
537
+ /* @__PURE__ */ g("button", {
536
538
  type: "button",
537
- onClick: () => He(e),
539
+ onClick: () => Xe(e),
538
540
  className: "px-2 py-2 text-text-secondary hover:text-text-primary border-l border-border-default",
539
541
  title: "Copy to clipboard",
540
- children: Fe ? /* @__PURE__ */ _(ve, {
542
+ children: He ? /* @__PURE__ */ g(Ce, {
541
543
  size: 14,
542
544
  className: "text-green-500"
543
- }) : /* @__PURE__ */ _(ye, { size: 14 })
545
+ }) : /* @__PURE__ */ g(we, { size: 14 })
544
546
  })
545
547
  ]
546
- }), /* @__PURE__ */ v("button", {
548
+ }), /* @__PURE__ */ _("button", {
547
549
  type: "button",
548
- onClick: () => G(!0),
549
- disabled: R,
550
+ onClick: () => W(!0),
551
+ disabled: F,
550
552
  className: "flex items-center gap-1.5 px-3 py-2 text-xs rounded-md border border-border-default bg-bg-default text-text-primary hover:bg-bg-subtle disabled:opacity-50",
551
553
  title: "Rotate signing secret",
552
- children: [/* @__PURE__ */ _(h, {
554
+ children: [/* @__PURE__ */ g(m, {
553
555
  size: 12,
554
- className: R ? "animate-spin" : ""
556
+ className: F ? "animate-spin" : ""
555
557
  }), "Rotate"]
556
558
  })]
557
- }) : /* @__PURE__ */ v("button", {
559
+ }) : /* @__PURE__ */ _("button", {
558
560
  type: "button",
559
- onClick: $,
560
- disabled: R,
561
+ onClick: Q,
562
+ disabled: F,
561
563
  className: "flex items-center gap-1.5 px-3 py-2 text-xs rounded-md border border-border-default bg-bg-default text-text-primary hover:bg-bg-subtle disabled:opacity-50",
562
- children: [/* @__PURE__ */ _(h, {
564
+ children: [/* @__PURE__ */ g(m, {
563
565
  size: 12,
564
- className: R ? "animate-spin" : ""
566
+ className: F ? "animate-spin" : ""
565
567
  }), "Generate Signing Secret"]
566
568
  }),
567
- B && /* @__PURE__ */ _("p", {
569
+ L && /* @__PURE__ */ g("p", {
568
570
  className: "text-xs text-amber-600 dark:text-amber-400",
569
571
  children: "New secret generated. Copy it now — the old secret is already invalidated."
570
572
  })
@@ -574,111 +576,111 @@ var b = () => {
574
576
  ]
575
577
  })
576
578
  }),
577
- /* @__PURE__ */ _(n, {
578
- title: E("devportal.settings", "Settings"),
579
- description: E("devportal.settingsDescription", "Additional configuration options"),
580
- children: /* @__PURE__ */ _("div", {
579
+ /* @__PURE__ */ g(n, {
580
+ title: C("devportal.settings", "Settings"),
581
+ description: C("devportal.settingsDescription", "Additional configuration options"),
582
+ children: /* @__PURE__ */ g("div", {
581
583
  className: "space-y-4",
582
- children: /* @__PURE__ */ _(r, {
583
- label: E("devportal.requireWorkspaceAdminApproval", "Require workspace admin approval"),
584
- description: E("devportal.requireWorkspaceAdminApprovalDescription", "When enabled, workspace admins must approve installations before users can access this app"),
585
- checked: q.requiresApproval,
586
- onChange: (e) => Q("requiresApproval", e.target.checked)
584
+ children: /* @__PURE__ */ g(ee, {
585
+ label: C("devportal.requireWorkspaceAdminApproval", "Require workspace admin approval"),
586
+ description: C("devportal.requireWorkspaceAdminApprovalDescription", "When enabled, workspace admins must approve installations before users can access this app"),
587
+ checked: K.requiresApproval,
588
+ onChange: (e) => Z("requiresApproval", e.target.checked)
587
589
  })
588
590
  })
589
591
  }),
590
- Je && /* @__PURE__ */ v("div", {
592
+ tt && /* @__PURE__ */ _("div", {
591
593
  className: "rounded-lg border border-border-subtle bg-bg-sunken p-4 space-y-2",
592
- children: [/* @__PURE__ */ v("p", {
594
+ children: [/* @__PURE__ */ _("p", {
593
595
  className: "text-sm font-medium text-text-primary flex items-center gap-2",
594
- children: [/* @__PURE__ */ _(we, { size: 14 }), E("devportal.submissionChecklist", "Submission Checklist")]
596
+ children: [/* @__PURE__ */ g(ke, { size: 14 }), C("devportal.submissionChecklist", "Submission Checklist")]
595
597
  }), [
596
598
  {
597
- label: E("devportal.checkName", "Name set"),
598
- ok: !!q.name.trim()
599
+ label: C("devportal.checkName", "Name set"),
600
+ ok: !!K.name.trim()
599
601
  },
600
602
  {
601
- label: E("devportal.checkShortDesc", "Short description set"),
602
- ok: !!q.shortDescription.trim()
603
+ label: C("devportal.checkShortDesc", "Short description set"),
604
+ ok: !!K.shortDescription.trim()
603
605
  },
604
606
  {
605
- label: E("devportal.checkFullDesc", "Full description added"),
606
- ok: !!q.description.trim()
607
+ label: C("devportal.checkFullDesc", "Full description added"),
608
+ ok: !!K.description.trim()
607
609
  },
608
610
  {
609
- label: E("devportal.checkCategory", "Category selected"),
610
- ok: !!q.category
611
+ label: C("devportal.checkCategory", "Category selected"),
612
+ ok: !!K.category
611
613
  },
612
614
  {
613
- label: E("devportal.checkVisibility", "Visibility set to Public or Unlisted"),
614
- ok: !!q.visibility && q.visibility !== "PRIVATE"
615
+ label: C("devportal.checkVisibility", "Visibility set to Public or Unlisted"),
616
+ ok: !!K.visibility && K.visibility !== "PRIVATE"
615
617
  },
616
618
  {
617
- label: E("devportal.checkSaved", "All changes saved"),
618
- ok: !P
619
+ label: C("devportal.checkSaved", "All changes saved"),
620
+ ok: !j
619
621
  },
620
- ...K?.appType === "NODE" || K?.appType === "WORKFLOW" ? [{
621
- label: E("devportal.checkVersion", "At least one version uploaded"),
622
- ok: (H?.application?.versions?.totalCount ?? 0) > 0
622
+ ...G?.appType === "NODE" || G?.appType === "WORKFLOW" ? [{
623
+ label: C("devportal.checkVersion", "At least one version uploaded"),
624
+ ok: (z?.application?.versions?.totalCount ?? 0) > 0
623
625
  }] : []
624
- ].map((e) => /* @__PURE__ */ v("div", {
626
+ ].map((e) => /* @__PURE__ */ _("div", {
625
627
  className: "flex items-center gap-2 text-sm",
626
- children: [e.ok ? /* @__PURE__ */ _("span", {
628
+ children: [e.ok ? /* @__PURE__ */ g("span", {
627
629
  className: "text-status-success-text",
628
630
  children: "✓"
629
- }) : /* @__PURE__ */ _("span", {
631
+ }) : /* @__PURE__ */ g("span", {
630
632
  className: "text-status-error-text",
631
633
  children: "✗"
632
- }), /* @__PURE__ */ _("span", {
634
+ }), /* @__PURE__ */ g("span", {
633
635
  className: e.ok ? "text-text-secondary line-through" : "text-text-primary",
634
636
  children: e.label
635
637
  })]
636
638
  }, e.label))]
637
639
  }),
638
- /* @__PURE__ */ v("div", {
640
+ /* @__PURE__ */ _("div", {
639
641
  className: "flex flex-col gap-4 border-t pt-6",
640
- children: [/* @__PURE__ */ _("div", {
642
+ children: [/* @__PURE__ */ g("div", {
641
643
  className: "flex items-center justify-end",
642
- children: /* @__PURE__ */ _("button", {
644
+ children: /* @__PURE__ */ g("button", {
643
645
  type: "submit",
644
- disabled: D || !P || !w,
645
- "aria-disabled": !w,
646
+ disabled: w || !j || !x,
647
+ "aria-disabled": !x,
646
648
  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",
647
- children: D ? /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent" }), E("devportal.saving", "Saving...")] }) : /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _(Ce, { size: 16 }), E("devportal.saveChanges", "Save Changes")] })
649
+ children: w ? /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent" }), C("devportal.saving", "Saving...")] }) : /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g(Oe, { size: 16 }), C("devportal.saveChanges", "Save Changes")] })
648
650
  })
649
- }), /* @__PURE__ */ v("div", {
651
+ }), /* @__PURE__ */ _("div", {
650
652
  className: "rounded-lg border border-border-subtle bg-status-error-bg-subtle p-4",
651
653
  children: [
652
- /* @__PURE__ */ _("h3", {
654
+ /* @__PURE__ */ g("h3", {
653
655
  className: "text-sm font-medium text-status-error-text",
654
- children: E("devportal.dangerZone", "Danger Zone")
656
+ children: C("devportal.dangerZone", "Danger Zone")
655
657
  }),
656
- /* @__PURE__ */ _("p", {
658
+ /* @__PURE__ */ g("p", {
657
659
  className: "mt-1 text-sm text-status-error-text",
658
- children: E("devportal.dangerZoneWarning", "These actions are irreversible. Please proceed with caution.")
660
+ children: H ? U(s.dangerZone.key, s.dangerZone.fallback) : C("devportal.dangerZoneWarning", "These actions are irreversible. Please proceed with caution.")
659
661
  }),
660
- /* @__PURE__ */ v("div", {
662
+ /* @__PURE__ */ _("div", {
661
663
  className: "mt-4 flex gap-3",
662
664
  children: [
663
- Ye && /* @__PURE__ */ v("button", {
665
+ nt && /* @__PURE__ */ _("button", {
664
666
  type: "button",
665
- onClick: () => M(!0),
667
+ onClick: () => k(!0),
666
668
  className: "inline-flex items-center gap-2 rounded-md border border-accent-orange bg-bg-surface px-3 py-1.5 text-sm font-medium text-accent-orange hover:bg-accent-orange-subtle transition-colors",
667
- children: [/* @__PURE__ */ _(_e, { size: 14 }), E("devportal.deprecateApp", "Deprecate App")]
669
+ children: [/* @__PURE__ */ g(Se, { size: 14 }), C("devportal.deprecateApp", "Deprecate App")]
668
670
  }),
669
- Xe && /* @__PURE__ */ v("button", {
671
+ rt && /* @__PURE__ */ _("button", {
670
672
  type: "button",
671
- onClick: () => N(!0),
673
+ onClick: () => A(!0),
672
674
  className: "inline-flex items-center gap-2 rounded-md border border-accent-orange bg-bg-surface px-3 py-1.5 text-sm font-medium text-accent-orange hover:bg-accent-orange-subtle transition-colors",
673
- children: [/* @__PURE__ */ _(Se, { size: 14 }), E("devportal.deactivateApp", "Deactivate App")]
675
+ children: [/* @__PURE__ */ g(De, { size: 14 }), H ? U(s.action.key, s.action.fallback) : C("devportal.deactivateApp", "Deactivate App")]
674
676
  }),
675
- /* @__PURE__ */ v("button", {
677
+ /* @__PURE__ */ _("button", {
676
678
  type: "button",
677
- onClick: () => j(!0),
678
- disabled: !T,
679
- "aria-disabled": !T,
679
+ onClick: () => O(!0),
680
+ disabled: !S,
681
+ "aria-disabled": !S,
680
682
  className: "inline-flex items-center gap-2 rounded-md border border-status-error-bg bg-bg-surface px-3 py-1.5 text-sm font-medium text-status-error-text hover:bg-status-error-bg-subtle transition-colors disabled:opacity-50",
681
- children: [/* @__PURE__ */ _(Te, { size: 14 }), E("devportal.deleteApp", "Delete App")]
683
+ children: [/* @__PURE__ */ g(Ae, { size: 14 }), C("devportal.deleteApp", "Delete App")]
682
684
  })
683
685
  ]
684
686
  })
@@ -687,48 +689,48 @@ var b = () => {
687
689
  })
688
690
  ]
689
691
  }),
690
- /* @__PURE__ */ _(s, {
691
- open: Ve,
692
- onOpenChange: G,
693
- title: E("devportal.rotateSigningSecret", "Rotate signing secret"),
694
- description: E("devportal.rotateSigningSecretConfirm", "A new signing secret is created and the current one stops working straight away. Update every integration that verifies this app's signatures first, or they will start failing."),
695
- confirmLabel: E("devportal.rotateSecret", "Rotate secret"),
692
+ /* @__PURE__ */ g(o, {
693
+ open: Ye,
694
+ onOpenChange: W,
695
+ title: C("devportal.rotateSigningSecret", "Rotate signing secret"),
696
+ description: C("devportal.rotateSigningSecretConfirm", "A new signing secret is created and the current one stops working straight away. Update every integration that verifies this app's signatures first, or they will start failing."),
697
+ confirmLabel: C("devportal.rotateSecret", "Rotate secret"),
696
698
  variant: "warning",
697
699
  onConfirm: async () => {
698
- await $(), G(!1);
700
+ await Q(), W(!1);
699
701
  }
700
702
  }),
701
- /* @__PURE__ */ _(s, {
702
- open: je,
703
- onOpenChange: j,
704
- title: E("devportal.deleteApplication", "Delete Application"),
705
- description: E("devportal.deleteApplicationConfirm", `Are you sure you want to delete "${K.name}"? This action cannot be undone. All OAuth clients, API keys, webhooks, and analytics data will be permanently deleted.`),
706
- confirmLabel: E("devportal.deleteApplication", "Delete Application"),
703
+ /* @__PURE__ */ g(o, {
704
+ open: Re,
705
+ onOpenChange: O,
706
+ title: C("devportal.deleteApplication", "Delete Application"),
707
+ description: C("devportal.deleteApplicationConfirm", `Are you sure you want to delete "${G.name}"? This action cannot be undone. All OAuth clients, API keys, webhooks, and analytics data will be permanently deleted.`),
708
+ confirmLabel: C("devportal.deleteApplication", "Delete Application"),
707
709
  variant: "destructive",
708
- onConfirm: Ge
710
+ onConfirm: Qe
709
711
  }),
710
- /* @__PURE__ */ _(s, {
711
- open: Me,
712
- onOpenChange: M,
713
- title: E("devportal.deprecateApplication", "Deprecate Application"),
714
- description: E("devportal.deprecateApplicationConfirm", `Are you sure you want to deprecate "${K.name}"? Existing users will still be able to use the app, but it will no longer be visible in the marketplace and new installations will be disabled.`),
715
- confirmLabel: E("devportal.deprecateApplication", "Deprecate Application"),
712
+ /* @__PURE__ */ g(o, {
713
+ open: ze,
714
+ onOpenChange: k,
715
+ title: C("devportal.deprecateApplication", "Deprecate Application"),
716
+ description: C("devportal.deprecateApplicationConfirm", `Are you sure you want to deprecate "${G.name}"? Existing users will still be able to use the app, but it will no longer be visible in the marketplace and new installations will be disabled.`),
717
+ confirmLabel: C("devportal.deprecateApplication", "Deprecate Application"),
716
718
  variant: "warning",
717
- onConfirm: Ke
719
+ onConfirm: $e
718
720
  }),
719
- /* @__PURE__ */ _(s, {
720
- open: Ne,
721
- onOpenChange: N,
722
- title: E("devportal.deactivateApplication", "Deactivate Application"),
723
- description: E("devportal.deactivateApplicationConfirm", `Are you sure you want to deactivate "${K.name}"? This will revoke all active tokens and disable the app from the auth-svc layer. The app will no longer be able to authenticate or act on behalf of users.`),
724
- confirmLabel: E("devportal.deactivateApplication", "Deactivate Application"),
721
+ /* @__PURE__ */ g(o, {
722
+ open: Be,
723
+ onOpenChange: A,
724
+ title: H ? U(s.title.key, s.title.fallback) : C("devportal.deactivateApplication", "Deactivate Application"),
725
+ description: H ? U(s.description.key, s.description.fallback, { name: G.name }) : C("devportal.deactivateApplicationConfirm", `Are you sure you want to deactivate "${G.name}"? This will revoke all active tokens and disable the app from the auth-svc layer. The app will no longer be able to authenticate or act on behalf of users.`),
726
+ confirmLabel: H ? U(s.action.key, s.action.fallback) : C("devportal.deactivateApplication", "Deactivate Application"),
725
727
  variant: "destructive",
726
- onConfirm: qe
728
+ onConfirm: et
727
729
  })
728
730
  ]
729
731
  })
730
732
  });
731
733
  };
732
- export { b as EditApplicationPage };
734
+ export { y as EditApplicationPage };
733
735
 
734
736
  //# sourceMappingURL=EditApplicationPage.js.map