@burdenoff/microfe-devportal 2026.917.1 → 2026.917.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/hooks/index.d.ts +1 -0
- package/dist/devportal/hooks/index.d.ts.map +1 -1
- package/dist/devportal/hooks/index.js +1 -0
- package/dist/devportal/hooks/useProducts.d.ts +18 -0
- package/dist/devportal/hooks/useProducts.d.ts.map +1 -0
- package/dist/devportal/hooks/useProducts.js +14 -0
- package/dist/devportal/hooks/useProducts.js.map +1 -0
- package/dist/devportal/pages/CreateApplicationPage.d.ts.map +1 -1
- package/dist/devportal/pages/CreateApplicationPage.js +137 -156
- 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 +271 -290
- package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
- package/dist/generated/global-operations.d.ts +39 -0
- package/dist/generated/global-operations.d.ts.map +1 -1
- package/dist/generated/global-operations.js +72 -54
- package/dist/generated/global-operations.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,12 +7,14 @@ import { InputField as s, SelectField as c } from "../components/FormField.js";
|
|
|
7
7
|
import { PermissionGuard as l } from "../components/PermissionGuard.js";
|
|
8
8
|
import { MarkdownEditor as u } from "../components/MarkdownEditor.js";
|
|
9
9
|
import "../components/index.js";
|
|
10
|
-
import {
|
|
11
|
-
import
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
10
|
+
import { useProducts as ee } from "../hooks/useProducts.js";
|
|
11
|
+
import "../hooks/index.js";
|
|
12
|
+
import { useRef as te, useState as d } from "react";
|
|
13
|
+
import { ArrowLeft as f, Box as p, Check as m, ChevronRight as h, FileCode2 as g, GitFork as _, Info as v, LayoutDashboard as y, LayoutGrid as b, Loader2 as x, Puzzle as S, Save as C, X as w } from "lucide-react";
|
|
14
|
+
import { Fragment as T, jsx as E, jsxs as D } from "react/jsx-runtime";
|
|
15
|
+
import { useI18n as O } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
14
16
|
//#region src/devportal/pages/CreateApplicationPage.tsx
|
|
15
|
-
var
|
|
17
|
+
var k = {
|
|
16
18
|
app: {
|
|
17
19
|
appType: "API_INTEGRATION",
|
|
18
20
|
icon: p,
|
|
@@ -103,7 +105,7 @@ var D = {
|
|
|
103
105
|
"Publish to store"
|
|
104
106
|
]
|
|
105
107
|
}
|
|
106
|
-
},
|
|
108
|
+
}, A = [
|
|
107
109
|
{
|
|
108
110
|
id: "auth",
|
|
109
111
|
label: "Authentication",
|
|
@@ -175,16 +177,16 @@ var D = {
|
|
|
175
177
|
description: "Access control configuration"
|
|
176
178
|
}
|
|
177
179
|
];
|
|
178
|
-
function
|
|
179
|
-
return Object.fromEntries(
|
|
180
|
+
function j() {
|
|
181
|
+
return Object.fromEntries(A.map((e) => [e.id, "none"]));
|
|
180
182
|
}
|
|
181
|
-
function
|
|
183
|
+
function M(e) {
|
|
182
184
|
return Object.entries(e).filter(([, e]) => e !== "none").map(([e, t]) => ({
|
|
183
185
|
resource: e,
|
|
184
186
|
level: t
|
|
185
187
|
}));
|
|
186
188
|
}
|
|
187
|
-
var
|
|
189
|
+
var N = [
|
|
188
190
|
{
|
|
189
191
|
value: "PUBLIC",
|
|
190
192
|
label: "Public — listed in the marketplace after review"
|
|
@@ -197,10 +199,10 @@ var A = [
|
|
|
197
199
|
value: "INTERNAL",
|
|
198
200
|
label: "Internal — visible to your entire dev org"
|
|
199
201
|
}
|
|
200
|
-
],
|
|
202
|
+
], P = [...N, {
|
|
201
203
|
value: "UNLISTED",
|
|
202
204
|
label: "Unlisted — shareable via link, not listed in store"
|
|
203
|
-
}],
|
|
205
|
+
}], ne = [
|
|
204
206
|
{
|
|
205
207
|
value: "ai",
|
|
206
208
|
label: "AI & Automation"
|
|
@@ -229,41 +231,41 @@ var A = [
|
|
|
229
231
|
value: "trigger",
|
|
230
232
|
label: "Triggers"
|
|
231
233
|
}
|
|
232
|
-
],
|
|
234
|
+
], re = ({ icon: e, title: n, description: r, bullets: i, selected: a, onClick: o }) => /* @__PURE__ */ D("button", {
|
|
233
235
|
type: "button",
|
|
234
236
|
onClick: o,
|
|
235
237
|
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"),
|
|
236
238
|
children: [
|
|
237
|
-
a && /* @__PURE__ */
|
|
239
|
+
a && /* @__PURE__ */ E("span", {
|
|
238
240
|
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",
|
|
239
|
-
children: /* @__PURE__ */
|
|
241
|
+
children: /* @__PURE__ */ E(m, { size: 12 })
|
|
240
242
|
}),
|
|
241
|
-
/* @__PURE__ */
|
|
243
|
+
/* @__PURE__ */ E("div", {
|
|
242
244
|
className: "flex h-10 w-10 items-center justify-center rounded-lg bg-bg-sunken",
|
|
243
|
-
children: /* @__PURE__ */
|
|
245
|
+
children: /* @__PURE__ */ E(e, {
|
|
244
246
|
size: 22,
|
|
245
247
|
className: "text-text-primary"
|
|
246
248
|
})
|
|
247
249
|
}),
|
|
248
|
-
/* @__PURE__ */
|
|
250
|
+
/* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("p", {
|
|
249
251
|
className: "font-semibold text-text-primary",
|
|
250
252
|
children: n
|
|
251
|
-
}), /* @__PURE__ */
|
|
253
|
+
}), /* @__PURE__ */ E("p", {
|
|
252
254
|
className: "mt-1 text-sm text-text-secondary",
|
|
253
255
|
children: r
|
|
254
256
|
})] }),
|
|
255
|
-
/* @__PURE__ */
|
|
257
|
+
/* @__PURE__ */ E("ul", {
|
|
256
258
|
className: "mt-1 space-y-1",
|
|
257
|
-
children: i.map((e) => /* @__PURE__ */
|
|
259
|
+
children: i.map((e) => /* @__PURE__ */ D("li", {
|
|
258
260
|
className: "flex items-center gap-2 text-xs text-text-secondary",
|
|
259
|
-
children: [/* @__PURE__ */
|
|
261
|
+
children: [/* @__PURE__ */ E(h, {
|
|
260
262
|
size: 12,
|
|
261
263
|
className: "flex-shrink-0 text-primary"
|
|
262
264
|
}), e]
|
|
263
265
|
}, e))
|
|
264
266
|
})
|
|
265
267
|
]
|
|
266
|
-
}),
|
|
268
|
+
}), ie = ({ permissions: e, onChange: t }) => {
|
|
267
269
|
let n = [
|
|
268
270
|
"none",
|
|
269
271
|
"read",
|
|
@@ -273,35 +275,35 @@ var A = [
|
|
|
273
275
|
read: "Read",
|
|
274
276
|
write: "Read & Write"
|
|
275
277
|
};
|
|
276
|
-
return /* @__PURE__ */
|
|
278
|
+
return /* @__PURE__ */ E("div", {
|
|
277
279
|
className: "overflow-x-auto rounded-lg border border-border-subtle",
|
|
278
|
-
children: /* @__PURE__ */
|
|
280
|
+
children: /* @__PURE__ */ D("table", {
|
|
279
281
|
className: "w-full text-sm",
|
|
280
|
-
children: [/* @__PURE__ */
|
|
282
|
+
children: [/* @__PURE__ */ E("thead", { children: /* @__PURE__ */ D("tr", {
|
|
281
283
|
className: "border-b border-border-subtle bg-bg-sunken/50",
|
|
282
|
-
children: [/* @__PURE__ */
|
|
284
|
+
children: [/* @__PURE__ */ E("th", {
|
|
283
285
|
className: "px-4 py-3 text-left font-medium text-text-secondary w-1/2",
|
|
284
286
|
children: "Resource"
|
|
285
|
-
}), n.map((e) => /* @__PURE__ */
|
|
287
|
+
}), n.map((e) => /* @__PURE__ */ E("th", {
|
|
286
288
|
className: "px-4 py-3 text-center font-medium text-text-secondary",
|
|
287
289
|
children: r[e]
|
|
288
290
|
}, e))]
|
|
289
|
-
}) }), /* @__PURE__ */
|
|
291
|
+
}) }), /* @__PURE__ */ E("tbody", {
|
|
290
292
|
className: "divide-y divide-border",
|
|
291
|
-
children:
|
|
293
|
+
children: A.map((r) => /* @__PURE__ */ D("tr", {
|
|
292
294
|
className: "hover:bg-bg-sunken/30 transition-colors",
|
|
293
|
-
children: [/* @__PURE__ */
|
|
295
|
+
children: [/* @__PURE__ */ D("td", {
|
|
294
296
|
className: "px-4 py-3",
|
|
295
|
-
children: [/* @__PURE__ */
|
|
297
|
+
children: [/* @__PURE__ */ E("p", {
|
|
296
298
|
className: "font-medium text-text-primary",
|
|
297
299
|
children: r.label
|
|
298
|
-
}), /* @__PURE__ */
|
|
300
|
+
}), /* @__PURE__ */ E("p", {
|
|
299
301
|
className: "text-xs text-text-secondary",
|
|
300
302
|
children: r.description
|
|
301
303
|
})]
|
|
302
|
-
}), n.map((n) => /* @__PURE__ */
|
|
304
|
+
}), n.map((n) => /* @__PURE__ */ E("td", {
|
|
303
305
|
className: "px-4 py-3 text-center",
|
|
304
|
-
children: /* @__PURE__ */
|
|
306
|
+
children: /* @__PURE__ */ E("input", {
|
|
305
307
|
type: "radio",
|
|
306
308
|
name: `permission-${r.id}`,
|
|
307
309
|
value: n,
|
|
@@ -314,32 +316,11 @@ var A = [
|
|
|
314
316
|
})]
|
|
315
317
|
})
|
|
316
318
|
});
|
|
317
|
-
}, F =
|
|
318
|
-
{
|
|
319
|
-
value: "fluidgrids",
|
|
320
|
-
label: "FluidGrids"
|
|
321
|
-
},
|
|
322
|
-
{
|
|
323
|
-
value: "workspaces",
|
|
324
|
-
label: "Workspaces"
|
|
325
|
-
},
|
|
326
|
-
{
|
|
327
|
-
value: "bigconsole",
|
|
328
|
-
label: "BigConsole"
|
|
329
|
-
},
|
|
330
|
-
{
|
|
331
|
-
value: "botlit",
|
|
332
|
-
label: "Botlit"
|
|
333
|
-
},
|
|
334
|
-
{
|
|
335
|
-
value: "vibecontrols",
|
|
336
|
-
label: "VibeControls"
|
|
337
|
-
}
|
|
338
|
-
], I = () => {
|
|
339
|
-
let { navigate: p, basePath: h, activeOrgId: g } = e(), { t: _ } = E(), y = (e, t) => {
|
|
319
|
+
}, F = () => {
|
|
320
|
+
let { navigate: p, basePath: h, activeOrgId: g } = e(), { t: _ } = O(), y = (e, t) => {
|
|
340
321
|
let n = _(e);
|
|
341
322
|
return n === e ? t : n;
|
|
342
|
-
}, b = n(),
|
|
323
|
+
}, b = n(), { products: S } = ee(), [A, F] = d(null), [I, ae] = d([]), [L, R] = d(j()), z = te(!1), [B, V] = d({
|
|
343
324
|
name: "",
|
|
344
325
|
slug: "",
|
|
345
326
|
shortDescription: "",
|
|
@@ -360,17 +341,17 @@ var A = [
|
|
|
360
341
|
}, ...(K?.myDeveloperOrganizations ?? []).filter((e) => e.kind !== "PHYSICAL").map((e) => ({
|
|
361
342
|
value: e.id,
|
|
362
343
|
label: e.name
|
|
363
|
-
}))], J = (e) => p?.(`${h}${e}`),
|
|
344
|
+
}))], J = (e) => p?.(`${h}${e}`), oe = (e) => e.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, ""), se = (e) => {
|
|
364
345
|
let t = e.target.value;
|
|
365
346
|
V((e) => ({
|
|
366
347
|
...e,
|
|
367
348
|
name: t,
|
|
368
|
-
slug: z.current ? e.slug :
|
|
349
|
+
slug: z.current ? e.slug : oe(t)
|
|
369
350
|
})), H.name && U((e) => ({
|
|
370
351
|
...e,
|
|
371
352
|
name: void 0
|
|
372
353
|
}));
|
|
373
|
-
},
|
|
354
|
+
}, ce = (e) => {
|
|
374
355
|
z.current = !0;
|
|
375
356
|
let t = e.target.value.toLowerCase().replace(/[^a-z0-9-]/g, "");
|
|
376
357
|
V((e) => ({
|
|
@@ -380,7 +361,7 @@ var A = [
|
|
|
380
361
|
...e,
|
|
381
362
|
slug: void 0
|
|
382
363
|
}));
|
|
383
|
-
},
|
|
364
|
+
}, Y = (e, t) => {
|
|
384
365
|
V((n) => ({
|
|
385
366
|
...n,
|
|
386
367
|
[e]: t
|
|
@@ -389,17 +370,17 @@ var A = [
|
|
|
389
370
|
[e]: void 0,
|
|
390
371
|
_submit: void 0
|
|
391
372
|
}));
|
|
392
|
-
},
|
|
373
|
+
}, le = (e, t) => {
|
|
393
374
|
R((n) => ({
|
|
394
375
|
...n,
|
|
395
376
|
[e]: t
|
|
396
377
|
}));
|
|
397
|
-
},
|
|
378
|
+
}, X = () => {
|
|
398
379
|
let e = {};
|
|
399
|
-
return B.name.trim() ? B.name.length < 3 ? e.name = "Name must be at least 3 characters" : B.name.length > 100 && (e.name = "Name must be less than 100 characters") : e.name = "Name is required", B.slug.trim() ? /^[a-z0-9-]+$/.test(B.slug) || (e.slug = "Slug can only contain lowercase letters, numbers, and hyphens") : e.slug = "Slug is required", B.shortDescription.trim() ? B.shortDescription.length > 200 && (e.shortDescription = "Short description must be less than 200 characters") : e.shortDescription = "Short description is required", B.category || (e.category = "Category is required"),
|
|
400
|
-
}, Z = () =>
|
|
401
|
-
if (e.preventDefault(), !
|
|
402
|
-
let t =
|
|
380
|
+
return B.name.trim() ? B.name.length < 3 ? e.name = "Name must be at least 3 characters" : B.name.length > 100 && (e.name = "Name must be less than 100 characters") : e.name = "Name is required", B.slug.trim() ? /^[a-z0-9-]+$/.test(B.slug) || (e.slug = "Slug can only contain lowercase letters, numbers, and hyphens") : e.slug = "Slug is required", B.shortDescription.trim() ? B.shortDescription.length > 200 && (e.shortDescription = "Short description must be less than 200 characters") : e.shortDescription = "Short description is required", B.category || (e.category = "Category is required"), A !== "app" && I.length === 0 && (e.compatibleProducts = "Select at least one compatible product so users can find this in the right store"), U(e), Object.keys(e).length === 0;
|
|
381
|
+
}, Z = () => k[A ?? "app"].appType, ue = async (e) => {
|
|
382
|
+
if (e.preventDefault(), !X() || !A) return;
|
|
383
|
+
let t = A === "app" ? { permissions: M(L) } : null;
|
|
403
384
|
try {
|
|
404
385
|
let e = await W({ variables: { input: {
|
|
405
386
|
name: B.name,
|
|
@@ -416,7 +397,7 @@ var A = [
|
|
|
416
397
|
supportUrl: B.supportUrl || void 0,
|
|
417
398
|
manifest: t ?? void 0,
|
|
418
399
|
compatibleProducts: I.length > 0 ? I : void 0,
|
|
419
|
-
...
|
|
400
|
+
...A === "app" && {
|
|
420
401
|
oauthAuthUrl: B.oauthAuthUrl || void 0,
|
|
421
402
|
oauthTokenUrl: B.oauthTokenUrl || void 0,
|
|
422
403
|
oauthRevokeUrl: B.oauthRevokeUrl || void 0
|
|
@@ -441,17 +422,17 @@ var A = [
|
|
|
441
422
|
}));
|
|
442
423
|
}
|
|
443
424
|
};
|
|
444
|
-
if (!
|
|
425
|
+
if (!A) return /* @__PURE__ */ E(l, {
|
|
445
426
|
authOnly: !0,
|
|
446
|
-
children: /* @__PURE__ */
|
|
427
|
+
children: /* @__PURE__ */ E(a, {
|
|
447
428
|
title: "What do you want to build?",
|
|
448
429
|
description: "Choose a builder type to get started",
|
|
449
430
|
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.",
|
|
450
431
|
backLink: `${h}/apps`,
|
|
451
432
|
backLabel: "Back to Applications",
|
|
452
|
-
children: /* @__PURE__ */
|
|
433
|
+
children: /* @__PURE__ */ D("div", {
|
|
453
434
|
className: "max-w-3xl space-y-6",
|
|
454
|
-
children: [/* @__PURE__ */
|
|
435
|
+
children: [/* @__PURE__ */ E("div", {
|
|
455
436
|
className: "grid gap-4 sm:grid-cols-3",
|
|
456
437
|
children: [
|
|
457
438
|
"app",
|
|
@@ -461,78 +442,78 @@ var A = [
|
|
|
461
442
|
"widget",
|
|
462
443
|
"dashboard"
|
|
463
444
|
].map((e) => {
|
|
464
|
-
let t =
|
|
465
|
-
return /* @__PURE__ */
|
|
445
|
+
let t = k[e];
|
|
446
|
+
return /* @__PURE__ */ E(re, {
|
|
466
447
|
icon: t.icon,
|
|
467
448
|
title: t.label,
|
|
468
449
|
description: t.cardDescription,
|
|
469
450
|
bullets: t.cardBullets,
|
|
470
|
-
selected:
|
|
471
|
-
onClick: () =>
|
|
451
|
+
selected: A === e,
|
|
452
|
+
onClick: () => F(e)
|
|
472
453
|
}, e);
|
|
473
454
|
})
|
|
474
|
-
}), /* @__PURE__ */
|
|
455
|
+
}), /* @__PURE__ */ D("div", {
|
|
475
456
|
className: "rounded-lg border border-border-subtle bg-bg-sunken/30 p-4 flex gap-3 text-sm text-text-secondary",
|
|
476
|
-
children: [/* @__PURE__ */
|
|
457
|
+
children: [/* @__PURE__ */ E(v, {
|
|
477
458
|
size: 16,
|
|
478
459
|
className: "flex-shrink-0 mt-0.5"
|
|
479
|
-
}), /* @__PURE__ */
|
|
460
|
+
}), /* @__PURE__ */ E("p", { children: "Apps use OAuth to interact with platform data. Nodes and Workflows are packaged files you upload after creation." })]
|
|
480
461
|
})]
|
|
481
462
|
})
|
|
482
463
|
})
|
|
483
464
|
});
|
|
484
|
-
let Q =
|
|
485
|
-
return /* @__PURE__ */
|
|
465
|
+
let Q = k[A ?? "app"], $ = Q.label, de = Q.icon, fe = /* @__PURE__ */ E(de, { size: 16 });
|
|
466
|
+
return /* @__PURE__ */ E(l, {
|
|
486
467
|
authOnly: !0,
|
|
487
|
-
children: /* @__PURE__ */
|
|
468
|
+
children: /* @__PURE__ */ E(a, {
|
|
488
469
|
title: `Create ${$}`,
|
|
489
470
|
description: Q.pageDescription,
|
|
490
471
|
purpose: Q.purpose,
|
|
491
472
|
backLink: `${h}/apps`,
|
|
492
473
|
backLabel: "Back to Applications",
|
|
493
|
-
children: /* @__PURE__ */
|
|
494
|
-
onSubmit:
|
|
474
|
+
children: /* @__PURE__ */ D("form", {
|
|
475
|
+
onSubmit: ue,
|
|
495
476
|
className: "space-y-8 max-w-3xl",
|
|
496
477
|
children: [
|
|
497
|
-
/* @__PURE__ */
|
|
478
|
+
/* @__PURE__ */ D("div", {
|
|
498
479
|
className: "flex items-center gap-3",
|
|
499
|
-
children: [/* @__PURE__ */
|
|
480
|
+
children: [/* @__PURE__ */ D("button", {
|
|
500
481
|
type: "button",
|
|
501
|
-
onClick: () =>
|
|
482
|
+
onClick: () => F(null),
|
|
502
483
|
className: "flex items-center gap-1.5 text-sm text-text-secondary hover:text-text-primary transition-colors",
|
|
503
|
-
children: [/* @__PURE__ */
|
|
504
|
-
}), /* @__PURE__ */
|
|
484
|
+
children: [/* @__PURE__ */ E(f, { size: 14 }), "Change type"]
|
|
485
|
+
}), /* @__PURE__ */ D("span", {
|
|
505
486
|
className: "flex items-center gap-1.5 rounded-full border border-border-subtle bg-bg-sunken px-3 py-1 text-xs font-medium",
|
|
506
|
-
children: [
|
|
487
|
+
children: [fe, $]
|
|
507
488
|
})]
|
|
508
489
|
}),
|
|
509
|
-
/* @__PURE__ */
|
|
490
|
+
/* @__PURE__ */ E(o, {
|
|
510
491
|
title: "Basic Information",
|
|
511
492
|
description: "Core details about your application",
|
|
512
|
-
children: /* @__PURE__ */
|
|
493
|
+
children: /* @__PURE__ */ D("div", {
|
|
513
494
|
className: "space-y-4",
|
|
514
495
|
children: [
|
|
515
|
-
/* @__PURE__ */
|
|
496
|
+
/* @__PURE__ */ E(s, {
|
|
516
497
|
label: "Name",
|
|
517
498
|
value: B.name,
|
|
518
|
-
onChange:
|
|
499
|
+
onChange: se,
|
|
519
500
|
placeholder: Q.namePlaceholder,
|
|
520
501
|
required: !0,
|
|
521
502
|
error: H.name
|
|
522
503
|
}),
|
|
523
|
-
/* @__PURE__ */
|
|
504
|
+
/* @__PURE__ */ E(s, {
|
|
524
505
|
label: "Slug",
|
|
525
506
|
value: B.slug,
|
|
526
|
-
onChange:
|
|
507
|
+
onChange: ce,
|
|
527
508
|
placeholder: "my-integration",
|
|
528
509
|
required: !0,
|
|
529
510
|
error: H.slug,
|
|
530
511
|
hint: z.current ? "Only lowercase letters, numbers, and hyphens" : "Auto-generated from name — edit to customise"
|
|
531
512
|
}),
|
|
532
|
-
/* @__PURE__ */
|
|
513
|
+
/* @__PURE__ */ E(u, {
|
|
533
514
|
label: "Short Description",
|
|
534
515
|
value: B.shortDescription,
|
|
535
|
-
onChange: (e) =>
|
|
516
|
+
onChange: (e) => Y("shortDescription", e),
|
|
536
517
|
placeholder: "Briefly describe what this does",
|
|
537
518
|
required: !0,
|
|
538
519
|
error: H.shortDescription,
|
|
@@ -540,57 +521,57 @@ var A = [
|
|
|
540
521
|
rows: 2,
|
|
541
522
|
maxLength: 200
|
|
542
523
|
}),
|
|
543
|
-
/* @__PURE__ */
|
|
524
|
+
/* @__PURE__ */ D("div", {
|
|
544
525
|
className: "grid gap-4 sm:grid-cols-2",
|
|
545
|
-
children: [/* @__PURE__ */
|
|
526
|
+
children: [/* @__PURE__ */ E(c, {
|
|
546
527
|
label: "Category",
|
|
547
528
|
value: B.category,
|
|
548
|
-
onChange: (e) =>
|
|
549
|
-
options:
|
|
529
|
+
onChange: (e) => Y("category", e.target.value),
|
|
530
|
+
options: ne,
|
|
550
531
|
placeholder: "Select a category…",
|
|
551
532
|
required: !0,
|
|
552
533
|
error: H.category,
|
|
553
534
|
hint: "Helps users discover your item in the store"
|
|
554
|
-
}), /* @__PURE__ */
|
|
535
|
+
}), /* @__PURE__ */ E(c, {
|
|
555
536
|
label: "Visibility",
|
|
556
537
|
value: B.visibility,
|
|
557
|
-
onChange: (e) =>
|
|
558
|
-
options:
|
|
538
|
+
onChange: (e) => Y("visibility", e.target.value),
|
|
539
|
+
options: A === "workflow" ? P : N,
|
|
559
540
|
required: !0,
|
|
560
541
|
hint: B.visibility === "PUBLIC" ? "Listed in the marketplace after review approval — anyone can discover and install it" : B.visibility === "UNLISTED" ? "Not in the store, but share with anyone via a direct link. You can still submit for marketplace review later" : B.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"
|
|
561
542
|
})]
|
|
562
543
|
}),
|
|
563
|
-
|
|
544
|
+
A !== "app" && /* @__PURE__ */ D("div", {
|
|
564
545
|
className: "space-y-2",
|
|
565
546
|
children: [
|
|
566
|
-
/* @__PURE__ */
|
|
547
|
+
/* @__PURE__ */ D("div", { children: [/* @__PURE__ */ D("label", {
|
|
567
548
|
className: "block text-sm font-medium text-text-primary",
|
|
568
|
-
children: ["Compatible Products", /* @__PURE__ */
|
|
549
|
+
children: ["Compatible Products", /* @__PURE__ */ E("span", {
|
|
569
550
|
className: "text-status-error-text ml-1",
|
|
570
551
|
children: "*"
|
|
571
552
|
})]
|
|
572
|
-
}), /* @__PURE__ */
|
|
553
|
+
}), /* @__PURE__ */ D("p", {
|
|
573
554
|
className: "text-xs text-text-secondary mt-0.5",
|
|
574
555
|
children: [
|
|
575
556
|
"Select which products this ",
|
|
576
|
-
|
|
557
|
+
A,
|
|
577
558
|
" works with. Users will see it in those products' node stores."
|
|
578
559
|
]
|
|
579
560
|
})] }),
|
|
580
|
-
/* @__PURE__ */
|
|
561
|
+
/* @__PURE__ */ E("div", {
|
|
581
562
|
className: "flex flex-wrap gap-3",
|
|
582
|
-
children:
|
|
583
|
-
let n = I.includes(e.
|
|
584
|
-
return /* @__PURE__ */
|
|
563
|
+
children: S.map((e) => {
|
|
564
|
+
let n = I.includes(e.slug);
|
|
565
|
+
return /* @__PURE__ */ D("label", {
|
|
585
566
|
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", H.compatibleProducts && !n && "border-status-error-bg/50"),
|
|
586
567
|
children: [
|
|
587
|
-
/* @__PURE__ */
|
|
568
|
+
/* @__PURE__ */ E("input", {
|
|
588
569
|
type: "checkbox",
|
|
589
570
|
className: "sr-only",
|
|
590
571
|
checked: n,
|
|
591
572
|
onChange: () => {
|
|
592
|
-
|
|
593
|
-
let r = n ? t.filter((t) => t !== e.
|
|
573
|
+
ae((t) => {
|
|
574
|
+
let r = n ? t.filter((t) => t !== e.slug) : [...t, e.slug];
|
|
594
575
|
return r.length > 0 && U((e) => ({
|
|
595
576
|
...e,
|
|
596
577
|
compatibleProducts: void 0
|
|
@@ -598,25 +579,25 @@ var A = [
|
|
|
598
579
|
});
|
|
599
580
|
}
|
|
600
581
|
}),
|
|
601
|
-
n && /* @__PURE__ */
|
|
582
|
+
n && /* @__PURE__ */ E(m, {
|
|
602
583
|
size: 14,
|
|
603
584
|
className: "text-primary flex-shrink-0"
|
|
604
585
|
}),
|
|
605
|
-
e.
|
|
586
|
+
e.name
|
|
606
587
|
]
|
|
607
|
-
}, e.
|
|
588
|
+
}, e.id);
|
|
608
589
|
})
|
|
609
590
|
}),
|
|
610
|
-
H.compatibleProducts && /* @__PURE__ */
|
|
591
|
+
H.compatibleProducts && /* @__PURE__ */ E("p", {
|
|
611
592
|
className: "text-xs text-status-error-text",
|
|
612
593
|
children: H.compatibleProducts
|
|
613
594
|
})
|
|
614
595
|
]
|
|
615
596
|
}),
|
|
616
|
-
/* @__PURE__ */
|
|
597
|
+
/* @__PURE__ */ E(u, {
|
|
617
598
|
label: "Full Description",
|
|
618
599
|
value: B.description,
|
|
619
|
-
onChange: (e) =>
|
|
600
|
+
onChange: (e) => Y("description", e),
|
|
620
601
|
placeholder: "Detailed description, features, and use cases...",
|
|
621
602
|
rows: 5,
|
|
622
603
|
hint: "Markdown supported"
|
|
@@ -624,89 +605,89 @@ var A = [
|
|
|
624
605
|
]
|
|
625
606
|
})
|
|
626
607
|
}),
|
|
627
|
-
q.length > 2 && /* @__PURE__ */
|
|
608
|
+
q.length > 2 && /* @__PURE__ */ E(o, {
|
|
628
609
|
title: "Organization",
|
|
629
610
|
description: "Which developer organization owns this?",
|
|
630
|
-
children: /* @__PURE__ */
|
|
611
|
+
children: /* @__PURE__ */ E(c, {
|
|
631
612
|
label: "Developer Organization",
|
|
632
613
|
value: B.developerOrganizationId,
|
|
633
|
-
onChange: (e) =>
|
|
614
|
+
onChange: (e) => Y("developerOrganizationId", e.target.value),
|
|
634
615
|
options: q
|
|
635
616
|
})
|
|
636
617
|
}),
|
|
637
|
-
|
|
618
|
+
A === "app" && /* @__PURE__ */ D(o, {
|
|
638
619
|
title: "Permissions",
|
|
639
620
|
description: "Choose what data your app can access. Users will see these permissions when authorizing your app — like GitHub Apps.",
|
|
640
|
-
children: [/* @__PURE__ */
|
|
621
|
+
children: [/* @__PURE__ */ E(ie, {
|
|
641
622
|
permissions: L,
|
|
642
|
-
onChange:
|
|
643
|
-
}), /* @__PURE__ */
|
|
623
|
+
onChange: le
|
|
624
|
+
}), /* @__PURE__ */ D("div", {
|
|
644
625
|
className: "mt-3 flex gap-2 rounded-lg border border-border-subtle bg-bg-sunken/30 p-3 text-xs text-text-secondary",
|
|
645
|
-
children: [/* @__PURE__ */
|
|
626
|
+
children: [/* @__PURE__ */ E(v, {
|
|
646
627
|
size: 14,
|
|
647
628
|
className: "flex-shrink-0 mt-0.5"
|
|
648
|
-
}), /* @__PURE__ */
|
|
629
|
+
}), /* @__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."] })]
|
|
649
630
|
})]
|
|
650
631
|
}),
|
|
651
|
-
|
|
632
|
+
A === "app" && /* @__PURE__ */ E(o, {
|
|
652
633
|
title: "Integration Setup",
|
|
653
634
|
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.",
|
|
654
|
-
children: /* @__PURE__ */
|
|
635
|
+
children: /* @__PURE__ */ D("div", {
|
|
655
636
|
className: "space-y-4",
|
|
656
|
-
children: [/* @__PURE__ */
|
|
637
|
+
children: [/* @__PURE__ */ E(s, {
|
|
657
638
|
label: "Post-install Callback URL",
|
|
658
639
|
type: "url",
|
|
659
640
|
value: B.oauthAuthUrl,
|
|
660
|
-
onChange: (e) =>
|
|
641
|
+
onChange: (e) => Y("oauthAuthUrl", e.target.value),
|
|
661
642
|
placeholder: "https://yourapp.com/callback",
|
|
662
643
|
hint: "Users land here after install with ?installation_id=xxx appended"
|
|
663
|
-
}), /* @__PURE__ */
|
|
644
|
+
}), /* @__PURE__ */ E(s, {
|
|
664
645
|
label: "Revoke URL",
|
|
665
646
|
type: "url",
|
|
666
647
|
value: B.oauthRevokeUrl,
|
|
667
|
-
onChange: (e) =>
|
|
648
|
+
onChange: (e) => Y("oauthRevokeUrl", e.target.value),
|
|
668
649
|
placeholder: "https://yourapp.com/oauth/revoke",
|
|
669
650
|
hint: "We POST to this URL when a user uninstalls your integration"
|
|
670
651
|
})]
|
|
671
652
|
})
|
|
672
653
|
}),
|
|
673
|
-
|
|
654
|
+
A !== "app" && /* @__PURE__ */ D("div", {
|
|
674
655
|
className: "rounded-lg border border-border-subtle bg-bg-sunken/30 p-4 flex gap-3 text-sm text-text-secondary",
|
|
675
|
-
children: [/* @__PURE__ */
|
|
656
|
+
children: [/* @__PURE__ */ E(v, {
|
|
676
657
|
size: 16,
|
|
677
658
|
className: "flex-shrink-0 mt-0.5"
|
|
678
|
-
}), /* @__PURE__ */
|
|
659
|
+
}), /* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("p", {
|
|
679
660
|
className: "font-medium text-text-primary",
|
|
680
661
|
children: "File uploads"
|
|
681
|
-
}), /* @__PURE__ */
|
|
662
|
+
}), /* @__PURE__ */ E("p", {
|
|
682
663
|
className: "mt-1",
|
|
683
|
-
children:
|
|
664
|
+
children: A === "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.`
|
|
684
665
|
})] })]
|
|
685
666
|
}),
|
|
686
|
-
H._submit && /* @__PURE__ */
|
|
667
|
+
H._submit && /* @__PURE__ */ D("div", {
|
|
687
668
|
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",
|
|
688
|
-
children: [/* @__PURE__ */
|
|
669
|
+
children: [/* @__PURE__ */ E(v, {
|
|
689
670
|
size: 16,
|
|
690
671
|
className: "flex-shrink-0 mt-0.5"
|
|
691
|
-
}), /* @__PURE__ */
|
|
672
|
+
}), /* @__PURE__ */ E("span", { children: H._submit })]
|
|
692
673
|
}),
|
|
693
|
-
/* @__PURE__ */
|
|
674
|
+
/* @__PURE__ */ D("div", {
|
|
694
675
|
className: "flex items-center justify-end gap-3 border-t pt-6",
|
|
695
|
-
children: [/* @__PURE__ */
|
|
676
|
+
children: [/* @__PURE__ */ D("button", {
|
|
696
677
|
type: "button",
|
|
697
678
|
onClick: () => J("/apps"),
|
|
698
679
|
disabled: G,
|
|
699
680
|
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",
|
|
700
|
-
children: [/* @__PURE__ */ w
|
|
701
|
-
}), /* @__PURE__ */
|
|
681
|
+
children: [/* @__PURE__ */ E(w, { size: 16 }), y("devportal.cancel", "Cancel")]
|
|
682
|
+
}), /* @__PURE__ */ E("button", {
|
|
702
683
|
type: "submit",
|
|
703
684
|
disabled: G,
|
|
704
685
|
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",
|
|
705
|
-
children: G ? /* @__PURE__ */ T
|
|
686
|
+
children: G ? /* @__PURE__ */ D(T, { children: [/* @__PURE__ */ E(x, {
|
|
706
687
|
size: 16,
|
|
707
688
|
className: "animate-spin"
|
|
708
|
-
}), "Creating…"] }) : /* @__PURE__ */ T
|
|
709
|
-
/* @__PURE__ */
|
|
689
|
+
}), "Creating…"] }) : /* @__PURE__ */ D(T, { children: [
|
|
690
|
+
/* @__PURE__ */ E(C, { size: 16 }),
|
|
710
691
|
"Create ",
|
|
711
692
|
$
|
|
712
693
|
] })
|
|
@@ -718,6 +699,6 @@ var A = [
|
|
|
718
699
|
});
|
|
719
700
|
};
|
|
720
701
|
//#endregion
|
|
721
|
-
export {
|
|
702
|
+
export { F as CreateApplicationPage };
|
|
722
703
|
|
|
723
704
|
//# sourceMappingURL=CreateApplicationPage.js.map
|