@burdenoff/microfe-devportal 2026.713.2 → 2026.713.4
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/pages/AdminReviewPage.js +73 -59
- package/dist/devportal/pages/AdminReviewPage.js.map +1 -1
- package/dist/devportal/pages/ApplicationVersionsPage.js +379 -361
- package/dist/devportal/pages/ApplicationVersionsPage.js.map +1 -1
- package/dist/devportal/pages/StoreSubmissionPage.js +254 -206
- package/dist/devportal/pages/StoreSubmissionPage.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,14 +4,14 @@ import { useDevportalPermission as n } from "../hooks/usePermission.js";
|
|
|
4
4
|
import "../hooks/index.js";
|
|
5
5
|
import { useTr as r } from "../utils/i18n.js";
|
|
6
6
|
import { useEffect as i, useState as a } from "react";
|
|
7
|
-
import { AlertTriangle as o, ArrowLeft as
|
|
8
|
-
import { useNavigate as
|
|
9
|
-
import { jsx as
|
|
10
|
-
import { IllustratedEmptyState as
|
|
11
|
-
import { graphqlFetch as
|
|
7
|
+
import { AlertTriangle as o, ArrowLeft as ee, CheckCircle2 as s, Clock as c, EyeOff as l, GitBranch as u, Package as te, RefreshCw as d, Store as ne, XCircle as f } from "lucide-react";
|
|
8
|
+
import { useNavigate as p, useParams as m } from "react-router-dom";
|
|
9
|
+
import { jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
10
|
+
import { IllustratedEmptyState as re, PagePurpose as ie } from "@burdenoff/fe-libs/ui";
|
|
11
|
+
import { graphqlFetch as _ } from "@burdenoff/fe-libs/shared/graphql";
|
|
12
12
|
//#region src/devportal/pages/StoreSubmissionPage.tsx
|
|
13
|
-
var
|
|
14
|
-
function
|
|
13
|
+
var v = "\n query DevportalAppForSubmission($id: ID!) {\n application(id: $id) {\n id\n name\n slug\n status\n appType\n reviewStatus\n reviewNotes\n iconUrl\n submittedAt\n metadata\n versions {\n edges {\n node {\n id\n version\n status\n releaseNotes\n packageUrl\n }\n }\n }\n }\n }\n", y = "\n mutation DevportalSubmitForReview($id: ID!, $notes: String) {\n submitApplicationForReview(id: $id, notes: $notes) {\n id\n status\n submittedAt\n metadata\n }\n }\n", b = "\n mutation DevportalUnlistProduct($id: ID!) {\n unlistProduct(id: $id) {\n id\n status\n }\n }\n", x = "\n mutation DevportalPublishVersion($id: ID!) {\n publishApplicationVersion(id: $id) {\n id\n status\n }\n }\n";
|
|
14
|
+
function S(e) {
|
|
15
15
|
if (!e) return null;
|
|
16
16
|
let t = e.metadata ?? {}, n = typeof t.storeProductId == "string" ? t.storeProductId : "", r = typeof t.storeSubmissionStatus == "string" ? t.storeSubmissionStatus : null, i;
|
|
17
17
|
i = r === "PENDING_REVIEW" || r === "PUBLISHED" || r === "REJECTED" || r === "DRAFT" ? r : e.status === "SUBMITTED" ? "PENDING_REVIEW" : e.status === "PUBLISHED" ? "PUBLISHED" : e.status === "REJECTED" ? "REJECTED" : "UNKNOWN";
|
|
@@ -26,35 +26,35 @@ function w(e) {
|
|
|
26
26
|
rejectedReason: null
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
|
-
var
|
|
29
|
+
var C = {
|
|
30
30
|
DRAFT: {
|
|
31
31
|
i18nKey: "devportal.storeSubmission.status.draft",
|
|
32
32
|
fallback: "Draft",
|
|
33
|
-
icon:
|
|
33
|
+
icon: c,
|
|
34
34
|
tone: "text-text-secondary"
|
|
35
35
|
},
|
|
36
36
|
PENDING_REVIEW: {
|
|
37
37
|
i18nKey: "devportal.storeSubmission.status.pending",
|
|
38
38
|
fallback: "Pending review",
|
|
39
|
-
icon:
|
|
39
|
+
icon: c,
|
|
40
40
|
tone: "text-status-warning-text"
|
|
41
41
|
},
|
|
42
42
|
PUBLISHED: {
|
|
43
43
|
i18nKey: "devportal.storeSubmission.status.published",
|
|
44
44
|
fallback: "Published",
|
|
45
|
-
icon:
|
|
45
|
+
icon: s,
|
|
46
46
|
tone: "text-status-success-text"
|
|
47
47
|
},
|
|
48
48
|
UNLISTED: {
|
|
49
49
|
i18nKey: "devportal.storeSubmission.status.unlisted",
|
|
50
50
|
fallback: "Unlisted",
|
|
51
|
-
icon:
|
|
51
|
+
icon: l,
|
|
52
52
|
tone: "text-text-secondary"
|
|
53
53
|
},
|
|
54
54
|
REJECTED: {
|
|
55
55
|
i18nKey: "devportal.storeSubmission.status.rejected",
|
|
56
56
|
fallback: "Rejected",
|
|
57
|
-
icon:
|
|
57
|
+
icon: f,
|
|
58
58
|
tone: "text-status-danger-text"
|
|
59
59
|
},
|
|
60
60
|
UNKNOWN: {
|
|
@@ -63,246 +63,255 @@ var T = {
|
|
|
63
63
|
icon: o,
|
|
64
64
|
tone: "text-text-tertiary"
|
|
65
65
|
}
|
|
66
|
-
},
|
|
67
|
-
let { appId:
|
|
68
|
-
if (
|
|
69
|
-
|
|
66
|
+
}, w = () => {
|
|
67
|
+
let { appId: w } = m(), T = p(), E = e(), D = r(), O = n(t.APP_SUBMIT), [k, ae] = a(null), [A, j] = a(!0), [M, N] = a(null), [P, F] = a(!1), [I, L] = a(!1), [R, z] = a(!1), [B, V] = a(null), [H, U] = a(""), W = async () => {
|
|
68
|
+
if (w) {
|
|
69
|
+
j(!0), N(null);
|
|
70
70
|
try {
|
|
71
|
-
let e = await
|
|
71
|
+
let e = await _({
|
|
72
72
|
gateway: "global",
|
|
73
|
-
query:
|
|
74
|
-
variables: { id:
|
|
73
|
+
query: v,
|
|
74
|
+
variables: { id: w }
|
|
75
75
|
});
|
|
76
|
-
if (e.errors?.length) throw Error(e.errors[0]?.message ??
|
|
77
|
-
|
|
76
|
+
if (e.errors?.length) throw Error(e.errors[0]?.message ?? D("devportal.storeSubmission.errors.loadFailed", "Failed to load application"));
|
|
77
|
+
ae(e.data?.application ?? null);
|
|
78
78
|
} catch (e) {
|
|
79
|
-
|
|
79
|
+
N(e instanceof Error ? e.message : D("devportal.storeSubmission.errors.loadFailed", "Failed to load application"));
|
|
80
80
|
} finally {
|
|
81
|
-
|
|
81
|
+
j(!1);
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
};
|
|
85
85
|
i(() => {
|
|
86
|
-
|
|
87
|
-
}, [
|
|
88
|
-
let e =
|
|
89
|
-
if (!
|
|
86
|
+
W();
|
|
87
|
+
}, [w]), i(() => {
|
|
88
|
+
let e = k?.name;
|
|
89
|
+
if (!w || !e) return;
|
|
90
90
|
let t = window.__breadcrumbRegistry;
|
|
91
|
-
return t?.register(
|
|
92
|
-
}, [
|
|
93
|
-
let
|
|
94
|
-
if (
|
|
95
|
-
|
|
91
|
+
return t?.register(w, e), () => t?.unregister(w);
|
|
92
|
+
}, [w, k?.name]);
|
|
93
|
+
let G = async () => {
|
|
94
|
+
if (w) {
|
|
95
|
+
F(!0), N(null);
|
|
96
96
|
try {
|
|
97
|
-
let e =
|
|
97
|
+
let e = (k?.versions.edges ?? []).map((e) => e.node).filter((e) => e.status === "draft");
|
|
98
|
+
for (let t of e) {
|
|
99
|
+
let e = await _({
|
|
100
|
+
gateway: "global",
|
|
101
|
+
query: x,
|
|
102
|
+
variables: { id: t.id }
|
|
103
|
+
});
|
|
104
|
+
if (e.errors?.length) throw Error(e.errors[0]?.message ?? `Failed to submit version ${t.version}`);
|
|
105
|
+
}
|
|
106
|
+
let t = await _({
|
|
98
107
|
gateway: "global",
|
|
99
|
-
query:
|
|
108
|
+
query: y,
|
|
100
109
|
variables: {
|
|
101
|
-
id:
|
|
102
|
-
notes:
|
|
110
|
+
id: w,
|
|
111
|
+
notes: H || null
|
|
103
112
|
}
|
|
104
113
|
});
|
|
105
|
-
if (
|
|
106
|
-
|
|
114
|
+
if (t.errors?.length) throw Error(t.errors[0]?.message ?? D("devportal.storeSubmission.errors.submitFailed", "Submission failed"));
|
|
115
|
+
E.emit("devportal.app.submitted", { appId: w }), await W();
|
|
107
116
|
} catch (e) {
|
|
108
|
-
|
|
117
|
+
N(e instanceof Error ? e.message : D("devportal.storeSubmission.errors.submitFailed", "Submission failed"));
|
|
109
118
|
} finally {
|
|
110
|
-
|
|
119
|
+
F(!1);
|
|
111
120
|
}
|
|
112
121
|
}
|
|
113
|
-
},
|
|
114
|
-
let e =
|
|
122
|
+
}, K = async () => {
|
|
123
|
+
let e = S(k)?.productId;
|
|
115
124
|
if (e) {
|
|
116
|
-
|
|
125
|
+
L(!0), N(null);
|
|
117
126
|
try {
|
|
118
|
-
let t = await
|
|
127
|
+
let t = await _({
|
|
119
128
|
gateway: "global",
|
|
120
|
-
query:
|
|
129
|
+
query: b,
|
|
121
130
|
variables: { id: e }
|
|
122
131
|
});
|
|
123
|
-
if (t.errors?.length) throw Error(t.errors[0]?.message ??
|
|
124
|
-
|
|
132
|
+
if (t.errors?.length) throw Error(t.errors[0]?.message ?? D("devportal.storeSubmission.errors.unlistFailed", "Failed to unlist"));
|
|
133
|
+
V("UNLISTED");
|
|
125
134
|
} catch (e) {
|
|
126
|
-
|
|
135
|
+
N(e instanceof Error ? e.message : D("devportal.storeSubmission.errors.unlistFailed", "Failed to unlist"));
|
|
127
136
|
} finally {
|
|
128
|
-
|
|
137
|
+
L(!1), z(!1);
|
|
129
138
|
}
|
|
130
139
|
}
|
|
131
|
-
},
|
|
132
|
-
return /* @__PURE__ */
|
|
140
|
+
}, q = S(k), J = B ?? q?.status ?? "UNKNOWN", Y = C[J], oe = Y.icon, X = (k?.versions.edges ?? []).map((e) => e.node), Z = X.filter((e) => e.status === "draft"), Q = k?.appType === "NODE" || k?.appType === "WORKFLOW", $ = Q && X.length === 0;
|
|
141
|
+
return /* @__PURE__ */ g("main", {
|
|
133
142
|
className: "min-h-screen bg-surface-default",
|
|
134
143
|
"aria-labelledby": "store-submission-heading",
|
|
135
144
|
children: [
|
|
136
|
-
/* @__PURE__ */
|
|
145
|
+
/* @__PURE__ */ h("div", {
|
|
137
146
|
className: "border-b border-border-default bg-surface-raised",
|
|
138
|
-
children: /* @__PURE__ */
|
|
147
|
+
children: /* @__PURE__ */ h("div", {
|
|
139
148
|
className: "mx-auto max-w-3xl px-6 py-4",
|
|
140
|
-
children: /* @__PURE__ */
|
|
149
|
+
children: /* @__PURE__ */ g("div", {
|
|
141
150
|
className: "flex items-center gap-3",
|
|
142
|
-
children: [/* @__PURE__ */
|
|
151
|
+
children: [/* @__PURE__ */ g("button", {
|
|
143
152
|
type: "button",
|
|
144
|
-
onClick: () =>
|
|
153
|
+
onClick: () => T(-1),
|
|
145
154
|
className: "inline-flex items-center gap-2 rounded-md px-3 py-1.5 text-sm text-text-secondary hover:bg-surface-hover hover:text-text-primary focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary",
|
|
146
|
-
children: [/* @__PURE__ */
|
|
155
|
+
children: [/* @__PURE__ */ h(ee, {
|
|
147
156
|
className: "h-4 w-4",
|
|
148
157
|
"aria-hidden": "true"
|
|
149
|
-
}),
|
|
150
|
-
}), /* @__PURE__ */
|
|
158
|
+
}), D("devportal.common.back", "Back")]
|
|
159
|
+
}), /* @__PURE__ */ g("div", {
|
|
151
160
|
className: "flex items-center gap-2",
|
|
152
|
-
children: [/* @__PURE__ */
|
|
161
|
+
children: [/* @__PURE__ */ h(ne, {
|
|
153
162
|
className: "h-5 w-5 text-text-primary",
|
|
154
163
|
"aria-hidden": "true"
|
|
155
|
-
}), /* @__PURE__ */
|
|
164
|
+
}), /* @__PURE__ */ h("h1", {
|
|
156
165
|
id: "store-submission-heading",
|
|
157
166
|
className: "text-xl font-semibold text-text-primary",
|
|
158
|
-
children:
|
|
167
|
+
children: D("devportal.storeSubmission.title", "Store submission")
|
|
159
168
|
})]
|
|
160
169
|
})]
|
|
161
170
|
})
|
|
162
171
|
})
|
|
163
172
|
}),
|
|
164
|
-
|
|
173
|
+
R && /* @__PURE__ */ h("div", {
|
|
165
174
|
role: "dialog",
|
|
166
175
|
"aria-modal": "true",
|
|
167
176
|
"aria-labelledby": "unlist-dialog-title",
|
|
168
177
|
className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",
|
|
169
|
-
children: /* @__PURE__ */
|
|
178
|
+
children: /* @__PURE__ */ g("div", {
|
|
170
179
|
className: "w-full max-w-md rounded-lg border border-border-default bg-surface-raised p-6 shadow-xl",
|
|
171
|
-
children: [/* @__PURE__ */
|
|
180
|
+
children: [/* @__PURE__ */ g("div", {
|
|
172
181
|
className: "mb-4 flex items-start gap-3",
|
|
173
|
-
children: [/* @__PURE__ */
|
|
182
|
+
children: [/* @__PURE__ */ h(l, {
|
|
174
183
|
className: "mt-0.5 h-5 w-5 shrink-0 text-text-secondary",
|
|
175
184
|
"aria-hidden": "true"
|
|
176
|
-
}), /* @__PURE__ */
|
|
185
|
+
}), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("h2", {
|
|
177
186
|
id: "unlist-dialog-title",
|
|
178
187
|
className: "text-base font-semibold text-text-primary",
|
|
179
|
-
children:
|
|
180
|
-
}), /* @__PURE__ */
|
|
188
|
+
children: D("devportal.storeSubmission.unlistTitle", "Unlist from marketplace?")
|
|
189
|
+
}), /* @__PURE__ */ h("p", {
|
|
181
190
|
className: "mt-1 text-sm text-text-secondary",
|
|
182
|
-
children:
|
|
191
|
+
children: D("devportal.storeSubmission.unlistDescription", "Your app will no longer appear in the marketplace for new users. Existing installations are not affected — users who already have it installed can continue using it.")
|
|
183
192
|
})] })]
|
|
184
|
-
}), /* @__PURE__ */
|
|
193
|
+
}), /* @__PURE__ */ g("div", {
|
|
185
194
|
className: "flex justify-end gap-3",
|
|
186
|
-
children: [/* @__PURE__ */
|
|
195
|
+
children: [/* @__PURE__ */ h("button", {
|
|
187
196
|
type: "button",
|
|
188
|
-
onClick: () =>
|
|
197
|
+
onClick: () => z(!1),
|
|
189
198
|
className: "rounded-md border border-border-default px-4 py-2 text-sm font-medium text-text-secondary hover:bg-surface-hover",
|
|
190
|
-
children:
|
|
191
|
-
}), /* @__PURE__ */
|
|
199
|
+
children: D("devportal.common.cancel", "Cancel")
|
|
200
|
+
}), /* @__PURE__ */ g("button", {
|
|
192
201
|
type: "button",
|
|
193
|
-
onClick: () => void
|
|
194
|
-
disabled:
|
|
202
|
+
onClick: () => void K(),
|
|
203
|
+
disabled: I,
|
|
195
204
|
className: "inline-flex items-center gap-2 rounded-md bg-surface-danger px-4 py-2 text-sm font-semibold text-text-on-danger hover:opacity-90 disabled:opacity-60",
|
|
196
|
-
children: [
|
|
205
|
+
children: [I && /* @__PURE__ */ h(d, {
|
|
197
206
|
className: "h-4 w-4 animate-spin",
|
|
198
207
|
"aria-hidden": "true"
|
|
199
|
-
}),
|
|
208
|
+
}), D("devportal.storeSubmission.confirmUnlist", "Unlist app")]
|
|
200
209
|
})]
|
|
201
210
|
})]
|
|
202
211
|
})
|
|
203
212
|
}),
|
|
204
|
-
/* @__PURE__ */
|
|
213
|
+
/* @__PURE__ */ g("div", {
|
|
205
214
|
className: "mx-auto max-w-3xl px-6 py-6",
|
|
206
215
|
children: [
|
|
207
|
-
(
|
|
216
|
+
(A || !q || J === "UNKNOWN" || J === "DRAFT" || J === "REJECTED") && /* @__PURE__ */ h(ie, {
|
|
208
217
|
className: "mb-5",
|
|
209
|
-
children:
|
|
218
|
+
children: D("devportal.storeSubmission.purpose", "Finalize the details the marketplace needs before your app can be reviewed — pricing, categories, and required assets. Completing this is what makes the app eligible to submit for publication.")
|
|
210
219
|
}),
|
|
211
|
-
|
|
220
|
+
M && /* @__PURE__ */ h("div", {
|
|
212
221
|
role: "alert",
|
|
213
222
|
className: "mb-4 rounded-md border border-border-danger bg-surface-danger-muted px-4 py-3 text-sm text-text-danger",
|
|
214
|
-
children:
|
|
223
|
+
children: M
|
|
215
224
|
}),
|
|
216
|
-
|
|
225
|
+
A && !k ? /* @__PURE__ */ h("div", {
|
|
217
226
|
className: "py-16 text-center text-text-secondary",
|
|
218
227
|
role: "status",
|
|
219
228
|
"aria-live": "polite",
|
|
220
|
-
children:
|
|
221
|
-
}) :
|
|
229
|
+
children: D("devportal.storeSubmission.loading", "Loading application…")
|
|
230
|
+
}) : k ? /* @__PURE__ */ g("div", {
|
|
222
231
|
className: "space-y-4",
|
|
223
232
|
children: [
|
|
224
|
-
/* @__PURE__ */
|
|
233
|
+
/* @__PURE__ */ h("div", {
|
|
225
234
|
className: "rounded-lg border border-border-default bg-surface-raised p-4",
|
|
226
|
-
children: /* @__PURE__ */
|
|
235
|
+
children: /* @__PURE__ */ g("div", {
|
|
227
236
|
className: "flex items-center gap-3",
|
|
228
237
|
children: [
|
|
229
|
-
|
|
230
|
-
src:
|
|
238
|
+
k.iconUrl ? /* @__PURE__ */ h("img", {
|
|
239
|
+
src: k.iconUrl,
|
|
231
240
|
alt: "",
|
|
232
241
|
className: "h-14 w-14 flex-shrink-0 rounded-md object-cover"
|
|
233
|
-
}) : /* @__PURE__ */
|
|
242
|
+
}) : /* @__PURE__ */ h("div", {
|
|
234
243
|
className: "flex h-14 w-14 flex-shrink-0 items-center justify-center rounded-md bg-surface-muted text-text-secondary text-sm font-medium",
|
|
235
|
-
children:
|
|
244
|
+
children: k.name.slice(0, 2).toUpperCase()
|
|
236
245
|
}),
|
|
237
|
-
/* @__PURE__ */
|
|
246
|
+
/* @__PURE__ */ g("div", {
|
|
238
247
|
className: "min-w-0 flex-1",
|
|
239
|
-
children: [/* @__PURE__ */
|
|
248
|
+
children: [/* @__PURE__ */ h("h2", {
|
|
240
249
|
className: "text-lg font-semibold text-text-primary",
|
|
241
|
-
children:
|
|
242
|
-
}), /* @__PURE__ */
|
|
250
|
+
children: k.name
|
|
251
|
+
}), /* @__PURE__ */ h("p", {
|
|
243
252
|
className: "font-mono text-xs text-text-tertiary",
|
|
244
|
-
children:
|
|
253
|
+
children: k.slug
|
|
245
254
|
})]
|
|
246
255
|
}),
|
|
247
|
-
/* @__PURE__ */
|
|
248
|
-
className: `flex items-center gap-1.5 ${
|
|
256
|
+
/* @__PURE__ */ g("div", {
|
|
257
|
+
className: `flex items-center gap-1.5 ${Y.tone}`,
|
|
249
258
|
role: "status",
|
|
250
|
-
children: [/* @__PURE__ */
|
|
259
|
+
children: [/* @__PURE__ */ h(oe, {
|
|
251
260
|
className: "h-5 w-5",
|
|
252
261
|
"aria-hidden": "true"
|
|
253
|
-
}), /* @__PURE__ */
|
|
262
|
+
}), /* @__PURE__ */ h("span", {
|
|
254
263
|
className: "text-sm font-medium",
|
|
255
|
-
children:
|
|
264
|
+
children: D(Y.i18nKey, Y.fallback)
|
|
256
265
|
})]
|
|
257
266
|
})
|
|
258
267
|
]
|
|
259
268
|
})
|
|
260
269
|
}),
|
|
261
|
-
|
|
270
|
+
J === "PENDING_REVIEW" && /* @__PURE__ */ g("div", {
|
|
262
271
|
className: "rounded-lg border border-primary/20 bg-action-primary-bg/5 p-5 space-y-4",
|
|
263
272
|
children: [
|
|
264
|
-
/* @__PURE__ */
|
|
273
|
+
/* @__PURE__ */ g("div", {
|
|
265
274
|
className: "flex items-start gap-3",
|
|
266
|
-
children: [/* @__PURE__ */
|
|
275
|
+
children: [/* @__PURE__ */ h(c, {
|
|
267
276
|
className: "h-5 w-5 mt-0.5 shrink-0 text-primary",
|
|
268
277
|
"aria-hidden": "true"
|
|
269
|
-
}), /* @__PURE__ */
|
|
278
|
+
}), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("p", {
|
|
270
279
|
className: "text-sm font-semibold text-text-primary",
|
|
271
|
-
children:
|
|
272
|
-
}),
|
|
280
|
+
children: D("devportal.storeSubmission.underReview", "Your app is under review")
|
|
281
|
+
}), k.submittedAt && /* @__PURE__ */ g("p", {
|
|
273
282
|
className: "mt-0.5 text-xs text-text-secondary",
|
|
274
283
|
children: [
|
|
275
|
-
|
|
284
|
+
D("devportal.storeSubmission.submittedOn", "Submitted on"),
|
|
276
285
|
" ",
|
|
277
|
-
new Date(
|
|
286
|
+
new Date(k.submittedAt).toLocaleString()
|
|
278
287
|
]
|
|
279
288
|
})] })]
|
|
280
289
|
}),
|
|
281
|
-
/* @__PURE__ */
|
|
290
|
+
/* @__PURE__ */ g("div", {
|
|
282
291
|
className: "border-t border-border-default pt-4",
|
|
283
|
-
children: [/* @__PURE__ */
|
|
292
|
+
children: [/* @__PURE__ */ h("p", {
|
|
284
293
|
className: "text-xs font-medium text-text-secondary mb-3",
|
|
285
|
-
children:
|
|
286
|
-
}), /* @__PURE__ */
|
|
294
|
+
children: D("devportal.storeSubmission.whatNext", "What happens next")
|
|
295
|
+
}), /* @__PURE__ */ g("ol", {
|
|
287
296
|
className: "space-y-2.5 text-sm text-text-secondary",
|
|
288
297
|
children: [
|
|
289
|
-
/* @__PURE__ */
|
|
298
|
+
/* @__PURE__ */ g("li", {
|
|
290
299
|
className: "flex items-start gap-2",
|
|
291
|
-
children: [/* @__PURE__ */
|
|
300
|
+
children: [/* @__PURE__ */ h("span", {
|
|
292
301
|
className: "flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-surface-muted text-xs font-medium text-text-tertiary",
|
|
293
302
|
children: "1"
|
|
294
303
|
}), "Our team reviews your app's listing, assets, and compliance."]
|
|
295
304
|
}),
|
|
296
|
-
/* @__PURE__ */
|
|
305
|
+
/* @__PURE__ */ g("li", {
|
|
297
306
|
className: "flex items-start gap-2",
|
|
298
|
-
children: [/* @__PURE__ */
|
|
307
|
+
children: [/* @__PURE__ */ h("span", {
|
|
299
308
|
className: "flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-surface-muted text-xs font-medium text-text-tertiary",
|
|
300
309
|
children: "2"
|
|
301
310
|
}), "You'll receive a notification when a decision is made."]
|
|
302
311
|
}),
|
|
303
|
-
/* @__PURE__ */
|
|
312
|
+
/* @__PURE__ */ g("li", {
|
|
304
313
|
className: "flex items-start gap-2",
|
|
305
|
-
children: [/* @__PURE__ */
|
|
314
|
+
children: [/* @__PURE__ */ h("span", {
|
|
306
315
|
className: "flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-surface-muted text-xs font-medium text-text-tertiary",
|
|
307
316
|
children: "3"
|
|
308
317
|
}), "If approved, your app goes live in the marketplace automatically."]
|
|
@@ -310,149 +319,188 @@ var T = {
|
|
|
310
319
|
]
|
|
311
320
|
})]
|
|
312
321
|
}),
|
|
313
|
-
|
|
322
|
+
k.reviewNotes && /* @__PURE__ */ g("div", {
|
|
314
323
|
className: "border-t border-border-default pt-4",
|
|
315
|
-
children: [/* @__PURE__ */
|
|
324
|
+
children: [/* @__PURE__ */ h("p", {
|
|
316
325
|
className: "text-xs font-medium text-text-secondary mb-1",
|
|
317
|
-
children:
|
|
318
|
-
}), /* @__PURE__ */
|
|
326
|
+
children: D("devportal.storeSubmission.reviewerNotes", "Reviewer notes")
|
|
327
|
+
}), /* @__PURE__ */ h("p", {
|
|
319
328
|
className: "text-sm text-text-primary",
|
|
320
|
-
children:
|
|
329
|
+
children: k.reviewNotes
|
|
321
330
|
})]
|
|
322
331
|
})
|
|
323
332
|
]
|
|
324
333
|
}),
|
|
325
|
-
|
|
334
|
+
J === "PUBLISHED" && /* @__PURE__ */ g("div", {
|
|
326
335
|
className: "rounded-lg border border-status-success-bg bg-status-success-bg-subtle p-5 space-y-4",
|
|
327
|
-
children: [/* @__PURE__ */
|
|
336
|
+
children: [/* @__PURE__ */ g("div", {
|
|
328
337
|
className: "flex items-start gap-3",
|
|
329
|
-
children: [/* @__PURE__ */
|
|
338
|
+
children: [/* @__PURE__ */ h(s, {
|
|
330
339
|
className: "h-5 w-5 mt-0.5 shrink-0 text-status-success-text",
|
|
331
340
|
"aria-hidden": "true"
|
|
332
|
-
}), /* @__PURE__ */
|
|
341
|
+
}), /* @__PURE__ */ g("div", {
|
|
333
342
|
className: "flex-1 min-w-0",
|
|
334
|
-
children: [/* @__PURE__ */
|
|
343
|
+
children: [/* @__PURE__ */ h("p", {
|
|
335
344
|
className: "text-sm font-semibold text-status-success-text",
|
|
336
|
-
children:
|
|
337
|
-
}),
|
|
345
|
+
children: D("devportal.storeSubmission.publishedTitle", "Your app is live in the marketplace")
|
|
346
|
+
}), q?.publishedAt && /* @__PURE__ */ g("p", {
|
|
338
347
|
className: "mt-0.5 text-xs text-text-secondary",
|
|
339
348
|
children: [
|
|
340
|
-
|
|
349
|
+
D("devportal.storeSubmission.publishedOn", "Published on"),
|
|
341
350
|
" ",
|
|
342
|
-
new Date(
|
|
351
|
+
new Date(q.publishedAt).toLocaleString()
|
|
343
352
|
]
|
|
344
353
|
})]
|
|
345
354
|
})]
|
|
346
|
-
}),
|
|
355
|
+
}), q?.productId && /* @__PURE__ */ g("div", {
|
|
347
356
|
className: "border-t border-status-success-bg pt-4",
|
|
348
|
-
children: [/* @__PURE__ */
|
|
357
|
+
children: [/* @__PURE__ */ h("p", {
|
|
349
358
|
className: "mb-2 text-xs text-text-secondary",
|
|
350
|
-
children:
|
|
351
|
-
}), /* @__PURE__ */
|
|
359
|
+
children: D("devportal.storeSubmission.unlistHint", "Need to remove this app from the marketplace? Unlisting hides it from new users while keeping existing installations active.")
|
|
360
|
+
}), /* @__PURE__ */ g("button", {
|
|
352
361
|
type: "button",
|
|
353
|
-
onClick: () =>
|
|
362
|
+
onClick: () => z(!0),
|
|
354
363
|
className: "inline-flex items-center gap-2 rounded-md border border-border-default bg-surface-raised px-3 py-1.5 text-sm font-medium text-text-secondary hover:bg-surface-hover hover:text-text-primary",
|
|
355
|
-
children: [/* @__PURE__ */
|
|
364
|
+
children: [/* @__PURE__ */ h(l, {
|
|
356
365
|
className: "h-4 w-4",
|
|
357
366
|
"aria-hidden": "true"
|
|
358
|
-
}),
|
|
367
|
+
}), D("devportal.storeSubmission.unlistButton", "Unlist from marketplace")]
|
|
359
368
|
})]
|
|
360
369
|
})]
|
|
361
370
|
}),
|
|
362
|
-
|
|
371
|
+
J === "UNLISTED" && /* @__PURE__ */ g("div", {
|
|
363
372
|
className: "rounded-lg border border-border-default bg-surface-muted p-5 flex items-start gap-3",
|
|
364
|
-
children: [/* @__PURE__ */
|
|
373
|
+
children: [/* @__PURE__ */ h(l, {
|
|
365
374
|
className: "h-5 w-5 mt-0.5 shrink-0 text-text-secondary",
|
|
366
375
|
"aria-hidden": "true"
|
|
367
|
-
}), /* @__PURE__ */
|
|
376
|
+
}), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("p", {
|
|
368
377
|
className: "text-sm font-semibold text-text-primary",
|
|
369
|
-
children:
|
|
370
|
-
}), /* @__PURE__ */
|
|
378
|
+
children: D("devportal.storeSubmission.unlistedTitle", "Your app has been unlisted")
|
|
379
|
+
}), /* @__PURE__ */ h("p", {
|
|
371
380
|
className: "mt-0.5 text-xs text-text-secondary",
|
|
372
|
-
children:
|
|
381
|
+
children: D("devportal.storeSubmission.unlistedDescription", "It no longer appears in the marketplace for new users. Existing installations remain active and unaffected.")
|
|
373
382
|
})] })]
|
|
374
383
|
}),
|
|
375
|
-
|
|
384
|
+
J === "REJECTED" && /* @__PURE__ */ g("div", {
|
|
376
385
|
className: "rounded-lg border border-status-error-bg bg-status-error-bg-subtle p-5 space-y-3",
|
|
377
|
-
children: [/* @__PURE__ */
|
|
386
|
+
children: [/* @__PURE__ */ g("div", {
|
|
378
387
|
className: "flex items-start gap-3",
|
|
379
|
-
children: [/* @__PURE__ */
|
|
388
|
+
children: [/* @__PURE__ */ h(f, {
|
|
380
389
|
className: "h-5 w-5 mt-0.5 shrink-0 text-status-error-text",
|
|
381
390
|
"aria-hidden": "true"
|
|
382
|
-
}), /* @__PURE__ */
|
|
391
|
+
}), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("p", {
|
|
383
392
|
className: "text-sm font-semibold text-status-error-text",
|
|
384
|
-
children:
|
|
385
|
-
}), /* @__PURE__ */
|
|
393
|
+
children: D("devportal.storeSubmission.rejectedTitle", "Submission was not approved")
|
|
394
|
+
}), /* @__PURE__ */ h("p", {
|
|
386
395
|
className: "mt-0.5 text-xs text-text-secondary",
|
|
387
|
-
children:
|
|
396
|
+
children: D("devportal.storeSubmission.rejectedHint", "Address the feedback below and resubmit.")
|
|
388
397
|
})] })]
|
|
389
|
-
}),
|
|
398
|
+
}), k.reviewNotes && /* @__PURE__ */ g("div", {
|
|
390
399
|
className: "rounded-md bg-surface-muted p-3",
|
|
391
|
-
children: [/* @__PURE__ */
|
|
400
|
+
children: [/* @__PURE__ */ h("p", {
|
|
392
401
|
className: "text-xs font-medium text-text-secondary mb-1",
|
|
393
|
-
children:
|
|
394
|
-
}), /* @__PURE__ */
|
|
402
|
+
children: D("devportal.storeSubmission.reviewerFeedback", "Reviewer feedback")
|
|
403
|
+
}), /* @__PURE__ */ h("p", {
|
|
395
404
|
className: "text-sm text-text-primary",
|
|
396
|
-
children:
|
|
405
|
+
children: k.reviewNotes
|
|
397
406
|
})]
|
|
398
407
|
})]
|
|
399
408
|
}),
|
|
400
|
-
(
|
|
401
|
-
className: "rounded-lg border border-border-default bg-surface-raised p-4",
|
|
409
|
+
(J === "UNKNOWN" || J === "DRAFT" || J === "REJECTED") && /* @__PURE__ */ g("div", {
|
|
410
|
+
className: "rounded-lg border border-border-default bg-surface-raised p-4 space-y-4",
|
|
402
411
|
children: [
|
|
403
|
-
/* @__PURE__ */ g("h3", {
|
|
404
|
-
className: "mb-
|
|
405
|
-
children:
|
|
406
|
-
}),
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
412
|
+
/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("h3", {
|
|
413
|
+
className: "mb-1 text-sm font-semibold text-text-primary",
|
|
414
|
+
children: J === "REJECTED" ? D("devportal.storeSubmission.resubmitForReview", "Resubmit for review") : D("devportal.storeSubmission.submitForReview", "Submit for review")
|
|
415
|
+
}), /* @__PURE__ */ h("p", {
|
|
416
|
+
className: "text-sm text-text-secondary",
|
|
417
|
+
children: D("devportal.storeSubmission.help", "Your application will be sent to the store's review queue. Whether it's auto-published or requires admin approval depends on the target store's configuration.")
|
|
418
|
+
})] }),
|
|
419
|
+
Q && /* @__PURE__ */ g("div", {
|
|
420
|
+
className: "rounded-md border border-border-default bg-surface-muted p-3 space-y-2",
|
|
421
|
+
children: [/* @__PURE__ */ g("div", {
|
|
422
|
+
className: "flex items-center gap-2 text-xs font-medium text-text-secondary",
|
|
423
|
+
children: [/* @__PURE__ */ h(u, {
|
|
424
|
+
className: "h-3.5 w-3.5",
|
|
425
|
+
"aria-hidden": "true"
|
|
426
|
+
}), D("devportal.storeSubmission.versionsIncluded", "Versions included in this submission")]
|
|
427
|
+
}), $ ? /* @__PURE__ */ g("div", {
|
|
428
|
+
className: "flex items-start gap-2 text-sm text-status-danger-text",
|
|
429
|
+
children: [/* @__PURE__ */ h(o, {
|
|
430
|
+
className: "h-4 w-4 mt-0.5 shrink-0",
|
|
431
|
+
"aria-hidden": "true"
|
|
432
|
+
}), /* @__PURE__ */ h("span", { children: D("devportal.storeSubmission.noVersionsError", "You must create at least one version before submitting. Go to the Versions tab to create one.") })]
|
|
433
|
+
}) : Z.length === 0 ? /* @__PURE__ */ h("p", {
|
|
434
|
+
className: "text-xs text-text-secondary",
|
|
435
|
+
children: D("devportal.storeSubmission.noDraftVersions", "No draft versions — all versions are already submitted or published.")
|
|
436
|
+
}) : /* @__PURE__ */ h("ul", {
|
|
437
|
+
className: "space-y-1",
|
|
438
|
+
children: Z.map((e) => /* @__PURE__ */ g("li", {
|
|
439
|
+
className: "flex items-center gap-2 text-sm",
|
|
440
|
+
children: [
|
|
441
|
+
/* @__PURE__ */ h(te, {
|
|
442
|
+
className: "h-3.5 w-3.5 text-text-secondary shrink-0",
|
|
443
|
+
"aria-hidden": "true"
|
|
444
|
+
}),
|
|
445
|
+
/* @__PURE__ */ h("span", {
|
|
446
|
+
className: "font-mono font-medium",
|
|
447
|
+
children: e.version
|
|
448
|
+
}),
|
|
449
|
+
e.releaseNotes && /* @__PURE__ */ g("span", {
|
|
450
|
+
className: "text-xs text-text-secondary truncate",
|
|
451
|
+
children: ["— ", e.releaseNotes]
|
|
452
|
+
})
|
|
453
|
+
]
|
|
454
|
+
}, e.id))
|
|
455
|
+
})]
|
|
410
456
|
}),
|
|
411
|
-
/* @__PURE__ */ g("
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
457
|
+
/* @__PURE__ */ g("div", { children: [
|
|
458
|
+
/* @__PURE__ */ h("label", {
|
|
459
|
+
className: "block",
|
|
460
|
+
htmlFor: "store-submission-notes",
|
|
461
|
+
children: /* @__PURE__ */ h("span", {
|
|
462
|
+
className: "sr-only",
|
|
463
|
+
children: D("devportal.storeSubmission.notesLabel", "Notes for the reviewer (optional)")
|
|
464
|
+
})
|
|
465
|
+
}),
|
|
466
|
+
/* @__PURE__ */ h("textarea", {
|
|
467
|
+
id: "store-submission-notes",
|
|
468
|
+
value: H,
|
|
469
|
+
onChange: (e) => U(e.target.value),
|
|
470
|
+
rows: 3,
|
|
471
|
+
placeholder: D("devportal.storeSubmission.notesLabel", "Notes for the reviewer (optional)"),
|
|
472
|
+
className: "mb-3 w-full rounded-md border border-border-default bg-surface-default px-3 py-2 text-sm text-text-primary focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary"
|
|
473
|
+
}),
|
|
474
|
+
/* @__PURE__ */ g("button", {
|
|
475
|
+
type: "button",
|
|
476
|
+
onClick: () => void G(),
|
|
477
|
+
disabled: P || !O.allowed || $,
|
|
478
|
+
"aria-disabled": P || !O.allowed || $,
|
|
479
|
+
title: $ ? D("devportal.storeSubmission.noVersionsError", "Create a version first") : O.allowed ? void 0 : D("devportal.common.noPermission", "You do not have permission to perform this action"),
|
|
480
|
+
className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-semibold text-action-primary-text hover:opacity-90 disabled:opacity-60 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary",
|
|
481
|
+
children: [P && /* @__PURE__ */ h(d, {
|
|
482
|
+
className: "h-4 w-4 animate-spin",
|
|
483
|
+
"aria-hidden": "true"
|
|
484
|
+
}), J === "REJECTED" ? D("devportal.storeSubmission.resubmit", "Resubmit") : D("devportal.storeSubmission.submitForReview", "Submit for review")]
|
|
417
485
|
})
|
|
418
|
-
})
|
|
419
|
-
/* @__PURE__ */ g("textarea", {
|
|
420
|
-
id: "store-submission-notes",
|
|
421
|
-
value: W,
|
|
422
|
-
onChange: (e) => G(e.target.value),
|
|
423
|
-
rows: 3,
|
|
424
|
-
placeholder: O("devportal.storeSubmission.notesLabel", "Notes for the reviewer (optional)"),
|
|
425
|
-
className: "mb-3 w-full rounded-md border border-border-default bg-surface-default px-3 py-2 text-sm text-text-primary focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary"
|
|
426
|
-
}),
|
|
427
|
-
/* @__PURE__ */ _("button", {
|
|
428
|
-
type: "button",
|
|
429
|
-
onClick: () => void q(),
|
|
430
|
-
disabled: I || !k.allowed,
|
|
431
|
-
"aria-disabled": I || !k.allowed,
|
|
432
|
-
title: k.allowed ? void 0 : O("devportal.common.noPermission", "You do not have permission to perform this action"),
|
|
433
|
-
className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-semibold text-action-primary-text hover:opacity-90 disabled:opacity-60 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary",
|
|
434
|
-
children: [I && /* @__PURE__ */ g(d, {
|
|
435
|
-
className: "h-4 w-4 animate-spin",
|
|
436
|
-
"aria-hidden": "true"
|
|
437
|
-
}), X === "REJECTED" ? O("devportal.storeSubmission.resubmit", "Resubmit") : O("devportal.storeSubmission.submitForReview", "Submit for review")]
|
|
438
|
-
})
|
|
486
|
+
] })
|
|
439
487
|
]
|
|
440
488
|
}),
|
|
441
|
-
|
|
489
|
+
q?.productId && /* @__PURE__ */ g("div", {
|
|
442
490
|
className: "rounded-lg border border-border-default bg-surface-raised p-4",
|
|
443
|
-
children: [/* @__PURE__ */
|
|
491
|
+
children: [/* @__PURE__ */ h("p", {
|
|
444
492
|
className: "text-xs font-medium text-text-secondary",
|
|
445
|
-
children:
|
|
446
|
-
}), /* @__PURE__ */
|
|
493
|
+
children: D("devportal.storeSubmission.storeProductId", "Store product ID")
|
|
494
|
+
}), /* @__PURE__ */ h("code", {
|
|
447
495
|
className: "mt-1 block break-all font-mono text-xs text-text-primary",
|
|
448
|
-
children:
|
|
496
|
+
children: q.productId
|
|
449
497
|
})]
|
|
450
498
|
})
|
|
451
499
|
]
|
|
452
|
-
}) : /* @__PURE__ */
|
|
500
|
+
}) : /* @__PURE__ */ h(re, {
|
|
453
501
|
illustration: "empty-generic",
|
|
454
|
-
title:
|
|
455
|
-
description:
|
|
502
|
+
title: D("devportal.storeSubmission.notFoundTitle", "Application not found"),
|
|
503
|
+
description: D("devportal.storeSubmission.notFound", "Application not found.")
|
|
456
504
|
})
|
|
457
505
|
]
|
|
458
506
|
})
|
|
@@ -460,6 +508,6 @@ var T = {
|
|
|
460
508
|
});
|
|
461
509
|
};
|
|
462
510
|
//#endregion
|
|
463
|
-
export {
|
|
511
|
+
export { w as StoreSubmissionPage };
|
|
464
512
|
|
|
465
513
|
//# sourceMappingURL=StoreSubmissionPage.js.map
|