@burdenoff/microfe-devportal 2026.1102.1 → 2026.1107.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/devportal/constants/appCategories.d.ts +26 -0
- package/dist/devportal/constants/appCategories.d.ts.map +1 -0
- package/dist/devportal/constants/appCategories.js +45 -0
- package/dist/devportal/constants/appCategories.js.map +1 -0
- package/dist/devportal/hooks/usePackageUpload.d.ts +3 -0
- package/dist/devportal/hooks/usePackageUpload.d.ts.map +1 -1
- package/dist/devportal/hooks/usePackageUpload.js +41 -32
- package/dist/devportal/hooks/usePackageUpload.js.map +1 -1
- package/dist/devportal/pages/ApplicationDetailPage.d.ts.map +1 -1
- package/dist/devportal/pages/ApplicationDetailPage.js +233 -232
- package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
- package/dist/devportal/pages/CreateApplicationPage.d.ts.map +1 -1
- package/dist/devportal/pages/CreateApplicationPage.js +100 -128
- 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 +24 -52
- package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
- package/dist/devportal/pages/SetupPage.d.ts.map +1 -1
- package/dist/devportal/pages/SetupPage.js +20 -69
- package/dist/devportal/pages/SetupPage.js.map +1 -1
- package/dist/devportal/utils/uploadErrors.d.ts +46 -0
- package/dist/devportal/utils/uploadErrors.d.ts.map +1 -0
- package/dist/devportal/utils/uploadErrors.js +62 -0
- package/dist/devportal/utils/uploadErrors.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateApplicationPage.d.ts","sourceRoot":"","sources":["../../../src/devportal/pages/CreateApplicationPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"CreateApplicationPage.d.ts","sourceRoot":"","sources":["../../../src/devportal/pages/CreateApplicationPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAyahC,eAAO,MAAM,qBAAqB,EAAE,EA6hBnC,CAAC"}
|
|
@@ -9,13 +9,14 @@ import { MarkdownEditor as u } from "../components/MarkdownEditor.js";
|
|
|
9
9
|
import "../components/index.js";
|
|
10
10
|
import { useProducts as ee } from "../hooks/useProducts.js";
|
|
11
11
|
import "../hooks/index.js";
|
|
12
|
-
import {
|
|
12
|
+
import { APP_CATEGORY_OPTIONS as te } from "../constants/appCategories.js";
|
|
13
|
+
import { MultiSelectCombobox as ne } from "../components/MultiSelectCombobox.js";
|
|
13
14
|
import { useRef as d, useState as f } from "react";
|
|
14
|
-
import { ArrowLeft as p, Box as m, Check as h, ChevronRight as g, FileCode2 as _, GitFork as v, Info as y, LayoutDashboard as b, LayoutGrid as x, Loader2 as
|
|
15
|
-
import { Fragment as
|
|
16
|
-
import { useI18n as
|
|
15
|
+
import { ArrowLeft as p, Box as m, Check as h, ChevronRight as g, FileCode2 as _, GitFork as v, Info as y, LayoutDashboard as b, LayoutGrid as x, Loader2 as re, Puzzle as S, Save as C, X as w } from "lucide-react";
|
|
16
|
+
import { Fragment as T, jsx as E, jsxs as D } from "react/jsx-runtime";
|
|
17
|
+
import { useI18n as O } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
17
18
|
//#region src/devportal/pages/CreateApplicationPage.tsx
|
|
18
|
-
var
|
|
19
|
+
var k = {
|
|
19
20
|
app: {
|
|
20
21
|
appType: "API_INTEGRATION",
|
|
21
22
|
icon: m,
|
|
@@ -106,7 +107,7 @@ var O = {
|
|
|
106
107
|
"Publish to store"
|
|
107
108
|
]
|
|
108
109
|
}
|
|
109
|
-
},
|
|
110
|
+
}, A = [
|
|
110
111
|
{
|
|
111
112
|
id: "auth",
|
|
112
113
|
label: "Authentication",
|
|
@@ -178,16 +179,16 @@ var O = {
|
|
|
178
179
|
description: "Access control configuration"
|
|
179
180
|
}
|
|
180
181
|
];
|
|
181
|
-
function
|
|
182
|
-
return Object.fromEntries(
|
|
182
|
+
function j() {
|
|
183
|
+
return Object.fromEntries(A.map((e) => [e.id, "none"]));
|
|
183
184
|
}
|
|
184
|
-
function
|
|
185
|
+
function M(e) {
|
|
185
186
|
return Object.entries(e).filter(([, e]) => e !== "none").map(([e, t]) => ({
|
|
186
187
|
resource: e,
|
|
187
188
|
level: t
|
|
188
189
|
}));
|
|
189
190
|
}
|
|
190
|
-
var
|
|
191
|
+
var N = [
|
|
191
192
|
{
|
|
192
193
|
value: "PUBLIC",
|
|
193
194
|
label: "Public — listed in the marketplace after review"
|
|
@@ -200,66 +201,37 @@ var M = [
|
|
|
200
201
|
value: "INTERNAL",
|
|
201
202
|
label: "Internal — visible to your entire dev org"
|
|
202
203
|
}
|
|
203
|
-
],
|
|
204
|
+
], P = [...N, {
|
|
204
205
|
value: "UNLISTED",
|
|
205
206
|
label: "Unlisted — shareable via link, not listed in store"
|
|
206
|
-
}],
|
|
207
|
-
{
|
|
208
|
-
value: "ai",
|
|
209
|
-
label: "AI & Automation"
|
|
210
|
-
},
|
|
211
|
-
{
|
|
212
|
-
value: "integration",
|
|
213
|
-
label: "Action in an App"
|
|
214
|
-
},
|
|
215
|
-
{
|
|
216
|
-
value: "data",
|
|
217
|
-
label: "Data & Transform"
|
|
218
|
-
},
|
|
219
|
-
{
|
|
220
|
-
value: "flow",
|
|
221
|
-
label: "Flow & Logic"
|
|
222
|
-
},
|
|
223
|
-
{
|
|
224
|
-
value: "core",
|
|
225
|
-
label: "Core"
|
|
226
|
-
},
|
|
227
|
-
{
|
|
228
|
-
value: "communication",
|
|
229
|
-
label: "Communication"
|
|
230
|
-
},
|
|
231
|
-
{
|
|
232
|
-
value: "trigger",
|
|
233
|
-
label: "Triggers"
|
|
234
|
-
}
|
|
235
|
-
], F = ({ icon: e, title: n, description: r, bullets: i, selected: a, onClick: o }) => /* @__PURE__ */ E("button", {
|
|
207
|
+
}], F = ({ icon: e, title: n, description: r, bullets: i, selected: a, onClick: o }) => /* @__PURE__ */ D("button", {
|
|
236
208
|
type: "button",
|
|
237
209
|
onClick: o,
|
|
238
210
|
className: t("relative flex flex-col gap-3 rounded-xl border-2 p-6 text-left transition-all hover:border-primary/50 hover:shadow-sm", a ? "border-primary bg-action-primary-bg/5 shadow-sm" : "border-border-subtle bg-bg-surface"),
|
|
239
211
|
children: [
|
|
240
|
-
a && /* @__PURE__ */
|
|
212
|
+
a && /* @__PURE__ */ E("span", {
|
|
241
213
|
className: "absolute top-4 right-4 flex h-5 w-5 items-center justify-center rounded-full bg-action-primary-bg text-action-primary-text",
|
|
242
|
-
children: /* @__PURE__ */
|
|
214
|
+
children: /* @__PURE__ */ E(h, { size: 12 })
|
|
243
215
|
}),
|
|
244
|
-
/* @__PURE__ */
|
|
216
|
+
/* @__PURE__ */ E("div", {
|
|
245
217
|
className: "flex h-10 w-10 items-center justify-center rounded-lg bg-bg-sunken",
|
|
246
|
-
children: /* @__PURE__ */
|
|
218
|
+
children: /* @__PURE__ */ E(e, {
|
|
247
219
|
size: 22,
|
|
248
220
|
className: "text-text-primary"
|
|
249
221
|
})
|
|
250
222
|
}),
|
|
251
|
-
/* @__PURE__ */
|
|
223
|
+
/* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("p", {
|
|
252
224
|
className: "font-semibold text-text-primary",
|
|
253
225
|
children: n
|
|
254
|
-
}), /* @__PURE__ */
|
|
226
|
+
}), /* @__PURE__ */ E("p", {
|
|
255
227
|
className: "mt-1 text-sm text-text-secondary",
|
|
256
228
|
children: r
|
|
257
229
|
})] }),
|
|
258
|
-
/* @__PURE__ */
|
|
230
|
+
/* @__PURE__ */ E("ul", {
|
|
259
231
|
className: "mt-1 space-y-1",
|
|
260
|
-
children: i.map((e) => /* @__PURE__ */
|
|
232
|
+
children: i.map((e) => /* @__PURE__ */ D("li", {
|
|
261
233
|
className: "flex items-center gap-2 text-xs text-text-secondary",
|
|
262
|
-
children: [/* @__PURE__ */
|
|
234
|
+
children: [/* @__PURE__ */ E(g, {
|
|
263
235
|
size: 12,
|
|
264
236
|
className: "flex-shrink-0 text-primary"
|
|
265
237
|
}), e]
|
|
@@ -276,35 +248,35 @@ var M = [
|
|
|
276
248
|
read: "Read",
|
|
277
249
|
write: "Read & Write"
|
|
278
250
|
};
|
|
279
|
-
return /* @__PURE__ */
|
|
251
|
+
return /* @__PURE__ */ E("div", {
|
|
280
252
|
className: "overflow-x-auto rounded-lg border border-border-subtle",
|
|
281
|
-
children: /* @__PURE__ */
|
|
253
|
+
children: /* @__PURE__ */ D("table", {
|
|
282
254
|
className: "w-full text-sm",
|
|
283
|
-
children: [/* @__PURE__ */
|
|
255
|
+
children: [/* @__PURE__ */ E("thead", { children: /* @__PURE__ */ D("tr", {
|
|
284
256
|
className: "border-b border-border-subtle bg-bg-sunken/50",
|
|
285
|
-
children: [/* @__PURE__ */
|
|
257
|
+
children: [/* @__PURE__ */ E("th", {
|
|
286
258
|
className: "px-4 py-3 text-left font-medium text-text-secondary w-1/2",
|
|
287
259
|
children: "Resource"
|
|
288
|
-
}), n.map((e) => /* @__PURE__ */
|
|
260
|
+
}), n.map((e) => /* @__PURE__ */ E("th", {
|
|
289
261
|
className: "px-4 py-3 text-center font-medium text-text-secondary",
|
|
290
262
|
children: r[e]
|
|
291
263
|
}, e))]
|
|
292
|
-
}) }), /* @__PURE__ */
|
|
264
|
+
}) }), /* @__PURE__ */ E("tbody", {
|
|
293
265
|
className: "divide-y divide-border",
|
|
294
|
-
children:
|
|
266
|
+
children: A.map((r) => /* @__PURE__ */ D("tr", {
|
|
295
267
|
className: "hover:bg-bg-sunken/30 transition-colors",
|
|
296
|
-
children: [/* @__PURE__ */
|
|
268
|
+
children: [/* @__PURE__ */ D("td", {
|
|
297
269
|
className: "px-4 py-3",
|
|
298
|
-
children: [/* @__PURE__ */
|
|
270
|
+
children: [/* @__PURE__ */ E("p", {
|
|
299
271
|
className: "font-medium text-text-primary",
|
|
300
272
|
children: r.label
|
|
301
|
-
}), /* @__PURE__ */
|
|
273
|
+
}), /* @__PURE__ */ E("p", {
|
|
302
274
|
className: "text-xs text-text-secondary",
|
|
303
275
|
children: r.description
|
|
304
276
|
})]
|
|
305
|
-
}), n.map((n) => /* @__PURE__ */
|
|
277
|
+
}), n.map((n) => /* @__PURE__ */ E("td", {
|
|
306
278
|
className: "px-4 py-3 text-center",
|
|
307
|
-
children: /* @__PURE__ */
|
|
279
|
+
children: /* @__PURE__ */ E("input", {
|
|
308
280
|
type: "radio",
|
|
309
281
|
name: `permission-${r.id}`,
|
|
310
282
|
value: n,
|
|
@@ -318,10 +290,10 @@ var M = [
|
|
|
318
290
|
})
|
|
319
291
|
});
|
|
320
292
|
}, L = () => {
|
|
321
|
-
let { navigate: t, basePath: m, activeOrgId: h } = e(), { t: g } =
|
|
293
|
+
let { navigate: t, basePath: m, activeOrgId: h } = e(), { t: g } = O(), _ = (e, t) => {
|
|
322
294
|
let n = g(e);
|
|
323
295
|
return n === e ? t : n;
|
|
324
|
-
}, v = n(), { products: b } = ee(), [x, S] = f(null), [
|
|
296
|
+
}, v = n(), { products: b } = ee(), [x, S] = f(null), [A, L] = f([]), [R, z] = f(j()), B = d(!1), [V, H] = f({
|
|
325
297
|
name: "",
|
|
326
298
|
slug: "",
|
|
327
299
|
shortDescription: "",
|
|
@@ -378,10 +350,10 @@ var M = [
|
|
|
378
350
|
}));
|
|
379
351
|
}, ce = () => {
|
|
380
352
|
let e = {};
|
|
381
|
-
return V.name.trim() ? V.name.length < 3 ? e.name = "Name must be at least 3 characters" : V.name.length > 100 && (e.name = "Name must be less than 100 characters") : e.name = "Name is required", V.slug.trim() ? /^[a-z0-9-]+$/.test(V.slug) || (e.slug = "Slug can only contain lowercase letters, numbers, and hyphens") : e.slug = "Slug is required", V.shortDescription.trim() ? V.shortDescription.length > 200 && (e.shortDescription = "Short description must be less than 200 characters") : e.shortDescription = "Short description is required", V.category || (e.category = "Category is required"), x !== "app" &&
|
|
382
|
-
}, Z = () =>
|
|
353
|
+
return V.name.trim() ? V.name.length < 3 ? e.name = "Name must be at least 3 characters" : V.name.length > 100 && (e.name = "Name must be less than 100 characters") : e.name = "Name is required", V.slug.trim() ? /^[a-z0-9-]+$/.test(V.slug) || (e.slug = "Slug can only contain lowercase letters, numbers, and hyphens") : e.slug = "Slug is required", V.shortDescription.trim() ? V.shortDescription.length > 200 && (e.shortDescription = "Short description must be less than 200 characters") : e.shortDescription = "Short description is required", V.category || (e.category = "Category is required"), x !== "app" && A.length === 0 && (e.compatibleProducts = "Select at least one compatible product so users can find this in the right store"), W(e), Object.keys(e).length === 0;
|
|
354
|
+
}, Z = () => k[x ?? "app"].appType, le = async (e) => {
|
|
383
355
|
if (e.preventDefault(), !ce() || !x) return;
|
|
384
|
-
let t = x === "app" ? { permissions:
|
|
356
|
+
let t = x === "app" ? { permissions: M(R) } : null;
|
|
385
357
|
try {
|
|
386
358
|
let e = await G({ variables: { input: {
|
|
387
359
|
name: V.name,
|
|
@@ -397,7 +369,7 @@ var M = [
|
|
|
397
369
|
documentationUrl: V.documentationUrl || void 0,
|
|
398
370
|
supportUrl: V.supportUrl || void 0,
|
|
399
371
|
manifest: t ?? void 0,
|
|
400
|
-
compatibleProducts:
|
|
372
|
+
compatibleProducts: A.length > 0 ? A : void 0,
|
|
401
373
|
...x === "app" && {
|
|
402
374
|
oauthAuthUrl: V.oauthAuthUrl || void 0,
|
|
403
375
|
oauthTokenUrl: V.oauthTokenUrl || void 0,
|
|
@@ -423,17 +395,17 @@ var M = [
|
|
|
423
395
|
}));
|
|
424
396
|
}
|
|
425
397
|
};
|
|
426
|
-
if (!x) return /* @__PURE__ */
|
|
398
|
+
if (!x) return /* @__PURE__ */ E(l, {
|
|
427
399
|
authOnly: !0,
|
|
428
|
-
children: /* @__PURE__ */
|
|
400
|
+
children: /* @__PURE__ */ E(a, {
|
|
429
401
|
title: "What do you want to build?",
|
|
430
402
|
description: "Choose a builder type to get started",
|
|
431
403
|
purpose: "Pick the kind of integration you are creating — a standard app, a Node package, or a workflow. Your choice sets up the right defaults (credentials, permissions, and where it can be installed) so you only fill in what that type actually needs.",
|
|
432
404
|
backLink: `${m}/apps`,
|
|
433
405
|
backLabel: "Back to Applications",
|
|
434
|
-
children: /* @__PURE__ */
|
|
406
|
+
children: /* @__PURE__ */ D("div", {
|
|
435
407
|
className: "max-w-3xl space-y-6",
|
|
436
|
-
children: [/* @__PURE__ */
|
|
408
|
+
children: [/* @__PURE__ */ E("div", {
|
|
437
409
|
className: "grid gap-4 sm:grid-cols-3",
|
|
438
410
|
children: [
|
|
439
411
|
"app",
|
|
@@ -443,8 +415,8 @@ var M = [
|
|
|
443
415
|
"widget",
|
|
444
416
|
"dashboard"
|
|
445
417
|
].map((e) => {
|
|
446
|
-
let t =
|
|
447
|
-
return /* @__PURE__ */
|
|
418
|
+
let t = k[e];
|
|
419
|
+
return /* @__PURE__ */ E(F, {
|
|
448
420
|
icon: t.icon,
|
|
449
421
|
title: t.label,
|
|
450
422
|
description: t.cardDescription,
|
|
@@ -453,48 +425,48 @@ var M = [
|
|
|
453
425
|
onClick: () => S(e)
|
|
454
426
|
}, e);
|
|
455
427
|
})
|
|
456
|
-
}), /* @__PURE__ */
|
|
428
|
+
}), /* @__PURE__ */ D("div", {
|
|
457
429
|
className: "rounded-lg border border-border-subtle bg-bg-sunken/30 p-4 flex gap-3 text-sm text-text-secondary",
|
|
458
|
-
children: [/* @__PURE__ */
|
|
430
|
+
children: [/* @__PURE__ */ E(y, {
|
|
459
431
|
size: 16,
|
|
460
432
|
className: "flex-shrink-0 mt-0.5"
|
|
461
|
-
}), /* @__PURE__ */
|
|
433
|
+
}), /* @__PURE__ */ E("p", { children: "Apps use OAuth to interact with platform data. Nodes and Workflows are packaged files you upload after creation." })]
|
|
462
434
|
})]
|
|
463
435
|
})
|
|
464
436
|
})
|
|
465
437
|
});
|
|
466
|
-
let Q =
|
|
467
|
-
return /* @__PURE__ */
|
|
438
|
+
let Q = k[x ?? "app"], $ = Q.label, ue = Q.icon, de = /* @__PURE__ */ E(ue, { size: 16 });
|
|
439
|
+
return /* @__PURE__ */ E(l, {
|
|
468
440
|
authOnly: !0,
|
|
469
|
-
children: /* @__PURE__ */
|
|
441
|
+
children: /* @__PURE__ */ E(a, {
|
|
470
442
|
title: `Create ${$}`,
|
|
471
443
|
description: Q.pageDescription,
|
|
472
444
|
purpose: Q.purpose,
|
|
473
445
|
backLink: `${m}/apps`,
|
|
474
446
|
backLabel: "Back to Applications",
|
|
475
|
-
children: /* @__PURE__ */
|
|
447
|
+
children: /* @__PURE__ */ D("form", {
|
|
476
448
|
onSubmit: le,
|
|
477
449
|
className: "space-y-8 max-w-3xl",
|
|
478
450
|
children: [
|
|
479
|
-
/* @__PURE__ */
|
|
451
|
+
/* @__PURE__ */ D("div", {
|
|
480
452
|
className: "flex items-center gap-3",
|
|
481
|
-
children: [/* @__PURE__ */
|
|
453
|
+
children: [/* @__PURE__ */ D("button", {
|
|
482
454
|
type: "button",
|
|
483
455
|
onClick: () => S(null),
|
|
484
456
|
className: "flex items-center gap-1.5 text-sm text-text-secondary hover:text-text-primary transition-colors",
|
|
485
|
-
children: [/* @__PURE__ */
|
|
486
|
-
}), /* @__PURE__ */
|
|
457
|
+
children: [/* @__PURE__ */ E(p, { size: 14 }), "Change type"]
|
|
458
|
+
}), /* @__PURE__ */ D("span", {
|
|
487
459
|
className: "flex items-center gap-1.5 rounded-full border border-border-subtle bg-bg-sunken px-3 py-1 text-xs font-medium",
|
|
488
460
|
children: [de, $]
|
|
489
461
|
})]
|
|
490
462
|
}),
|
|
491
|
-
/* @__PURE__ */
|
|
463
|
+
/* @__PURE__ */ E(o, {
|
|
492
464
|
title: "Basic Information",
|
|
493
465
|
description: "Core details about your application",
|
|
494
|
-
children: /* @__PURE__ */
|
|
466
|
+
children: /* @__PURE__ */ D("div", {
|
|
495
467
|
className: "space-y-4",
|
|
496
468
|
children: [
|
|
497
|
-
/* @__PURE__ */
|
|
469
|
+
/* @__PURE__ */ E(s, {
|
|
498
470
|
label: "Name",
|
|
499
471
|
value: V.name,
|
|
500
472
|
onChange: ae,
|
|
@@ -502,7 +474,7 @@ var M = [
|
|
|
502
474
|
required: !0,
|
|
503
475
|
error: U.name
|
|
504
476
|
}),
|
|
505
|
-
/* @__PURE__ */
|
|
477
|
+
/* @__PURE__ */ E(s, {
|
|
506
478
|
label: "Slug",
|
|
507
479
|
value: V.slug,
|
|
508
480
|
onChange: oe,
|
|
@@ -511,7 +483,7 @@ var M = [
|
|
|
511
483
|
error: U.slug,
|
|
512
484
|
hint: B.current ? "Only lowercase letters, numbers, and hyphens" : "Auto-generated from name — edit to customise"
|
|
513
485
|
}),
|
|
514
|
-
/* @__PURE__ */
|
|
486
|
+
/* @__PURE__ */ E(u, {
|
|
515
487
|
label: "Short Description",
|
|
516
488
|
value: V.shortDescription,
|
|
517
489
|
onChange: (e) => X("shortDescription", e),
|
|
@@ -522,36 +494,36 @@ var M = [
|
|
|
522
494
|
rows: 2,
|
|
523
495
|
maxLength: 200
|
|
524
496
|
}),
|
|
525
|
-
/* @__PURE__ */
|
|
497
|
+
/* @__PURE__ */ D("div", {
|
|
526
498
|
className: "grid gap-4 sm:grid-cols-2",
|
|
527
|
-
children: [/* @__PURE__ */
|
|
499
|
+
children: [/* @__PURE__ */ E(c, {
|
|
528
500
|
label: "Category",
|
|
529
501
|
value: V.category,
|
|
530
502
|
onChange: (e) => X("category", e.target.value),
|
|
531
|
-
options:
|
|
503
|
+
options: [...te],
|
|
532
504
|
placeholder: "Select a category…",
|
|
533
505
|
required: !0,
|
|
534
506
|
error: U.category,
|
|
535
507
|
hint: "Helps users discover your item in the store"
|
|
536
|
-
}), /* @__PURE__ */
|
|
508
|
+
}), /* @__PURE__ */ E(c, {
|
|
537
509
|
label: "Visibility",
|
|
538
510
|
value: V.visibility,
|
|
539
511
|
onChange: (e) => X("visibility", e.target.value),
|
|
540
|
-
options: x === "workflow" ?
|
|
512
|
+
options: x === "workflow" ? P : N,
|
|
541
513
|
required: !0,
|
|
542
514
|
hint: V.visibility === "PUBLIC" ? "Listed in the marketplace after review approval — anyone can discover and install it" : V.visibility === "UNLISTED" ? "Not in the store, but share with anyone via a direct link. You can still submit for marketplace review later" : V.visibility === "INTERNAL" ? "Visible to all members of your developer organization — no one outside can access it" : "Only you (the creator) can see this — other org members cannot access it"
|
|
543
515
|
})]
|
|
544
516
|
}),
|
|
545
|
-
x !== "app" && /* @__PURE__ */
|
|
517
|
+
x !== "app" && /* @__PURE__ */ D("div", {
|
|
546
518
|
className: "space-y-2",
|
|
547
519
|
children: [
|
|
548
|
-
/* @__PURE__ */
|
|
520
|
+
/* @__PURE__ */ D("div", { children: [/* @__PURE__ */ D("label", {
|
|
549
521
|
className: "block text-sm font-medium text-text-primary",
|
|
550
|
-
children: ["Compatible Products", /* @__PURE__ */
|
|
522
|
+
children: ["Compatible Products", /* @__PURE__ */ E("span", {
|
|
551
523
|
className: "text-status-error-text ml-1",
|
|
552
524
|
children: "*"
|
|
553
525
|
})]
|
|
554
|
-
}), /* @__PURE__ */
|
|
526
|
+
}), /* @__PURE__ */ D("p", {
|
|
555
527
|
className: "text-xs text-text-secondary mt-0.5",
|
|
556
528
|
children: [
|
|
557
529
|
"Select which products this ",
|
|
@@ -559,12 +531,12 @@ var M = [
|
|
|
559
531
|
" works with. Users will see it in those products' node stores."
|
|
560
532
|
]
|
|
561
533
|
})] }),
|
|
562
|
-
/* @__PURE__ */
|
|
534
|
+
/* @__PURE__ */ E(ne, {
|
|
563
535
|
options: b.map((e) => ({
|
|
564
536
|
value: e.slug,
|
|
565
537
|
label: e.name
|
|
566
538
|
})),
|
|
567
|
-
selected:
|
|
539
|
+
selected: A,
|
|
568
540
|
onChange: (e) => {
|
|
569
541
|
L(e), e.length > 0 && W((e) => ({
|
|
570
542
|
...e,
|
|
@@ -575,13 +547,13 @@ var M = [
|
|
|
575
547
|
searchPlaceholder: "Search products…",
|
|
576
548
|
error: !!U.compatibleProducts
|
|
577
549
|
}),
|
|
578
|
-
U.compatibleProducts && /* @__PURE__ */
|
|
550
|
+
U.compatibleProducts && /* @__PURE__ */ E("p", {
|
|
579
551
|
className: "text-xs text-status-error-text",
|
|
580
552
|
children: U.compatibleProducts
|
|
581
553
|
})
|
|
582
554
|
]
|
|
583
555
|
}),
|
|
584
|
-
/* @__PURE__ */
|
|
556
|
+
/* @__PURE__ */ E(u, {
|
|
585
557
|
label: "Full Description",
|
|
586
558
|
value: V.description,
|
|
587
559
|
onChange: (e) => X("description", e),
|
|
@@ -592,43 +564,43 @@ var M = [
|
|
|
592
564
|
]
|
|
593
565
|
})
|
|
594
566
|
}),
|
|
595
|
-
J.length > 2 && /* @__PURE__ */
|
|
567
|
+
J.length > 2 && /* @__PURE__ */ E(o, {
|
|
596
568
|
title: "Organization",
|
|
597
569
|
description: "Which developer organization owns this?",
|
|
598
|
-
children: /* @__PURE__ */
|
|
570
|
+
children: /* @__PURE__ */ E(c, {
|
|
599
571
|
label: "Developer Organization",
|
|
600
572
|
value: V.developerOrganizationId,
|
|
601
573
|
onChange: (e) => X("developerOrganizationId", e.target.value),
|
|
602
574
|
options: J
|
|
603
575
|
})
|
|
604
576
|
}),
|
|
605
|
-
x === "app" && /* @__PURE__ */
|
|
577
|
+
x === "app" && /* @__PURE__ */ D(o, {
|
|
606
578
|
title: "Permissions",
|
|
607
579
|
description: "Choose what data your app can access. Users will see these permissions when authorizing your app — like GitHub Apps.",
|
|
608
|
-
children: [/* @__PURE__ */
|
|
580
|
+
children: [/* @__PURE__ */ E(I, {
|
|
609
581
|
permissions: R,
|
|
610
582
|
onChange: se
|
|
611
|
-
}), /* @__PURE__ */
|
|
583
|
+
}), /* @__PURE__ */ D("div", {
|
|
612
584
|
className: "mt-3 flex gap-2 rounded-lg border border-border-subtle bg-bg-sunken/30 p-3 text-xs text-text-secondary",
|
|
613
|
-
children: [/* @__PURE__ */
|
|
585
|
+
children: [/* @__PURE__ */ E(y, {
|
|
614
586
|
size: 14,
|
|
615
587
|
className: "flex-shrink-0 mt-0.5"
|
|
616
|
-
}), /* @__PURE__ */
|
|
588
|
+
}), /* @__PURE__ */ D("span", { children: [/* @__PURE__ */ E("strong", { children: "Read & Write" }), " implies Read. Select only what your app genuinely needs — fewer permissions build more user trust."] })]
|
|
617
589
|
})]
|
|
618
590
|
}),
|
|
619
|
-
x === "app" && /* @__PURE__ */
|
|
591
|
+
x === "app" && /* @__PURE__ */ E(o, {
|
|
620
592
|
title: "Integration Setup",
|
|
621
593
|
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.",
|
|
622
|
-
children: /* @__PURE__ */
|
|
594
|
+
children: /* @__PURE__ */ D("div", {
|
|
623
595
|
className: "space-y-4",
|
|
624
|
-
children: [/* @__PURE__ */
|
|
596
|
+
children: [/* @__PURE__ */ E(s, {
|
|
625
597
|
label: "Post-install Callback URL",
|
|
626
598
|
type: "url",
|
|
627
599
|
value: V.oauthAuthUrl,
|
|
628
600
|
onChange: (e) => X("oauthAuthUrl", e.target.value),
|
|
629
601
|
placeholder: "https://yourapp.com/callback",
|
|
630
602
|
hint: "Users land here after install with ?installation_id=xxx appended"
|
|
631
|
-
}), /* @__PURE__ */
|
|
603
|
+
}), /* @__PURE__ */ E(s, {
|
|
632
604
|
label: "Revoke URL",
|
|
633
605
|
type: "url",
|
|
634
606
|
value: V.oauthRevokeUrl,
|
|
@@ -638,43 +610,43 @@ var M = [
|
|
|
638
610
|
})]
|
|
639
611
|
})
|
|
640
612
|
}),
|
|
641
|
-
x !== "app" && /* @__PURE__ */
|
|
613
|
+
x !== "app" && /* @__PURE__ */ D("div", {
|
|
642
614
|
className: "rounded-lg border border-border-subtle bg-bg-sunken/30 p-4 flex gap-3 text-sm text-text-secondary",
|
|
643
|
-
children: [/* @__PURE__ */
|
|
615
|
+
children: [/* @__PURE__ */ E(y, {
|
|
644
616
|
size: 16,
|
|
645
617
|
className: "flex-shrink-0 mt-0.5"
|
|
646
|
-
}), /* @__PURE__ */
|
|
618
|
+
}), /* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("p", {
|
|
647
619
|
className: "font-medium text-text-primary",
|
|
648
620
|
children: "File uploads"
|
|
649
|
-
}), /* @__PURE__ */
|
|
621
|
+
}), /* @__PURE__ */ E("p", {
|
|
650
622
|
className: "mt-1",
|
|
651
623
|
children: x === "node" ? "After creating your Node, go to the Versions tab to upload your ZIP bundle and manifest.json." : `After creating your ${$}, go to the Versions tab to upload its manifest JSON.`
|
|
652
624
|
})] })]
|
|
653
625
|
}),
|
|
654
|
-
U._submit && /* @__PURE__ */
|
|
626
|
+
U._submit && /* @__PURE__ */ D("div", {
|
|
655
627
|
className: "flex items-start gap-3 rounded-lg border border-status-error-bg bg-status-error-bg/10 px-4 py-3 text-sm text-status-error-text",
|
|
656
|
-
children: [/* @__PURE__ */
|
|
628
|
+
children: [/* @__PURE__ */ E(y, {
|
|
657
629
|
size: 16,
|
|
658
630
|
className: "flex-shrink-0 mt-0.5"
|
|
659
|
-
}), /* @__PURE__ */
|
|
631
|
+
}), /* @__PURE__ */ E("span", { children: U._submit })]
|
|
660
632
|
}),
|
|
661
|
-
/* @__PURE__ */
|
|
633
|
+
/* @__PURE__ */ D("div", {
|
|
662
634
|
className: "flex items-center justify-end gap-3 border-t pt-6",
|
|
663
|
-
children: [/* @__PURE__ */
|
|
635
|
+
children: [/* @__PURE__ */ D("button", {
|
|
664
636
|
type: "button",
|
|
665
637
|
onClick: () => Y("/apps"),
|
|
666
638
|
disabled: K,
|
|
667
639
|
className: "inline-flex items-center gap-2 rounded-md border px-4 py-2 text-sm font-medium hover:bg-bg-sunken transition-colors disabled:opacity-50",
|
|
668
|
-
children: [/* @__PURE__ */
|
|
669
|
-
}), /* @__PURE__ */
|
|
640
|
+
children: [/* @__PURE__ */ E(w, { size: 16 }), _("devportal.cancel", "Cancel")]
|
|
641
|
+
}), /* @__PURE__ */ E("button", {
|
|
670
642
|
type: "submit",
|
|
671
643
|
disabled: K,
|
|
672
644
|
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",
|
|
673
|
-
children: K ? /* @__PURE__ */
|
|
645
|
+
children: K ? /* @__PURE__ */ D(T, { children: [/* @__PURE__ */ E(re, {
|
|
674
646
|
size: 16,
|
|
675
647
|
className: "animate-spin"
|
|
676
|
-
}), "Creating…"] }) : /* @__PURE__ */
|
|
677
|
-
/* @__PURE__ */
|
|
648
|
+
}), "Creating…"] }) : /* @__PURE__ */ D(T, { children: [
|
|
649
|
+
/* @__PURE__ */ E(C, { size: 16 }),
|
|
678
650
|
"Create ",
|
|
679
651
|
$
|
|
680
652
|
] })
|