@burdenoff/microfe-devportal 2026.720.5 → 2026.720.7

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