@burdenoff/microfe-devportal 2026.720.4 → 2026.720.6
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/usePackageUpload.d.ts.map +1 -1
- 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 +3 -3
- package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
- package/dist/devportal/pages/CreateApiKeyPage.d.ts.map +1 -1
- package/dist/devportal/pages/CreateApiKeyPage.js +103 -104
- package/dist/devportal/pages/CreateApiKeyPage.js.map +1 -1
- package/dist/devportal/pages/CreateApplicationPage.d.ts.map +1 -1
- package/dist/devportal/pages/CreateApplicationPage.js +115 -116
- package/dist/devportal/pages/CreateApplicationPage.js.map +1 -1
- package/dist/devportal/pages/CreateOAuthClientPage.d.ts.map +1 -1
- package/dist/devportal/pages/CreateOAuthClientPage.js +129 -130
- package/dist/devportal/pages/CreateOAuthClientPage.js.map +1 -1
- package/dist/devportal/pages/CreateWebhookPage.js +1 -1
- package/dist/devportal/pages/CreateWebhookPage.js.map +1 -1
- package/dist/devportal/pages/DelegationsPage.js +214 -214
- package/dist/devportal/pages/DelegationsPage.js.map +1 -1
- package/dist/devportal/pages/EditApplicationPage.d.ts.map +1 -1
- package/dist/devportal/pages/EditApplicationPage.js +1 -1
- package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
- package/dist/devportal/pages/PublishPage.d.ts.map +1 -1
- package/dist/devportal/pages/PublishPage.js +106 -106
- package/dist/devportal/pages/PublishPage.js.map +1 -1
- package/dist/devportal/pages/SellerDashboardPage.d.ts.map +1 -1
- package/dist/devportal/pages/SellerDashboardPage.js +136 -137
- package/dist/devportal/pages/SellerDashboardPage.js.map +1 -1
- package/dist/devportal/pages/SellerItemsPage.d.ts.map +1 -1
- package/dist/devportal/pages/SellerItemsPage.js +190 -191
- package/dist/devportal/pages/SellerItemsPage.js.map +1 -1
- package/dist/devportal/pages/SellerOrdersPage.d.ts.map +1 -1
- package/dist/devportal/pages/SellerOrdersPage.js +138 -139
- package/dist/devportal/pages/SellerOrdersPage.js.map +1 -1
- package/dist/devportal/types/index.d.ts.map +1 -1
- package/dist/devportal/types/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,10 +6,9 @@ import { PageLayout as a, PageSection as o } from "../components/PageLayout.js";
|
|
|
6
6
|
import { InputField as s, SelectField as c, TextareaField as l } from "../components/FormField.js";
|
|
7
7
|
import { PermissionGuard as u } from "../components/PermissionGuard.js";
|
|
8
8
|
import "../components/index.js";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { ArrowLeft as m, Box as h, Check as g, ChevronRight as _, GitFork as v, Info as y, Loader2 as b, Puzzle as x, Save as te, X as ne } from "lucide-react";
|
|
9
|
+
import { useRef as ee, useState as d } from "react";
|
|
10
|
+
import { useI18n as te } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
11
|
+
import { ArrowLeft as f, Box as p, Check as m, ChevronRight as h, GitFork as g, Info as _, Loader2 as v, Puzzle as y, Save as b, X as x } from "lucide-react";
|
|
13
12
|
import { Fragment as S, jsx as C, jsxs as w } from "react/jsx-runtime";
|
|
14
13
|
//#region src/devportal/pages/CreateApplicationPage.tsx
|
|
15
14
|
var T = [
|
|
@@ -145,7 +144,7 @@ var O = [
|
|
|
145
144
|
children: [
|
|
146
145
|
a && /* @__PURE__ */ C("span", {
|
|
147
146
|
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",
|
|
148
|
-
children: /* @__PURE__ */ C(
|
|
147
|
+
children: /* @__PURE__ */ C(m, { size: 12 })
|
|
149
148
|
}),
|
|
150
149
|
/* @__PURE__ */ C("div", {
|
|
151
150
|
className: "flex h-10 w-10 items-center justify-center rounded-lg bg-bg-sunken",
|
|
@@ -165,7 +164,7 @@ var O = [
|
|
|
165
164
|
className: "mt-1 space-y-1",
|
|
166
165
|
children: i.map((e) => /* @__PURE__ */ w("li", {
|
|
167
166
|
className: "flex items-center gap-2 text-xs text-text-secondary",
|
|
168
|
-
children: [/* @__PURE__ */ C(
|
|
167
|
+
children: [/* @__PURE__ */ C(h, {
|
|
169
168
|
size: 12,
|
|
170
169
|
className: "flex-shrink-0 text-primary"
|
|
171
170
|
}), e]
|
|
@@ -223,7 +222,7 @@ var O = [
|
|
|
223
222
|
})]
|
|
224
223
|
})
|
|
225
224
|
});
|
|
226
|
-
},
|
|
225
|
+
}, ne = [
|
|
227
226
|
{
|
|
228
227
|
value: "fluidgrids",
|
|
229
228
|
label: "FluidGrids"
|
|
@@ -240,18 +239,18 @@ var O = [
|
|
|
240
239
|
value: "botlit",
|
|
241
240
|
label: "Botlit"
|
|
242
241
|
}
|
|
243
|
-
],
|
|
244
|
-
let { navigate:
|
|
242
|
+
], N = () => {
|
|
243
|
+
let { navigate: h, basePath: T, activeOrgId: N } = e(), { t: re } = te(), ie = (e, t) => {
|
|
245
244
|
let n = re(e);
|
|
246
245
|
return n === e ? t : n;
|
|
247
|
-
}, ae = n(), [
|
|
246
|
+
}, ae = n(), [P, F] = d(null), [I, L] = d([]), [R, z] = d(E()), B = ee(!1), [V, H] = d({
|
|
248
247
|
name: "",
|
|
249
248
|
slug: "",
|
|
250
249
|
shortDescription: "",
|
|
251
250
|
description: "",
|
|
252
251
|
category: "",
|
|
253
252
|
visibility: "PUBLIC",
|
|
254
|
-
developerOrganizationId:
|
|
253
|
+
developerOrganizationId: N ?? "",
|
|
255
254
|
websiteUrl: "",
|
|
256
255
|
githubUrl: "",
|
|
257
256
|
documentationUrl: "",
|
|
@@ -259,95 +258,95 @@ var O = [
|
|
|
259
258
|
oauthAuthUrl: "",
|
|
260
259
|
oauthTokenUrl: "",
|
|
261
260
|
oauthRevokeUrl: ""
|
|
262
|
-
}), [
|
|
261
|
+
}), [U, W] = d({}), [G, { loading: K }] = r(), { data: q } = i({ fetchPolicy: "cache-and-network" }), J = [{
|
|
263
262
|
value: "",
|
|
264
263
|
label: "No organization (personal)"
|
|
265
|
-
}, ...(
|
|
264
|
+
}, ...(q?.myDeveloperOrganizations ?? []).map((e) => ({
|
|
266
265
|
value: e.id,
|
|
267
266
|
label: e.name
|
|
268
|
-
}))], Y = (e) =>
|
|
267
|
+
}))], Y = (e) => h?.(`${T}${e}`), oe = (e) => e.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, ""), se = (e) => {
|
|
269
268
|
let t = e.target.value;
|
|
270
|
-
|
|
269
|
+
H((e) => ({
|
|
271
270
|
...e,
|
|
272
271
|
name: t,
|
|
273
|
-
slug:
|
|
274
|
-
})),
|
|
272
|
+
slug: B.current ? e.slug : oe(t)
|
|
273
|
+
})), U.name && W((e) => ({
|
|
275
274
|
...e,
|
|
276
275
|
name: void 0
|
|
277
276
|
}));
|
|
278
|
-
},
|
|
279
|
-
|
|
277
|
+
}, ce = (e) => {
|
|
278
|
+
B.current = !0;
|
|
280
279
|
let t = e.target.value.toLowerCase().replace(/[^a-z0-9-]/g, "");
|
|
281
|
-
|
|
280
|
+
H((e) => ({
|
|
282
281
|
...e,
|
|
283
282
|
slug: t
|
|
284
|
-
})),
|
|
283
|
+
})), U.slug && W((e) => ({
|
|
285
284
|
...e,
|
|
286
285
|
slug: void 0
|
|
287
286
|
}));
|
|
288
287
|
}, X = (e, t) => {
|
|
289
|
-
|
|
288
|
+
H((n) => ({
|
|
290
289
|
...n,
|
|
291
290
|
[e]: t
|
|
292
|
-
})), (
|
|
291
|
+
})), (U[e] || U._submit) && W((t) => ({
|
|
293
292
|
...t,
|
|
294
293
|
[e]: void 0,
|
|
295
294
|
_submit: void 0
|
|
296
295
|
}));
|
|
297
296
|
}, Z = (e, t) => {
|
|
298
|
-
|
|
297
|
+
z((n) => ({
|
|
299
298
|
...n,
|
|
300
299
|
[e]: t
|
|
301
300
|
}));
|
|
302
|
-
},
|
|
301
|
+
}, le = () => {
|
|
303
302
|
let e = {};
|
|
304
|
-
return
|
|
305
|
-
}, Q = () =>
|
|
306
|
-
if (e.preventDefault(), !
|
|
307
|
-
let t =
|
|
303
|
+
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"), P !== "app" && I.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;
|
|
304
|
+
}, Q = () => P === "node" ? "NODE" : P === "workflow" ? "WORKFLOW" : "API_INTEGRATION", ue = async (e) => {
|
|
305
|
+
if (e.preventDefault(), !le() || !P) return;
|
|
306
|
+
let t = P === "app" ? { permissions: D(R) } : null;
|
|
308
307
|
try {
|
|
309
|
-
let e = await
|
|
310
|
-
name:
|
|
311
|
-
slug:
|
|
312
|
-
shortDescription:
|
|
313
|
-
description:
|
|
314
|
-
category:
|
|
308
|
+
let e = await G({ variables: { input: {
|
|
309
|
+
name: V.name,
|
|
310
|
+
slug: V.slug || void 0,
|
|
311
|
+
shortDescription: V.shortDescription || void 0,
|
|
312
|
+
description: V.description || void 0,
|
|
313
|
+
category: V.category || void 0,
|
|
315
314
|
appType: Q(),
|
|
316
|
-
visibility:
|
|
317
|
-
developerOrganizationId:
|
|
318
|
-
websiteUrl:
|
|
319
|
-
githubUrl:
|
|
320
|
-
documentationUrl:
|
|
321
|
-
supportUrl:
|
|
315
|
+
visibility: V.visibility,
|
|
316
|
+
developerOrganizationId: V.developerOrganizationId || void 0,
|
|
317
|
+
websiteUrl: V.websiteUrl || void 0,
|
|
318
|
+
githubUrl: V.githubUrl || void 0,
|
|
319
|
+
documentationUrl: V.documentationUrl || void 0,
|
|
320
|
+
supportUrl: V.supportUrl || void 0,
|
|
322
321
|
manifest: t ?? void 0,
|
|
323
|
-
compatibleProducts:
|
|
324
|
-
...
|
|
325
|
-
oauthAuthUrl:
|
|
326
|
-
oauthTokenUrl:
|
|
327
|
-
oauthRevokeUrl:
|
|
322
|
+
compatibleProducts: I.length > 0 ? I : void 0,
|
|
323
|
+
...P === "app" && {
|
|
324
|
+
oauthAuthUrl: V.oauthAuthUrl || void 0,
|
|
325
|
+
oauthTokenUrl: V.oauthTokenUrl || void 0,
|
|
326
|
+
oauthRevokeUrl: V.oauthRevokeUrl || void 0
|
|
328
327
|
}
|
|
329
328
|
} } });
|
|
330
329
|
e.data?.createApplication?.id && (ae.emit("devportal.app.created", {
|
|
331
330
|
appId: e.data.createApplication.id,
|
|
332
|
-
name:
|
|
331
|
+
name: V.name,
|
|
333
332
|
appType: Q(),
|
|
334
|
-
organizationId:
|
|
333
|
+
organizationId: V.developerOrganizationId || null
|
|
335
334
|
}), Y(`/apps/${e.data.createApplication.id}`));
|
|
336
335
|
} catch (e) {
|
|
337
336
|
let t = [];
|
|
338
337
|
e && typeof e == "object" && "graphQLErrors" in e && Array.isArray(e.graphQLErrors) && e.graphQLErrors.forEach((e) => t.push(e.message)), e instanceof Error && t.push(e.message);
|
|
339
338
|
let n = t.join(" ").toLowerCase();
|
|
340
|
-
n.includes("slug") || n.includes("already exist") || n.includes("unique") || n.includes("conflict") || n.includes("duplicate") ?
|
|
339
|
+
n.includes("slug") || n.includes("already exist") || n.includes("unique") || n.includes("conflict") || n.includes("duplicate") ? W((e) => ({
|
|
341
340
|
...e,
|
|
342
341
|
slug: "This slug is already taken — choose a different one"
|
|
343
|
-
})) :
|
|
342
|
+
})) : W((e) => ({
|
|
344
343
|
...e,
|
|
345
344
|
_submit: t[0] ?? "Something went wrong. Please try again."
|
|
346
345
|
}));
|
|
347
346
|
}
|
|
348
347
|
};
|
|
349
|
-
if (!
|
|
350
|
-
|
|
348
|
+
if (!P) return /* @__PURE__ */ C(u, {
|
|
349
|
+
authOnly: !0,
|
|
351
350
|
children: /* @__PURE__ */ C(a, {
|
|
352
351
|
title: "What do you want to build?",
|
|
353
352
|
description: "Choose a builder type to get started",
|
|
@@ -360,7 +359,7 @@ var O = [
|
|
|
360
359
|
className: "grid gap-4 sm:grid-cols-3",
|
|
361
360
|
children: [
|
|
362
361
|
/* @__PURE__ */ C(j, {
|
|
363
|
-
icon:
|
|
362
|
+
icon: p,
|
|
364
363
|
title: "App",
|
|
365
364
|
description: "Build integrations that connect your service to the platform using OAuth tokens.",
|
|
366
365
|
bullets: [
|
|
@@ -369,11 +368,11 @@ var O = [
|
|
|
369
368
|
"Webhook events",
|
|
370
369
|
"Publish to app store"
|
|
371
370
|
],
|
|
372
|
-
selected:
|
|
373
|
-
onClick: () =>
|
|
371
|
+
selected: P === "app",
|
|
372
|
+
onClick: () => F("app")
|
|
374
373
|
}),
|
|
375
374
|
/* @__PURE__ */ C(j, {
|
|
376
|
-
icon:
|
|
375
|
+
icon: y,
|
|
377
376
|
title: "Node",
|
|
378
377
|
description: "Build custom FluidGrids nodes that users can drag into their visual workflows.",
|
|
379
378
|
bullets: [
|
|
@@ -382,11 +381,11 @@ var O = [
|
|
|
382
381
|
"Versioned releases",
|
|
383
382
|
"Publish to node store"
|
|
384
383
|
],
|
|
385
|
-
selected:
|
|
386
|
-
onClick: () =>
|
|
384
|
+
selected: P === "node",
|
|
385
|
+
onClick: () => F("node")
|
|
387
386
|
}),
|
|
388
387
|
/* @__PURE__ */ C(j, {
|
|
389
|
-
icon:
|
|
388
|
+
icon: g,
|
|
390
389
|
title: "Workflow",
|
|
391
390
|
description: "Build reusable automation workflows that users can import and customize.",
|
|
392
391
|
bullets: [
|
|
@@ -395,13 +394,13 @@ var O = [
|
|
|
395
394
|
"Versioned releases",
|
|
396
395
|
"Publish to workflow store"
|
|
397
396
|
],
|
|
398
|
-
selected:
|
|
399
|
-
onClick: () =>
|
|
397
|
+
selected: P === "workflow",
|
|
398
|
+
onClick: () => F("workflow")
|
|
400
399
|
})
|
|
401
400
|
]
|
|
402
401
|
}), /* @__PURE__ */ w("div", {
|
|
403
402
|
className: "rounded-lg border border-border-subtle bg-bg-sunken/30 p-4 flex gap-3 text-sm text-text-secondary",
|
|
404
|
-
children: [/* @__PURE__ */ C(
|
|
403
|
+
children: [/* @__PURE__ */ C(_, {
|
|
405
404
|
size: 16,
|
|
406
405
|
className: "flex-shrink-0 mt-0.5"
|
|
407
406
|
}), /* @__PURE__ */ C("p", { children: "Apps use OAuth to interact with platform data. Nodes and Workflows are packaged files you upload after creation." })]
|
|
@@ -409,29 +408,29 @@ var O = [
|
|
|
409
408
|
})
|
|
410
409
|
})
|
|
411
410
|
});
|
|
412
|
-
let $ =
|
|
411
|
+
let $ = P === "app" ? "App" : P === "node" ? "Node" : "Workflow", de = C(P === "app" ? p : P === "node" ? y : g, { size: 16 });
|
|
413
412
|
return /* @__PURE__ */ C(u, {
|
|
414
|
-
|
|
413
|
+
authOnly: !0,
|
|
415
414
|
children: /* @__PURE__ */ C(a, {
|
|
416
415
|
title: `Create ${$}`,
|
|
417
|
-
description:
|
|
418
|
-
purpose:
|
|
416
|
+
description: P === "app" ? "Register a new app integration with OAuth permissions" : P === "node" ? "Register a new FluidGrids node package" : "Register a new reusable automation workflow",
|
|
417
|
+
purpose: P === "workflow" ? "Give your workflow a name and description. Once created you can upload your workflow definition in the Versions tab, then publish it to the store or generate a shareable public link." : P === "node" ? "Give your node a name and description. Once created you can upload your ZIP bundle and manifest in the Versions tab, then publish it to the node store when it is ready for users." : "Give your integration a name, description, and the permissions it will request. Once created you will get credentials and can configure webhooks, then publish it to the marketplace when it is ready for users.",
|
|
419
418
|
backLink: `${T}/apps`,
|
|
420
419
|
backLabel: "Back to Applications",
|
|
421
420
|
children: /* @__PURE__ */ w("form", {
|
|
422
|
-
onSubmit:
|
|
421
|
+
onSubmit: ue,
|
|
423
422
|
className: "space-y-8 max-w-3xl",
|
|
424
423
|
children: [
|
|
425
424
|
/* @__PURE__ */ w("div", {
|
|
426
425
|
className: "flex items-center gap-3",
|
|
427
426
|
children: [/* @__PURE__ */ w("button", {
|
|
428
427
|
type: "button",
|
|
429
|
-
onClick: () =>
|
|
428
|
+
onClick: () => F(null),
|
|
430
429
|
className: "flex items-center gap-1.5 text-sm text-text-secondary hover:text-text-primary transition-colors",
|
|
431
|
-
children: [/* @__PURE__ */ C(
|
|
430
|
+
children: [/* @__PURE__ */ C(f, { size: 14 }), "Change type"]
|
|
432
431
|
}), /* @__PURE__ */ w("span", {
|
|
433
432
|
className: "flex items-center gap-1.5 rounded-full border border-border-subtle bg-bg-sunken px-3 py-1 text-xs font-medium",
|
|
434
|
-
children: [
|
|
433
|
+
children: [de, $]
|
|
435
434
|
})]
|
|
436
435
|
}),
|
|
437
436
|
/* @__PURE__ */ C(o, {
|
|
@@ -442,52 +441,52 @@ var O = [
|
|
|
442
441
|
children: [
|
|
443
442
|
/* @__PURE__ */ C(s, {
|
|
444
443
|
label: "Name",
|
|
445
|
-
value:
|
|
446
|
-
onChange:
|
|
447
|
-
placeholder:
|
|
444
|
+
value: V.name,
|
|
445
|
+
onChange: se,
|
|
446
|
+
placeholder: P === "app" ? "My Integration" : P === "node" ? "HTTP Request" : "Onboarding Flow",
|
|
448
447
|
required: !0,
|
|
449
|
-
error:
|
|
448
|
+
error: U.name
|
|
450
449
|
}),
|
|
451
450
|
/* @__PURE__ */ C(s, {
|
|
452
451
|
label: "Slug",
|
|
453
|
-
value:
|
|
454
|
-
onChange:
|
|
452
|
+
value: V.slug,
|
|
453
|
+
onChange: ce,
|
|
455
454
|
placeholder: "my-integration",
|
|
456
455
|
required: !0,
|
|
457
|
-
error:
|
|
458
|
-
hint:
|
|
456
|
+
error: U.slug,
|
|
457
|
+
hint: B.current ? "Only lowercase letters, numbers, and hyphens" : "Auto-generated from name — edit to customise"
|
|
459
458
|
}),
|
|
460
459
|
/* @__PURE__ */ C(l, {
|
|
461
460
|
label: "Short Description",
|
|
462
|
-
value:
|
|
461
|
+
value: V.shortDescription,
|
|
463
462
|
onChange: (e) => X("shortDescription", e.target.value),
|
|
464
463
|
placeholder: "Briefly describe what this does",
|
|
465
464
|
required: !0,
|
|
466
|
-
error:
|
|
467
|
-
hint: `${
|
|
465
|
+
error: U.shortDescription,
|
|
466
|
+
hint: `${V.shortDescription.length}/200 characters`,
|
|
468
467
|
rows: 2
|
|
469
468
|
}),
|
|
470
469
|
/* @__PURE__ */ w("div", {
|
|
471
470
|
className: "grid gap-4 sm:grid-cols-2",
|
|
472
471
|
children: [/* @__PURE__ */ C(c, {
|
|
473
472
|
label: "Category",
|
|
474
|
-
value:
|
|
473
|
+
value: V.category,
|
|
475
474
|
onChange: (e) => X("category", e.target.value),
|
|
476
475
|
options: A,
|
|
477
476
|
placeholder: "Select a category…",
|
|
478
477
|
required: !0,
|
|
479
|
-
error:
|
|
478
|
+
error: U.category,
|
|
480
479
|
hint: "Helps users discover your item in the store"
|
|
481
480
|
}), /* @__PURE__ */ C(c, {
|
|
482
481
|
label: "Visibility",
|
|
483
|
-
value:
|
|
482
|
+
value: V.visibility,
|
|
484
483
|
onChange: (e) => X("visibility", e.target.value),
|
|
485
|
-
options:
|
|
484
|
+
options: P === "workflow" ? k : O,
|
|
486
485
|
required: !0,
|
|
487
|
-
hint:
|
|
486
|
+
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"
|
|
488
487
|
})]
|
|
489
488
|
}),
|
|
490
|
-
|
|
489
|
+
P !== "app" && /* @__PURE__ */ w("div", {
|
|
491
490
|
className: "space-y-2",
|
|
492
491
|
children: [
|
|
493
492
|
/* @__PURE__ */ w("div", { children: [/* @__PURE__ */ w("label", {
|
|
@@ -500,32 +499,32 @@ var O = [
|
|
|
500
499
|
className: "text-xs text-text-secondary mt-0.5",
|
|
501
500
|
children: [
|
|
502
501
|
"Select which products this ",
|
|
503
|
-
|
|
502
|
+
P,
|
|
504
503
|
" works with. Users will see it in those products' node stores."
|
|
505
504
|
]
|
|
506
505
|
})] }),
|
|
507
506
|
/* @__PURE__ */ C("div", {
|
|
508
507
|
className: "flex flex-wrap gap-3",
|
|
509
|
-
children:
|
|
510
|
-
let n =
|
|
508
|
+
children: ne.map((e) => {
|
|
509
|
+
let n = I.includes(e.value);
|
|
511
510
|
return /* @__PURE__ */ w("label", {
|
|
512
|
-
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",
|
|
511
|
+
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", U.compatibleProducts && !n && "border-status-error-bg/50"),
|
|
513
512
|
children: [
|
|
514
513
|
/* @__PURE__ */ C("input", {
|
|
515
514
|
type: "checkbox",
|
|
516
515
|
className: "sr-only",
|
|
517
516
|
checked: n,
|
|
518
517
|
onChange: () => {
|
|
519
|
-
|
|
518
|
+
L((t) => {
|
|
520
519
|
let r = n ? t.filter((t) => t !== e.value) : [...t, e.value];
|
|
521
|
-
return r.length > 0 &&
|
|
520
|
+
return r.length > 0 && W((e) => ({
|
|
522
521
|
...e,
|
|
523
522
|
compatibleProducts: void 0
|
|
524
523
|
})), r;
|
|
525
524
|
});
|
|
526
525
|
}
|
|
527
526
|
}),
|
|
528
|
-
n && /* @__PURE__ */ C(
|
|
527
|
+
n && /* @__PURE__ */ C(m, {
|
|
529
528
|
size: 14,
|
|
530
529
|
className: "text-primary flex-shrink-0"
|
|
531
530
|
}),
|
|
@@ -534,15 +533,15 @@ var O = [
|
|
|
534
533
|
}, e.value);
|
|
535
534
|
})
|
|
536
535
|
}),
|
|
537
|
-
|
|
536
|
+
U.compatibleProducts && /* @__PURE__ */ C("p", {
|
|
538
537
|
className: "text-xs text-status-error-text",
|
|
539
|
-
children:
|
|
538
|
+
children: U.compatibleProducts
|
|
540
539
|
})
|
|
541
540
|
]
|
|
542
541
|
}),
|
|
543
542
|
/* @__PURE__ */ C(l, {
|
|
544
543
|
label: "Full Description",
|
|
545
|
-
value:
|
|
544
|
+
value: V.description,
|
|
546
545
|
onChange: (e) => X("description", e.target.value),
|
|
547
546
|
placeholder: "Detailed description, features, and use cases...",
|
|
548
547
|
rows: 5,
|
|
@@ -556,26 +555,26 @@ var O = [
|
|
|
556
555
|
description: "Which developer organization owns this?",
|
|
557
556
|
children: /* @__PURE__ */ C(c, {
|
|
558
557
|
label: "Developer Organization",
|
|
559
|
-
value:
|
|
558
|
+
value: V.developerOrganizationId,
|
|
560
559
|
onChange: (e) => X("developerOrganizationId", e.target.value),
|
|
561
560
|
options: J
|
|
562
561
|
})
|
|
563
562
|
}),
|
|
564
|
-
|
|
563
|
+
P === "app" && /* @__PURE__ */ w(o, {
|
|
565
564
|
title: "Permissions",
|
|
566
565
|
description: "Choose what data your app can access. Users will see these permissions when authorizing your app — like GitHub Apps.",
|
|
567
566
|
children: [/* @__PURE__ */ C(M, {
|
|
568
|
-
permissions:
|
|
567
|
+
permissions: R,
|
|
569
568
|
onChange: Z
|
|
570
569
|
}), /* @__PURE__ */ w("div", {
|
|
571
570
|
className: "mt-3 flex gap-2 rounded-lg border border-border-subtle bg-bg-sunken/30 p-3 text-xs text-text-secondary",
|
|
572
|
-
children: [/* @__PURE__ */ C(
|
|
571
|
+
children: [/* @__PURE__ */ C(_, {
|
|
573
572
|
size: 14,
|
|
574
573
|
className: "flex-shrink-0 mt-0.5"
|
|
575
574
|
}), /* @__PURE__ */ w("span", { children: [/* @__PURE__ */ C("strong", { children: "Read & Write" }), " implies Read. Select only what your app genuinely needs — fewer permissions build more user trust."] })]
|
|
576
575
|
})]
|
|
577
576
|
}),
|
|
578
|
-
|
|
577
|
+
P === "app" && /* @__PURE__ */ C(o, {
|
|
579
578
|
title: "Integration Setup",
|
|
580
579
|
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.",
|
|
581
580
|
children: /* @__PURE__ */ w("div", {
|
|
@@ -583,23 +582,23 @@ var O = [
|
|
|
583
582
|
children: [/* @__PURE__ */ C(s, {
|
|
584
583
|
label: "Post-install Callback URL",
|
|
585
584
|
type: "url",
|
|
586
|
-
value:
|
|
585
|
+
value: V.oauthAuthUrl,
|
|
587
586
|
onChange: (e) => X("oauthAuthUrl", e.target.value),
|
|
588
587
|
placeholder: "https://yourapp.com/callback",
|
|
589
588
|
hint: "Users land here after install with ?installation_id=xxx appended"
|
|
590
589
|
}), /* @__PURE__ */ C(s, {
|
|
591
590
|
label: "Revoke URL",
|
|
592
591
|
type: "url",
|
|
593
|
-
value:
|
|
592
|
+
value: V.oauthRevokeUrl,
|
|
594
593
|
onChange: (e) => X("oauthRevokeUrl", e.target.value),
|
|
595
594
|
placeholder: "https://yourapp.com/oauth/revoke",
|
|
596
595
|
hint: "We POST to this URL when a user uninstalls your integration"
|
|
597
596
|
})]
|
|
598
597
|
})
|
|
599
598
|
}),
|
|
600
|
-
|
|
599
|
+
P !== "app" && /* @__PURE__ */ w("div", {
|
|
601
600
|
className: "rounded-lg border border-border-subtle bg-bg-sunken/30 p-4 flex gap-3 text-sm text-text-secondary",
|
|
602
|
-
children: [/* @__PURE__ */ C(
|
|
601
|
+
children: [/* @__PURE__ */ C(_, {
|
|
603
602
|
size: 16,
|
|
604
603
|
className: "flex-shrink-0 mt-0.5"
|
|
605
604
|
}), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
|
|
@@ -607,33 +606,33 @@ var O = [
|
|
|
607
606
|
children: "File uploads"
|
|
608
607
|
}), /* @__PURE__ */ C("p", {
|
|
609
608
|
className: "mt-1",
|
|
610
|
-
children:
|
|
609
|
+
children: P === "node" ? "After creating your Node, go to the Versions tab to upload your ZIP bundle and manifest.json." : "After creating your Workflow, go to the Versions tab to upload your manifest and workflow JSON definition."
|
|
611
610
|
})] })]
|
|
612
611
|
}),
|
|
613
|
-
|
|
612
|
+
U._submit && /* @__PURE__ */ w("div", {
|
|
614
613
|
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",
|
|
615
|
-
children: [/* @__PURE__ */ C(
|
|
614
|
+
children: [/* @__PURE__ */ C(_, {
|
|
616
615
|
size: 16,
|
|
617
616
|
className: "flex-shrink-0 mt-0.5"
|
|
618
|
-
}), /* @__PURE__ */ C("span", { children:
|
|
617
|
+
}), /* @__PURE__ */ C("span", { children: U._submit })]
|
|
619
618
|
}),
|
|
620
619
|
/* @__PURE__ */ w("div", {
|
|
621
620
|
className: "flex items-center justify-end gap-3 border-t pt-6",
|
|
622
621
|
children: [/* @__PURE__ */ w("button", {
|
|
623
622
|
type: "button",
|
|
624
623
|
onClick: () => Y("/apps"),
|
|
625
|
-
disabled:
|
|
624
|
+
disabled: K,
|
|
626
625
|
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",
|
|
627
|
-
children: [/* @__PURE__ */ C(
|
|
626
|
+
children: [/* @__PURE__ */ C(x, { size: 16 }), ie("devportal.cancel", "Cancel")]
|
|
628
627
|
}), /* @__PURE__ */ C("button", {
|
|
629
628
|
type: "submit",
|
|
630
|
-
disabled:
|
|
629
|
+
disabled: K,
|
|
631
630
|
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",
|
|
632
|
-
children:
|
|
631
|
+
children: K ? /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(v, {
|
|
633
632
|
size: 16,
|
|
634
633
|
className: "animate-spin"
|
|
635
634
|
}), "Creating…"] }) : /* @__PURE__ */ w(S, { children: [
|
|
636
|
-
/* @__PURE__ */ C(
|
|
635
|
+
/* @__PURE__ */ C(b, { size: 16 }),
|
|
637
636
|
"Create ",
|
|
638
637
|
$
|
|
639
638
|
] })
|
|
@@ -645,6 +644,6 @@ var O = [
|
|
|
645
644
|
});
|
|
646
645
|
};
|
|
647
646
|
//#endregion
|
|
648
|
-
export {
|
|
647
|
+
export { N as CreateApplicationPage };
|
|
649
648
|
|
|
650
649
|
//# sourceMappingURL=CreateApplicationPage.js.map
|