@burdenoff/microfe-devportal 2026.917.1 → 2026.917.3

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