@burdenoff/microfe-devportal 2026.720.5 → 2026.720.7
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/MarkdownEditor.d.ts +24 -0
- package/dist/devportal/components/MarkdownEditor.d.ts.map +1 -0
- package/dist/devportal/components/MarkdownEditor.js +136 -0
- package/dist/devportal/components/MarkdownEditor.js.map +1 -0
- package/dist/devportal/components/index.d.ts +1 -0
- package/dist/devportal/components/index.d.ts.map +1 -1
- package/dist/devportal/components/index.js +1 -0
- 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 +748 -746
- package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
- package/dist/devportal/pages/ApplicationVersionsPage.d.ts.map +1 -1
- package/dist/devportal/pages/ApplicationVersionsPage.js +390 -374
- package/dist/devportal/pages/ApplicationVersionsPage.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 +103 -103
- 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 +285 -284
- package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
- package/dist/devportal/pages/ListingPreviewPage.d.ts.map +1 -1
- package/dist/devportal/pages/ListingPreviewPage.js +162 -158
- package/dist/devportal/pages/ListingPreviewPage.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 +2 -2
|
@@ -5,14 +5,14 @@ import { useCreateApplicationMutation as r, useGetMyOrganizationsQuery as i } fr
|
|
|
5
5
|
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
|
+
import { MarkdownEditor as d } from "../components/MarkdownEditor.js";
|
|
8
9
|
import "../components/index.js";
|
|
9
|
-
import { DEVPORTAL_PERMISSIONS as d } from "../constants/permissions.js";
|
|
10
10
|
import { useRef as f, useState as p } from "react";
|
|
11
|
-
import { useI18n as
|
|
12
|
-
import { ArrowLeft as
|
|
13
|
-
import { Fragment as
|
|
11
|
+
import { useI18n as m } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
12
|
+
import { ArrowLeft as h, Box as g, Check as _, ChevronRight as v, GitFork as y, Info as b, Loader2 as x, Puzzle as S, Save as ee, X as te } from "lucide-react";
|
|
13
|
+
import { Fragment as C, jsx as w, jsxs as T } from "react/jsx-runtime";
|
|
14
14
|
//#region src/devportal/pages/CreateApplicationPage.tsx
|
|
15
|
-
var
|
|
15
|
+
var E = [
|
|
16
16
|
{
|
|
17
17
|
id: "auth",
|
|
18
18
|
label: "Authentication",
|
|
@@ -84,10 +84,10 @@ var T = [
|
|
|
84
84
|
description: "Access control configuration"
|
|
85
85
|
}
|
|
86
86
|
];
|
|
87
|
-
function
|
|
88
|
-
return Object.fromEntries(
|
|
87
|
+
function D() {
|
|
88
|
+
return Object.fromEntries(E.map((e) => [e.id, "none"]));
|
|
89
89
|
}
|
|
90
|
-
function
|
|
90
|
+
function ne(e) {
|
|
91
91
|
return Object.entries(e).filter(([, e]) => e !== "none").map(([e, t]) => ({
|
|
92
92
|
resource: e,
|
|
93
93
|
level: t
|
|
@@ -138,34 +138,34 @@ var O = [
|
|
|
138
138
|
value: "trigger",
|
|
139
139
|
label: "Triggers"
|
|
140
140
|
}
|
|
141
|
-
], j = ({ icon: e, title: n, description: r, bullets: i, selected: a, onClick: o }) => /* @__PURE__ */
|
|
141
|
+
], j = ({ icon: e, title: n, description: r, bullets: i, selected: a, onClick: o }) => /* @__PURE__ */ T("button", {
|
|
142
142
|
type: "button",
|
|
143
143
|
onClick: o,
|
|
144
144
|
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"),
|
|
145
145
|
children: [
|
|
146
|
-
a && /* @__PURE__ */
|
|
146
|
+
a && /* @__PURE__ */ w("span", {
|
|
147
147
|
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__ */
|
|
148
|
+
children: /* @__PURE__ */ w(_, { size: 12 })
|
|
149
149
|
}),
|
|
150
|
-
/* @__PURE__ */
|
|
150
|
+
/* @__PURE__ */ w("div", {
|
|
151
151
|
className: "flex h-10 w-10 items-center justify-center rounded-lg bg-bg-sunken",
|
|
152
|
-
children: /* @__PURE__ */
|
|
152
|
+
children: /* @__PURE__ */ w(e, {
|
|
153
153
|
size: 22,
|
|
154
154
|
className: "text-text-primary"
|
|
155
155
|
})
|
|
156
156
|
}),
|
|
157
|
-
/* @__PURE__ */
|
|
157
|
+
/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
|
|
158
158
|
className: "font-semibold text-text-primary",
|
|
159
159
|
children: n
|
|
160
|
-
}), /* @__PURE__ */
|
|
160
|
+
}), /* @__PURE__ */ w("p", {
|
|
161
161
|
className: "mt-1 text-sm text-text-secondary",
|
|
162
162
|
children: r
|
|
163
163
|
})] }),
|
|
164
|
-
/* @__PURE__ */
|
|
164
|
+
/* @__PURE__ */ w("ul", {
|
|
165
165
|
className: "mt-1 space-y-1",
|
|
166
|
-
children: i.map((e) => /* @__PURE__ */
|
|
166
|
+
children: i.map((e) => /* @__PURE__ */ T("li", {
|
|
167
167
|
className: "flex items-center gap-2 text-xs text-text-secondary",
|
|
168
|
-
children: [/* @__PURE__ */
|
|
168
|
+
children: [/* @__PURE__ */ w(v, {
|
|
169
169
|
size: 12,
|
|
170
170
|
className: "flex-shrink-0 text-primary"
|
|
171
171
|
}), e]
|
|
@@ -182,35 +182,35 @@ var O = [
|
|
|
182
182
|
read: "Read",
|
|
183
183
|
write: "Read & Write"
|
|
184
184
|
};
|
|
185
|
-
return /* @__PURE__ */
|
|
185
|
+
return /* @__PURE__ */ w("div", {
|
|
186
186
|
className: "overflow-x-auto rounded-lg border border-border-subtle",
|
|
187
|
-
children: /* @__PURE__ */
|
|
187
|
+
children: /* @__PURE__ */ T("table", {
|
|
188
188
|
className: "w-full text-sm",
|
|
189
|
-
children: [/* @__PURE__ */
|
|
189
|
+
children: [/* @__PURE__ */ w("thead", { children: /* @__PURE__ */ T("tr", {
|
|
190
190
|
className: "border-b border-border-subtle bg-bg-sunken/50",
|
|
191
|
-
children: [/* @__PURE__ */
|
|
191
|
+
children: [/* @__PURE__ */ w("th", {
|
|
192
192
|
className: "px-4 py-3 text-left font-medium text-text-secondary w-1/2",
|
|
193
193
|
children: "Resource"
|
|
194
|
-
}), n.map((e) => /* @__PURE__ */
|
|
194
|
+
}), n.map((e) => /* @__PURE__ */ w("th", {
|
|
195
195
|
className: "px-4 py-3 text-center font-medium text-text-secondary",
|
|
196
196
|
children: r[e]
|
|
197
197
|
}, e))]
|
|
198
|
-
}) }), /* @__PURE__ */
|
|
198
|
+
}) }), /* @__PURE__ */ w("tbody", {
|
|
199
199
|
className: "divide-y divide-border",
|
|
200
|
-
children:
|
|
200
|
+
children: E.map((r) => /* @__PURE__ */ T("tr", {
|
|
201
201
|
className: "hover:bg-bg-sunken/30 transition-colors",
|
|
202
|
-
children: [/* @__PURE__ */
|
|
202
|
+
children: [/* @__PURE__ */ T("td", {
|
|
203
203
|
className: "px-4 py-3",
|
|
204
|
-
children: [/* @__PURE__ */
|
|
204
|
+
children: [/* @__PURE__ */ w("p", {
|
|
205
205
|
className: "font-medium text-text-primary",
|
|
206
206
|
children: r.label
|
|
207
|
-
}), /* @__PURE__ */
|
|
207
|
+
}), /* @__PURE__ */ w("p", {
|
|
208
208
|
className: "text-xs text-text-secondary",
|
|
209
209
|
children: r.description
|
|
210
210
|
})]
|
|
211
|
-
}), n.map((n) => /* @__PURE__ */
|
|
211
|
+
}), n.map((n) => /* @__PURE__ */ w("td", {
|
|
212
212
|
className: "px-4 py-3 text-center",
|
|
213
|
-
children: /* @__PURE__ */
|
|
213
|
+
children: /* @__PURE__ */ w("input", {
|
|
214
214
|
type: "radio",
|
|
215
215
|
name: `permission-${r.id}`,
|
|
216
216
|
value: n,
|
|
@@ -241,10 +241,10 @@ var O = [
|
|
|
241
241
|
label: "Botlit"
|
|
242
242
|
}
|
|
243
243
|
], P = () => {
|
|
244
|
-
let { navigate:
|
|
244
|
+
let { navigate: v, basePath: E, activeOrgId: P } = e(), { t: re } = m(), ie = (e, t) => {
|
|
245
245
|
let n = re(e);
|
|
246
246
|
return n === e ? t : n;
|
|
247
|
-
}, ae = n(), [F, I] = p(null), [L, R] = p([]), [z, B] = p(
|
|
247
|
+
}, ae = n(), [F, I] = p(null), [L, R] = p([]), [z, B] = p(D()), V = f(!1), [H, U] = p({
|
|
248
248
|
name: "",
|
|
249
249
|
slug: "",
|
|
250
250
|
shortDescription: "",
|
|
@@ -265,7 +265,7 @@ var O = [
|
|
|
265
265
|
}, ...(oe?.myDeveloperOrganizations ?? []).map((e) => ({
|
|
266
266
|
value: e.id,
|
|
267
267
|
label: e.name
|
|
268
|
-
}))], Y = (e) =>
|
|
268
|
+
}))], Y = (e) => v?.(`${E}${e}`), se = (e) => e.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, ""), ce = (e) => {
|
|
269
269
|
let t = e.target.value;
|
|
270
270
|
U((e) => ({
|
|
271
271
|
...e,
|
|
@@ -304,7 +304,7 @@ var O = [
|
|
|
304
304
|
return H.name.trim() ? H.name.length < 3 ? e.name = "Name must be at least 3 characters" : H.name.length > 100 && (e.name = "Name must be less than 100 characters") : e.name = "Name is required", H.slug.trim() ? /^[a-z0-9-]+$/.test(H.slug) || (e.slug = "Slug can only contain lowercase letters, numbers, and hyphens") : e.slug = "Slug is required", H.shortDescription.trim() ? H.shortDescription.length > 200 && (e.shortDescription = "Short description must be less than 200 characters") : e.shortDescription = "Short description is required", H.category || (e.category = "Category is required"), F !== "app" && L.length === 0 && (e.compatibleProducts = "Select at least one compatible product so users can find this in the right store"), G(e), Object.keys(e).length === 0;
|
|
305
305
|
}, Q = () => F === "node" ? "NODE" : F === "workflow" ? "WORKFLOW" : "API_INTEGRATION", de = async (e) => {
|
|
306
306
|
if (e.preventDefault(), !ue() || !F) return;
|
|
307
|
-
let t = F === "app" ? { permissions:
|
|
307
|
+
let t = F === "app" ? { permissions: ne(z) } : null;
|
|
308
308
|
try {
|
|
309
309
|
let e = await K({ variables: { input: {
|
|
310
310
|
name: H.name,
|
|
@@ -346,21 +346,21 @@ var O = [
|
|
|
346
346
|
}));
|
|
347
347
|
}
|
|
348
348
|
};
|
|
349
|
-
if (!F) return /* @__PURE__ */
|
|
350
|
-
|
|
351
|
-
children: /* @__PURE__ */
|
|
349
|
+
if (!F) return /* @__PURE__ */ w(u, {
|
|
350
|
+
authOnly: !0,
|
|
351
|
+
children: /* @__PURE__ */ w(a, {
|
|
352
352
|
title: "What do you want to build?",
|
|
353
353
|
description: "Choose a builder type to get started",
|
|
354
354
|
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.",
|
|
355
|
-
backLink: `${
|
|
355
|
+
backLink: `${E}/apps`,
|
|
356
356
|
backLabel: "Back to Applications",
|
|
357
|
-
children: /* @__PURE__ */
|
|
357
|
+
children: /* @__PURE__ */ T("div", {
|
|
358
358
|
className: "max-w-3xl space-y-6",
|
|
359
|
-
children: [/* @__PURE__ */
|
|
359
|
+
children: [/* @__PURE__ */ T("div", {
|
|
360
360
|
className: "grid gap-4 sm:grid-cols-3",
|
|
361
361
|
children: [
|
|
362
|
-
/* @__PURE__ */
|
|
363
|
-
icon:
|
|
362
|
+
/* @__PURE__ */ w(j, {
|
|
363
|
+
icon: g,
|
|
364
364
|
title: "App",
|
|
365
365
|
description: "Build integrations that connect your service to the platform using OAuth tokens.",
|
|
366
366
|
bullets: [
|
|
@@ -372,8 +372,8 @@ var O = [
|
|
|
372
372
|
selected: F === "app",
|
|
373
373
|
onClick: () => I("app")
|
|
374
374
|
}),
|
|
375
|
-
/* @__PURE__ */
|
|
376
|
-
icon:
|
|
375
|
+
/* @__PURE__ */ w(j, {
|
|
376
|
+
icon: S,
|
|
377
377
|
title: "Node",
|
|
378
378
|
description: "Build custom FluidGrids nodes that users can drag into their visual workflows.",
|
|
379
379
|
bullets: [
|
|
@@ -385,8 +385,8 @@ var O = [
|
|
|
385
385
|
selected: F === "node",
|
|
386
386
|
onClick: () => I("node")
|
|
387
387
|
}),
|
|
388
|
-
/* @__PURE__ */
|
|
389
|
-
icon:
|
|
388
|
+
/* @__PURE__ */ w(j, {
|
|
389
|
+
icon: y,
|
|
390
390
|
title: "Workflow",
|
|
391
391
|
description: "Build reusable automation workflows that users can import and customize.",
|
|
392
392
|
bullets: [
|
|
@@ -399,48 +399,48 @@ var O = [
|
|
|
399
399
|
onClick: () => I("workflow")
|
|
400
400
|
})
|
|
401
401
|
]
|
|
402
|
-
}), /* @__PURE__ */
|
|
402
|
+
}), /* @__PURE__ */ T("div", {
|
|
403
403
|
className: "rounded-lg border border-border-subtle bg-bg-sunken/30 p-4 flex gap-3 text-sm text-text-secondary",
|
|
404
|
-
children: [/* @__PURE__ */
|
|
404
|
+
children: [/* @__PURE__ */ w(b, {
|
|
405
405
|
size: 16,
|
|
406
406
|
className: "flex-shrink-0 mt-0.5"
|
|
407
|
-
}), /* @__PURE__ */
|
|
407
|
+
}), /* @__PURE__ */ w("p", { children: "Apps use OAuth to interact with platform data. Nodes and Workflows are packaged files you upload after creation." })]
|
|
408
408
|
})]
|
|
409
409
|
})
|
|
410
410
|
})
|
|
411
411
|
});
|
|
412
|
-
let $ = F === "app" ? "App" : F === "node" ? "Node" : "Workflow", fe =
|
|
413
|
-
return /* @__PURE__ */
|
|
414
|
-
|
|
415
|
-
children: /* @__PURE__ */
|
|
412
|
+
let $ = F === "app" ? "App" : F === "node" ? "Node" : "Workflow", fe = w(F === "app" ? g : F === "node" ? S : y, { size: 16 });
|
|
413
|
+
return /* @__PURE__ */ w(u, {
|
|
414
|
+
authOnly: !0,
|
|
415
|
+
children: /* @__PURE__ */ w(a, {
|
|
416
416
|
title: `Create ${$}`,
|
|
417
417
|
description: F === "app" ? "Register a new app integration with OAuth permissions" : F === "node" ? "Register a new FluidGrids node package" : "Register a new reusable automation workflow",
|
|
418
418
|
purpose: F === "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." : F === "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
|
-
backLink: `${
|
|
419
|
+
backLink: `${E}/apps`,
|
|
420
420
|
backLabel: "Back to Applications",
|
|
421
|
-
children: /* @__PURE__ */
|
|
421
|
+
children: /* @__PURE__ */ T("form", {
|
|
422
422
|
onSubmit: de,
|
|
423
423
|
className: "space-y-8 max-w-3xl",
|
|
424
424
|
children: [
|
|
425
|
-
/* @__PURE__ */
|
|
425
|
+
/* @__PURE__ */ T("div", {
|
|
426
426
|
className: "flex items-center gap-3",
|
|
427
|
-
children: [/* @__PURE__ */
|
|
427
|
+
children: [/* @__PURE__ */ T("button", {
|
|
428
428
|
type: "button",
|
|
429
429
|
onClick: () => I(null),
|
|
430
430
|
className: "flex items-center gap-1.5 text-sm text-text-secondary hover:text-text-primary transition-colors",
|
|
431
|
-
children: [/* @__PURE__ */
|
|
432
|
-
}), /* @__PURE__ */
|
|
431
|
+
children: [/* @__PURE__ */ w(h, { size: 14 }), "Change type"]
|
|
432
|
+
}), /* @__PURE__ */ T("span", {
|
|
433
433
|
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
434
|
children: [fe, $]
|
|
435
435
|
})]
|
|
436
436
|
}),
|
|
437
|
-
/* @__PURE__ */
|
|
437
|
+
/* @__PURE__ */ w(o, {
|
|
438
438
|
title: "Basic Information",
|
|
439
439
|
description: "Core details about your application",
|
|
440
|
-
children: /* @__PURE__ */
|
|
440
|
+
children: /* @__PURE__ */ T("div", {
|
|
441
441
|
className: "space-y-4",
|
|
442
442
|
children: [
|
|
443
|
-
/* @__PURE__ */
|
|
443
|
+
/* @__PURE__ */ w(s, {
|
|
444
444
|
label: "Name",
|
|
445
445
|
value: H.name,
|
|
446
446
|
onChange: ce,
|
|
@@ -448,7 +448,7 @@ var O = [
|
|
|
448
448
|
required: !0,
|
|
449
449
|
error: W.name
|
|
450
450
|
}),
|
|
451
|
-
/* @__PURE__ */
|
|
451
|
+
/* @__PURE__ */ w(s, {
|
|
452
452
|
label: "Slug",
|
|
453
453
|
value: H.slug,
|
|
454
454
|
onChange: le,
|
|
@@ -457,7 +457,7 @@ var O = [
|
|
|
457
457
|
error: W.slug,
|
|
458
458
|
hint: V.current ? "Only lowercase letters, numbers, and hyphens" : "Auto-generated from name — edit to customise"
|
|
459
459
|
}),
|
|
460
|
-
/* @__PURE__ */
|
|
460
|
+
/* @__PURE__ */ w(l, {
|
|
461
461
|
label: "Short Description",
|
|
462
462
|
value: H.shortDescription,
|
|
463
463
|
onChange: (e) => X("shortDescription", e.target.value),
|
|
@@ -467,9 +467,9 @@ var O = [
|
|
|
467
467
|
hint: `${H.shortDescription.length}/200 characters`,
|
|
468
468
|
rows: 2
|
|
469
469
|
}),
|
|
470
|
-
/* @__PURE__ */
|
|
470
|
+
/* @__PURE__ */ T("div", {
|
|
471
471
|
className: "grid gap-4 sm:grid-cols-2",
|
|
472
|
-
children: [/* @__PURE__ */
|
|
472
|
+
children: [/* @__PURE__ */ w(c, {
|
|
473
473
|
label: "Category",
|
|
474
474
|
value: H.category,
|
|
475
475
|
onChange: (e) => X("category", e.target.value),
|
|
@@ -478,7 +478,7 @@ var O = [
|
|
|
478
478
|
required: !0,
|
|
479
479
|
error: W.category,
|
|
480
480
|
hint: "Helps users discover your item in the store"
|
|
481
|
-
}), /* @__PURE__ */
|
|
481
|
+
}), /* @__PURE__ */ w(c, {
|
|
482
482
|
label: "Visibility",
|
|
483
483
|
value: H.visibility,
|
|
484
484
|
onChange: (e) => X("visibility", e.target.value),
|
|
@@ -487,16 +487,16 @@ var O = [
|
|
|
487
487
|
hint: H.visibility === "PUBLIC" ? "Listed in the marketplace after review approval — anyone can discover and install it" : H.visibility === "UNLISTED" ? "Not in the store, but share with anyone via a direct link. You can still submit for marketplace review later" : H.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
488
|
})]
|
|
489
489
|
}),
|
|
490
|
-
F !== "app" && /* @__PURE__ */
|
|
490
|
+
F !== "app" && /* @__PURE__ */ T("div", {
|
|
491
491
|
className: "space-y-2",
|
|
492
492
|
children: [
|
|
493
|
-
/* @__PURE__ */
|
|
493
|
+
/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ T("label", {
|
|
494
494
|
className: "block text-sm font-medium text-text-primary",
|
|
495
|
-
children: ["Compatible Products", /* @__PURE__ */
|
|
495
|
+
children: ["Compatible Products", /* @__PURE__ */ w("span", {
|
|
496
496
|
className: "text-status-error-text ml-1",
|
|
497
497
|
children: "*"
|
|
498
498
|
})]
|
|
499
|
-
}), /* @__PURE__ */
|
|
499
|
+
}), /* @__PURE__ */ T("p", {
|
|
500
500
|
className: "text-xs text-text-secondary mt-0.5",
|
|
501
501
|
children: [
|
|
502
502
|
"Select which products this ",
|
|
@@ -504,14 +504,14 @@ var O = [
|
|
|
504
504
|
" works with. Users will see it in those products' node stores."
|
|
505
505
|
]
|
|
506
506
|
})] }),
|
|
507
|
-
/* @__PURE__ */
|
|
507
|
+
/* @__PURE__ */ w("div", {
|
|
508
508
|
className: "flex flex-wrap gap-3",
|
|
509
509
|
children: N.map((e) => {
|
|
510
510
|
let n = L.includes(e.value);
|
|
511
|
-
return /* @__PURE__ */
|
|
511
|
+
return /* @__PURE__ */ T("label", {
|
|
512
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", W.compatibleProducts && !n && "border-status-error-bg/50"),
|
|
513
513
|
children: [
|
|
514
|
-
/* @__PURE__ */
|
|
514
|
+
/* @__PURE__ */ w("input", {
|
|
515
515
|
type: "checkbox",
|
|
516
516
|
className: "sr-only",
|
|
517
517
|
checked: n,
|
|
@@ -525,7 +525,7 @@ var O = [
|
|
|
525
525
|
});
|
|
526
526
|
}
|
|
527
527
|
}),
|
|
528
|
-
n && /* @__PURE__ */
|
|
528
|
+
n && /* @__PURE__ */ w(_, {
|
|
529
529
|
size: 14,
|
|
530
530
|
className: "text-primary flex-shrink-0"
|
|
531
531
|
}),
|
|
@@ -534,16 +534,16 @@ var O = [
|
|
|
534
534
|
}, e.value);
|
|
535
535
|
})
|
|
536
536
|
}),
|
|
537
|
-
W.compatibleProducts && /* @__PURE__ */
|
|
537
|
+
W.compatibleProducts && /* @__PURE__ */ w("p", {
|
|
538
538
|
className: "text-xs text-status-error-text",
|
|
539
539
|
children: W.compatibleProducts
|
|
540
540
|
})
|
|
541
541
|
]
|
|
542
542
|
}),
|
|
543
|
-
/* @__PURE__ */
|
|
543
|
+
/* @__PURE__ */ w(d, {
|
|
544
544
|
label: "Full Description",
|
|
545
545
|
value: H.description,
|
|
546
|
-
onChange: (e) => X("description", e
|
|
546
|
+
onChange: (e) => X("description", e),
|
|
547
547
|
placeholder: "Detailed description, features, and use cases...",
|
|
548
548
|
rows: 5,
|
|
549
549
|
hint: "Markdown supported"
|
|
@@ -551,43 +551,43 @@ var O = [
|
|
|
551
551
|
]
|
|
552
552
|
})
|
|
553
553
|
}),
|
|
554
|
-
J.length > 2 && /* @__PURE__ */
|
|
554
|
+
J.length > 2 && /* @__PURE__ */ w(o, {
|
|
555
555
|
title: "Organization",
|
|
556
556
|
description: "Which developer organization owns this?",
|
|
557
|
-
children: /* @__PURE__ */
|
|
557
|
+
children: /* @__PURE__ */ w(c, {
|
|
558
558
|
label: "Developer Organization",
|
|
559
559
|
value: H.developerOrganizationId,
|
|
560
560
|
onChange: (e) => X("developerOrganizationId", e.target.value),
|
|
561
561
|
options: J
|
|
562
562
|
})
|
|
563
563
|
}),
|
|
564
|
-
F === "app" && /* @__PURE__ */
|
|
564
|
+
F === "app" && /* @__PURE__ */ T(o, {
|
|
565
565
|
title: "Permissions",
|
|
566
566
|
description: "Choose what data your app can access. Users will see these permissions when authorizing your app — like GitHub Apps.",
|
|
567
|
-
children: [/* @__PURE__ */
|
|
567
|
+
children: [/* @__PURE__ */ w(M, {
|
|
568
568
|
permissions: z,
|
|
569
569
|
onChange: Z
|
|
570
|
-
}), /* @__PURE__ */
|
|
570
|
+
}), /* @__PURE__ */ T("div", {
|
|
571
571
|
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__ */
|
|
572
|
+
children: [/* @__PURE__ */ w(b, {
|
|
573
573
|
size: 14,
|
|
574
574
|
className: "flex-shrink-0 mt-0.5"
|
|
575
|
-
}), /* @__PURE__ */
|
|
575
|
+
}), /* @__PURE__ */ T("span", { children: [/* @__PURE__ */ w("strong", { children: "Read & Write" }), " implies Read. Select only what your app genuinely needs — fewer permissions build more user trust."] })]
|
|
576
576
|
})]
|
|
577
577
|
}),
|
|
578
|
-
F === "app" && /* @__PURE__ */
|
|
578
|
+
F === "app" && /* @__PURE__ */ w(o, {
|
|
579
579
|
title: "Integration Setup",
|
|
580
580
|
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
|
-
children: /* @__PURE__ */
|
|
581
|
+
children: /* @__PURE__ */ T("div", {
|
|
582
582
|
className: "space-y-4",
|
|
583
|
-
children: [/* @__PURE__ */
|
|
583
|
+
children: [/* @__PURE__ */ w(s, {
|
|
584
584
|
label: "Post-install Callback URL",
|
|
585
585
|
type: "url",
|
|
586
586
|
value: H.oauthAuthUrl,
|
|
587
587
|
onChange: (e) => X("oauthAuthUrl", e.target.value),
|
|
588
588
|
placeholder: "https://yourapp.com/callback",
|
|
589
589
|
hint: "Users land here after install with ?installation_id=xxx appended"
|
|
590
|
-
}), /* @__PURE__ */
|
|
590
|
+
}), /* @__PURE__ */ w(s, {
|
|
591
591
|
label: "Revoke URL",
|
|
592
592
|
type: "url",
|
|
593
593
|
value: H.oauthRevokeUrl,
|
|
@@ -597,43 +597,43 @@ var O = [
|
|
|
597
597
|
})]
|
|
598
598
|
})
|
|
599
599
|
}),
|
|
600
|
-
F !== "app" && /* @__PURE__ */
|
|
600
|
+
F !== "app" && /* @__PURE__ */ T("div", {
|
|
601
601
|
className: "rounded-lg border border-border-subtle bg-bg-sunken/30 p-4 flex gap-3 text-sm text-text-secondary",
|
|
602
|
-
children: [/* @__PURE__ */
|
|
602
|
+
children: [/* @__PURE__ */ w(b, {
|
|
603
603
|
size: 16,
|
|
604
604
|
className: "flex-shrink-0 mt-0.5"
|
|
605
|
-
}), /* @__PURE__ */
|
|
605
|
+
}), /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
|
|
606
606
|
className: "font-medium text-text-primary",
|
|
607
607
|
children: "File uploads"
|
|
608
|
-
}), /* @__PURE__ */
|
|
608
|
+
}), /* @__PURE__ */ w("p", {
|
|
609
609
|
className: "mt-1",
|
|
610
610
|
children: F === "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
611
|
})] })]
|
|
612
612
|
}),
|
|
613
|
-
W._submit && /* @__PURE__ */
|
|
613
|
+
W._submit && /* @__PURE__ */ T("div", {
|
|
614
614
|
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__ */
|
|
615
|
+
children: [/* @__PURE__ */ w(b, {
|
|
616
616
|
size: 16,
|
|
617
617
|
className: "flex-shrink-0 mt-0.5"
|
|
618
|
-
}), /* @__PURE__ */
|
|
618
|
+
}), /* @__PURE__ */ w("span", { children: W._submit })]
|
|
619
619
|
}),
|
|
620
|
-
/* @__PURE__ */
|
|
620
|
+
/* @__PURE__ */ T("div", {
|
|
621
621
|
className: "flex items-center justify-end gap-3 border-t pt-6",
|
|
622
|
-
children: [/* @__PURE__ */
|
|
622
|
+
children: [/* @__PURE__ */ T("button", {
|
|
623
623
|
type: "button",
|
|
624
624
|
onClick: () => Y("/apps"),
|
|
625
625
|
disabled: q,
|
|
626
626
|
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__ */
|
|
628
|
-
}), /* @__PURE__ */
|
|
627
|
+
children: [/* @__PURE__ */ w(te, { size: 16 }), ie("devportal.cancel", "Cancel")]
|
|
628
|
+
}), /* @__PURE__ */ w("button", {
|
|
629
629
|
type: "submit",
|
|
630
630
|
disabled: q,
|
|
631
631
|
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: q ? /* @__PURE__ */
|
|
632
|
+
children: q ? /* @__PURE__ */ T(C, { children: [/* @__PURE__ */ w(x, {
|
|
633
633
|
size: 16,
|
|
634
634
|
className: "animate-spin"
|
|
635
|
-
}), "Creating…"] }) : /* @__PURE__ */
|
|
636
|
-
/* @__PURE__ */
|
|
635
|
+
}), "Creating…"] }) : /* @__PURE__ */ T(C, { children: [
|
|
636
|
+
/* @__PURE__ */ w(ee, { size: 16 }),
|
|
637
637
|
"Create ",
|
|
638
638
|
$
|
|
639
639
|
] })
|