@burdenoff/microfe-devportal 2026.720.5 → 2026.720.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/devportal/hooks/usePackageUpload.d.ts.map +1 -1
- package/dist/devportal/hooks/usePackageUpload.js.map +1 -1
- package/dist/devportal/pages/CreateApiKeyPage.d.ts.map +1 -1
- package/dist/devportal/pages/CreateApiKeyPage.js +103 -104
- package/dist/devportal/pages/CreateApiKeyPage.js.map +1 -1
- package/dist/devportal/pages/CreateApplicationPage.d.ts.map +1 -1
- package/dist/devportal/pages/CreateApplicationPage.js +115 -116
- package/dist/devportal/pages/CreateApplicationPage.js.map +1 -1
- package/dist/devportal/pages/CreateOAuthClientPage.d.ts.map +1 -1
- package/dist/devportal/pages/CreateOAuthClientPage.js +129 -130
- package/dist/devportal/pages/CreateOAuthClientPage.js.map +1 -1
- package/dist/devportal/pages/CreateWebhookPage.js +1 -1
- package/dist/devportal/pages/CreateWebhookPage.js.map +1 -1
- package/dist/devportal/pages/DelegationsPage.js +214 -214
- package/dist/devportal/pages/DelegationsPage.js.map +1 -1
- package/dist/devportal/pages/EditApplicationPage.d.ts.map +1 -1
- package/dist/devportal/pages/EditApplicationPage.js +1 -1
- package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
- package/dist/devportal/pages/PublishPage.d.ts.map +1 -1
- package/dist/devportal/pages/PublishPage.js +106 -106
- package/dist/devportal/pages/PublishPage.js.map +1 -1
- package/dist/devportal/pages/SellerDashboardPage.d.ts.map +1 -1
- package/dist/devportal/pages/SellerDashboardPage.js +136 -137
- package/dist/devportal/pages/SellerDashboardPage.js.map +1 -1
- package/dist/devportal/pages/SellerItemsPage.d.ts.map +1 -1
- package/dist/devportal/pages/SellerItemsPage.js +190 -191
- package/dist/devportal/pages/SellerItemsPage.js.map +1 -1
- package/dist/devportal/pages/SellerOrdersPage.d.ts.map +1 -1
- package/dist/devportal/pages/SellerOrdersPage.js +138 -139
- package/dist/devportal/pages/SellerOrdersPage.js.map +1 -1
- package/dist/devportal/types/index.d.ts.map +1 -1
- package/dist/devportal/types/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,71 +6,71 @@ import { PermissionGuard as s } from "../components/PermissionGuard.js";
|
|
|
6
6
|
import "../components/index.js";
|
|
7
7
|
import { useDevportalPermission as c } from "../hooks/usePermission.js";
|
|
8
8
|
import "../hooks/index.js";
|
|
9
|
-
import { DEVPORTAL_PERMISSIONS as
|
|
10
|
-
import { useEffect as
|
|
9
|
+
import { DEVPORTAL_PERMISSIONS as ee } from "../constants/permissions.js";
|
|
10
|
+
import { useEffect as l, useMemo as u, useState as d } from "react";
|
|
11
11
|
import { useI18n as te } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
12
|
-
import { AlertTriangle as f, ArrowRight as ne, CheckCircle as p, Eye as re, FileText as m, Globe as ie, Image as h, KeyRound as g, Link as _, Loader2 as v, PartyPopper as ae, Send as oe, Shield as
|
|
12
|
+
import { AlertTriangle as f, ArrowRight as ne, CheckCircle as p, Eye as re, FileText as m, Globe as ie, Image as h, KeyRound as g, Link as _, Loader2 as v, PartyPopper as ae, Send as oe, Shield as y, Webhook as se, XCircle as b } from "lucide-react";
|
|
13
13
|
import { useParams as ce } from "react-router-dom";
|
|
14
14
|
import { Fragment as x, jsx as S, jsxs as C } from "react/jsx-runtime";
|
|
15
15
|
import { gql as w } from "@apollo/client";
|
|
16
16
|
import { useQuery as T } from "@apollo/client/react";
|
|
17
17
|
//#region src/devportal/pages/PublishPage.tsx
|
|
18
|
-
var
|
|
18
|
+
var le = w`
|
|
19
19
|
query PublishPagePublisher {
|
|
20
20
|
myPublisher {
|
|
21
21
|
id
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
`,
|
|
24
|
+
`, ue = w`
|
|
25
25
|
query PublishPageProducts($publisherId: String!) {
|
|
26
26
|
products(filter: { publisherId: $publisherId }) {
|
|
27
27
|
id
|
|
28
28
|
productId
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
`,
|
|
31
|
+
`, de = w`
|
|
32
32
|
query PublishPageWebhooks($applicationId: ID!) {
|
|
33
33
|
webhooks(applicationId: $applicationId) {
|
|
34
34
|
id
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
`,
|
|
37
|
+
`, fe = [
|
|
38
38
|
"SUBMITTED",
|
|
39
39
|
"IN_REVIEW",
|
|
40
40
|
"APPROVED",
|
|
41
41
|
"PUBLISHED"
|
|
42
|
-
],
|
|
43
|
-
let { appId: w } = ce(), { navigate:
|
|
44
|
-
let n =
|
|
42
|
+
], E = () => {
|
|
43
|
+
let { appId: w } = ce(), { navigate: E, basePath: D } = e(), { t: pe } = te(), O = (e, t) => {
|
|
44
|
+
let n = pe(e);
|
|
45
45
|
return n === e ? t : n;
|
|
46
|
-
}, [
|
|
46
|
+
}, [k, A] = d(!1), [j, M] = d(null), [N, P] = d(!1), [F, I] = d(""), L = c(ee.APP_SUBMIT), { data: R, loading: z, error: B } = t({
|
|
47
47
|
variables: { id: w },
|
|
48
48
|
skip: !w,
|
|
49
49
|
fetchPolicy: "network-only"
|
|
50
|
-
}), [me] = r(), [he] = n(), { data: ge } = T(
|
|
50
|
+
}), [me] = r(), [he] = n(), { data: ge } = T(le, { fetchPolicy: "cache-first" }), V = ge?.myPublisher?.id ?? null, { data: _e } = T(ue, {
|
|
51
51
|
variables: { publisherId: V ?? "" },
|
|
52
52
|
skip: !V,
|
|
53
53
|
fetchPolicy: "cache-first"
|
|
54
54
|
});
|
|
55
55
|
_e?.products?.find((e) => e.productId === w)?.id;
|
|
56
|
-
let H = R?.application?.appType === "API_INTEGRATION", U = R?.application?.manifest?.oauth, W = !!(U?.authorizationUrl && U?.tokenUrl && U?.clientId), { data: ve } = T(
|
|
56
|
+
let H = R?.application?.appType === "API_INTEGRATION", U = R?.application?.manifest?.oauth, W = !!(U?.authorizationUrl && U?.tokenUrl && U?.clientId), { data: ve } = T(de, {
|
|
57
57
|
variables: { applicationId: w },
|
|
58
58
|
skip: !w || !H,
|
|
59
59
|
fetchPolicy: "network-only"
|
|
60
60
|
}), G = ve?.webhooks?.length ?? 0, K = R?.application;
|
|
61
|
-
|
|
61
|
+
l(() => {
|
|
62
62
|
let e = K?.name;
|
|
63
63
|
if (!w || !e) return;
|
|
64
64
|
let t = window.__breadcrumbRegistry;
|
|
65
65
|
return t?.register(w, e), () => t?.unregister(w);
|
|
66
66
|
}, [w, K?.name]);
|
|
67
|
-
let q =
|
|
67
|
+
let q = fe.includes(K?.status ?? ""), J = K?.appType === "NODE" || K?.appType === "WORKFLOW", Y = K?.versions?.totalCount ?? 0, X = u(() => {
|
|
68
68
|
if (!K) return [];
|
|
69
69
|
let e = K.screenshots?.length ?? 0, t = `/apps/${w}?tab=store-listing`, n = `/apps/${w}/versions`, r = `/apps/${w}/edit#oauth-config`, i = `/apps/${w}/webhooks`, a = [
|
|
70
70
|
{
|
|
71
71
|
id: "name",
|
|
72
|
-
label:
|
|
73
|
-
description:
|
|
72
|
+
label: O("devportal.checklistNameLabel", "Name & Short Description"),
|
|
73
|
+
description: O("devportal.checklistNameDesc", "Name and short description are required for the store card"),
|
|
74
74
|
status: K.name && K.shortDescription ? "passed" : "failed",
|
|
75
75
|
icon: /* @__PURE__ */ S(m, { size: 20 }),
|
|
76
76
|
actionLabel: "Edit store listing →",
|
|
@@ -78,8 +78,8 @@ var E = w`
|
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
80
|
id: "category",
|
|
81
|
-
label:
|
|
82
|
-
description:
|
|
81
|
+
label: O("devportal.checklistCategoryLabel", "Category"),
|
|
82
|
+
description: O("devportal.checklistCategoryDesc", "A category helps users find your item in the marketplace"),
|
|
83
83
|
status: K.category ? "passed" : "failed",
|
|
84
84
|
icon: /* @__PURE__ */ S(ie, { size: 20 }),
|
|
85
85
|
actionLabel: "Edit app info →",
|
|
@@ -87,17 +87,17 @@ var E = w`
|
|
|
87
87
|
},
|
|
88
88
|
{
|
|
89
89
|
id: "privacy",
|
|
90
|
-
label:
|
|
91
|
-
description:
|
|
90
|
+
label: O("devportal.checklistPrivacyLabel", "Privacy Policy"),
|
|
91
|
+
description: O("devportal.checklistPrivacyDesc", "Privacy policy URL is required for store submission"),
|
|
92
92
|
status: K.privacyPolicyUrl ? "passed" : "failed",
|
|
93
|
-
icon: /* @__PURE__ */ S(
|
|
93
|
+
icon: /* @__PURE__ */ S(y, { size: 20 }),
|
|
94
94
|
actionLabel: "Edit store listing →",
|
|
95
95
|
actionPath: t
|
|
96
96
|
},
|
|
97
97
|
{
|
|
98
98
|
id: "terms",
|
|
99
|
-
label:
|
|
100
|
-
description:
|
|
99
|
+
label: O("devportal.checklistTermsLabel", "Terms of Service"),
|
|
100
|
+
description: O("devportal.checklistTermsDesc", "Terms of service URL is required for store submission"),
|
|
101
101
|
status: K.termsOfServiceUrl ? "passed" : "failed",
|
|
102
102
|
icon: /* @__PURE__ */ S(m, { size: 20 }),
|
|
103
103
|
actionLabel: "Edit store listing →",
|
|
@@ -105,8 +105,8 @@ var E = w`
|
|
|
105
105
|
},
|
|
106
106
|
{
|
|
107
107
|
id: "icon",
|
|
108
|
-
label:
|
|
109
|
-
description:
|
|
108
|
+
label: O("devportal.checklistIconLabel", "App Icon"),
|
|
109
|
+
description: O("devportal.checklistIconDesc", "An icon makes your listing stand out in the marketplace"),
|
|
110
110
|
status: K.iconUrl ? "passed" : "warning",
|
|
111
111
|
icon: /* @__PURE__ */ S(h, { size: 20 }),
|
|
112
112
|
actionLabel: "Edit store listing →",
|
|
@@ -114,8 +114,8 @@ var E = w`
|
|
|
114
114
|
},
|
|
115
115
|
{
|
|
116
116
|
id: "screenshots",
|
|
117
|
-
label:
|
|
118
|
-
description:
|
|
117
|
+
label: O("devportal.checklistScreenshotsLabel", "Screenshots"),
|
|
118
|
+
description: O("devportal.checklistScreenshotsDesc", "At least 3 screenshots are recommended"),
|
|
119
119
|
status: e >= 3 ? "passed" : "warning",
|
|
120
120
|
icon: /* @__PURE__ */ S(h, { size: 20 }),
|
|
121
121
|
actionLabel: "Edit store listing →",
|
|
@@ -124,48 +124,48 @@ var E = w`
|
|
|
124
124
|
];
|
|
125
125
|
return J && a.push({
|
|
126
126
|
id: "version",
|
|
127
|
-
label:
|
|
128
|
-
description:
|
|
127
|
+
label: O("devportal.checklistVersionLabel", "Published Version"),
|
|
128
|
+
description: O("devportal.checklistVersionDesc", K?.appType === "WORKFLOW" ? "At least one published version (manifest JSON) is required before submitting to the store" : "At least one published version (ZIP + manifest) is required before submitting to the store"),
|
|
129
129
|
status: Y > 0 ? "passed" : "failed",
|
|
130
130
|
icon: /* @__PURE__ */ S(p, { size: 20 }),
|
|
131
131
|
actionLabel: "Create a version →",
|
|
132
132
|
actionPath: n
|
|
133
133
|
}), K.appType === "API_INTEGRATION" && (a.push({
|
|
134
134
|
id: "oauth",
|
|
135
|
-
label:
|
|
136
|
-
description:
|
|
135
|
+
label: O("devportal.checklistOAuthLabel", "OAuth Configuration"),
|
|
136
|
+
description: O("devportal.checklistOAuthDesc", "Authorization URL, Token URL and Client ID are required so users can connect their accounts. Without these the Connect button does not work."),
|
|
137
137
|
status: W ? "passed" : "failed",
|
|
138
138
|
icon: /* @__PURE__ */ S(g, { size: 20 }),
|
|
139
139
|
actionLabel: "Configure in Edit App →",
|
|
140
140
|
actionPath: r
|
|
141
141
|
}), a.push({
|
|
142
142
|
id: "webhook",
|
|
143
|
-
label:
|
|
144
|
-
description:
|
|
143
|
+
label: O("devportal.checklistWebhookLabel", "Webhook Endpoint"),
|
|
144
|
+
description: O("devportal.checklistWebhookDesc", "At least one webhook endpoint must be configured so your server receives platform events after users connect. Without this the integration does nothing."),
|
|
145
145
|
status: G > 0 ? "passed" : "failed",
|
|
146
|
-
icon: /* @__PURE__ */ S(
|
|
146
|
+
icon: /* @__PURE__ */ S(se, { size: 20 }),
|
|
147
147
|
actionLabel: "Add a webhook →",
|
|
148
148
|
actionPath: i
|
|
149
149
|
}), a.push({
|
|
150
150
|
id: "documentation",
|
|
151
|
-
label:
|
|
152
|
-
description:
|
|
151
|
+
label: O("devportal.checklistDocsLabel", "Documentation URL"),
|
|
152
|
+
description: O("devportal.checklistDocsDesc", "Users need to know how to use and configure this integration. A documentation link is required for API integrations."),
|
|
153
153
|
status: K.documentationUrl ? "passed" : "failed",
|
|
154
154
|
icon: /* @__PURE__ */ S(m, { size: 20 }),
|
|
155
155
|
actionLabel: "Add documentation URL →",
|
|
156
156
|
actionPath: r
|
|
157
157
|
}), a.push({
|
|
158
158
|
id: "website",
|
|
159
|
-
label:
|
|
160
|
-
description:
|
|
159
|
+
label: O("devportal.checklistWebsiteLabel", "Website URL"),
|
|
160
|
+
description: O("devportal.checklistWebsiteDesc", "Users need to verify who built this integration. A website URL is required so users know where to get support."),
|
|
161
161
|
status: K.websiteUrl ? "passed" : "failed",
|
|
162
162
|
icon: /* @__PURE__ */ S(_, { size: 20 }),
|
|
163
163
|
actionLabel: "Add website URL →",
|
|
164
164
|
actionPath: r
|
|
165
165
|
})), a.push({
|
|
166
166
|
id: "status",
|
|
167
|
-
label:
|
|
168
|
-
description:
|
|
167
|
+
label: O("devportal.checklistStatusLabel", "App Status"),
|
|
168
|
+
description: O("devportal.checklistStatusDesc", "App must be in DRAFT or REJECTED state to submit"),
|
|
169
169
|
status: ["DRAFT", "REJECTED"].includes(K.status ?? "") ? "passed" : "warning",
|
|
170
170
|
icon: /* @__PURE__ */ S(p, { size: 20 })
|
|
171
171
|
}), a;
|
|
@@ -201,30 +201,30 @@ var E = w`
|
|
|
201
201
|
}
|
|
202
202
|
};
|
|
203
203
|
return z ? /* @__PURE__ */ S(i, {
|
|
204
|
-
title:
|
|
205
|
-
description:
|
|
204
|
+
title: O("devportal.publishToStoreTitle", "Publish to Store"),
|
|
205
|
+
description: O("devportal.loadingApplicationDetails", "Loading application details..."),
|
|
206
206
|
backLink: `/apps/${w}`,
|
|
207
|
-
backLabel:
|
|
207
|
+
backLabel: O("devportal.backToApplication", "Back to Application"),
|
|
208
208
|
children: /* @__PURE__ */ S("div", {
|
|
209
209
|
className: "flex items-center justify-center py-12",
|
|
210
210
|
children: /* @__PURE__ */ S(v, { className: "animate-spin h-8 w-8 text-text-secondary" })
|
|
211
211
|
})
|
|
212
212
|
}) : B || !K ? /* @__PURE__ */ S(i, {
|
|
213
|
-
title:
|
|
214
|
-
description:
|
|
213
|
+
title: O("devportal.publishToStoreTitle", "Publish to Store"),
|
|
214
|
+
description: O("devportal.couldNotLoadApplication", "Could not load application"),
|
|
215
215
|
backLink: `/apps/${w}`,
|
|
216
|
-
backLabel:
|
|
216
|
+
backLabel: O("devportal.backToApplication", "Back to Application"),
|
|
217
217
|
children: /* @__PURE__ */ S(o, {
|
|
218
218
|
variant: "error",
|
|
219
|
-
title:
|
|
220
|
-
children: B?.message ??
|
|
219
|
+
title: O("devportal.failedToLoadApplication", "Failed to load application"),
|
|
220
|
+
children: B?.message ?? O("devportal.applicationNotFound", "Application not found")
|
|
221
221
|
})
|
|
222
|
-
}) :
|
|
223
|
-
|
|
222
|
+
}) : N ? /* @__PURE__ */ S(s, {
|
|
223
|
+
authOnly: !0,
|
|
224
224
|
children: /* @__PURE__ */ S(i, {
|
|
225
|
-
title:
|
|
225
|
+
title: O("devportal.publishToStoreTitle", "Publish to Store"),
|
|
226
226
|
backLink: `/apps/${w}`,
|
|
227
|
-
backLabel:
|
|
227
|
+
backLabel: O("devportal.backToApplication", "Back to Application"),
|
|
228
228
|
children: /* @__PURE__ */ C("div", {
|
|
229
229
|
className: "flex flex-col items-center justify-center py-16 gap-6 text-center",
|
|
230
230
|
children: [
|
|
@@ -239,10 +239,10 @@ var E = w`
|
|
|
239
239
|
className: "space-y-2",
|
|
240
240
|
children: [/* @__PURE__ */ S("h2", {
|
|
241
241
|
className: "text-2xl font-bold",
|
|
242
|
-
children:
|
|
242
|
+
children: O("devportal.submittedSuccessTitle", "Submitted for Review!")
|
|
243
243
|
}), /* @__PURE__ */ S("p", {
|
|
244
244
|
className: "text-muted-foreground max-w-md",
|
|
245
|
-
children:
|
|
245
|
+
children: O("devportal.submittedSuccessMsg", "Your app has been submitted to the marketplace review queue. You'll receive email notifications as the review progresses — typically 3–5 business days.")
|
|
246
246
|
})]
|
|
247
247
|
}),
|
|
248
248
|
/* @__PURE__ */ C("div", {
|
|
@@ -290,7 +290,7 @@ var E = w`
|
|
|
290
290
|
})]
|
|
291
291
|
}),
|
|
292
292
|
/* @__PURE__ */ S("button", {
|
|
293
|
-
onClick: () =>
|
|
293
|
+
onClick: () => E?.(`${D}/apps/${w}`),
|
|
294
294
|
className: "inline-flex items-center gap-2 rounded-md border px-4 py-2 text-sm font-medium hover:bg-muted",
|
|
295
295
|
children: "Back to App"
|
|
296
296
|
})
|
|
@@ -298,28 +298,28 @@ var E = w`
|
|
|
298
298
|
})
|
|
299
299
|
})
|
|
300
300
|
}) : /* @__PURE__ */ S(s, {
|
|
301
|
-
|
|
301
|
+
authOnly: !0,
|
|
302
302
|
children: /* @__PURE__ */ C(i, {
|
|
303
|
-
title:
|
|
304
|
-
description: `${
|
|
305
|
-
purpose:
|
|
303
|
+
title: O("devportal.publishToStoreTitle", "Publish to Store"),
|
|
304
|
+
description: `${O("devportal.submitAppForReview", "Submit")} "${K.name}" ${O("devportal.forReviewAndPublication", "for review and publication")}`,
|
|
305
|
+
purpose: O("devportal.publishPurpose", "Submitting sends your app to the review team, who check it against the marketplace guidelines before it goes live to users. Make sure the listing, screenshots, and permissions are final — preview the listing first, since changes after approval need another review."),
|
|
306
306
|
backLink: `/apps/${w}`,
|
|
307
|
-
backLabel:
|
|
307
|
+
backLabel: O("devportal.backToApplication", "Back to Application"),
|
|
308
308
|
actions: /* @__PURE__ */ C("button", {
|
|
309
|
-
onClick: () =>
|
|
309
|
+
onClick: () => E?.(`${D}/apps/${w}/listing`),
|
|
310
310
|
className: "inline-flex items-center gap-2 rounded-md border px-3 py-2 text-sm font-medium hover:bg-bg-sunken",
|
|
311
|
-
children: [/* @__PURE__ */ S(re, { size: 16 }),
|
|
311
|
+
children: [/* @__PURE__ */ S(re, { size: 16 }), O("devportal.previewListing", "Preview Listing")]
|
|
312
312
|
}),
|
|
313
313
|
children: [
|
|
314
314
|
q && /* @__PURE__ */ C(o, {
|
|
315
315
|
variant: "warning",
|
|
316
|
-
title:
|
|
316
|
+
title: O("devportal.alreadySubmittedTitle", "Already Submitted"),
|
|
317
317
|
children: [
|
|
318
|
-
|
|
318
|
+
O("devportal.alreadySubmittedMsg1", "This app is currently in"),
|
|
319
319
|
" ",
|
|
320
320
|
/* @__PURE__ */ S("strong", { children: K.status }),
|
|
321
321
|
" ",
|
|
322
|
-
|
|
322
|
+
O("devportal.alreadySubmittedMsg2", "state and cannot be re-submitted until the review process is complete or the app is rejected.")
|
|
323
323
|
]
|
|
324
324
|
}),
|
|
325
325
|
/* @__PURE__ */ C("div", {
|
|
@@ -327,11 +327,11 @@ var E = w`
|
|
|
327
327
|
children: [
|
|
328
328
|
/* @__PURE__ */ S("h2", {
|
|
329
329
|
className: "text-lg font-semibold",
|
|
330
|
-
children:
|
|
330
|
+
children: O("devportal.preSubmissionChecklist", "Pre-submission Checklist")
|
|
331
331
|
}),
|
|
332
332
|
/* @__PURE__ */ S("p", {
|
|
333
333
|
className: "mt-1 text-sm text-text-secondary",
|
|
334
|
-
children:
|
|
334
|
+
children: O("devportal.completeAllRequiredItems", "Complete all required items before submitting for review")
|
|
335
335
|
}),
|
|
336
336
|
/* @__PURE__ */ C("div", {
|
|
337
337
|
className: "mt-4 flex gap-6",
|
|
@@ -344,7 +344,7 @@ var E = w`
|
|
|
344
344
|
}), /* @__PURE__ */ C("span", { children: [
|
|
345
345
|
ye,
|
|
346
346
|
" ",
|
|
347
|
-
|
|
347
|
+
O("devportal.passed", "Passed")
|
|
348
348
|
] })]
|
|
349
349
|
}),
|
|
350
350
|
/* @__PURE__ */ C("div", {
|
|
@@ -355,7 +355,7 @@ var E = w`
|
|
|
355
355
|
}), /* @__PURE__ */ C("span", { children: [
|
|
356
356
|
Z,
|
|
357
357
|
" ",
|
|
358
|
-
|
|
358
|
+
O("devportal.failed", "Failed")
|
|
359
359
|
] })]
|
|
360
360
|
}),
|
|
361
361
|
/* @__PURE__ */ C("div", {
|
|
@@ -366,7 +366,7 @@ var E = w`
|
|
|
366
366
|
}), /* @__PURE__ */ C("span", { children: [
|
|
367
367
|
Q,
|
|
368
368
|
" ",
|
|
369
|
-
|
|
369
|
+
O("devportal.warnings", "Warnings")
|
|
370
370
|
] })]
|
|
371
371
|
})
|
|
372
372
|
]
|
|
@@ -395,7 +395,7 @@ var E = w`
|
|
|
395
395
|
}),
|
|
396
396
|
e.status !== "passed" && e.actionPath && /* @__PURE__ */ C("button", {
|
|
397
397
|
type: "button",
|
|
398
|
-
onClick: () =>
|
|
398
|
+
onClick: () => E?.(`${D}${e.actionPath}`),
|
|
399
399
|
className: "mt-1 inline-flex items-center gap-1 text-xs text-primary hover:underline",
|
|
400
400
|
children: [
|
|
401
401
|
e.actionLabel ?? "Fix this",
|
|
@@ -410,12 +410,12 @@ var E = w`
|
|
|
410
410
|
}, e.id))
|
|
411
411
|
}) }),
|
|
412
412
|
!q && /* @__PURE__ */ C(a, {
|
|
413
|
-
title:
|
|
414
|
-
description:
|
|
413
|
+
title: O("devportal.notesForReviewerTitle", "Notes for Reviewer"),
|
|
414
|
+
description: O("devportal.notesForReviewerDesc", "Optional message to the review team"),
|
|
415
415
|
children: [/* @__PURE__ */ S("textarea", {
|
|
416
416
|
value: F,
|
|
417
417
|
onChange: (e) => I(e.target.value),
|
|
418
|
-
placeholder:
|
|
418
|
+
placeholder: O("devportal.notesForReviewerPlaceholder", "Describe what your app does, any special review considerations, or testing instructions..."),
|
|
419
419
|
rows: 4,
|
|
420
420
|
maxLength: 1e3,
|
|
421
421
|
className: "w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm ring-offset-background placeholder:text-text-secondary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)] resize-none"
|
|
@@ -424,40 +424,40 @@ var E = w`
|
|
|
424
424
|
children: [F.length, "/1000"]
|
|
425
425
|
})]
|
|
426
426
|
}),
|
|
427
|
-
|
|
427
|
+
j && /* @__PURE__ */ S(o, {
|
|
428
428
|
variant: "error",
|
|
429
|
-
title:
|
|
430
|
-
children:
|
|
429
|
+
title: O("devportal.submissionFailedTitle", "Submission Failed"),
|
|
430
|
+
children: j
|
|
431
431
|
}),
|
|
432
432
|
Z > 0 && !q && /* @__PURE__ */ C(o, {
|
|
433
433
|
variant: "error",
|
|
434
|
-
title:
|
|
434
|
+
title: O("devportal.cannotSubmitTitle", "Cannot Submit Yet"),
|
|
435
435
|
children: [
|
|
436
|
-
|
|
436
|
+
O("devportal.pleaseFixItems1", "Please fix"),
|
|
437
437
|
" ",
|
|
438
438
|
Z,
|
|
439
439
|
" ",
|
|
440
|
-
|
|
440
|
+
O("devportal.pleaseFixItems2", "required item(s) before submitting for review."),
|
|
441
441
|
/* @__PURE__ */ C("div", {
|
|
442
442
|
className: "mt-2 flex flex-wrap gap-3",
|
|
443
443
|
children: [
|
|
444
444
|
/* @__PURE__ */ S("button", {
|
|
445
|
-
onClick: () =>
|
|
445
|
+
onClick: () => E?.(`${D}/apps/${w}`),
|
|
446
446
|
className: "text-sm underline hover:no-underline",
|
|
447
|
-
children:
|
|
447
|
+
children: O("devportal.goToMarketplaceListing", "Update marketplace listing →")
|
|
448
448
|
}),
|
|
449
449
|
J && Y === 0 && /* @__PURE__ */ S("button", {
|
|
450
|
-
onClick: () =>
|
|
450
|
+
onClick: () => E?.(`${D}/apps/${w}/versions`),
|
|
451
451
|
className: "text-sm underline hover:no-underline",
|
|
452
|
-
children:
|
|
452
|
+
children: O("devportal.goToVersions", "Add a published version →")
|
|
453
453
|
}),
|
|
454
454
|
H && !W && /* @__PURE__ */ S("button", {
|
|
455
|
-
onClick: () =>
|
|
455
|
+
onClick: () => E?.(`${D}/apps/${w}/edit#oauth-config`),
|
|
456
456
|
className: "text-sm underline hover:no-underline",
|
|
457
457
|
children: "Configure OAuth endpoints →"
|
|
458
458
|
}),
|
|
459
459
|
H && G === 0 && /* @__PURE__ */ S("button", {
|
|
460
|
-
onClick: () =>
|
|
460
|
+
onClick: () => E?.(`${D}/apps/${w}/webhooks`),
|
|
461
461
|
className: "text-sm underline hover:no-underline",
|
|
462
462
|
children: "Add a webhook →"
|
|
463
463
|
})
|
|
@@ -467,17 +467,17 @@ var E = w`
|
|
|
467
467
|
}),
|
|
468
468
|
Q > 0 && Z === 0 && !q && /* @__PURE__ */ C(o, {
|
|
469
469
|
variant: "warning",
|
|
470
|
-
title:
|
|
470
|
+
title: O("devportal.warningsTitle", "Warnings"),
|
|
471
471
|
children: [
|
|
472
|
-
|
|
472
|
+
O("devportal.warningsMsg1", "You have"),
|
|
473
473
|
" ",
|
|
474
474
|
Q,
|
|
475
475
|
" ",
|
|
476
|
-
|
|
476
|
+
O("devportal.warningsMsg2", "warning(s). While you can submit, addressing these may improve your app's chances of approval.")
|
|
477
477
|
]
|
|
478
478
|
}),
|
|
479
479
|
/* @__PURE__ */ S(a, {
|
|
480
|
-
title:
|
|
480
|
+
title: O("devportal.reviewProcessTitle", "Review Process"),
|
|
481
481
|
children: /* @__PURE__ */ S("div", {
|
|
482
482
|
className: "rounded-lg border bg-bg-sunken/50 p-4",
|
|
483
483
|
children: /* @__PURE__ */ C("ul", {
|
|
@@ -488,28 +488,28 @@ var E = w`
|
|
|
488
488
|
children: [/* @__PURE__ */ S(p, {
|
|
489
489
|
size: 16,
|
|
490
490
|
className: "mt-0.5 text-primary"
|
|
491
|
-
}), /* @__PURE__ */ S("span", { children:
|
|
491
|
+
}), /* @__PURE__ */ S("span", { children: O("devportal.reviewProcessInfo1", "Review typically takes 3-5 business days") })]
|
|
492
492
|
}),
|
|
493
493
|
/* @__PURE__ */ C("li", {
|
|
494
494
|
className: "flex items-start gap-2",
|
|
495
495
|
children: [/* @__PURE__ */ S(p, {
|
|
496
496
|
size: 16,
|
|
497
497
|
className: "mt-0.5 text-primary"
|
|
498
|
-
}), /* @__PURE__ */ S("span", { children:
|
|
498
|
+
}), /* @__PURE__ */ S("span", { children: O("devportal.reviewProcessInfo2", "You'll receive notifications about review status changes") })]
|
|
499
499
|
}),
|
|
500
500
|
/* @__PURE__ */ C("li", {
|
|
501
501
|
className: "flex items-start gap-2",
|
|
502
502
|
children: [/* @__PURE__ */ S(p, {
|
|
503
503
|
size: 16,
|
|
504
504
|
className: "mt-0.5 text-primary"
|
|
505
|
-
}), /* @__PURE__ */ S("span", { children:
|
|
505
|
+
}), /* @__PURE__ */ S("span", { children: O("devportal.reviewProcessInfo3", "If changes are requested, you can resubmit without losing your place in the queue") })]
|
|
506
506
|
}),
|
|
507
507
|
/* @__PURE__ */ C("li", {
|
|
508
508
|
className: "flex items-start gap-2",
|
|
509
509
|
children: [/* @__PURE__ */ S(p, {
|
|
510
510
|
size: 16,
|
|
511
511
|
className: "mt-0.5 text-primary"
|
|
512
|
-
}), /* @__PURE__ */ S("span", { children:
|
|
512
|
+
}), /* @__PURE__ */ S("span", { children: O("devportal.reviewProcessInfo4", "Once approved and published, your app will be visible in the marketplace") })]
|
|
513
513
|
})
|
|
514
514
|
]
|
|
515
515
|
})
|
|
@@ -518,13 +518,13 @@ var E = w`
|
|
|
518
518
|
/* @__PURE__ */ C("div", {
|
|
519
519
|
className: "flex gap-3",
|
|
520
520
|
children: [/* @__PURE__ */ S("button", {
|
|
521
|
-
onClick: () =>
|
|
521
|
+
onClick: () => E?.(`${D}/apps/${w}`),
|
|
522
522
|
className: "rounded-md border px-4 py-2 text-sm font-medium hover:bg-bg-sunken",
|
|
523
|
-
children:
|
|
523
|
+
children: O("devportal.cancelButton", "Cancel")
|
|
524
524
|
}), /* @__PURE__ */ S("button", {
|
|
525
525
|
onClick: async () => {
|
|
526
526
|
if (w) {
|
|
527
|
-
|
|
527
|
+
A(!0), M(null);
|
|
528
528
|
try {
|
|
529
529
|
let e = await me({ variables: {
|
|
530
530
|
id: w,
|
|
@@ -536,20 +536,20 @@ var E = w`
|
|
|
536
536
|
notes: F.trim() || void 0
|
|
537
537
|
} }), P(!0);
|
|
538
538
|
} catch (e) {
|
|
539
|
-
|
|
539
|
+
M(e instanceof Error ? e.message : O("devportal.submitFailedDefault", "Failed to submit for review"));
|
|
540
540
|
} finally {
|
|
541
|
-
|
|
541
|
+
A(!1);
|
|
542
542
|
}
|
|
543
543
|
}
|
|
544
544
|
},
|
|
545
|
-
disabled: !$ ||
|
|
546
|
-
"aria-disabled": !$ ||
|
|
547
|
-
title: L.allowed ? void 0 :
|
|
545
|
+
disabled: !$ || k || !L.allowed,
|
|
546
|
+
"aria-disabled": !$ || k || !L.allowed,
|
|
547
|
+
title: L.allowed ? void 0 : O("devportal.common.noPermission", "You do not have permission to perform this action"),
|
|
548
548
|
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 disabled:opacity-50 disabled:cursor-not-allowed focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary",
|
|
549
|
-
children:
|
|
549
|
+
children: k ? /* @__PURE__ */ C(x, { children: [/* @__PURE__ */ S(v, {
|
|
550
550
|
size: 16,
|
|
551
551
|
className: "animate-spin"
|
|
552
|
-
}),
|
|
552
|
+
}), O("devportal.submittingButton", "Submitting...")] }) : /* @__PURE__ */ C(x, { children: [/* @__PURE__ */ S(oe, { size: 16 }), O("devportal.submitForReviewButton", "Submit for Review")] })
|
|
553
553
|
})]
|
|
554
554
|
})
|
|
555
555
|
]
|
|
@@ -557,6 +557,6 @@ var E = w`
|
|
|
557
557
|
});
|
|
558
558
|
};
|
|
559
559
|
//#endregion
|
|
560
|
-
export {
|
|
560
|
+
export { E as PublishPage };
|
|
561
561
|
|
|
562
562
|
//# sourceMappingURL=PublishPage.js.map
|