@burdenoff/microfe-devportal 2026.917.2 → 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.
- package/dist/devportal/components/MultiSelectCombobox.d.ts +38 -0
- package/dist/devportal/components/MultiSelectCombobox.d.ts.map +1 -0
- package/dist/devportal/components/MultiSelectCombobox.js +80 -0
- package/dist/devportal/components/MultiSelectCombobox.js.map +1 -0
- package/dist/devportal/pages/CreateApplicationPage.d.ts.map +1 -1
- package/dist/devportal/pages/CreateApplicationPage.js +204 -217
- package/dist/devportal/pages/CreateApplicationPage.js.map +1 -1
- package/dist/devportal/pages/EditApplicationPage.d.ts.map +1 -1
- package/dist/devportal/pages/EditApplicationPage.js +142 -154
- package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
import { useDevportal as e } from "../providers/DevportalProvider.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
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
|
|
9
|
-
import { nativeImpact as
|
|
10
|
-
import { CheckboxField as
|
|
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
|
|
13
|
-
import { MarkdownEditor as
|
|
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";
|
|
16
|
-
import { useProducts as
|
|
15
|
+
import { useProducts as de } from "../hooks/useProducts.js";
|
|
17
16
|
import "../hooks/index.js";
|
|
18
17
|
import { DEVPORTAL_PERMISSIONS as f } from "../constants/permissions.js";
|
|
18
|
+
import { MultiSelectCombobox as fe } from "../components/MultiSelectCombobox.js";
|
|
19
19
|
import { useEffect as p, useState as m } from "react";
|
|
20
|
-
import { AlertCircle as pe, AlertTriangle as me, AppWindow as he, Archive as ge, Check as
|
|
21
|
-
import { useParams as
|
|
22
|
-
import { Fragment as
|
|
23
|
-
import { useI18n as
|
|
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";
|
|
24
24
|
//#region src/devportal/pages/EditApplicationPage.tsx
|
|
25
|
-
var
|
|
25
|
+
var De = Object.entries(a).map(([e, t]) => ({
|
|
26
26
|
value: e,
|
|
27
27
|
label: t
|
|
28
|
-
})),
|
|
28
|
+
})), y = [
|
|
29
29
|
{
|
|
30
30
|
value: "PUBLIC",
|
|
31
31
|
label: "Public — listed in the marketplace after review"
|
|
@@ -38,10 +38,10 @@ var Ee = Object.entries(a).map(([e, t]) => ({
|
|
|
38
38
|
value: "INTERNAL",
|
|
39
39
|
label: "Internal — visible to your entire dev org"
|
|
40
40
|
}
|
|
41
|
-
],
|
|
41
|
+
], Oe = [...y, {
|
|
42
42
|
value: "UNLISTED",
|
|
43
43
|
label: "Unlisted — shareable via link, not listed in store"
|
|
44
|
-
}],
|
|
44
|
+
}], ke = [
|
|
45
45
|
{
|
|
46
46
|
value: "ai",
|
|
47
47
|
label: "AI & Automation"
|
|
@@ -71,7 +71,7 @@ var Ee = Object.entries(a).map(([e, t]) => ({
|
|
|
71
71
|
label: "Triggers"
|
|
72
72
|
}
|
|
73
73
|
];
|
|
74
|
-
function
|
|
74
|
+
function Ae(e) {
|
|
75
75
|
return e ? {
|
|
76
76
|
id: e.id,
|
|
77
77
|
name: e.name,
|
|
@@ -114,20 +114,20 @@ function ke(e) {
|
|
|
114
114
|
updatedAt: e.updatedAt
|
|
115
115
|
} : null;
|
|
116
116
|
}
|
|
117
|
-
var
|
|
118
|
-
let { navigate: a, basePath:
|
|
119
|
-
let n =
|
|
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);
|
|
120
120
|
return n === e ? t : n;
|
|
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 } =
|
|
122
|
-
variables: { id:
|
|
123
|
-
skip: !
|
|
124
|
-
}), [G] =
|
|
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);
|
|
125
125
|
p(() => {
|
|
126
126
|
let e = K?.name;
|
|
127
|
-
if (!
|
|
127
|
+
if (!x || !e) return;
|
|
128
128
|
let t = window.__breadcrumbRegistry;
|
|
129
|
-
return t?.register(
|
|
130
|
-
}, [
|
|
129
|
+
return t?.register(x, e), () => t?.unregister(x);
|
|
130
|
+
}, [x, K?.name]);
|
|
131
131
|
let [q, J] = m({
|
|
132
132
|
name: "",
|
|
133
133
|
slug: "",
|
|
@@ -175,7 +175,7 @@ var x = () => {
|
|
|
175
175
|
}
|
|
176
176
|
}, [U?.application]);
|
|
177
177
|
let Z = (e) => {
|
|
178
|
-
a?.(`${
|
|
178
|
+
a?.(`${b}${e}`);
|
|
179
179
|
}, Q = (e, t) => {
|
|
180
180
|
J((n) => ({
|
|
181
181
|
...n,
|
|
@@ -185,10 +185,10 @@ var x = () => {
|
|
|
185
185
|
[e]: void 0
|
|
186
186
|
}));
|
|
187
187
|
}, $ = async () => {
|
|
188
|
-
if (
|
|
188
|
+
if (x) {
|
|
189
189
|
B(!0);
|
|
190
190
|
try {
|
|
191
|
-
let e = (await ze({ variables: { id:
|
|
191
|
+
let e = (await ze({ variables: { id: x } })).data?.rotateApplicationSigningSecret?.signingSecret;
|
|
192
192
|
e && (Ne(e), R(!0));
|
|
193
193
|
} catch {
|
|
194
194
|
o("error");
|
|
@@ -235,7 +235,7 @@ var x = () => {
|
|
|
235
235
|
}
|
|
236
236
|
}, Ue = async () => {
|
|
237
237
|
if (K) {
|
|
238
|
-
|
|
238
|
+
oe("medium");
|
|
239
239
|
try {
|
|
240
240
|
await Le({ variables: { id: K.id } }), o("success"), Z("/apps");
|
|
241
241
|
} catch (e) {
|
|
@@ -258,84 +258,84 @@ var x = () => {
|
|
|
258
258
|
console.error("Failed to deactivate application:", e);
|
|
259
259
|
}
|
|
260
260
|
};
|
|
261
|
-
if (Fe) return /* @__PURE__ */
|
|
262
|
-
if (W) return /* @__PURE__ */
|
|
261
|
+
if (Fe) return /* @__PURE__ */ _(t, { message: E("devportal.loadingApplication", "Loading application...") });
|
|
262
|
+
if (W) return /* @__PURE__ */ _(r, {
|
|
263
263
|
title: E("devportal.error", "Error"),
|
|
264
|
-
backLink: `${
|
|
264
|
+
backLink: `${b}/apps`,
|
|
265
265
|
backLabel: E("devportal.backToApplications", "Back to Applications"),
|
|
266
|
-
children: /* @__PURE__ */
|
|
266
|
+
children: /* @__PURE__ */ v("div", {
|
|
267
267
|
className: "flex flex-col items-center justify-center py-12 text-center",
|
|
268
268
|
children: [
|
|
269
|
-
/* @__PURE__ */
|
|
269
|
+
/* @__PURE__ */ _(pe, {
|
|
270
270
|
size: 48,
|
|
271
271
|
className: "text-status-error-text mb-4"
|
|
272
272
|
}),
|
|
273
|
-
/* @__PURE__ */
|
|
273
|
+
/* @__PURE__ */ _("h3", {
|
|
274
274
|
className: "text-lg font-semibold mb-2",
|
|
275
275
|
children: E("devportal.failedToLoadApplication", "Failed to load application")
|
|
276
276
|
}),
|
|
277
|
-
/* @__PURE__ */
|
|
277
|
+
/* @__PURE__ */ _("p", {
|
|
278
278
|
className: "text-sm text-text-secondary",
|
|
279
279
|
children: W.message
|
|
280
280
|
})
|
|
281
281
|
]
|
|
282
282
|
})
|
|
283
283
|
});
|
|
284
|
-
if (!K) return /* @__PURE__ */
|
|
284
|
+
if (!K) return /* @__PURE__ */ _(r, {
|
|
285
285
|
title: E("devportal.notFound", "Not Found"),
|
|
286
|
-
backLink: `${
|
|
286
|
+
backLink: `${b}/apps`,
|
|
287
287
|
backLabel: E("devportal.backToApplications", "Back to Applications"),
|
|
288
|
-
children: /* @__PURE__ */
|
|
288
|
+
children: /* @__PURE__ */ _(n, {
|
|
289
289
|
illustration: "empty-generic",
|
|
290
|
-
icon: /* @__PURE__ */
|
|
290
|
+
icon: /* @__PURE__ */ _(he, { size: 48 }),
|
|
291
291
|
title: E("devportal.applicationNotFound", "Application not found"),
|
|
292
292
|
description: E("devportal.applicationNotFoundDescription", "The application you're looking for doesn't exist or you don't have access to it.")
|
|
293
293
|
})
|
|
294
294
|
});
|
|
295
295
|
let Ke = K.status === "DRAFT" || K.status === "REJECTED", qe = K.status === "PUBLISHED", Je = K.status === "ACTIVE" || K.status === "PUBLISHED";
|
|
296
|
-
return /* @__PURE__ */
|
|
296
|
+
return /* @__PURE__ */ _(le, {
|
|
297
297
|
authOnly: !0,
|
|
298
|
-
children: /* @__PURE__ */
|
|
298
|
+
children: /* @__PURE__ */ v(r, {
|
|
299
299
|
title: `${E("devportal.editAppTitlePrefix", "Edit:")} ${K.name}`,
|
|
300
300
|
description: E("devportal.editAppDescription", "Update your application settings"),
|
|
301
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."),
|
|
302
|
-
backLink: `${
|
|
302
|
+
backLink: `${b}/apps/${K.id}`,
|
|
303
303
|
backLabel: E("devportal.backToApplication", "Back to Application"),
|
|
304
|
-
actions: /* @__PURE__ */
|
|
304
|
+
actions: /* @__PURE__ */ _("div", {
|
|
305
305
|
className: "flex items-center gap-2",
|
|
306
|
-
children: /* @__PURE__ */
|
|
306
|
+
children: /* @__PURE__ */ _(ae, {
|
|
307
307
|
status: K.status,
|
|
308
308
|
type: "app"
|
|
309
309
|
})
|
|
310
310
|
}),
|
|
311
311
|
children: [
|
|
312
|
-
/* @__PURE__ */
|
|
312
|
+
/* @__PURE__ */ v("form", {
|
|
313
313
|
onSubmit: He,
|
|
314
314
|
className: "space-y-8 max-w-3xl",
|
|
315
315
|
children: [
|
|
316
|
-
K.status === "PUBLISHED" && /* @__PURE__ */
|
|
316
|
+
K.status === "PUBLISHED" && /* @__PURE__ */ v("div", {
|
|
317
317
|
className: "rounded-lg border border-border-subtle bg-status-warning-bg-subtle p-4 flex gap-3",
|
|
318
|
-
children: [/* @__PURE__ */
|
|
318
|
+
children: [/* @__PURE__ */ _(me, {
|
|
319
319
|
size: 20,
|
|
320
320
|
className: "text-status-warning-text flex-shrink-0 mt-0.5"
|
|
321
|
-
}), /* @__PURE__ */
|
|
321
|
+
}), /* @__PURE__ */ v("div", {
|
|
322
322
|
className: "text-sm text-status-warning-text",
|
|
323
|
-
children: [/* @__PURE__ */
|
|
323
|
+
children: [/* @__PURE__ */ _("p", {
|
|
324
324
|
className: "font-medium",
|
|
325
325
|
children: E("devportal.appIsPublished", "This application is published")
|
|
326
|
-
}), /* @__PURE__ */
|
|
326
|
+
}), /* @__PURE__ */ _("p", {
|
|
327
327
|
className: "mt-1 text-status-warning-text",
|
|
328
328
|
children: E("devportal.publishedAppChangesWarning", "Changes to published apps may require re-review. Major changes will put the app back into review status.")
|
|
329
329
|
})]
|
|
330
330
|
})]
|
|
331
331
|
}),
|
|
332
|
-
/* @__PURE__ */
|
|
332
|
+
/* @__PURE__ */ _(i, {
|
|
333
333
|
title: E("devportal.basicInformation", "Basic Information"),
|
|
334
334
|
description: E("devportal.basicInformationDescription", "Core details about your application"),
|
|
335
|
-
children: /* @__PURE__ */
|
|
335
|
+
children: /* @__PURE__ */ v("div", {
|
|
336
336
|
className: "space-y-4",
|
|
337
337
|
children: [
|
|
338
|
-
/* @__PURE__ */
|
|
338
|
+
/* @__PURE__ */ _(s, {
|
|
339
339
|
label: E("devportal.applicationName", "Application Name"),
|
|
340
340
|
value: q.name,
|
|
341
341
|
onChange: (e) => Q("name", e.target.value),
|
|
@@ -343,7 +343,7 @@ var x = () => {
|
|
|
343
343
|
required: !0,
|
|
344
344
|
error: k.name
|
|
345
345
|
}),
|
|
346
|
-
/* @__PURE__ */
|
|
346
|
+
/* @__PURE__ */ _(s, {
|
|
347
347
|
label: E("devportal.slug", "Slug"),
|
|
348
348
|
value: q.slug,
|
|
349
349
|
onChange: (e) => Q("slug", e.target.value.toLowerCase()),
|
|
@@ -352,7 +352,7 @@ var x = () => {
|
|
|
352
352
|
error: k.slug,
|
|
353
353
|
hint: E("devportal.slugChangeWarning", "Changing the slug may break existing integrations")
|
|
354
354
|
}),
|
|
355
|
-
/* @__PURE__ */
|
|
355
|
+
/* @__PURE__ */ _(ce, {
|
|
356
356
|
label: E("devportal.shortDescription", "Short Description"),
|
|
357
357
|
value: q.shortDescription,
|
|
358
358
|
onChange: (e) => Q("shortDescription", e.target.value),
|
|
@@ -362,7 +362,7 @@ var x = () => {
|
|
|
362
362
|
hint: `${q.shortDescription.length}/200 ${E("devportal.characters", "characters")}`,
|
|
363
363
|
rows: 2
|
|
364
364
|
}),
|
|
365
|
-
/* @__PURE__ */
|
|
365
|
+
/* @__PURE__ */ _(ue, {
|
|
366
366
|
label: E("devportal.fullDescription", "Full Description"),
|
|
367
367
|
value: q.description,
|
|
368
368
|
onChange: (e) => Q("description", e),
|
|
@@ -373,58 +373,58 @@ var x = () => {
|
|
|
373
373
|
]
|
|
374
374
|
})
|
|
375
375
|
}),
|
|
376
|
-
/* @__PURE__ */
|
|
376
|
+
/* @__PURE__ */ v(i, {
|
|
377
377
|
title: E("devportal.classification", "Classification"),
|
|
378
378
|
description: E("devportal.classificationDescription", "Categorize your application"),
|
|
379
379
|
children: [
|
|
380
|
-
/* @__PURE__ */
|
|
380
|
+
/* @__PURE__ */ v("div", {
|
|
381
381
|
className: "grid gap-4 sm:grid-cols-2",
|
|
382
382
|
children: [
|
|
383
|
-
/* @__PURE__ */
|
|
383
|
+
/* @__PURE__ */ _(c, {
|
|
384
384
|
label: E("devportal.applicationType", "Application Type"),
|
|
385
385
|
value: q.appType,
|
|
386
386
|
onChange: (e) => Q("appType", e.target.value),
|
|
387
|
-
options:
|
|
387
|
+
options: De,
|
|
388
388
|
required: !0,
|
|
389
389
|
error: k.appType
|
|
390
390
|
}),
|
|
391
|
-
/* @__PURE__ */
|
|
391
|
+
/* @__PURE__ */ _(c, {
|
|
392
392
|
label: E("devportal.category", "Category"),
|
|
393
393
|
value: q.category,
|
|
394
394
|
onChange: (e) => Q("category", e.target.value),
|
|
395
|
-
options:
|
|
395
|
+
options: ke,
|
|
396
396
|
required: !0,
|
|
397
397
|
error: k.category
|
|
398
398
|
}),
|
|
399
|
-
/* @__PURE__ */
|
|
399
|
+
/* @__PURE__ */ _(c, {
|
|
400
400
|
label: E("devportal.visibility", "Visibility"),
|
|
401
401
|
value: q.visibility,
|
|
402
402
|
onChange: (e) => Q("visibility", e.target.value),
|
|
403
|
-
options: K?.appType === "WORKFLOW" ?
|
|
403
|
+
options: K?.appType === "WORKFLOW" ? Oe : y,
|
|
404
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")
|
|
405
405
|
})
|
|
406
406
|
]
|
|
407
407
|
}),
|
|
408
|
-
/* @__PURE__ */
|
|
408
|
+
/* @__PURE__ */ _(l, {
|
|
409
409
|
label: E("devportal.tags", "Tags"),
|
|
410
410
|
value: q.tags,
|
|
411
411
|
onChange: (e) => Q("tags", e),
|
|
412
412
|
placeholder: E("devportal.addTagsPlaceholder", "Add tags (press Enter)")
|
|
413
413
|
}),
|
|
414
|
-
/* @__PURE__ */
|
|
414
|
+
/* @__PURE__ */ _(l, {
|
|
415
415
|
label: E("devportal.keywords", "Keywords"),
|
|
416
416
|
value: q.keywords,
|
|
417
417
|
onChange: (e) => Q("keywords", e),
|
|
418
418
|
placeholder: E("devportal.addKeywordsPlaceholder", "Add keywords (press Enter)")
|
|
419
419
|
}),
|
|
420
|
-
(q.appType === "NODE" || q.appType === "WORKFLOW") && /* @__PURE__ */
|
|
420
|
+
(q.appType === "NODE" || q.appType === "WORKFLOW") && /* @__PURE__ */ v("div", {
|
|
421
421
|
className: "space-y-2",
|
|
422
422
|
children: [
|
|
423
|
-
/* @__PURE__ */
|
|
423
|
+
/* @__PURE__ */ _("label", {
|
|
424
424
|
className: "block text-sm font-medium text-text-primary",
|
|
425
425
|
children: "Compatible Products"
|
|
426
426
|
}),
|
|
427
|
-
/* @__PURE__ */
|
|
427
|
+
/* @__PURE__ */ v("p", {
|
|
428
428
|
className: "text-xs text-text-secondary",
|
|
429
429
|
children: [
|
|
430
430
|
"Select which products this ",
|
|
@@ -433,76 +433,64 @@ var x = () => {
|
|
|
433
433
|
"works with. Users will see it in those products' node stores."
|
|
434
434
|
]
|
|
435
435
|
}),
|
|
436
|
-
/* @__PURE__ */
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
onChange: () => {
|
|
448
|
-
X((t) => n ? t.filter((t) => t !== e.slug) : [...t, e.slug]), I(!0);
|
|
449
|
-
}
|
|
450
|
-
}),
|
|
451
|
-
n && /* @__PURE__ */ v(h, {
|
|
452
|
-
size: 14,
|
|
453
|
-
className: "text-primary flex-shrink-0"
|
|
454
|
-
}),
|
|
455
|
-
e.name
|
|
456
|
-
]
|
|
457
|
-
}, e.id);
|
|
458
|
-
})
|
|
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…"
|
|
459
447
|
})
|
|
460
448
|
]
|
|
461
449
|
})
|
|
462
450
|
]
|
|
463
451
|
}),
|
|
464
|
-
/* @__PURE__ */
|
|
452
|
+
/* @__PURE__ */ _(i, {
|
|
465
453
|
title: E("devportal.links", "Links"),
|
|
466
454
|
description: E("devportal.linksDescription", "External resources for your application"),
|
|
467
|
-
children: /* @__PURE__ */
|
|
455
|
+
children: /* @__PURE__ */ v("div", {
|
|
468
456
|
className: "grid gap-4 sm:grid-cols-2",
|
|
469
457
|
children: [
|
|
470
|
-
/* @__PURE__ */
|
|
458
|
+
/* @__PURE__ */ _(s, {
|
|
471
459
|
label: E("devportal.websiteUrl", "Website URL"),
|
|
472
460
|
type: "url",
|
|
473
461
|
value: q.websiteUrl,
|
|
474
462
|
onChange: (e) => Q("websiteUrl", e.target.value),
|
|
475
463
|
placeholder: E("devportal.websiteUrlPlaceholder", "https://example.com")
|
|
476
464
|
}),
|
|
477
|
-
/* @__PURE__ */
|
|
465
|
+
/* @__PURE__ */ _(s, {
|
|
478
466
|
label: E("devportal.documentationUrl", "Documentation URL"),
|
|
479
467
|
type: "url",
|
|
480
468
|
value: q.documentationUrl,
|
|
481
469
|
onChange: (e) => Q("documentationUrl", e.target.value),
|
|
482
470
|
placeholder: E("devportal.documentationUrlPlaceholder", "https://docs.example.com")
|
|
483
471
|
}),
|
|
484
|
-
/* @__PURE__ */
|
|
472
|
+
/* @__PURE__ */ _(s, {
|
|
485
473
|
label: E("devportal.supportUrl", "Support URL"),
|
|
486
474
|
type: "url",
|
|
487
475
|
value: q.supportUrl,
|
|
488
476
|
onChange: (e) => Q("supportUrl", e.target.value),
|
|
489
477
|
placeholder: E("devportal.supportUrlPlaceholder", "https://support.example.com")
|
|
490
478
|
}),
|
|
491
|
-
/* @__PURE__ */
|
|
479
|
+
/* @__PURE__ */ _(s, {
|
|
492
480
|
label: E("devportal.githubUrl", "GitHub URL"),
|
|
493
481
|
type: "url",
|
|
494
482
|
value: q.githubUrl,
|
|
495
483
|
onChange: (e) => Q("githubUrl", e.target.value),
|
|
496
484
|
placeholder: E("devportal.githubUrlPlaceholder", "https://github.com/org/repo")
|
|
497
485
|
}),
|
|
498
|
-
/* @__PURE__ */
|
|
486
|
+
/* @__PURE__ */ _(s, {
|
|
499
487
|
label: E("devportal.privacyPolicyUrl", "Privacy Policy URL"),
|
|
500
488
|
type: "url",
|
|
501
489
|
value: q.privacyPolicyUrl,
|
|
502
490
|
onChange: (e) => Q("privacyPolicyUrl", e.target.value),
|
|
503
491
|
placeholder: E("devportal.privacyPolicyUrlPlaceholder", "https://example.com/privacy")
|
|
504
492
|
}),
|
|
505
|
-
/* @__PURE__ */
|
|
493
|
+
/* @__PURE__ */ _(s, {
|
|
506
494
|
label: E("devportal.termsOfServiceUrl", "Terms of Service URL"),
|
|
507
495
|
type: "url",
|
|
508
496
|
value: q.termsOfServiceUrl,
|
|
@@ -512,13 +500,13 @@ var x = () => {
|
|
|
512
500
|
]
|
|
513
501
|
})
|
|
514
502
|
}),
|
|
515
|
-
(q.appType === "INTEGRATION" || q.appType === "API_INTEGRATION") && /* @__PURE__ */
|
|
503
|
+
(q.appType === "INTEGRATION" || q.appType === "API_INTEGRATION") && /* @__PURE__ */ _(i, {
|
|
516
504
|
title: "Integration Setup",
|
|
517
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.",
|
|
518
|
-
children: /* @__PURE__ */
|
|
506
|
+
children: /* @__PURE__ */ v("div", {
|
|
519
507
|
className: "space-y-4",
|
|
520
508
|
children: [
|
|
521
|
-
/* @__PURE__ */
|
|
509
|
+
/* @__PURE__ */ _(s, {
|
|
522
510
|
label: "Post-install Callback URL",
|
|
523
511
|
type: "url",
|
|
524
512
|
value: q.oauthAuthUrl,
|
|
@@ -526,7 +514,7 @@ var x = () => {
|
|
|
526
514
|
placeholder: "https://yourapp.com/callback",
|
|
527
515
|
hint: "Users land here after install with ?installation_id=xxx appended"
|
|
528
516
|
}),
|
|
529
|
-
/* @__PURE__ */
|
|
517
|
+
/* @__PURE__ */ _(s, {
|
|
530
518
|
label: "Revoke URL",
|
|
531
519
|
type: "url",
|
|
532
520
|
value: q.oauthRevokeUrl,
|
|
@@ -536,19 +524,19 @@ var x = () => {
|
|
|
536
524
|
}),
|
|
537
525
|
(() => {
|
|
538
526
|
let e = V ?? U?.application?.signingSecret, t = "boff_sk_" + "•".repeat(32);
|
|
539
|
-
return /* @__PURE__ */
|
|
527
|
+
return /* @__PURE__ */ v("div", {
|
|
540
528
|
className: "space-y-1.5",
|
|
541
529
|
children: [
|
|
542
|
-
/* @__PURE__ */
|
|
530
|
+
/* @__PURE__ */ _("label", {
|
|
543
531
|
className: "block text-sm font-medium text-text-primary",
|
|
544
532
|
children: "Signing Secret"
|
|
545
533
|
}),
|
|
546
|
-
/* @__PURE__ */
|
|
534
|
+
/* @__PURE__ */ v("p", {
|
|
547
535
|
className: "text-xs text-text-secondary",
|
|
548
536
|
children: [
|
|
549
537
|
"Use this secret to authenticate",
|
|
550
538
|
" ",
|
|
551
|
-
/* @__PURE__ */
|
|
539
|
+
/* @__PURE__ */ _("code", {
|
|
552
540
|
className: "font-mono text-xs bg-bg-sunken px-1 py-0.5 rounded",
|
|
553
541
|
children: "verifyInstallation"
|
|
554
542
|
}),
|
|
@@ -556,55 +544,55 @@ var x = () => {
|
|
|
556
544
|
"calls from your integration server. Store it securely — it is only shown immediately after generation or rotation."
|
|
557
545
|
]
|
|
558
546
|
}),
|
|
559
|
-
e ? /* @__PURE__ */
|
|
547
|
+
e ? /* @__PURE__ */ v("div", {
|
|
560
548
|
className: "flex items-center gap-2",
|
|
561
|
-
children: [/* @__PURE__ */
|
|
549
|
+
children: [/* @__PURE__ */ v("div", {
|
|
562
550
|
className: "flex-1 flex items-center gap-0 rounded-md border border-border-default bg-bg-sunken overflow-hidden",
|
|
563
551
|
children: [
|
|
564
|
-
/* @__PURE__ */
|
|
552
|
+
/* @__PURE__ */ _("code", {
|
|
565
553
|
className: "flex-1 px-3 py-2 text-xs font-mono text-text-primary truncate",
|
|
566
554
|
children: L ? e : t
|
|
567
555
|
}),
|
|
568
|
-
/* @__PURE__ */
|
|
556
|
+
/* @__PURE__ */ _("button", {
|
|
569
557
|
type: "button",
|
|
570
558
|
onClick: () => R((e) => !e),
|
|
571
559
|
className: "px-2 py-2 text-text-secondary hover:text-text-primary border-l border-border-default",
|
|
572
560
|
title: L ? "Hide" : "Reveal",
|
|
573
|
-
children:
|
|
561
|
+
children: _(L ? be : ye, { size: 14 })
|
|
574
562
|
}),
|
|
575
|
-
/* @__PURE__ */
|
|
563
|
+
/* @__PURE__ */ _("button", {
|
|
576
564
|
type: "button",
|
|
577
565
|
onClick: () => Be(e),
|
|
578
566
|
className: "px-2 py-2 text-text-secondary hover:text-text-primary border-l border-border-default",
|
|
579
567
|
title: "Copy to clipboard",
|
|
580
|
-
children: Pe ? /* @__PURE__ */
|
|
568
|
+
children: Pe ? /* @__PURE__ */ _(_e, {
|
|
581
569
|
size: 14,
|
|
582
570
|
className: "text-green-500"
|
|
583
|
-
}) : /* @__PURE__ */
|
|
571
|
+
}) : /* @__PURE__ */ _(ve, { size: 14 })
|
|
584
572
|
})
|
|
585
573
|
]
|
|
586
|
-
}), /* @__PURE__ */
|
|
574
|
+
}), /* @__PURE__ */ v("button", {
|
|
587
575
|
type: "button",
|
|
588
576
|
onClick: $,
|
|
589
577
|
disabled: z,
|
|
590
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",
|
|
591
579
|
title: "Rotate signing secret",
|
|
592
|
-
children: [/* @__PURE__ */
|
|
580
|
+
children: [/* @__PURE__ */ _(h, {
|
|
593
581
|
size: 12,
|
|
594
582
|
className: z ? "animate-spin" : ""
|
|
595
583
|
}), "Rotate"]
|
|
596
584
|
})]
|
|
597
|
-
}) : /* @__PURE__ */
|
|
585
|
+
}) : /* @__PURE__ */ v("button", {
|
|
598
586
|
type: "button",
|
|
599
587
|
onClick: $,
|
|
600
588
|
disabled: z,
|
|
601
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",
|
|
602
|
-
children: [/* @__PURE__ */
|
|
590
|
+
children: [/* @__PURE__ */ _(h, {
|
|
603
591
|
size: 12,
|
|
604
592
|
className: z ? "animate-spin" : ""
|
|
605
593
|
}), "Generate Signing Secret"]
|
|
606
594
|
}),
|
|
607
|
-
V && /* @__PURE__ */
|
|
595
|
+
V && /* @__PURE__ */ _("p", {
|
|
608
596
|
className: "text-xs text-amber-600 dark:text-amber-400",
|
|
609
597
|
children: "New secret generated. Copy it now — the old secret is already invalidated."
|
|
610
598
|
})
|
|
@@ -614,12 +602,12 @@ var x = () => {
|
|
|
614
602
|
]
|
|
615
603
|
})
|
|
616
604
|
}),
|
|
617
|
-
/* @__PURE__ */
|
|
605
|
+
/* @__PURE__ */ _(i, {
|
|
618
606
|
title: E("devportal.settings", "Settings"),
|
|
619
607
|
description: E("devportal.settingsDescription", "Additional configuration options"),
|
|
620
|
-
children: /* @__PURE__ */
|
|
608
|
+
children: /* @__PURE__ */ _("div", {
|
|
621
609
|
className: "space-y-4",
|
|
622
|
-
children: /* @__PURE__ */
|
|
610
|
+
children: /* @__PURE__ */ _(se, {
|
|
623
611
|
label: E("devportal.requireWorkspaceAdminApproval", "Require workspace admin approval"),
|
|
624
612
|
description: E("devportal.requireWorkspaceAdminApprovalDescription", "When enabled, workspace admins must approve installations before users can access this app"),
|
|
625
613
|
checked: q.requiresApproval,
|
|
@@ -627,11 +615,11 @@ var x = () => {
|
|
|
627
615
|
})
|
|
628
616
|
})
|
|
629
617
|
}),
|
|
630
|
-
Ke && /* @__PURE__ */
|
|
618
|
+
Ke && /* @__PURE__ */ v("div", {
|
|
631
619
|
className: "rounded-lg border border-border-subtle bg-bg-sunken p-4 space-y-2",
|
|
632
|
-
children: [/* @__PURE__ */
|
|
620
|
+
children: [/* @__PURE__ */ v("p", {
|
|
633
621
|
className: "text-sm font-medium text-text-primary flex items-center gap-2",
|
|
634
|
-
children: [/* @__PURE__ */
|
|
622
|
+
children: [/* @__PURE__ */ _(Ce, { size: 14 }), E("devportal.submissionChecklist", "Submission Checklist")]
|
|
635
623
|
}), [
|
|
636
624
|
{
|
|
637
625
|
label: E("devportal.checkName", "Name set"),
|
|
@@ -661,64 +649,64 @@ var x = () => {
|
|
|
661
649
|
label: E("devportal.checkVersion", "At least one version uploaded"),
|
|
662
650
|
ok: (U?.application?.versions?.totalCount ?? 0) > 0
|
|
663
651
|
}] : []
|
|
664
|
-
].map((e) => /* @__PURE__ */
|
|
652
|
+
].map((e) => /* @__PURE__ */ v("div", {
|
|
665
653
|
className: "flex items-center gap-2 text-sm",
|
|
666
|
-
children: [e.ok ? /* @__PURE__ */
|
|
654
|
+
children: [e.ok ? /* @__PURE__ */ _("span", {
|
|
667
655
|
className: "text-status-success-text",
|
|
668
656
|
children: "✓"
|
|
669
|
-
}) : /* @__PURE__ */
|
|
657
|
+
}) : /* @__PURE__ */ _("span", {
|
|
670
658
|
className: "text-status-error-text",
|
|
671
659
|
children: "✗"
|
|
672
|
-
}), /* @__PURE__ */
|
|
660
|
+
}), /* @__PURE__ */ _("span", {
|
|
673
661
|
className: e.ok ? "text-text-secondary line-through" : "text-text-primary",
|
|
674
662
|
children: e.label
|
|
675
663
|
})]
|
|
676
664
|
}, e.label))]
|
|
677
665
|
}),
|
|
678
|
-
/* @__PURE__ */
|
|
666
|
+
/* @__PURE__ */ v("div", {
|
|
679
667
|
className: "flex flex-col gap-4 border-t pt-6",
|
|
680
|
-
children: [/* @__PURE__ */
|
|
668
|
+
children: [/* @__PURE__ */ _("div", {
|
|
681
669
|
className: "flex items-center justify-end",
|
|
682
|
-
children: /* @__PURE__ */
|
|
670
|
+
children: /* @__PURE__ */ _("button", {
|
|
683
671
|
type: "submit",
|
|
684
672
|
disabled: D || !F || !w,
|
|
685
673
|
"aria-disabled": !w,
|
|
686
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",
|
|
687
|
-
children: D ? /* @__PURE__ */
|
|
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")] })
|
|
688
676
|
})
|
|
689
|
-
}), /* @__PURE__ */
|
|
677
|
+
}), /* @__PURE__ */ v("div", {
|
|
690
678
|
className: "rounded-lg border border-border-subtle bg-status-error-bg-subtle p-4",
|
|
691
679
|
children: [
|
|
692
|
-
/* @__PURE__ */
|
|
680
|
+
/* @__PURE__ */ _("h3", {
|
|
693
681
|
className: "text-sm font-medium text-status-error-text",
|
|
694
682
|
children: E("devportal.dangerZone", "Danger Zone")
|
|
695
683
|
}),
|
|
696
|
-
/* @__PURE__ */
|
|
684
|
+
/* @__PURE__ */ _("p", {
|
|
697
685
|
className: "mt-1 text-sm text-status-error-text",
|
|
698
686
|
children: E("devportal.dangerZoneWarning", "These actions are irreversible. Please proceed with caution.")
|
|
699
687
|
}),
|
|
700
|
-
/* @__PURE__ */
|
|
688
|
+
/* @__PURE__ */ v("div", {
|
|
701
689
|
className: "mt-4 flex gap-3",
|
|
702
690
|
children: [
|
|
703
|
-
qe && /* @__PURE__ */
|
|
691
|
+
qe && /* @__PURE__ */ v("button", {
|
|
704
692
|
type: "button",
|
|
705
693
|
onClick: () => M(!0),
|
|
706
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",
|
|
707
|
-
children: [/* @__PURE__ */
|
|
695
|
+
children: [/* @__PURE__ */ _(ge, { size: 14 }), E("devportal.deprecateApp", "Deprecate App")]
|
|
708
696
|
}),
|
|
709
|
-
Je && /* @__PURE__ */
|
|
697
|
+
Je && /* @__PURE__ */ v("button", {
|
|
710
698
|
type: "button",
|
|
711
699
|
onClick: () => P(!0),
|
|
712
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",
|
|
713
|
-
children: [/* @__PURE__ */
|
|
701
|
+
children: [/* @__PURE__ */ _(xe, { size: 14 }), E("devportal.deactivateApp", "Deactivate App")]
|
|
714
702
|
}),
|
|
715
|
-
/* @__PURE__ */
|
|
703
|
+
/* @__PURE__ */ v("button", {
|
|
716
704
|
type: "button",
|
|
717
705
|
onClick: () => j(!0),
|
|
718
706
|
disabled: !T,
|
|
719
707
|
"aria-disabled": !T,
|
|
720
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",
|
|
721
|
-
children: [/* @__PURE__ */
|
|
709
|
+
children: [/* @__PURE__ */ _(we, { size: 14 }), E("devportal.deleteApp", "Delete App")]
|
|
722
710
|
})
|
|
723
711
|
]
|
|
724
712
|
})
|
|
@@ -727,7 +715,7 @@ var x = () => {
|
|
|
727
715
|
})
|
|
728
716
|
]
|
|
729
717
|
}),
|
|
730
|
-
/* @__PURE__ */
|
|
718
|
+
/* @__PURE__ */ _(u, {
|
|
731
719
|
open: je,
|
|
732
720
|
onOpenChange: j,
|
|
733
721
|
title: E("devportal.deleteApplication", "Delete Application"),
|
|
@@ -736,7 +724,7 @@ var x = () => {
|
|
|
736
724
|
variant: "destructive",
|
|
737
725
|
onConfirm: Ue
|
|
738
726
|
}),
|
|
739
|
-
/* @__PURE__ */
|
|
727
|
+
/* @__PURE__ */ _(u, {
|
|
740
728
|
open: Me,
|
|
741
729
|
onOpenChange: M,
|
|
742
730
|
title: E("devportal.deprecateApplication", "Deprecate Application"),
|
|
@@ -745,7 +733,7 @@ var x = () => {
|
|
|
745
733
|
variant: "warning",
|
|
746
734
|
onConfirm: We
|
|
747
735
|
}),
|
|
748
|
-
/* @__PURE__ */
|
|
736
|
+
/* @__PURE__ */ _(u, {
|
|
749
737
|
open: N,
|
|
750
738
|
onOpenChange: P,
|
|
751
739
|
title: E("devportal.deactivateApplication", "Deactivate Application"),
|
|
@@ -759,6 +747,6 @@ var x = () => {
|
|
|
759
747
|
});
|
|
760
748
|
};
|
|
761
749
|
//#endregion
|
|
762
|
-
export {
|
|
750
|
+
export { b as EditApplicationPage };
|
|
763
751
|
|
|
764
752
|
//# sourceMappingURL=EditApplicationPage.js.map
|