@burdenoff/microfe-devportal 2026.1107.1 → 2026.1107.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/devportal/constants/appCategories.d.ts +26 -0
- package/dist/devportal/constants/appCategories.d.ts.map +1 -0
- package/dist/devportal/constants/appCategories.js +45 -0
- package/dist/devportal/constants/appCategories.js.map +1 -0
- package/dist/devportal/pages/ApplicationDetailPage.d.ts.map +1 -1
- package/dist/devportal/pages/ApplicationDetailPage.js +233 -232
- package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
- package/dist/devportal/pages/CreateApplicationPage.d.ts.map +1 -1
- package/dist/devportal/pages/CreateApplicationPage.js +100 -128
- package/dist/devportal/pages/CreateApplicationPage.js.map +1 -1
- package/dist/devportal/pages/EditApplicationPage.d.ts.map +1 -1
- package/dist/devportal/pages/EditApplicationPage.js +24 -52
- package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
- package/dist/devportal/pages/SetupPage.d.ts.map +1 -1
- package/dist/devportal/pages/SetupPage.js +20 -69
- package/dist/devportal/pages/SetupPage.js.map +1 -1
- package/package.json +1 -1
|
@@ -14,19 +14,20 @@ import { InputField as k, SelectField as re, TextareaField as ie } from "../comp
|
|
|
14
14
|
import { ConfirmDialog as ae } from "../components/ConfirmDialog.js";
|
|
15
15
|
import { GrantDelegationModal as oe } from "../components/GrantDelegationModal.js";
|
|
16
16
|
import { MarkdownEditor as se } from "../components/MarkdownEditor.js";
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
17
|
+
import { DEVELOPER_LINKS as ce } from "../constants/developerLinks.js";
|
|
18
|
+
import { useDevportalPermission as le } from "../hooks/usePermission.js";
|
|
19
|
+
import { DEVPORTAL_PERMISSIONS as ue } from "../constants/permissions.js";
|
|
20
|
+
import { ImageUploadField as de, ScreenshotGallery as fe } from "../components/ImageUploadField.js";
|
|
21
|
+
import { usePackageUpload as A } from "../hooks/usePackageUpload.js";
|
|
22
|
+
import { useCallback as j, useEffect as pe, useMemo as M, useRef as me, useState as N } from "react";
|
|
23
|
+
import { Markdown as he } from "@burdenoff/fe-libs/shared/components";
|
|
24
|
+
import { AlertCircle as ge, AppWindow as _e, BarChart3 as ve, Check as P, CheckCircle as ye, ChevronRight as be, CircleDollarSign as F, Clock as xe, Copy as Se, Edit as Ce, ExternalLink as I, FlaskConical as we, Gift as Te, Info as Ee, Key as De, Link as Oe, Loader2 as L, Lock as ke, MoreHorizontal as Ae, Package as je, Plus as R, Power as Me, RefreshCw as Ne, SendHorizontal as Pe, Shield as z, Store as Fe, TrendingUp as Ie, Upload as B, Users as Le, Wallet as Re, Webhook as ze, X as Be, XCircle as Ve } from "lucide-react";
|
|
25
|
+
import { useParams as He } from "react-router";
|
|
25
26
|
import { Fragment as V, jsx as H, jsxs as U } from "react/jsx-runtime";
|
|
26
27
|
import { useI18n as W } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
27
|
-
import { CTAOverflowMenu as
|
|
28
|
+
import { CTAOverflowMenu as Ue, EmphasisPanel as We, GlassCard as Ge } from "@burdenoff/fe-libs/ui";
|
|
28
29
|
//#region src/devportal/pages/ApplicationDetailPage.tsx
|
|
29
|
-
function
|
|
30
|
+
function Ke(e) {
|
|
30
31
|
return e ? {
|
|
31
32
|
id: e.id,
|
|
32
33
|
name: e.name,
|
|
@@ -80,7 +81,7 @@ function Ge(e) {
|
|
|
80
81
|
updatedAt: e.updatedAt
|
|
81
82
|
} : null;
|
|
82
83
|
}
|
|
83
|
-
function
|
|
84
|
+
function qe(e) {
|
|
84
85
|
return {
|
|
85
86
|
id: e.id,
|
|
86
87
|
applicationId: e.applicationId,
|
|
@@ -104,7 +105,7 @@ function Ke(e) {
|
|
|
104
105
|
updatedAt: e.updatedAt
|
|
105
106
|
};
|
|
106
107
|
}
|
|
107
|
-
function
|
|
108
|
+
function Je(e) {
|
|
108
109
|
return {
|
|
109
110
|
id: e.id,
|
|
110
111
|
applicationId: e.applicationId,
|
|
@@ -120,7 +121,7 @@ function qe(e) {
|
|
|
120
121
|
createdAt: e.createdAt
|
|
121
122
|
};
|
|
122
123
|
}
|
|
123
|
-
function
|
|
124
|
+
function Ye(e) {
|
|
124
125
|
return {
|
|
125
126
|
id: e.id,
|
|
126
127
|
appId: e.appId,
|
|
@@ -142,31 +143,31 @@ function Je(e) {
|
|
|
142
143
|
revokedBy: e.revokedBy || void 0
|
|
143
144
|
};
|
|
144
145
|
}
|
|
145
|
-
var
|
|
146
|
+
var Xe = [
|
|
146
147
|
{
|
|
147
148
|
id: "overview",
|
|
148
149
|
label: "Overview",
|
|
149
|
-
icon:
|
|
150
|
+
icon: _e
|
|
150
151
|
},
|
|
151
152
|
{
|
|
152
153
|
id: "analytics",
|
|
153
154
|
label: "Analytics",
|
|
154
|
-
icon:
|
|
155
|
+
icon: ve
|
|
155
156
|
},
|
|
156
157
|
{
|
|
157
158
|
id: "store-listing",
|
|
158
159
|
label: "Store Listing",
|
|
159
|
-
icon:
|
|
160
|
+
icon: Fe
|
|
160
161
|
},
|
|
161
162
|
{
|
|
162
163
|
id: "versions",
|
|
163
164
|
label: "Versions",
|
|
164
|
-
icon:
|
|
165
|
+
icon: je
|
|
165
166
|
},
|
|
166
167
|
{
|
|
167
168
|
id: "pricing",
|
|
168
169
|
label: "Pricing",
|
|
169
|
-
icon:
|
|
170
|
+
icon: F
|
|
170
171
|
},
|
|
171
172
|
{
|
|
172
173
|
id: "permissions",
|
|
@@ -176,12 +177,12 @@ var Ye = [
|
|
|
176
177
|
{
|
|
177
178
|
id: "webhooks",
|
|
178
179
|
label: "Webhooks",
|
|
179
|
-
icon:
|
|
180
|
+
icon: ze
|
|
180
181
|
},
|
|
181
182
|
{
|
|
182
183
|
id: "delegations",
|
|
183
184
|
label: "Delegations",
|
|
184
|
-
icon:
|
|
185
|
+
icon: Le
|
|
185
186
|
},
|
|
186
187
|
{
|
|
187
188
|
id: "playground",
|
|
@@ -191,18 +192,18 @@ var Ye = [
|
|
|
191
192
|
{
|
|
192
193
|
id: "oauth",
|
|
193
194
|
label: "OAuth",
|
|
194
|
-
icon:
|
|
195
|
+
icon: ke
|
|
195
196
|
},
|
|
196
197
|
{
|
|
197
198
|
id: "api-keys",
|
|
198
199
|
label: "API Keys",
|
|
199
|
-
icon:
|
|
200
|
+
icon: De
|
|
200
201
|
}
|
|
201
|
-
],
|
|
202
|
+
], G = {
|
|
202
203
|
ACTIVE: "bg-status-success-bg-subtle text-status-success-text",
|
|
203
204
|
REVOKED: "bg-status-error-bg-subtle text-status-error-text",
|
|
204
205
|
EXPIRED: "bg-bg-sunken text-text-secondary"
|
|
205
|
-
},
|
|
206
|
+
}, K = ({ message: e = "Loading..." }) => /* @__PURE__ */ U("div", {
|
|
206
207
|
className: "flex items-center justify-center gap-3 py-12",
|
|
207
208
|
children: [/* @__PURE__ */ H(L, {
|
|
208
209
|
size: 20,
|
|
@@ -211,50 +212,50 @@ var Ye = [
|
|
|
211
212
|
className: "text-sm text-text-secondary",
|
|
212
213
|
children: e
|
|
213
214
|
})]
|
|
214
|
-
}),
|
|
215
|
+
}), q = ({ message: e }) => /* @__PURE__ */ U("div", {
|
|
215
216
|
className: "flex flex-col items-center justify-center gap-2 py-12 text-center",
|
|
216
|
-
children: [/* @__PURE__ */ H(
|
|
217
|
+
children: [/* @__PURE__ */ H(ge, {
|
|
217
218
|
size: 32,
|
|
218
219
|
className: "text-status-error-text"
|
|
219
220
|
}), /* @__PURE__ */ H("p", {
|
|
220
221
|
className: "text-sm text-text-secondary",
|
|
221
222
|
children: e
|
|
222
223
|
})]
|
|
223
|
-
}),
|
|
224
|
+
}), Ze = () => {
|
|
224
225
|
let { navigate: i, basePath: o, workspaceId: c } = e(), { t: u } = W(), m = (e, t) => {
|
|
225
226
|
let n = u(e);
|
|
226
227
|
return n === e ? t : n;
|
|
227
|
-
}, { allowed: g } =
|
|
228
|
+
}, { allowed: g } = le(ue.APP_UPDATE), { allowed: y } = le(ue.APP_DELETE), { appId: b } = He(), [S, D] = N("overview"), [te, ne] = N(!1), [k, ie] = N(!1), [se, ce] = N(null), [de, fe] = N(!1), { data: A, loading: pe, error: M, refetch: me } = s({
|
|
228
229
|
variables: { id: b },
|
|
229
230
|
skip: !b
|
|
230
|
-
}), [
|
|
231
|
+
}), [he, { loading: ve }] = h(), [F, { loading: Se }] = a(), [I, { loading: Te }] = _(), [Ee] = p(), [De, { loading: Oe }] = f(), [ke, { loading: Ae }] = v(), { data: je, refetch: R } = d({
|
|
231
232
|
variables: {
|
|
232
233
|
applicationId: b,
|
|
233
234
|
workspaceId: c ?? void 0
|
|
234
235
|
},
|
|
235
236
|
skip: !c || !b,
|
|
236
237
|
fetchPolicy: "cache-and-network"
|
|
237
|
-
}),
|
|
238
|
-
variables: { id:
|
|
239
|
-
skip: !
|
|
238
|
+
}), z = je?.appInstallations?.edges?.[0]?.node ?? null, { data: Ie } = l({
|
|
239
|
+
variables: { id: A?.application?.developerOrganizationId ?? "" },
|
|
240
|
+
skip: !A?.application?.developerOrganizationId,
|
|
240
241
|
fetchPolicy: "cache-first"
|
|
241
|
-
}), B =
|
|
242
|
+
}), B = j((e) => {
|
|
242
243
|
i?.(`${o}${e}`);
|
|
243
|
-
}, [i, o]), Le =
|
|
244
|
-
let e =
|
|
244
|
+
}, [i, o]), Le = j(async () => {
|
|
245
|
+
let e = A?.application?.appId;
|
|
245
246
|
if (e) try {
|
|
246
|
-
let t = (await
|
|
247
|
-
t &&
|
|
247
|
+
let t = (await he({ variables: { id: e } })).data?.rotateAppSecret.clientSecret;
|
|
248
|
+
t && ce(t), ne(!1);
|
|
248
249
|
} catch {}
|
|
249
|
-
}, [
|
|
250
|
+
}, [A?.application?.appId, he]), Re = j(async () => {
|
|
250
251
|
if (b) try {
|
|
251
|
-
await
|
|
252
|
+
await F({ variables: { id: b } }), ie(!1), B("/apps");
|
|
252
253
|
} catch {}
|
|
253
254
|
}, [
|
|
254
255
|
b,
|
|
255
|
-
|
|
256
|
+
F,
|
|
256
257
|
B
|
|
257
|
-
]), ze =
|
|
258
|
+
]), ze = j(async (e) => {
|
|
258
259
|
if (!(!b || !c)) try {
|
|
259
260
|
await De({ variables: { input: {
|
|
260
261
|
applicationId: b,
|
|
@@ -262,7 +263,7 @@ var Ye = [
|
|
|
262
263
|
workspaceId: c,
|
|
263
264
|
autoUpdate: !1,
|
|
264
265
|
...e ? { version: e } : {}
|
|
265
|
-
} } }),
|
|
266
|
+
} } }), R(), O("success");
|
|
266
267
|
} catch (e) {
|
|
267
268
|
console.error("[DevPortal] Test in Workspace failed:", e), O("error");
|
|
268
269
|
}
|
|
@@ -270,18 +271,18 @@ var Ye = [
|
|
|
270
271
|
b,
|
|
271
272
|
c,
|
|
272
273
|
De,
|
|
273
|
-
|
|
274
|
-
]), [
|
|
274
|
+
R
|
|
275
|
+
]), [Be, We] = N(!1), [Ge, qe] = N(""), Je = j(async (e) => {
|
|
275
276
|
try {
|
|
276
|
-
await ke({ variables: { id: e } }),
|
|
277
|
+
await ke({ variables: { id: e } }), R(), O("success");
|
|
277
278
|
} catch {
|
|
278
279
|
O("error");
|
|
279
280
|
}
|
|
280
|
-
}, [ke,
|
|
281
|
+
}, [ke, R]), Ye = j(async () => {
|
|
281
282
|
if (b) try {
|
|
282
|
-
let e = (
|
|
283
|
+
let e = (A?.application?.versions?.edges ?? []).map((e) => e.node).filter((e) => e.status === "draft");
|
|
283
284
|
for (let t of e) await Ee({ variables: { id: t.id } });
|
|
284
|
-
await
|
|
285
|
+
await I({ variables: { id: b } }), O("success");
|
|
285
286
|
} catch (e) {
|
|
286
287
|
console.error("[DevPortal] Submit failed:", e), O("error");
|
|
287
288
|
} finally {
|
|
@@ -289,20 +290,20 @@ var Ye = [
|
|
|
289
290
|
}
|
|
290
291
|
}, [
|
|
291
292
|
b,
|
|
292
|
-
|
|
293
|
+
A?.application?.versions?.edges,
|
|
293
294
|
Ee,
|
|
294
|
-
|
|
295
|
+
I,
|
|
295
296
|
me
|
|
296
297
|
]);
|
|
297
|
-
if (
|
|
298
|
-
if (
|
|
298
|
+
if (pe && !A) return /* @__PURE__ */ H(n, { message: m("devportal.loadingApplication", "Loading application...") });
|
|
299
|
+
if (M) return /* @__PURE__ */ H(x, {
|
|
299
300
|
title: m("devportal.error", "Error"),
|
|
300
301
|
backLink: `${o}/apps`,
|
|
301
302
|
backLabel: m("devportal.backToApplications", "Back to Applications"),
|
|
302
303
|
children: /* @__PURE__ */ U("div", {
|
|
303
304
|
className: "flex flex-col items-center justify-center py-12 text-center",
|
|
304
305
|
children: [
|
|
305
|
-
/* @__PURE__ */ H(
|
|
306
|
+
/* @__PURE__ */ H(ge, {
|
|
306
307
|
size: 48,
|
|
307
308
|
className: "text-status-error-text mb-4"
|
|
308
309
|
}),
|
|
@@ -312,19 +313,19 @@ var Ye = [
|
|
|
312
313
|
}),
|
|
313
314
|
/* @__PURE__ */ H("p", {
|
|
314
315
|
className: "text-sm text-text-secondary",
|
|
315
|
-
children:
|
|
316
|
+
children: M.message
|
|
316
317
|
})
|
|
317
318
|
]
|
|
318
319
|
})
|
|
319
320
|
});
|
|
320
|
-
let G =
|
|
321
|
+
let G = Ke(A?.application);
|
|
321
322
|
if (!G) return /* @__PURE__ */ H(x, {
|
|
322
323
|
title: m("devportal.notFound", "Not Found"),
|
|
323
324
|
backLink: `${o}/apps`,
|
|
324
325
|
backLabel: m("devportal.backToApplications", "Back to Applications"),
|
|
325
326
|
children: /* @__PURE__ */ H(r, {
|
|
326
327
|
illustration: "empty-generic",
|
|
327
|
-
icon: /* @__PURE__ */ H(
|
|
328
|
+
icon: /* @__PURE__ */ H(_e, { size: 48 }),
|
|
328
329
|
title: m("devportal.applicationNotFound", "Application not found"),
|
|
329
330
|
description: m("devportal.applicationNotFoundDescription", "The application you're looking for doesn't exist or you don't have access to it.")
|
|
330
331
|
})
|
|
@@ -335,33 +336,33 @@ var Ye = [
|
|
|
335
336
|
"PARSER",
|
|
336
337
|
"WIDGET",
|
|
337
338
|
"DASHBOARD"
|
|
338
|
-
].includes(G.appType), q = G.appType === "API_INTEGRATION",
|
|
339
|
+
].includes(G.appType), q = G.appType === "API_INTEGRATION", Ze = A?.application?.versions?.totalCount ?? 0, et = G.appType === "NODE", J = A?.application?.versions?.edges ?? [], tt = J.find((e) => e.node.isLatest)?.node ?? J[0]?.node ?? null, ct = (tt?.metadata ?? {}).sandboxBuildStatus, lt = et && ct !== "READY", ut = lt ? ct === "FAILED" || ct === "DISPATCH_FAILED" ? m("devportal.testInWorkspaceBuildFailed", "Test in Workspace (sandbox build failed)") : m("devportal.testInWorkspaceBuilding", "Test in Workspace (building sandbox image…)") : m("devportal.testInWorkspace", "Test in Workspace"), dt = G.pricingType === "PAID", pt = Ie?.developerOrganization, mt = pt?.platformFeeRate ?? .3, Y = !!pt?.billingAccountId, ht = G.pricingDetails ?? {}, X = G.pricingType === "FREE" || G.pricingType === "PAID" && typeof ht.price == "number" && ht.price > 0, Z = !!G.description?.trim() && !!G.category && !!G.iconUrl && (G.visibility === "PUBLIC" || G.visibility === "UNLISTED") && (!K && !q || Ze > 0) && (!dt || Y) && X, Q = Z && G.status !== "PUBLISHED" && G.status !== "SUBMITTED" && G.status !== "INACTIVE" && G.status !== "REVOKED", $ = [
|
|
339
340
|
...K ? [] : [{
|
|
340
341
|
label: m("devportal.rotateSecret", "Rotate Secret"),
|
|
341
|
-
icon: /* @__PURE__ */ H(
|
|
342
|
+
icon: /* @__PURE__ */ H(Ne, { size: 16 }),
|
|
342
343
|
disabled: !G.appId,
|
|
343
344
|
onSelect: () => ne(!0)
|
|
344
345
|
}],
|
|
345
|
-
...!K ||
|
|
346
|
+
...!K || et ? z ? [{
|
|
346
347
|
label: m("devportal.uninstallFromWorkspace", "Uninstall from Workspace"),
|
|
347
|
-
icon: /* @__PURE__ */ H(
|
|
348
|
+
icon: /* @__PURE__ */ H(Ve, { size: 16 }),
|
|
348
349
|
disabled: Ae || !c,
|
|
349
|
-
onSelect: () => void Je(
|
|
350
|
+
onSelect: () => void Je(z.id)
|
|
350
351
|
}] : [{
|
|
351
352
|
label: ut,
|
|
352
|
-
icon: /* @__PURE__ */ H(
|
|
353
|
+
icon: /* @__PURE__ */ H(we, { size: 16 }),
|
|
353
354
|
disabled: Oe || !c || lt,
|
|
354
355
|
onSelect: () => {
|
|
355
|
-
if (
|
|
356
|
-
ze(
|
|
356
|
+
if (J.length <= 1) {
|
|
357
|
+
ze(tt?.version);
|
|
357
358
|
return;
|
|
358
359
|
}
|
|
359
|
-
qe(
|
|
360
|
+
qe(tt?.version ?? ""), We(!0);
|
|
360
361
|
}
|
|
361
362
|
}] : [],
|
|
362
363
|
{
|
|
363
364
|
label: m("devportal.deactivate", "Deactivate"),
|
|
364
|
-
icon: /* @__PURE__ */ H(
|
|
365
|
+
icon: /* @__PURE__ */ H(Me, { size: 16 }),
|
|
365
366
|
intent: "destructive",
|
|
366
367
|
disabled: !y,
|
|
367
368
|
onSelect: () => ie(!0)
|
|
@@ -377,33 +378,33 @@ var Ye = [
|
|
|
377
378
|
className: "flex items-center gap-2",
|
|
378
379
|
children: [G.status === "SUBMITTED" ? /* @__PURE__ */ U("div", {
|
|
379
380
|
className: "flex items-center gap-1.5 rounded-full border border-status-warning-bg bg-status-warning-bg-subtle px-3 py-1.5 text-xs font-medium text-status-warning-text",
|
|
380
|
-
children: [/* @__PURE__ */ H(
|
|
381
|
+
children: [/* @__PURE__ */ H(xe, { size: 13 }), m("devportal.underReview", "Under Review")]
|
|
381
382
|
}) : G.status !== "PUBLISHED" && G.status !== "INACTIVE" && G.status !== "REVOKED" ? /* @__PURE__ */ H("button", {
|
|
382
383
|
type: "button",
|
|
383
|
-
onClick: () => void
|
|
384
|
-
disabled:
|
|
385
|
-
title:
|
|
384
|
+
onClick: () => void Ye(),
|
|
385
|
+
disabled: !Q || Te,
|
|
386
|
+
title: Z ? void 0 : [
|
|
386
387
|
!G.description?.trim() && "Add full description",
|
|
387
388
|
!G.category && "Select a category",
|
|
388
389
|
!G.iconUrl && "Upload an app icon",
|
|
389
390
|
(G.visibility === "PRIVATE" || G.visibility === "INTERNAL") && "Set visibility to Public (marketplace) or Unlisted (link sharing) — Private and Internal cannot be submitted for review",
|
|
390
|
-
K &&
|
|
391
|
-
!
|
|
392
|
-
|
|
391
|
+
K && Ze === 0 && "Upload at least one version",
|
|
392
|
+
!X && "Set pricing (choose Free or Paid in the Pricing tab)",
|
|
393
|
+
dt && !Y && "Link a billing account to receive payments"
|
|
393
394
|
].filter(Boolean).join(" · "),
|
|
394
|
-
className: t("inline-flex items-center gap-2 rounded-md px-5 py-2 text-sm font-medium whitespace-nowrap transition-colors",
|
|
395
|
+
className: t("inline-flex items-center gap-2 rounded-md px-5 py-2 text-sm font-medium whitespace-nowrap transition-colors", Q && !Te ? "bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg/90 cursor-pointer" : "cursor-not-allowed bg-bg-muted text-text-tertiary ring-1 ring-border-subtle"),
|
|
395
396
|
children: Te ? /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H(L, {
|
|
396
397
|
size: 15,
|
|
397
398
|
className: "animate-spin"
|
|
398
|
-
}), m("devportal.submitting", "Submitting…")] }) : /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H(
|
|
399
|
-
}) : null, /* @__PURE__ */ H(
|
|
399
|
+
}), m("devportal.submitting", "Submitting…")] }) : /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H(Pe, { size: 15 }), m("devportal.submitForReview", "Submit for Review")] })
|
|
400
|
+
}) : null, /* @__PURE__ */ H(Ue, {
|
|
400
401
|
primary: {
|
|
401
402
|
label: m("devportal.editApp", "Edit App"),
|
|
402
|
-
icon: /* @__PURE__ */ H(
|
|
403
|
+
icon: /* @__PURE__ */ H(Ce, { size: 16 }),
|
|
403
404
|
disabled: !g,
|
|
404
405
|
onSelect: () => B(`/apps/${G.id}/edit`)
|
|
405
406
|
},
|
|
406
|
-
actions:
|
|
407
|
+
actions: $
|
|
407
408
|
})]
|
|
408
409
|
}),
|
|
409
410
|
children: [
|
|
@@ -411,7 +412,7 @@ var Ye = [
|
|
|
411
412
|
title: m("devportal.newAppSecretGenerated", "New App Secret Generated"),
|
|
412
413
|
secret: se,
|
|
413
414
|
description: m("devportal.appSecretRotatedDescription", "Your app secret has been rotated. The old secret is no longer valid."),
|
|
414
|
-
onDismiss: () =>
|
|
415
|
+
onDismiss: () => ce(null)
|
|
415
416
|
}),
|
|
416
417
|
/* @__PURE__ */ U("div", {
|
|
417
418
|
className: "flex flex-wrap items-center gap-2",
|
|
@@ -437,7 +438,7 @@ var Ye = [
|
|
|
437
438
|
}),
|
|
438
439
|
G.status === "SUBMITTED" && /* @__PURE__ */ U("div", {
|
|
439
440
|
className: "flex items-start gap-3 rounded-lg border border-border-subtle bg-status-warning-bg-subtle p-4",
|
|
440
|
-
children: [/* @__PURE__ */ H(
|
|
441
|
+
children: [/* @__PURE__ */ H(xe, {
|
|
441
442
|
size: 18,
|
|
442
443
|
className: "text-status-warning-text mt-0.5 flex-shrink-0"
|
|
443
444
|
}), /* @__PURE__ */ U("div", {
|
|
@@ -460,7 +461,7 @@ var Ye = [
|
|
|
460
461
|
}),
|
|
461
462
|
G.status === "REJECTED" && /* @__PURE__ */ U("div", {
|
|
462
463
|
className: "flex items-start gap-3 rounded-lg border border-status-error-bg bg-status-error-bg-subtle p-4",
|
|
463
|
-
children: [/* @__PURE__ */ H(
|
|
464
|
+
children: [/* @__PURE__ */ H(Ve, {
|
|
464
465
|
size: 18,
|
|
465
466
|
className: "text-status-error-text mt-0.5 flex-shrink-0"
|
|
466
467
|
}), /* @__PURE__ */ U("div", {
|
|
@@ -485,7 +486,7 @@ var Ye = [
|
|
|
485
486
|
}),
|
|
486
487
|
G.status === "PUBLISHED" && /* @__PURE__ */ U("div", {
|
|
487
488
|
className: "flex items-start gap-3 rounded-lg border border-status-success-bg bg-status-success-bg-subtle p-4",
|
|
488
|
-
children: [/* @__PURE__ */ H(
|
|
489
|
+
children: [/* @__PURE__ */ H(ye, {
|
|
489
490
|
size: 18,
|
|
490
491
|
className: "text-status-success-text mt-0.5 flex-shrink-0"
|
|
491
492
|
}), /* @__PURE__ */ U("div", {
|
|
@@ -501,7 +502,7 @@ var Ye = [
|
|
|
501
502
|
}),
|
|
502
503
|
G.status === "UNLISTED" && /* @__PURE__ */ U("div", {
|
|
503
504
|
className: "flex items-start gap-3 rounded-lg border border-status-warning-bg bg-status-warning-bg-subtle p-4",
|
|
504
|
-
children: [/* @__PURE__ */ H(
|
|
505
|
+
children: [/* @__PURE__ */ H(ge, {
|
|
505
506
|
size: 18,
|
|
506
507
|
className: "text-status-warning-text mt-0.5 flex-shrink-0"
|
|
507
508
|
}), /* @__PURE__ */ U("div", {
|
|
@@ -526,8 +527,8 @@ var Ye = [
|
|
|
526
527
|
]
|
|
527
528
|
})]
|
|
528
529
|
}),
|
|
529
|
-
(G.status === "DRAFT" || G.status === "REJECTED") && !
|
|
530
|
-
let e = !!G.description?.trim() && !!G.category && !!G.iconUrl && (G.visibility === "PUBLIC" || G.visibility === "UNLISTED"), n = !K && !q ||
|
|
530
|
+
(G.status === "DRAFT" || G.status === "REJECTED") && !Z && (() => {
|
|
531
|
+
let e = !!G.description?.trim() && !!G.category && !!G.iconUrl && (G.visibility === "PUBLIC" || G.visibility === "UNLISTED"), n = !K && !q || Ze > 0, r = [
|
|
531
532
|
!G.description?.trim() && "Add a full description",
|
|
532
533
|
!G.category && "Select a category",
|
|
533
534
|
!G.iconUrl && "Upload an app icon",
|
|
@@ -563,21 +564,21 @@ var Ye = [
|
|
|
563
564
|
{
|
|
564
565
|
id: "pricing",
|
|
565
566
|
label: m("devportal.setupPricingStep", "Set Pricing"),
|
|
566
|
-
hint:
|
|
567
|
-
done:
|
|
567
|
+
hint: X ? m("devportal.done", "Done") : m("devportal.pricingHint", "Choose Free or set a credit price in the Pricing tab"),
|
|
568
|
+
done: X,
|
|
568
569
|
onClick: () => D("pricing")
|
|
569
570
|
},
|
|
570
|
-
...
|
|
571
|
+
...dt ? [{
|
|
571
572
|
id: "billing",
|
|
572
573
|
label: m("devportal.setupBillingStep", "Link Billing Account"),
|
|
573
|
-
hint:
|
|
574
|
-
done:
|
|
574
|
+
hint: Y ? m("devportal.done", "Done") : m("devportal.billingAccountHint", "Link a billing account to receive payouts — required for paid apps"),
|
|
575
|
+
done: Y,
|
|
575
576
|
onClick: () => D("pricing")
|
|
576
577
|
}] : [],
|
|
577
578
|
{
|
|
578
579
|
id: "submit",
|
|
579
580
|
label: m("devportal.submitForReview", "Submit for Review"),
|
|
580
|
-
hint:
|
|
581
|
+
hint: Z ? m("devportal.readyToSubmit", "Ready — click Submit for Review above") : G.description?.trim() ? G.category ? G.iconUrl ? G.visibility === "PRIVATE" || G.visibility === "INTERNAL" ? m("devportal.hintPrivateVisibility", "Set visibility to Public (marketplace) or Unlisted (share via link) — Private and Internal cannot be submitted") : (K || q) && Ze === 0 ? m("devportal.hintMissingVersion", "Upload at least one version") : X ? dt && !Y ? m("devportal.hintMissingBilling", "Link a billing account in the Pricing tab to receive payouts") : m("devportal.completeStepsFirst", "Complete the steps above first") : m("devportal.hintMissingPricing", "Choose Free or set a credit price in the Pricing tab") : m("devportal.hintMissingIcon", "Upload an app icon on the Store Listing tab") : m("devportal.hintMissingCategory", "Select a category on the Store Listing tab") : m("devportal.hintMissingDescription", "Add a full description on the Store Listing tab"),
|
|
581
582
|
done: !1,
|
|
582
583
|
onClick: void 0
|
|
583
584
|
}
|
|
@@ -590,7 +591,7 @@ var Ye = [
|
|
|
590
591
|
className: "flex items-center gap-3",
|
|
591
592
|
children: [/* @__PURE__ */ H("div", {
|
|
592
593
|
className: "flex h-8 w-8 items-center justify-center rounded-full bg-action-primary-bg/10",
|
|
593
|
-
children: /* @__PURE__ */ H(
|
|
594
|
+
children: /* @__PURE__ */ H(Fe, {
|
|
594
595
|
size: 16,
|
|
595
596
|
className: "text-primary"
|
|
596
597
|
})
|
|
@@ -619,7 +620,7 @@ var Ye = [
|
|
|
619
620
|
children: [
|
|
620
621
|
/* @__PURE__ */ H("div", {
|
|
621
622
|
className: t("flex h-7 w-7 flex-shrink-0 items-center justify-center rounded-full text-xs font-bold", e.done ? "bg-status-success-bg text-status-success-text" : "border-2 border-border-subtle bg-bg-sunken text-text-secondary"),
|
|
622
|
-
children: e.done ? /* @__PURE__ */ H(
|
|
623
|
+
children: e.done ? /* @__PURE__ */ H(P, { size: 13 }) : n + 1
|
|
623
624
|
}),
|
|
624
625
|
/* @__PURE__ */ U("div", {
|
|
625
626
|
className: "flex-1 min-w-0",
|
|
@@ -631,7 +632,7 @@ var Ye = [
|
|
|
631
632
|
children: e.hint
|
|
632
633
|
})]
|
|
633
634
|
}),
|
|
634
|
-
e.onClick && !e.done && /* @__PURE__ */ H(
|
|
635
|
+
e.onClick && !e.done && /* @__PURE__ */ H(be, {
|
|
635
636
|
size: 16,
|
|
636
637
|
className: "flex-shrink-0 text-text-secondary"
|
|
637
638
|
})
|
|
@@ -646,7 +647,7 @@ var Ye = [
|
|
|
646
647
|
className: "-mb-px flex gap-4 overflow-x-auto",
|
|
647
648
|
role: "tablist",
|
|
648
649
|
"aria-label": m("devportal.applicationSections", "Application sections"),
|
|
649
|
-
children:
|
|
650
|
+
children: Xe.filter((e) => !(K && (e.id === "permissions" || e.id === "webhooks" || e.id === "delegations" || e.id === "playground" || e.id === "oauth" || e.id === "api-keys") || !K && !q && e.id === "versions" || !q && (e.id === "oauth" || e.id === "api-keys"))).map((e) => {
|
|
650
651
|
let n = e.icon;
|
|
651
652
|
return /* @__PURE__ */ U("button", {
|
|
652
653
|
id: `application-tab-${e.id}`,
|
|
@@ -667,57 +668,57 @@ var Ye = [
|
|
|
667
668
|
"aria-labelledby": `application-tab-${S}`,
|
|
668
669
|
tabIndex: 0,
|
|
669
670
|
children: [
|
|
670
|
-
S === "overview" && /* @__PURE__ */ H(
|
|
671
|
+
S === "overview" && /* @__PURE__ */ H(st, {
|
|
671
672
|
app: G,
|
|
672
673
|
appId: b,
|
|
673
674
|
refetch: () => void me()
|
|
674
675
|
}),
|
|
675
|
-
S === "permissions" && /* @__PURE__ */ H(
|
|
676
|
+
S === "permissions" && /* @__PURE__ */ H(St, {
|
|
676
677
|
app: G,
|
|
677
|
-
versionScopes:
|
|
678
|
+
versionScopes: A?.application?.versions?.edges?.[0]?.node?.requiredScopes ?? [],
|
|
678
679
|
locked: G.status === "PUBLISHED" || G.status === "APPROVED" || G.status === "ACTIVE",
|
|
679
680
|
onNavigateToVersions: () => D("versions")
|
|
680
681
|
}),
|
|
681
|
-
S === "webhooks" && /* @__PURE__ */ H(
|
|
682
|
+
S === "webhooks" && /* @__PURE__ */ H(it, {
|
|
682
683
|
appId: G.id,
|
|
683
684
|
onNavigate: B
|
|
684
685
|
}),
|
|
685
|
-
S === "delegations" && /* @__PURE__ */ H(
|
|
686
|
+
S === "delegations" && /* @__PURE__ */ H(at, {
|
|
686
687
|
authAppId: G.appId || void 0,
|
|
687
688
|
appName: G.name,
|
|
688
689
|
onGrantDelegation: () => fe(!0),
|
|
689
690
|
onNavigate: B
|
|
690
691
|
}),
|
|
691
|
-
S === "analytics" && /* @__PURE__ */ H(
|
|
692
|
-
S === "playground" && /* @__PURE__ */ H(
|
|
693
|
-
S === "oauth" && /* @__PURE__ */ H(
|
|
692
|
+
S === "analytics" && /* @__PURE__ */ H(ot, { appId: G.id }),
|
|
693
|
+
S === "playground" && /* @__PURE__ */ H(ft, { app: G }),
|
|
694
|
+
S === "oauth" && /* @__PURE__ */ H(Qe, {
|
|
694
695
|
appId: G.id,
|
|
695
696
|
onNavigate: B
|
|
696
697
|
}),
|
|
697
|
-
S === "api-keys" && /* @__PURE__ */ H(
|
|
698
|
+
S === "api-keys" && /* @__PURE__ */ H($e, {
|
|
698
699
|
appId: G.id,
|
|
699
700
|
onNavigate: B
|
|
700
701
|
}),
|
|
701
|
-
S === "store-listing" && /* @__PURE__ */ H(
|
|
702
|
+
S === "store-listing" && /* @__PURE__ */ H(gt, {
|
|
702
703
|
app: G,
|
|
703
|
-
versionCount:
|
|
704
|
+
versionCount: A?.application?.versions?.totalCount ?? 0,
|
|
704
705
|
isPackageApp: K,
|
|
705
|
-
pricingDone:
|
|
706
|
+
pricingDone: X,
|
|
706
707
|
onNavigateToVersions: K || q ? () => D("versions") : void 0,
|
|
707
708
|
onNavigateToPricing: () => D("pricing"),
|
|
708
709
|
onNavigateToSubmission: () => B(`/apps/${G.id}/store-submission`)
|
|
709
710
|
}),
|
|
710
|
-
S === "pricing" && /* @__PURE__ */ H(
|
|
711
|
+
S === "pricing" && /* @__PURE__ */ H(nt, {
|
|
711
712
|
app: G,
|
|
712
|
-
platformFeeRate:
|
|
713
|
-
billingAccountLinked:
|
|
713
|
+
platformFeeRate: mt,
|
|
714
|
+
billingAccountLinked: Y,
|
|
714
715
|
onNavigateToRevenue: () => B("/revenue"),
|
|
715
|
-
isReadyToSubmit:
|
|
716
|
+
isReadyToSubmit: Z
|
|
716
717
|
}),
|
|
717
|
-
S === "versions" && /* @__PURE__ */ H(
|
|
718
|
+
S === "versions" && /* @__PURE__ */ H(rt, {
|
|
718
719
|
appId: G.id,
|
|
719
720
|
onNavigate: B,
|
|
720
|
-
pricingDone:
|
|
721
|
+
pricingDone: X,
|
|
721
722
|
onNavigateToPricing: () => D("pricing")
|
|
722
723
|
})
|
|
723
724
|
]
|
|
@@ -731,7 +732,7 @@ var Ye = [
|
|
|
731
732
|
confirmLabel: m("devportal.rotateSecret", "Rotate Secret"),
|
|
732
733
|
cancelLabel: m("devportal.cancel", "Cancel"),
|
|
733
734
|
variant: "warning",
|
|
734
|
-
loading:
|
|
735
|
+
loading: ve
|
|
735
736
|
}),
|
|
736
737
|
/* @__PURE__ */ H(ae, {
|
|
737
738
|
open: k,
|
|
@@ -742,12 +743,12 @@ var Ye = [
|
|
|
742
743
|
confirmLabel: m("devportal.deactivate", "Deactivate"),
|
|
743
744
|
cancelLabel: m("devportal.cancel", "Cancel"),
|
|
744
745
|
variant: "destructive",
|
|
745
|
-
loading:
|
|
746
|
+
loading: Se
|
|
746
747
|
}),
|
|
747
748
|
/* @__PURE__ */ H(ae, {
|
|
748
|
-
open:
|
|
749
|
+
open: Be,
|
|
749
750
|
onOpenChange: We,
|
|
750
|
-
onConfirm: () => ze(
|
|
751
|
+
onConfirm: () => ze(Ge || void 0),
|
|
751
752
|
title: m("devportal.testInWorkspaceChooseVersion", "Test a Version"),
|
|
752
753
|
description: m("devportal.testInWorkspaceChooseVersionDescription", "Choose which version to install into your test workspace. This does not affect what other users see — it only installs the selected version for you to try here."),
|
|
753
754
|
confirmLabel: m("devportal.testInWorkspace", "Test in Workspace"),
|
|
@@ -755,9 +756,9 @@ var Ye = [
|
|
|
755
756
|
loading: Oe,
|
|
756
757
|
children: /* @__PURE__ */ H(re, {
|
|
757
758
|
label: m("devportal.version", "Version"),
|
|
758
|
-
value:
|
|
759
|
+
value: Ge,
|
|
759
760
|
onChange: (e) => qe(e.target.value),
|
|
760
|
-
options:
|
|
761
|
+
options: J.map((e) => ({
|
|
761
762
|
value: e.node.version,
|
|
762
763
|
label: e.node.isLatest ? `${e.node.version} — ${m("devportal.latest", "latest")} (${e.node.status})` : `${e.node.version} (${e.node.status})`
|
|
763
764
|
}))
|
|
@@ -775,7 +776,7 @@ var Ye = [
|
|
|
775
776
|
})
|
|
776
777
|
]
|
|
777
778
|
});
|
|
778
|
-
},
|
|
779
|
+
}, Qe = ({ onNavigate: e }) => {
|
|
779
780
|
let { t } = W(), n = (e, n) => {
|
|
780
781
|
let r = t(e);
|
|
781
782
|
return r === e ? n : r;
|
|
@@ -799,7 +800,7 @@ var Ye = [
|
|
|
799
800
|
})
|
|
800
801
|
]
|
|
801
802
|
});
|
|
802
|
-
},
|
|
803
|
+
}, $e = ({ onNavigate: e }) => {
|
|
803
804
|
let { t } = W(), n = (e, n) => {
|
|
804
805
|
let r = t(e);
|
|
805
806
|
return r === e ? n : r;
|
|
@@ -807,7 +808,7 @@ var Ye = [
|
|
|
807
808
|
return /* @__PURE__ */ U("div", {
|
|
808
809
|
className: "space-y-4 py-4 text-center",
|
|
809
810
|
children: [
|
|
810
|
-
/* @__PURE__ */ H(
|
|
811
|
+
/* @__PURE__ */ H(De, { className: "mx-auto h-10 w-10 text-text-secondary" }),
|
|
811
812
|
/* @__PURE__ */ H("h3", {
|
|
812
813
|
className: "font-medium",
|
|
813
814
|
children: n("devportal.apiKeys", "API Keys")
|
|
@@ -823,15 +824,15 @@ var Ye = [
|
|
|
823
824
|
})
|
|
824
825
|
]
|
|
825
826
|
});
|
|
826
|
-
},
|
|
827
|
+
}, et = .01, J = (e) => e * et, tt = (e) => Math.round(e / et), nt = ({ app: e, platformFeeRate: n, billingAccountLinked: r, onNavigateToRevenue: i, isReadyToSubmit: a = !1 }) => {
|
|
827
828
|
let { t: o } = W(), s = (e, t) => {
|
|
828
829
|
let n = o(e);
|
|
829
830
|
return n === e ? t : n;
|
|
830
831
|
}, c = e.pricingDetails ?? {}, [l, u] = N({
|
|
831
832
|
pricingType: e.pricingType ?? "FREE",
|
|
832
833
|
price: typeof c.price == "number" ? String(c.price) : ""
|
|
833
|
-
}), [d, f] = N(!1), [p] = b(), m =
|
|
834
|
-
m.current = e,
|
|
834
|
+
}), [d, f] = N(!1), [p] = b(), m = me(e);
|
|
835
|
+
m.current = e, pe(() => {
|
|
835
836
|
let e = m.current.pricingDetails ?? {};
|
|
836
837
|
u({
|
|
837
838
|
pricingType: m.current.pricingType ?? "FREE",
|
|
@@ -863,7 +864,7 @@ var Ye = [
|
|
|
863
864
|
} finally {
|
|
864
865
|
f(!1);
|
|
865
866
|
}
|
|
866
|
-
}, _ = l.pricingType !== "FREE", v = parseInt(l.price, 10), y = _ && !isNaN(v) && v > 0, x = y ?
|
|
867
|
+
}, _ = l.pricingType !== "FREE", v = parseInt(l.price, 10), y = _ && !isNaN(v) && v > 0, x = y ? J(v) : 0, S = y ? Math.round(v * n) : 0, C = J(S), w = y ? v - S : 0, T = J(w), E = (e) => "$" + e.toLocaleString("en-US", {
|
|
867
868
|
minimumFractionDigits: 2,
|
|
868
869
|
maximumFractionDigits: 2
|
|
869
870
|
}), D = (e) => e.toLocaleString("en-US") + " cr";
|
|
@@ -872,7 +873,7 @@ var Ye = [
|
|
|
872
873
|
children: [
|
|
873
874
|
/* @__PURE__ */ U("div", {
|
|
874
875
|
className: "flex items-start gap-3 rounded-lg border border-border-subtle bg-bg-sunken px-4 py-3",
|
|
875
|
-
children: [/* @__PURE__ */ H(
|
|
876
|
+
children: [/* @__PURE__ */ H(F, {
|
|
876
877
|
size: 16,
|
|
877
878
|
className: "mt-0.5 shrink-0 text-primary"
|
|
878
879
|
}), /* @__PURE__ */ U("p", {
|
|
@@ -889,7 +890,7 @@ var Ye = [
|
|
|
889
890
|
className: "font-medium",
|
|
890
891
|
children: [
|
|
891
892
|
"1 credit = ",
|
|
892
|
-
E(
|
|
893
|
+
E(et),
|
|
893
894
|
" USD."
|
|
894
895
|
]
|
|
895
896
|
}),
|
|
@@ -913,7 +914,7 @@ var Ye = [
|
|
|
913
914
|
className: "rounded-xl border border-border-subtle bg-bg-surface p-5 space-y-3",
|
|
914
915
|
children: [/* @__PURE__ */ H("div", {
|
|
915
916
|
className: "flex h-9 w-9 items-center justify-center rounded-lg bg-status-success-bg-subtle",
|
|
916
|
-
children: /* @__PURE__ */ H(
|
|
917
|
+
children: /* @__PURE__ */ H(Ie, {
|
|
917
918
|
size: 18,
|
|
918
919
|
className: "text-status-success-text"
|
|
919
920
|
})
|
|
@@ -945,7 +946,7 @@ var Ye = [
|
|
|
945
946
|
className: "rounded-xl border border-border-subtle bg-bg-surface p-5 space-y-3",
|
|
946
947
|
children: [/* @__PURE__ */ H("div", {
|
|
947
948
|
className: "flex h-9 w-9 items-center justify-center rounded-lg bg-action-primary-bg/10",
|
|
948
|
-
children: /* @__PURE__ */ H(
|
|
949
|
+
children: /* @__PURE__ */ H(Re, {
|
|
949
950
|
size: 18,
|
|
950
951
|
className: "text-primary"
|
|
951
952
|
})
|
|
@@ -974,7 +975,7 @@ var Ye = [
|
|
|
974
975
|
className: "rounded-xl border border-border-subtle bg-bg-surface p-5 space-y-3",
|
|
975
976
|
children: [/* @__PURE__ */ H("div", {
|
|
976
977
|
className: "flex h-9 w-9 items-center justify-center rounded-lg bg-status-warning-bg-subtle",
|
|
977
|
-
children: /* @__PURE__ */ H(
|
|
978
|
+
children: /* @__PURE__ */ H(Te, {
|
|
978
979
|
size: 18,
|
|
979
980
|
className: "text-status-warning-text"
|
|
980
981
|
})
|
|
@@ -1008,7 +1009,7 @@ var Ye = [
|
|
|
1008
1009
|
})] }),
|
|
1009
1010
|
/* @__PURE__ */ H("div", {
|
|
1010
1011
|
className: "flex flex-wrap gap-2",
|
|
1011
|
-
children:
|
|
1012
|
+
children: mt.map((e) => /* @__PURE__ */ H("button", {
|
|
1012
1013
|
type: "button",
|
|
1013
1014
|
onClick: () => h("pricingType", e.value),
|
|
1014
1015
|
className: t("rounded-md border px-4 py-2 text-sm font-medium transition-colors", l.pricingType === e.value ? "bg-action-primary-bg text-action-primary-text border-primary" : "hover:bg-bg-sunken border-border-subtle"),
|
|
@@ -1054,7 +1055,7 @@ var Ye = [
|
|
|
1054
1055
|
E(x),
|
|
1055
1056
|
" USD at the current credit rate (1 cr =",
|
|
1056
1057
|
" ",
|
|
1057
|
-
E(
|
|
1058
|
+
E(et),
|
|
1058
1059
|
")"
|
|
1059
1060
|
]
|
|
1060
1061
|
}),
|
|
@@ -1073,13 +1074,13 @@ var Ye = [
|
|
|
1073
1074
|
50
|
|
1074
1075
|
].map((e) => /* @__PURE__ */ U("button", {
|
|
1075
1076
|
type: "button",
|
|
1076
|
-
onClick: () => h("price", String(
|
|
1077
|
+
onClick: () => h("price", String(tt(e))),
|
|
1077
1078
|
className: "rounded border border-border-subtle px-2 py-0.5 hover:bg-bg-sunken transition-colors",
|
|
1078
1079
|
children: [
|
|
1079
1080
|
"$",
|
|
1080
1081
|
e,
|
|
1081
1082
|
" = ",
|
|
1082
|
-
|
|
1083
|
+
tt(e).toLocaleString(),
|
|
1083
1084
|
" cr"
|
|
1084
1085
|
]
|
|
1085
1086
|
}, e))]
|
|
@@ -1169,7 +1170,7 @@ var Ye = [
|
|
|
1169
1170
|
}),
|
|
1170
1171
|
!r && /* @__PURE__ */ U("div", {
|
|
1171
1172
|
className: "flex items-start gap-3 rounded-lg border border-status-warning-bg bg-status-warning-bg-subtle p-4",
|
|
1172
|
-
children: [/* @__PURE__ */ H(
|
|
1173
|
+
children: [/* @__PURE__ */ H(ge, {
|
|
1173
1174
|
size: 16,
|
|
1174
1175
|
className: "mt-0.5 shrink-0 text-status-warning-text"
|
|
1175
1176
|
}), /* @__PURE__ */ U("div", {
|
|
@@ -1206,14 +1207,14 @@ var Ye = [
|
|
|
1206
1207
|
children: [
|
|
1207
1208
|
/* @__PURE__ */ U("li", {
|
|
1208
1209
|
className: "flex items-start gap-2",
|
|
1209
|
-
children: [/* @__PURE__ */ H(
|
|
1210
|
+
children: [/* @__PURE__ */ H(P, {
|
|
1210
1211
|
size: 14,
|
|
1211
1212
|
className: "mt-0.5 shrink-0 text-status-success-text"
|
|
1212
1213
|
}), /* @__PURE__ */ U("span", { children: [
|
|
1213
1214
|
"By publishing to the marketplace you agree to the",
|
|
1214
1215
|
" ",
|
|
1215
1216
|
/* @__PURE__ */ H("a", {
|
|
1216
|
-
href:
|
|
1217
|
+
href: ce.developerAgreement,
|
|
1217
1218
|
target: "_blank",
|
|
1218
1219
|
rel: "noopener noreferrer",
|
|
1219
1220
|
className: "text-primary underline-offset-2 hover:underline",
|
|
@@ -1224,21 +1225,21 @@ var Ye = [
|
|
|
1224
1225
|
}),
|
|
1225
1226
|
/* @__PURE__ */ U("li", {
|
|
1226
1227
|
className: "flex items-start gap-2",
|
|
1227
|
-
children: [/* @__PURE__ */ H(
|
|
1228
|
+
children: [/* @__PURE__ */ H(P, {
|
|
1228
1229
|
size: 14,
|
|
1229
1230
|
className: "mt-0.5 shrink-0 text-status-success-text"
|
|
1230
1231
|
}), /* @__PURE__ */ H("span", { children: "All prices are in platform credits. The USD equivalent is indicative only and may vary with the current credit rate." })]
|
|
1231
1232
|
}),
|
|
1232
1233
|
/* @__PURE__ */ U("li", {
|
|
1233
1234
|
className: "flex items-start gap-2",
|
|
1234
|
-
children: [/* @__PURE__ */ H(
|
|
1235
|
+
children: [/* @__PURE__ */ H(P, {
|
|
1235
1236
|
size: 14,
|
|
1236
1237
|
className: "mt-0.5 shrink-0 text-status-success-text"
|
|
1237
1238
|
}), /* @__PURE__ */ H("span", { children: "Earnings are credited to your billing account per-sale. Cash withdrawals are subject to a minimum threshold and applicable taxes in your jurisdiction." })]
|
|
1238
1239
|
}),
|
|
1239
1240
|
/* @__PURE__ */ U("li", {
|
|
1240
1241
|
className: "flex items-start gap-2",
|
|
1241
|
-
children: [/* @__PURE__ */ H(
|
|
1242
|
+
children: [/* @__PURE__ */ H(P, {
|
|
1242
1243
|
size: 14,
|
|
1243
1244
|
className: "mt-0.5 shrink-0 text-status-success-text"
|
|
1244
1245
|
}), /* @__PURE__ */ U("span", { children: [
|
|
@@ -1268,10 +1269,10 @@ var Ye = [
|
|
|
1268
1269
|
children: d ? /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H(L, {
|
|
1269
1270
|
size: 16,
|
|
1270
1271
|
className: "animate-spin"
|
|
1271
|
-
}), s("devportal.saving", "Saving…")] }) : /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H(
|
|
1272
|
+
}), s("devportal.saving", "Saving…")] }) : /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H(F, { size: 16 }), s("devportal.savePricing", "Save Pricing")] })
|
|
1272
1273
|
}), a && /* @__PURE__ */ U("div", {
|
|
1273
1274
|
className: "flex items-start gap-3 rounded-lg border border-status-success-bg bg-status-success-bg-subtle px-4 py-3",
|
|
1274
|
-
children: [/* @__PURE__ */ H(
|
|
1275
|
+
children: [/* @__PURE__ */ H(P, {
|
|
1275
1276
|
size: 16,
|
|
1276
1277
|
className: "mt-0.5 shrink-0 text-status-success-text"
|
|
1277
1278
|
}), /* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("p", {
|
|
@@ -1285,7 +1286,7 @@ var Ye = [
|
|
|
1285
1286
|
})
|
|
1286
1287
|
]
|
|
1287
1288
|
});
|
|
1288
|
-
},
|
|
1289
|
+
}, rt = ({ appId: e, onNavigate: n, pricingDone: i = !1, onNavigateToPricing: a }) => {
|
|
1289
1290
|
let { t: o } = W(), s = (e, t) => {
|
|
1290
1291
|
let n = o(e);
|
|
1291
1292
|
return n === e ? t : n;
|
|
@@ -1293,8 +1294,8 @@ var Ye = [
|
|
|
1293
1294
|
variables: { applicationId: e },
|
|
1294
1295
|
fetchPolicy: "cache-and-network"
|
|
1295
1296
|
});
|
|
1296
|
-
if (u) return /* @__PURE__ */ H(
|
|
1297
|
-
if (d) return /* @__PURE__ */ H(
|
|
1297
|
+
if (u) return /* @__PURE__ */ H(K, { message: s("devportal.loadingVersions", "Loading versions…") });
|
|
1298
|
+
if (d) return /* @__PURE__ */ H(q, { message: d.message });
|
|
1298
1299
|
let f = (l?.application?.versions?.edges ?? []).map((e) => e.node);
|
|
1299
1300
|
return /* @__PURE__ */ U("div", {
|
|
1300
1301
|
className: "space-y-4",
|
|
@@ -1311,7 +1312,7 @@ var Ye = [
|
|
|
1311
1312
|
}), /* @__PURE__ */ U("button", {
|
|
1312
1313
|
onClick: () => n(`/apps/${e}/versions`),
|
|
1313
1314
|
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",
|
|
1314
|
-
children: [/* @__PURE__ */ H(
|
|
1315
|
+
children: [/* @__PURE__ */ H(B, { size: 16 }), s("devportal.uploadVersion", "Upload Version")]
|
|
1315
1316
|
})]
|
|
1316
1317
|
}),
|
|
1317
1318
|
f.length > 0 ? /* @__PURE__ */ H("div", {
|
|
@@ -1404,19 +1405,19 @@ var Ye = [
|
|
|
1404
1405
|
})
|
|
1405
1406
|
}) : /* @__PURE__ */ H(r, {
|
|
1406
1407
|
illustration: "empty-generic",
|
|
1407
|
-
icon: /* @__PURE__ */ H(
|
|
1408
|
+
icon: /* @__PURE__ */ H(je, { size: 32 }),
|
|
1408
1409
|
title: s("devportal.noVersions", "No versions yet"),
|
|
1409
1410
|
description: s("devportal.noVersionsDescription", "Upload your first version to make this item available for review and distribution."),
|
|
1410
1411
|
action: /* @__PURE__ */ U("button", {
|
|
1411
1412
|
onClick: () => n(`/apps/${e}/versions`),
|
|
1412
1413
|
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",
|
|
1413
|
-
children: [/* @__PURE__ */ H(
|
|
1414
|
+
children: [/* @__PURE__ */ H(B, { size: 16 }), s("devportal.uploadVersion", "Upload Version")]
|
|
1414
1415
|
})
|
|
1415
1416
|
}),
|
|
1416
1417
|
f.length > 0 && !i && a && /* @__PURE__ */ U("div", {
|
|
1417
1418
|
className: "mt-4 flex items-center gap-3 rounded-lg border border-border-subtle bg-bg-sunken px-4 py-3",
|
|
1418
1419
|
children: [
|
|
1419
|
-
/* @__PURE__ */ H(
|
|
1420
|
+
/* @__PURE__ */ H(F, {
|
|
1420
1421
|
size: 16,
|
|
1421
1422
|
className: "shrink-0 text-primary"
|
|
1422
1423
|
}),
|
|
@@ -1428,41 +1429,41 @@ var Ye = [
|
|
|
1428
1429
|
type: "button",
|
|
1429
1430
|
onClick: a,
|
|
1430
1431
|
className: "inline-flex items-center gap-1 text-sm font-medium text-primary hover:underline underline-offset-2 whitespace-nowrap",
|
|
1431
|
-
children: [s("devportal.nextSetPricing", "Set Pricing"), /* @__PURE__ */ H(
|
|
1432
|
+
children: [s("devportal.nextSetPricing", "Set Pricing"), /* @__PURE__ */ H(be, { size: 15 })]
|
|
1432
1433
|
})
|
|
1433
1434
|
]
|
|
1434
1435
|
})
|
|
1435
1436
|
]
|
|
1436
1437
|
});
|
|
1437
|
-
},
|
|
1438
|
+
}, it = ({ appId: e, onNavigate: t }) => {
|
|
1438
1439
|
let { t: n } = W(), r = (e, t) => {
|
|
1439
1440
|
let r = n(e);
|
|
1440
1441
|
return r === e ? t : r;
|
|
1441
1442
|
}, { data: i, loading: a, error: o } = u({ variables: { applicationId: e } });
|
|
1442
|
-
return a ? /* @__PURE__ */ H(
|
|
1443
|
+
return a ? /* @__PURE__ */ H(K, { message: r("devportal.loadingWebhooks", "Loading webhooks...") }) : o ? /* @__PURE__ */ H(q, { message: o.message }) : /* @__PURE__ */ H(ct, {
|
|
1443
1444
|
appId: e,
|
|
1444
|
-
webhooks: (i?.webhooks ?? []).map(
|
|
1445
|
+
webhooks: (i?.webhooks ?? []).map(qe),
|
|
1445
1446
|
onNavigate: t
|
|
1446
1447
|
});
|
|
1447
|
-
},
|
|
1448
|
+
}, at = ({ authAppId: e, appName: t, onGrantDelegation: n, onNavigate: a }) => {
|
|
1448
1449
|
let { t: o } = W(), s = (e, t) => {
|
|
1449
1450
|
let n = o(e);
|
|
1450
1451
|
return n === e ? t : n;
|
|
1451
|
-
}, { data: c, loading: l, error: u, refetch: d } = i(), [f] = m(), [p, h] = N([]), [g, _] = N(!1), [v, y] = N(/* @__PURE__ */ new Set()), [b, x] = N(null), S = M(() => c?.currentUserDelegations?.delegations ? c.currentUserDelegations.delegations.filter((t) => t.appId === e).map(
|
|
1452
|
+
}, { data: c, loading: l, error: u, refetch: d } = i(), [f] = m(), [p, h] = N([]), [g, _] = N(!1), [v, y] = N(/* @__PURE__ */ new Set()), [b, x] = N(null), S = M(() => c?.currentUserDelegations?.delegations ? c.currentUserDelegations.delegations.filter((t) => t.appId === e).map(Ye) : [], [e, c]), C = M(() => S.filter((e) => e.status === "ACTIVE"), [S]), w = M(() => C.filter((e) => v.has(e.id)), [C, v]), T = C.length > 0 && C.every((e) => v.has(e.id)), E = C.some((e) => v.has(e.id)) && !T, D = j((e, t) => {
|
|
1452
1453
|
y((n) => {
|
|
1453
1454
|
let r = new Set(n);
|
|
1454
1455
|
return t ? r.add(e) : r.delete(e), r;
|
|
1455
1456
|
});
|
|
1456
|
-
}, []), O =
|
|
1457
|
+
}, []), O = j((e) => {
|
|
1457
1458
|
y((t) => {
|
|
1458
1459
|
let n = new Set(t);
|
|
1459
1460
|
return C.forEach((t) => {
|
|
1460
1461
|
e ? n.add(t.id) : n.delete(t.id);
|
|
1461
1462
|
}), n;
|
|
1462
1463
|
});
|
|
1463
|
-
}, [C]), ee =
|
|
1464
|
+
}, [C]), ee = j(() => {
|
|
1464
1465
|
y(/* @__PURE__ */ new Set());
|
|
1465
|
-
}, []), te =
|
|
1466
|
+
}, []), te = j(async (e) => {
|
|
1466
1467
|
_(!0);
|
|
1467
1468
|
try {
|
|
1468
1469
|
let t = await Promise.allSettled(e.map((e) => f({ variables: { id: e } }))), n = t.filter((e) => e.status === "fulfilled").length, r = t.length - n;
|
|
@@ -1474,7 +1475,7 @@ var Ye = [
|
|
|
1474
1475
|
_(!1);
|
|
1475
1476
|
}
|
|
1476
1477
|
}, [f, d]);
|
|
1477
|
-
return e ? l ? /* @__PURE__ */ H(
|
|
1478
|
+
return e ? l ? /* @__PURE__ */ H(K, { message: s("devportal.loadingDelegations", "Loading delegations...") }) : u ? /* @__PURE__ */ H(q, { message: u.message }) : /* @__PURE__ */ U(V, { children: [
|
|
1478
1479
|
b && /* @__PURE__ */ H("div", {
|
|
1479
1480
|
className: "rounded-lg border border-border-subtle bg-status-success-bg-subtle p-3 text-sm text-status-success-text",
|
|
1480
1481
|
children: /* @__PURE__ */ U("div", {
|
|
@@ -1486,7 +1487,7 @@ var Ye = [
|
|
|
1486
1487
|
})]
|
|
1487
1488
|
})
|
|
1488
1489
|
}),
|
|
1489
|
-
/* @__PURE__ */ H(
|
|
1490
|
+
/* @__PURE__ */ H(lt, {
|
|
1490
1491
|
appName: t,
|
|
1491
1492
|
delegations: S,
|
|
1492
1493
|
onGrantDelegation: n,
|
|
@@ -1525,7 +1526,7 @@ var Ye = [
|
|
|
1525
1526
|
children: [/* @__PURE__ */ H(I, { size: 16 }), s("devportal.manageOAuthApps", "Manage OAuth Apps")]
|
|
1526
1527
|
})
|
|
1527
1528
|
});
|
|
1528
|
-
},
|
|
1529
|
+
}, ot = ({ appId: e }) => {
|
|
1529
1530
|
let { t } = W(), n = (e, n) => {
|
|
1530
1531
|
let r = t(e);
|
|
1531
1532
|
return r === e ? n : r;
|
|
@@ -1538,8 +1539,8 @@ var Ye = [
|
|
|
1538
1539
|
}, [r]).toISOString(),
|
|
1539
1540
|
endDate: r.toISOString()
|
|
1540
1541
|
} });
|
|
1541
|
-
return a ? /* @__PURE__ */ H(
|
|
1542
|
-
},
|
|
1542
|
+
return a ? /* @__PURE__ */ H(K, { message: n("devportal.loadingAnalytics", "Loading analytics...") }) : s ? /* @__PURE__ */ H(q, { message: s.message }) : /* @__PURE__ */ H(ut, { analytics: (i?.applicationAnalytics ?? []).map(Je) });
|
|
1543
|
+
}, st = ({ app: e, appId: t, refetch: n }) => {
|
|
1543
1544
|
let { t: r } = W(), i = (e, t) => {
|
|
1544
1545
|
let n = r(e);
|
|
1545
1546
|
return n === e ? t : n;
|
|
@@ -1554,7 +1555,7 @@ var Ye = [
|
|
|
1554
1555
|
className: "flex items-start gap-3",
|
|
1555
1556
|
children: [/* @__PURE__ */ H("div", {
|
|
1556
1557
|
className: "mt-0.5 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-full bg-action-primary-bg-subtle",
|
|
1557
|
-
children: /* @__PURE__ */ H(
|
|
1558
|
+
children: /* @__PURE__ */ H(Oe, {
|
|
1558
1559
|
size: 15,
|
|
1559
1560
|
className: "text-action-primary-text"
|
|
1560
1561
|
})
|
|
@@ -1585,7 +1586,7 @@ var Ye = [
|
|
|
1585
1586
|
u(!0), setTimeout(() => u(!1), 2e3);
|
|
1586
1587
|
});
|
|
1587
1588
|
},
|
|
1588
|
-
children: [H(l ?
|
|
1589
|
+
children: [H(l ? P : Se, { size: 12 }), l ? i("devportal.copied", "Copied!") : i("devportal.copyLink", "Copy Link")]
|
|
1589
1590
|
})]
|
|
1590
1591
|
})
|
|
1591
1592
|
] })]
|
|
@@ -1608,7 +1609,7 @@ var Ye = [
|
|
|
1608
1609
|
children: [/* @__PURE__ */ U("div", {
|
|
1609
1610
|
className: "lg:col-span-2 space-y-6",
|
|
1610
1611
|
children: [
|
|
1611
|
-
/* @__PURE__ */ H(
|
|
1612
|
+
/* @__PURE__ */ H(We, { children: /* @__PURE__ */ U("div", {
|
|
1612
1613
|
className: "grid gap-4 sm:grid-cols-4",
|
|
1613
1614
|
children: [
|
|
1614
1615
|
/* @__PURE__ */ H(Z, {
|
|
@@ -1631,7 +1632,7 @@ var Ye = [
|
|
|
1631
1632
|
}) }),
|
|
1632
1633
|
/* @__PURE__ */ H(S, {
|
|
1633
1634
|
title: i("devportal.description", "Description"),
|
|
1634
|
-
children: e.description ? /* @__PURE__ */ H(
|
|
1635
|
+
children: e.description ? /* @__PURE__ */ H(he, {
|
|
1635
1636
|
className: "prose prose-sm max-w-none",
|
|
1636
1637
|
children: e.description
|
|
1637
1638
|
}) : /* @__PURE__ */ H("p", {
|
|
@@ -1743,7 +1744,7 @@ var Ye = [
|
|
|
1743
1744
|
})]
|
|
1744
1745
|
})]
|
|
1745
1746
|
});
|
|
1746
|
-
},
|
|
1747
|
+
}, ct = ({ appId: e, webhooks: t, onNavigate: n }) => {
|
|
1747
1748
|
let { t: i } = W(), a = (e, t) => {
|
|
1748
1749
|
let n = i(e);
|
|
1749
1750
|
return n === e ? t : n;
|
|
@@ -1788,7 +1789,7 @@ var Ye = [
|
|
|
1788
1789
|
})] }), /* @__PURE__ */ H("button", {
|
|
1789
1790
|
onClick: () => n(`/apps/${e}/webhooks/${t.id}`),
|
|
1790
1791
|
className: "rounded-md p-1 hover:bg-bg-sunken",
|
|
1791
|
-
children: /* @__PURE__ */ H(
|
|
1792
|
+
children: /* @__PURE__ */ H(Ae, { size: 20 })
|
|
1792
1793
|
})]
|
|
1793
1794
|
}),
|
|
1794
1795
|
/* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("p", {
|
|
@@ -1845,7 +1846,7 @@ var Ye = [
|
|
|
1845
1846
|
}, t.id))
|
|
1846
1847
|
}) : /* @__PURE__ */ H(r, {
|
|
1847
1848
|
illustration: "empty-notifications",
|
|
1848
|
-
icon: /* @__PURE__ */ H(
|
|
1849
|
+
icon: /* @__PURE__ */ H(ze, { size: 32 }),
|
|
1849
1850
|
title: a("devportal.noWebhooks", "No webhooks"),
|
|
1850
1851
|
description: a("devportal.noWebhooksDescription", "Add a webhook to receive event notifications"),
|
|
1851
1852
|
action: /* @__PURE__ */ U("button", {
|
|
@@ -1855,7 +1856,7 @@ var Ye = [
|
|
|
1855
1856
|
})
|
|
1856
1857
|
})]
|
|
1857
1858
|
});
|
|
1858
|
-
},
|
|
1859
|
+
}, lt = ({ appName: e, delegations: n, onGrantDelegation: i, onRevokeDelegation: a, selectedDelegationIds: o, onToggleSelectDelegation: s, onToggleAllDelegations: c, onClearSelection: l, onRevokeSelected: u, allVisibleSelected: d, partiallySelected: f }) => {
|
|
1859
1860
|
let { t: p } = W(), m = (e, t) => {
|
|
1860
1861
|
let n = p(e);
|
|
1861
1862
|
return n === e ? t : n;
|
|
@@ -1957,7 +1958,7 @@ var Ye = [
|
|
|
1957
1958
|
className: "font-medium",
|
|
1958
1959
|
children: ["Delegation #", e.id.slice(0, 8)]
|
|
1959
1960
|
}), /* @__PURE__ */ H("span", {
|
|
1960
|
-
className: t("rounded-full px-2 py-0.5 text-xs font-medium",
|
|
1961
|
+
className: t("rounded-full px-2 py-0.5 text-xs font-medium", G[e.status]),
|
|
1961
1962
|
children: e.status
|
|
1962
1963
|
})]
|
|
1963
1964
|
}), /* @__PURE__ */ U("p", {
|
|
@@ -1975,7 +1976,7 @@ var Ye = [
|
|
|
1975
1976
|
}), e.status === "ACTIVE" && /* @__PURE__ */ U("button", {
|
|
1976
1977
|
onClick: () => a(e.id),
|
|
1977
1978
|
className: "inline-flex items-center gap-1.5 rounded-md border border-border-subtle px-3 py-1.5 text-xs font-medium text-status-error-text hover:bg-status-error-bg-subtle transition-colors",
|
|
1978
|
-
children: [/* @__PURE__ */ H(
|
|
1979
|
+
children: [/* @__PURE__ */ H(Ve, { size: 14 }), m("devportal.revoke", "Revoke")]
|
|
1979
1980
|
})]
|
|
1980
1981
|
}),
|
|
1981
1982
|
/* @__PURE__ */ U("div", { children: [/* @__PURE__ */ H("p", {
|
|
@@ -2004,7 +2005,7 @@ var Ye = [
|
|
|
2004
2005
|
e.expiresAt && /* @__PURE__ */ U("span", {
|
|
2005
2006
|
className: "flex items-center gap-1",
|
|
2006
2007
|
children: [
|
|
2007
|
-
/* @__PURE__ */ H(
|
|
2008
|
+
/* @__PURE__ */ H(xe, { size: 12 }),
|
|
2008
2009
|
m("devportal.expires", "Expires"),
|
|
2009
2010
|
" ",
|
|
2010
2011
|
new Date(e.expiresAt).toLocaleDateString()
|
|
@@ -2012,7 +2013,7 @@ var Ye = [
|
|
|
2012
2013
|
}),
|
|
2013
2014
|
!e.expiresAt && e.status === "ACTIVE" && /* @__PURE__ */ U("span", {
|
|
2014
2015
|
className: "flex items-center gap-1",
|
|
2015
|
-
children: [/* @__PURE__ */ H(
|
|
2016
|
+
children: [/* @__PURE__ */ H(ye, {
|
|
2016
2017
|
size: 12,
|
|
2017
2018
|
className: "text-status-success-text"
|
|
2018
2019
|
}), m("devportal.noExpiration", "No expiration")]
|
|
@@ -2020,7 +2021,7 @@ var Ye = [
|
|
|
2020
2021
|
e.revokedAt && /* @__PURE__ */ U("span", {
|
|
2021
2022
|
className: "flex items-center gap-1",
|
|
2022
2023
|
children: [
|
|
2023
|
-
/* @__PURE__ */ H(
|
|
2024
|
+
/* @__PURE__ */ H(Ve, {
|
|
2024
2025
|
size: 12,
|
|
2025
2026
|
className: "text-status-error-text"
|
|
2026
2027
|
}),
|
|
@@ -2035,7 +2036,7 @@ var Ye = [
|
|
|
2035
2036
|
}, e.id))
|
|
2036
2037
|
}) : /* @__PURE__ */ H(r, {
|
|
2037
2038
|
illustration: "empty-people",
|
|
2038
|
-
icon: /* @__PURE__ */ H(
|
|
2039
|
+
icon: /* @__PURE__ */ H(Le, { size: 32 }),
|
|
2039
2040
|
title: m("devportal.noDelegations", "No delegations"),
|
|
2040
2041
|
description: m("devportal.noDelegationsDescription", "Grant a delegation to allow this app to act on your behalf"),
|
|
2041
2042
|
action: /* @__PURE__ */ U("button", {
|
|
@@ -2046,7 +2047,7 @@ var Ye = [
|
|
|
2046
2047
|
})
|
|
2047
2048
|
]
|
|
2048
2049
|
});
|
|
2049
|
-
},
|
|
2050
|
+
}, ut = ({ analytics: e }) => {
|
|
2050
2051
|
let { t } = W(), n = (e, n) => {
|
|
2051
2052
|
let r = t(e);
|
|
2052
2053
|
return r === e ? n : r;
|
|
@@ -2121,17 +2122,17 @@ var Ye = [
|
|
|
2121
2122
|
]
|
|
2122
2123
|
}) : /* @__PURE__ */ H(r, {
|
|
2123
2124
|
illustration: "empty-data",
|
|
2124
|
-
icon: /* @__PURE__ */ H(
|
|
2125
|
+
icon: /* @__PURE__ */ H(ve, { size: 32 }),
|
|
2125
2126
|
title: n("devportal.noAnalyticsData", "No analytics data"),
|
|
2126
2127
|
description: n("devportal.noAnalyticsDataDescription", "Analytics data will appear here once the application starts receiving traffic.")
|
|
2127
2128
|
})
|
|
2128
2129
|
})]
|
|
2129
2130
|
});
|
|
2130
|
-
},
|
|
2131
|
+
}, dt = "# Sample query — replace with your own\n# Note: introspection is disabled on this gateway for security.\n# Use a real query from your app's API schema instead.\nquery GetCurrentUser {\n currentUser {\n id\n email\n }\n}", ft = ({ app: t }) => {
|
|
2131
2132
|
let { apiGatewayUrl: n, workspacesGatewayUrl: r, authToken: i } = e(), { t: a } = W(), o = (e, t) => {
|
|
2132
2133
|
let n = a(e);
|
|
2133
2134
|
return n === e ? t : n;
|
|
2134
|
-
}, [s, c] = N(
|
|
2135
|
+
}, [s, c] = N(dt), [l, u] = N("{}"), [d, f] = N(""), [p, m] = N(!1), [h, g] = N(`${n || "https://gw-global.local.burdenoff.com"}/global/graphql`), [_, v] = N(i || ""), [y, b] = N(!1), x = j(async () => {
|
|
2135
2136
|
m(!0), f("");
|
|
2136
2137
|
try {
|
|
2137
2138
|
let e = {};
|
|
@@ -2162,7 +2163,7 @@ var Ye = [
|
|
|
2162
2163
|
l,
|
|
2163
2164
|
h,
|
|
2164
2165
|
_
|
|
2165
|
-
]), S =
|
|
2166
|
+
]), S = j(() => {
|
|
2166
2167
|
i && v(i), b(!0);
|
|
2167
2168
|
}, [i]);
|
|
2168
2169
|
return /* @__PURE__ */ U("div", {
|
|
@@ -2191,7 +2192,7 @@ var Ye = [
|
|
|
2191
2192
|
})] }), /* @__PURE__ */ U("button", {
|
|
2192
2193
|
onClick: S,
|
|
2193
2194
|
className: "flex items-center gap-2 rounded-md border px-3 py-1.5 text-sm font-medium hover:bg-accent transition-colors",
|
|
2194
|
-
children: [/* @__PURE__ */ H(
|
|
2195
|
+
children: [/* @__PURE__ */ H(De, { size: 14 }), o("devportal.autoFillCredentials", "Auto-fill Credentials")]
|
|
2195
2196
|
})]
|
|
2196
2197
|
}),
|
|
2197
2198
|
y && /* @__PURE__ */ U("div", {
|
|
@@ -2306,13 +2307,13 @@ var Ye = [
|
|
|
2306
2307
|
})] })
|
|
2307
2308
|
]
|
|
2308
2309
|
});
|
|
2309
|
-
},
|
|
2310
|
+
}, pt = new Set(["workflow", "template"]), mt = [{
|
|
2310
2311
|
value: "FREE",
|
|
2311
2312
|
label: "Free"
|
|
2312
2313
|
}, {
|
|
2313
2314
|
value: "PAID",
|
|
2314
2315
|
label: "Paid"
|
|
2315
|
-
}],
|
|
2316
|
+
}], Y = {
|
|
2316
2317
|
NODE: [
|
|
2317
2318
|
{
|
|
2318
2319
|
value: "node",
|
|
@@ -2384,12 +2385,12 @@ var Ye = [
|
|
|
2384
2385
|
label: "Plugin"
|
|
2385
2386
|
}
|
|
2386
2387
|
]
|
|
2387
|
-
},
|
|
2388
|
+
}, ht = {
|
|
2388
2389
|
NODE: "node",
|
|
2389
2390
|
WORKFLOW: "workflow",
|
|
2390
2391
|
APP: "app"
|
|
2391
2392
|
};
|
|
2392
|
-
function
|
|
2393
|
+
function X(e) {
|
|
2393
2394
|
let t = e.manifest ?? {}, n = t.identity ?? {}, r = (t.digital ?? {}).install ?? {}, i = t.compatibility ?? {}, a = Array.isArray(t.permissions) ? t.permissions : [], o = Array.isArray(e.screenshots) ? e.screenshots.join("\n") : "";
|
|
2394
2395
|
return {
|
|
2395
2396
|
iconUrl: e.iconUrl ?? "",
|
|
@@ -2404,7 +2405,7 @@ function mt(e) {
|
|
|
2404
2405
|
supportUrl: e.supportUrl ?? "",
|
|
2405
2406
|
privacyPolicyUrl: e.privacyPolicyUrl ?? "",
|
|
2406
2407
|
termsOfServiceUrl: e.termsOfServiceUrl ?? "",
|
|
2407
|
-
manifestItemType: typeof t.itemType == "string" ? t.itemType :
|
|
2408
|
+
manifestItemType: typeof t.itemType == "string" ? t.itemType : ht[e.appType] ?? "",
|
|
2408
2409
|
manifestDisplayName: typeof n.displayName == "string" ? n.displayName : e.name ?? "",
|
|
2409
2410
|
manifestVersion: typeof n.version == "string" ? n.version : "",
|
|
2410
2411
|
manifestInstallType: typeof r.type == "string" ? r.type : "zip",
|
|
@@ -2415,15 +2416,15 @@ function mt(e) {
|
|
|
2415
2416
|
manifestJsonContent: typeof t.jsonContent == "string" ? t.jsonContent : typeof t.content == "string" ? t.content : ""
|
|
2416
2417
|
};
|
|
2417
2418
|
}
|
|
2418
|
-
var
|
|
2419
|
+
var gt = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i = !1, onNavigateToVersions: a, onNavigateToPricing: o, onNavigateToSubmission: s }) => {
|
|
2419
2420
|
let { workspacesGatewayUrl: c, authToken: l, workspaceId: u, getWorkspaceToken: d } = e(), { t: f } = W(), p = (e, t) => {
|
|
2420
2421
|
let n = f(e);
|
|
2421
2422
|
return n === e ? t : n;
|
|
2422
|
-
}, [m, h] = N(() =>
|
|
2423
|
+
}, [m, h] = N(() => X(t)), [g, _] = N(!1), [v, y] = N(null), x = me(X(t)), C = me(t);
|
|
2423
2424
|
C.current = t;
|
|
2424
2425
|
let w = JSON.stringify(m) !== JSON.stringify(x.current), [T] = b();
|
|
2425
|
-
|
|
2426
|
-
let e =
|
|
2426
|
+
pe(() => {
|
|
2427
|
+
let e = X(C.current);
|
|
2427
2428
|
h(e), x.current = e, y(null);
|
|
2428
2429
|
}, [t.id]);
|
|
2429
2430
|
let E = (e, t) => {
|
|
@@ -2434,7 +2435,7 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2434
2435
|
}, D = m.shortDescription.trim().length > 0 && m.privacyPolicyUrl.trim().length > 0 && m.termsOfServiceUrl.trim().length > 0, ee = async () => {
|
|
2435
2436
|
_(!0), y(null);
|
|
2436
2437
|
try {
|
|
2437
|
-
let e = m.screenshotsText.split("\n").map((e) => e.trim()).filter(Boolean), n = m.manifestPermissionsText.split("\n").map((e) => e.trim()).filter(Boolean), r =
|
|
2438
|
+
let e = m.screenshotsText.split("\n").map((e) => e.trim()).filter(Boolean), n = m.manifestPermissionsText.split("\n").map((e) => e.trim()).filter(Boolean), r = pt.has(m.manifestItemType), i = t.manifest ?? {}, a = {
|
|
2438
2439
|
manifestVersion: typeof i.manifestVersion == "string" ? i.manifestVersion : "1.0",
|
|
2439
2440
|
itemType: m.manifestItemType || void 0,
|
|
2440
2441
|
identity: {
|
|
@@ -2471,13 +2472,13 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2471
2472
|
} finally {
|
|
2472
2473
|
_(!1);
|
|
2473
2474
|
}
|
|
2474
|
-
}, { upload: te, uploading: ne, progress: ae, error: oe } =
|
|
2475
|
+
}, { upload: te, uploading: ne, progress: ae, error: oe } = A(c, l, u, d, "/DevPortal/Assets"), { upload: ce, uploading: le, progress: ue, error: j } = A(c, l, u, d, "/DevPortal/Assets"), { upload: M, uploading: he, progress: _e, error: ve } = A(c, l, u, d, "/DevPortal/Assets"), F = pt.has(m.manifestItemType), Se = t.status === "SUBMITTED";
|
|
2475
2476
|
return /* @__PURE__ */ U("div", {
|
|
2476
2477
|
className: "space-y-8 max-w-3xl",
|
|
2477
2478
|
children: [
|
|
2478
2479
|
t.status === "PUBLISHED" ? /* @__PURE__ */ U("div", {
|
|
2479
2480
|
className: "flex items-start gap-3 rounded-lg border border-success/30 bg-success/10 px-4 py-3",
|
|
2480
|
-
children: [/* @__PURE__ */ H(
|
|
2481
|
+
children: [/* @__PURE__ */ H(ye, {
|
|
2481
2482
|
size: 16,
|
|
2482
2483
|
className: "text-success mt-0.5 shrink-0"
|
|
2483
2484
|
}), /* @__PURE__ */ U("div", {
|
|
@@ -2498,7 +2499,7 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2498
2499
|
className: "flex items-center justify-between gap-3 rounded-lg border border-primary/30 bg-action-primary-bg/5 px-4 py-3",
|
|
2499
2500
|
children: [/* @__PURE__ */ U("div", {
|
|
2500
2501
|
className: "flex items-start gap-3",
|
|
2501
|
-
children: [/* @__PURE__ */ H(
|
|
2502
|
+
children: [/* @__PURE__ */ H(xe, {
|
|
2502
2503
|
size: 16,
|
|
2503
2504
|
className: "text-primary mt-0.5 shrink-0"
|
|
2504
2505
|
}), /* @__PURE__ */ U("div", {
|
|
@@ -2526,7 +2527,7 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2526
2527
|
})]
|
|
2527
2528
|
}) : /* @__PURE__ */ U("div", {
|
|
2528
2529
|
className: "flex items-start gap-3 rounded-lg border border-warning/30 bg-warning/5 px-4 py-3",
|
|
2529
|
-
children: [/* @__PURE__ */ H(
|
|
2530
|
+
children: [/* @__PURE__ */ H(ge, {
|
|
2530
2531
|
size: 16,
|
|
2531
2532
|
className: "text-warning mt-0.5 shrink-0"
|
|
2532
2533
|
}), /* @__PURE__ */ U("div", {
|
|
@@ -2551,9 +2552,9 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2551
2552
|
value: m.manifestItemType,
|
|
2552
2553
|
onChange: (e) => {
|
|
2553
2554
|
let t = e.target.value;
|
|
2554
|
-
E("manifestItemType", t),
|
|
2555
|
+
E("manifestItemType", t), pt.has(t) ? E("manifestInstallType", "json") : m.manifestInstallType === "json" && E("manifestInstallType", "zip");
|
|
2555
2556
|
},
|
|
2556
|
-
options:
|
|
2557
|
+
options: Y[t.appType] ?? Y.APP,
|
|
2557
2558
|
placeholder: p("devportal.selectItemType", "Select item type…"),
|
|
2558
2559
|
hint: p("devportal.storeItemTypeHint", "Sub-category shown in the marketplace (e.g. Node vs Agent vs Parser)")
|
|
2559
2560
|
}),
|
|
@@ -2563,7 +2564,7 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2563
2564
|
onChange: (e) => E("manifestDisplayName", e.target.value),
|
|
2564
2565
|
placeholder: "My Awesome Node"
|
|
2565
2566
|
}),
|
|
2566
|
-
|
|
2567
|
+
F && /* @__PURE__ */ H(ie, {
|
|
2567
2568
|
label: t.appType === "WORKFLOW" ? p("devportal.workflowJsonContent", "Workflow Canvas Definition (JSON)") : p("devportal.jsonContent", "Template Definition (JSON)"),
|
|
2568
2569
|
value: m.manifestJsonContent,
|
|
2569
2570
|
onChange: (e) => E("manifestJsonContent", e.target.value),
|
|
@@ -2582,7 +2583,7 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2582
2583
|
children: [
|
|
2583
2584
|
/* @__PURE__ */ U("div", {
|
|
2584
2585
|
className: "grid gap-5 sm:grid-cols-2",
|
|
2585
|
-
children: [/* @__PURE__ */ H(
|
|
2586
|
+
children: [/* @__PURE__ */ H(de, {
|
|
2586
2587
|
label: p("devportal.iconUrl", "Icon"),
|
|
2587
2588
|
value: m.iconUrl,
|
|
2588
2589
|
onChange: (e) => E("iconUrl", e),
|
|
@@ -2592,7 +2593,7 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2592
2593
|
uploading: ne,
|
|
2593
2594
|
progress: ae,
|
|
2594
2595
|
error: oe
|
|
2595
|
-
}), /* @__PURE__ */ H(
|
|
2596
|
+
}), /* @__PURE__ */ H(de, {
|
|
2596
2597
|
label: p("devportal.bannerUrl", "Banner"),
|
|
2597
2598
|
value: m.bannerUrl,
|
|
2598
2599
|
onChange: (e) => E("bannerUrl", e),
|
|
@@ -2600,8 +2601,8 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2600
2601
|
aspectClass: "aspect-square",
|
|
2601
2602
|
upload: ce,
|
|
2602
2603
|
uploading: le,
|
|
2603
|
-
progress:
|
|
2604
|
-
error:
|
|
2604
|
+
progress: ue,
|
|
2605
|
+
error: j
|
|
2605
2606
|
})]
|
|
2606
2607
|
}),
|
|
2607
2608
|
/* @__PURE__ */ H(k, {
|
|
@@ -2626,13 +2627,13 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2626
2627
|
rows: 5,
|
|
2627
2628
|
hint: p("devportal.fullDescHint", "Markdown supported")
|
|
2628
2629
|
}),
|
|
2629
|
-
/* @__PURE__ */ H(
|
|
2630
|
+
/* @__PURE__ */ H(fe, {
|
|
2630
2631
|
urls: m.screenshotsText.split("\n").map((e) => e.trim()).filter(Boolean),
|
|
2631
2632
|
onChange: (e) => E("screenshotsText", e.join("\n")),
|
|
2632
|
-
upload:
|
|
2633
|
+
upload: M,
|
|
2633
2634
|
uploading: he,
|
|
2634
|
-
progress:
|
|
2635
|
-
error:
|
|
2635
|
+
progress: _e,
|
|
2636
|
+
error: ve
|
|
2636
2637
|
})
|
|
2637
2638
|
]
|
|
2638
2639
|
})
|
|
@@ -2689,14 +2690,14 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2689
2690
|
children: [
|
|
2690
2691
|
v === "success" && /* @__PURE__ */ U("div", {
|
|
2691
2692
|
className: "flex items-center gap-2 rounded-md border border-success/30 bg-success/10 px-3 py-2 text-sm text-success",
|
|
2692
|
-
children: [/* @__PURE__ */ H(
|
|
2693
|
+
children: [/* @__PURE__ */ H(ye, {
|
|
2693
2694
|
size: 15,
|
|
2694
2695
|
className: "shrink-0"
|
|
2695
2696
|
}), p("devportal.storeListing.savedSuccess", "Store listing saved successfully.")]
|
|
2696
2697
|
}),
|
|
2697
2698
|
v === "error" && /* @__PURE__ */ U("div", {
|
|
2698
2699
|
className: "flex items-center gap-2 rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",
|
|
2699
|
-
children: [/* @__PURE__ */ H(
|
|
2700
|
+
children: [/* @__PURE__ */ H(ge, {
|
|
2700
2701
|
size: 15,
|
|
2701
2702
|
className: "shrink-0"
|
|
2702
2703
|
}), p("devportal.storeListing.savedError", "Failed to save. Please try again.")]
|
|
@@ -2713,7 +2714,7 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2713
2714
|
children: g ? /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H(L, {
|
|
2714
2715
|
size: 16,
|
|
2715
2716
|
className: "animate-spin"
|
|
2716
|
-
}), p("devportal.saving", "Saving…")] }) : w ? /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H(
|
|
2717
|
+
}), p("devportal.saving", "Saving…")] }) : w ? /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H(Fe, { size: 16 }), p("devportal.saveStoreListing", "Save Store Listing")] }) : /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H(P, { size: 16 }), p("devportal.saved", "Saved")] })
|
|
2717
2718
|
}),
|
|
2718
2719
|
!D && /* @__PURE__ */ H("p", {
|
|
2719
2720
|
className: "text-xs text-text-secondary",
|
|
@@ -2723,13 +2724,13 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2723
2724
|
type: "button",
|
|
2724
2725
|
onClick: a,
|
|
2725
2726
|
className: "inline-flex items-center gap-1.5 text-sm font-medium text-primary hover:underline underline-offset-2",
|
|
2726
|
-
children: [p("devportal.nextUploadVersion", "Next: Upload a Version"), /* @__PURE__ */ H(
|
|
2727
|
+
children: [p("devportal.nextUploadVersion", "Next: Upload a Version"), /* @__PURE__ */ H(be, { size: 15 })]
|
|
2727
2728
|
}),
|
|
2728
2729
|
(!r || n > 0) && !i && o && /* @__PURE__ */ U("button", {
|
|
2729
2730
|
type: "button",
|
|
2730
2731
|
onClick: o,
|
|
2731
2732
|
className: "inline-flex items-center gap-1.5 text-sm font-medium text-primary hover:underline underline-offset-2",
|
|
2732
|
-
children: [p("devportal.nextSetPricing", "Next: Set Pricing"), /* @__PURE__ */ H(
|
|
2733
|
+
children: [p("devportal.nextSetPricing", "Next: Set Pricing"), /* @__PURE__ */ H(be, { size: 15 })]
|
|
2733
2734
|
})
|
|
2734
2735
|
]
|
|
2735
2736
|
})
|
|
@@ -2739,7 +2740,7 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2739
2740
|
});
|
|
2740
2741
|
}, Z = ({ label: e, value: n, trend: r }) => {
|
|
2741
2742
|
let { t: i } = W();
|
|
2742
|
-
return /* @__PURE__ */ U(
|
|
2743
|
+
return /* @__PURE__ */ U(Ge, {
|
|
2743
2744
|
treatment: "metric",
|
|
2744
2745
|
className: "p-4",
|
|
2745
2746
|
children: [
|
|
@@ -2828,8 +2829,8 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2828
2829
|
label: "Roles & Permissions",
|
|
2829
2830
|
description: "Access control configuration"
|
|
2830
2831
|
}
|
|
2831
|
-
},
|
|
2832
|
-
function
|
|
2832
|
+
}, _t = Object.keys($);
|
|
2833
|
+
function vt(e) {
|
|
2833
2834
|
if (!e || !Array.isArray(e.permissions)) return [];
|
|
2834
2835
|
let t = [];
|
|
2835
2836
|
for (let n of e.permissions) n && typeof n == "object" && typeof n.resource == "string" && n.resource && t.push({
|
|
@@ -2838,7 +2839,7 @@ function _t(e) {
|
|
|
2838
2839
|
});
|
|
2839
2840
|
return t;
|
|
2840
2841
|
}
|
|
2841
|
-
function
|
|
2842
|
+
function yt(e) {
|
|
2842
2843
|
let t = [];
|
|
2843
2844
|
for (let n of e) {
|
|
2844
2845
|
let e = n.indexOf(":");
|
|
@@ -2851,12 +2852,12 @@ function vt(e) {
|
|
|
2851
2852
|
}
|
|
2852
2853
|
return t;
|
|
2853
2854
|
}
|
|
2854
|
-
function
|
|
2855
|
+
function bt(e, t) {
|
|
2855
2856
|
if (e.length > 0) return e;
|
|
2856
2857
|
let n = /* @__PURE__ */ new Set();
|
|
2857
2858
|
return t.filter((e) => n.has(e.resource) ? !1 : (n.add(e.resource), !0));
|
|
2858
2859
|
}
|
|
2859
|
-
var
|
|
2860
|
+
var xt = ({ level: e, onChange: t }) => /* @__PURE__ */ H("div", {
|
|
2860
2861
|
className: "flex items-center gap-0.5 rounded-md border border-border-subtle bg-bg-sunken/50 p-0.5",
|
|
2861
2862
|
children: ["read", "write"].map((n) => /* @__PURE__ */ H("button", {
|
|
2862
2863
|
type: "button",
|
|
@@ -2864,8 +2865,8 @@ var bt = ({ level: e, onChange: t }) => /* @__PURE__ */ H("div", {
|
|
|
2864
2865
|
className: `rounded px-2.5 py-1 text-xs font-medium transition-colors whitespace-nowrap ${e === n ? "bg-bg-base text-text-primary shadow-sm" : "text-text-secondary hover:text-text-primary"}`,
|
|
2865
2866
|
children: n === "read" ? "Read" : "Read & Write"
|
|
2866
2867
|
}, n))
|
|
2867
|
-
}),
|
|
2868
|
-
let i = e.manifest ?? {}, [a, o] = N(() =>
|
|
2868
|
+
}), St = ({ app: e, versionScopes: t, locked: n = !1, onNavigateToVersions: r }) => {
|
|
2869
|
+
let i = e.manifest ?? {}, [a, o] = N(() => bt(vt(i), yt(t ?? []))), [s, c] = N(!1), [l, u] = N(""), [d, f] = N("read"), [p, m] = N(!1), [h, g] = N(!1), [_] = b(), v = (e, t) => {
|
|
2869
2870
|
g(!1), o((n) => n.map((n) => n.resource === e ? {
|
|
2870
2871
|
...n,
|
|
2871
2872
|
level: t
|
|
@@ -2917,7 +2918,7 @@ var bt = ({ level: e, onChange: t }) => /* @__PURE__ */ H("div", {
|
|
|
2917
2918
|
}), n ? /* @__PURE__ */ H("span", {
|
|
2918
2919
|
className: `rounded-full px-2.5 py-0.5 text-xs font-medium ${e.level === "write" ? "bg-status-warning-bg text-status-warning-text" : "bg-bg-sunken text-text-secondary"}`,
|
|
2919
2920
|
children: e.level === "write" ? "Read & Write" : "Read"
|
|
2920
|
-
}) : /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H(
|
|
2921
|
+
}) : /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H(xt, {
|
|
2921
2922
|
level: e.level,
|
|
2922
2923
|
onChange: (t) => v(e.resource, t)
|
|
2923
2924
|
}), /* @__PURE__ */ H("button", {
|
|
@@ -2925,7 +2926,7 @@ var bt = ({ level: e, onChange: t }) => /* @__PURE__ */ H("div", {
|
|
|
2925
2926
|
onClick: () => y(e.resource),
|
|
2926
2927
|
title: "Remove permission",
|
|
2927
2928
|
className: "p-1.5 rounded text-text-tertiary hover:text-status-error-text hover:bg-status-error-bg-subtle transition-colors",
|
|
2928
|
-
children: /* @__PURE__ */ H(
|
|
2929
|
+
children: /* @__PURE__ */ H(Be, { size: 14 })
|
|
2929
2930
|
})] })]
|
|
2930
2931
|
}, e.resource))
|
|
2931
2932
|
});
|
|
@@ -2936,7 +2937,7 @@ var bt = ({ level: e, onChange: t }) => /* @__PURE__ */ H("div", {
|
|
|
2936
2937
|
className: "space-y-4",
|
|
2937
2938
|
children: n ? /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ U("div", {
|
|
2938
2939
|
className: "rounded-lg border border-status-warning-bg bg-status-warning-bg-subtle p-3 flex gap-2 text-sm",
|
|
2939
|
-
children: [/* @__PURE__ */ H(
|
|
2940
|
+
children: [/* @__PURE__ */ H(Ee, {
|
|
2940
2941
|
size: 15,
|
|
2941
2942
|
className: "flex-shrink-0 mt-0.5 text-status-warning-text"
|
|
2942
2943
|
}), /* @__PURE__ */ U("span", {
|
|
@@ -2991,12 +2992,12 @@ var bt = ({ level: e, onChange: t }) => /* @__PURE__ */ H("div", {
|
|
|
2991
2992
|
}),
|
|
2992
2993
|
/* @__PURE__ */ H("datalist", {
|
|
2993
2994
|
id: "perm-resource-suggestions",
|
|
2994
|
-
children:
|
|
2995
|
+
children: _t.filter((e) => !a.some((t) => t.resource === e)).map((e) => /* @__PURE__ */ H("option", {
|
|
2995
2996
|
value: e,
|
|
2996
2997
|
children: $[e].label
|
|
2997
2998
|
}, e))
|
|
2998
2999
|
}),
|
|
2999
|
-
/* @__PURE__ */ H(
|
|
3000
|
+
/* @__PURE__ */ H(xt, {
|
|
3000
3001
|
level: d,
|
|
3001
3002
|
onChange: f
|
|
3002
3003
|
}),
|
|
@@ -3013,7 +3014,7 @@ var bt = ({ level: e, onChange: t }) => /* @__PURE__ */ H("div", {
|
|
|
3013
3014
|
c(!1), u("");
|
|
3014
3015
|
},
|
|
3015
3016
|
className: "p-1.5 rounded text-text-secondary hover:text-text-primary transition-colors",
|
|
3016
|
-
children: /* @__PURE__ */ H(
|
|
3017
|
+
children: /* @__PURE__ */ H(Be, { size: 14 })
|
|
3017
3018
|
})
|
|
3018
3019
|
]
|
|
3019
3020
|
}) : /* @__PURE__ */ U("button", {
|
|
@@ -3024,7 +3025,7 @@ var bt = ({ level: e, onChange: t }) => /* @__PURE__ */ H("div", {
|
|
|
3024
3025
|
}),
|
|
3025
3026
|
/* @__PURE__ */ U("div", {
|
|
3026
3027
|
className: "rounded-lg border border-border-subtle bg-bg-sunken/30 p-3 flex gap-2 text-xs text-text-secondary",
|
|
3027
|
-
children: [/* @__PURE__ */ H(
|
|
3028
|
+
children: [/* @__PURE__ */ H(Ee, {
|
|
3028
3029
|
size: 14,
|
|
3029
3030
|
className: "flex-shrink-0 mt-0.5"
|
|
3030
3031
|
}), /* @__PURE__ */ U("span", { children: [/* @__PURE__ */ H("strong", { children: "Read & Write" }), " implies Read. Request only what your app genuinely needs — fewer permissions build more user trust."] })]
|
|
@@ -3033,7 +3034,7 @@ var bt = ({ level: e, onChange: t }) => /* @__PURE__ */ H("div", {
|
|
|
3033
3034
|
className: "flex items-center justify-end gap-3",
|
|
3034
3035
|
children: [h && /* @__PURE__ */ U("span", {
|
|
3035
3036
|
className: "flex items-center gap-1.5 text-sm text-status-success-text",
|
|
3036
|
-
children: [/* @__PURE__ */ H(
|
|
3037
|
+
children: [/* @__PURE__ */ H(ye, { size: 14 }), "Saved"]
|
|
3037
3038
|
}), /* @__PURE__ */ U("button", {
|
|
3038
3039
|
type: "button",
|
|
3039
3040
|
onClick: () => void C(),
|
|
@@ -3050,6 +3051,6 @@ var bt = ({ level: e, onChange: t }) => /* @__PURE__ */ H("div", {
|
|
|
3050
3051
|
});
|
|
3051
3052
|
};
|
|
3052
3053
|
//#endregion
|
|
3053
|
-
export {
|
|
3054
|
+
export { Ze as ApplicationDetailPage };
|
|
3054
3055
|
|
|
3055
3056
|
//# sourceMappingURL=ApplicationDetailPage.js.map
|