@burdenoff/microfe-devportal 2026.830.1 → 2026.830.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/AdminDevportalRoot.d.ts.map +1 -1
- package/dist/devportal/AdminDevportalRoot.js +16 -19
- package/dist/devportal/AdminDevportalRoot.js.map +1 -1
- package/dist/devportal/DevportalRoot.d.ts.map +1 -1
- package/dist/devportal/DevportalRoot.js +36 -39
- package/dist/devportal/DevportalRoot.js.map +1 -1
- package/dist/devportal/components/AppCard.js +41 -41
- package/dist/devportal/components/ConfirmDialog.d.ts.map +1 -1
- package/dist/devportal/components/ConfirmDialog.js +19 -22
- package/dist/devportal/components/ConfirmDialog.js.map +1 -1
- package/dist/devportal/components/DataTable.d.ts.map +1 -1
- package/dist/devportal/components/DataTable.js +31 -34
- package/dist/devportal/components/DataTable.js.map +1 -1
- package/dist/devportal/components/FeatureFlaggedRoute.js +8 -8
- package/dist/devportal/components/FormField.d.ts.map +1 -1
- package/dist/devportal/components/FormField.js +26 -32
- package/dist/devportal/components/FormField.js.map +1 -1
- package/dist/devportal/components/GrantDelegationModal.js +64 -64
- package/dist/devportal/components/GrantDelegationModal.js.map +1 -1
- package/dist/devportal/components/LoadingState.d.ts.map +1 -1
- package/dist/devportal/components/LoadingState.js +5 -8
- package/dist/devportal/components/LoadingState.js.map +1 -1
- package/dist/devportal/components/PageLayout.d.ts.map +1 -1
- package/dist/devportal/components/PageLayout.js +10 -13
- package/dist/devportal/components/PageLayout.js.map +1 -1
- package/dist/devportal/components/PermissionGuard.d.ts.map +1 -1
- package/dist/devportal/components/PermissionGuard.js +11 -14
- package/dist/devportal/components/PermissionGuard.js.map +1 -1
- package/dist/devportal/components/SecretDisplay.d.ts.map +1 -1
- package/dist/devportal/components/SecretDisplay.js +24 -30
- package/dist/devportal/components/SecretDisplay.js.map +1 -1
- package/dist/devportal/components/SectionNav.d.ts.map +1 -1
- package/dist/devportal/components/SectionNav.js +24 -27
- package/dist/devportal/components/SectionNav.js.map +1 -1
- package/dist/devportal/components/StatusBadge.d.ts.map +1 -1
- package/dist/devportal/components/StatusBadge.js +24 -33
- package/dist/devportal/components/StatusBadge.js.map +1 -1
- package/dist/devportal/index.d.ts +1 -0
- package/dist/devportal/index.d.ts.map +1 -1
- package/dist/devportal/index.js +1 -0
- package/dist/devportal/pages/AdminReviewPage.js +172 -172
- package/dist/devportal/pages/AnalyticsDashboardPage.js +43 -43
- package/dist/devportal/pages/AnalyticsDashboardPage.js.map +1 -1
- package/dist/devportal/pages/ApiKeysPage.js +119 -119
- package/dist/devportal/pages/ApiKeysPage.js.map +1 -1
- package/dist/devportal/pages/AppLogsPage.js +45 -45
- package/dist/devportal/pages/ApplicationDetailPage.js +607 -607
- package/dist/devportal/pages/ApplicationVersionsPage.js +13 -13
- package/dist/devportal/pages/ApplicationsPage.d.ts.map +1 -1
- package/dist/devportal/pages/ApplicationsPage.js +104 -101
- package/dist/devportal/pages/ApplicationsPage.js.map +1 -1
- package/dist/devportal/pages/CreateApiKeyPage.js +45 -45
- package/dist/devportal/pages/CreateApplicationPage.js +38 -38
- package/dist/devportal/pages/CreateApplicationPage.js.map +1 -1
- package/dist/devportal/pages/CreateOAuthClientPage.js +52 -52
- package/dist/devportal/pages/CreateOrganizationPage.js +26 -26
- package/dist/devportal/pages/CreateWebhookPage.d.ts.map +1 -1
- package/dist/devportal/pages/CreateWebhookPage.js +48 -48
- package/dist/devportal/pages/CreateWebhookPage.js.map +1 -1
- package/dist/devportal/pages/DashboardPage.d.ts.map +1 -1
- package/dist/devportal/pages/DashboardPage.js +66 -72
- package/dist/devportal/pages/DashboardPage.js.map +1 -1
- package/dist/devportal/pages/DelegationsPage.js +174 -174
- package/dist/devportal/pages/DocumentationPage.js +93 -93
- package/dist/devportal/pages/EditApplicationPage.js +14 -14
- package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
- package/dist/devportal/pages/ListingPreviewPage.js +76 -76
- package/dist/devportal/pages/OAuthClientDetailPage.js +75 -75
- package/dist/devportal/pages/OAuthClientDetailPage.js.map +1 -1
- package/dist/devportal/pages/OAuthClientsPage.js +64 -64
- package/dist/devportal/pages/OrganizationDetailPage.js +189 -189
- package/dist/devportal/pages/OrganizationDetailPage.js.map +1 -1
- package/dist/devportal/pages/OrganizationMembersPage.js +10 -10
- package/dist/devportal/pages/OrganizationsPage.d.ts.map +1 -1
- package/dist/devportal/pages/OrganizationsPage.js +163 -154
- package/dist/devportal/pages/OrganizationsPage.js.map +1 -1
- package/dist/devportal/pages/PublishPage.js +104 -104
- package/dist/devportal/pages/PublishPage.js.map +1 -1
- package/dist/devportal/pages/PublisherProfilePage.js +55 -55
- package/dist/devportal/pages/ResourcesPage.js +60 -60
- package/dist/devportal/pages/RevenueDashboardPage.js +60 -60
- package/dist/devportal/pages/RevenueDashboardPage.js.map +1 -1
- package/dist/devportal/pages/SellerDashboardPage.js +83 -83
- package/dist/devportal/pages/SellerItemsPage.js +163 -163
- package/dist/devportal/pages/SellerItemsPage.js.map +1 -1
- package/dist/devportal/pages/SellerOrdersPage.js +63 -63
- package/dist/devportal/pages/SettingsPage.js +21 -21
- package/dist/devportal/pages/SetupPage.js +183 -183
- package/dist/devportal/pages/SetupPage.js.map +1 -1
- package/dist/devportal/pages/StoreSubmissionPage.js +5 -5
- package/dist/devportal/pages/WebhookDetailPage.js +123 -123
- package/dist/devportal/pages/WebhookDetailPage.js.map +1 -1
- package/dist/devportal/pages/WebhooksPage.js +118 -118
- package/dist/devportal/pages/WebhooksPage.js.map +1 -1
- package/dist/devportal/utils/i18n.d.ts +9 -2
- package/dist/devportal/utils/i18n.d.ts.map +1 -1
- package/dist/devportal/utils/i18n.js +13 -10
- package/dist/devportal/utils/i18n.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/translations/en.d.ts +1251 -0
- package/dist/translations/en.d.ts.map +1 -0
- package/dist/translations/en.js +1235 -0
- package/dist/translations/en.js.map +1 -0
- package/package.json +1 -1
|
@@ -19,10 +19,10 @@ import { DEVPORTAL_PERMISSIONS as le } from "../constants/permissions.js";
|
|
|
19
19
|
import { usePackageUpload as ue } from "../hooks/usePackageUpload.js";
|
|
20
20
|
import { useCallback as A, useEffect as de, useMemo as j, useRef as M, useState as N } from "react";
|
|
21
21
|
import { Markdown as fe } from "@burdenoff/fe-libs/shared/components";
|
|
22
|
-
import {
|
|
23
|
-
import { AlertCircle as F, AppWindow as pe, BarChart3 as me, Check as I, CheckCircle as he, ChevronRight as ge, CircleDollarSign as L, Clock as _e, Copy as ve, Edit as ye, ExternalLink as R, FlaskConical as be, Gift as xe, Info as Se, Key as Ce, Link as we, Loader2 as z, Lock as Te, MoreHorizontal as Ee, Package as De, Plus as B, Power as Oe, RefreshCw as ke, SendHorizontal as Ae, Shield as je, Store as Me, TrendingUp as Ne, Upload as V, Users as Pe, Wallet as Fe, Webhook as H, X as Ie, XCircle as Le } from "lucide-react";
|
|
22
|
+
import { AlertCircle as P, AppWindow as pe, BarChart3 as me, Check as F, CheckCircle as he, ChevronRight as ge, CircleDollarSign as I, Clock as _e, Copy as ve, Edit as ye, ExternalLink as L, FlaskConical as be, Gift as xe, Info as Se, Key as Ce, Link as we, Loader2 as R, Lock as Te, MoreHorizontal as Ee, Package as De, Plus as z, Power as Oe, RefreshCw as ke, SendHorizontal as Ae, Shield as je, Store as Me, TrendingUp as Ne, Upload as B, Users as Pe, Wallet as Fe, Webhook as V, X as Ie, XCircle as Le } from "lucide-react";
|
|
24
23
|
import { useParams as Re } from "react-router";
|
|
25
|
-
import { Fragment as
|
|
24
|
+
import { Fragment as H, jsx as U, jsxs as W } from "react/jsx-runtime";
|
|
25
|
+
import { useI18n as G } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
26
26
|
import { CTAOverflowMenu as ze, EmphasisPanel as Be, GlassCard as Ve } from "@burdenoff/fe-libs/ui";
|
|
27
27
|
//#region src/devportal/pages/ApplicationDetailPage.tsx
|
|
28
28
|
function He(e) {
|
|
@@ -165,7 +165,7 @@ var Ke = [
|
|
|
165
165
|
{
|
|
166
166
|
id: "pricing",
|
|
167
167
|
label: "Pricing",
|
|
168
|
-
icon:
|
|
168
|
+
icon: I
|
|
169
169
|
},
|
|
170
170
|
{
|
|
171
171
|
id: "permissions",
|
|
@@ -175,7 +175,7 @@ var Ke = [
|
|
|
175
175
|
{
|
|
176
176
|
id: "webhooks",
|
|
177
177
|
label: "Webhooks",
|
|
178
|
-
icon:
|
|
178
|
+
icon: V
|
|
179
179
|
},
|
|
180
180
|
{
|
|
181
181
|
id: "delegations",
|
|
@@ -185,7 +185,7 @@ var Ke = [
|
|
|
185
185
|
{
|
|
186
186
|
id: "playground",
|
|
187
187
|
label: "API Playground",
|
|
188
|
-
icon:
|
|
188
|
+
icon: L
|
|
189
189
|
},
|
|
190
190
|
{
|
|
191
191
|
id: "oauth",
|
|
@@ -201,32 +201,32 @@ var Ke = [
|
|
|
201
201
|
ACTIVE: "bg-status-success-bg-subtle text-status-success-text",
|
|
202
202
|
REVOKED: "bg-status-error-bg-subtle text-status-error-text",
|
|
203
203
|
EXPIRED: "bg-bg-sunken text-text-secondary"
|
|
204
|
-
}, Je = ({ message: e = "Loading..." }) => /* @__PURE__ */
|
|
204
|
+
}, Je = ({ message: e = "Loading..." }) => /* @__PURE__ */ W("div", {
|
|
205
205
|
className: "flex items-center justify-center gap-3 py-12",
|
|
206
|
-
children: [/* @__PURE__ */
|
|
206
|
+
children: [/* @__PURE__ */ U(R, {
|
|
207
207
|
size: 20,
|
|
208
208
|
className: "animate-spin text-text-secondary"
|
|
209
|
-
}), /* @__PURE__ */
|
|
209
|
+
}), /* @__PURE__ */ U("p", {
|
|
210
210
|
className: "text-sm text-text-secondary",
|
|
211
211
|
children: e
|
|
212
212
|
})]
|
|
213
|
-
}), Ye = ({ message: e }) => /* @__PURE__ */
|
|
213
|
+
}), Ye = ({ message: e }) => /* @__PURE__ */ W("div", {
|
|
214
214
|
className: "flex flex-col items-center justify-center gap-2 py-12 text-center",
|
|
215
|
-
children: [/* @__PURE__ */
|
|
215
|
+
children: [/* @__PURE__ */ U(P, {
|
|
216
216
|
size: 32,
|
|
217
217
|
className: "text-status-error-text"
|
|
218
|
-
}), /* @__PURE__ */
|
|
218
|
+
}), /* @__PURE__ */ U("p", {
|
|
219
219
|
className: "text-sm text-text-secondary",
|
|
220
220
|
children: e
|
|
221
221
|
})]
|
|
222
222
|
}), K = () => {
|
|
223
|
-
let { navigate: i, basePath: o, workspaceId: c } = e(), { t: u } =
|
|
223
|
+
let { navigate: i, basePath: o, workspaceId: c } = e(), { t: u } = G(), m = (e, t) => {
|
|
224
224
|
let n = u(e);
|
|
225
225
|
return n === e ? t : n;
|
|
226
|
-
}, { allowed: g } = ce(le.APP_UPDATE), { allowed: y } = ce(le.APP_DELETE), { appId: b } = Re(), [S, D] = N("overview"), [te, ne] = N(!1), [k, ie] = N(!1), [se, ue] = N(null), [de, j] = N(!1), { data: M, loading: fe, error: me, refetch:
|
|
226
|
+
}, { allowed: g } = ce(le.APP_UPDATE), { allowed: y } = ce(le.APP_DELETE), { appId: b } = Re(), [S, D] = N("overview"), [te, ne] = N(!1), [k, ie] = N(!1), [se, ue] = N(null), [de, j] = N(!1), { data: M, loading: fe, error: me, refetch: I } = s({
|
|
227
227
|
variables: { id: b },
|
|
228
228
|
skip: !b
|
|
229
|
-
}), [ve, { loading:
|
|
229
|
+
}), [ve, { loading: L }] = h(), [xe, { loading: Se }] = a(), [Ce, { loading: we }] = _(), [Te] = p(), [Ee, { loading: De }] = f(), [z, { loading: je }] = v(), { data: Ne, refetch: B } = d({
|
|
230
230
|
variables: {
|
|
231
231
|
applicationId: b,
|
|
232
232
|
workspaceId: c ?? void 0
|
|
@@ -237,7 +237,7 @@ var Ke = [
|
|
|
237
237
|
variables: { id: M?.application?.developerOrganizationId ?? "" },
|
|
238
238
|
skip: !M?.application?.developerOrganizationId,
|
|
239
239
|
fetchPolicy: "cache-first"
|
|
240
|
-
}),
|
|
240
|
+
}), V = A((e) => {
|
|
241
241
|
i?.(`${o}${e}`);
|
|
242
242
|
}, [i, o]), Ie = A(async () => {
|
|
243
243
|
let e = M?.application?.appId;
|
|
@@ -247,12 +247,12 @@ var Ke = [
|
|
|
247
247
|
} catch {}
|
|
248
248
|
}, [M?.application?.appId, ve]), Be = A(async () => {
|
|
249
249
|
if (b) try {
|
|
250
|
-
await xe({ variables: { id: b } }), ie(!1),
|
|
250
|
+
await xe({ variables: { id: b } }), ie(!1), V("/apps");
|
|
251
251
|
} catch {}
|
|
252
252
|
}, [
|
|
253
253
|
b,
|
|
254
254
|
xe,
|
|
255
|
-
|
|
255
|
+
V
|
|
256
256
|
]), Ve = A(async (e) => {
|
|
257
257
|
if (!(!b || !c)) try {
|
|
258
258
|
await Ee({ variables: { input: {
|
|
@@ -261,7 +261,7 @@ var Ke = [
|
|
|
261
261
|
workspaceId: c,
|
|
262
262
|
autoUpdate: !1,
|
|
263
263
|
...e ? { version: e } : {}
|
|
264
|
-
} } }),
|
|
264
|
+
} } }), B(), O("success");
|
|
265
265
|
} catch (e) {
|
|
266
266
|
console.error("[DevPortal] Test in Workspace failed:", e), O("error");
|
|
267
267
|
}
|
|
@@ -269,14 +269,14 @@ var Ke = [
|
|
|
269
269
|
b,
|
|
270
270
|
c,
|
|
271
271
|
Ee,
|
|
272
|
-
|
|
272
|
+
B
|
|
273
273
|
]), [Ue, We] = N(!1), [Ge, qe] = N(""), Je = A(async (e) => {
|
|
274
274
|
try {
|
|
275
|
-
await
|
|
275
|
+
await z({ variables: { id: e } }), B(), O("success");
|
|
276
276
|
} catch {
|
|
277
277
|
O("error");
|
|
278
278
|
}
|
|
279
|
-
}, [
|
|
279
|
+
}, [z, B]), Ye = A(async () => {
|
|
280
280
|
if (b) try {
|
|
281
281
|
let e = (M?.application?.versions?.edges ?? []).map((e) => e.node).filter((e) => e.status === "draft");
|
|
282
282
|
for (let t of e) await Te({ variables: { id: t.id } });
|
|
@@ -284,32 +284,32 @@ var Ke = [
|
|
|
284
284
|
} catch (e) {
|
|
285
285
|
console.error("[DevPortal] Submit failed:", e), O("error");
|
|
286
286
|
} finally {
|
|
287
|
-
|
|
287
|
+
I();
|
|
288
288
|
}
|
|
289
289
|
}, [
|
|
290
290
|
b,
|
|
291
291
|
M?.application?.versions?.edges,
|
|
292
292
|
Te,
|
|
293
293
|
Ce,
|
|
294
|
-
|
|
294
|
+
I
|
|
295
295
|
]);
|
|
296
|
-
if (fe && !M) return /* @__PURE__ */
|
|
297
|
-
if (me) return /* @__PURE__ */
|
|
296
|
+
if (fe && !M) return /* @__PURE__ */ U(n, { message: m("devportal.loadingApplication", "Loading application...") });
|
|
297
|
+
if (me) return /* @__PURE__ */ U(x, {
|
|
298
298
|
title: m("devportal.error", "Error"),
|
|
299
299
|
backLink: `${o}/apps`,
|
|
300
300
|
backLabel: m("devportal.backToApplications", "Back to Applications"),
|
|
301
|
-
children: /* @__PURE__ */
|
|
301
|
+
children: /* @__PURE__ */ W("div", {
|
|
302
302
|
className: "flex flex-col items-center justify-center py-12 text-center",
|
|
303
303
|
children: [
|
|
304
|
-
/* @__PURE__ */
|
|
304
|
+
/* @__PURE__ */ U(P, {
|
|
305
305
|
size: 48,
|
|
306
306
|
className: "text-status-error-text mb-4"
|
|
307
307
|
}),
|
|
308
|
-
/* @__PURE__ */
|
|
308
|
+
/* @__PURE__ */ U("h3", {
|
|
309
309
|
className: "text-lg font-semibold mb-2",
|
|
310
310
|
children: m("devportal.failedToLoadApplication", "Failed to load application")
|
|
311
311
|
}),
|
|
312
|
-
/* @__PURE__ */
|
|
312
|
+
/* @__PURE__ */ U("p", {
|
|
313
313
|
className: "text-sm text-text-secondary",
|
|
314
314
|
children: me.message
|
|
315
315
|
})
|
|
@@ -317,13 +317,13 @@ var Ke = [
|
|
|
317
317
|
})
|
|
318
318
|
});
|
|
319
319
|
let K = He(M?.application);
|
|
320
|
-
if (!K) return /* @__PURE__ */
|
|
320
|
+
if (!K) return /* @__PURE__ */ U(x, {
|
|
321
321
|
title: m("devportal.notFound", "Not Found"),
|
|
322
322
|
backLink: `${o}/apps`,
|
|
323
323
|
backLabel: m("devportal.backToApplications", "Back to Applications"),
|
|
324
|
-
children: /* @__PURE__ */
|
|
324
|
+
children: /* @__PURE__ */ U(r, {
|
|
325
325
|
illustration: "empty-generic",
|
|
326
|
-
icon: /* @__PURE__ */
|
|
326
|
+
icon: /* @__PURE__ */ U(pe, { size: 48 }),
|
|
327
327
|
title: m("devportal.applicationNotFound", "Application not found"),
|
|
328
328
|
description: m("devportal.applicationNotFoundDescription", "The application you're looking for doesn't exist or you don't have access to it.")
|
|
329
329
|
})
|
|
@@ -337,18 +337,18 @@ var Ke = [
|
|
|
337
337
|
].includes(K.appType), J = K.appType === "API_INTEGRATION", Qe = M?.application?.versions?.totalCount ?? 0, at = K.appType === "NODE", ot = M?.application?.versions?.edges ?? [], st = ot.find((e) => e.node.isLatest)?.node ?? ot[0]?.node ?? null, ct = (st?.metadata ?? {}).sandboxBuildStatus, ut = at && ct !== "READY", dt = ut ? 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"), Y = K.pricingType === "PAID", ft = Fe?.developerOrganization, pt = ft?.platformFeeRate ?? .3, X = !!ft?.billingAccountId, mt = K.pricingDetails ?? {}, Z = K.pricingType === "FREE" || K.pricingType === "PAID" && typeof mt.price == "number" && mt.price > 0, Q = !!K.description?.trim() && !!K.category && !!K.iconUrl && (K.visibility === "PUBLIC" || K.visibility === "UNLISTED") && (!q && !J || Qe > 0) && (!Y || X) && Z, $ = Q && K.status !== "PUBLISHED" && K.status !== "SUBMITTED" && K.status !== "INACTIVE" && K.status !== "REVOKED", gt = [
|
|
338
338
|
...q ? [] : [{
|
|
339
339
|
label: m("devportal.rotateSecret", "Rotate Secret"),
|
|
340
|
-
icon: /* @__PURE__ */
|
|
340
|
+
icon: /* @__PURE__ */ U(ke, { size: 16 }),
|
|
341
341
|
disabled: !K.appId,
|
|
342
342
|
onSelect: () => ne(!0)
|
|
343
343
|
}],
|
|
344
344
|
...!q || at ? Pe ? [{
|
|
345
345
|
label: m("devportal.uninstallFromWorkspace", "Uninstall from Workspace"),
|
|
346
|
-
icon: /* @__PURE__ */
|
|
346
|
+
icon: /* @__PURE__ */ U(Le, { size: 16 }),
|
|
347
347
|
disabled: je || !c,
|
|
348
348
|
onSelect: () => void Je(Pe.id)
|
|
349
349
|
}] : [{
|
|
350
350
|
label: dt,
|
|
351
|
-
icon: /* @__PURE__ */
|
|
351
|
+
icon: /* @__PURE__ */ U(be, { size: 16 }),
|
|
352
352
|
disabled: De || !c || ut,
|
|
353
353
|
onSelect: () => {
|
|
354
354
|
if (ot.length <= 1) {
|
|
@@ -360,24 +360,24 @@ var Ke = [
|
|
|
360
360
|
}] : [],
|
|
361
361
|
{
|
|
362
362
|
label: m("devportal.deactivate", "Deactivate"),
|
|
363
|
-
icon: /* @__PURE__ */
|
|
363
|
+
icon: /* @__PURE__ */ U(Oe, { size: 16 }),
|
|
364
364
|
intent: "destructive",
|
|
365
365
|
disabled: !y,
|
|
366
366
|
onSelect: () => ie(!0)
|
|
367
367
|
}
|
|
368
368
|
];
|
|
369
|
-
return /* @__PURE__ */
|
|
369
|
+
return /* @__PURE__ */ W(x, {
|
|
370
370
|
title: K.name,
|
|
371
371
|
description: K.shortDescription,
|
|
372
372
|
purpose: m("devportal.appDetailPurpose", "Everything about this application in one place — its credentials, the permissions and webhooks it uses, its analytics, and its store listing. Use the tabs to configure each area, then edit or publish when it is ready."),
|
|
373
373
|
backLink: `${o}/apps`,
|
|
374
374
|
backLabel: m("devportal.backToApplications", "Back to Applications"),
|
|
375
|
-
actions: /* @__PURE__ */
|
|
375
|
+
actions: /* @__PURE__ */ W("div", {
|
|
376
376
|
className: "flex items-center gap-2",
|
|
377
|
-
children: [K.status === "SUBMITTED" ? /* @__PURE__ */
|
|
377
|
+
children: [K.status === "SUBMITTED" ? /* @__PURE__ */ W("div", {
|
|
378
378
|
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",
|
|
379
|
-
children: [/* @__PURE__ */
|
|
380
|
-
}) : K.status !== "PUBLISHED" && K.status !== "INACTIVE" && K.status !== "REVOKED" ? /* @__PURE__ */
|
|
379
|
+
children: [/* @__PURE__ */ U(_e, { size: 13 }), m("devportal.underReview", "Under Review")]
|
|
380
|
+
}) : K.status !== "PUBLISHED" && K.status !== "INACTIVE" && K.status !== "REVOKED" ? /* @__PURE__ */ U("button", {
|
|
381
381
|
type: "button",
|
|
382
382
|
onClick: () => void Ye(),
|
|
383
383
|
disabled: !$ || we,
|
|
@@ -391,62 +391,62 @@ var Ke = [
|
|
|
391
391
|
Y && !X && "Link a billing account to receive payments"
|
|
392
392
|
].filter(Boolean).join(" · "),
|
|
393
393
|
className: t("inline-flex items-center gap-2 rounded-md px-5 py-2 text-sm font-medium whitespace-nowrap transition-colors", $ && !we ? "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"),
|
|
394
|
-
children: we ? /* @__PURE__ */
|
|
394
|
+
children: we ? /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(R, {
|
|
395
395
|
size: 15,
|
|
396
396
|
className: "animate-spin"
|
|
397
|
-
}), m("devportal.submitting", "Submitting…")] }) : /* @__PURE__ */
|
|
398
|
-
}) : null, /* @__PURE__ */
|
|
397
|
+
}), m("devportal.submitting", "Submitting…")] }) : /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(Ae, { size: 15 }), m("devportal.submitForReview", "Submit for Review")] })
|
|
398
|
+
}) : null, /* @__PURE__ */ U(ze, {
|
|
399
399
|
primary: {
|
|
400
400
|
label: m("devportal.editApp", "Edit App"),
|
|
401
|
-
icon: /* @__PURE__ */
|
|
401
|
+
icon: /* @__PURE__ */ U(ye, { size: 16 }),
|
|
402
402
|
disabled: !g,
|
|
403
|
-
onSelect: () =>
|
|
403
|
+
onSelect: () => V(`/apps/${K.id}/edit`)
|
|
404
404
|
},
|
|
405
405
|
actions: gt
|
|
406
406
|
})]
|
|
407
407
|
}),
|
|
408
408
|
children: [
|
|
409
|
-
se && /* @__PURE__ */
|
|
409
|
+
se && /* @__PURE__ */ U(ee, {
|
|
410
410
|
title: m("devportal.newAppSecretGenerated", "New App Secret Generated"),
|
|
411
411
|
secret: se,
|
|
412
412
|
description: m("devportal.appSecretRotatedDescription", "Your app secret has been rotated. The old secret is no longer valid."),
|
|
413
413
|
onDismiss: () => ue(null)
|
|
414
414
|
}),
|
|
415
|
-
/* @__PURE__ */
|
|
415
|
+
/* @__PURE__ */ W("div", {
|
|
416
416
|
className: "flex flex-wrap items-center gap-2",
|
|
417
417
|
children: [
|
|
418
|
-
/* @__PURE__ */
|
|
418
|
+
/* @__PURE__ */ U(T, {
|
|
419
419
|
status: K.status,
|
|
420
420
|
type: "app"
|
|
421
421
|
}),
|
|
422
|
-
/* @__PURE__ */
|
|
422
|
+
/* @__PURE__ */ U("span", {
|
|
423
423
|
title: K.visibility === "PUBLIC" ? "Public — discoverable in the marketplace. Requires review approval before going live." : K.visibility === "UNLISTED" ? "Unlisted — not in the store, but accessible via a direct share link. You can still submit for marketplace review." : K.visibility === "INTERNAL" ? "Internal — visible to all members of your developer organization, but not to anyone outside." : "Private — only you (the creator) can see this. Other org members cannot access it.",
|
|
424
|
-
children: /* @__PURE__ */
|
|
424
|
+
children: /* @__PURE__ */ U(T, {
|
|
425
425
|
status: K.visibility,
|
|
426
426
|
type: "app"
|
|
427
427
|
})
|
|
428
428
|
}),
|
|
429
|
-
K.isVerified && /* @__PURE__ */
|
|
430
|
-
K.isFeatured && /* @__PURE__ */
|
|
431
|
-
/* @__PURE__ */
|
|
429
|
+
K.isVerified && /* @__PURE__ */ U(E, { verified: !0 }),
|
|
430
|
+
K.isFeatured && /* @__PURE__ */ U(w, {}),
|
|
431
|
+
/* @__PURE__ */ U("span", {
|
|
432
432
|
className: "text-sm text-text-secondary",
|
|
433
433
|
children: C[K.appType] || K.appType
|
|
434
434
|
})
|
|
435
435
|
]
|
|
436
436
|
}),
|
|
437
|
-
K.status === "SUBMITTED" && /* @__PURE__ */
|
|
437
|
+
K.status === "SUBMITTED" && /* @__PURE__ */ W("div", {
|
|
438
438
|
className: "flex items-start gap-3 rounded-lg border border-border-subtle bg-status-warning-bg-subtle p-4",
|
|
439
|
-
children: [/* @__PURE__ */
|
|
439
|
+
children: [/* @__PURE__ */ U(_e, {
|
|
440
440
|
size: 18,
|
|
441
441
|
className: "text-status-warning-text mt-0.5 flex-shrink-0"
|
|
442
|
-
}), /* @__PURE__ */
|
|
442
|
+
}), /* @__PURE__ */ W("div", {
|
|
443
443
|
className: "text-sm",
|
|
444
|
-
children: [/* @__PURE__ */
|
|
444
|
+
children: [/* @__PURE__ */ U("p", {
|
|
445
445
|
className: "font-medium text-status-warning-text",
|
|
446
446
|
children: m("devportal.underReview", "Under Review")
|
|
447
|
-
}), /* @__PURE__ */
|
|
447
|
+
}), /* @__PURE__ */ W("p", {
|
|
448
448
|
className: "mt-0.5 text-text-secondary",
|
|
449
|
-
children: [m("devportal.underReviewDesc", "Your submission is being reviewed by our team. You'll be notified of the outcome."), K.submittedAt && /* @__PURE__ */
|
|
449
|
+
children: [m("devportal.underReviewDesc", "Your submission is being reviewed by our team. You'll be notified of the outcome."), K.submittedAt && /* @__PURE__ */ W("span", {
|
|
450
450
|
className: "ml-1",
|
|
451
451
|
children: [
|
|
452
452
|
"Submitted ",
|
|
@@ -457,64 +457,64 @@ var Ke = [
|
|
|
457
457
|
})]
|
|
458
458
|
})]
|
|
459
459
|
}),
|
|
460
|
-
K.status === "REJECTED" && /* @__PURE__ */
|
|
460
|
+
K.status === "REJECTED" && /* @__PURE__ */ W("div", {
|
|
461
461
|
className: "flex items-start gap-3 rounded-lg border border-status-error-bg bg-status-error-bg-subtle p-4",
|
|
462
|
-
children: [/* @__PURE__ */
|
|
462
|
+
children: [/* @__PURE__ */ U(Le, {
|
|
463
463
|
size: 18,
|
|
464
464
|
className: "text-status-error-text mt-0.5 flex-shrink-0"
|
|
465
|
-
}), /* @__PURE__ */
|
|
465
|
+
}), /* @__PURE__ */ W("div", {
|
|
466
466
|
className: "text-sm",
|
|
467
467
|
children: [
|
|
468
|
-
/* @__PURE__ */
|
|
468
|
+
/* @__PURE__ */ U("p", {
|
|
469
469
|
className: "font-medium text-status-error-text",
|
|
470
470
|
children: m("devportal.reviewRejected", "Review Rejected")
|
|
471
471
|
}),
|
|
472
|
-
/* @__PURE__ */
|
|
472
|
+
/* @__PURE__ */ U("p", {
|
|
473
473
|
className: "mt-0.5 text-text-secondary",
|
|
474
474
|
children: K.reviewNotes || m("devportal.reviewRejectedDesc", "Your submission was not approved. Please review the feedback, update your app, and re-submit.")
|
|
475
475
|
}),
|
|
476
|
-
/* @__PURE__ */
|
|
476
|
+
/* @__PURE__ */ U("button", {
|
|
477
477
|
type: "button",
|
|
478
|
-
onClick: () =>
|
|
478
|
+
onClick: () => V(`/apps/${K.id}/edit`),
|
|
479
479
|
className: "mt-2 inline-flex items-center gap-1 text-xs font-medium text-primary underline",
|
|
480
480
|
children: m("devportal.editAndResubmit", "Edit app and re-submit →")
|
|
481
481
|
})
|
|
482
482
|
]
|
|
483
483
|
})]
|
|
484
484
|
}),
|
|
485
|
-
K.status === "PUBLISHED" && /* @__PURE__ */
|
|
485
|
+
K.status === "PUBLISHED" && /* @__PURE__ */ W("div", {
|
|
486
486
|
className: "flex items-start gap-3 rounded-lg border border-status-success-bg bg-status-success-bg-subtle p-4",
|
|
487
|
-
children: [/* @__PURE__ */
|
|
487
|
+
children: [/* @__PURE__ */ U(he, {
|
|
488
488
|
size: 18,
|
|
489
489
|
className: "text-status-success-text mt-0.5 flex-shrink-0"
|
|
490
|
-
}), /* @__PURE__ */
|
|
490
|
+
}), /* @__PURE__ */ W("div", {
|
|
491
491
|
className: "text-sm",
|
|
492
|
-
children: [/* @__PURE__ */
|
|
492
|
+
children: [/* @__PURE__ */ U("p", {
|
|
493
493
|
className: "font-medium text-status-success-text",
|
|
494
494
|
children: m("devportal.liveInStore", "Live in the Store")
|
|
495
|
-
}), /* @__PURE__ */
|
|
495
|
+
}), /* @__PURE__ */ U("p", {
|
|
496
496
|
className: "mt-0.5 text-text-secondary",
|
|
497
497
|
children: m("devportal.liveInStoreDesc", "Your app is published and visible to users in the marketplace.")
|
|
498
498
|
})]
|
|
499
499
|
})]
|
|
500
500
|
}),
|
|
501
|
-
K.status === "UNLISTED" && /* @__PURE__ */
|
|
501
|
+
K.status === "UNLISTED" && /* @__PURE__ */ W("div", {
|
|
502
502
|
className: "flex items-start gap-3 rounded-lg border border-status-warning-bg bg-status-warning-bg-subtle p-4",
|
|
503
|
-
children: [/* @__PURE__ */
|
|
503
|
+
children: [/* @__PURE__ */ U(P, {
|
|
504
504
|
size: 18,
|
|
505
505
|
className: "text-status-warning-text mt-0.5 flex-shrink-0"
|
|
506
|
-
}), /* @__PURE__ */
|
|
506
|
+
}), /* @__PURE__ */ W("div", {
|
|
507
507
|
className: "text-sm",
|
|
508
508
|
children: [
|
|
509
|
-
/* @__PURE__ */
|
|
509
|
+
/* @__PURE__ */ U("p", {
|
|
510
510
|
className: "font-medium text-status-warning-text",
|
|
511
511
|
children: m("devportal.delistedFromStore", "Delisted from the Store")
|
|
512
512
|
}),
|
|
513
|
-
/* @__PURE__ */
|
|
513
|
+
/* @__PURE__ */ U("p", {
|
|
514
514
|
className: "mt-0.5 text-text-secondary",
|
|
515
515
|
children: m("devportal.delistedFromStoreDesc", "Your app has been removed from the marketplace and is no longer visible to new users. Existing installs continue to work.")
|
|
516
516
|
}),
|
|
517
|
-
K.reviewNotes && /* @__PURE__ */
|
|
517
|
+
K.reviewNotes && /* @__PURE__ */ W("p", {
|
|
518
518
|
className: "mt-2 rounded-md bg-status-warning-bg px-3 py-2 font-mono text-xs text-status-warning-text",
|
|
519
519
|
children: [
|
|
520
520
|
m("devportal.delistReason", "Reason"),
|
|
@@ -581,22 +581,22 @@ var Ke = [
|
|
|
581
581
|
onClick: void 0
|
|
582
582
|
}
|
|
583
583
|
], a = i.filter((e) => e.done).length;
|
|
584
|
-
return /* @__PURE__ */
|
|
584
|
+
return /* @__PURE__ */ W("div", {
|
|
585
585
|
className: "rounded-xl border border-border-subtle bg-bg-surface shadow-sm",
|
|
586
|
-
children: [/* @__PURE__ */
|
|
586
|
+
children: [/* @__PURE__ */ U("div", {
|
|
587
587
|
className: "flex items-center justify-between border-b border-border-subtle px-5 py-4",
|
|
588
|
-
children: /* @__PURE__ */
|
|
588
|
+
children: /* @__PURE__ */ W("div", {
|
|
589
589
|
className: "flex items-center gap-3",
|
|
590
|
-
children: [/* @__PURE__ */
|
|
590
|
+
children: [/* @__PURE__ */ U("div", {
|
|
591
591
|
className: "flex h-8 w-8 items-center justify-center rounded-full bg-action-primary-bg/10",
|
|
592
|
-
children: /* @__PURE__ */
|
|
592
|
+
children: /* @__PURE__ */ U(Me, {
|
|
593
593
|
size: 16,
|
|
594
594
|
className: "text-primary"
|
|
595
595
|
})
|
|
596
|
-
}), /* @__PURE__ */
|
|
596
|
+
}), /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
|
|
597
597
|
className: "text-sm font-semibold text-text-primary",
|
|
598
598
|
children: m("devportal.completeSetup", "Complete your app setup")
|
|
599
|
-
}), /* @__PURE__ */
|
|
599
|
+
}), /* @__PURE__ */ W("p", {
|
|
600
600
|
className: "text-xs text-text-secondary",
|
|
601
601
|
children: [
|
|
602
602
|
a,
|
|
@@ -608,29 +608,29 @@ var Ke = [
|
|
|
608
608
|
]
|
|
609
609
|
})] })]
|
|
610
610
|
})
|
|
611
|
-
}), /* @__PURE__ */
|
|
611
|
+
}), /* @__PURE__ */ U("div", {
|
|
612
612
|
className: "divide-y divide-border-subtle",
|
|
613
|
-
children: i.map((e, n) => /* @__PURE__ */
|
|
613
|
+
children: i.map((e, n) => /* @__PURE__ */ W("button", {
|
|
614
614
|
type: "button",
|
|
615
615
|
onClick: e.onClick,
|
|
616
616
|
disabled: !e.onClick,
|
|
617
617
|
className: t("w-full flex items-center gap-4 px-5 py-4 text-left transition-colors", e.onClick ? "hover:bg-bg-sunken/40 cursor-pointer" : "cursor-default opacity-60"),
|
|
618
618
|
children: [
|
|
619
|
-
/* @__PURE__ */
|
|
619
|
+
/* @__PURE__ */ U("div", {
|
|
620
620
|
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"),
|
|
621
|
-
children: e.done ? /* @__PURE__ */
|
|
621
|
+
children: e.done ? /* @__PURE__ */ U(F, { size: 13 }) : n + 1
|
|
622
622
|
}),
|
|
623
|
-
/* @__PURE__ */
|
|
623
|
+
/* @__PURE__ */ W("div", {
|
|
624
624
|
className: "flex-1 min-w-0",
|
|
625
|
-
children: [/* @__PURE__ */
|
|
625
|
+
children: [/* @__PURE__ */ U("p", {
|
|
626
626
|
className: t("text-sm font-medium", e.done ? "text-text-secondary line-through" : "text-text-primary"),
|
|
627
627
|
children: e.label
|
|
628
|
-
}), e.hint && !e.done && /* @__PURE__ */
|
|
628
|
+
}), e.hint && !e.done && /* @__PURE__ */ U("p", {
|
|
629
629
|
className: "mt-0.5 text-xs text-text-secondary truncate",
|
|
630
630
|
children: e.hint
|
|
631
631
|
})]
|
|
632
632
|
}),
|
|
633
|
-
e.onClick && !e.done && /* @__PURE__ */
|
|
633
|
+
e.onClick && !e.done && /* @__PURE__ */ U(ge, {
|
|
634
634
|
size: 16,
|
|
635
635
|
className: "flex-shrink-0 text-text-secondary"
|
|
636
636
|
})
|
|
@@ -639,89 +639,89 @@ var Ke = [
|
|
|
639
639
|
})]
|
|
640
640
|
});
|
|
641
641
|
})(),
|
|
642
|
-
/* @__PURE__ */
|
|
642
|
+
/* @__PURE__ */ U("div", {
|
|
643
643
|
className: "border-b",
|
|
644
|
-
children: /* @__PURE__ */
|
|
644
|
+
children: /* @__PURE__ */ U("nav", {
|
|
645
645
|
className: "-mb-px flex gap-4 overflow-x-auto",
|
|
646
646
|
role: "tablist",
|
|
647
647
|
"aria-label": m("devportal.applicationSections", "Application sections"),
|
|
648
648
|
children: Ke.filter((e) => !(q && (e.id === "permissions" || e.id === "webhooks" || e.id === "delegations" || e.id === "playground" || e.id === "oauth" || e.id === "api-keys") || !q && !J && e.id === "versions" || !J && (e.id === "oauth" || e.id === "api-keys"))).map((e) => {
|
|
649
649
|
let n = e.icon;
|
|
650
|
-
return /* @__PURE__ */
|
|
650
|
+
return /* @__PURE__ */ W("button", {
|
|
651
651
|
id: `application-tab-${e.id}`,
|
|
652
652
|
role: "tab",
|
|
653
653
|
"aria-selected": S === e.id,
|
|
654
654
|
"aria-controls": `application-panel-${e.id}`,
|
|
655
655
|
onClick: () => D(e.id),
|
|
656
656
|
className: t("flex items-center gap-2 border-b-2 px-1 py-3 text-sm font-medium transition-colors", S === e.id ? "border-primary text-primary" : "border-transparent text-text-secondary hover:text-text-primary hover:border-muted-foreground"),
|
|
657
|
-
children: [/* @__PURE__ */
|
|
657
|
+
children: [/* @__PURE__ */ U(n, { size: 16 }), e.label]
|
|
658
658
|
}, e.id);
|
|
659
659
|
})
|
|
660
660
|
})
|
|
661
661
|
}),
|
|
662
|
-
/* @__PURE__ */
|
|
662
|
+
/* @__PURE__ */ W("div", {
|
|
663
663
|
className: "mt-6",
|
|
664
664
|
id: `application-panel-${S}`,
|
|
665
665
|
role: "tabpanel",
|
|
666
666
|
"aria-labelledby": `application-tab-${S}`,
|
|
667
667
|
tabIndex: 0,
|
|
668
668
|
children: [
|
|
669
|
-
S === "overview" && /* @__PURE__ */
|
|
669
|
+
S === "overview" && /* @__PURE__ */ U(it, {
|
|
670
670
|
app: K,
|
|
671
671
|
appId: b,
|
|
672
|
-
refetch: () => void
|
|
672
|
+
refetch: () => void I()
|
|
673
673
|
}),
|
|
674
|
-
S === "permissions" && /* @__PURE__ */
|
|
674
|
+
S === "permissions" && /* @__PURE__ */ U(xt, {
|
|
675
675
|
app: K,
|
|
676
676
|
versionScopes: M?.application?.versions?.edges?.[0]?.node?.requiredScopes ?? [],
|
|
677
677
|
locked: K.status === "PUBLISHED" || K.status === "APPROVED" || K.status === "ACTIVE",
|
|
678
678
|
onNavigateToVersions: () => D("versions")
|
|
679
679
|
}),
|
|
680
|
-
S === "webhooks" && /* @__PURE__ */
|
|
680
|
+
S === "webhooks" && /* @__PURE__ */ U(tt, {
|
|
681
681
|
appId: K.id,
|
|
682
|
-
onNavigate:
|
|
682
|
+
onNavigate: V
|
|
683
683
|
}),
|
|
684
|
-
S === "delegations" && /* @__PURE__ */
|
|
684
|
+
S === "delegations" && /* @__PURE__ */ U(nt, {
|
|
685
685
|
authAppId: K.appId || void 0,
|
|
686
686
|
appName: K.name,
|
|
687
687
|
onGrantDelegation: () => j(!0),
|
|
688
|
-
onNavigate:
|
|
688
|
+
onNavigate: V
|
|
689
689
|
}),
|
|
690
|
-
S === "analytics" && /* @__PURE__ */
|
|
691
|
-
S === "playground" && /* @__PURE__ */
|
|
692
|
-
S === "oauth" && /* @__PURE__ */
|
|
690
|
+
S === "analytics" && /* @__PURE__ */ U(rt, { appId: K.id }),
|
|
691
|
+
S === "playground" && /* @__PURE__ */ U(lt, { app: K }),
|
|
692
|
+
S === "oauth" && /* @__PURE__ */ U(Xe, {
|
|
693
693
|
appId: K.id,
|
|
694
|
-
onNavigate:
|
|
694
|
+
onNavigate: V
|
|
695
695
|
}),
|
|
696
|
-
S === "api-keys" && /* @__PURE__ */
|
|
696
|
+
S === "api-keys" && /* @__PURE__ */ U(Ze, {
|
|
697
697
|
appId: K.id,
|
|
698
|
-
onNavigate:
|
|
698
|
+
onNavigate: V
|
|
699
699
|
}),
|
|
700
|
-
S === "store-listing" && /* @__PURE__ */
|
|
700
|
+
S === "store-listing" && /* @__PURE__ */ U(ht, {
|
|
701
701
|
app: K,
|
|
702
702
|
versionCount: M?.application?.versions?.totalCount ?? 0,
|
|
703
703
|
isPackageApp: q,
|
|
704
704
|
pricingDone: Z,
|
|
705
705
|
onNavigateToVersions: q || J ? () => D("versions") : void 0,
|
|
706
706
|
onNavigateToPricing: () => D("pricing"),
|
|
707
|
-
onNavigateToSubmission: () =>
|
|
707
|
+
onNavigateToSubmission: () => V(`/apps/${K.id}/store-submission`)
|
|
708
708
|
}),
|
|
709
|
-
S === "pricing" && /* @__PURE__ */
|
|
709
|
+
S === "pricing" && /* @__PURE__ */ U($e, {
|
|
710
710
|
app: K,
|
|
711
711
|
platformFeeRate: pt,
|
|
712
712
|
billingAccountLinked: X,
|
|
713
|
-
onNavigateToRevenue: () =>
|
|
713
|
+
onNavigateToRevenue: () => V("/revenue"),
|
|
714
714
|
isReadyToSubmit: Q
|
|
715
715
|
}),
|
|
716
|
-
S === "versions" && /* @__PURE__ */
|
|
716
|
+
S === "versions" && /* @__PURE__ */ U(et, {
|
|
717
717
|
appId: K.id,
|
|
718
|
-
onNavigate:
|
|
718
|
+
onNavigate: V,
|
|
719
719
|
pricingDone: Z,
|
|
720
720
|
onNavigateToPricing: () => D("pricing")
|
|
721
721
|
})
|
|
722
722
|
]
|
|
723
723
|
}),
|
|
724
|
-
/* @__PURE__ */
|
|
724
|
+
/* @__PURE__ */ U(ae, {
|
|
725
725
|
open: te,
|
|
726
726
|
onOpenChange: ne,
|
|
727
727
|
onConfirm: Ie,
|
|
@@ -730,9 +730,9 @@ var Ke = [
|
|
|
730
730
|
confirmLabel: m("devportal.rotateSecret", "Rotate Secret"),
|
|
731
731
|
cancelLabel: m("devportal.cancel", "Cancel"),
|
|
732
732
|
variant: "warning",
|
|
733
|
-
loading:
|
|
733
|
+
loading: L
|
|
734
734
|
}),
|
|
735
|
-
/* @__PURE__ */
|
|
735
|
+
/* @__PURE__ */ U(ae, {
|
|
736
736
|
open: k,
|
|
737
737
|
onOpenChange: ie,
|
|
738
738
|
onConfirm: Be,
|
|
@@ -743,7 +743,7 @@ var Ke = [
|
|
|
743
743
|
variant: "destructive",
|
|
744
744
|
loading: Se
|
|
745
745
|
}),
|
|
746
|
-
/* @__PURE__ */
|
|
746
|
+
/* @__PURE__ */ U(ae, {
|
|
747
747
|
open: Ue,
|
|
748
748
|
onOpenChange: We,
|
|
749
749
|
onConfirm: () => Ve(Ge || void 0),
|
|
@@ -752,7 +752,7 @@ var Ke = [
|
|
|
752
752
|
confirmLabel: m("devportal.testInWorkspace", "Test in Workspace"),
|
|
753
753
|
cancelLabel: m("devportal.cancel", "Cancel"),
|
|
754
754
|
loading: De,
|
|
755
|
-
children: /* @__PURE__ */
|
|
755
|
+
children: /* @__PURE__ */ U(re, {
|
|
756
756
|
label: m("devportal.version", "Version"),
|
|
757
757
|
value: Ge,
|
|
758
758
|
onChange: (e) => qe(e.target.value),
|
|
@@ -762,7 +762,7 @@ var Ke = [
|
|
|
762
762
|
}))
|
|
763
763
|
})
|
|
764
764
|
}),
|
|
765
|
-
/* @__PURE__ */
|
|
765
|
+
/* @__PURE__ */ U(oe, {
|
|
766
766
|
open: de,
|
|
767
767
|
onOpenChange: j,
|
|
768
768
|
appId: K.appId || "",
|
|
@@ -775,55 +775,55 @@ var Ke = [
|
|
|
775
775
|
]
|
|
776
776
|
});
|
|
777
777
|
}, Xe = ({ onNavigate: e }) => {
|
|
778
|
-
let { t } =
|
|
778
|
+
let { t } = G(), n = (e, n) => {
|
|
779
779
|
let r = t(e);
|
|
780
780
|
return r === e ? n : r;
|
|
781
781
|
};
|
|
782
|
-
return /* @__PURE__ */
|
|
782
|
+
return /* @__PURE__ */ W("div", {
|
|
783
783
|
className: "space-y-4 py-4 text-center",
|
|
784
784
|
children: [
|
|
785
|
-
/* @__PURE__ */
|
|
786
|
-
/* @__PURE__ */
|
|
785
|
+
/* @__PURE__ */ U(je, { className: "mx-auto h-10 w-10 text-text-secondary" }),
|
|
786
|
+
/* @__PURE__ */ U("h3", {
|
|
787
787
|
className: "font-medium",
|
|
788
788
|
children: n("devportal.oauthApps", "OAuth Apps")
|
|
789
789
|
}),
|
|
790
|
-
/* @__PURE__ */
|
|
790
|
+
/* @__PURE__ */ U("p", {
|
|
791
791
|
className: "text-sm text-text-secondary",
|
|
792
792
|
children: n("devportal.oauthAppsManagedCentrally", "OAuth apps are now managed centrally. Visit the OAuth Apps page to create and manage your apps.")
|
|
793
793
|
}),
|
|
794
|
-
/* @__PURE__ */
|
|
794
|
+
/* @__PURE__ */ W("button", {
|
|
795
795
|
onClick: () => e("/oauth"),
|
|
796
796
|
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",
|
|
797
|
-
children: [/* @__PURE__ */
|
|
797
|
+
children: [/* @__PURE__ */ U(L, { size: 16 }), n("devportal.manageOAuthApps", "Manage OAuth Apps")]
|
|
798
798
|
})
|
|
799
799
|
]
|
|
800
800
|
});
|
|
801
801
|
}, Ze = ({ onNavigate: e }) => {
|
|
802
|
-
let { t } =
|
|
802
|
+
let { t } = G(), n = (e, n) => {
|
|
803
803
|
let r = t(e);
|
|
804
804
|
return r === e ? n : r;
|
|
805
805
|
};
|
|
806
|
-
return /* @__PURE__ */
|
|
806
|
+
return /* @__PURE__ */ W("div", {
|
|
807
807
|
className: "space-y-4 py-4 text-center",
|
|
808
808
|
children: [
|
|
809
|
-
/* @__PURE__ */
|
|
810
|
-
/* @__PURE__ */
|
|
809
|
+
/* @__PURE__ */ U(Ce, { className: "mx-auto h-10 w-10 text-text-secondary" }),
|
|
810
|
+
/* @__PURE__ */ U("h3", {
|
|
811
811
|
className: "font-medium",
|
|
812
812
|
children: n("devportal.apiKeys", "API Keys")
|
|
813
813
|
}),
|
|
814
|
-
/* @__PURE__ */
|
|
814
|
+
/* @__PURE__ */ U("p", {
|
|
815
815
|
className: "text-sm text-text-secondary",
|
|
816
816
|
children: n("devportal.apiKeysManagedCentrally", "API keys are now managed centrally. Visit the API Keys page to generate and manage your keys.")
|
|
817
817
|
}),
|
|
818
|
-
/* @__PURE__ */
|
|
818
|
+
/* @__PURE__ */ W("button", {
|
|
819
819
|
onClick: () => e("/api-keys"),
|
|
820
820
|
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",
|
|
821
|
-
children: [/* @__PURE__ */
|
|
821
|
+
children: [/* @__PURE__ */ U(L, { size: 16 }), n("devportal.manageApiKeys", "Manage API Keys")]
|
|
822
822
|
})
|
|
823
823
|
]
|
|
824
824
|
});
|
|
825
825
|
}, q = .01, J = (e) => e * q, Qe = (e) => Math.round(e / q), $e = ({ app: e, platformFeeRate: n, billingAccountLinked: r, onNavigateToRevenue: i, isReadyToSubmit: a = !1 }) => {
|
|
826
|
-
let { t: o } =
|
|
826
|
+
let { t: o } = G(), s = (e, t) => {
|
|
827
827
|
let n = o(e);
|
|
828
828
|
return n === e ? t : n;
|
|
829
829
|
}, c = e.pricingDetails ?? {}, [l, u] = N({
|
|
@@ -866,25 +866,25 @@ var Ke = [
|
|
|
866
866
|
minimumFractionDigits: 2,
|
|
867
867
|
maximumFractionDigits: 2
|
|
868
868
|
}), D = (e) => e.toLocaleString("en-US") + " cr";
|
|
869
|
-
return /* @__PURE__ */
|
|
869
|
+
return /* @__PURE__ */ W("div", {
|
|
870
870
|
className: "space-y-8",
|
|
871
871
|
children: [
|
|
872
|
-
/* @__PURE__ */
|
|
872
|
+
/* @__PURE__ */ W("div", {
|
|
873
873
|
className: "flex items-start gap-3 rounded-lg border border-border-subtle bg-bg-sunken px-4 py-3",
|
|
874
|
-
children: [/* @__PURE__ */
|
|
874
|
+
children: [/* @__PURE__ */ U(I, {
|
|
875
875
|
size: 16,
|
|
876
876
|
className: "mt-0.5 shrink-0 text-primary"
|
|
877
|
-
}), /* @__PURE__ */
|
|
877
|
+
}), /* @__PURE__ */ W("p", {
|
|
878
878
|
className: "text-sm text-text-secondary",
|
|
879
879
|
children: [
|
|
880
|
-
/* @__PURE__ */
|
|
880
|
+
/* @__PURE__ */ U("span", {
|
|
881
881
|
className: "font-medium text-text-primary",
|
|
882
882
|
children: "Platform credits"
|
|
883
883
|
}),
|
|
884
884
|
" ",
|
|
885
885
|
"are the currency of the Burdenoff marketplace.",
|
|
886
886
|
" ",
|
|
887
|
-
/* @__PURE__ */
|
|
887
|
+
/* @__PURE__ */ W("span", {
|
|
888
888
|
className: "font-medium",
|
|
889
889
|
children: [
|
|
890
890
|
"1 credit = ",
|
|
@@ -897,41 +897,41 @@ var Ke = [
|
|
|
897
897
|
]
|
|
898
898
|
})]
|
|
899
899
|
}),
|
|
900
|
-
/* @__PURE__ */
|
|
900
|
+
/* @__PURE__ */ W("div", {
|
|
901
901
|
className: "space-y-3",
|
|
902
|
-
children: [/* @__PURE__ */
|
|
902
|
+
children: [/* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("h2", {
|
|
903
903
|
className: "text-lg font-semibold",
|
|
904
904
|
children: s("devportal.howMonetizationWorks", "How App Monetization Works")
|
|
905
|
-
}), /* @__PURE__ */
|
|
905
|
+
}), /* @__PURE__ */ U("p", {
|
|
906
906
|
className: "mt-1 text-sm text-text-secondary",
|
|
907
907
|
children: s("devportal.monetizationDesc", "Earn revenue when users install or purchase your app. Here's exactly how the money flows.")
|
|
908
|
-
})] }), /* @__PURE__ */
|
|
908
|
+
})] }), /* @__PURE__ */ W("div", {
|
|
909
909
|
className: "grid gap-4 sm:grid-cols-3",
|
|
910
910
|
children: [
|
|
911
|
-
/* @__PURE__ */
|
|
911
|
+
/* @__PURE__ */ W("div", {
|
|
912
912
|
className: "rounded-xl border border-border-subtle bg-bg-surface p-5 space-y-3",
|
|
913
|
-
children: [/* @__PURE__ */
|
|
913
|
+
children: [/* @__PURE__ */ U("div", {
|
|
914
914
|
className: "flex h-9 w-9 items-center justify-center rounded-lg bg-status-success-bg-subtle",
|
|
915
|
-
children: /* @__PURE__ */
|
|
915
|
+
children: /* @__PURE__ */ U(Ne, {
|
|
916
916
|
size: 18,
|
|
917
917
|
className: "text-status-success-text"
|
|
918
918
|
})
|
|
919
|
-
}), /* @__PURE__ */
|
|
919
|
+
}), /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ W("p", {
|
|
920
920
|
className: "font-semibold",
|
|
921
921
|
children: [(100 - n * 100).toFixed(0), "% revenue share"]
|
|
922
|
-
}), /* @__PURE__ */
|
|
922
|
+
}), /* @__PURE__ */ W("p", {
|
|
923
923
|
className: "mt-1 text-sm text-text-secondary",
|
|
924
924
|
children: [
|
|
925
925
|
"You keep",
|
|
926
926
|
" ",
|
|
927
|
-
/* @__PURE__ */
|
|
927
|
+
/* @__PURE__ */ W("span", {
|
|
928
928
|
className: "font-medium text-status-success-text",
|
|
929
929
|
children: [(100 - n * 100).toFixed(0), "%"]
|
|
930
930
|
}),
|
|
931
931
|
" ",
|
|
932
932
|
"of every sale in credits. The platform retains a",
|
|
933
933
|
" ",
|
|
934
|
-
/* @__PURE__ */
|
|
934
|
+
/* @__PURE__ */ W("span", {
|
|
935
935
|
className: "font-medium",
|
|
936
936
|
children: [(n * 100).toFixed(0), "%"]
|
|
937
937
|
}),
|
|
@@ -940,28 +940,28 @@ var Ke = [
|
|
|
940
940
|
]
|
|
941
941
|
})] })]
|
|
942
942
|
}),
|
|
943
|
-
/* @__PURE__ */
|
|
943
|
+
/* @__PURE__ */ W("div", {
|
|
944
944
|
className: "rounded-xl border border-border-subtle bg-bg-surface p-5 space-y-3",
|
|
945
|
-
children: [/* @__PURE__ */
|
|
945
|
+
children: [/* @__PURE__ */ U("div", {
|
|
946
946
|
className: "flex h-9 w-9 items-center justify-center rounded-lg bg-action-primary-bg/10",
|
|
947
|
-
children: /* @__PURE__ */
|
|
947
|
+
children: /* @__PURE__ */ U(Fe, {
|
|
948
948
|
size: 18,
|
|
949
949
|
className: "text-primary"
|
|
950
950
|
})
|
|
951
|
-
}), /* @__PURE__ */
|
|
951
|
+
}), /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
|
|
952
952
|
className: "font-semibold",
|
|
953
953
|
children: "Credits → cash via billing"
|
|
954
|
-
}), /* @__PURE__ */
|
|
954
|
+
}), /* @__PURE__ */ W("p", {
|
|
955
955
|
className: "mt-1 text-sm text-text-secondary",
|
|
956
956
|
children: [
|
|
957
957
|
"Every sale instantly deposits your earned credits into your linked billing account. You can spend them on platform services or request a cash withdrawal. Track everything on the",
|
|
958
958
|
" ",
|
|
959
|
-
i ? /* @__PURE__ */
|
|
959
|
+
i ? /* @__PURE__ */ U("button", {
|
|
960
960
|
type: "button",
|
|
961
961
|
onClick: i,
|
|
962
962
|
className: "font-medium text-primary underline-offset-2 hover:underline",
|
|
963
963
|
children: "Revenue page"
|
|
964
|
-
}) : /* @__PURE__ */
|
|
964
|
+
}) : /* @__PURE__ */ U("span", {
|
|
965
965
|
className: "font-medium text-primary",
|
|
966
966
|
children: "Revenue page"
|
|
967
967
|
}),
|
|
@@ -969,18 +969,18 @@ var Ke = [
|
|
|
969
969
|
]
|
|
970
970
|
})] })]
|
|
971
971
|
}),
|
|
972
|
-
/* @__PURE__ */
|
|
972
|
+
/* @__PURE__ */ W("div", {
|
|
973
973
|
className: "rounded-xl border border-border-subtle bg-bg-surface p-5 space-y-3",
|
|
974
|
-
children: [/* @__PURE__ */
|
|
974
|
+
children: [/* @__PURE__ */ U("div", {
|
|
975
975
|
className: "flex h-9 w-9 items-center justify-center rounded-lg bg-status-warning-bg-subtle",
|
|
976
|
-
children: /* @__PURE__ */
|
|
976
|
+
children: /* @__PURE__ */ U(xe, {
|
|
977
977
|
size: 18,
|
|
978
978
|
className: "text-status-warning-text"
|
|
979
979
|
})
|
|
980
|
-
}), /* @__PURE__ */
|
|
980
|
+
}), /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
|
|
981
981
|
className: "font-semibold",
|
|
982
982
|
children: "Reach the full marketplace"
|
|
983
|
-
}), /* @__PURE__ */
|
|
983
|
+
}), /* @__PURE__ */ U("p", {
|
|
984
984
|
className: "mt-1 text-sm text-text-secondary",
|
|
985
985
|
children: "Any user with platform credits can discover and install your app directly from the marketplace. Free apps maximise reach; paid apps let you monetise your work."
|
|
986
986
|
})] })]
|
|
@@ -988,52 +988,52 @@ var Ke = [
|
|
|
988
988
|
]
|
|
989
989
|
})]
|
|
990
990
|
}),
|
|
991
|
-
/* @__PURE__ */
|
|
991
|
+
/* @__PURE__ */ W("div", {
|
|
992
992
|
className: "space-y-4",
|
|
993
993
|
children: [
|
|
994
|
-
/* @__PURE__ */
|
|
994
|
+
/* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("h3", {
|
|
995
995
|
className: "text-base font-semibold",
|
|
996
996
|
children: s("devportal.setPricingTitle", "Set Your Price")
|
|
997
|
-
}), /* @__PURE__ */
|
|
997
|
+
}), /* @__PURE__ */ W("p", {
|
|
998
998
|
className: "mt-0.5 text-sm text-text-secondary",
|
|
999
999
|
children: [
|
|
1000
1000
|
"Choose ",
|
|
1001
|
-
/* @__PURE__ */
|
|
1001
|
+
/* @__PURE__ */ U("strong", { children: "Free" }),
|
|
1002
1002
|
" to maximise installs, or",
|
|
1003
1003
|
" ",
|
|
1004
|
-
/* @__PURE__ */
|
|
1004
|
+
/* @__PURE__ */ U("strong", { children: "Paid" }),
|
|
1005
1005
|
" to earn credits on every install. Paid apps require a linked billing account before publishing."
|
|
1006
1006
|
]
|
|
1007
1007
|
})] }),
|
|
1008
|
-
/* @__PURE__ */
|
|
1008
|
+
/* @__PURE__ */ U("div", {
|
|
1009
1009
|
className: "flex flex-wrap gap-2",
|
|
1010
|
-
children: ft.map((e) => /* @__PURE__ */
|
|
1010
|
+
children: ft.map((e) => /* @__PURE__ */ U("button", {
|
|
1011
1011
|
type: "button",
|
|
1012
1012
|
onClick: () => h("pricingType", e.value),
|
|
1013
1013
|
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"),
|
|
1014
1014
|
children: e.label
|
|
1015
1015
|
}, e.value))
|
|
1016
1016
|
}),
|
|
1017
|
-
_ && /* @__PURE__ */
|
|
1017
|
+
_ && /* @__PURE__ */ W("div", {
|
|
1018
1018
|
className: "space-y-4",
|
|
1019
1019
|
children: [
|
|
1020
|
-
/* @__PURE__ */
|
|
1020
|
+
/* @__PURE__ */ W("div", {
|
|
1021
1021
|
className: "max-w-xs",
|
|
1022
1022
|
children: [
|
|
1023
|
-
/* @__PURE__ */
|
|
1023
|
+
/* @__PURE__ */ W("label", {
|
|
1024
1024
|
className: "mb-1.5 block text-sm font-medium",
|
|
1025
1025
|
children: [
|
|
1026
1026
|
"Listing price",
|
|
1027
1027
|
" ",
|
|
1028
|
-
/* @__PURE__ */
|
|
1028
|
+
/* @__PURE__ */ U("span", {
|
|
1029
1029
|
className: "text-text-tertiary font-normal",
|
|
1030
1030
|
children: "(credits)"
|
|
1031
1031
|
})
|
|
1032
1032
|
]
|
|
1033
1033
|
}),
|
|
1034
|
-
/* @__PURE__ */
|
|
1034
|
+
/* @__PURE__ */ W("div", {
|
|
1035
1035
|
className: "relative flex items-center",
|
|
1036
|
-
children: [/* @__PURE__ */
|
|
1036
|
+
children: [/* @__PURE__ */ U("input", {
|
|
1037
1037
|
type: "number",
|
|
1038
1038
|
min: 1,
|
|
1039
1039
|
step: 1,
|
|
@@ -1041,12 +1041,12 @@ var Ke = [
|
|
|
1041
1041
|
onChange: (e) => h("price", e.target.value),
|
|
1042
1042
|
placeholder: "e.g. 1000",
|
|
1043
1043
|
className: "w-full rounded-md border border-border-subtle bg-bg-input px-3 py-2 pr-20 text-sm focus:outline-none focus:ring-2 focus:ring-primary/50"
|
|
1044
|
-
}), /* @__PURE__ */
|
|
1044
|
+
}), /* @__PURE__ */ U("span", {
|
|
1045
1045
|
className: "pointer-events-none absolute right-3 text-xs text-text-tertiary",
|
|
1046
1046
|
children: "credits"
|
|
1047
1047
|
})]
|
|
1048
1048
|
}),
|
|
1049
|
-
y && /* @__PURE__ */
|
|
1049
|
+
y && /* @__PURE__ */ W("p", {
|
|
1050
1050
|
className: "mt-1.5 text-xs text-text-secondary",
|
|
1051
1051
|
children: [
|
|
1052
1052
|
"≈ ",
|
|
@@ -1057,20 +1057,20 @@ var Ke = [
|
|
|
1057
1057
|
")"
|
|
1058
1058
|
]
|
|
1059
1059
|
}),
|
|
1060
|
-
/* @__PURE__ */
|
|
1060
|
+
/* @__PURE__ */ U("p", {
|
|
1061
1061
|
className: "mt-1 text-xs text-text-tertiary",
|
|
1062
1062
|
children: s("devportal.priceHint", "Set the number of credits a buyer spends to install your app")
|
|
1063
1063
|
})
|
|
1064
1064
|
]
|
|
1065
1065
|
}),
|
|
1066
|
-
/* @__PURE__ */
|
|
1066
|
+
/* @__PURE__ */ W("div", {
|
|
1067
1067
|
className: "flex items-center gap-2 text-xs text-text-secondary",
|
|
1068
|
-
children: [/* @__PURE__ */
|
|
1068
|
+
children: [/* @__PURE__ */ U("span", { children: "Quick convert:" }), [
|
|
1069
1069
|
5,
|
|
1070
1070
|
10,
|
|
1071
1071
|
25,
|
|
1072
1072
|
50
|
|
1073
|
-
].map((e) => /* @__PURE__ */
|
|
1073
|
+
].map((e) => /* @__PURE__ */ W("button", {
|
|
1074
1074
|
type: "button",
|
|
1075
1075
|
onClick: () => h("price", String(Qe(e))),
|
|
1076
1076
|
className: "rounded border border-border-subtle px-2 py-0.5 hover:bg-bg-sunken transition-colors",
|
|
@@ -1083,27 +1083,27 @@ var Ke = [
|
|
|
1083
1083
|
]
|
|
1084
1084
|
}, e))]
|
|
1085
1085
|
}),
|
|
1086
|
-
y && /* @__PURE__ */
|
|
1086
|
+
y && /* @__PURE__ */ W("div", {
|
|
1087
1087
|
className: "rounded-lg border border-border-subtle bg-bg-sunken p-4 space-y-3",
|
|
1088
1088
|
children: [
|
|
1089
|
-
/* @__PURE__ */
|
|
1089
|
+
/* @__PURE__ */ U("p", {
|
|
1090
1090
|
className: "text-xs font-semibold uppercase tracking-wide text-text-secondary",
|
|
1091
1091
|
children: s("devportal.revenueBreakdown", "Revenue Breakdown per Sale")
|
|
1092
1092
|
}),
|
|
1093
|
-
/* @__PURE__ */
|
|
1093
|
+
/* @__PURE__ */ W("div", {
|
|
1094
1094
|
className: "space-y-2 text-sm",
|
|
1095
1095
|
children: [
|
|
1096
|
-
/* @__PURE__ */
|
|
1096
|
+
/* @__PURE__ */ W("div", {
|
|
1097
1097
|
className: "flex items-center justify-between",
|
|
1098
|
-
children: [/* @__PURE__ */
|
|
1098
|
+
children: [/* @__PURE__ */ U("span", {
|
|
1099
1099
|
className: "text-text-secondary",
|
|
1100
1100
|
children: "Buyer pays"
|
|
1101
|
-
}), /* @__PURE__ */
|
|
1101
|
+
}), /* @__PURE__ */ W("span", {
|
|
1102
1102
|
className: "font-medium tabular-nums",
|
|
1103
1103
|
children: [
|
|
1104
1104
|
D(v),
|
|
1105
1105
|
" ",
|
|
1106
|
-
/* @__PURE__ */
|
|
1106
|
+
/* @__PURE__ */ W("span", {
|
|
1107
1107
|
className: "text-text-tertiary text-xs",
|
|
1108
1108
|
children: [
|
|
1109
1109
|
"(",
|
|
@@ -1114,12 +1114,12 @@ var Ke = [
|
|
|
1114
1114
|
]
|
|
1115
1115
|
})]
|
|
1116
1116
|
}),
|
|
1117
|
-
/* @__PURE__ */
|
|
1117
|
+
/* @__PURE__ */ W("div", {
|
|
1118
1118
|
className: "flex items-center justify-between text-status-error-text",
|
|
1119
|
-
children: [/* @__PURE__ */
|
|
1119
|
+
children: [/* @__PURE__ */ W("span", { children: [
|
|
1120
1120
|
"Platform fee",
|
|
1121
1121
|
" ",
|
|
1122
|
-
/* @__PURE__ */
|
|
1122
|
+
/* @__PURE__ */ W("span", {
|
|
1123
1123
|
className: "opacity-70",
|
|
1124
1124
|
children: [
|
|
1125
1125
|
"(",
|
|
@@ -1127,13 +1127,13 @@ var Ke = [
|
|
|
1127
1127
|
"%)"
|
|
1128
1128
|
]
|
|
1129
1129
|
})
|
|
1130
|
-
] }), /* @__PURE__ */
|
|
1130
|
+
] }), /* @__PURE__ */ W("span", {
|
|
1131
1131
|
className: "tabular-nums",
|
|
1132
1132
|
children: [
|
|
1133
1133
|
"− ",
|
|
1134
1134
|
D(S),
|
|
1135
1135
|
" ",
|
|
1136
|
-
/* @__PURE__ */
|
|
1136
|
+
/* @__PURE__ */ W("span", {
|
|
1137
1137
|
className: "text-xs opacity-70",
|
|
1138
1138
|
children: [
|
|
1139
1139
|
"(",
|
|
@@ -1144,14 +1144,14 @@ var Ke = [
|
|
|
1144
1144
|
]
|
|
1145
1145
|
})]
|
|
1146
1146
|
}),
|
|
1147
|
-
/* @__PURE__ */
|
|
1147
|
+
/* @__PURE__ */ W("div", {
|
|
1148
1148
|
className: "flex items-center justify-between border-t border-border-subtle pt-2 font-semibold text-status-success-text",
|
|
1149
|
-
children: [/* @__PURE__ */
|
|
1149
|
+
children: [/* @__PURE__ */ U("span", { children: "You earn" }), /* @__PURE__ */ W("span", {
|
|
1150
1150
|
className: "tabular-nums",
|
|
1151
1151
|
children: [
|
|
1152
1152
|
D(w),
|
|
1153
1153
|
" ",
|
|
1154
|
-
/* @__PURE__ */
|
|
1154
|
+
/* @__PURE__ */ W("span", {
|
|
1155
1155
|
className: "text-sm font-normal",
|
|
1156
1156
|
children: ["≈ ", E(T)]
|
|
1157
1157
|
})
|
|
@@ -1160,29 +1160,29 @@ var Ke = [
|
|
|
1160
1160
|
})
|
|
1161
1161
|
]
|
|
1162
1162
|
}),
|
|
1163
|
-
/* @__PURE__ */
|
|
1163
|
+
/* @__PURE__ */ U("p", {
|
|
1164
1164
|
className: "text-xs text-text-tertiary",
|
|
1165
1165
|
children: "Credits are deposited to your billing account on each sale. Cash withdrawal is subject to platform terms and minimum payout thresholds."
|
|
1166
1166
|
})
|
|
1167
1167
|
]
|
|
1168
1168
|
}),
|
|
1169
|
-
!r && /* @__PURE__ */
|
|
1169
|
+
!r && /* @__PURE__ */ W("div", {
|
|
1170
1170
|
className: "flex items-start gap-3 rounded-lg border border-status-warning-bg bg-status-warning-bg-subtle p-4",
|
|
1171
|
-
children: [/* @__PURE__ */
|
|
1171
|
+
children: [/* @__PURE__ */ U(P, {
|
|
1172
1172
|
size: 16,
|
|
1173
1173
|
className: "mt-0.5 shrink-0 text-status-warning-text"
|
|
1174
|
-
}), /* @__PURE__ */
|
|
1174
|
+
}), /* @__PURE__ */ W("div", {
|
|
1175
1175
|
className: "flex-1 min-w-0",
|
|
1176
1176
|
children: [
|
|
1177
|
-
/* @__PURE__ */
|
|
1177
|
+
/* @__PURE__ */ U("p", {
|
|
1178
1178
|
className: "text-sm font-medium text-status-warning-text",
|
|
1179
1179
|
children: s("devportal.billingAccountRequired", "Billing account required to publish")
|
|
1180
1180
|
}),
|
|
1181
|
-
/* @__PURE__ */
|
|
1181
|
+
/* @__PURE__ */ U("p", {
|
|
1182
1182
|
className: "mt-0.5 text-xs text-text-secondary",
|
|
1183
1183
|
children: "Paid apps must have a billing account linked to your developer organization before you can submit for review. This is where your earned credits and cash withdrawals will be managed."
|
|
1184
1184
|
}),
|
|
1185
|
-
i && /* @__PURE__ */
|
|
1185
|
+
i && /* @__PURE__ */ U("button", {
|
|
1186
1186
|
type: "button",
|
|
1187
1187
|
onClick: i,
|
|
1188
1188
|
className: "mt-2 text-xs font-medium text-primary hover:underline underline-offset-2",
|
|
@@ -1195,23 +1195,23 @@ var Ke = [
|
|
|
1195
1195
|
})
|
|
1196
1196
|
]
|
|
1197
1197
|
}),
|
|
1198
|
-
/* @__PURE__ */
|
|
1198
|
+
/* @__PURE__ */ W("div", {
|
|
1199
1199
|
className: "rounded-xl border border-border-subtle bg-bg-surface p-5 space-y-3",
|
|
1200
|
-
children: [/* @__PURE__ */
|
|
1200
|
+
children: [/* @__PURE__ */ U("h3", {
|
|
1201
1201
|
className: "text-sm font-semibold",
|
|
1202
1202
|
children: s("devportal.termsTitle", "Developer & Marketplace Terms")
|
|
1203
|
-
}), /* @__PURE__ */
|
|
1203
|
+
}), /* @__PURE__ */ W("ul", {
|
|
1204
1204
|
className: "space-y-2 text-sm text-text-secondary",
|
|
1205
1205
|
children: [
|
|
1206
|
-
/* @__PURE__ */
|
|
1206
|
+
/* @__PURE__ */ W("li", {
|
|
1207
1207
|
className: "flex items-start gap-2",
|
|
1208
|
-
children: [/* @__PURE__ */
|
|
1208
|
+
children: [/* @__PURE__ */ U(F, {
|
|
1209
1209
|
size: 14,
|
|
1210
1210
|
className: "mt-0.5 shrink-0 text-status-success-text"
|
|
1211
|
-
}), /* @__PURE__ */
|
|
1211
|
+
}), /* @__PURE__ */ W("span", { children: [
|
|
1212
1212
|
"By publishing to the marketplace you agree to the",
|
|
1213
1213
|
" ",
|
|
1214
|
-
/* @__PURE__ */
|
|
1214
|
+
/* @__PURE__ */ U("a", {
|
|
1215
1215
|
href: "/legal/developer-terms",
|
|
1216
1216
|
target: "_blank",
|
|
1217
1217
|
rel: "noopener noreferrer",
|
|
@@ -1221,29 +1221,29 @@ var Ke = [
|
|
|
1221
1221
|
"."
|
|
1222
1222
|
] })]
|
|
1223
1223
|
}),
|
|
1224
|
-
/* @__PURE__ */
|
|
1224
|
+
/* @__PURE__ */ W("li", {
|
|
1225
1225
|
className: "flex items-start gap-2",
|
|
1226
|
-
children: [/* @__PURE__ */
|
|
1226
|
+
children: [/* @__PURE__ */ U(F, {
|
|
1227
1227
|
size: 14,
|
|
1228
1228
|
className: "mt-0.5 shrink-0 text-status-success-text"
|
|
1229
|
-
}), /* @__PURE__ */
|
|
1229
|
+
}), /* @__PURE__ */ U("span", { children: "All prices are in platform credits. The USD equivalent is indicative only and may vary with the current credit rate." })]
|
|
1230
1230
|
}),
|
|
1231
|
-
/* @__PURE__ */
|
|
1231
|
+
/* @__PURE__ */ W("li", {
|
|
1232
1232
|
className: "flex items-start gap-2",
|
|
1233
|
-
children: [/* @__PURE__ */
|
|
1233
|
+
children: [/* @__PURE__ */ U(F, {
|
|
1234
1234
|
size: 14,
|
|
1235
1235
|
className: "mt-0.5 shrink-0 text-status-success-text"
|
|
1236
|
-
}), /* @__PURE__ */
|
|
1236
|
+
}), /* @__PURE__ */ U("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." })]
|
|
1237
1237
|
}),
|
|
1238
|
-
/* @__PURE__ */
|
|
1238
|
+
/* @__PURE__ */ W("li", {
|
|
1239
1239
|
className: "flex items-start gap-2",
|
|
1240
|
-
children: [/* @__PURE__ */
|
|
1240
|
+
children: [/* @__PURE__ */ U(F, {
|
|
1241
1241
|
size: 14,
|
|
1242
1242
|
className: "mt-0.5 shrink-0 text-status-success-text"
|
|
1243
|
-
}), /* @__PURE__ */
|
|
1243
|
+
}), /* @__PURE__ */ W("span", { children: [
|
|
1244
1244
|
"The platform reserves the right to adjust the credit rate, fee structure, or payout schedule with 30 days notice. See the",
|
|
1245
1245
|
" ",
|
|
1246
|
-
/* @__PURE__ */
|
|
1246
|
+
/* @__PURE__ */ U("a", {
|
|
1247
1247
|
href: "/legal/marketplace-terms",
|
|
1248
1248
|
target: "_blank",
|
|
1249
1249
|
rel: "noopener noreferrer",
|
|
@@ -1257,26 +1257,26 @@ var Ke = [
|
|
|
1257
1257
|
]
|
|
1258
1258
|
})]
|
|
1259
1259
|
}),
|
|
1260
|
-
/* @__PURE__ */
|
|
1260
|
+
/* @__PURE__ */ W("div", {
|
|
1261
1261
|
className: "border-t border-border-subtle pt-6 space-y-4",
|
|
1262
|
-
children: [/* @__PURE__ */
|
|
1262
|
+
children: [/* @__PURE__ */ U("button", {
|
|
1263
1263
|
type: "button",
|
|
1264
1264
|
onClick: () => void g(),
|
|
1265
1265
|
disabled: d,
|
|
1266
1266
|
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",
|
|
1267
|
-
children: d ? /* @__PURE__ */
|
|
1267
|
+
children: d ? /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(R, {
|
|
1268
1268
|
size: 16,
|
|
1269
1269
|
className: "animate-spin"
|
|
1270
|
-
}), s("devportal.saving", "Saving…")] }) : /* @__PURE__ */
|
|
1271
|
-
}), a && /* @__PURE__ */
|
|
1270
|
+
}), s("devportal.saving", "Saving…")] }) : /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(I, { size: 16 }), s("devportal.savePricing", "Save Pricing")] })
|
|
1271
|
+
}), a && /* @__PURE__ */ W("div", {
|
|
1272
1272
|
className: "flex items-start gap-3 rounded-lg border border-status-success-bg bg-status-success-bg-subtle px-4 py-3",
|
|
1273
|
-
children: [/* @__PURE__ */
|
|
1273
|
+
children: [/* @__PURE__ */ U(F, {
|
|
1274
1274
|
size: 16,
|
|
1275
1275
|
className: "mt-0.5 shrink-0 text-status-success-text"
|
|
1276
|
-
}), /* @__PURE__ */
|
|
1276
|
+
}), /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
|
|
1277
1277
|
className: "text-sm font-medium text-status-success-text",
|
|
1278
1278
|
children: s("devportal.allSetToSubmit", "You're all set!")
|
|
1279
|
-
}), /* @__PURE__ */
|
|
1279
|
+
}), /* @__PURE__ */ U("p", {
|
|
1280
1280
|
className: "mt-0.5 text-xs text-text-secondary",
|
|
1281
1281
|
children: s("devportal.allSetDesc", "Store listing, versions, and pricing are complete. Head to the top of the page and click Submit for Review.")
|
|
1282
1282
|
})] })]
|
|
@@ -1285,87 +1285,87 @@ var Ke = [
|
|
|
1285
1285
|
]
|
|
1286
1286
|
});
|
|
1287
1287
|
}, et = ({ appId: e, onNavigate: n, pricingDone: i = !1, onNavigateToPricing: a }) => {
|
|
1288
|
-
let { t: o } =
|
|
1288
|
+
let { t: o } = G(), s = (e, t) => {
|
|
1289
1289
|
let n = o(e);
|
|
1290
1290
|
return n === e ? t : n;
|
|
1291
1291
|
}, { data: l, loading: u, error: d } = c({
|
|
1292
1292
|
variables: { applicationId: e },
|
|
1293
1293
|
fetchPolicy: "cache-and-network"
|
|
1294
1294
|
});
|
|
1295
|
-
if (u) return /* @__PURE__ */
|
|
1296
|
-
if (d) return /* @__PURE__ */
|
|
1295
|
+
if (u) return /* @__PURE__ */ U(Je, { message: s("devportal.loadingVersions", "Loading versions…") });
|
|
1296
|
+
if (d) return /* @__PURE__ */ U(Ye, { message: d.message });
|
|
1297
1297
|
let f = (l?.application?.versions?.edges ?? []).map((e) => e.node);
|
|
1298
|
-
return /* @__PURE__ */
|
|
1298
|
+
return /* @__PURE__ */ W("div", {
|
|
1299
1299
|
className: "space-y-4",
|
|
1300
1300
|
children: [
|
|
1301
|
-
/* @__PURE__ */
|
|
1301
|
+
/* @__PURE__ */ W("div", {
|
|
1302
1302
|
className: "flex items-center justify-between",
|
|
1303
|
-
children: [/* @__PURE__ */
|
|
1303
|
+
children: [/* @__PURE__ */ W("p", {
|
|
1304
1304
|
className: "text-sm text-text-secondary",
|
|
1305
1305
|
children: [
|
|
1306
1306
|
f.length,
|
|
1307
1307
|
" ",
|
|
1308
1308
|
f.length === 1 ? s("devportal.version", "version") : s("devportal.versions", "versions")
|
|
1309
1309
|
]
|
|
1310
|
-
}), /* @__PURE__ */
|
|
1310
|
+
}), /* @__PURE__ */ W("button", {
|
|
1311
1311
|
onClick: () => n(`/apps/${e}/versions`),
|
|
1312
1312
|
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",
|
|
1313
|
-
children: [/* @__PURE__ */
|
|
1313
|
+
children: [/* @__PURE__ */ U(B, { size: 16 }), s("devportal.uploadVersion", "Upload Version")]
|
|
1314
1314
|
})]
|
|
1315
1315
|
}),
|
|
1316
|
-
f.length > 0 ? /* @__PURE__ */
|
|
1316
|
+
f.length > 0 ? /* @__PURE__ */ U("div", {
|
|
1317
1317
|
className: "overflow-hidden rounded-lg border border-border-subtle",
|
|
1318
|
-
children: /* @__PURE__ */
|
|
1318
|
+
children: /* @__PURE__ */ W("table", {
|
|
1319
1319
|
className: "w-full text-sm",
|
|
1320
|
-
children: [/* @__PURE__ */
|
|
1320
|
+
children: [/* @__PURE__ */ U("thead", { children: /* @__PURE__ */ W("tr", {
|
|
1321
1321
|
className: "border-b border-border-subtle bg-bg-sunken/50",
|
|
1322
1322
|
children: [
|
|
1323
|
-
/* @__PURE__ */
|
|
1323
|
+
/* @__PURE__ */ U("th", {
|
|
1324
1324
|
className: "px-4 py-3 text-left font-medium text-text-secondary",
|
|
1325
1325
|
children: s("devportal.version", "Version")
|
|
1326
1326
|
}),
|
|
1327
|
-
/* @__PURE__ */
|
|
1327
|
+
/* @__PURE__ */ U("th", {
|
|
1328
1328
|
className: "px-4 py-3 text-left font-medium text-text-secondary",
|
|
1329
1329
|
children: s("devportal.status", "Status")
|
|
1330
1330
|
}),
|
|
1331
|
-
/* @__PURE__ */
|
|
1331
|
+
/* @__PURE__ */ U("th", {
|
|
1332
1332
|
className: "px-4 py-3 text-left font-medium text-text-secondary",
|
|
1333
1333
|
children: s("devportal.released", "Released")
|
|
1334
1334
|
}),
|
|
1335
|
-
/* @__PURE__ */
|
|
1335
|
+
/* @__PURE__ */ U("th", {
|
|
1336
1336
|
className: "px-4 py-3 text-left font-medium text-text-secondary",
|
|
1337
1337
|
children: s("devportal.flags", "Flags")
|
|
1338
1338
|
})
|
|
1339
1339
|
]
|
|
1340
|
-
}) }), /* @__PURE__ */
|
|
1340
|
+
}) }), /* @__PURE__ */ U("tbody", {
|
|
1341
1341
|
className: "divide-y divide-border-subtle",
|
|
1342
|
-
children: f.map((e) => /* @__PURE__ */
|
|
1343
|
-
/* @__PURE__ */
|
|
1342
|
+
children: f.map((e) => /* @__PURE__ */ W(H, { children: [
|
|
1343
|
+
/* @__PURE__ */ W("tr", {
|
|
1344
1344
|
className: "hover:bg-bg-sunken/30 transition-colors",
|
|
1345
1345
|
children: [
|
|
1346
|
-
/* @__PURE__ */
|
|
1346
|
+
/* @__PURE__ */ U("td", {
|
|
1347
1347
|
className: "px-4 py-3 font-mono font-medium",
|
|
1348
1348
|
children: e.version
|
|
1349
1349
|
}),
|
|
1350
|
-
/* @__PURE__ */
|
|
1350
|
+
/* @__PURE__ */ U("td", {
|
|
1351
1351
|
className: "px-4 py-3",
|
|
1352
|
-
children: /* @__PURE__ */
|
|
1352
|
+
children: /* @__PURE__ */ U("span", {
|
|
1353
1353
|
className: t("inline-flex rounded-full px-2 py-0.5 text-xs font-medium", e.status === "published" ? "bg-status-success-bg-subtle text-status-success-text" : e.status === "pending_review" ? "bg-status-info-bg-subtle text-status-info-text" : e.status === "rejected" ? "bg-status-error-bg-subtle text-status-error-text" : e.status === "deprecated" ? "bg-bg-sunken text-text-secondary" : "bg-status-warning-bg-subtle text-status-warning-text"),
|
|
1354
1354
|
children: e.status === "pending_review" ? "In Review" : e.status
|
|
1355
1355
|
})
|
|
1356
1356
|
}),
|
|
1357
|
-
/* @__PURE__ */
|
|
1357
|
+
/* @__PURE__ */ U("td", {
|
|
1358
1358
|
className: "px-4 py-3 text-text-secondary",
|
|
1359
1359
|
children: e.publishedAt ? new Date(e.publishedAt).toLocaleDateString() : new Date(e.createdAt).toLocaleDateString()
|
|
1360
1360
|
}),
|
|
1361
|
-
/* @__PURE__ */
|
|
1361
|
+
/* @__PURE__ */ U("td", {
|
|
1362
1362
|
className: "px-4 py-3",
|
|
1363
|
-
children: /* @__PURE__ */
|
|
1363
|
+
children: /* @__PURE__ */ W("div", {
|
|
1364
1364
|
className: "flex gap-1.5",
|
|
1365
|
-
children: [e.isLatest && /* @__PURE__ */
|
|
1365
|
+
children: [e.isLatest && /* @__PURE__ */ U("span", {
|
|
1366
1366
|
className: "rounded-full bg-action-primary-bg/10 px-2 py-0.5 text-xs text-primary font-medium",
|
|
1367
1367
|
children: "latest"
|
|
1368
|
-
}), e.isStable && /* @__PURE__ */
|
|
1368
|
+
}), e.isStable && /* @__PURE__ */ U("span", {
|
|
1369
1369
|
className: "rounded-full bg-status-success-bg-subtle px-2 py-0.5 text-xs text-status-success-text font-medium",
|
|
1370
1370
|
children: "stable"
|
|
1371
1371
|
})]
|
|
@@ -1373,26 +1373,26 @@ var Ke = [
|
|
|
1373
1373
|
})
|
|
1374
1374
|
]
|
|
1375
1375
|
}, e.id),
|
|
1376
|
-
e.status === "rejected" && e.reviewNotes && /* @__PURE__ */
|
|
1376
|
+
e.status === "rejected" && e.reviewNotes && /* @__PURE__ */ U("tr", {
|
|
1377
1377
|
className: "bg-status-error-bg-subtle/40",
|
|
1378
|
-
children: /* @__PURE__ */
|
|
1378
|
+
children: /* @__PURE__ */ U("td", {
|
|
1379
1379
|
colSpan: 4,
|
|
1380
1380
|
className: "px-4 py-2",
|
|
1381
|
-
children: /* @__PURE__ */
|
|
1381
|
+
children: /* @__PURE__ */ W("p", {
|
|
1382
1382
|
className: "text-xs text-status-error-text",
|
|
1383
|
-
children: [/* @__PURE__ */
|
|
1383
|
+
children: [/* @__PURE__ */ W("span", {
|
|
1384
1384
|
className: "font-semibold",
|
|
1385
1385
|
children: ["Review feedback:", " "]
|
|
1386
1386
|
}), e.reviewNotes]
|
|
1387
1387
|
})
|
|
1388
1388
|
})
|
|
1389
1389
|
}, `${e.id}-notes`),
|
|
1390
|
-
e.status === "pending_review" && /* @__PURE__ */
|
|
1390
|
+
e.status === "pending_review" && /* @__PURE__ */ U("tr", {
|
|
1391
1391
|
className: "bg-status-info-bg-subtle/30",
|
|
1392
|
-
children: /* @__PURE__ */
|
|
1392
|
+
children: /* @__PURE__ */ U("td", {
|
|
1393
1393
|
colSpan: 4,
|
|
1394
1394
|
className: "px-4 py-2",
|
|
1395
|
-
children: /* @__PURE__ */
|
|
1395
|
+
children: /* @__PURE__ */ U("p", {
|
|
1396
1396
|
className: "text-xs text-status-info-text",
|
|
1397
1397
|
children: "Submitted for platform review — you will be notified once approved or if changes are needed."
|
|
1398
1398
|
})
|
|
@@ -1401,50 +1401,50 @@ var Ke = [
|
|
|
1401
1401
|
] }))
|
|
1402
1402
|
})]
|
|
1403
1403
|
})
|
|
1404
|
-
}) : /* @__PURE__ */
|
|
1404
|
+
}) : /* @__PURE__ */ U(r, {
|
|
1405
1405
|
illustration: "empty-generic",
|
|
1406
|
-
icon: /* @__PURE__ */
|
|
1406
|
+
icon: /* @__PURE__ */ U(De, { size: 32 }),
|
|
1407
1407
|
title: s("devportal.noVersions", "No versions yet"),
|
|
1408
1408
|
description: s("devportal.noVersionsDescription", "Upload your first version to make this item available for review and distribution."),
|
|
1409
|
-
action: /* @__PURE__ */
|
|
1409
|
+
action: /* @__PURE__ */ W("button", {
|
|
1410
1410
|
onClick: () => n(`/apps/${e}/versions`),
|
|
1411
1411
|
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",
|
|
1412
|
-
children: [/* @__PURE__ */
|
|
1412
|
+
children: [/* @__PURE__ */ U(B, { size: 16 }), s("devportal.uploadVersion", "Upload Version")]
|
|
1413
1413
|
})
|
|
1414
1414
|
}),
|
|
1415
|
-
f.length > 0 && !i && a && /* @__PURE__ */
|
|
1415
|
+
f.length > 0 && !i && a && /* @__PURE__ */ W("div", {
|
|
1416
1416
|
className: "mt-4 flex items-center gap-3 rounded-lg border border-border-subtle bg-bg-sunken px-4 py-3",
|
|
1417
1417
|
children: [
|
|
1418
|
-
/* @__PURE__ */
|
|
1418
|
+
/* @__PURE__ */ U(I, {
|
|
1419
1419
|
size: 16,
|
|
1420
1420
|
className: "shrink-0 text-primary"
|
|
1421
1421
|
}),
|
|
1422
|
-
/* @__PURE__ */
|
|
1422
|
+
/* @__PURE__ */ U("p", {
|
|
1423
1423
|
className: "flex-1 text-sm text-text-secondary",
|
|
1424
1424
|
children: s("devportal.versionsNextPricing", "You've got versions covered. Now set your pricing before you can submit.")
|
|
1425
1425
|
}),
|
|
1426
|
-
/* @__PURE__ */
|
|
1426
|
+
/* @__PURE__ */ W("button", {
|
|
1427
1427
|
type: "button",
|
|
1428
1428
|
onClick: a,
|
|
1429
1429
|
className: "inline-flex items-center gap-1 text-sm font-medium text-primary hover:underline underline-offset-2 whitespace-nowrap",
|
|
1430
|
-
children: [s("devportal.nextSetPricing", "Set Pricing"), /* @__PURE__ */
|
|
1430
|
+
children: [s("devportal.nextSetPricing", "Set Pricing"), /* @__PURE__ */ U(ge, { size: 15 })]
|
|
1431
1431
|
})
|
|
1432
1432
|
]
|
|
1433
1433
|
})
|
|
1434
1434
|
]
|
|
1435
1435
|
});
|
|
1436
1436
|
}, tt = ({ appId: e, onNavigate: t }) => {
|
|
1437
|
-
let { t: n } =
|
|
1437
|
+
let { t: n } = G(), r = (e, t) => {
|
|
1438
1438
|
let r = n(e);
|
|
1439
1439
|
return r === e ? t : r;
|
|
1440
1440
|
}, { data: i, loading: a, error: o } = u({ variables: { applicationId: e } });
|
|
1441
|
-
return a ? /* @__PURE__ */
|
|
1441
|
+
return a ? /* @__PURE__ */ U(Je, { message: r("devportal.loadingWebhooks", "Loading webhooks...") }) : o ? /* @__PURE__ */ U(Ye, { message: o.message }) : /* @__PURE__ */ U(at, {
|
|
1442
1442
|
appId: e,
|
|
1443
1443
|
webhooks: (i?.webhooks ?? []).map(Ue),
|
|
1444
1444
|
onNavigate: t
|
|
1445
1445
|
});
|
|
1446
1446
|
}, nt = ({ authAppId: e, appName: t, onGrantDelegation: n, onNavigate: a }) => {
|
|
1447
|
-
let { t: o } =
|
|
1447
|
+
let { t: o } = G(), s = (e, t) => {
|
|
1448
1448
|
let n = o(e);
|
|
1449
1449
|
return n === e ? t : n;
|
|
1450
1450
|
}, { 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 = j(() => c?.currentUserDelegations?.delegations ? c.currentUserDelegations.delegations.filter((t) => t.appId === e).map(Ge) : [], [e, c]), C = j(() => S.filter((e) => e.status === "ACTIVE"), [S]), w = j(() => 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 = A((e, t) => {
|
|
@@ -1473,19 +1473,19 @@ var Ke = [
|
|
|
1473
1473
|
_(!1);
|
|
1474
1474
|
}
|
|
1475
1475
|
}, [f, d]);
|
|
1476
|
-
return e ? l ? /* @__PURE__ */
|
|
1477
|
-
b && /* @__PURE__ */
|
|
1476
|
+
return e ? l ? /* @__PURE__ */ U(Je, { message: s("devportal.loadingDelegations", "Loading delegations...") }) : u ? /* @__PURE__ */ U(Ye, { message: u.message }) : /* @__PURE__ */ W(H, { children: [
|
|
1477
|
+
b && /* @__PURE__ */ U("div", {
|
|
1478
1478
|
className: "rounded-lg border border-border-subtle bg-status-success-bg-subtle p-3 text-sm text-status-success-text",
|
|
1479
|
-
children: /* @__PURE__ */
|
|
1479
|
+
children: /* @__PURE__ */ W("div", {
|
|
1480
1480
|
className: "flex items-center justify-between gap-3",
|
|
1481
|
-
children: [/* @__PURE__ */
|
|
1481
|
+
children: [/* @__PURE__ */ U("span", { children: b }), /* @__PURE__ */ U("button", {
|
|
1482
1482
|
onClick: () => x(null),
|
|
1483
1483
|
className: "text-status-success-text hover:text-status-success-text",
|
|
1484
1484
|
children: s("devportal.dismiss", "Dismiss")
|
|
1485
1485
|
})]
|
|
1486
1486
|
})
|
|
1487
1487
|
}),
|
|
1488
|
-
/* @__PURE__ */
|
|
1488
|
+
/* @__PURE__ */ U(ot, {
|
|
1489
1489
|
appName: t,
|
|
1490
1490
|
delegations: S,
|
|
1491
1491
|
onGrantDelegation: n,
|
|
@@ -1498,7 +1498,7 @@ var Ke = [
|
|
|
1498
1498
|
allVisibleSelected: T,
|
|
1499
1499
|
partiallySelected: E
|
|
1500
1500
|
}),
|
|
1501
|
-
/* @__PURE__ */
|
|
1501
|
+
/* @__PURE__ */ U(ae, {
|
|
1502
1502
|
open: p.length > 0,
|
|
1503
1503
|
onOpenChange: (e) => {
|
|
1504
1504
|
e || h([]);
|
|
@@ -1513,19 +1513,19 @@ var Ke = [
|
|
|
1513
1513
|
variant: "destructive",
|
|
1514
1514
|
loading: g
|
|
1515
1515
|
})
|
|
1516
|
-
] }) : /* @__PURE__ */
|
|
1516
|
+
] }) : /* @__PURE__ */ U(r, {
|
|
1517
1517
|
illustration: "empty-generic",
|
|
1518
|
-
icon: /* @__PURE__ */
|
|
1518
|
+
icon: /* @__PURE__ */ U(je, { size: 32 }),
|
|
1519
1519
|
title: s("devportal.linkAuthAppFirst", "Link an auth app first"),
|
|
1520
1520
|
description: s("devportal.linkAuthAppFirstDescription", "Delegations are managed through auth apps. Create or link an auth app before granting app-as-user access."),
|
|
1521
|
-
action: /* @__PURE__ */
|
|
1521
|
+
action: /* @__PURE__ */ W("button", {
|
|
1522
1522
|
onClick: () => a("/oauth"),
|
|
1523
1523
|
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",
|
|
1524
|
-
children: [/* @__PURE__ */
|
|
1524
|
+
children: [/* @__PURE__ */ U(L, { size: 16 }), s("devportal.manageOAuthApps", "Manage OAuth Apps")]
|
|
1525
1525
|
})
|
|
1526
1526
|
});
|
|
1527
1527
|
}, rt = ({ appId: e }) => {
|
|
1528
|
-
let { t } =
|
|
1528
|
+
let { t } = G(), n = (e, n) => {
|
|
1529
1529
|
let r = t(e);
|
|
1530
1530
|
return r === e ? n : r;
|
|
1531
1531
|
}, r = j(() => /* @__PURE__ */ new Date(), []), { data: i, loading: a, error: s } = o({ variables: {
|
|
@@ -1537,45 +1537,45 @@ var Ke = [
|
|
|
1537
1537
|
}, [r]).toISOString(),
|
|
1538
1538
|
endDate: r.toISOString()
|
|
1539
1539
|
} });
|
|
1540
|
-
return a ? /* @__PURE__ */
|
|
1540
|
+
return a ? /* @__PURE__ */ U(Je, { message: n("devportal.loadingAnalytics", "Loading analytics...") }) : s ? /* @__PURE__ */ U(Ye, { message: s.message }) : /* @__PURE__ */ U(st, { analytics: (i?.applicationAnalytics ?? []).map(We) });
|
|
1541
1541
|
}, it = ({ app: e, appId: t, refetch: n }) => {
|
|
1542
|
-
let { t: r } =
|
|
1542
|
+
let { t: r } = G(), i = (e, t) => {
|
|
1543
1543
|
let n = r(e);
|
|
1544
1544
|
return n === e ? t : n;
|
|
1545
1545
|
}, [a, { loading: o }] = g(), [s, { loading: c }] = y(), [l, u] = N(!1);
|
|
1546
|
-
return /* @__PURE__ */
|
|
1546
|
+
return /* @__PURE__ */ W("div", {
|
|
1547
1547
|
className: "space-y-6",
|
|
1548
|
-
children: [e.appType === "WORKFLOW" && /* @__PURE__ */
|
|
1548
|
+
children: [e.appType === "WORKFLOW" && /* @__PURE__ */ U("div", {
|
|
1549
1549
|
className: "rounded-lg border border-border-subtle bg-bg-elevated p-4",
|
|
1550
|
-
children: /* @__PURE__ */
|
|
1550
|
+
children: /* @__PURE__ */ W("div", {
|
|
1551
1551
|
className: "flex items-start justify-between gap-4",
|
|
1552
|
-
children: [/* @__PURE__ */
|
|
1552
|
+
children: [/* @__PURE__ */ W("div", {
|
|
1553
1553
|
className: "flex items-start gap-3",
|
|
1554
|
-
children: [/* @__PURE__ */
|
|
1554
|
+
children: [/* @__PURE__ */ U("div", {
|
|
1555
1555
|
className: "mt-0.5 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-full bg-action-primary-bg-subtle",
|
|
1556
|
-
children: /* @__PURE__ */
|
|
1556
|
+
children: /* @__PURE__ */ U(we, {
|
|
1557
1557
|
size: 15,
|
|
1558
1558
|
className: "text-action-primary-text"
|
|
1559
1559
|
})
|
|
1560
|
-
}), /* @__PURE__ */
|
|
1561
|
-
/* @__PURE__ */
|
|
1560
|
+
}), /* @__PURE__ */ W("div", { children: [
|
|
1561
|
+
/* @__PURE__ */ U("p", {
|
|
1562
1562
|
className: "text-sm font-medium text-text-primary",
|
|
1563
1563
|
children: i("devportal.shareWorkflow.title", "Share as Public Link")
|
|
1564
1564
|
}),
|
|
1565
|
-
/* @__PURE__ */
|
|
1565
|
+
/* @__PURE__ */ U("p", {
|
|
1566
1566
|
className: "mt-0.5 text-xs text-text-secondary",
|
|
1567
1567
|
children: e.visibility === "UNLISTED" ? i("devportal.shareWorkflow.activeDesc", "Anyone with the link can preview and copy this workflow into their FluidGrids workspace.") : i("devportal.shareWorkflow.inactiveDesc", "Generate a public link anyone can use to copy this workflow into their own FluidGrids workspace — no store review needed.")
|
|
1568
1568
|
}),
|
|
1569
|
-
e.visibility === "UNLISTED" && (e.status === "PUBLISHED" || e.status === "SUBMITTED") && /* @__PURE__ */
|
|
1569
|
+
e.visibility === "UNLISTED" && (e.status === "PUBLISHED" || e.status === "SUBMITTED") && /* @__PURE__ */ U("p", {
|
|
1570
1570
|
className: "mt-1.5 text-xs text-status-warning-text",
|
|
1571
1571
|
children: i("devportal.shareWorkflow.stopSharingPublishedNote", "This app is in the marketplace. Stopping the share link will keep it there — visibility will switch to Public so the store listing is preserved.")
|
|
1572
1572
|
}),
|
|
1573
|
-
e.visibility === "UNLISTED" && /* @__PURE__ */
|
|
1573
|
+
e.visibility === "UNLISTED" && /* @__PURE__ */ W("div", {
|
|
1574
1574
|
className: "mt-2 flex items-center gap-2",
|
|
1575
|
-
children: [/* @__PURE__ */
|
|
1575
|
+
children: [/* @__PURE__ */ U("code", {
|
|
1576
1576
|
className: "rounded bg-bg-canvas px-2 py-1 text-xs text-text-secondary",
|
|
1577
1577
|
children: `${window.location.protocol}//${window.location.host}/shared/${t}`
|
|
1578
|
-
}), /* @__PURE__ */
|
|
1578
|
+
}), /* @__PURE__ */ W("button", {
|
|
1579
1579
|
type: "button",
|
|
1580
1580
|
className: "flex items-center gap-1 rounded px-2 py-1 text-xs text-action-primary-text hover:bg-action-primary-bg-subtle transition-colors",
|
|
1581
1581
|
onClick: () => {
|
|
@@ -1584,11 +1584,11 @@ var Ke = [
|
|
|
1584
1584
|
u(!0), setTimeout(() => u(!1), 2e3);
|
|
1585
1585
|
});
|
|
1586
1586
|
},
|
|
1587
|
-
children: [
|
|
1587
|
+
children: [U(l ? F : ve, { size: 12 }), l ? i("devportal.copied", "Copied!") : i("devportal.copyLink", "Copy Link")]
|
|
1588
1588
|
})]
|
|
1589
1589
|
})
|
|
1590
1590
|
] })]
|
|
1591
|
-
}), /* @__PURE__ */
|
|
1591
|
+
}), /* @__PURE__ */ U("button", {
|
|
1592
1592
|
type: "button",
|
|
1593
1593
|
disabled: o || c || !e.manifest,
|
|
1594
1594
|
title: e.manifest ? void 0 : i("devportal.shareWorkflow.noManifestHint", "Add a workflow manifest before sharing"),
|
|
@@ -1596,67 +1596,67 @@ var Ke = [
|
|
|
1596
1596
|
e.visibility === "UNLISTED" ? s({ variables: { id: t } }).then(() => n()) : a({ variables: { id: t } }).then(() => n());
|
|
1597
1597
|
},
|
|
1598
1598
|
className: `flex-shrink-0 rounded-full px-3 py-1.5 text-xs font-medium transition-colors ${e.visibility === "UNLISTED" ? "border border-status-error-bg text-status-error-text hover:bg-status-error-bg-subtle" : "bg-action-primary-bg text-text-on-action hover:opacity-90 disabled:opacity-50"}`,
|
|
1599
|
-
children: o || c ? /* @__PURE__ */
|
|
1599
|
+
children: o || c ? /* @__PURE__ */ U(R, {
|
|
1600
1600
|
size: 12,
|
|
1601
1601
|
className: "animate-spin"
|
|
1602
1602
|
}) : e.visibility === "UNLISTED" ? i("devportal.shareWorkflow.stopSharing", "Stop Sharing") : i("devportal.shareWorkflow.share", "Share Link")
|
|
1603
1603
|
})]
|
|
1604
1604
|
})
|
|
1605
|
-
}), /* @__PURE__ */
|
|
1605
|
+
}), /* @__PURE__ */ W("div", {
|
|
1606
1606
|
className: "grid gap-6 lg:grid-cols-3",
|
|
1607
|
-
children: [/* @__PURE__ */
|
|
1607
|
+
children: [/* @__PURE__ */ W("div", {
|
|
1608
1608
|
className: "lg:col-span-2 space-y-6",
|
|
1609
1609
|
children: [
|
|
1610
|
-
/* @__PURE__ */
|
|
1610
|
+
/* @__PURE__ */ U(Be, { children: /* @__PURE__ */ W("div", {
|
|
1611
1611
|
className: "grid gap-4 sm:grid-cols-4",
|
|
1612
1612
|
children: [
|
|
1613
|
-
/* @__PURE__ */
|
|
1613
|
+
/* @__PURE__ */ U(Z, {
|
|
1614
1614
|
label: i("devportal.totalInstalls", "Total Installs"),
|
|
1615
1615
|
value: e.installCount.toLocaleString()
|
|
1616
1616
|
}),
|
|
1617
|
-
/* @__PURE__ */
|
|
1617
|
+
/* @__PURE__ */ U(Z, {
|
|
1618
1618
|
label: i("devportal.activeInstalls", "Active Installs"),
|
|
1619
1619
|
value: e.activeInstallCount.toLocaleString()
|
|
1620
1620
|
}),
|
|
1621
|
-
/* @__PURE__ */
|
|
1621
|
+
/* @__PURE__ */ U(Z, {
|
|
1622
1622
|
label: i("devportal.averageRating", "Average Rating"),
|
|
1623
1623
|
value: e.averageRating ? `${e.averageRating.toFixed(1)} ★` : i("devportal.notAvailable", "N/A")
|
|
1624
1624
|
}),
|
|
1625
|
-
/* @__PURE__ */
|
|
1625
|
+
/* @__PURE__ */ U(Z, {
|
|
1626
1626
|
label: i("devportal.reviews", "Reviews"),
|
|
1627
1627
|
value: e.reviewCount.toString()
|
|
1628
1628
|
})
|
|
1629
1629
|
]
|
|
1630
1630
|
}) }),
|
|
1631
|
-
/* @__PURE__ */
|
|
1631
|
+
/* @__PURE__ */ U(S, {
|
|
1632
1632
|
title: i("devportal.description", "Description"),
|
|
1633
|
-
children: e.description ? /* @__PURE__ */
|
|
1633
|
+
children: e.description ? /* @__PURE__ */ U(fe, {
|
|
1634
1634
|
className: "prose prose-sm max-w-none",
|
|
1635
1635
|
children: e.description
|
|
1636
|
-
}) : /* @__PURE__ */
|
|
1636
|
+
}) : /* @__PURE__ */ U("p", {
|
|
1637
1637
|
className: "text-sm text-text-secondary",
|
|
1638
1638
|
children: i("devportal.noDescriptionProvided", "No description provided.")
|
|
1639
1639
|
})
|
|
1640
1640
|
}),
|
|
1641
|
-
/* @__PURE__ */
|
|
1641
|
+
/* @__PURE__ */ U(S, {
|
|
1642
1642
|
title: i("devportal.tagsAndKeywords", "Tags & Keywords"),
|
|
1643
|
-
children: /* @__PURE__ */
|
|
1643
|
+
children: /* @__PURE__ */ W("div", {
|
|
1644
1644
|
className: "space-y-3",
|
|
1645
|
-
children: [e.tags.length > 0 && /* @__PURE__ */
|
|
1645
|
+
children: [e.tags.length > 0 && /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
|
|
1646
1646
|
className: "text-xs text-text-secondary mb-2",
|
|
1647
1647
|
children: i("devportal.tags", "Tags")
|
|
1648
|
-
}), /* @__PURE__ */
|
|
1648
|
+
}), /* @__PURE__ */ U("div", {
|
|
1649
1649
|
className: "flex flex-wrap gap-2",
|
|
1650
|
-
children: e.tags.map((e) => /* @__PURE__ */
|
|
1650
|
+
children: e.tags.map((e) => /* @__PURE__ */ U("span", {
|
|
1651
1651
|
className: "rounded-full bg-action-primary-bg/10 px-3 py-1 text-xs font-medium text-primary",
|
|
1652
1652
|
children: e
|
|
1653
1653
|
}, e))
|
|
1654
|
-
})] }), e.keywords.length > 0 && /* @__PURE__ */
|
|
1654
|
+
})] }), e.keywords.length > 0 && /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
|
|
1655
1655
|
className: "text-xs text-text-secondary mb-2",
|
|
1656
1656
|
children: i("devportal.keywords", "Keywords")
|
|
1657
|
-
}), /* @__PURE__ */
|
|
1657
|
+
}), /* @__PURE__ */ U("div", {
|
|
1658
1658
|
className: "flex flex-wrap gap-2",
|
|
1659
|
-
children: e.keywords.map((e) => /* @__PURE__ */
|
|
1659
|
+
children: e.keywords.map((e) => /* @__PURE__ */ U("span", {
|
|
1660
1660
|
className: "rounded-full bg-bg-sunken px-3 py-1 text-xs",
|
|
1661
1661
|
children: e
|
|
1662
1662
|
}, e))
|
|
@@ -1664,14 +1664,14 @@ var Ke = [
|
|
|
1664
1664
|
})
|
|
1665
1665
|
})
|
|
1666
1666
|
]
|
|
1667
|
-
}), /* @__PURE__ */
|
|
1667
|
+
}), /* @__PURE__ */ W("div", {
|
|
1668
1668
|
className: "space-y-6",
|
|
1669
|
-
children: [/* @__PURE__ */
|
|
1669
|
+
children: [/* @__PURE__ */ U(S, {
|
|
1670
1670
|
title: i("devportal.details", "Details"),
|
|
1671
|
-
children: /* @__PURE__ */
|
|
1671
|
+
children: /* @__PURE__ */ U(ne, { items: [
|
|
1672
1672
|
{
|
|
1673
1673
|
label: i("devportal.appId", "App ID"),
|
|
1674
|
-
value: /* @__PURE__ */
|
|
1674
|
+
value: /* @__PURE__ */ U("code", {
|
|
1675
1675
|
className: "text-xs",
|
|
1676
1676
|
children: e.id
|
|
1677
1677
|
})
|
|
@@ -1707,32 +1707,32 @@ var Ke = [
|
|
|
1707
1707
|
value: e.publishedAt ? new Date(e.publishedAt).toLocaleDateString() : i("devportal.notPublished", "Not published")
|
|
1708
1708
|
}
|
|
1709
1709
|
] })
|
|
1710
|
-
}), /* @__PURE__ */
|
|
1710
|
+
}), /* @__PURE__ */ U(S, {
|
|
1711
1711
|
title: i("devportal.links", "Links"),
|
|
1712
|
-
children: /* @__PURE__ */
|
|
1712
|
+
children: /* @__PURE__ */ W("div", {
|
|
1713
1713
|
className: "space-y-2",
|
|
1714
1714
|
children: [
|
|
1715
|
-
e.websiteUrl && /* @__PURE__ */
|
|
1715
|
+
e.websiteUrl && /* @__PURE__ */ U(Q, {
|
|
1716
1716
|
label: i("devportal.website", "Website"),
|
|
1717
1717
|
url: e.websiteUrl
|
|
1718
1718
|
}),
|
|
1719
|
-
e.documentationUrl && /* @__PURE__ */
|
|
1719
|
+
e.documentationUrl && /* @__PURE__ */ U(Q, {
|
|
1720
1720
|
label: i("devportal.documentation", "Documentation"),
|
|
1721
1721
|
url: e.documentationUrl
|
|
1722
1722
|
}),
|
|
1723
|
-
e.supportUrl && /* @__PURE__ */
|
|
1723
|
+
e.supportUrl && /* @__PURE__ */ U(Q, {
|
|
1724
1724
|
label: i("devportal.support", "Support"),
|
|
1725
1725
|
url: e.supportUrl
|
|
1726
1726
|
}),
|
|
1727
|
-
e.githubUrl && /* @__PURE__ */
|
|
1727
|
+
e.githubUrl && /* @__PURE__ */ U(Q, {
|
|
1728
1728
|
label: i("devportal.github", "GitHub"),
|
|
1729
1729
|
url: e.githubUrl
|
|
1730
1730
|
}),
|
|
1731
|
-
e.privacyPolicyUrl && /* @__PURE__ */
|
|
1731
|
+
e.privacyPolicyUrl && /* @__PURE__ */ U(Q, {
|
|
1732
1732
|
label: i("devportal.privacyPolicy", "Privacy Policy"),
|
|
1733
1733
|
url: e.privacyPolicyUrl
|
|
1734
1734
|
}),
|
|
1735
|
-
e.termsOfServiceUrl && /* @__PURE__ */
|
|
1735
|
+
e.termsOfServiceUrl && /* @__PURE__ */ U(Q, {
|
|
1736
1736
|
label: i("devportal.termsOfService", "Terms of Service"),
|
|
1737
1737
|
url: e.termsOfServiceUrl
|
|
1738
1738
|
})
|
|
@@ -1743,15 +1743,15 @@ var Ke = [
|
|
|
1743
1743
|
})]
|
|
1744
1744
|
});
|
|
1745
1745
|
}, at = ({ appId: e, webhooks: t, onNavigate: n }) => {
|
|
1746
|
-
let { t: i } =
|
|
1746
|
+
let { t: i } = G(), a = (e, t) => {
|
|
1747
1747
|
let n = i(e);
|
|
1748
1748
|
return n === e ? t : n;
|
|
1749
1749
|
};
|
|
1750
|
-
return /* @__PURE__ */
|
|
1750
|
+
return /* @__PURE__ */ W("div", {
|
|
1751
1751
|
className: "space-y-6",
|
|
1752
|
-
children: [/* @__PURE__ */
|
|
1752
|
+
children: [/* @__PURE__ */ W("div", {
|
|
1753
1753
|
className: "flex items-center justify-between",
|
|
1754
|
-
children: [/* @__PURE__ */
|
|
1754
|
+
children: [/* @__PURE__ */ W("p", {
|
|
1755
1755
|
className: "text-sm text-text-secondary",
|
|
1756
1756
|
children: [
|
|
1757
1757
|
t.length,
|
|
@@ -1760,81 +1760,81 @@ var Ke = [
|
|
|
1760
1760
|
" ",
|
|
1761
1761
|
a("devportal.configured", "configured")
|
|
1762
1762
|
]
|
|
1763
|
-
}), /* @__PURE__ */
|
|
1763
|
+
}), /* @__PURE__ */ W("button", {
|
|
1764
1764
|
onClick: () => n(`/apps/${e}/webhooks/new`),
|
|
1765
1765
|
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",
|
|
1766
|
-
children: [/* @__PURE__ */
|
|
1766
|
+
children: [/* @__PURE__ */ U(z, { size: 16 }), a("devportal.addWebhook", "Add Webhook")]
|
|
1767
1767
|
})]
|
|
1768
|
-
}), t.length > 0 ? /* @__PURE__ */
|
|
1768
|
+
}), t.length > 0 ? /* @__PURE__ */ U("div", {
|
|
1769
1769
|
className: "space-y-4",
|
|
1770
|
-
children: t.map((t) => /* @__PURE__ */
|
|
1770
|
+
children: t.map((t) => /* @__PURE__ */ W("div", {
|
|
1771
1771
|
className: "rounded-card border border-border-seam bg-bg-surface p-4 space-y-4 shadow-[var(--shadow-pop)]",
|
|
1772
1772
|
children: [
|
|
1773
|
-
/* @__PURE__ */
|
|
1773
|
+
/* @__PURE__ */ W("div", {
|
|
1774
1774
|
className: "flex items-start justify-between",
|
|
1775
|
-
children: [/* @__PURE__ */
|
|
1775
|
+
children: [/* @__PURE__ */ W("div", { children: [/* @__PURE__ */ W("div", {
|
|
1776
1776
|
className: "flex items-center gap-2",
|
|
1777
|
-
children: [/* @__PURE__ */
|
|
1777
|
+
children: [/* @__PURE__ */ U("h3", {
|
|
1778
1778
|
className: "font-medium",
|
|
1779
1779
|
children: t.name
|
|
1780
|
-
}), /* @__PURE__ */
|
|
1780
|
+
}), /* @__PURE__ */ U(T, {
|
|
1781
1781
|
status: t.status,
|
|
1782
1782
|
type: "webhook"
|
|
1783
1783
|
})]
|
|
1784
|
-
}), t.description && /* @__PURE__ */
|
|
1784
|
+
}), t.description && /* @__PURE__ */ U("p", {
|
|
1785
1785
|
className: "text-sm text-text-secondary mt-1",
|
|
1786
1786
|
children: t.description
|
|
1787
|
-
})] }), /* @__PURE__ */
|
|
1787
|
+
})] }), /* @__PURE__ */ U("button", {
|
|
1788
1788
|
onClick: () => n(`/apps/${e}/webhooks/${t.id}`),
|
|
1789
1789
|
className: "rounded-md p-1 hover:bg-bg-sunken",
|
|
1790
|
-
children: /* @__PURE__ */
|
|
1790
|
+
children: /* @__PURE__ */ U(Ee, { size: 20 })
|
|
1791
1791
|
})]
|
|
1792
1792
|
}),
|
|
1793
|
-
/* @__PURE__ */
|
|
1793
|
+
/* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
|
|
1794
1794
|
className: "text-xs text-text-secondary mb-1",
|
|
1795
1795
|
children: a("devportal.endpointUrl", "Endpoint URL")
|
|
1796
|
-
}), /* @__PURE__ */
|
|
1796
|
+
}), /* @__PURE__ */ U("code", {
|
|
1797
1797
|
className: "text-sm bg-bg-sunken px-2 py-1 rounded block truncate",
|
|
1798
1798
|
children: t.url
|
|
1799
1799
|
})] }),
|
|
1800
|
-
/* @__PURE__ */
|
|
1800
|
+
/* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
|
|
1801
1801
|
className: "text-xs text-text-secondary mb-2",
|
|
1802
1802
|
children: a("devportal.events", "Events")
|
|
1803
|
-
}), /* @__PURE__ */
|
|
1803
|
+
}), /* @__PURE__ */ U("div", {
|
|
1804
1804
|
className: "flex flex-wrap gap-2",
|
|
1805
|
-
children: t.events.map((e) => /* @__PURE__ */
|
|
1805
|
+
children: t.events.map((e) => /* @__PURE__ */ U("span", {
|
|
1806
1806
|
className: "rounded-full bg-bg-sunken px-2 py-0.5 text-xs",
|
|
1807
1807
|
children: e
|
|
1808
1808
|
}, e))
|
|
1809
1809
|
})] }),
|
|
1810
|
-
/* @__PURE__ */
|
|
1810
|
+
/* @__PURE__ */ W("div", {
|
|
1811
1811
|
className: "grid gap-4 sm:grid-cols-4 text-sm",
|
|
1812
1812
|
children: [
|
|
1813
|
-
/* @__PURE__ */
|
|
1813
|
+
/* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
|
|
1814
1814
|
className: "text-xs text-text-secondary",
|
|
1815
1815
|
children: a("devportal.success", "Success")
|
|
1816
|
-
}), /* @__PURE__ */
|
|
1816
|
+
}), /* @__PURE__ */ U("p", {
|
|
1817
1817
|
className: "font-medium text-status-success-text",
|
|
1818
1818
|
children: t.successCount.toLocaleString()
|
|
1819
1819
|
})] }),
|
|
1820
|
-
/* @__PURE__ */
|
|
1820
|
+
/* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
|
|
1821
1821
|
className: "text-xs text-text-secondary",
|
|
1822
1822
|
children: a("devportal.failed", "Failed")
|
|
1823
|
-
}), /* @__PURE__ */
|
|
1823
|
+
}), /* @__PURE__ */ U("p", {
|
|
1824
1824
|
className: "font-medium text-status-error-text",
|
|
1825
1825
|
children: t.failureCount.toLocaleString()
|
|
1826
1826
|
})] }),
|
|
1827
|
-
/* @__PURE__ */
|
|
1827
|
+
/* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
|
|
1828
1828
|
className: "text-xs text-text-secondary",
|
|
1829
1829
|
children: a("devportal.successRate", "Success Rate")
|
|
1830
|
-
}), /* @__PURE__ */
|
|
1830
|
+
}), /* @__PURE__ */ W("p", {
|
|
1831
1831
|
className: "font-medium",
|
|
1832
1832
|
children: [t.successCount + t.failureCount > 0 ? (t.successCount / (t.successCount + t.failureCount) * 100).toFixed(1) : "0.0", "%"]
|
|
1833
1833
|
})] }),
|
|
1834
|
-
/* @__PURE__ */
|
|
1834
|
+
/* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
|
|
1835
1835
|
className: "text-xs text-text-secondary",
|
|
1836
1836
|
children: a("devportal.lastTriggered", "Last Triggered")
|
|
1837
|
-
}), /* @__PURE__ */
|
|
1837
|
+
}), /* @__PURE__ */ U("p", {
|
|
1838
1838
|
className: "font-medium",
|
|
1839
1839
|
children: t.lastTriggeredAt ? new Date(t.lastTriggeredAt).toLocaleString() : a("devportal.never", "Never")
|
|
1840
1840
|
})] })
|
|
@@ -1842,29 +1842,29 @@ var Ke = [
|
|
|
1842
1842
|
})
|
|
1843
1843
|
]
|
|
1844
1844
|
}, t.id))
|
|
1845
|
-
}) : /* @__PURE__ */
|
|
1845
|
+
}) : /* @__PURE__ */ U(r, {
|
|
1846
1846
|
illustration: "empty-notifications",
|
|
1847
|
-
icon: /* @__PURE__ */
|
|
1847
|
+
icon: /* @__PURE__ */ U(V, { size: 32 }),
|
|
1848
1848
|
title: a("devportal.noWebhooks", "No webhooks"),
|
|
1849
1849
|
description: a("devportal.noWebhooksDescription", "Add a webhook to receive event notifications"),
|
|
1850
|
-
action: /* @__PURE__ */
|
|
1850
|
+
action: /* @__PURE__ */ W("button", {
|
|
1851
1851
|
onClick: () => n(`/apps/${e}/webhooks/new`),
|
|
1852
1852
|
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",
|
|
1853
|
-
children: [/* @__PURE__ */
|
|
1853
|
+
children: [/* @__PURE__ */ U(z, { size: 16 }), a("devportal.addWebhook", "Add Webhook")]
|
|
1854
1854
|
})
|
|
1855
1855
|
})]
|
|
1856
1856
|
});
|
|
1857
1857
|
}, ot = ({ appName: e, delegations: n, onGrantDelegation: i, onRevokeDelegation: a, selectedDelegationIds: o, onToggleSelectDelegation: s, onToggleAllDelegations: c, onClearSelection: l, onRevokeSelected: u, allVisibleSelected: d, partiallySelected: f }) => {
|
|
1858
|
-
let { t: p } =
|
|
1858
|
+
let { t: p } = G(), m = (e, t) => {
|
|
1859
1859
|
let n = p(e);
|
|
1860
1860
|
return n === e ? t : n;
|
|
1861
1861
|
}, h = n.filter((e) => e.status === "ACTIVE"), g = n.filter((e) => e.status !== "ACTIVE");
|
|
1862
|
-
return /* @__PURE__ */
|
|
1862
|
+
return /* @__PURE__ */ W("div", {
|
|
1863
1863
|
className: "space-y-6",
|
|
1864
1864
|
children: [
|
|
1865
|
-
/* @__PURE__ */
|
|
1865
|
+
/* @__PURE__ */ W("div", {
|
|
1866
1866
|
className: "flex items-center justify-between",
|
|
1867
|
-
children: [/* @__PURE__ */
|
|
1867
|
+
children: [/* @__PURE__ */ W("div", { children: [/* @__PURE__ */ W("p", {
|
|
1868
1868
|
className: "text-sm text-text-secondary",
|
|
1869
1869
|
children: [
|
|
1870
1870
|
n.length,
|
|
@@ -1875,7 +1875,7 @@ var Ke = [
|
|
|
1875
1875
|
" ",
|
|
1876
1876
|
e
|
|
1877
1877
|
]
|
|
1878
|
-
}), h.length > 0 && /* @__PURE__ */
|
|
1878
|
+
}), h.length > 0 && /* @__PURE__ */ W("p", {
|
|
1879
1879
|
className: "text-xs text-text-secondary mt-0.5",
|
|
1880
1880
|
children: [
|
|
1881
1881
|
h.length,
|
|
@@ -1887,44 +1887,44 @@ var Ke = [
|
|
|
1887
1887
|
" ",
|
|
1888
1888
|
m("devportal.revokedExpired", "revoked/expired")
|
|
1889
1889
|
]
|
|
1890
|
-
})] }), /* @__PURE__ */
|
|
1890
|
+
})] }), /* @__PURE__ */ W("button", {
|
|
1891
1891
|
onClick: i,
|
|
1892
1892
|
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",
|
|
1893
|
-
children: [/* @__PURE__ */
|
|
1893
|
+
children: [/* @__PURE__ */ U(z, { size: 16 }), m("devportal.grantDelegation", "Grant Delegation")]
|
|
1894
1894
|
})]
|
|
1895
1895
|
}),
|
|
1896
|
-
h.length > 0 && /* @__PURE__ */
|
|
1896
|
+
h.length > 0 && /* @__PURE__ */ U("div", {
|
|
1897
1897
|
className: "rounded-card border border-border-seam bg-bg-surface p-4",
|
|
1898
|
-
children: /* @__PURE__ */
|
|
1898
|
+
children: /* @__PURE__ */ W("div", {
|
|
1899
1899
|
className: "flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between",
|
|
1900
|
-
children: [/* @__PURE__ */
|
|
1900
|
+
children: [/* @__PURE__ */ W("div", {
|
|
1901
1901
|
className: "flex flex-wrap items-center gap-3",
|
|
1902
|
-
children: [/* @__PURE__ */
|
|
1902
|
+
children: [/* @__PURE__ */ W("div", {
|
|
1903
1903
|
className: "flex items-center gap-2",
|
|
1904
|
-
children: [/* @__PURE__ */
|
|
1904
|
+
children: [/* @__PURE__ */ U(D, {
|
|
1905
1905
|
checked: d,
|
|
1906
1906
|
indeterminate: f,
|
|
1907
1907
|
onChange: c,
|
|
1908
1908
|
ariaLabel: m("devportal.selectAllActiveDelegations", "Select all active app delegations")
|
|
1909
|
-
}), /* @__PURE__ */
|
|
1909
|
+
}), /* @__PURE__ */ U("span", {
|
|
1910
1910
|
className: "text-sm font-medium",
|
|
1911
1911
|
children: m("devportal.selectAllActive", "Select all active")
|
|
1912
1912
|
})]
|
|
1913
|
-
}), o.size > 0 && /* @__PURE__ */
|
|
1913
|
+
}), o.size > 0 && /* @__PURE__ */ U("button", {
|
|
1914
1914
|
onClick: l,
|
|
1915
1915
|
className: "text-sm text-text-secondary hover:text-text-primary",
|
|
1916
1916
|
children: m("devportal.clearSelection", "Clear selection")
|
|
1917
1917
|
})]
|
|
1918
|
-
}), /* @__PURE__ */
|
|
1918
|
+
}), /* @__PURE__ */ W("div", {
|
|
1919
1919
|
className: "flex flex-wrap items-center gap-2",
|
|
1920
|
-
children: [/* @__PURE__ */
|
|
1920
|
+
children: [/* @__PURE__ */ W("span", {
|
|
1921
1921
|
className: "rounded-full bg-bg-sunken px-3 py-1 text-sm font-medium text-text-secondary",
|
|
1922
1922
|
children: [
|
|
1923
1923
|
o.size,
|
|
1924
1924
|
" ",
|
|
1925
1925
|
m("devportal.selected", "selected")
|
|
1926
1926
|
]
|
|
1927
|
-
}), /* @__PURE__ */
|
|
1927
|
+
}), /* @__PURE__ */ W("button", {
|
|
1928
1928
|
onClick: u,
|
|
1929
1929
|
disabled: o.size === 0,
|
|
1930
1930
|
className: "rounded-md border border-status-error-bg px-3 py-2 text-sm font-medium text-status-error-text hover:bg-status-error-bg-subtle disabled:cursor-not-allowed disabled:opacity-50",
|
|
@@ -1933,33 +1933,33 @@ var Ke = [
|
|
|
1933
1933
|
})]
|
|
1934
1934
|
})
|
|
1935
1935
|
}),
|
|
1936
|
-
n.length > 0 ? /* @__PURE__ */
|
|
1936
|
+
n.length > 0 ? /* @__PURE__ */ U("div", {
|
|
1937
1937
|
className: "space-y-4",
|
|
1938
|
-
children: n.map((e) => /* @__PURE__ */
|
|
1938
|
+
children: n.map((e) => /* @__PURE__ */ W("div", {
|
|
1939
1939
|
className: "rounded-card border border-border-seam bg-bg-surface p-4 space-y-4 shadow-[var(--shadow-pop)]",
|
|
1940
1940
|
children: [
|
|
1941
|
-
/* @__PURE__ */
|
|
1941
|
+
/* @__PURE__ */ W("div", {
|
|
1942
1942
|
className: "flex items-start justify-between",
|
|
1943
|
-
children: [/* @__PURE__ */
|
|
1943
|
+
children: [/* @__PURE__ */ W("div", {
|
|
1944
1944
|
className: "flex items-start gap-3",
|
|
1945
|
-
children: [e.status === "ACTIVE" && /* @__PURE__ */
|
|
1945
|
+
children: [e.status === "ACTIVE" && /* @__PURE__ */ U("div", {
|
|
1946
1946
|
onClick: (e) => e.stopPropagation(),
|
|
1947
|
-
children: /* @__PURE__ */
|
|
1947
|
+
children: /* @__PURE__ */ U(D, {
|
|
1948
1948
|
checked: o.has(e.id),
|
|
1949
1949
|
onChange: (t) => s(e.id, t),
|
|
1950
1950
|
ariaLabel: `Select delegation ${e.id}`,
|
|
1951
1951
|
className: "mt-1"
|
|
1952
1952
|
})
|
|
1953
|
-
}), /* @__PURE__ */
|
|
1953
|
+
}), /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ W("div", {
|
|
1954
1954
|
className: "flex items-center gap-2",
|
|
1955
|
-
children: [/* @__PURE__ */
|
|
1955
|
+
children: [/* @__PURE__ */ W("h3", {
|
|
1956
1956
|
className: "font-medium",
|
|
1957
1957
|
children: ["Delegation #", e.id.slice(0, 8)]
|
|
1958
|
-
}), /* @__PURE__ */
|
|
1958
|
+
}), /* @__PURE__ */ U("span", {
|
|
1959
1959
|
className: t("rounded-full px-2 py-0.5 text-xs font-medium", qe[e.status]),
|
|
1960
1960
|
children: e.status
|
|
1961
1961
|
})]
|
|
1962
|
-
}), /* @__PURE__ */
|
|
1962
|
+
}), /* @__PURE__ */ W("p", {
|
|
1963
1963
|
className: "text-sm text-text-secondary mt-1",
|
|
1964
1964
|
children: [
|
|
1965
1965
|
m("devportal.granted", "Granted"),
|
|
@@ -1971,55 +1971,55 @@ var Ke = [
|
|
|
1971
1971
|
e.grantedBy === e.userId ? m("devportal.you", "you") : e.grantedBy.slice(0, 8)
|
|
1972
1972
|
]
|
|
1973
1973
|
})] })]
|
|
1974
|
-
}), e.status === "ACTIVE" && /* @__PURE__ */
|
|
1974
|
+
}), e.status === "ACTIVE" && /* @__PURE__ */ W("button", {
|
|
1975
1975
|
onClick: () => a(e.id),
|
|
1976
1976
|
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",
|
|
1977
|
-
children: [/* @__PURE__ */
|
|
1977
|
+
children: [/* @__PURE__ */ U(Le, { size: 14 }), m("devportal.revoke", "Revoke")]
|
|
1978
1978
|
})]
|
|
1979
1979
|
}),
|
|
1980
|
-
/* @__PURE__ */
|
|
1980
|
+
/* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
|
|
1981
1981
|
className: "text-xs text-text-secondary mb-2",
|
|
1982
1982
|
children: m("devportal.grantedScopes", "Granted Scopes")
|
|
1983
|
-
}), /* @__PURE__ */
|
|
1983
|
+
}), /* @__PURE__ */ U("div", {
|
|
1984
1984
|
className: "flex flex-wrap gap-2",
|
|
1985
|
-
children: e.scopes.map((e) => /* @__PURE__ */
|
|
1985
|
+
children: e.scopes.map((e) => /* @__PURE__ */ U("span", {
|
|
1986
1986
|
className: "rounded-full bg-status-success-bg-subtle px-2 py-0.5 text-xs text-status-success-text",
|
|
1987
1987
|
children: e
|
|
1988
1988
|
}, e))
|
|
1989
1989
|
})] }),
|
|
1990
|
-
e.workspaceIds.length > 0 && /* @__PURE__ */
|
|
1990
|
+
e.workspaceIds.length > 0 && /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("p", {
|
|
1991
1991
|
className: "text-xs text-text-secondary mb-2",
|
|
1992
1992
|
children: m("devportal.workspaceScope", "Workspace Scope")
|
|
1993
|
-
}), /* @__PURE__ */
|
|
1993
|
+
}), /* @__PURE__ */ U("div", {
|
|
1994
1994
|
className: "flex flex-wrap gap-2",
|
|
1995
|
-
children: e.workspaceIds.map((e) => /* @__PURE__ */
|
|
1995
|
+
children: e.workspaceIds.map((e) => /* @__PURE__ */ U("code", {
|
|
1996
1996
|
className: "rounded bg-bg-sunken px-2 py-0.5 text-xs",
|
|
1997
1997
|
children: e
|
|
1998
1998
|
}, e))
|
|
1999
1999
|
})] }),
|
|
2000
|
-
/* @__PURE__ */
|
|
2000
|
+
/* @__PURE__ */ W("div", {
|
|
2001
2001
|
className: "flex items-center gap-4 text-xs text-text-secondary",
|
|
2002
2002
|
children: [
|
|
2003
|
-
e.expiresAt && /* @__PURE__ */
|
|
2003
|
+
e.expiresAt && /* @__PURE__ */ W("span", {
|
|
2004
2004
|
className: "flex items-center gap-1",
|
|
2005
2005
|
children: [
|
|
2006
|
-
/* @__PURE__ */
|
|
2006
|
+
/* @__PURE__ */ U(_e, { size: 12 }),
|
|
2007
2007
|
m("devportal.expires", "Expires"),
|
|
2008
2008
|
" ",
|
|
2009
2009
|
new Date(e.expiresAt).toLocaleDateString()
|
|
2010
2010
|
]
|
|
2011
2011
|
}),
|
|
2012
|
-
!e.expiresAt && e.status === "ACTIVE" && /* @__PURE__ */
|
|
2012
|
+
!e.expiresAt && e.status === "ACTIVE" && /* @__PURE__ */ W("span", {
|
|
2013
2013
|
className: "flex items-center gap-1",
|
|
2014
|
-
children: [/* @__PURE__ */
|
|
2014
|
+
children: [/* @__PURE__ */ U(he, {
|
|
2015
2015
|
size: 12,
|
|
2016
2016
|
className: "text-status-success-text"
|
|
2017
2017
|
}), m("devportal.noExpiration", "No expiration")]
|
|
2018
2018
|
}),
|
|
2019
|
-
e.revokedAt && /* @__PURE__ */
|
|
2019
|
+
e.revokedAt && /* @__PURE__ */ W("span", {
|
|
2020
2020
|
className: "flex items-center gap-1",
|
|
2021
2021
|
children: [
|
|
2022
|
-
/* @__PURE__ */
|
|
2022
|
+
/* @__PURE__ */ U(Le, {
|
|
2023
2023
|
size: 12,
|
|
2024
2024
|
className: "text-status-error-text"
|
|
2025
2025
|
}),
|
|
@@ -2032,53 +2032,53 @@ var Ke = [
|
|
|
2032
2032
|
})
|
|
2033
2033
|
]
|
|
2034
2034
|
}, e.id))
|
|
2035
|
-
}) : /* @__PURE__ */
|
|
2035
|
+
}) : /* @__PURE__ */ U(r, {
|
|
2036
2036
|
illustration: "empty-people",
|
|
2037
|
-
icon: /* @__PURE__ */
|
|
2037
|
+
icon: /* @__PURE__ */ U(Pe, { size: 32 }),
|
|
2038
2038
|
title: m("devportal.noDelegations", "No delegations"),
|
|
2039
2039
|
description: m("devportal.noDelegationsDescription", "Grant a delegation to allow this app to act on your behalf"),
|
|
2040
|
-
action: /* @__PURE__ */
|
|
2040
|
+
action: /* @__PURE__ */ W("button", {
|
|
2041
2041
|
onClick: i,
|
|
2042
2042
|
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",
|
|
2043
|
-
children: [/* @__PURE__ */
|
|
2043
|
+
children: [/* @__PURE__ */ U(z, { size: 16 }), m("devportal.grantDelegation", "Grant Delegation")]
|
|
2044
2044
|
})
|
|
2045
2045
|
})
|
|
2046
2046
|
]
|
|
2047
2047
|
});
|
|
2048
2048
|
}, st = ({ analytics: e }) => {
|
|
2049
|
-
let { t } =
|
|
2049
|
+
let { t } = G(), n = (e, n) => {
|
|
2050
2050
|
let r = t(e);
|
|
2051
2051
|
return r === e ? n : r;
|
|
2052
2052
|
}, i = e[0], a = e[1], o = (e, t) => t ? (e - t) / t * 100 : 0;
|
|
2053
|
-
return /* @__PURE__ */
|
|
2053
|
+
return /* @__PURE__ */ W("div", {
|
|
2054
2054
|
className: "space-y-6",
|
|
2055
|
-
children: [/* @__PURE__ */
|
|
2055
|
+
children: [/* @__PURE__ */ W("div", {
|
|
2056
2056
|
className: "grid gap-4 sm:grid-cols-4",
|
|
2057
2057
|
children: [
|
|
2058
|
-
/* @__PURE__ */
|
|
2058
|
+
/* @__PURE__ */ U(Z, {
|
|
2059
2059
|
label: n("devportal.activeUsers", "Active Users"),
|
|
2060
2060
|
value: i?.activeUsers.toLocaleString() || "0",
|
|
2061
2061
|
trend: a ? o(i.activeUsers, a.activeUsers) : void 0
|
|
2062
2062
|
}),
|
|
2063
|
-
/* @__PURE__ */
|
|
2063
|
+
/* @__PURE__ */ U(Z, {
|
|
2064
2064
|
label: n("devportal.apiCalls", "API Calls"),
|
|
2065
2065
|
value: i ? `${(i.apiCalls / 1e3).toFixed(1)}K` : "0",
|
|
2066
2066
|
trend: a ? o(i.apiCalls, a.apiCalls) : void 0
|
|
2067
2067
|
}),
|
|
2068
|
-
/* @__PURE__ */
|
|
2068
|
+
/* @__PURE__ */ U(Z, {
|
|
2069
2069
|
label: n("devportal.avgResponseTime", "Avg Response Time"),
|
|
2070
2070
|
value: i?.avgResponseTime ? `${i.avgResponseTime}ms` : n("devportal.notAvailable", "N/A"),
|
|
2071
2071
|
trend: a && i?.avgResponseTime ? -o(i.avgResponseTime, a.avgResponseTime || 1) : void 0
|
|
2072
2072
|
}),
|
|
2073
|
-
/* @__PURE__ */
|
|
2073
|
+
/* @__PURE__ */ U(Z, {
|
|
2074
2074
|
label: n("devportal.errorRate", "Error Rate"),
|
|
2075
2075
|
value: i && i.apiCalls > 0 ? `${(i.errors / i.apiCalls * 100).toFixed(2)}%` : "0%",
|
|
2076
2076
|
trend: a && i && i.apiCalls > 0 && a.apiCalls > 0 ? -o(i.errors / i.apiCalls, a.errors / a.apiCalls) : void 0
|
|
2077
2077
|
})
|
|
2078
2078
|
]
|
|
2079
|
-
}), /* @__PURE__ */
|
|
2079
|
+
}), /* @__PURE__ */ U(S, {
|
|
2080
2080
|
title: n("devportal.dailyBreakdown", "Daily Breakdown"),
|
|
2081
|
-
children: e.length > 0 ? /* @__PURE__ */
|
|
2081
|
+
children: e.length > 0 ? /* @__PURE__ */ U(te, {
|
|
2082
2082
|
data: e,
|
|
2083
2083
|
keyField: "id",
|
|
2084
2084
|
columns: [
|
|
@@ -2118,16 +2118,16 @@ var Ke = [
|
|
|
2118
2118
|
render: (e) => e.sessions.toLocaleString()
|
|
2119
2119
|
}
|
|
2120
2120
|
]
|
|
2121
|
-
}) : /* @__PURE__ */
|
|
2121
|
+
}) : /* @__PURE__ */ U(r, {
|
|
2122
2122
|
illustration: "empty-data",
|
|
2123
|
-
icon: /* @__PURE__ */
|
|
2123
|
+
icon: /* @__PURE__ */ U(me, { size: 32 }),
|
|
2124
2124
|
title: n("devportal.noAnalyticsData", "No analytics data"),
|
|
2125
2125
|
description: n("devportal.noAnalyticsDataDescription", "Analytics data will appear here once the application starts receiving traffic.")
|
|
2126
2126
|
})
|
|
2127
2127
|
})]
|
|
2128
2128
|
});
|
|
2129
2129
|
}, ct = "# 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}", lt = ({ app: t }) => {
|
|
2130
|
-
let { apiGatewayUrl: n, workspacesGatewayUrl: r, authToken: i } = e(), { t: a } =
|
|
2130
|
+
let { apiGatewayUrl: n, workspacesGatewayUrl: r, authToken: i } = e(), { t: a } = G(), o = (e, t) => {
|
|
2131
2131
|
let n = a(e);
|
|
2132
2132
|
return n === e ? t : n;
|
|
2133
2133
|
}, [s, c] = N(ct), [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 = A(async () => {
|
|
@@ -2164,21 +2164,21 @@ var Ke = [
|
|
|
2164
2164
|
]), S = A(() => {
|
|
2165
2165
|
i && v(i), b(!0);
|
|
2166
2166
|
}, [i]);
|
|
2167
|
-
return /* @__PURE__ */
|
|
2167
|
+
return /* @__PURE__ */ W("div", {
|
|
2168
2168
|
className: "space-y-4",
|
|
2169
2169
|
children: [
|
|
2170
|
-
/* @__PURE__ */
|
|
2170
|
+
/* @__PURE__ */ W("div", {
|
|
2171
2171
|
className: "flex items-center justify-between",
|
|
2172
|
-
children: [/* @__PURE__ */
|
|
2172
|
+
children: [/* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("h3", {
|
|
2173
2173
|
className: "text-lg font-semibold",
|
|
2174
2174
|
children: o("devportal.apiPlayground", "API Playground")
|
|
2175
|
-
}), /* @__PURE__ */
|
|
2175
|
+
}), /* @__PURE__ */ W("p", {
|
|
2176
2176
|
className: "text-sm text-text-secondary",
|
|
2177
2177
|
children: [
|
|
2178
2178
|
o("devportal.apiPlaygroundDescription", "Test GraphQL APIs in the context of"),
|
|
2179
2179
|
" ",
|
|
2180
|
-
/* @__PURE__ */
|
|
2181
|
-
t.appId && /* @__PURE__ */
|
|
2180
|
+
/* @__PURE__ */ U("strong", { children: t.name }),
|
|
2181
|
+
t.appId && /* @__PURE__ */ W("span", {
|
|
2182
2182
|
className: "ml-1 text-xs text-text-secondary",
|
|
2183
2183
|
children: [
|
|
2184
2184
|
"(OAuth App: ",
|
|
@@ -2187,39 +2187,39 @@ var Ke = [
|
|
|
2187
2187
|
]
|
|
2188
2188
|
})
|
|
2189
2189
|
]
|
|
2190
|
-
})] }), /* @__PURE__ */
|
|
2190
|
+
})] }), /* @__PURE__ */ W("button", {
|
|
2191
2191
|
onClick: S,
|
|
2192
2192
|
className: "flex items-center gap-2 rounded-md border px-3 py-1.5 text-sm font-medium hover:bg-accent transition-colors",
|
|
2193
|
-
children: [/* @__PURE__ */
|
|
2193
|
+
children: [/* @__PURE__ */ U(Ce, { size: 14 }), o("devportal.autoFillCredentials", "Auto-fill Credentials")]
|
|
2194
2194
|
})]
|
|
2195
2195
|
}),
|
|
2196
|
-
y && /* @__PURE__ */
|
|
2196
|
+
y && /* @__PURE__ */ W("div", {
|
|
2197
2197
|
className: "rounded-lg border bg-status-info-bg-subtle p-4 text-sm space-y-2",
|
|
2198
2198
|
children: [
|
|
2199
|
-
/* @__PURE__ */
|
|
2199
|
+
/* @__PURE__ */ U("p", {
|
|
2200
2200
|
className: "font-medium text-status-info-text",
|
|
2201
2201
|
children: o("devportal.authenticationGuide", "Authentication Guide")
|
|
2202
2202
|
}),
|
|
2203
|
-
/* @__PURE__ */
|
|
2203
|
+
/* @__PURE__ */ W("p", {
|
|
2204
2204
|
className: "text-status-info-text",
|
|
2205
2205
|
children: [
|
|
2206
2206
|
o("devportal.authenticationGuideText", "Your current session token has been filled in. For app-level authentication (Client Credentials flow), use the"),
|
|
2207
2207
|
" ",
|
|
2208
|
-
/* @__PURE__ */
|
|
2208
|
+
/* @__PURE__ */ U("strong", { children: o("devportal.oauthClientsTab", "OAuth Clients") }),
|
|
2209
2209
|
" ",
|
|
2210
2210
|
o("devportal.authenticationGuideText2", "tab to get the app's clientId and clientSecret, then call:")
|
|
2211
2211
|
]
|
|
2212
2212
|
}),
|
|
2213
|
-
/* @__PURE__ */
|
|
2213
|
+
/* @__PURE__ */ U("pre", {
|
|
2214
2214
|
className: "rounded bg-status-info-bg-subtle p-2 text-xs overflow-x-auto text-status-info-text",
|
|
2215
2215
|
children: "mutation {\n authenticateApp(input: {\n clientId: \"<your-client-id>\"\n clientSecret: \"<your-client-secret>\"\n scopes: []\n }) {\n accessToken\n tokenType\n expiresIn\n }\n}"
|
|
2216
2216
|
}),
|
|
2217
|
-
/* @__PURE__ */
|
|
2217
|
+
/* @__PURE__ */ W("p", {
|
|
2218
2218
|
className: "text-status-info-text",
|
|
2219
2219
|
children: [
|
|
2220
2220
|
o("devportal.useReturnedAccessToken", "Use the returned"),
|
|
2221
2221
|
" ",
|
|
2222
|
-
/* @__PURE__ */
|
|
2222
|
+
/* @__PURE__ */ U("code", {
|
|
2223
2223
|
className: "bg-status-info-bg-subtle px-1 rounded",
|
|
2224
2224
|
children: "accessToken"
|
|
2225
2225
|
}),
|
|
@@ -2227,79 +2227,79 @@ var Ke = [
|
|
|
2227
2227
|
o("devportal.asBearerToken", "as the Bearer token below.")
|
|
2228
2228
|
]
|
|
2229
2229
|
}),
|
|
2230
|
-
/* @__PURE__ */
|
|
2230
|
+
/* @__PURE__ */ U("button", {
|
|
2231
2231
|
onClick: () => b(!1),
|
|
2232
2232
|
className: "text-xs text-accent-blue hover:underline",
|
|
2233
2233
|
children: o("devportal.dismiss", "Dismiss")
|
|
2234
2234
|
})
|
|
2235
2235
|
]
|
|
2236
2236
|
}),
|
|
2237
|
-
/* @__PURE__ */
|
|
2237
|
+
/* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("label", {
|
|
2238
2238
|
className: "block text-sm font-medium mb-1",
|
|
2239
2239
|
children: o("devportal.gatewayEndpoint", "Gateway Endpoint")
|
|
2240
|
-
}), /* @__PURE__ */
|
|
2240
|
+
}), /* @__PURE__ */ W("div", {
|
|
2241
2241
|
className: "flex gap-2",
|
|
2242
|
-
children: [/* @__PURE__ */
|
|
2242
|
+
children: [/* @__PURE__ */ U("input", {
|
|
2243
2243
|
type: "text",
|
|
2244
2244
|
value: h,
|
|
2245
2245
|
onChange: (e) => g(e.target.value),
|
|
2246
2246
|
className: "flex-1 rounded-md border px-3 py-2 text-sm font-mono bg-bg-surface"
|
|
2247
|
-
}), /* @__PURE__ */
|
|
2247
|
+
}), /* @__PURE__ */ W("select", {
|
|
2248
2248
|
onChange: (e) => g(e.target.value),
|
|
2249
2249
|
className: "rounded-md border px-3 py-2 text-sm bg-bg-surface",
|
|
2250
2250
|
value: h,
|
|
2251
|
-
children: [/* @__PURE__ */
|
|
2251
|
+
children: [/* @__PURE__ */ U("option", {
|
|
2252
2252
|
value: `${n || "https://gw-global.local.burdenoff.com"}/global/graphql`,
|
|
2253
2253
|
children: o("devportal.globalGateway", "Global Gateway")
|
|
2254
|
-
}), /* @__PURE__ */
|
|
2254
|
+
}), /* @__PURE__ */ U("option", {
|
|
2255
2255
|
value: `${r || "https://gw-wspace.local.burdenoff.com"}/workspaces/graphql`,
|
|
2256
2256
|
children: o("devportal.workspaceGateway", "Workspace Gateway")
|
|
2257
2257
|
})]
|
|
2258
2258
|
})]
|
|
2259
2259
|
})] }),
|
|
2260
|
-
/* @__PURE__ */
|
|
2260
|
+
/* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("label", {
|
|
2261
2261
|
className: "block text-sm font-medium mb-1",
|
|
2262
2262
|
children: o("devportal.bearerToken", "Bearer Token")
|
|
2263
|
-
}), /* @__PURE__ */
|
|
2263
|
+
}), /* @__PURE__ */ U("input", {
|
|
2264
2264
|
type: "password",
|
|
2265
2265
|
value: _,
|
|
2266
2266
|
onChange: (e) => v(e.target.value),
|
|
2267
2267
|
placeholder: o("devportal.pasteAccessToken", "Paste access token here..."),
|
|
2268
2268
|
className: "w-full rounded-md border px-3 py-2 text-sm font-mono bg-bg-surface"
|
|
2269
2269
|
})] }),
|
|
2270
|
-
/* @__PURE__ */
|
|
2270
|
+
/* @__PURE__ */ W("div", {
|
|
2271
2271
|
className: "grid grid-cols-1 lg:grid-cols-2 gap-4",
|
|
2272
|
-
children: [/* @__PURE__ */
|
|
2272
|
+
children: [/* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("label", {
|
|
2273
2273
|
className: "block text-sm font-medium mb-1",
|
|
2274
2274
|
children: o("devportal.query", "Query")
|
|
2275
|
-
}), /* @__PURE__ */
|
|
2275
|
+
}), /* @__PURE__ */ U("textarea", {
|
|
2276
2276
|
value: s,
|
|
2277
2277
|
onChange: (e) => c(e.target.value),
|
|
2278
2278
|
className: "w-full h-64 rounded-md border px-3 py-2 text-sm font-mono bg-bg-surface resize-y",
|
|
2279
2279
|
spellCheck: !1
|
|
2280
|
-
})] }), /* @__PURE__ */
|
|
2280
|
+
})] }), /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("label", {
|
|
2281
2281
|
className: "block text-sm font-medium mb-1",
|
|
2282
2282
|
children: o("devportal.variablesJson", "Variables (JSON)")
|
|
2283
|
-
}), /* @__PURE__ */
|
|
2283
|
+
}), /* @__PURE__ */ U("textarea", {
|
|
2284
2284
|
value: l,
|
|
2285
2285
|
onChange: (e) => u(e.target.value),
|
|
2286
2286
|
className: "w-full h-64 rounded-md border px-3 py-2 text-sm font-mono bg-bg-surface resize-y",
|
|
2287
2287
|
spellCheck: !1
|
|
2288
2288
|
})] })]
|
|
2289
2289
|
}),
|
|
2290
|
-
/* @__PURE__ */
|
|
2290
|
+
/* @__PURE__ */ W("button", {
|
|
2291
2291
|
onClick: x,
|
|
2292
2292
|
disabled: p,
|
|
2293
2293
|
className: "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",
|
|
2294
|
-
children: [p ? /* @__PURE__ */
|
|
2294
|
+
children: [p ? /* @__PURE__ */ U(R, {
|
|
2295
2295
|
size: 16,
|
|
2296
2296
|
className: "animate-spin"
|
|
2297
|
-
}) : /* @__PURE__ */
|
|
2297
|
+
}) : /* @__PURE__ */ U(L, { size: 16 }), p ? o("devportal.executing", "Executing...") : o("devportal.executeQuery", "Execute Query")]
|
|
2298
2298
|
}),
|
|
2299
|
-
d && /* @__PURE__ */
|
|
2299
|
+
d && /* @__PURE__ */ W("div", { children: [/* @__PURE__ */ U("label", {
|
|
2300
2300
|
className: "block text-sm font-medium mb-1",
|
|
2301
2301
|
children: o("devportal.response", "Response")
|
|
2302
|
-
}), /* @__PURE__ */
|
|
2302
|
+
}), /* @__PURE__ */ U("pre", {
|
|
2303
2303
|
className: "w-full max-h-96 overflow-auto rounded-md border bg-bg-sunken p-4 text-xs font-mono",
|
|
2304
2304
|
children: d
|
|
2305
2305
|
})] })
|
|
@@ -2313,46 +2313,46 @@ var Ke = [
|
|
|
2313
2313
|
r((await s(e)).downloadUrl);
|
|
2314
2314
|
} catch {}
|
|
2315
2315
|
}, [s, r]);
|
|
2316
|
-
return /* @__PURE__ */
|
|
2316
|
+
return /* @__PURE__ */ W("div", {
|
|
2317
2317
|
className: "space-y-1.5",
|
|
2318
2318
|
children: [
|
|
2319
|
-
/* @__PURE__ */
|
|
2319
|
+
/* @__PURE__ */ U("label", {
|
|
2320
2320
|
className: "text-sm font-medium",
|
|
2321
2321
|
children: e
|
|
2322
2322
|
}),
|
|
2323
|
-
/* @__PURE__ */
|
|
2323
|
+
/* @__PURE__ */ W("div", {
|
|
2324
2324
|
className: "flex gap-3 items-start",
|
|
2325
|
-
children: [/* @__PURE__ */
|
|
2325
|
+
children: [/* @__PURE__ */ W("div", {
|
|
2326
2326
|
className: t("relative shrink-0 w-20 rounded-lg border border-border-subtle bg-bg-sunken overflow-hidden flex items-center justify-center", o),
|
|
2327
|
-
children: [n && !f ? /* @__PURE__ */
|
|
2327
|
+
children: [n && !f ? /* @__PURE__ */ U("img", {
|
|
2328
2328
|
src: n,
|
|
2329
2329
|
alt: e,
|
|
2330
2330
|
className: "w-full h-full object-cover",
|
|
2331
2331
|
onError: () => p(!0)
|
|
2332
|
-
}) : /* @__PURE__ */
|
|
2332
|
+
}) : /* @__PURE__ */ U(B, {
|
|
2333
2333
|
size: 18,
|
|
2334
2334
|
className: "text-text-secondary opacity-40"
|
|
2335
|
-
}), c && /* @__PURE__ */
|
|
2335
|
+
}), c && /* @__PURE__ */ W("div", {
|
|
2336
2336
|
className: "absolute inset-0 bg-bg-overlay flex flex-col items-center justify-center gap-1",
|
|
2337
|
-
children: [/* @__PURE__ */
|
|
2337
|
+
children: [/* @__PURE__ */ U(R, {
|
|
2338
2338
|
size: 14,
|
|
2339
2339
|
className: "animate-spin text-white"
|
|
2340
|
-
}), /* @__PURE__ */
|
|
2340
|
+
}), /* @__PURE__ */ W("span", {
|
|
2341
2341
|
className: "text-white text-xs",
|
|
2342
2342
|
children: [l, "%"]
|
|
2343
2343
|
})]
|
|
2344
2344
|
})]
|
|
2345
|
-
}), /* @__PURE__ */
|
|
2345
|
+
}), /* @__PURE__ */ W("div", {
|
|
2346
2346
|
className: "flex-1 space-y-1.5",
|
|
2347
2347
|
children: [
|
|
2348
|
-
/* @__PURE__ */
|
|
2348
|
+
/* @__PURE__ */ U("input", {
|
|
2349
2349
|
type: "url",
|
|
2350
2350
|
value: n,
|
|
2351
2351
|
onChange: (e) => r(e.target.value),
|
|
2352
2352
|
placeholder: "https://...",
|
|
2353
2353
|
className: "w-full rounded-md border border-border-subtle bg-bg-input px-3 py-1.5 text-sm placeholder:text-text-placeholder focus:outline-none focus:ring-2 focus:ring-primary/30"
|
|
2354
2354
|
}),
|
|
2355
|
-
/* @__PURE__ */
|
|
2355
|
+
/* @__PURE__ */ U("input", {
|
|
2356
2356
|
ref: d,
|
|
2357
2357
|
type: "file",
|
|
2358
2358
|
accept: a,
|
|
@@ -2362,21 +2362,21 @@ var Ke = [
|
|
|
2362
2362
|
t && h(t), e.target.value = "";
|
|
2363
2363
|
}
|
|
2364
2364
|
}),
|
|
2365
|
-
/* @__PURE__ */
|
|
2365
|
+
/* @__PURE__ */ W("button", {
|
|
2366
2366
|
type: "button",
|
|
2367
2367
|
disabled: c,
|
|
2368
2368
|
onClick: () => d.current?.click(),
|
|
2369
2369
|
className: "inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 text-xs font-medium hover:bg-bg-sunken transition-colors disabled:opacity-50",
|
|
2370
|
-
children: [/* @__PURE__ */
|
|
2370
|
+
children: [/* @__PURE__ */ U(B, { size: 11 }), c ? `Uploading… ${l}%` : "Upload image"]
|
|
2371
2371
|
}),
|
|
2372
|
-
u && /* @__PURE__ */
|
|
2372
|
+
u && /* @__PURE__ */ U("p", {
|
|
2373
2373
|
className: "text-xs text-status-error-text",
|
|
2374
2374
|
children: u
|
|
2375
2375
|
})
|
|
2376
2376
|
]
|
|
2377
2377
|
})]
|
|
2378
2378
|
}),
|
|
2379
|
-
i && /* @__PURE__ */
|
|
2379
|
+
i && /* @__PURE__ */ U("p", {
|
|
2380
2380
|
className: "text-xs text-text-secondary",
|
|
2381
2381
|
children: i
|
|
2382
2382
|
})
|
|
@@ -2398,53 +2398,53 @@ var Ke = [
|
|
|
2398
2398
|
}, f = (t) => {
|
|
2399
2399
|
n(e.filter((e, n) => n !== t));
|
|
2400
2400
|
};
|
|
2401
|
-
return /* @__PURE__ */
|
|
2401
|
+
return /* @__PURE__ */ W("div", {
|
|
2402
2402
|
className: "space-y-2",
|
|
2403
2403
|
children: [
|
|
2404
|
-
/* @__PURE__ */
|
|
2404
|
+
/* @__PURE__ */ W("div", {
|
|
2405
2405
|
className: "flex flex-col gap-0.5",
|
|
2406
|
-
children: [/* @__PURE__ */
|
|
2406
|
+
children: [/* @__PURE__ */ U("label", {
|
|
2407
2407
|
className: "text-sm font-medium",
|
|
2408
2408
|
children: "Screenshots"
|
|
2409
|
-
}), /* @__PURE__ */
|
|
2409
|
+
}), /* @__PURE__ */ U("p", {
|
|
2410
2410
|
className: "text-xs text-text-muted",
|
|
2411
2411
|
children: "Shown in the horizontal preview strip below the hero — wide landscape proportions work best (16:9)"
|
|
2412
2412
|
})]
|
|
2413
2413
|
}),
|
|
2414
|
-
/* @__PURE__ */
|
|
2414
|
+
/* @__PURE__ */ W("div", {
|
|
2415
2415
|
className: "flex flex-wrap gap-3",
|
|
2416
|
-
children: [e.map((e, t) => /* @__PURE__ */
|
|
2416
|
+
children: [e.map((e, t) => /* @__PURE__ */ W("div", {
|
|
2417
2417
|
className: "relative group w-36 aspect-video rounded-lg border border-border-subtle overflow-hidden bg-bg-sunken",
|
|
2418
|
-
children: [/* @__PURE__ */
|
|
2418
|
+
children: [/* @__PURE__ */ U("img", {
|
|
2419
2419
|
src: e,
|
|
2420
2420
|
alt: `Screenshot ${t + 1}`,
|
|
2421
2421
|
className: "w-full h-full object-cover"
|
|
2422
|
-
}), /* @__PURE__ */
|
|
2422
|
+
}), /* @__PURE__ */ U("button", {
|
|
2423
2423
|
type: "button",
|
|
2424
2424
|
onClick: () => f(t),
|
|
2425
2425
|
className: "absolute top-1 right-1 rounded-full bg-bg-overlay text-white p-0.5 opacity-0 group-hover:opacity-100 transition-opacity",
|
|
2426
|
-
children: /* @__PURE__ */
|
|
2426
|
+
children: /* @__PURE__ */ U(Ie, { size: 12 })
|
|
2427
2427
|
})]
|
|
2428
|
-
}, t)), /* @__PURE__ */
|
|
2428
|
+
}, t)), /* @__PURE__ */ U("button", {
|
|
2429
2429
|
type: "button",
|
|
2430
2430
|
disabled: i,
|
|
2431
2431
|
onClick: () => s.current?.click(),
|
|
2432
2432
|
className: t("w-36 aspect-video rounded-lg border-2 border-dashed border-border-subtle flex flex-col items-center justify-center gap-1.5 text-text-secondary hover:border-border-strong hover:bg-bg-sunken transition-colors disabled:opacity-50"),
|
|
2433
|
-
children: i ? /* @__PURE__ */
|
|
2433
|
+
children: i ? /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(R, {
|
|
2434
2434
|
size: 18,
|
|
2435
2435
|
className: "animate-spin text-primary"
|
|
2436
|
-
}), /* @__PURE__ */
|
|
2436
|
+
}), /* @__PURE__ */ W("span", {
|
|
2437
2437
|
className: "text-xs",
|
|
2438
2438
|
children: [a, "%"]
|
|
2439
|
-
})] }) : /* @__PURE__ */
|
|
2439
|
+
})] }) : /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(B, { size: 18 }), /* @__PURE__ */ U("span", {
|
|
2440
2440
|
className: "text-xs",
|
|
2441
2441
|
children: "Add screenshot"
|
|
2442
2442
|
})] })
|
|
2443
2443
|
})]
|
|
2444
2444
|
}),
|
|
2445
|
-
/* @__PURE__ */
|
|
2445
|
+
/* @__PURE__ */ W("div", {
|
|
2446
2446
|
className: "flex gap-2",
|
|
2447
|
-
children: [/* @__PURE__ */
|
|
2447
|
+
children: [/* @__PURE__ */ U("input", {
|
|
2448
2448
|
type: "url",
|
|
2449
2449
|
value: c,
|
|
2450
2450
|
onChange: (e) => l(e.target.value),
|
|
@@ -2453,7 +2453,7 @@ var Ke = [
|
|
|
2453
2453
|
},
|
|
2454
2454
|
placeholder: "https://... paste a screenshot URL",
|
|
2455
2455
|
className: "flex-1 rounded-md border border-border-subtle bg-bg-input px-3 py-1.5 text-sm placeholder:text-text-placeholder focus:outline-none focus:ring-2 focus:ring-primary/30"
|
|
2456
|
-
}), /* @__PURE__ */
|
|
2456
|
+
}), /* @__PURE__ */ U("button", {
|
|
2457
2457
|
type: "button",
|
|
2458
2458
|
onClick: d,
|
|
2459
2459
|
disabled: !c.trim(),
|
|
@@ -2461,7 +2461,7 @@ var Ke = [
|
|
|
2461
2461
|
children: "Add"
|
|
2462
2462
|
})]
|
|
2463
2463
|
}),
|
|
2464
|
-
/* @__PURE__ */
|
|
2464
|
+
/* @__PURE__ */ U("input", {
|
|
2465
2465
|
ref: s,
|
|
2466
2466
|
type: "file",
|
|
2467
2467
|
accept: "image/png,image/jpeg,image/webp,image/gif",
|
|
@@ -2471,7 +2471,7 @@ var Ke = [
|
|
|
2471
2471
|
t && u(t), e.target.value = "";
|
|
2472
2472
|
}
|
|
2473
2473
|
}),
|
|
2474
|
-
o && /* @__PURE__ */
|
|
2474
|
+
o && /* @__PURE__ */ U("p", {
|
|
2475
2475
|
className: "text-xs text-status-error-text",
|
|
2476
2476
|
children: o
|
|
2477
2477
|
})
|
|
@@ -2587,7 +2587,7 @@ function mt(e) {
|
|
|
2587
2587
|
};
|
|
2588
2588
|
}
|
|
2589
2589
|
var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i = !1, onNavigateToVersions: a, onNavigateToPricing: o, onNavigateToSubmission: s }) => {
|
|
2590
|
-
let { workspacesGatewayUrl: c, authToken: l, workspaceId: u, getWorkspaceToken: d } = e(), { t: f } =
|
|
2590
|
+
let { workspacesGatewayUrl: c, authToken: l, workspaceId: u, getWorkspaceToken: d } = e(), { t: f } = G(), p = (e, t) => {
|
|
2591
2591
|
let n = f(e);
|
|
2592
2592
|
return n === e ? t : n;
|
|
2593
2593
|
}, [m, h] = N(() => mt(t)), [g, _] = N(!1), [v, y] = N(null), x = M(mt(t)), C = M(t);
|
|
@@ -2642,21 +2642,21 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2642
2642
|
} finally {
|
|
2643
2643
|
_(!1);
|
|
2644
2644
|
}
|
|
2645
|
-
}, { upload: te, uploading: ne, progress: ae, error: oe } = ue(c, l, u, d, "/DevPortal/Assets"), { upload: ce, uploading: le, progress: A, error: j } = ue(c, l, u, d, "/DevPortal/Assets"), { upload: fe, uploading: pe, progress: me, error:
|
|
2646
|
-
return /* @__PURE__ */
|
|
2645
|
+
}, { upload: te, uploading: ne, progress: ae, error: oe } = ue(c, l, u, d, "/DevPortal/Assets"), { upload: ce, uploading: le, progress: A, error: j } = ue(c, l, u, d, "/DevPortal/Assets"), { upload: fe, uploading: pe, progress: me, error: I } = ue(c, l, u, d, "/DevPortal/Assets"), ve = Y.has(m.manifestItemType), ye = t.status === "SUBMITTED";
|
|
2646
|
+
return /* @__PURE__ */ W("div", {
|
|
2647
2647
|
className: "space-y-8 max-w-3xl",
|
|
2648
2648
|
children: [
|
|
2649
|
-
t.status === "PUBLISHED" ? /* @__PURE__ */
|
|
2649
|
+
t.status === "PUBLISHED" ? /* @__PURE__ */ W("div", {
|
|
2650
2650
|
className: "flex items-start gap-3 rounded-lg border border-success/30 bg-success/10 px-4 py-3",
|
|
2651
|
-
children: [/* @__PURE__ */
|
|
2651
|
+
children: [/* @__PURE__ */ U(he, {
|
|
2652
2652
|
size: 16,
|
|
2653
2653
|
className: "text-success mt-0.5 shrink-0"
|
|
2654
|
-
}), /* @__PURE__ */
|
|
2654
|
+
}), /* @__PURE__ */ W("div", {
|
|
2655
2655
|
className: "text-sm",
|
|
2656
|
-
children: [/* @__PURE__ */
|
|
2656
|
+
children: [/* @__PURE__ */ U("span", {
|
|
2657
2657
|
className: "font-medium text-success",
|
|
2658
2658
|
children: p("devportal.storeListing.published", "Published")
|
|
2659
|
-
}), t.publishedAt && /* @__PURE__ */
|
|
2659
|
+
}), t.publishedAt && /* @__PURE__ */ W("span", {
|
|
2660
2660
|
className: "text-text-secondary ml-2",
|
|
2661
2661
|
children: [
|
|
2662
2662
|
p("devportal.storeListing.since", "since"),
|
|
@@ -2665,59 +2665,59 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2665
2665
|
]
|
|
2666
2666
|
})]
|
|
2667
2667
|
})]
|
|
2668
|
-
}) : ye ? /* @__PURE__ */
|
|
2668
|
+
}) : ye ? /* @__PURE__ */ W("div", {
|
|
2669
2669
|
className: "flex items-center justify-between gap-3 rounded-lg border border-primary/30 bg-action-primary-bg/5 px-4 py-3",
|
|
2670
|
-
children: [/* @__PURE__ */
|
|
2670
|
+
children: [/* @__PURE__ */ W("div", {
|
|
2671
2671
|
className: "flex items-start gap-3",
|
|
2672
|
-
children: [/* @__PURE__ */
|
|
2672
|
+
children: [/* @__PURE__ */ U(_e, {
|
|
2673
2673
|
size: 16,
|
|
2674
2674
|
className: "text-primary mt-0.5 shrink-0"
|
|
2675
|
-
}), /* @__PURE__ */
|
|
2675
|
+
}), /* @__PURE__ */ W("div", {
|
|
2676
2676
|
className: "text-sm",
|
|
2677
2677
|
children: [
|
|
2678
|
-
/* @__PURE__ */
|
|
2678
|
+
/* @__PURE__ */ U("span", {
|
|
2679
2679
|
className: "font-medium text-primary",
|
|
2680
2680
|
children: p("devportal.storeListing.underReview", "Submitted for review")
|
|
2681
2681
|
}),
|
|
2682
|
-
t.submittedAt && /* @__PURE__ */
|
|
2682
|
+
t.submittedAt && /* @__PURE__ */ U("span", {
|
|
2683
2683
|
className: "text-text-secondary ml-2",
|
|
2684
2684
|
children: new Date(t.submittedAt).toLocaleDateString()
|
|
2685
2685
|
}),
|
|
2686
|
-
t.reviewStatus && /* @__PURE__ */
|
|
2686
|
+
t.reviewStatus && /* @__PURE__ */ W("span", {
|
|
2687
2687
|
className: "text-text-secondary ml-2",
|
|
2688
2688
|
children: ["· ", t.reviewStatus]
|
|
2689
2689
|
})
|
|
2690
2690
|
]
|
|
2691
2691
|
})]
|
|
2692
|
-
}), s && /* @__PURE__ */
|
|
2692
|
+
}), s && /* @__PURE__ */ W("button", {
|
|
2693
2693
|
type: "button",
|
|
2694
2694
|
onClick: s,
|
|
2695
2695
|
className: "shrink-0 text-xs text-primary hover:underline font-medium flex items-center gap-1",
|
|
2696
|
-
children: [p("devportal.viewStatus", "View Status"), /* @__PURE__ */
|
|
2696
|
+
children: [p("devportal.viewStatus", "View Status"), /* @__PURE__ */ U(L, { size: 12 })]
|
|
2697
2697
|
})]
|
|
2698
|
-
}) : /* @__PURE__ */
|
|
2698
|
+
}) : /* @__PURE__ */ W("div", {
|
|
2699
2699
|
className: "flex items-start gap-3 rounded-lg border border-warning/30 bg-warning/5 px-4 py-3",
|
|
2700
|
-
children: [/* @__PURE__ */
|
|
2700
|
+
children: [/* @__PURE__ */ U(P, {
|
|
2701
2701
|
size: 16,
|
|
2702
2702
|
className: "text-warning mt-0.5 shrink-0"
|
|
2703
|
-
}), /* @__PURE__ */
|
|
2703
|
+
}), /* @__PURE__ */ W("div", {
|
|
2704
2704
|
className: "text-sm",
|
|
2705
|
-
children: [/* @__PURE__ */
|
|
2705
|
+
children: [/* @__PURE__ */ U("span", {
|
|
2706
2706
|
className: "font-medium text-warning",
|
|
2707
2707
|
children: p("devportal.storeListing.draft", "Draft")
|
|
2708
|
-
}), /* @__PURE__ */
|
|
2708
|
+
}), /* @__PURE__ */ U("span", {
|
|
2709
2709
|
className: "text-text-secondary ml-2",
|
|
2710
2710
|
children: p("devportal.storeListing.draftHint", "Complete your store listing and submit for review to publish.")
|
|
2711
2711
|
})]
|
|
2712
2712
|
})]
|
|
2713
2713
|
}),
|
|
2714
|
-
/* @__PURE__ */
|
|
2714
|
+
/* @__PURE__ */ U(S, {
|
|
2715
2715
|
title: p("devportal.package", "Package"),
|
|
2716
2716
|
description: p("devportal.packageDescription", "Technical configuration — how FluidGrid installs and runs this item"),
|
|
2717
|
-
children: /* @__PURE__ */
|
|
2717
|
+
children: /* @__PURE__ */ W("div", {
|
|
2718
2718
|
className: "space-y-6",
|
|
2719
2719
|
children: [
|
|
2720
|
-
/* @__PURE__ */
|
|
2720
|
+
/* @__PURE__ */ U(re, {
|
|
2721
2721
|
label: p("devportal.storeItemType", "Item Type"),
|
|
2722
2722
|
value: m.manifestItemType,
|
|
2723
2723
|
onChange: (e) => {
|
|
@@ -2728,13 +2728,13 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2728
2728
|
placeholder: p("devportal.selectItemType", "Select item type…"),
|
|
2729
2729
|
hint: p("devportal.storeItemTypeHint", "Sub-category shown in the marketplace (e.g. Node vs Agent vs Parser)")
|
|
2730
2730
|
}),
|
|
2731
|
-
/* @__PURE__ */
|
|
2731
|
+
/* @__PURE__ */ U(k, {
|
|
2732
2732
|
label: p("devportal.manifestDisplayName", "Display Name"),
|
|
2733
2733
|
value: m.manifestDisplayName,
|
|
2734
2734
|
onChange: (e) => E("manifestDisplayName", e.target.value),
|
|
2735
2735
|
placeholder: "My Awesome Node"
|
|
2736
2736
|
}),
|
|
2737
|
-
ve && /* @__PURE__ */
|
|
2737
|
+
ve && /* @__PURE__ */ U(ie, {
|
|
2738
2738
|
label: t.appType === "WORKFLOW" ? p("devportal.workflowJsonContent", "Workflow Canvas Definition (JSON)") : p("devportal.jsonContent", "Template Definition (JSON)"),
|
|
2739
2739
|
value: m.manifestJsonContent,
|
|
2740
2740
|
onChange: (e) => E("manifestJsonContent", e.target.value),
|
|
@@ -2745,15 +2745,15 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2745
2745
|
]
|
|
2746
2746
|
})
|
|
2747
2747
|
}),
|
|
2748
|
-
/* @__PURE__ */
|
|
2748
|
+
/* @__PURE__ */ U(S, {
|
|
2749
2749
|
title: p("devportal.storePresentation", "Store Presence"),
|
|
2750
2750
|
description: p("devportal.storePresentationDescription", "Visual assets and copy shown to users browsing the marketplace"),
|
|
2751
|
-
children: /* @__PURE__ */
|
|
2751
|
+
children: /* @__PURE__ */ W("div", {
|
|
2752
2752
|
className: "space-y-5",
|
|
2753
2753
|
children: [
|
|
2754
|
-
/* @__PURE__ */
|
|
2754
|
+
/* @__PURE__ */ W("div", {
|
|
2755
2755
|
className: "grid gap-5 sm:grid-cols-2",
|
|
2756
|
-
children: [/* @__PURE__ */
|
|
2756
|
+
children: [/* @__PURE__ */ U(ut, {
|
|
2757
2757
|
label: p("devportal.iconUrl", "Icon"),
|
|
2758
2758
|
value: m.iconUrl,
|
|
2759
2759
|
onChange: (e) => E("iconUrl", e),
|
|
@@ -2763,7 +2763,7 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2763
2763
|
uploading: ne,
|
|
2764
2764
|
progress: ae,
|
|
2765
2765
|
error: oe
|
|
2766
|
-
}), /* @__PURE__ */
|
|
2766
|
+
}), /* @__PURE__ */ U(ut, {
|
|
2767
2767
|
label: p("devportal.bannerUrl", "Banner"),
|
|
2768
2768
|
value: m.bannerUrl,
|
|
2769
2769
|
onChange: (e) => E("bannerUrl", e),
|
|
@@ -2775,14 +2775,14 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2775
2775
|
error: j
|
|
2776
2776
|
})]
|
|
2777
2777
|
}),
|
|
2778
|
-
/* @__PURE__ */
|
|
2778
|
+
/* @__PURE__ */ U(k, {
|
|
2779
2779
|
label: p("devportal.videoUrl", "Demo Video URL"),
|
|
2780
2780
|
value: m.videoUrl,
|
|
2781
2781
|
onChange: (e) => E("videoUrl", e.target.value),
|
|
2782
2782
|
placeholder: "https://...",
|
|
2783
2783
|
hint: p("devportal.videoUrlHint", "YouTube or Vimeo embed URL")
|
|
2784
2784
|
}),
|
|
2785
|
-
/* @__PURE__ */
|
|
2785
|
+
/* @__PURE__ */ U(se, {
|
|
2786
2786
|
label: p("devportal.shortDescription", "Short Description"),
|
|
2787
2787
|
value: m.shortDescription,
|
|
2788
2788
|
onChange: (e) => E("shortDescription", e),
|
|
@@ -2790,62 +2790,62 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2790
2790
|
rows: 2,
|
|
2791
2791
|
hint: `${m.shortDescription.length}/200 · ${p("devportal.shortDescHint", "Shown in search results and cards")}`
|
|
2792
2792
|
}),
|
|
2793
|
-
/* @__PURE__ */
|
|
2793
|
+
/* @__PURE__ */ U(se, {
|
|
2794
2794
|
label: p("devportal.longDescription", "Full Description"),
|
|
2795
2795
|
value: m.description,
|
|
2796
2796
|
onChange: (e) => E("description", e),
|
|
2797
2797
|
rows: 5,
|
|
2798
2798
|
hint: p("devportal.fullDescHint", "Markdown supported")
|
|
2799
2799
|
}),
|
|
2800
|
-
/* @__PURE__ */
|
|
2800
|
+
/* @__PURE__ */ U(dt, {
|
|
2801
2801
|
urls: m.screenshotsText.split("\n").map((e) => e.trim()).filter(Boolean),
|
|
2802
2802
|
onChange: (e) => E("screenshotsText", e.join("\n")),
|
|
2803
2803
|
upload: fe,
|
|
2804
2804
|
uploading: pe,
|
|
2805
2805
|
progress: me,
|
|
2806
|
-
error:
|
|
2806
|
+
error: I
|
|
2807
2807
|
})
|
|
2808
2808
|
]
|
|
2809
2809
|
})
|
|
2810
2810
|
}),
|
|
2811
|
-
/* @__PURE__ */
|
|
2811
|
+
/* @__PURE__ */ U(S, {
|
|
2812
2812
|
title: p("devportal.linksPolicies", "Links & Policies"),
|
|
2813
2813
|
description: p("devportal.linksPoliciesDescription", "External resources and legal documents — privacy policy and terms are required for store submission"),
|
|
2814
|
-
children: /* @__PURE__ */
|
|
2814
|
+
children: /* @__PURE__ */ W("div", {
|
|
2815
2815
|
className: "grid gap-4 sm:grid-cols-2",
|
|
2816
2816
|
children: [
|
|
2817
|
-
/* @__PURE__ */
|
|
2817
|
+
/* @__PURE__ */ U(k, {
|
|
2818
2818
|
label: p("devportal.websiteUrl", "Website"),
|
|
2819
2819
|
value: m.websiteUrl,
|
|
2820
2820
|
onChange: (e) => E("websiteUrl", e.target.value),
|
|
2821
2821
|
placeholder: "https://..."
|
|
2822
2822
|
}),
|
|
2823
|
-
/* @__PURE__ */
|
|
2823
|
+
/* @__PURE__ */ U(k, {
|
|
2824
2824
|
label: p("devportal.documentationUrl", "Documentation"),
|
|
2825
2825
|
value: m.documentationUrl,
|
|
2826
2826
|
onChange: (e) => E("documentationUrl", e.target.value),
|
|
2827
2827
|
placeholder: "https://..."
|
|
2828
2828
|
}),
|
|
2829
|
-
/* @__PURE__ */
|
|
2829
|
+
/* @__PURE__ */ U(k, {
|
|
2830
2830
|
label: p("devportal.githubUrl", "GitHub"),
|
|
2831
2831
|
value: m.githubUrl,
|
|
2832
2832
|
onChange: (e) => E("githubUrl", e.target.value),
|
|
2833
2833
|
placeholder: "https://github.com/..."
|
|
2834
2834
|
}),
|
|
2835
|
-
/* @__PURE__ */
|
|
2835
|
+
/* @__PURE__ */ U(k, {
|
|
2836
2836
|
label: p("devportal.supportUrl", "Support"),
|
|
2837
2837
|
value: m.supportUrl,
|
|
2838
2838
|
onChange: (e) => E("supportUrl", e.target.value),
|
|
2839
2839
|
placeholder: "https://..."
|
|
2840
2840
|
}),
|
|
2841
|
-
/* @__PURE__ */
|
|
2841
|
+
/* @__PURE__ */ U(k, {
|
|
2842
2842
|
label: `${p("devportal.privacyPolicyUrl", "Privacy Policy")} *`,
|
|
2843
2843
|
value: m.privacyPolicyUrl,
|
|
2844
2844
|
onChange: (e) => E("privacyPolicyUrl", e.target.value),
|
|
2845
2845
|
placeholder: "https://...",
|
|
2846
2846
|
hint: p("devportal.requiredForStore", "Required for store submission")
|
|
2847
2847
|
}),
|
|
2848
|
-
/* @__PURE__ */
|
|
2848
|
+
/* @__PURE__ */ U(k, {
|
|
2849
2849
|
label: `${p("devportal.termsOfServiceUrl", "Terms of Service")} *`,
|
|
2850
2850
|
value: m.termsOfServiceUrl,
|
|
2851
2851
|
onChange: (e) => E("termsOfServiceUrl", e.target.value),
|
|
@@ -2855,52 +2855,52 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2855
2855
|
]
|
|
2856
2856
|
})
|
|
2857
2857
|
}),
|
|
2858
|
-
/* @__PURE__ */
|
|
2858
|
+
/* @__PURE__ */ W("div", {
|
|
2859
2859
|
className: "border-t pt-6 space-y-3",
|
|
2860
2860
|
children: [
|
|
2861
|
-
v === "success" && /* @__PURE__ */
|
|
2861
|
+
v === "success" && /* @__PURE__ */ W("div", {
|
|
2862
2862
|
className: "flex items-center gap-2 rounded-md border border-success/30 bg-success/10 px-3 py-2 text-sm text-success",
|
|
2863
|
-
children: [/* @__PURE__ */
|
|
2863
|
+
children: [/* @__PURE__ */ U(he, {
|
|
2864
2864
|
size: 15,
|
|
2865
2865
|
className: "shrink-0"
|
|
2866
2866
|
}), p("devportal.storeListing.savedSuccess", "Store listing saved successfully.")]
|
|
2867
2867
|
}),
|
|
2868
|
-
v === "error" && /* @__PURE__ */
|
|
2868
|
+
v === "error" && /* @__PURE__ */ W("div", {
|
|
2869
2869
|
className: "flex items-center gap-2 rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive",
|
|
2870
|
-
children: [/* @__PURE__ */
|
|
2870
|
+
children: [/* @__PURE__ */ U(P, {
|
|
2871
2871
|
size: 15,
|
|
2872
2872
|
className: "shrink-0"
|
|
2873
2873
|
}), p("devportal.storeListing.savedError", "Failed to save. Please try again.")]
|
|
2874
2874
|
}),
|
|
2875
|
-
/* @__PURE__ */
|
|
2875
|
+
/* @__PURE__ */ W("div", {
|
|
2876
2876
|
className: "flex flex-wrap items-center gap-3",
|
|
2877
2877
|
children: [
|
|
2878
|
-
/* @__PURE__ */
|
|
2878
|
+
/* @__PURE__ */ U("button", {
|
|
2879
2879
|
type: "button",
|
|
2880
2880
|
onClick: ee,
|
|
2881
2881
|
disabled: g || !D || !w,
|
|
2882
2882
|
title: D ? w ? void 0 : p("devportal.storeListing.noChanges", "All changes saved — edit any field to save again") : p("devportal.storeListing.requiredFieldsHint", "Fill in Short Description, Privacy Policy URL, and Terms of Service URL to save"),
|
|
2883
2883
|
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 disabled:cursor-not-allowed",
|
|
2884
|
-
children: g ? /* @__PURE__ */
|
|
2884
|
+
children: g ? /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(R, {
|
|
2885
2885
|
size: 16,
|
|
2886
2886
|
className: "animate-spin"
|
|
2887
|
-
}), p("devportal.saving", "Saving…")] }) : w ? /* @__PURE__ */
|
|
2887
|
+
}), p("devportal.saving", "Saving…")] }) : w ? /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(Me, { size: 16 }), p("devportal.saveStoreListing", "Save Store Listing")] }) : /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(F, { size: 16 }), p("devportal.saved", "Saved")] })
|
|
2888
2888
|
}),
|
|
2889
|
-
!D && /* @__PURE__ */
|
|
2889
|
+
!D && /* @__PURE__ */ U("p", {
|
|
2890
2890
|
className: "text-xs text-text-secondary",
|
|
2891
2891
|
children: p("devportal.storeListing.requiredFieldsLabel", "Short Description, Privacy Policy URL, and Terms of Service URL are required")
|
|
2892
2892
|
}),
|
|
2893
|
-
r && n === 0 && a && /* @__PURE__ */
|
|
2893
|
+
r && n === 0 && a && /* @__PURE__ */ W("button", {
|
|
2894
2894
|
type: "button",
|
|
2895
2895
|
onClick: a,
|
|
2896
2896
|
className: "inline-flex items-center gap-1.5 text-sm font-medium text-primary hover:underline underline-offset-2",
|
|
2897
|
-
children: [p("devportal.nextUploadVersion", "Next: Upload a Version"), /* @__PURE__ */
|
|
2897
|
+
children: [p("devportal.nextUploadVersion", "Next: Upload a Version"), /* @__PURE__ */ U(ge, { size: 15 })]
|
|
2898
2898
|
}),
|
|
2899
|
-
(!r || n > 0) && !i && o && /* @__PURE__ */
|
|
2899
|
+
(!r || n > 0) && !i && o && /* @__PURE__ */ W("button", {
|
|
2900
2900
|
type: "button",
|
|
2901
2901
|
onClick: o,
|
|
2902
2902
|
className: "inline-flex items-center gap-1.5 text-sm font-medium text-primary hover:underline underline-offset-2",
|
|
2903
|
-
children: [p("devportal.nextSetPricing", "Next: Set Pricing"), /* @__PURE__ */
|
|
2903
|
+
children: [p("devportal.nextSetPricing", "Next: Set Pricing"), /* @__PURE__ */ U(ge, { size: 15 })]
|
|
2904
2904
|
})
|
|
2905
2905
|
]
|
|
2906
2906
|
})
|
|
@@ -2909,20 +2909,20 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2909
2909
|
]
|
|
2910
2910
|
});
|
|
2911
2911
|
}, Z = ({ label: e, value: n, trend: r }) => {
|
|
2912
|
-
let { t: i } =
|
|
2913
|
-
return /* @__PURE__ */
|
|
2912
|
+
let { t: i } = G();
|
|
2913
|
+
return /* @__PURE__ */ W(Ve, {
|
|
2914
2914
|
treatment: "metric",
|
|
2915
2915
|
className: "p-4",
|
|
2916
2916
|
children: [
|
|
2917
|
-
/* @__PURE__ */
|
|
2917
|
+
/* @__PURE__ */ U("p", {
|
|
2918
2918
|
className: "text-sm text-text-secondary",
|
|
2919
2919
|
children: e
|
|
2920
2920
|
}),
|
|
2921
|
-
/* @__PURE__ */
|
|
2921
|
+
/* @__PURE__ */ U("p", {
|
|
2922
2922
|
className: "text-2xl font-bold tabular-nums",
|
|
2923
2923
|
children: n
|
|
2924
2924
|
}),
|
|
2925
|
-
r !== void 0 && /* @__PURE__ */
|
|
2925
|
+
r !== void 0 && /* @__PURE__ */ W("p", {
|
|
2926
2926
|
className: t("text-xs mt-1 tabular-nums", r > 0 ? "text-status-success-text" : r < 0 ? "text-status-error-text" : "text-text-secondary"),
|
|
2927
2927
|
children: [
|
|
2928
2928
|
r > 0 ? "+" : "",
|
|
@@ -2936,12 +2936,12 @@ var ht = ({ app: t, versionCount: n = 0, isPackageApp: r = !1, pricingDone: i =
|
|
|
2936
2936
|
})
|
|
2937
2937
|
]
|
|
2938
2938
|
});
|
|
2939
|
-
}, Q = ({ label: e, url: t }) => /* @__PURE__ */
|
|
2939
|
+
}, Q = ({ label: e, url: t }) => /* @__PURE__ */ W("a", {
|
|
2940
2940
|
href: t,
|
|
2941
2941
|
target: "_blank",
|
|
2942
2942
|
rel: "noopener noreferrer",
|
|
2943
2943
|
className: "flex items-center gap-2 text-sm text-primary hover:underline",
|
|
2944
|
-
children: [/* @__PURE__ */
|
|
2944
|
+
children: [/* @__PURE__ */ U(L, { size: 14 }), e]
|
|
2945
2945
|
}), $ = {
|
|
2946
2946
|
auth: {
|
|
2947
2947
|
label: "Authentication",
|
|
@@ -3027,9 +3027,9 @@ function yt(e, t) {
|
|
|
3027
3027
|
let n = /* @__PURE__ */ new Set();
|
|
3028
3028
|
return t.filter((e) => n.has(e.resource) ? !1 : (n.add(e.resource), !0));
|
|
3029
3029
|
}
|
|
3030
|
-
var bt = ({ level: e, onChange: t }) => /* @__PURE__ */
|
|
3030
|
+
var bt = ({ level: e, onChange: t }) => /* @__PURE__ */ U("div", {
|
|
3031
3031
|
className: "flex items-center gap-0.5 rounded-md border border-border-subtle bg-bg-sunken/50 p-0.5",
|
|
3032
|
-
children: ["read", "write"].map((n) => /* @__PURE__ */
|
|
3032
|
+
children: ["read", "write"].map((n) => /* @__PURE__ */ U("button", {
|
|
3033
3033
|
type: "button",
|
|
3034
3034
|
onClick: () => t(n),
|
|
3035
3035
|
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"}`,
|
|
@@ -3065,58 +3065,58 @@ var bt = ({ level: e, onChange: t }) => /* @__PURE__ */ W("div", {
|
|
|
3065
3065
|
} finally {
|
|
3066
3066
|
m(!1);
|
|
3067
3067
|
}
|
|
3068
|
-
}, w = /* @__PURE__ */
|
|
3068
|
+
}, w = /* @__PURE__ */ U("div", {
|
|
3069
3069
|
className: "rounded-lg border border-border-subtle divide-y divide-border-subtle",
|
|
3070
|
-
children: a.map((e) => /* @__PURE__ */
|
|
3070
|
+
children: a.map((e) => /* @__PURE__ */ W("div", {
|
|
3071
3071
|
className: "flex items-center gap-3 px-4 py-3 hover:bg-bg-sunken/30 transition-colors",
|
|
3072
|
-
children: [/* @__PURE__ */
|
|
3072
|
+
children: [/* @__PURE__ */ W("div", {
|
|
3073
3073
|
className: "flex-1 min-w-0",
|
|
3074
3074
|
children: [
|
|
3075
|
-
/* @__PURE__ */
|
|
3075
|
+
/* @__PURE__ */ U("p", {
|
|
3076
3076
|
className: "text-sm font-medium text-text-primary",
|
|
3077
3077
|
children: $[e.resource]?.label ?? e.resource
|
|
3078
3078
|
}),
|
|
3079
|
-
$[e.resource]?.description && /* @__PURE__ */
|
|
3079
|
+
$[e.resource]?.description && /* @__PURE__ */ U("p", {
|
|
3080
3080
|
className: "text-xs text-text-secondary",
|
|
3081
3081
|
children: $[e.resource].description
|
|
3082
3082
|
}),
|
|
3083
|
-
!$[e.resource] && /* @__PURE__ */
|
|
3083
|
+
!$[e.resource] && /* @__PURE__ */ U("p", {
|
|
3084
3084
|
className: "text-xs text-text-tertiary font-mono",
|
|
3085
3085
|
children: "custom scope"
|
|
3086
3086
|
})
|
|
3087
3087
|
]
|
|
3088
|
-
}), n ? /* @__PURE__ */
|
|
3088
|
+
}), n ? /* @__PURE__ */ U("span", {
|
|
3089
3089
|
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"}`,
|
|
3090
3090
|
children: e.level === "write" ? "Read & Write" : "Read"
|
|
3091
|
-
}) : /* @__PURE__ */
|
|
3091
|
+
}) : /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U(bt, {
|
|
3092
3092
|
level: e.level,
|
|
3093
3093
|
onChange: (t) => v(e.resource, t)
|
|
3094
|
-
}), /* @__PURE__ */
|
|
3094
|
+
}), /* @__PURE__ */ U("button", {
|
|
3095
3095
|
type: "button",
|
|
3096
3096
|
onClick: () => y(e.resource),
|
|
3097
3097
|
title: "Remove permission",
|
|
3098
3098
|
className: "p-1.5 rounded text-text-tertiary hover:text-status-error-text hover:bg-status-error-bg-subtle transition-colors",
|
|
3099
|
-
children: /* @__PURE__ */
|
|
3099
|
+
children: /* @__PURE__ */ U(Ie, { size: 14 })
|
|
3100
3100
|
})] })]
|
|
3101
3101
|
}, e.resource))
|
|
3102
3102
|
});
|
|
3103
|
-
return /* @__PURE__ */
|
|
3103
|
+
return /* @__PURE__ */ U(S, {
|
|
3104
3104
|
title: "Permissions",
|
|
3105
3105
|
description: "These are the permissions your app requests from users. Users see exactly this list when authorizing your app.",
|
|
3106
|
-
children: /* @__PURE__ */
|
|
3106
|
+
children: /* @__PURE__ */ U("div", {
|
|
3107
3107
|
className: "space-y-4",
|
|
3108
|
-
children: n ? /* @__PURE__ */
|
|
3108
|
+
children: n ? /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ W("div", {
|
|
3109
3109
|
className: "rounded-lg border border-status-warning-bg bg-status-warning-bg-subtle p-3 flex gap-2 text-sm",
|
|
3110
|
-
children: [/* @__PURE__ */
|
|
3110
|
+
children: [/* @__PURE__ */ U(Se, {
|
|
3111
3111
|
size: 15,
|
|
3112
3112
|
className: "flex-shrink-0 mt-0.5 text-status-warning-text"
|
|
3113
|
-
}), /* @__PURE__ */
|
|
3113
|
+
}), /* @__PURE__ */ W("span", {
|
|
3114
3114
|
className: "text-status-warning-text",
|
|
3115
3115
|
children: [
|
|
3116
|
-
/* @__PURE__ */
|
|
3116
|
+
/* @__PURE__ */ U("strong", { children: "Permission changes require a new version." }),
|
|
3117
3117
|
" Your app is live and users have already consented to the permissions below. To request new or fewer permissions, publish a new version — existing users will be shown what changed and asked to re-consent before the new version takes effect.",
|
|
3118
3118
|
" ",
|
|
3119
|
-
r && /* @__PURE__ */
|
|
3119
|
+
r && /* @__PURE__ */ U("button", {
|
|
3120
3120
|
type: "button",
|
|
3121
3121
|
onClick: r,
|
|
3122
3122
|
className: "underline font-medium hover:opacity-80 transition-opacity",
|
|
@@ -3124,31 +3124,31 @@ var bt = ({ level: e, onChange: t }) => /* @__PURE__ */ W("div", {
|
|
|
3124
3124
|
})
|
|
3125
3125
|
]
|
|
3126
3126
|
})]
|
|
3127
|
-
}), a.length === 0 ? /* @__PURE__ */
|
|
3127
|
+
}), a.length === 0 ? /* @__PURE__ */ U("div", {
|
|
3128
3128
|
className: "rounded-lg border border-border-subtle border-dashed p-6 text-center text-sm text-text-secondary",
|
|
3129
3129
|
children: "No permissions configured for this version."
|
|
3130
|
-
}) : w] }) : /* @__PURE__ */
|
|
3131
|
-
a.length === 0 ? /* @__PURE__ */
|
|
3130
|
+
}) : w] }) : /* @__PURE__ */ W(H, { children: [
|
|
3131
|
+
a.length === 0 ? /* @__PURE__ */ W("div", {
|
|
3132
3132
|
className: "rounded-lg border border-border-subtle border-dashed p-8 flex flex-col items-center gap-2 text-center text-text-secondary",
|
|
3133
3133
|
children: [
|
|
3134
|
-
/* @__PURE__ */
|
|
3134
|
+
/* @__PURE__ */ U(je, {
|
|
3135
3135
|
size: 28,
|
|
3136
3136
|
className: "opacity-25"
|
|
3137
3137
|
}),
|
|
3138
|
-
/* @__PURE__ */
|
|
3138
|
+
/* @__PURE__ */ U("p", {
|
|
3139
3139
|
className: "text-sm font-medium text-text-primary",
|
|
3140
3140
|
children: "No permissions configured"
|
|
3141
3141
|
}),
|
|
3142
|
-
/* @__PURE__ */
|
|
3142
|
+
/* @__PURE__ */ U("p", {
|
|
3143
3143
|
className: "text-xs",
|
|
3144
3144
|
children: "Add the permissions your app needs to request from users."
|
|
3145
3145
|
})
|
|
3146
3146
|
]
|
|
3147
3147
|
}) : w,
|
|
3148
|
-
s ? /* @__PURE__ */
|
|
3148
|
+
s ? /* @__PURE__ */ W("div", {
|
|
3149
3149
|
className: "rounded-lg border border-border-subtle p-3 flex items-center gap-2 flex-wrap",
|
|
3150
3150
|
children: [
|
|
3151
|
-
/* @__PURE__ */
|
|
3151
|
+
/* @__PURE__ */ U("input", {
|
|
3152
3152
|
type: "text",
|
|
3153
3153
|
value: l,
|
|
3154
3154
|
onChange: (e) => u(e.target.value),
|
|
@@ -3160,60 +3160,60 @@ var bt = ({ level: e, onChange: t }) => /* @__PURE__ */ W("div", {
|
|
|
3160
3160
|
autoFocus: !0,
|
|
3161
3161
|
className: "flex-1 min-w-40 rounded-md border border-border-subtle bg-bg-base px-3 py-1.5 text-sm focus:outline-none focus:ring-1 focus:ring-primary"
|
|
3162
3162
|
}),
|
|
3163
|
-
/* @__PURE__ */
|
|
3163
|
+
/* @__PURE__ */ U("datalist", {
|
|
3164
3164
|
id: "perm-resource-suggestions",
|
|
3165
|
-
children: gt.filter((e) => !a.some((t) => t.resource === e)).map((e) => /* @__PURE__ */
|
|
3165
|
+
children: gt.filter((e) => !a.some((t) => t.resource === e)).map((e) => /* @__PURE__ */ U("option", {
|
|
3166
3166
|
value: e,
|
|
3167
3167
|
children: $[e].label
|
|
3168
3168
|
}, e))
|
|
3169
3169
|
}),
|
|
3170
|
-
/* @__PURE__ */
|
|
3170
|
+
/* @__PURE__ */ U(bt, {
|
|
3171
3171
|
level: d,
|
|
3172
3172
|
onChange: f
|
|
3173
3173
|
}),
|
|
3174
|
-
/* @__PURE__ */
|
|
3174
|
+
/* @__PURE__ */ U("button", {
|
|
3175
3175
|
type: "button",
|
|
3176
3176
|
onClick: x,
|
|
3177
3177
|
disabled: !l.trim(),
|
|
3178
3178
|
className: "px-3 py-1.5 rounded-md bg-action-primary-bg text-action-primary-text text-xs font-medium hover:bg-action-primary-bg/90 disabled:opacity-50 transition-colors",
|
|
3179
3179
|
children: "Add"
|
|
3180
3180
|
}),
|
|
3181
|
-
/* @__PURE__ */
|
|
3181
|
+
/* @__PURE__ */ U("button", {
|
|
3182
3182
|
type: "button",
|
|
3183
3183
|
onClick: () => {
|
|
3184
3184
|
c(!1), u("");
|
|
3185
3185
|
},
|
|
3186
3186
|
className: "p-1.5 rounded text-text-secondary hover:text-text-primary transition-colors",
|
|
3187
|
-
children: /* @__PURE__ */
|
|
3187
|
+
children: /* @__PURE__ */ U(Ie, { size: 14 })
|
|
3188
3188
|
})
|
|
3189
3189
|
]
|
|
3190
|
-
}) : /* @__PURE__ */
|
|
3190
|
+
}) : /* @__PURE__ */ W("button", {
|
|
3191
3191
|
type: "button",
|
|
3192
3192
|
onClick: () => c(!0),
|
|
3193
3193
|
className: "flex items-center gap-1.5 text-sm text-text-secondary hover:text-text-primary transition-colors",
|
|
3194
|
-
children: [/* @__PURE__ */
|
|
3194
|
+
children: [/* @__PURE__ */ U(z, { size: 14 }), "Add permission"]
|
|
3195
3195
|
}),
|
|
3196
|
-
/* @__PURE__ */
|
|
3196
|
+
/* @__PURE__ */ W("div", {
|
|
3197
3197
|
className: "rounded-lg border border-border-subtle bg-bg-sunken/30 p-3 flex gap-2 text-xs text-text-secondary",
|
|
3198
|
-
children: [/* @__PURE__ */
|
|
3198
|
+
children: [/* @__PURE__ */ U(Se, {
|
|
3199
3199
|
size: 14,
|
|
3200
3200
|
className: "flex-shrink-0 mt-0.5"
|
|
3201
|
-
}), /* @__PURE__ */
|
|
3201
|
+
}), /* @__PURE__ */ W("span", { children: [/* @__PURE__ */ U("strong", { children: "Read & Write" }), " implies Read. Request only what your app genuinely needs — fewer permissions build more user trust."] })]
|
|
3202
3202
|
}),
|
|
3203
|
-
/* @__PURE__ */
|
|
3203
|
+
/* @__PURE__ */ W("div", {
|
|
3204
3204
|
className: "flex items-center justify-end gap-3",
|
|
3205
|
-
children: [h && /* @__PURE__ */
|
|
3205
|
+
children: [h && /* @__PURE__ */ W("span", {
|
|
3206
3206
|
className: "flex items-center gap-1.5 text-sm text-status-success-text",
|
|
3207
|
-
children: [/* @__PURE__ */
|
|
3208
|
-
}), /* @__PURE__ */
|
|
3207
|
+
children: [/* @__PURE__ */ U(he, { size: 14 }), "Saved"]
|
|
3208
|
+
}), /* @__PURE__ */ W("button", {
|
|
3209
3209
|
type: "button",
|
|
3210
3210
|
onClick: () => void C(),
|
|
3211
3211
|
disabled: p,
|
|
3212
3212
|
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",
|
|
3213
|
-
children: [p ? /* @__PURE__ */
|
|
3213
|
+
children: [p ? /* @__PURE__ */ U(R, {
|
|
3214
3214
|
size: 14,
|
|
3215
3215
|
className: "animate-spin"
|
|
3216
|
-
}) : /* @__PURE__ */
|
|
3216
|
+
}) : /* @__PURE__ */ U(je, { size: 14 }), "Save Permissions"]
|
|
3217
3217
|
})]
|
|
3218
3218
|
})
|
|
3219
3219
|
] })
|