@burdenoff/microfe-devportal 2026.1112.1 → 2026.1113.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/devportal/components/AppCard.js +73 -70
- package/dist/devportal/components/AppCard.js.map +1 -1
- package/dist/devportal/components/ImageUploadField.js +82 -80
- package/dist/devportal/components/ImageUploadField.js.map +1 -1
- package/dist/devportal/components/StoreImage.d.ts +15 -0
- package/dist/devportal/components/StoreImage.js +30 -0
- package/dist/devportal/components/StoreImage.js.map +1 -0
- package/dist/devportal/components/index.d.ts +1 -0
- package/dist/devportal/components/index.js +17 -16
- package/dist/devportal/hooks/usePackageUpload.d.ts +46 -4
- package/dist/devportal/hooks/usePackageUpload.js +90 -36
- package/dist/devportal/hooks/usePackageUpload.js.map +1 -1
- package/dist/devportal/pages/AdminReviewPage.js +205 -202
- package/dist/devportal/pages/AdminReviewPage.js.map +1 -1
- package/dist/devportal/pages/ApplicationDetailPage.js +2 -2
- package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
- package/dist/devportal/pages/ApplicationsPage.js +201 -199
- package/dist/devportal/pages/ApplicationsPage.js.map +1 -1
- package/dist/devportal/pages/CreateOrganizationPage.js +120 -114
- package/dist/devportal/pages/CreateOrganizationPage.js.map +1 -1
- package/dist/devportal/pages/CreatePhysicalItemPage.js +2 -2
- package/dist/devportal/pages/CreatePhysicalItemPage.js.map +1 -1
- package/dist/devportal/pages/EditApplicationPage.js +84 -73
- package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
- package/dist/devportal/pages/EditPhysicalItemPage.js +312 -307
- package/dist/devportal/pages/EditPhysicalItemPage.js.map +1 -1
- package/dist/devportal/pages/ListingPreviewPage.js +175 -171
- package/dist/devportal/pages/ListingPreviewPage.js.map +1 -1
- package/dist/devportal/pages/OAuthClientDetailPage.js +134 -115
- package/dist/devportal/pages/OAuthClientDetailPage.js.map +1 -1
- package/dist/devportal/pages/SellerDashboardPage.js +118 -116
- package/dist/devportal/pages/SellerDashboardPage.js.map +1 -1
- package/dist/devportal/pages/SellerItemsPage.js +202 -199
- package/dist/devportal/pages/SellerItemsPage.js.map +1 -1
- package/dist/devportal/pages/SetupPage.js +141 -143
- package/dist/devportal/pages/SetupPage.js.map +1 -1
- package/dist/devportal/pages/StoreSubmissionPage.js +133 -131
- package/dist/devportal/pages/StoreSubmissionPage.js.map +1 -1
- package/dist/devportal/utils/errorMessage.d.ts +2 -0
- package/dist/devportal/utils/errorMessage.js +7 -0
- package/dist/devportal/utils/errorMessage.js.map +1 -0
- package/package.json +1 -1
|
@@ -3,43 +3,44 @@ import { EmptyState as n } from "../components/EmptyState.js";
|
|
|
3
3
|
import { useApproveApplicationMutation as r, useApproveApplicationVersionMutation as i, useGetApplicationForReviewQuery as a, useGetApplicationsQuery as o, useGetApplicationsWithPendingVersionsQuery as s, useRejectApplicationMutation as c, useRejectApplicationVersionMutation as l } from "../../generated/global-operations.js";
|
|
4
4
|
import { getErrorMessage as u } from "../hooks/useGraphQL.js";
|
|
5
5
|
import { useDevportal as d } from "../providers/DevportalProvider.js";
|
|
6
|
+
import "../components/index.js";
|
|
6
7
|
import { PermissionGuard as f } from "../components/PermissionGuard.js";
|
|
7
8
|
import { ManifestViewer as p } from "../components/ManifestViewer.js";
|
|
8
9
|
import { PackageValidationPanel as m } from "../components/PackageValidationPanel.js";
|
|
9
|
-
import "../
|
|
10
|
-
import { useDevportalPermission as
|
|
11
|
-
import { DEVPORTAL_PERMISSIONS as g } from "../constants/permissions.js";
|
|
10
|
+
import { DEVPORTAL_PERMISSIONS as h } from "../constants/permissions.js";
|
|
11
|
+
import { useDevportalPermission as g } from "../hooks/usePermission.js";
|
|
12
12
|
import "../hooks/index.js";
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
13
|
+
import { StoreImage as _ } from "../components/StoreImage.js";
|
|
14
|
+
import { useState as v } from "react";
|
|
15
|
+
import { AlertCircle as y, CheckCircle as b, ChevronDown as x, ChevronUp as S, Clock as C, Download as w, Eye as T, GitBranch as E, Loader2 as D, Package as O, Search as k, XCircle as A } from "lucide-react";
|
|
16
|
+
import { jsx as j, jsxs as M } from "react/jsx-runtime";
|
|
17
|
+
import { useI18n as N } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
17
18
|
// src/devportal/pages/AdminReviewPage.tsx
|
|
18
|
-
var
|
|
19
|
+
var P = {
|
|
19
20
|
NODE: "Node package",
|
|
20
21
|
WORKFLOW: "Workflow bundle"
|
|
21
|
-
},
|
|
22
|
-
let i =
|
|
23
|
-
return i ? /* @__PURE__ */
|
|
22
|
+
}, F = ({ appType: e, packageUrl: t, packageSize: n, tr: r }) => {
|
|
23
|
+
let i = P[e];
|
|
24
|
+
return i ? /* @__PURE__ */ M("div", {
|
|
24
25
|
className: "rounded-lg border border-status-warning-bg bg-status-warning-bg-subtle p-3 space-y-2",
|
|
25
|
-
children: [/* @__PURE__ */
|
|
26
|
+
children: [/* @__PURE__ */ M("div", {
|
|
26
27
|
className: "flex items-center gap-2 text-xs font-medium text-status-warning-text",
|
|
27
|
-
children: [/* @__PURE__ */
|
|
28
|
+
children: [/* @__PURE__ */ j(O, {
|
|
28
29
|
size: 13,
|
|
29
30
|
className: "flex-shrink-0"
|
|
30
31
|
}), r("devportal.zipVerificationRequired", "ZIP verification required — download and test before approving")]
|
|
31
|
-
}), t ? /* @__PURE__ */
|
|
32
|
+
}), t ? /* @__PURE__ */ M("a", {
|
|
32
33
|
href: t,
|
|
33
34
|
download: !0,
|
|
34
35
|
target: "_blank",
|
|
35
36
|
rel: "noopener noreferrer",
|
|
36
37
|
className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-3 py-1.5 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors",
|
|
37
38
|
children: [
|
|
38
|
-
/* @__PURE__ */
|
|
39
|
+
/* @__PURE__ */ j(w, { size: 14 }),
|
|
39
40
|
r("devportal.download", "Download"),
|
|
40
41
|
" ",
|
|
41
42
|
i,
|
|
42
|
-
n && /* @__PURE__ */
|
|
43
|
+
n && /* @__PURE__ */ M("span", {
|
|
43
44
|
className: "opacity-70 text-xs",
|
|
44
45
|
children: [
|
|
45
46
|
"(",
|
|
@@ -48,61 +49,62 @@ var N = {
|
|
|
48
49
|
]
|
|
49
50
|
})
|
|
50
51
|
]
|
|
51
|
-
}) : /* @__PURE__ */
|
|
52
|
+
}) : /* @__PURE__ */ M("p", {
|
|
52
53
|
className: "text-xs text-status-error-text flex items-center gap-1.5",
|
|
53
|
-
children: [/* @__PURE__ */
|
|
54
|
+
children: [/* @__PURE__ */ j(y, { size: 12 }), r("devportal.noZipUploaded", "No ZIP uploaded — developer must upload before this can be approved")]
|
|
54
55
|
})]
|
|
55
56
|
}) : null;
|
|
56
|
-
},
|
|
57
|
-
let { navigate: o, basePath: s } = d(), { t: c } =
|
|
57
|
+
}, I = ({ app: e, onApprove: t, onReject: n, processing: r, hasPendingVersions: i }) => {
|
|
58
|
+
let { navigate: o, basePath: s } = d(), { t: c } = N(), l = (e, t) => {
|
|
58
59
|
let n = c(e);
|
|
59
60
|
return n === e ? t : n;
|
|
60
|
-
}, [u, f] =
|
|
61
|
+
}, [u, f] = v(!1), [m, y] = v(""), C = g(h.APP_APPROVE), O = g(h.APP_REJECT), { data: k } = a({
|
|
61
62
|
variables: { id: e.id },
|
|
62
63
|
skip: !u,
|
|
63
64
|
fetchPolicy: "cache-first"
|
|
64
|
-
}),
|
|
65
|
-
return /* @__PURE__ */
|
|
65
|
+
}), I = k?.application?.versions?.edges?.[0]?.node;
|
|
66
|
+
return /* @__PURE__ */ M("div", {
|
|
66
67
|
className: "rounded-card border border-border-seam bg-bg-surface overflow-hidden",
|
|
67
|
-
children: [/* @__PURE__ */
|
|
68
|
+
children: [/* @__PURE__ */ M("div", {
|
|
68
69
|
className: "flex items-center gap-4 p-4",
|
|
69
70
|
children: [
|
|
70
|
-
|
|
71
|
+
/* @__PURE__ */ j(_, {
|
|
71
72
|
src: e.iconUrl,
|
|
72
73
|
alt: e.name,
|
|
73
|
-
className: "h-12 w-12 rounded-lg object-cover flex-shrink-0"
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
74
|
+
className: "h-12 w-12 rounded-lg object-cover flex-shrink-0",
|
|
75
|
+
fallback: /* @__PURE__ */ j("div", {
|
|
76
|
+
className: "h-12 w-12 rounded-lg bg-bg-sunken flex items-center justify-center flex-shrink-0",
|
|
77
|
+
children: /* @__PURE__ */ j("span", {
|
|
78
|
+
className: "text-lg font-bold text-text-secondary",
|
|
79
|
+
children: e.name.charAt(0).toUpperCase()
|
|
80
|
+
})
|
|
79
81
|
})
|
|
80
82
|
}),
|
|
81
|
-
/* @__PURE__ */
|
|
83
|
+
/* @__PURE__ */ M("div", {
|
|
82
84
|
className: "flex-1 min-w-0",
|
|
83
85
|
children: [
|
|
84
|
-
/* @__PURE__ */
|
|
86
|
+
/* @__PURE__ */ M("div", {
|
|
85
87
|
className: "flex items-center gap-2",
|
|
86
88
|
children: [
|
|
87
|
-
/* @__PURE__ */
|
|
89
|
+
/* @__PURE__ */ j("h3", {
|
|
88
90
|
className: "font-semibold truncate",
|
|
89
91
|
children: e.name
|
|
90
92
|
}),
|
|
91
|
-
/* @__PURE__ */
|
|
93
|
+
/* @__PURE__ */ j("span", {
|
|
92
94
|
className: "inline-flex items-center rounded-full bg-status-warning-bg-subtle px-2 py-0.5 text-xs font-medium text-status-warning-text",
|
|
93
95
|
children: e.status
|
|
94
96
|
}),
|
|
95
|
-
/* @__PURE__ */
|
|
97
|
+
/* @__PURE__ */ j("span", {
|
|
96
98
|
className: "inline-flex items-center rounded-full bg-bg-sunken px-2 py-0.5 text-xs text-text-secondary",
|
|
97
99
|
children: e.appType.replace(/_/g, " ")
|
|
98
100
|
})
|
|
99
101
|
]
|
|
100
102
|
}),
|
|
101
|
-
/* @__PURE__ */
|
|
103
|
+
/* @__PURE__ */ j("p", {
|
|
102
104
|
className: "text-sm text-text-secondary truncate",
|
|
103
105
|
children: e.shortDescription ?? e.description ?? l("devportal.noDescription", "No description")
|
|
104
106
|
}),
|
|
105
|
-
/* @__PURE__ */
|
|
107
|
+
/* @__PURE__ */ M("p", {
|
|
106
108
|
className: "text-xs text-text-secondary mt-0.5",
|
|
107
109
|
children: [
|
|
108
110
|
l("devportal.submitted", "Submitted"),
|
|
@@ -117,183 +119,183 @@ var N = {
|
|
|
117
119
|
})
|
|
118
120
|
]
|
|
119
121
|
}),
|
|
120
|
-
/* @__PURE__ */
|
|
122
|
+
/* @__PURE__ */ M("div", {
|
|
121
123
|
className: "flex items-center gap-2 flex-shrink-0",
|
|
122
|
-
children: [/* @__PURE__ */
|
|
124
|
+
children: [/* @__PURE__ */ M("button", {
|
|
123
125
|
onClick: () => o?.(`${s}/apps/${e.id}`),
|
|
124
126
|
className: "inline-flex items-center gap-1.5 rounded-md border px-3 py-1.5 text-sm hover:bg-bg-sunken",
|
|
125
127
|
title: l("devportal.viewAppDetails", "View app details"),
|
|
126
|
-
children: [/* @__PURE__ */
|
|
127
|
-
}), /* @__PURE__ */
|
|
128
|
+
children: [/* @__PURE__ */ j(T, { size: 14 }), l("devportal.view", "View")]
|
|
129
|
+
}), /* @__PURE__ */ M("button", {
|
|
128
130
|
onClick: () => f((e) => !e),
|
|
129
131
|
className: "inline-flex items-center gap-1.5 rounded-md border px-3 py-1.5 text-sm hover:bg-bg-sunken",
|
|
130
|
-
children: [
|
|
132
|
+
children: [j(u ? S : x, { size: 14 }), l("devportal.review", "Review")]
|
|
131
133
|
})]
|
|
132
134
|
})
|
|
133
135
|
]
|
|
134
|
-
}), u && /* @__PURE__ */
|
|
136
|
+
}), u && /* @__PURE__ */ M("div", {
|
|
135
137
|
className: "border-t bg-bg-sunken/30 p-4 space-y-4",
|
|
136
138
|
children: [
|
|
137
|
-
i && /* @__PURE__ */
|
|
139
|
+
i && /* @__PURE__ */ M("div", {
|
|
138
140
|
className: "flex items-start gap-2 rounded-md border border-status-warning-bg bg-status-warning-bg-subtle px-3 py-2.5 text-xs text-status-warning-text",
|
|
139
|
-
children: [/* @__PURE__ */
|
|
141
|
+
children: [/* @__PURE__ */ j(E, {
|
|
140
142
|
size: 14,
|
|
141
143
|
className: "mt-0.5 shrink-0",
|
|
142
144
|
"aria-hidden": "true"
|
|
143
|
-
}), /* @__PURE__ */
|
|
145
|
+
}), /* @__PURE__ */ M("span", { children: [
|
|
144
146
|
"This app has a pending version. Approve the version in the",
|
|
145
147
|
" ",
|
|
146
|
-
/* @__PURE__ */
|
|
148
|
+
/* @__PURE__ */ j("strong", { children: "Version Updates" }),
|
|
147
149
|
" section below before approving the app — the version must be live before the app can go public."
|
|
148
150
|
] })]
|
|
149
151
|
}),
|
|
150
|
-
e.reviewNotes && /* @__PURE__ */
|
|
152
|
+
e.reviewNotes && /* @__PURE__ */ M("div", {
|
|
151
153
|
className: "rounded-md border bg-bg-surface p-3",
|
|
152
|
-
children: [/* @__PURE__ */
|
|
154
|
+
children: [/* @__PURE__ */ j("p", {
|
|
153
155
|
className: "text-xs font-medium text-text-secondary mb-1",
|
|
154
156
|
children: l("devportal.developerNotes", "Developer Notes")
|
|
155
|
-
}), /* @__PURE__ */
|
|
157
|
+
}), /* @__PURE__ */ j("p", {
|
|
156
158
|
className: "text-sm",
|
|
157
159
|
children: e.reviewNotes
|
|
158
160
|
})]
|
|
159
161
|
}),
|
|
160
|
-
/* @__PURE__ */
|
|
162
|
+
/* @__PURE__ */ M("div", {
|
|
161
163
|
className: "grid grid-cols-2 gap-3 text-sm",
|
|
162
164
|
children: [
|
|
163
|
-
/* @__PURE__ */
|
|
165
|
+
/* @__PURE__ */ M("div", { children: [/* @__PURE__ */ M("span", {
|
|
164
166
|
className: "text-text-secondary",
|
|
165
167
|
children: [
|
|
166
168
|
l("devportal.category", "Category"),
|
|
167
169
|
":",
|
|
168
170
|
" "
|
|
169
171
|
]
|
|
170
|
-
}), /* @__PURE__ */
|
|
171
|
-
/* @__PURE__ */
|
|
172
|
+
}), /* @__PURE__ */ j("span", { children: e.category ?? "—" })] }),
|
|
173
|
+
/* @__PURE__ */ M("div", { children: [/* @__PURE__ */ M("span", {
|
|
172
174
|
className: "text-text-secondary",
|
|
173
175
|
children: [
|
|
174
176
|
l("devportal.pricing", "Pricing"),
|
|
175
177
|
":",
|
|
176
178
|
" "
|
|
177
179
|
]
|
|
178
|
-
}), /* @__PURE__ */
|
|
179
|
-
/* @__PURE__ */
|
|
180
|
+
}), /* @__PURE__ */ j("span", { children: e.pricingType ?? "FREE" })] }),
|
|
181
|
+
/* @__PURE__ */ M("div", { children: [/* @__PURE__ */ M("span", {
|
|
180
182
|
className: "text-text-secondary",
|
|
181
183
|
children: [
|
|
182
184
|
l("devportal.website", "Website"),
|
|
183
185
|
":",
|
|
184
186
|
" "
|
|
185
187
|
]
|
|
186
|
-
}), e.websiteUrl ? /* @__PURE__ */
|
|
188
|
+
}), e.websiteUrl ? /* @__PURE__ */ j("a", {
|
|
187
189
|
href: e.websiteUrl,
|
|
188
190
|
target: "_blank",
|
|
189
191
|
rel: "noopener noreferrer",
|
|
190
192
|
className: "text-primary underline hover:no-underline",
|
|
191
193
|
children: l("devportal.link", "Link")
|
|
192
|
-
}) : /* @__PURE__ */
|
|
193
|
-
/* @__PURE__ */
|
|
194
|
+
}) : /* @__PURE__ */ j("span", { children: "—" })] }),
|
|
195
|
+
/* @__PURE__ */ M("div", { children: [/* @__PURE__ */ M("span", {
|
|
194
196
|
className: "text-text-secondary",
|
|
195
197
|
children: [
|
|
196
198
|
l("devportal.privacyPolicy", "Privacy Policy"),
|
|
197
199
|
":",
|
|
198
200
|
" "
|
|
199
201
|
]
|
|
200
|
-
}), e.privacyPolicyUrl ? /* @__PURE__ */
|
|
202
|
+
}), e.privacyPolicyUrl ? /* @__PURE__ */ j("a", {
|
|
201
203
|
href: e.privacyPolicyUrl,
|
|
202
204
|
target: "_blank",
|
|
203
205
|
rel: "noopener noreferrer",
|
|
204
206
|
className: "text-primary underline hover:no-underline",
|
|
205
207
|
children: l("devportal.link", "Link")
|
|
206
|
-
}) : /* @__PURE__ */
|
|
208
|
+
}) : /* @__PURE__ */ j("span", {
|
|
207
209
|
className: "text-status-error-text",
|
|
208
210
|
children: l("devportal.missing", "Missing")
|
|
209
211
|
})] })
|
|
210
212
|
]
|
|
211
213
|
}),
|
|
212
|
-
|
|
214
|
+
I && /* @__PURE__ */ M("div", {
|
|
213
215
|
className: "rounded-md border bg-bg-surface p-3 space-y-3",
|
|
214
216
|
children: [
|
|
215
|
-
/* @__PURE__ */
|
|
217
|
+
/* @__PURE__ */ M("p", {
|
|
216
218
|
className: "text-xs font-medium text-text-secondary",
|
|
217
219
|
children: [
|
|
218
220
|
l("devportal.latestVersion", "Latest Version"),
|
|
219
221
|
":",
|
|
220
222
|
" ",
|
|
221
|
-
/* @__PURE__ */
|
|
223
|
+
/* @__PURE__ */ j("span", {
|
|
222
224
|
className: "font-mono text-text-primary",
|
|
223
|
-
children:
|
|
225
|
+
children: I.version
|
|
224
226
|
})
|
|
225
227
|
]
|
|
226
228
|
}),
|
|
227
|
-
|
|
229
|
+
P[e.appType] ? /* @__PURE__ */ j(F, {
|
|
228
230
|
appType: e.appType,
|
|
229
|
-
packageUrl:
|
|
230
|
-
packageSize:
|
|
231
|
+
packageUrl: I.packageUrl,
|
|
232
|
+
packageSize: I.packageSize,
|
|
231
233
|
tr: l
|
|
232
|
-
}) :
|
|
234
|
+
}) : I.packageUrl && /* @__PURE__ */ j("div", {
|
|
233
235
|
className: "flex flex-wrap gap-2",
|
|
234
|
-
children: /* @__PURE__ */
|
|
235
|
-
href:
|
|
236
|
+
children: /* @__PURE__ */ M("a", {
|
|
237
|
+
href: I.packageUrl,
|
|
236
238
|
download: !0,
|
|
237
239
|
target: "_blank",
|
|
238
240
|
rel: "noopener noreferrer",
|
|
239
241
|
className: "inline-flex items-center gap-1.5 rounded-md border px-3 py-1.5 text-sm hover:bg-bg-sunken",
|
|
240
242
|
children: [
|
|
241
|
-
/* @__PURE__ */
|
|
243
|
+
/* @__PURE__ */ j(w, { size: 14 }),
|
|
242
244
|
l("devportal.downloadPackage", "Download Package"),
|
|
243
|
-
|
|
245
|
+
I.packageSize && /* @__PURE__ */ M("span", {
|
|
244
246
|
className: "text-text-secondary text-xs ml-1",
|
|
245
247
|
children: [
|
|
246
248
|
"(",
|
|
247
|
-
|
|
249
|
+
I.packageSize,
|
|
248
250
|
")"
|
|
249
251
|
]
|
|
250
252
|
})
|
|
251
253
|
]
|
|
252
254
|
})
|
|
253
255
|
}),
|
|
254
|
-
|
|
255
|
-
manifest:
|
|
256
|
+
I.manifest && /* @__PURE__ */ j(p, {
|
|
257
|
+
manifest: I.manifest,
|
|
256
258
|
tr: l
|
|
257
259
|
})
|
|
258
260
|
]
|
|
259
261
|
}),
|
|
260
|
-
/* @__PURE__ */
|
|
262
|
+
/* @__PURE__ */ M("div", { children: [/* @__PURE__ */ j("label", {
|
|
261
263
|
className: "text-sm font-medium",
|
|
262
264
|
children: l("devportal.reviewNotes", "Review Notes")
|
|
263
|
-
}), /* @__PURE__ */
|
|
265
|
+
}), /* @__PURE__ */ j("textarea", {
|
|
264
266
|
value: m,
|
|
265
|
-
onChange: (e) =>
|
|
267
|
+
onChange: (e) => y(e.target.value),
|
|
266
268
|
placeholder: l("devportal.reviewNotesPlaceholder", "Add feedback for the developer (required for rejection)..."),
|
|
267
269
|
rows: 3,
|
|
268
270
|
className: "mt-1 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"
|
|
269
271
|
})] }),
|
|
270
|
-
/* @__PURE__ */
|
|
272
|
+
/* @__PURE__ */ M("div", {
|
|
271
273
|
className: "flex gap-3",
|
|
272
|
-
children: [/* @__PURE__ */
|
|
274
|
+
children: [/* @__PURE__ */ M("button", {
|
|
273
275
|
onClick: () => t(e.id, m),
|
|
274
|
-
disabled: r || !
|
|
275
|
-
"aria-disabled": r || !
|
|
276
|
-
title:
|
|
276
|
+
disabled: r || !C.allowed,
|
|
277
|
+
"aria-disabled": r || !C.allowed,
|
|
278
|
+
title: C.allowed ? void 0 : l("devportal.common.noPermission", "You do not have permission to perform this action"),
|
|
277
279
|
className: "inline-flex items-center gap-2 rounded-md bg-status-success-bg px-4 py-2 text-sm font-medium text-white hover:bg-status-success-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",
|
|
278
|
-
children: [r ? /* @__PURE__ */
|
|
280
|
+
children: [r ? /* @__PURE__ */ j(D, {
|
|
279
281
|
size: 14,
|
|
280
282
|
className: "animate-spin",
|
|
281
283
|
"aria-hidden": "true"
|
|
282
|
-
}) : /* @__PURE__ */
|
|
284
|
+
}) : /* @__PURE__ */ j(b, {
|
|
283
285
|
size: 14,
|
|
284
286
|
"aria-hidden": "true"
|
|
285
287
|
}), l("devportal.approve", "Approve")]
|
|
286
|
-
}), /* @__PURE__ */
|
|
288
|
+
}), /* @__PURE__ */ M("button", {
|
|
287
289
|
onClick: () => n(e.id, m),
|
|
288
|
-
disabled: r || !m.trim() || !
|
|
289
|
-
"aria-disabled": r || !m.trim() || !
|
|
290
|
+
disabled: r || !m.trim() || !O.allowed,
|
|
291
|
+
"aria-disabled": r || !m.trim() || !O.allowed,
|
|
290
292
|
className: "inline-flex items-center gap-2 rounded-md bg-status-error-bg px-4 py-2 text-sm font-medium text-status-error-text hover:bg-status-error-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",
|
|
291
|
-
title:
|
|
292
|
-
children: [r ? /* @__PURE__ */
|
|
293
|
+
title: O.allowed ? m.trim() ? void 0 : l("devportal.notesRequiredForRejection", "Notes required for rejection") : l("devportal.common.noPermission", "You do not have permission to perform this action"),
|
|
294
|
+
children: [r ? /* @__PURE__ */ j(D, {
|
|
293
295
|
size: 14,
|
|
294
296
|
className: "animate-spin",
|
|
295
297
|
"aria-hidden": "true"
|
|
296
|
-
}) : /* @__PURE__ */ A
|
|
298
|
+
}) : /* @__PURE__ */ j(A, {
|
|
297
299
|
size: 14,
|
|
298
300
|
"aria-hidden": "true"
|
|
299
301
|
}), l("devportal.reject", "Reject")]
|
|
@@ -302,35 +304,36 @@ var N = {
|
|
|
302
304
|
]
|
|
303
305
|
})]
|
|
304
306
|
});
|
|
305
|
-
},
|
|
306
|
-
let { navigate: i, basePath: a } = d(), { t: o } =
|
|
307
|
+
}, L = ({ app: e, onApproveVersion: t, onRejectVersion: n, processingVersionIds: r }) => {
|
|
308
|
+
let { navigate: i, basePath: a } = d(), { t: o } = N(), s = (e, t) => {
|
|
307
309
|
let n = o(e);
|
|
308
310
|
return n === e ? t : n;
|
|
309
|
-
}, [c, l] =
|
|
310
|
-
return u.length === 0 ? null : /* @__PURE__ */
|
|
311
|
+
}, [c, l] = v(!1), u = e.versions.edges.map((e) => e.node).filter((e) => e.status === "pending_review");
|
|
312
|
+
return u.length === 0 ? null : /* @__PURE__ */ M("div", {
|
|
311
313
|
className: "rounded-card border border-border-seam bg-bg-surface overflow-hidden",
|
|
312
|
-
children: [/* @__PURE__ */
|
|
314
|
+
children: [/* @__PURE__ */ M("div", {
|
|
313
315
|
className: "flex items-center gap-4 p-4",
|
|
314
316
|
children: [
|
|
315
|
-
|
|
317
|
+
/* @__PURE__ */ j(_, {
|
|
316
318
|
src: e.iconUrl,
|
|
317
319
|
alt: e.name,
|
|
318
|
-
className: "h-12 w-12 rounded-lg object-cover flex-shrink-0"
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
320
|
+
className: "h-12 w-12 rounded-lg object-cover flex-shrink-0",
|
|
321
|
+
fallback: /* @__PURE__ */ j("div", {
|
|
322
|
+
className: "h-12 w-12 rounded-lg bg-bg-sunken flex items-center justify-center flex-shrink-0",
|
|
323
|
+
children: /* @__PURE__ */ j("span", {
|
|
324
|
+
className: "text-lg font-bold text-text-secondary",
|
|
325
|
+
children: e.name.charAt(0).toUpperCase()
|
|
326
|
+
})
|
|
324
327
|
})
|
|
325
328
|
}),
|
|
326
|
-
/* @__PURE__ */
|
|
329
|
+
/* @__PURE__ */ M("div", {
|
|
327
330
|
className: "flex-1 min-w-0",
|
|
328
|
-
children: [/* @__PURE__ */
|
|
331
|
+
children: [/* @__PURE__ */ M("div", {
|
|
329
332
|
className: "flex items-center gap-2",
|
|
330
|
-
children: [/* @__PURE__ */
|
|
333
|
+
children: [/* @__PURE__ */ j("h3", {
|
|
331
334
|
className: "font-semibold truncate",
|
|
332
335
|
children: e.name
|
|
333
|
-
}), /* @__PURE__ */
|
|
336
|
+
}), /* @__PURE__ */ M("span", {
|
|
334
337
|
className: "inline-flex items-center rounded-full bg-status-info-bg-subtle px-2 py-0.5 text-xs font-medium text-status-info-text",
|
|
335
338
|
children: [
|
|
336
339
|
u.length,
|
|
@@ -339,27 +342,27 @@ var N = {
|
|
|
339
342
|
" pending"
|
|
340
343
|
]
|
|
341
344
|
})]
|
|
342
|
-
}), /* @__PURE__ */
|
|
345
|
+
}), /* @__PURE__ */ j("p", {
|
|
343
346
|
className: "text-sm text-text-secondary truncate",
|
|
344
347
|
children: e.shortDescription ?? e.description ?? s("devportal.noDescription", "No description")
|
|
345
348
|
})]
|
|
346
349
|
}),
|
|
347
|
-
/* @__PURE__ */
|
|
350
|
+
/* @__PURE__ */ M("div", {
|
|
348
351
|
className: "flex items-center gap-2 flex-shrink-0",
|
|
349
|
-
children: [/* @__PURE__ */
|
|
352
|
+
children: [/* @__PURE__ */ M("button", {
|
|
350
353
|
onClick: () => i?.(`${a}/apps/${e.id}`),
|
|
351
354
|
className: "inline-flex items-center gap-1.5 rounded-md border px-3 py-1.5 text-sm hover:bg-bg-sunken",
|
|
352
|
-
children: [/* @__PURE__ */
|
|
353
|
-
}), /* @__PURE__ */
|
|
355
|
+
children: [/* @__PURE__ */ j(T, { size: 14 }), s("devportal.view", "View")]
|
|
356
|
+
}), /* @__PURE__ */ M("button", {
|
|
354
357
|
onClick: () => l((e) => !e),
|
|
355
358
|
className: "inline-flex items-center gap-1.5 rounded-md border px-3 py-1.5 text-sm hover:bg-bg-sunken",
|
|
356
|
-
children: [
|
|
359
|
+
children: [j(c ? S : x, { size: 14 }), s("devportal.review", "Review")]
|
|
357
360
|
})]
|
|
358
361
|
})
|
|
359
362
|
]
|
|
360
|
-
}), c && /* @__PURE__ */
|
|
363
|
+
}), c && /* @__PURE__ */ j("div", {
|
|
361
364
|
className: "border-t bg-bg-sunken/30 p-4 space-y-4",
|
|
362
|
-
children: u.map((i) => /* @__PURE__ */
|
|
365
|
+
children: u.map((i) => /* @__PURE__ */ j(R, {
|
|
363
366
|
version: i,
|
|
364
367
|
appId: e.id,
|
|
365
368
|
appType: e.appType,
|
|
@@ -370,27 +373,27 @@ var N = {
|
|
|
370
373
|
}, i.id))
|
|
371
374
|
})]
|
|
372
375
|
});
|
|
373
|
-
},
|
|
374
|
-
let [s, c] =
|
|
375
|
-
return /* @__PURE__ */
|
|
376
|
+
}, R = ({ version: e, appId: t, appType: n, onApprove: r, onReject: i, processing: a, tr: o }) => {
|
|
377
|
+
let [s, c] = v(""), l = g(h.APP_APPROVE), u = g(h.APP_REJECT);
|
|
378
|
+
return /* @__PURE__ */ M("div", {
|
|
376
379
|
className: "rounded-md border bg-bg-surface p-4 space-y-3",
|
|
377
380
|
children: [
|
|
378
|
-
/* @__PURE__ */
|
|
381
|
+
/* @__PURE__ */ M("div", {
|
|
379
382
|
className: "flex items-center gap-3",
|
|
380
383
|
children: [
|
|
381
|
-
/* @__PURE__ */
|
|
384
|
+
/* @__PURE__ */ j(E, {
|
|
382
385
|
size: 14,
|
|
383
386
|
className: "text-text-secondary flex-shrink-0"
|
|
384
387
|
}),
|
|
385
|
-
/* @__PURE__ */
|
|
388
|
+
/* @__PURE__ */ j("span", {
|
|
386
389
|
className: "font-mono font-semibold text-sm",
|
|
387
390
|
children: e.version
|
|
388
391
|
}),
|
|
389
|
-
e.isLatest && /* @__PURE__ */
|
|
392
|
+
e.isLatest && /* @__PURE__ */ j("span", {
|
|
390
393
|
className: "inline-flex items-center rounded-full bg-bg-sunken px-2 py-0.5 text-xs text-text-secondary",
|
|
391
394
|
children: "Latest"
|
|
392
395
|
}),
|
|
393
|
-
/* @__PURE__ */
|
|
396
|
+
/* @__PURE__ */ M("span", {
|
|
394
397
|
className: "text-xs text-text-secondary ml-auto",
|
|
395
398
|
children: [
|
|
396
399
|
o("devportal.submitted", "Submitted"),
|
|
@@ -405,27 +408,27 @@ var N = {
|
|
|
405
408
|
})
|
|
406
409
|
]
|
|
407
410
|
}),
|
|
408
|
-
e.releaseNotes && /* @__PURE__ */
|
|
411
|
+
e.releaseNotes && /* @__PURE__ */ j("p", {
|
|
409
412
|
className: "text-sm text-text-secondary",
|
|
410
413
|
children: e.releaseNotes
|
|
411
414
|
}),
|
|
412
|
-
|
|
415
|
+
P[n] ? /* @__PURE__ */ j(F, {
|
|
413
416
|
appType: n,
|
|
414
417
|
packageUrl: e.packageUrl,
|
|
415
418
|
packageSize: e.packageSize,
|
|
416
419
|
tr: o
|
|
417
|
-
}) : e.packageUrl && /* @__PURE__ */
|
|
420
|
+
}) : e.packageUrl && /* @__PURE__ */ j("div", {
|
|
418
421
|
className: "flex flex-wrap gap-2",
|
|
419
|
-
children: /* @__PURE__ */
|
|
422
|
+
children: /* @__PURE__ */ M("a", {
|
|
420
423
|
href: e.packageUrl,
|
|
421
424
|
download: !0,
|
|
422
425
|
target: "_blank",
|
|
423
426
|
rel: "noopener noreferrer",
|
|
424
427
|
className: "inline-flex items-center gap-1.5 rounded-md border px-3 py-1.5 text-sm hover:bg-bg-sunken",
|
|
425
428
|
children: [
|
|
426
|
-
/* @__PURE__ */
|
|
429
|
+
/* @__PURE__ */ j(w, { size: 14 }),
|
|
427
430
|
o("devportal.downloadPackage", "Download Package"),
|
|
428
|
-
e.packageSize && /* @__PURE__ */
|
|
431
|
+
e.packageSize && /* @__PURE__ */ M("span", {
|
|
429
432
|
className: "text-text-secondary text-xs ml-1",
|
|
430
433
|
children: [
|
|
431
434
|
"(",
|
|
@@ -436,62 +439,62 @@ var N = {
|
|
|
436
439
|
]
|
|
437
440
|
})
|
|
438
441
|
}),
|
|
439
|
-
n === "NODE" && /* @__PURE__ */
|
|
442
|
+
n === "NODE" && /* @__PURE__ */ M("div", {
|
|
440
443
|
className: "space-y-1",
|
|
441
|
-
children: [/* @__PURE__ */
|
|
444
|
+
children: [/* @__PURE__ */ j("p", {
|
|
442
445
|
className: "text-sm font-medium",
|
|
443
446
|
children: o("devportal.packageValidation.title", "Package validation")
|
|
444
|
-
}), /* @__PURE__ */
|
|
447
|
+
}), /* @__PURE__ */ j(m, {
|
|
445
448
|
metadata: e.metadata,
|
|
446
449
|
defaultExpanded: !0
|
|
447
450
|
})]
|
|
448
451
|
}),
|
|
449
|
-
e.manifest && /* @__PURE__ */
|
|
452
|
+
e.manifest && /* @__PURE__ */ j(p, {
|
|
450
453
|
manifest: e.manifest,
|
|
451
454
|
tr: o
|
|
452
455
|
}),
|
|
453
|
-
/* @__PURE__ */
|
|
456
|
+
/* @__PURE__ */ M("div", { children: [/* @__PURE__ */ j("label", {
|
|
454
457
|
className: "text-sm font-medium",
|
|
455
458
|
children: o("devportal.reviewNotes", "Review Notes")
|
|
456
|
-
}), /* @__PURE__ */
|
|
459
|
+
}), /* @__PURE__ */ j("textarea", {
|
|
457
460
|
value: s,
|
|
458
461
|
onChange: (e) => c(e.target.value),
|
|
459
462
|
placeholder: o("devportal.reviewNotesPlaceholder", "Add feedback for the developer (required for rejection)..."),
|
|
460
463
|
rows: 2,
|
|
461
464
|
className: "mt-1 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"
|
|
462
465
|
})] }),
|
|
463
|
-
/* @__PURE__ */
|
|
466
|
+
/* @__PURE__ */ M("div", {
|
|
464
467
|
className: "flex gap-3",
|
|
465
|
-
children: [/* @__PURE__ */
|
|
468
|
+
children: [/* @__PURE__ */ M("button", {
|
|
466
469
|
onClick: () => r(e.id, t, s),
|
|
467
470
|
disabled: a || !l.allowed,
|
|
468
471
|
"aria-disabled": a || !l.allowed,
|
|
469
472
|
className: "inline-flex items-center gap-2 rounded-md bg-status-success-bg px-4 py-2 text-sm font-medium text-white hover:bg-status-success-bg/90 disabled:opacity-50 disabled:cursor-not-allowed",
|
|
470
|
-
children: [a ? /* @__PURE__ */
|
|
473
|
+
children: [a ? /* @__PURE__ */ j(D, {
|
|
471
474
|
size: 14,
|
|
472
475
|
className: "animate-spin"
|
|
473
|
-
}) : /* @__PURE__ */
|
|
474
|
-
}), /* @__PURE__ */
|
|
476
|
+
}) : /* @__PURE__ */ j(b, { size: 14 }), o("devportal.approveVersion", "Approve Version")]
|
|
477
|
+
}), /* @__PURE__ */ M("button", {
|
|
475
478
|
onClick: () => i(e.id, t, s),
|
|
476
479
|
disabled: a || !s.trim() || !u.allowed,
|
|
477
480
|
"aria-disabled": a || !s.trim() || !u.allowed,
|
|
478
481
|
className: "inline-flex items-center gap-2 rounded-md bg-status-error-bg px-4 py-2 text-sm font-medium text-status-error-text hover:bg-status-error-bg/90 disabled:opacity-50 disabled:cursor-not-allowed",
|
|
479
|
-
children: [a ? /* @__PURE__ */
|
|
482
|
+
children: [a ? /* @__PURE__ */ j(D, {
|
|
480
483
|
size: 14,
|
|
481
484
|
className: "animate-spin"
|
|
482
|
-
}) : /* @__PURE__ */ A
|
|
485
|
+
}) : /* @__PURE__ */ j(A, { size: 14 }), o("devportal.rejectVersion", "Reject Version")]
|
|
483
486
|
})]
|
|
484
487
|
})
|
|
485
488
|
]
|
|
486
489
|
});
|
|
487
|
-
},
|
|
488
|
-
let { t: a } =
|
|
490
|
+
}, z = () => {
|
|
491
|
+
let { t: a } = N(), d = (e, t) => {
|
|
489
492
|
let n = a(e);
|
|
490
493
|
return n === e ? t : n;
|
|
491
|
-
}, [p, m] =
|
|
494
|
+
}, [p, m] = v(""), [g, _] = v(/* @__PURE__ */ new Set()), [x, S] = v(/* @__PURE__ */ new Set()), [w, T] = v(null), [O, A] = v(null), P = (e) => _((t) => new Set(t).add(e)), F = (e) => _((t) => {
|
|
492
495
|
let n = new Set(t);
|
|
493
496
|
return n.delete(e), n;
|
|
494
|
-
}), R = (e) =>
|
|
497
|
+
}), R = (e) => S((t) => new Set(t).add(e)), z = (e) => S((t) => {
|
|
495
498
|
let n = new Set(t);
|
|
496
499
|
return n.delete(e), n;
|
|
497
500
|
}), { data: B, loading: V, error: H, refetch: U } = o({
|
|
@@ -504,98 +507,98 @@ var N = {
|
|
|
504
507
|
variables: { limit: 100 },
|
|
505
508
|
fetchPolicy: "cache-and-network"
|
|
506
509
|
}), [K] = r(), [q] = c(), [J] = i(), [Y] = l(), X = B?.applications?.edges?.map((e) => e.node) ?? [], Z = W?.applicationsWithPendingVersions?.edges?.map((e) => e.node) ?? [], Q = new Set(Z.map((e) => e.id)), $ = p ? X.filter((e) => e.name.toLowerCase().includes(p.toLowerCase()) || (e.shortDescription ?? "").toLowerCase().includes(p.toLowerCase())) : X, ee = async (e, t) => {
|
|
507
|
-
P(e),
|
|
510
|
+
P(e), T(null), A(null);
|
|
508
511
|
try {
|
|
509
512
|
let n = await K({ variables: {
|
|
510
513
|
id: e,
|
|
511
514
|
notes: t || void 0
|
|
512
515
|
} });
|
|
513
516
|
if (n.error) throw n.error;
|
|
514
|
-
|
|
517
|
+
A(d("devportal.applicationApprovedSuccess", "Application approved successfully.")), await U();
|
|
515
518
|
} catch (e) {
|
|
516
|
-
|
|
519
|
+
T(e instanceof Error ? e.message : d("devportal.failedToApproveApplication", "Failed to approve application"));
|
|
517
520
|
} finally {
|
|
518
|
-
|
|
521
|
+
F(e);
|
|
519
522
|
}
|
|
520
523
|
}, te = async (e, t) => {
|
|
521
524
|
if (t.trim()) {
|
|
522
|
-
P(e),
|
|
525
|
+
P(e), T(null), A(null);
|
|
523
526
|
try {
|
|
524
527
|
let n = await q({ variables: {
|
|
525
528
|
id: e,
|
|
526
529
|
notes: t
|
|
527
530
|
} });
|
|
528
531
|
if (n.error) throw n.error;
|
|
529
|
-
|
|
532
|
+
A(d("devportal.applicationRejected", "Application rejected.")), await U();
|
|
530
533
|
} catch (e) {
|
|
531
|
-
|
|
534
|
+
T(e instanceof Error ? e.message : d("devportal.failedToRejectApplication", "Failed to reject application"));
|
|
532
535
|
} finally {
|
|
533
|
-
|
|
536
|
+
F(e);
|
|
534
537
|
}
|
|
535
538
|
}
|
|
536
539
|
}, ne = async (e, t, n) => {
|
|
537
|
-
R(e),
|
|
540
|
+
R(e), T(null), A(null);
|
|
538
541
|
try {
|
|
539
542
|
let t = await J({ variables: {
|
|
540
543
|
id: e,
|
|
541
544
|
notes: n || void 0
|
|
542
545
|
} });
|
|
543
546
|
if (t.error) throw t.error;
|
|
544
|
-
|
|
547
|
+
A(d("devportal.versionApprovedSuccess", "Version approved and published.")), await G();
|
|
545
548
|
} catch (e) {
|
|
546
|
-
|
|
549
|
+
T(e instanceof Error ? e.message : d("devportal.failedToApproveVersion", "Failed to approve version"));
|
|
547
550
|
} finally {
|
|
548
551
|
z(e);
|
|
549
552
|
}
|
|
550
553
|
}, re = async (e, t, n) => {
|
|
551
554
|
if (n.trim()) {
|
|
552
|
-
R(e),
|
|
555
|
+
R(e), T(null), A(null);
|
|
553
556
|
try {
|
|
554
557
|
let t = await Y({ variables: {
|
|
555
558
|
id: e,
|
|
556
559
|
reason: n
|
|
557
560
|
} });
|
|
558
561
|
if (t.error) throw t.error;
|
|
559
|
-
|
|
562
|
+
A(d("devportal.versionRejectedSuccess", "Version rejected and returned to draft.")), await G();
|
|
560
563
|
} catch (e) {
|
|
561
|
-
|
|
564
|
+
T(e instanceof Error ? e.message : d("devportal.failedToRejectVersion", "Failed to reject version"));
|
|
562
565
|
} finally {
|
|
563
566
|
z(e);
|
|
564
567
|
}
|
|
565
568
|
}
|
|
566
569
|
};
|
|
567
|
-
return V && !B ? /* @__PURE__ */
|
|
570
|
+
return V && !B ? /* @__PURE__ */ j(e, {
|
|
568
571
|
title: d("devportal.appReviewQueue", "App Review Queue"),
|
|
569
572
|
description: d("devportal.appReviewQueueDescription", "Review submitted applications for approval"),
|
|
570
|
-
children: /* @__PURE__ */
|
|
573
|
+
children: /* @__PURE__ */ j("div", {
|
|
571
574
|
className: "flex items-center justify-center py-12",
|
|
572
|
-
children: /* @__PURE__ */
|
|
575
|
+
children: /* @__PURE__ */ j(D, { className: "h-8 w-8 animate-spin text-text-secondary" })
|
|
573
576
|
})
|
|
574
|
-
}) : H ? /* @__PURE__ */
|
|
577
|
+
}) : H ? /* @__PURE__ */ j(e, {
|
|
575
578
|
title: d("devportal.appReviewQueue", "App Review Queue"),
|
|
576
579
|
description: d("devportal.appReviewQueueDescription", "Review submitted applications for approval"),
|
|
577
|
-
children: /* @__PURE__ */
|
|
580
|
+
children: /* @__PURE__ */ M("div", {
|
|
578
581
|
className: "rounded-lg border border-status-error-border/50 bg-status-error-bg/10 p-6 text-center",
|
|
579
582
|
children: [
|
|
580
|
-
/* @__PURE__ */
|
|
581
|
-
/* @__PURE__ */
|
|
583
|
+
/* @__PURE__ */ j(y, { className: "mx-auto h-8 w-8 text-status-error-text" }),
|
|
584
|
+
/* @__PURE__ */ j("p", {
|
|
582
585
|
className: "mt-2 text-sm text-text-secondary",
|
|
583
586
|
children: u(H)
|
|
584
587
|
}),
|
|
585
|
-
/* @__PURE__ */
|
|
588
|
+
/* @__PURE__ */ j("button", {
|
|
586
589
|
onClick: () => U(),
|
|
587
590
|
className: "mt-4 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90",
|
|
588
591
|
children: d("devportal.retry", "Retry")
|
|
589
592
|
})
|
|
590
593
|
]
|
|
591
594
|
})
|
|
592
|
-
}) : /* @__PURE__ */
|
|
593
|
-
permission:
|
|
594
|
-
children: /* @__PURE__ */
|
|
595
|
+
}) : /* @__PURE__ */ j(f, {
|
|
596
|
+
permission: h.REVIEW_MANAGE,
|
|
597
|
+
children: /* @__PURE__ */ M(e, {
|
|
595
598
|
title: d("devportal.appReviewQueue", "App Review Queue"),
|
|
596
599
|
description: d("devportal.appReviewQueueFullDescription", "Review submitted applications for approval or rejection"),
|
|
597
600
|
purpose: d("devportal.appReviewQueuePurpose", "The moderation queue for apps developers have submitted to the marketplace. Open each submission to check its listing, permissions, and behaviour against the guidelines, then approve it to go live or reject it with feedback."),
|
|
598
|
-
actions: /* @__PURE__ */
|
|
601
|
+
actions: /* @__PURE__ */ j("button", {
|
|
599
602
|
onClick: () => {
|
|
600
603
|
U(), G();
|
|
601
604
|
},
|
|
@@ -603,15 +606,15 @@ var N = {
|
|
|
603
606
|
children: d("devportal.refresh", "Refresh")
|
|
604
607
|
}),
|
|
605
608
|
children: [
|
|
606
|
-
/* @__PURE__ */
|
|
609
|
+
/* @__PURE__ */ M("div", {
|
|
607
610
|
className: "flex items-center gap-6 rounded-card border border-border-seam bg-bg-surface p-4",
|
|
608
611
|
children: [
|
|
609
|
-
/* @__PURE__ */
|
|
612
|
+
/* @__PURE__ */ M("div", {
|
|
610
613
|
className: "flex items-center gap-2",
|
|
611
|
-
children: [/* @__PURE__ */
|
|
614
|
+
children: [/* @__PURE__ */ j(C, {
|
|
612
615
|
size: 18,
|
|
613
616
|
className: "text-status-warning-text"
|
|
614
|
-
}), /* @__PURE__ */
|
|
617
|
+
}), /* @__PURE__ */ M("span", {
|
|
615
618
|
className: "text-sm font-medium",
|
|
616
619
|
children: [
|
|
617
620
|
X.length,
|
|
@@ -620,12 +623,12 @@ var N = {
|
|
|
620
623
|
]
|
|
621
624
|
})]
|
|
622
625
|
}),
|
|
623
|
-
Z.length > 0 && /* @__PURE__ */
|
|
626
|
+
Z.length > 0 && /* @__PURE__ */ M("div", {
|
|
624
627
|
className: "flex items-center gap-2",
|
|
625
|
-
children: [/* @__PURE__ */
|
|
628
|
+
children: [/* @__PURE__ */ j(E, {
|
|
626
629
|
size: 18,
|
|
627
630
|
className: "text-status-info-text"
|
|
628
|
-
}), /* @__PURE__ */
|
|
631
|
+
}), /* @__PURE__ */ M("span", {
|
|
629
632
|
className: "text-sm font-medium",
|
|
630
633
|
children: [
|
|
631
634
|
Z.length,
|
|
@@ -634,29 +637,29 @@ var N = {
|
|
|
634
637
|
]
|
|
635
638
|
})]
|
|
636
639
|
}),
|
|
637
|
-
(
|
|
640
|
+
(g.size > 0 || x.size > 0) && /* @__PURE__ */ M("div", {
|
|
638
641
|
className: "flex items-center gap-2 text-sm text-text-secondary",
|
|
639
|
-
children: [/* @__PURE__ */
|
|
642
|
+
children: [/* @__PURE__ */ j(D, {
|
|
640
643
|
size: 14,
|
|
641
644
|
className: "animate-spin"
|
|
642
645
|
}), d("devportal.processing", "Processing...")]
|
|
643
646
|
})
|
|
644
647
|
]
|
|
645
648
|
}),
|
|
646
|
-
|
|
649
|
+
O && /* @__PURE__ */ M("div", {
|
|
647
650
|
className: "flex items-center gap-2 rounded-lg border border-border-subtle bg-status-success-bg-subtle px-4 py-3 text-sm text-status-success-text",
|
|
648
|
-
children: [/* @__PURE__ */
|
|
651
|
+
children: [/* @__PURE__ */ j(b, { size: 16 }), O]
|
|
649
652
|
}),
|
|
650
|
-
w && /* @__PURE__ */
|
|
653
|
+
w && /* @__PURE__ */ M("div", {
|
|
651
654
|
className: "flex items-center gap-2 rounded-lg border border-status-error-border/50 bg-status-error-bg/10 px-4 py-3 text-sm text-status-error-text",
|
|
652
|
-
children: [/* @__PURE__ */
|
|
655
|
+
children: [/* @__PURE__ */ j(y, { size: 16 }), w]
|
|
653
656
|
}),
|
|
654
|
-
X.length > 0 && /* @__PURE__ */
|
|
657
|
+
X.length > 0 && /* @__PURE__ */ M("div", {
|
|
655
658
|
className: "relative max-w-sm",
|
|
656
|
-
children: [/* @__PURE__ */
|
|
659
|
+
children: [/* @__PURE__ */ j(k, {
|
|
657
660
|
size: 14,
|
|
658
661
|
className: "absolute left-3 top-1/2 -translate-y-1/2 text-text-secondary"
|
|
659
|
-
}), /* @__PURE__ */
|
|
662
|
+
}), /* @__PURE__ */ j("input", {
|
|
660
663
|
type: "text",
|
|
661
664
|
placeholder: d("devportal.searchSubmittedApps", "Search submitted apps..."),
|
|
662
665
|
value: p,
|
|
@@ -664,34 +667,34 @@ var N = {
|
|
|
664
667
|
className: "w-full rounded-md border bg-bg-surface pl-9 pr-4 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary"
|
|
665
668
|
})]
|
|
666
669
|
}),
|
|
667
|
-
/* @__PURE__ */
|
|
670
|
+
/* @__PURE__ */ j(t, {
|
|
668
671
|
title: d("devportal.newAppSubmissions", "New App Submissions"),
|
|
669
|
-
children: $.length === 0 ? /* @__PURE__ */
|
|
672
|
+
children: $.length === 0 ? /* @__PURE__ */ j(n, {
|
|
670
673
|
illustration: "empty-data",
|
|
671
|
-
icon: /* @__PURE__ */
|
|
674
|
+
icon: /* @__PURE__ */ j(b, { size: 32 }),
|
|
672
675
|
title: d("devportal.noAppsPendingReview", "No apps pending review"),
|
|
673
676
|
description: p ? d("devportal.noAppsMatchSearch", "No apps match your search") : d("devportal.allApplicationsReviewed", "All submitted applications have been reviewed")
|
|
674
|
-
}) : /* @__PURE__ */
|
|
677
|
+
}) : /* @__PURE__ */ j("div", {
|
|
675
678
|
className: "space-y-3",
|
|
676
|
-
children: $.map((e) => /* @__PURE__ */
|
|
679
|
+
children: $.map((e) => /* @__PURE__ */ j(I, {
|
|
677
680
|
app: e,
|
|
678
681
|
onApprove: ee,
|
|
679
682
|
onReject: te,
|
|
680
|
-
processing:
|
|
683
|
+
processing: g.has(e.id),
|
|
681
684
|
hasPendingVersions: Q.has(e.id)
|
|
682
685
|
}, e.id))
|
|
683
686
|
})
|
|
684
687
|
}),
|
|
685
|
-
/* @__PURE__ */
|
|
688
|
+
/* @__PURE__ */ j(t, {
|
|
686
689
|
title: d("devportal.versionUpdates", "Version Updates (Published Apps)"),
|
|
687
|
-
children: Z.length === 0 ? /* @__PURE__ */
|
|
690
|
+
children: Z.length === 0 ? /* @__PURE__ */ j(n, {
|
|
688
691
|
illustration: "empty-data",
|
|
689
|
-
icon: /* @__PURE__ */
|
|
692
|
+
icon: /* @__PURE__ */ j(E, { size: 32 }),
|
|
690
693
|
title: d("devportal.noPendingVersions", "No pending version updates"),
|
|
691
694
|
description: d("devportal.allVersionsReviewed", "All version updates from published apps have been reviewed")
|
|
692
|
-
}) : /* @__PURE__ */
|
|
695
|
+
}) : /* @__PURE__ */ j("div", {
|
|
693
696
|
className: "space-y-3",
|
|
694
|
-
children: Z.map((e) => /* @__PURE__ */
|
|
697
|
+
children: Z.map((e) => /* @__PURE__ */ j(L, {
|
|
695
698
|
app: e,
|
|
696
699
|
onApproveVersion: ne,
|
|
697
700
|
onRejectVersion: re,
|
|
@@ -703,6 +706,6 @@ var N = {
|
|
|
703
706
|
})
|
|
704
707
|
});
|
|
705
708
|
};
|
|
706
|
-
export {
|
|
709
|
+
export { z as AdminReviewPage };
|
|
707
710
|
|
|
708
711
|
//# sourceMappingURL=AdminReviewPage.js.map
|