@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.
Files changed (49) hide show
  1. package/dist/devportal/components/MarkdownEditor.d.ts +24 -0
  2. package/dist/devportal/components/MarkdownEditor.d.ts.map +1 -0
  3. package/dist/devportal/components/MarkdownEditor.js +136 -0
  4. package/dist/devportal/components/MarkdownEditor.js.map +1 -0
  5. package/dist/devportal/components/index.d.ts +1 -0
  6. package/dist/devportal/components/index.d.ts.map +1 -1
  7. package/dist/devportal/components/index.js +1 -0
  8. package/dist/devportal/hooks/usePackageUpload.d.ts.map +1 -1
  9. package/dist/devportal/hooks/usePackageUpload.js.map +1 -1
  10. package/dist/devportal/pages/ApplicationDetailPage.d.ts.map +1 -1
  11. package/dist/devportal/pages/ApplicationDetailPage.js +748 -746
  12. package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
  13. package/dist/devportal/pages/ApplicationVersionsPage.d.ts.map +1 -1
  14. package/dist/devportal/pages/ApplicationVersionsPage.js +390 -374
  15. package/dist/devportal/pages/ApplicationVersionsPage.js.map +1 -1
  16. package/dist/devportal/pages/CreateApiKeyPage.d.ts.map +1 -1
  17. package/dist/devportal/pages/CreateApiKeyPage.js +103 -104
  18. package/dist/devportal/pages/CreateApiKeyPage.js.map +1 -1
  19. package/dist/devportal/pages/CreateApplicationPage.d.ts.map +1 -1
  20. package/dist/devportal/pages/CreateApplicationPage.js +103 -103
  21. package/dist/devportal/pages/CreateApplicationPage.js.map +1 -1
  22. package/dist/devportal/pages/CreateOAuthClientPage.d.ts.map +1 -1
  23. package/dist/devportal/pages/CreateOAuthClientPage.js +129 -130
  24. package/dist/devportal/pages/CreateOAuthClientPage.js.map +1 -1
  25. package/dist/devportal/pages/CreateWebhookPage.js +1 -1
  26. package/dist/devportal/pages/CreateWebhookPage.js.map +1 -1
  27. package/dist/devportal/pages/DelegationsPage.js +214 -214
  28. package/dist/devportal/pages/DelegationsPage.js.map +1 -1
  29. package/dist/devportal/pages/EditApplicationPage.d.ts.map +1 -1
  30. package/dist/devportal/pages/EditApplicationPage.js +285 -284
  31. package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
  32. package/dist/devportal/pages/ListingPreviewPage.d.ts.map +1 -1
  33. package/dist/devportal/pages/ListingPreviewPage.js +162 -158
  34. package/dist/devportal/pages/ListingPreviewPage.js.map +1 -1
  35. package/dist/devportal/pages/PublishPage.d.ts.map +1 -1
  36. package/dist/devportal/pages/PublishPage.js +106 -106
  37. package/dist/devportal/pages/PublishPage.js.map +1 -1
  38. package/dist/devportal/pages/SellerDashboardPage.d.ts.map +1 -1
  39. package/dist/devportal/pages/SellerDashboardPage.js +136 -137
  40. package/dist/devportal/pages/SellerDashboardPage.js.map +1 -1
  41. package/dist/devportal/pages/SellerItemsPage.d.ts.map +1 -1
  42. package/dist/devportal/pages/SellerItemsPage.js +190 -191
  43. package/dist/devportal/pages/SellerItemsPage.js.map +1 -1
  44. package/dist/devportal/pages/SellerOrdersPage.d.ts.map +1 -1
  45. package/dist/devportal/pages/SellerOrdersPage.js +138 -139
  46. package/dist/devportal/pages/SellerOrdersPage.js.map +1 -1
  47. package/dist/devportal/types/index.d.ts.map +1 -1
  48. package/dist/devportal/types/index.js.map +1 -1
  49. 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 ee } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
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";
13
- import { Fragment as S, jsx as C, jsxs as w } from "react/jsx-runtime";
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 T = [
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 E() {
88
- return Object.fromEntries(T.map((e) => [e.id, "none"]));
87
+ function D() {
88
+ return Object.fromEntries(E.map((e) => [e.id, "none"]));
89
89
  }
90
- function D(e) {
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__ */ w("button", {
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__ */ C("span", {
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__ */ C(g, { size: 12 })
148
+ children: /* @__PURE__ */ w(_, { size: 12 })
149
149
  }),
150
- /* @__PURE__ */ C("div", {
150
+ /* @__PURE__ */ w("div", {
151
151
  className: "flex h-10 w-10 items-center justify-center rounded-lg bg-bg-sunken",
152
- children: /* @__PURE__ */ C(e, {
152
+ children: /* @__PURE__ */ w(e, {
153
153
  size: 22,
154
154
  className: "text-text-primary"
155
155
  })
156
156
  }),
157
- /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
157
+ /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
158
158
  className: "font-semibold text-text-primary",
159
159
  children: n
160
- }), /* @__PURE__ */ C("p", {
160
+ }), /* @__PURE__ */ w("p", {
161
161
  className: "mt-1 text-sm text-text-secondary",
162
162
  children: r
163
163
  })] }),
164
- /* @__PURE__ */ C("ul", {
164
+ /* @__PURE__ */ w("ul", {
165
165
  className: "mt-1 space-y-1",
166
- children: i.map((e) => /* @__PURE__ */ w("li", {
166
+ children: i.map((e) => /* @__PURE__ */ T("li", {
167
167
  className: "flex items-center gap-2 text-xs text-text-secondary",
168
- children: [/* @__PURE__ */ C(_, {
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__ */ C("div", {
185
+ return /* @__PURE__ */ w("div", {
186
186
  className: "overflow-x-auto rounded-lg border border-border-subtle",
187
- children: /* @__PURE__ */ w("table", {
187
+ children: /* @__PURE__ */ T("table", {
188
188
  className: "w-full text-sm",
189
- children: [/* @__PURE__ */ C("thead", { children: /* @__PURE__ */ w("tr", {
189
+ children: [/* @__PURE__ */ w("thead", { children: /* @__PURE__ */ T("tr", {
190
190
  className: "border-b border-border-subtle bg-bg-sunken/50",
191
- children: [/* @__PURE__ */ C("th", {
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__ */ C("th", {
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__ */ C("tbody", {
198
+ }) }), /* @__PURE__ */ w("tbody", {
199
199
  className: "divide-y divide-border",
200
- children: T.map((r) => /* @__PURE__ */ w("tr", {
200
+ children: E.map((r) => /* @__PURE__ */ T("tr", {
201
201
  className: "hover:bg-bg-sunken/30 transition-colors",
202
- children: [/* @__PURE__ */ w("td", {
202
+ children: [/* @__PURE__ */ T("td", {
203
203
  className: "px-4 py-3",
204
- children: [/* @__PURE__ */ C("p", {
204
+ children: [/* @__PURE__ */ w("p", {
205
205
  className: "font-medium text-text-primary",
206
206
  children: r.label
207
- }), /* @__PURE__ */ C("p", {
207
+ }), /* @__PURE__ */ w("p", {
208
208
  className: "text-xs text-text-secondary",
209
209
  children: r.description
210
210
  })]
211
- }), n.map((n) => /* @__PURE__ */ C("td", {
211
+ }), n.map((n) => /* @__PURE__ */ w("td", {
212
212
  className: "px-4 py-3 text-center",
213
- children: /* @__PURE__ */ C("input", {
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: _, basePath: T, activeOrgId: P } = e(), { t: re } = ee(), ie = (e, t) => {
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(E()), V = f(!1), [H, U] = 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) => _?.(`${T}${e}`), se = (e) => e.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, ""), ce = (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: D(z) } : null;
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__ */ C(u, {
350
- permission: d.APP_CREATE,
351
- children: /* @__PURE__ */ C(a, {
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: `${T}/apps`,
355
+ backLink: `${E}/apps`,
356
356
  backLabel: "Back to Applications",
357
- children: /* @__PURE__ */ w("div", {
357
+ children: /* @__PURE__ */ T("div", {
358
358
  className: "max-w-3xl space-y-6",
359
- children: [/* @__PURE__ */ w("div", {
359
+ children: [/* @__PURE__ */ T("div", {
360
360
  className: "grid gap-4 sm:grid-cols-3",
361
361
  children: [
362
- /* @__PURE__ */ C(j, {
363
- icon: h,
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__ */ C(j, {
376
- icon: x,
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__ */ C(j, {
389
- icon: v,
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__ */ w("div", {
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__ */ C(y, {
404
+ children: [/* @__PURE__ */ w(b, {
405
405
  size: 16,
406
406
  className: "flex-shrink-0 mt-0.5"
407
- }), /* @__PURE__ */ C("p", { children: "Apps use OAuth to interact with platform data. Nodes and Workflows are packaged files you upload after creation." })]
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 = C(F === "app" ? h : F === "node" ? x : v, { size: 16 });
413
- return /* @__PURE__ */ C(u, {
414
- permission: d.APP_CREATE,
415
- children: /* @__PURE__ */ C(a, {
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: `${T}/apps`,
419
+ backLink: `${E}/apps`,
420
420
  backLabel: "Back to Applications",
421
- children: /* @__PURE__ */ w("form", {
421
+ children: /* @__PURE__ */ T("form", {
422
422
  onSubmit: de,
423
423
  className: "space-y-8 max-w-3xl",
424
424
  children: [
425
- /* @__PURE__ */ w("div", {
425
+ /* @__PURE__ */ T("div", {
426
426
  className: "flex items-center gap-3",
427
- children: [/* @__PURE__ */ w("button", {
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__ */ C(m, { size: 14 }), "Change type"]
432
- }), /* @__PURE__ */ w("span", {
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__ */ C(o, {
437
+ /* @__PURE__ */ w(o, {
438
438
  title: "Basic Information",
439
439
  description: "Core details about your application",
440
- children: /* @__PURE__ */ w("div", {
440
+ children: /* @__PURE__ */ T("div", {
441
441
  className: "space-y-4",
442
442
  children: [
443
- /* @__PURE__ */ C(s, {
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__ */ C(s, {
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__ */ C(l, {
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__ */ w("div", {
470
+ /* @__PURE__ */ T("div", {
471
471
  className: "grid gap-4 sm:grid-cols-2",
472
- children: [/* @__PURE__ */ C(c, {
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__ */ C(c, {
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__ */ w("div", {
490
+ F !== "app" && /* @__PURE__ */ T("div", {
491
491
  className: "space-y-2",
492
492
  children: [
493
- /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ w("label", {
493
+ /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ T("label", {
494
494
  className: "block text-sm font-medium text-text-primary",
495
- children: ["Compatible Products", /* @__PURE__ */ C("span", {
495
+ children: ["Compatible Products", /* @__PURE__ */ w("span", {
496
496
  className: "text-status-error-text ml-1",
497
497
  children: "*"
498
498
  })]
499
- }), /* @__PURE__ */ w("p", {
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__ */ C("div", {
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__ */ w("label", {
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__ */ C("input", {
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__ */ C(g, {
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__ */ C("p", {
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__ */ C(l, {
543
+ /* @__PURE__ */ w(d, {
544
544
  label: "Full Description",
545
545
  value: H.description,
546
- onChange: (e) => X("description", e.target.value),
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__ */ C(o, {
554
+ J.length > 2 && /* @__PURE__ */ w(o, {
555
555
  title: "Organization",
556
556
  description: "Which developer organization owns this?",
557
- children: /* @__PURE__ */ C(c, {
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__ */ w(o, {
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__ */ C(M, {
567
+ children: [/* @__PURE__ */ w(M, {
568
568
  permissions: z,
569
569
  onChange: Z
570
- }), /* @__PURE__ */ w("div", {
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__ */ C(y, {
572
+ children: [/* @__PURE__ */ w(b, {
573
573
  size: 14,
574
574
  className: "flex-shrink-0 mt-0.5"
575
- }), /* @__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."] })]
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__ */ C(o, {
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__ */ w("div", {
581
+ children: /* @__PURE__ */ T("div", {
582
582
  className: "space-y-4",
583
- children: [/* @__PURE__ */ C(s, {
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__ */ C(s, {
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__ */ w("div", {
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__ */ C(y, {
602
+ children: [/* @__PURE__ */ w(b, {
603
603
  size: 16,
604
604
  className: "flex-shrink-0 mt-0.5"
605
- }), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
605
+ }), /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
606
606
  className: "font-medium text-text-primary",
607
607
  children: "File uploads"
608
- }), /* @__PURE__ */ C("p", {
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__ */ w("div", {
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__ */ C(y, {
615
+ children: [/* @__PURE__ */ w(b, {
616
616
  size: 16,
617
617
  className: "flex-shrink-0 mt-0.5"
618
- }), /* @__PURE__ */ C("span", { children: W._submit })]
618
+ }), /* @__PURE__ */ w("span", { children: W._submit })]
619
619
  }),
620
- /* @__PURE__ */ w("div", {
620
+ /* @__PURE__ */ T("div", {
621
621
  className: "flex items-center justify-end gap-3 border-t pt-6",
622
- children: [/* @__PURE__ */ w("button", {
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__ */ C(ne, { size: 16 }), ie("devportal.cancel", "Cancel")]
628
- }), /* @__PURE__ */ C("button", {
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__ */ w(S, { children: [/* @__PURE__ */ C(b, {
632
+ children: q ? /* @__PURE__ */ T(C, { children: [/* @__PURE__ */ w(x, {
633
633
  size: 16,
634
634
  className: "animate-spin"
635
- }), "Creating…"] }) : /* @__PURE__ */ w(S, { children: [
636
- /* @__PURE__ */ C(te, { size: 16 }),
635
+ }), "Creating…"] }) : /* @__PURE__ */ T(C, { children: [
636
+ /* @__PURE__ */ w(ee, { size: 16 }),
637
637
  "Create ",
638
638
  $
639
639
  ] })