@burdenoff/microfe-store 2026.917.1 → 2026.918.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.
@@ -4,12 +4,32 @@ import { Markdown as n } from "../node_modules/react-markdown/lib/index.js";
4
4
  import { InstallAppModal as r } from "../components/InstallAppModal.js";
5
5
  import { useCallback as i, useEffect as a, useState as o } from "react";
6
6
  import { useNavigate as ee } from "react-router";
7
- import { ArrowLeft as te, Check as s, ChevronDown as c, ChevronUp as l, Clock as u, Download as d, ExternalLink as f, FileJson as p, FlaskConical as ne, GitBranch as m, Hash as re, PackageCheck as ie, RefreshCw as h, ShieldCheck as ae, Tag as oe, User as se, X as g } from "lucide-react";
8
- import { graphqlFetch as _ } from "@burdenoff/fe-libs/shared/graphql";
9
- import { jsx as v, jsxs as y } from "react/jsx-runtime";
10
- import { IllustratedEmptyState as b, PagePurpose as ce } from "@burdenoff/fe-libs/ui";
7
+ import { ArrowLeft as te, Check as ne, ChevronDown as re, ChevronUp as ie, Clock as ae, Download as s, ExternalLink as oe, FileJson as c, FlaskConical as se, GitBranch as l, Hash as ce, History as le, PackageCheck as ue, RefreshCw as u, ShieldCheck as de, Tag as fe, User as pe, X as d } from "lucide-react";
8
+ import { graphqlFetch as f } from "@burdenoff/fe-libs/shared/graphql";
9
+ import { jsx as p, jsxs as m } from "react/jsx-runtime";
10
+ import { IllustratedEmptyState as me, PagePurpose as he } from "@burdenoff/fe-libs/ui";
11
11
  //#region src/pages/AdminSubmissionsQueuePage.tsx
12
- var le = "\n query PendingReviewProducts($limit: Int, $offset: Int) {\n pendingReviewProducts(limit: $limit, offset: $offset) {\n totalCount\n products {\n id\n slug\n name\n type\n nature\n status\n pricingModel\n price\n currency\n description\n submittedAt\n submittedBy\n category\n icon\n productId\n zipFileUrl\n manifest\n requiredPermissions\n publisher {\n id\n name\n email\n }\n }\n }\n }\n", ue = "\n query AdminProducts($limit: Int, $offset: Int, $status: ProductStatus) {\n products(filter: { status: $status }, limit: $limit, offset: $offset) {\n id\n slug\n name\n type\n nature\n status\n pricingModel\n price\n currency\n description\n submittedAt\n submittedBy\n category\n icon\n productId\n zipFileUrl\n manifest\n requiredPermissions\n publisher {\n id\n name\n email\n }\n }\n }\n", de = "\n mutation ApproveProduct($id: ID!, $notes: String) {\n approveProduct(id: $id, notes: $notes) {\n id\n status\n publishedAt\n }\n }\n", fe = "\n mutation RejectProduct($id: ID!, $reason: String!) {\n rejectProduct(id: $id, reason: $reason) {\n id\n status\n rejectedReason\n }\n }\n", pe = "\n mutation DelistProduct($id: ID!, $reason: String) {\n delistProduct(id: $id, reason: $reason) {\n id\n status\n }\n }\n", me = "\n query AdminAppPackageUrl($id: ID!) {\n application(id: $id) {\n id\n versions(first: 1) {\n edges {\n node {\n id\n packageUrl\n }\n }\n }\n }\n }\n", he = "\n mutation RefreshApplicationVersionPackageUrl($id: ID!) {\n refreshApplicationVersionPackageUrl(id: $id)\n }\n", ge = "\n query AdminPendingVersionApps($limit: Int, $offset: Int) {\n applicationsWithPendingVersions(limit: $limit, offset: $offset) {\n totalCount\n edges {\n node {\n id\n name\n slug\n iconUrl\n shortDescription\n description\n versions(first: 5) {\n edges {\n node {\n id\n version\n status\n releaseNotes\n packageUrl\n packageSize\n isLatest\n reviewNotes\n manifest\n createdAt\n }\n }\n }\n }\n }\n }\n }\n", _e = "\n mutation AdminApproveApplicationVersion($id: ID!, $notes: String) {\n approveApplicationVersion(id: $id, notes: $notes) {\n id\n status\n }\n }\n", ve = "\n mutation AdminRejectApplicationVersion($id: ID!, $reason: String!) {\n rejectApplicationVersion(id: $id, reason: $reason) {\n id\n status\n }\n }\n", ye = [
12
+ function h(e) {
13
+ let t = e?.sandboxBuildStatus;
14
+ return typeof t == "string" ? t : null;
15
+ }
16
+ function g(e) {
17
+ let t = e?.sandboxBuildError;
18
+ return typeof t == "string" ? t : null;
19
+ }
20
+ var ge = {
21
+ PENDING: "Build pending",
22
+ READY: "Build ready",
23
+ FAILED: "Build failed",
24
+ DISPATCH_FAILED: "Dispatch failed",
25
+ UNSUPPORTED: "Unsupported provider"
26
+ }, _ = {
27
+ PENDING: "bg-[var(--color-status-warning-bg-subtle)] text-[var(--color-status-warning-text)]",
28
+ READY: "bg-[var(--color-status-success-bg-subtle)] text-[var(--color-status-success-text)]",
29
+ FAILED: "bg-[var(--color-status-error-bg-subtle)] text-[var(--color-status-error-text)]",
30
+ DISPATCH_FAILED: "bg-[var(--color-status-error-bg-subtle)] text-[var(--color-status-error-text)]",
31
+ UNSUPPORTED: "bg-[var(--color-surface-muted)] text-[var(--color-text-secondary)]"
32
+ }, _e = "\n query PendingReviewProducts($limit: Int, $offset: Int) {\n pendingReviewProducts(limit: $limit, offset: $offset) {\n totalCount\n products {\n id\n slug\n name\n type\n nature\n status\n pricingModel\n price\n currency\n description\n submittedAt\n submittedBy\n category\n icon\n productId\n zipFileUrl\n manifest\n requiredPermissions\n publisher {\n id\n name\n email\n }\n }\n }\n }\n", ve = "\n query AdminProducts($limit: Int, $offset: Int, $status: ProductStatus) {\n products(filter: { status: $status }, limit: $limit, offset: $offset) {\n id\n slug\n name\n type\n nature\n status\n pricingModel\n price\n currency\n description\n submittedAt\n submittedBy\n category\n icon\n productId\n zipFileUrl\n manifest\n requiredPermissions\n publisher {\n id\n name\n email\n }\n }\n }\n", ye = "\n mutation ApproveProduct($id: ID!, $notes: String) {\n approveProduct(id: $id, notes: $notes) {\n id\n status\n publishedAt\n }\n }\n", be = "\n mutation RejectProduct($id: ID!, $reason: String!) {\n rejectProduct(id: $id, reason: $reason) {\n id\n status\n rejectedReason\n }\n }\n", xe = "\n mutation DelistProduct($id: ID!, $reason: String) {\n delistProduct(id: $id, reason: $reason) {\n id\n status\n }\n }\n", Se = "\n query AdminAppPackageUrl($id: ID!) {\n application(id: $id) {\n id\n versions(first: 1) {\n edges {\n node {\n id\n packageUrl\n metadata\n }\n }\n }\n }\n }\n", Ce = "\n mutation RefreshApplicationVersionPackageUrl($id: ID!) {\n refreshApplicationVersionPackageUrl(id: $id)\n }\n", we = "\n query AdminPendingVersionApps($limit: Int, $offset: Int) {\n applicationsWithPendingVersions(limit: $limit, offset: $offset) {\n totalCount\n edges {\n node {\n id\n name\n slug\n appType\n iconUrl\n shortDescription\n description\n versions(first: 5) {\n edges {\n node {\n id\n version\n status\n releaseNotes\n packageUrl\n packageSize\n isLatest\n reviewNotes\n manifest\n metadata\n createdAt\n }\n }\n }\n }\n }\n }\n }\n", Te = "\n mutation AdminApproveApplicationVersion($id: ID!, $notes: String) {\n approveApplicationVersion(id: $id, notes: $notes) {\n id\n status\n }\n }\n", Ee = "\n mutation AdminRejectApplicationVersion($id: ID!, $reason: String!) {\n rejectApplicationVersion(id: $id, reason: $reason) {\n id\n status\n }\n }\n", De = "\n mutation AdminRetryNodeSandboxBuild($id: ID!) {\n retryNodeSandboxBuild(id: $id)\n }\n", Oe = [
13
33
  {
14
34
  label: "Pending review",
15
35
  value: "PENDING_REVIEW"
@@ -30,16 +50,16 @@ var le = "\n query PendingReviewProducts($limit: Int, $offset: Int) {\n pend
30
50
  label: "All",
31
51
  value: "ALL"
32
52
  }
33
- ], x = {
53
+ ], v = {
34
54
  NODE: "bg-[var(--color-status-info-bg-subtle)] text-[var(--color-status-info-text)]",
35
55
  WORKFLOW: "bg-[var(--color-status-warning-bg-subtle)] text-[var(--color-status-warning-text)]",
36
56
  INTEGRATION: "bg-[var(--color-status-success-bg-subtle)] text-[var(--color-status-success-text)]",
37
57
  VIBEMODULE: "bg-[var(--color-surface-accent-muted)] text-[var(--color-text-accent)]"
38
- }, S = {
58
+ }, y = {
39
59
  PENDING_REVIEW: "bg-[var(--color-status-warning-bg-subtle)] text-[var(--color-status-warning-text)]",
40
60
  PUBLISHED: "bg-[var(--color-status-success-bg-subtle)] text-[var(--color-status-success-text)]",
41
61
  REJECTED: "bg-[var(--color-status-error-bg-subtle)] text-[var(--color-status-error-text)]"
42
- }, C = new Set([
62
+ }, b = new Set([
43
63
  "NODE",
44
64
  "WORKFLOW",
45
65
  "VIBEMODULE",
@@ -47,13 +67,13 @@ var le = "\n query PendingReviewProducts($limit: Int, $offset: Int) {\n pend
47
67
  "DATASINK",
48
68
  "CONSOLE"
49
69
  ]);
50
- function be(e) {
51
- return x[e] ?? "bg-[var(--color-surface-muted)] text-[var(--color-text-secondary)]";
70
+ function ke(e) {
71
+ return v[e] ?? "bg-[var(--color-surface-muted)] text-[var(--color-text-secondary)]";
52
72
  }
53
- function xe(e) {
54
- return S[e] ?? "bg-[var(--color-surface-muted)] text-[var(--color-text-secondary)]";
73
+ function Ae(e) {
74
+ return y[e] ?? "bg-[var(--color-surface-muted)] text-[var(--color-text-secondary)]";
55
75
  }
56
- function Se(e) {
76
+ function x(e) {
57
77
  return e ? new Date(e).toLocaleString(void 0, {
58
78
  month: "short",
59
79
  day: "numeric",
@@ -62,449 +82,494 @@ function Se(e) {
62
82
  minute: "2-digit"
63
83
  }) : "—";
64
84
  }
65
- var w = () => {
66
- let x = ee(), { authToken: S, basePath: w } = e(), [T, E] = o([]), [D, O] = o(0), [k, A] = o(!1), [j, M] = o(null), [N, P] = o(null), [F, Ce] = o("PENDING_REVIEW"), [we, I] = o(null), [L, R] = o(""), [z, B] = o(null), [V, H] = o(null), [U, Te] = o([]), [Ee, De] = o(0), [W, G] = o(null), [Oe, K] = o(null), [q, J] = o(""), [ke, Y] = o(null), [Ae, je] = o({}), [X, Me] = o(null), Z = i(async () => {
67
- A(!0), M(null);
85
+ var S = () => {
86
+ let v = ee(), { authToken: y, basePath: S } = e(), [C, w] = o([]), [T, je] = o(0), [E, D] = o(!1), [O, k] = o(null), [A, j] = o(null), [M, Me] = o("PENDING_REVIEW"), [Ne, N] = o(null), [P, F] = o(""), [I, L] = o(null), [R, z] = o(null), [B, Pe] = o([]), [V, Fe] = o(0), [H, U] = o(null), [W, Ie] = o(null), [Le, G] = o(null), [K, q] = o(""), [Re, J] = o(null), [Y, ze] = o({}), [X, Be] = o(null), Z = i(async () => {
87
+ D(!0), k(null);
68
88
  try {
69
- let e = await _({
89
+ let e = await f({
70
90
  gateway: "global",
71
- query: ge,
91
+ query: we,
72
92
  variables: {
73
93
  limit: 50,
74
94
  offset: 0
75
95
  },
76
- authToken: S || void 0
96
+ authToken: y || void 0
77
97
  });
78
98
  if (e.errors?.length) throw Error(e.errors[0]?.message ?? "Failed to load version updates");
79
- Te((e.data?.applicationsWithPendingVersions.edges ?? []).map((e) => e.node)), De(e.data?.applicationsWithPendingVersions.totalCount ?? 0);
99
+ Pe((e.data?.applicationsWithPendingVersions.edges ?? []).map((e) => e.node)), Fe(e.data?.applicationsWithPendingVersions.totalCount ?? 0);
80
100
  } catch (e) {
81
- M(e instanceof Error ? e.message : "Failed to load version updates");
101
+ k(e instanceof Error ? e.message : "Failed to load version updates");
82
102
  } finally {
83
- A(!1);
103
+ D(!1);
84
104
  }
85
- }, [S]), Ne = async (e, t, n) => {
86
- G(e), M(null);
105
+ }, [y]), Ve = async (e, t, n) => {
106
+ U(e), k(null);
87
107
  try {
88
- let t = await _({
108
+ let t = await f({
89
109
  gateway: "global",
90
- query: _e,
110
+ query: Te,
91
111
  variables: {
92
112
  id: e,
93
113
  notes: n || null
94
114
  },
95
- authToken: S || void 0
115
+ authToken: y || void 0
96
116
  });
97
117
  if (t.errors?.length) throw Error(t.errors[0]?.message ?? "Approval failed");
98
118
  await Z();
99
119
  } catch (e) {
100
- M(e instanceof Error ? e.message : "Approval failed");
120
+ k(e instanceof Error ? e.message : "Approval failed");
101
121
  } finally {
102
- G(null);
122
+ U(null);
103
123
  }
104
- }, Pe = async (e, t, n) => {
124
+ }, He = async (e, t, n) => {
105
125
  if (!n.trim()) {
106
- M("Rejection reason is required");
126
+ k("Rejection reason is required");
107
127
  return;
108
128
  }
109
- G(e), M(null);
129
+ U(e), k(null);
110
130
  try {
111
- let t = await _({
131
+ let t = await f({
112
132
  gateway: "global",
113
- query: ve,
133
+ query: Ee,
114
134
  variables: {
115
135
  id: e,
116
136
  reason: n.trim()
117
137
  },
118
- authToken: S || void 0
138
+ authToken: y || void 0
119
139
  });
120
140
  if (t.errors?.length) throw Error(t.errors[0]?.message ?? "Rejection failed");
121
- K(null), J(""), Y(null), await Z();
141
+ G(null), q(""), J(null), await Z();
122
142
  } catch (e) {
123
- M(e instanceof Error ? e.message : "Rejection failed");
143
+ k(e instanceof Error ? e.message : "Rejection failed");
124
144
  } finally {
125
- G(null);
145
+ U(null);
146
+ }
147
+ }, Ue = async (e) => {
148
+ Ie(e), k(null);
149
+ try {
150
+ let t = await f({
151
+ gateway: "global",
152
+ query: De,
153
+ variables: { id: e },
154
+ authToken: y || void 0
155
+ });
156
+ if (t.errors?.length) throw Error(t.errors[0]?.message ?? "Retry failed");
157
+ await Promise.all([Z(), Q(M)]);
158
+ } catch (e) {
159
+ k(e instanceof Error ? e.message : "Retry failed");
160
+ } finally {
161
+ Ie(null);
126
162
  }
127
163
  }, Q = i(async (e) => {
128
164
  if (e === "VERSION_UPDATES") {
129
165
  await Z();
130
166
  return;
131
167
  }
132
- A(!0), M(null);
168
+ D(!0), k(null);
133
169
  try {
134
170
  if (e === "PENDING_REVIEW") {
135
- let e = await _({
171
+ let e = await f({
136
172
  gateway: "global",
137
- query: le,
173
+ query: _e,
138
174
  variables: {
139
175
  limit: 100,
140
176
  offset: 0
141
177
  },
142
- authToken: S || void 0
178
+ authToken: y || void 0
143
179
  });
144
180
  if (e.errors?.length) throw Error(e.errors[0]?.message ?? "Failed to load pending products");
145
- E(e.data?.pendingReviewProducts.products ?? []), O(e.data?.pendingReviewProducts.totalCount ?? 0);
181
+ w(e.data?.pendingReviewProducts.products ?? []), je(e.data?.pendingReviewProducts.totalCount ?? 0);
146
182
  } else {
147
- let t = await _({
183
+ let t = await f({
148
184
  gateway: "global",
149
- query: ue,
185
+ query: ve,
150
186
  variables: {
151
187
  limit: 100,
152
188
  offset: 0,
153
189
  ...e !== "ALL" && { status: e }
154
190
  },
155
- authToken: S || void 0
191
+ authToken: y || void 0
156
192
  });
157
193
  if (t.errors?.length) throw Error(t.errors[0]?.message ?? "Failed to load products");
158
194
  let n = t.data?.products ?? [];
159
- E(n), O(n.length);
195
+ w(n), je(n.length);
160
196
  }
161
197
  } catch (e) {
162
- M(e instanceof Error ? e.message : "Failed to load products");
198
+ k(e instanceof Error ? e.message : "Failed to load products");
163
199
  } finally {
164
- A(!1);
200
+ D(!1);
165
201
  }
166
- }, [S, Z]);
202
+ }, [y, Z]);
167
203
  a(() => {
168
- Q(F);
169
- }, [Q, F]), a(() => {
204
+ Q(M);
205
+ }, [Q, M]), a(() => {
170
206
  Z();
171
207
  }, [Z]), a(() => {
172
- let e = T.filter((e) => C.has(e.type) && e.productId && !e.zipFileUrl);
208
+ let e = C.filter((e) => e.productId && (e.type === "NODE" || b.has(e.type) && !e.zipFileUrl));
173
209
  e.length !== 0 && (async () => {
174
- let t = await Promise.allSettled(e.map((e) => _({
210
+ let t = await Promise.allSettled(e.map((e) => f({
175
211
  gateway: "global",
176
- query: me,
212
+ query: Se,
177
213
  variables: { id: e.productId },
178
- authToken: S || void 0
214
+ authToken: y || void 0
179
215
  })));
180
- je((n) => {
216
+ ze((n) => {
181
217
  let r = { ...n };
182
218
  return t.forEach((t, n) => {
183
219
  if (t.status === "fulfilled") {
184
220
  let i = t.value.data?.application?.versions?.edges?.[0]?.node, a = e[n].productId;
185
221
  i?.id && i.packageUrl && a && (r[a] = {
186
222
  versionId: i.id,
187
- packageUrl: i.packageUrl
223
+ packageUrl: i.packageUrl,
224
+ metadata: i.metadata ?? null
188
225
  });
189
226
  }
190
227
  }), r;
191
228
  });
192
229
  })();
193
- }, [T, S]);
194
- let Fe = async (e) => {
195
- Me(e);
230
+ }, [C, y]);
231
+ let We = async (e) => {
232
+ Be(e);
196
233
  try {
197
- let t = (await _({
234
+ let t = (await f({
198
235
  gateway: "global",
199
- query: he,
236
+ query: Ce,
200
237
  variables: { id: e },
201
- authToken: S || void 0
238
+ authToken: y || void 0
202
239
  })).data?.refreshApplicationVersionPackageUrl;
203
- t ? window.open(t, "_blank", "noreferrer") : M("Could not generate a download URL. S3 credentials may not be configured.");
240
+ t ? window.open(t, "_blank", "noreferrer") : k("Could not generate a download URL. S3 credentials may not be configured.");
204
241
  } catch (e) {
205
- M(e instanceof Error ? e.message : "Failed to refresh download URL");
242
+ k(e instanceof Error ? e.message : "Failed to refresh download URL");
206
243
  } finally {
207
- Me(null);
244
+ Be(null);
208
245
  }
209
- }, Ie = async (e) => {
210
- P(e), M(null);
246
+ }, Ge = async (e) => {
247
+ j(e), k(null);
211
248
  try {
212
- let t = await _({
249
+ let t = await f({
213
250
  gateway: "global",
214
- query: de,
251
+ query: ye,
215
252
  variables: {
216
253
  id: e,
217
254
  notes: null
218
255
  },
219
- authToken: S || void 0
256
+ authToken: y || void 0
220
257
  });
221
258
  if (t.errors?.length) throw Error(t.errors[0]?.message ?? "Approval failed");
222
- await Q(F);
259
+ await Q(M);
223
260
  } catch (e) {
224
- M(e instanceof Error ? e.message : "Approval failed");
261
+ k(e instanceof Error ? e.message : "Approval failed");
225
262
  } finally {
226
- P(null);
263
+ j(null);
227
264
  }
228
- }, Le = async (e) => {
229
- if (!L.trim()) {
230
- M("Rejection reason is required");
265
+ }, Ke = async (e) => {
266
+ if (!P.trim()) {
267
+ k("Rejection reason is required");
231
268
  return;
232
269
  }
233
- P(e), M(null);
270
+ j(e), k(null);
234
271
  try {
235
- let t = await _({
272
+ let t = await f({
236
273
  gateway: "global",
237
- query: fe,
274
+ query: be,
238
275
  variables: {
239
276
  id: e,
240
- reason: L.trim()
277
+ reason: P.trim()
241
278
  },
242
- authToken: S || void 0
279
+ authToken: y || void 0
243
280
  });
244
281
  if (t.errors?.length) throw Error(t.errors[0]?.message ?? "Rejection failed");
245
- I(null), R(""), await Q(F);
282
+ N(null), F(""), await Q(M);
246
283
  } catch (e) {
247
- M(e instanceof Error ? e.message : "Rejection failed");
284
+ k(e instanceof Error ? e.message : "Rejection failed");
248
285
  } finally {
249
- P(null);
286
+ j(null);
250
287
  }
251
- }, Re = async (e) => {
252
- P(e), M(null);
288
+ }, qe = async (e) => {
289
+ j(e), k(null);
253
290
  try {
254
- let t = await _({
291
+ let t = await f({
255
292
  gateway: "global",
256
- query: pe,
293
+ query: xe,
257
294
  variables: {
258
295
  id: e,
259
- reason: L.trim() || void 0
296
+ reason: P.trim() || void 0
260
297
  },
261
- authToken: S || void 0
298
+ authToken: y || void 0
262
299
  });
263
300
  if (t.errors?.length) throw Error(t.errors[0]?.message ?? "Delist failed");
264
- I(null), R(""), await Q(F);
301
+ N(null), F(""), await Q(M);
265
302
  } catch (e) {
266
- M(e instanceof Error ? e.message : "Delist failed");
303
+ k(e instanceof Error ? e.message : "Delist failed");
267
304
  } finally {
268
- P(null);
305
+ j(null);
269
306
  }
270
- }, $ = T.filter((e) => e.status === "PENDING_REVIEW").length;
271
- return /* @__PURE__ */ y("div", {
307
+ }, $ = C.filter((e) => e.status === "PENDING_REVIEW").length;
308
+ return /* @__PURE__ */ m("div", {
272
309
  className: "min-h-screen bg-[var(--color-surface-default)]",
273
310
  children: [
274
- /* @__PURE__ */ v("header", {
311
+ /* @__PURE__ */ p("header", {
275
312
  className: "sticky top-0 z-10 border-b border-[var(--color-border-seam)] bg-[var(--color-surface-raised)] shadow-[var(--shadow-elevation-1)]",
276
- children: /* @__PURE__ */ y("div", {
313
+ children: /* @__PURE__ */ m("div", {
277
314
  className: "mx-auto max-w-5xl px-6 py-4",
278
- children: [/* @__PURE__ */ y("div", {
315
+ children: [/* @__PURE__ */ m("div", {
279
316
  className: "flex items-center justify-between gap-4",
280
- children: [/* @__PURE__ */ y("div", {
317
+ children: [/* @__PURE__ */ m("div", {
281
318
  className: "flex items-center gap-3 min-w-0",
282
319
  children: [
283
- /* @__PURE__ */ y("button", {
320
+ /* @__PURE__ */ m("button", {
284
321
  type: "button",
285
- onClick: () => x(`${w}/dashboard`),
322
+ onClick: () => v(`${S}/dashboard`),
286
323
  className: "inline-flex items-center gap-1.5 rounded-md px-2.5 py-1.5 text-sm text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)] transition-colors",
287
- children: [/* @__PURE__ */ v(te, { className: "size-4 shrink-0" }), "Back"]
324
+ children: [/* @__PURE__ */ p(te, { className: "size-4 shrink-0" }), "Back"]
288
325
  }),
289
- /* @__PURE__ */ v("div", { className: "h-5 w-px bg-[var(--color-border-seam)]" }),
290
- /* @__PURE__ */ v(ie, { className: "size-5 shrink-0 text-[var(--color-text-primary)]" }),
291
- /* @__PURE__ */ v("h1", {
326
+ /* @__PURE__ */ p("div", { className: "h-5 w-px bg-[var(--color-border-seam)]" }),
327
+ /* @__PURE__ */ p(ue, { className: "size-5 shrink-0 text-[var(--color-text-primary)]" }),
328
+ /* @__PURE__ */ p("h1", {
292
329
  className: "text-lg font-semibold text-[var(--color-text-primary)] truncate",
293
330
  children: "Submission Queue"
294
331
  }),
295
- D > 0 && /* @__PURE__ */ v("span", {
332
+ T > 0 && /* @__PURE__ */ p("span", {
296
333
  className: "shrink-0 rounded-full bg-[var(--color-status-warning-bg-subtle)] px-2 py-0.5 text-xs font-semibold text-[var(--color-status-warning-text)]",
297
- children: D
334
+ children: T
298
335
  })
299
336
  ]
300
- }), /* @__PURE__ */ y("button", {
337
+ }), /* @__PURE__ */ m("button", {
301
338
  type: "button",
302
- onClick: () => void Q(F),
339
+ onClick: () => void Q(M),
303
340
  className: "shrink-0 inline-flex items-center gap-2 rounded-md border border-[var(--color-border-default)] bg-[var(--color-surface-default)] px-3 py-1.5 text-sm text-[var(--color-text-primary)] hover:bg-[var(--color-surface-hover)] transition-colors disabled:opacity-50",
304
- disabled: k,
305
- children: [/* @__PURE__ */ v(h, { className: `size-4 ${k ? "animate-spin" : ""}` }), "Refresh"]
341
+ disabled: E,
342
+ children: [/* @__PURE__ */ p(u, { className: `size-4 ${E ? "animate-spin" : ""}` }), "Refresh"]
306
343
  })]
307
- }), /* @__PURE__ */ v("div", {
344
+ }), /* @__PURE__ */ p("div", {
308
345
  className: "mt-3 flex gap-1.5 flex-wrap",
309
- children: ye.map((e) => /* @__PURE__ */ y("button", {
346
+ children: Oe.map((e) => /* @__PURE__ */ m("button", {
310
347
  type: "button",
311
- onClick: () => Ce(e.value),
312
- className: `rounded-full px-3.5 py-1 text-xs font-medium transition-colors ${F === e.value ? "bg-[var(--color-action-primary-bg)] text-[var(--color-action-primary-text)]" : "bg-[var(--color-surface-muted)] text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-hover)]"}`,
348
+ onClick: () => Me(e.value),
349
+ className: `rounded-full px-3.5 py-1 text-xs font-medium transition-colors ${M === e.value ? "bg-[var(--color-action-primary-bg)] text-[var(--color-action-primary-text)]" : "bg-[var(--color-surface-muted)] text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-hover)]"}`,
313
350
  children: [
314
351
  e.label,
315
- e.value === "PENDING_REVIEW" && $ > 0 && F !== "PENDING_REVIEW" && /* @__PURE__ */ v("span", {
352
+ e.value === "PENDING_REVIEW" && $ > 0 && M !== "PENDING_REVIEW" && /* @__PURE__ */ p("span", {
316
353
  className: "ml-1.5 rounded-full bg-[var(--color-status-warning-text)] px-1.5 py-0.5 text-[10px] text-white",
317
354
  children: $
318
355
  }),
319
- e.value === "VERSION_UPDATES" && Ee > 0 && F !== "VERSION_UPDATES" && /* @__PURE__ */ v("span", {
356
+ e.value === "VERSION_UPDATES" && V > 0 && M !== "VERSION_UPDATES" && /* @__PURE__ */ p("span", {
320
357
  className: "ml-1.5 rounded-full bg-[var(--color-status-info-text)] px-1.5 py-0.5 text-[10px] text-white",
321
- children: Ee
358
+ children: V
322
359
  })
323
360
  ]
324
361
  }, e.value))
325
362
  })]
326
363
  })
327
364
  }),
328
- /* @__PURE__ */ y("main", {
365
+ /* @__PURE__ */ m("main", {
329
366
  className: "mx-auto max-w-5xl space-y-4 p-6",
330
367
  children: [
331
- /* @__PURE__ */ v(ce, {
368
+ /* @__PURE__ */ p(he, {
332
369
  className: "mb-2",
333
370
  children: "Every publisher submission lands here for your review. Inspect the manifest, permissions, and package details — then approve to publish or reject with a clear reason the developer will see."
334
371
  }),
335
- j && /* @__PURE__ */ v("div", {
372
+ O && /* @__PURE__ */ p("div", {
336
373
  role: "alert",
337
374
  className: "rounded-lg border border-[var(--color-border-danger)] bg-[var(--color-surface-danger-muted)] px-4 py-3 text-sm text-[var(--color-text-danger)]",
338
- children: j
375
+ children: O
339
376
  }),
340
- F === "VERSION_UPDATES" ? k && U.length === 0 ? /* @__PURE__ */ v("div", {
377
+ M === "VERSION_UPDATES" ? E && B.length === 0 ? /* @__PURE__ */ p("div", {
341
378
  className: "flex items-center justify-center py-24",
342
- children: /* @__PURE__ */ v(h, { className: "size-6 animate-spin text-[var(--color-text-muted)]" })
343
- }) : U.length === 0 ? /* @__PURE__ */ v(b, {
379
+ children: /* @__PURE__ */ p(u, { className: "size-6 animate-spin text-[var(--color-text-muted)]" })
380
+ }) : B.length === 0 ? /* @__PURE__ */ p(me, {
344
381
  illustration: "empty-data",
345
382
  title: "No pending version updates",
346
383
  description: "All published apps are up to date. When a developer submits a new version, it will appear here for your review."
347
- }) : /* @__PURE__ */ v("ul", {
384
+ }) : /* @__PURE__ */ p("ul", {
348
385
  className: "space-y-4",
349
- children: U.map((e) => {
386
+ children: B.map((e) => {
350
387
  let t = e.versions.edges.map((e) => e.node).filter((e) => e.status === "pending_review");
351
- return t.length === 0 ? null : /* @__PURE__ */ y("li", {
388
+ return t.length === 0 ? null : /* @__PURE__ */ m("li", {
352
389
  className: "overflow-hidden rounded-xl border border-[var(--color-border-seam)] bg-[var(--color-surface-raised)] shadow-[var(--shadow-elevation-1)]",
353
- children: [/* @__PURE__ */ y("div", {
390
+ children: [/* @__PURE__ */ m("div", {
354
391
  className: "flex items-center gap-4 p-5 border-b border-[var(--color-border-seam)]",
355
392
  children: [
356
- e.iconUrl ? /* @__PURE__ */ v("img", {
393
+ e.iconUrl ? /* @__PURE__ */ p("img", {
357
394
  src: e.iconUrl,
358
395
  alt: "",
359
396
  className: "size-12 shrink-0 rounded-xl object-cover shadow-sm"
360
- }) : /* @__PURE__ */ v("div", {
397
+ }) : /* @__PURE__ */ p("div", {
361
398
  className: "flex size-12 shrink-0 items-center justify-center rounded-xl bg-[var(--color-surface-muted)] text-sm font-bold text-[var(--color-text-muted)] uppercase",
362
399
  children: e.name.slice(0, 2)
363
400
  }),
364
- /* @__PURE__ */ y("div", {
401
+ /* @__PURE__ */ m("div", {
365
402
  className: "flex-1 min-w-0",
366
- children: [/* @__PURE__ */ y("div", {
403
+ children: [/* @__PURE__ */ m("div", {
367
404
  className: "flex items-center gap-2 flex-wrap",
368
- children: [/* @__PURE__ */ v("h3", {
405
+ children: [/* @__PURE__ */ p("h3", {
369
406
  className: "text-base font-semibold text-[var(--color-text-primary)]",
370
407
  children: e.name
371
- }), /* @__PURE__ */ y("span", {
408
+ }), /* @__PURE__ */ m("span", {
372
409
  className: "inline-flex items-center gap-1 rounded-full bg-[var(--color-status-info-bg-subtle)] px-2 py-0.5 text-[11px] font-semibold text-[var(--color-status-info-text)]",
373
410
  children: [
374
- /* @__PURE__ */ v(m, { className: "size-3" }),
411
+ /* @__PURE__ */ p(l, { className: "size-3" }),
375
412
  t.length,
376
413
  " version",
377
414
  t.length === 1 ? "" : "s",
378
415
  " pending"
379
416
  ]
380
417
  })]
381
- }), (e.shortDescription ?? e.description) && /* @__PURE__ */ v("p", {
418
+ }), (e.shortDescription ?? e.description) && /* @__PURE__ */ p("p", {
382
419
  className: "mt-0.5 text-sm text-[var(--color-text-secondary)] line-clamp-1",
383
420
  children: e.shortDescription ?? e.description
384
421
  })]
385
422
  }),
386
- /* @__PURE__ */ y("a", {
423
+ /* @__PURE__ */ m("a", {
387
424
  href: `/devportal/apps/${e.id}`,
388
425
  target: "_blank",
389
426
  rel: "noreferrer",
390
427
  className: "shrink-0 inline-flex items-center gap-1.5 rounded-md border border-[var(--color-border-default)] bg-[var(--color-surface-default)] px-3 py-1.5 text-xs font-medium text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-hover)] transition-colors",
391
- children: [/* @__PURE__ */ v(f, { className: "size-3.5" }), "Devportal"]
428
+ children: [/* @__PURE__ */ p(oe, { className: "size-3.5" }), "Devportal"]
392
429
  })
393
430
  ]
394
- }), /* @__PURE__ */ v("div", {
431
+ }), /* @__PURE__ */ p("div", {
395
432
  className: "divide-y divide-[var(--color-border-seam)]",
396
- children: t.map((t) => /* @__PURE__ */ y("div", {
433
+ children: t.map((t) => /* @__PURE__ */ m("div", {
397
434
  className: "p-5 space-y-3",
398
435
  children: [
399
- /* @__PURE__ */ y("div", {
436
+ /* @__PURE__ */ m("div", {
400
437
  className: "flex items-center gap-2 flex-wrap",
401
438
  children: [
402
- /* @__PURE__ */ v(m, { className: "size-4 text-[var(--color-text-secondary)] shrink-0" }),
403
- /* @__PURE__ */ v("span", {
439
+ /* @__PURE__ */ p(l, { className: "size-4 text-[var(--color-text-secondary)] shrink-0" }),
440
+ /* @__PURE__ */ p("span", {
404
441
  className: "font-mono font-semibold text-sm text-[var(--color-text-primary)]",
405
442
  children: t.version
406
443
  }),
407
- t.isLatest && /* @__PURE__ */ v("span", {
444
+ t.isLatest && /* @__PURE__ */ p("span", {
408
445
  className: "rounded-full bg-[var(--color-surface-muted)] px-2 py-0.5 text-[10px] text-[var(--color-text-secondary)]",
409
446
  children: "Latest"
410
447
  }),
411
- /* @__PURE__ */ v("span", {
448
+ /* @__PURE__ */ p("span", {
412
449
  className: "rounded-full bg-[var(--color-status-warning-bg-subtle)] px-2 py-0.5 text-[10px] font-medium text-[var(--color-status-warning-text)] uppercase",
413
450
  children: "New Version"
414
451
  }),
415
- /* @__PURE__ */ y("span", {
452
+ e.appType === "NODE" && (() => {
453
+ let e = h(t.metadata);
454
+ return e ? /* @__PURE__ */ p("span", {
455
+ className: `rounded-full px-2 py-0.5 text-[10px] font-medium ${_[e]}`,
456
+ title: g(t.metadata) ?? void 0,
457
+ children: ge[e]
458
+ }) : null;
459
+ })(),
460
+ /* @__PURE__ */ m("span", {
416
461
  className: "ml-auto flex items-center gap-1 text-xs text-[var(--color-text-secondary)]",
417
- children: [/* @__PURE__ */ v(u, { className: "size-3" }), Se(t.createdAt)]
462
+ children: [/* @__PURE__ */ p(ae, { className: "size-3" }), x(t.createdAt)]
418
463
  })
419
464
  ]
420
465
  }),
421
- t.releaseNotes && /* @__PURE__ */ v("div", {
466
+ t.releaseNotes && /* @__PURE__ */ p("div", {
422
467
  className: "text-sm text-[var(--color-text-secondary)]",
423
- children: /* @__PURE__ */ v(n, { children: t.releaseNotes })
468
+ children: /* @__PURE__ */ p(n, { children: t.releaseNotes })
424
469
  }),
425
- /* @__PURE__ */ y("div", {
470
+ e.appType === "NODE" && g(t.metadata) && /* @__PURE__ */ p("p", {
471
+ className: "text-xs text-[var(--color-status-error-text)]",
472
+ children: g(t.metadata)
473
+ }),
474
+ /* @__PURE__ */ m("div", {
426
475
  className: "flex flex-wrap gap-2",
427
- children: [t.packageUrl && /* @__PURE__ */ y("button", {
428
- type: "button",
429
- onClick: () => void Fe(t.id),
430
- disabled: X === t.id,
431
- className: "inline-flex items-center gap-1.5 rounded-md border border-[var(--color-border-default)] bg-[var(--color-surface-default)] px-3 py-1.5 text-xs font-medium text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-hover)] transition-colors disabled:opacity-50",
432
- children: [
433
- X === t.id ? /* @__PURE__ */ v(h, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ v(d, { className: "size-3.5" }),
434
- "Download Package",
435
- t.packageSize != null && /* @__PURE__ */ y("span", {
436
- className: "text-[var(--color-text-muted)]",
437
- children: [
438
- "(",
439
- t.packageSize,
440
- " bytes)"
441
- ]
442
- })
443
- ]
444
- }), t.manifest && /* @__PURE__ */ y("button", {
445
- type: "button",
446
- onClick: () => B(z === t.id ? null : t.id),
447
- className: "inline-flex items-center gap-1.5 rounded-md border border-[var(--color-border-default)] bg-[var(--color-surface-default)] px-3 py-1.5 text-xs font-medium text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-hover)] transition-colors",
448
- children: [
449
- /* @__PURE__ */ v(p, { className: "size-3.5" }),
450
- z === t.id ? "Hide manifest" : "View manifest",
451
- z === t.id ? /* @__PURE__ */ v(l, { className: "size-3" }) : /* @__PURE__ */ v(c, { className: "size-3" })
452
- ]
453
- })]
476
+ children: [
477
+ e.appType === "NODE" && h(t.metadata) !== "READY" && /* @__PURE__ */ m("button", {
478
+ type: "button",
479
+ onClick: () => void Ue(t.id),
480
+ disabled: W === t.id,
481
+ className: "inline-flex items-center gap-1.5 rounded-md border border-[var(--color-border-accent)] bg-[var(--color-surface-default)] px-3 py-1.5 text-xs font-medium text-[var(--color-text-accent)] hover:bg-[var(--color-surface-accent-muted)] transition-colors disabled:opacity-50",
482
+ children: [W === t.id ? /* @__PURE__ */ p(u, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ p(u, { className: "size-3.5" }), "Retry Deployment"]
483
+ }),
484
+ e.appType === "NODE" && /* @__PURE__ */ m("button", {
485
+ type: "button",
486
+ onClick: () => v(`${S}/sandbox-builds?versionId=${t.id}`),
487
+ className: "inline-flex items-center gap-1.5 rounded-md border border-[var(--color-border-default)] bg-[var(--color-surface-default)] px-3 py-1.5 text-xs font-medium text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-hover)] transition-colors",
488
+ children: [/* @__PURE__ */ p(le, { className: "size-3.5" }), "View build history"]
489
+ }),
490
+ t.packageUrl && /* @__PURE__ */ m("button", {
491
+ type: "button",
492
+ onClick: () => void We(t.id),
493
+ disabled: X === t.id,
494
+ className: "inline-flex items-center gap-1.5 rounded-md border border-[var(--color-border-default)] bg-[var(--color-surface-default)] px-3 py-1.5 text-xs font-medium text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-hover)] transition-colors disabled:opacity-50",
495
+ children: [
496
+ X === t.id ? /* @__PURE__ */ p(u, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ p(s, { className: "size-3.5" }),
497
+ "Download Package",
498
+ t.packageSize != null && /* @__PURE__ */ m("span", {
499
+ className: "text-[var(--color-text-muted)]",
500
+ children: [
501
+ "(",
502
+ t.packageSize,
503
+ " bytes)"
504
+ ]
505
+ })
506
+ ]
507
+ }),
508
+ t.manifest && /* @__PURE__ */ m("button", {
509
+ type: "button",
510
+ onClick: () => L(I === t.id ? null : t.id),
511
+ className: "inline-flex items-center gap-1.5 rounded-md border border-[var(--color-border-default)] bg-[var(--color-surface-default)] px-3 py-1.5 text-xs font-medium text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-hover)] transition-colors",
512
+ children: [
513
+ /* @__PURE__ */ p(c, { className: "size-3.5" }),
514
+ I === t.id ? "Hide manifest" : "View manifest",
515
+ I === t.id ? /* @__PURE__ */ p(ie, { className: "size-3" }) : /* @__PURE__ */ p(re, { className: "size-3" })
516
+ ]
517
+ })
518
+ ]
454
519
  }),
455
- z === t.id && t.manifest && /* @__PURE__ */ v("pre", {
520
+ I === t.id && t.manifest && /* @__PURE__ */ p("pre", {
456
521
  className: "overflow-x-auto rounded-lg border border-[var(--color-border-seam)] bg-[var(--color-surface-default)] p-4 text-[11px] leading-relaxed text-[var(--color-text-primary)] max-h-48 overflow-y-auto",
457
522
  children: JSON.stringify(t.manifest, null, 2)
458
523
  }),
459
- Oe === t.id && ke === e.id && /* @__PURE__ */ y("div", {
524
+ Le === t.id && Re === e.id && /* @__PURE__ */ m("div", {
460
525
  className: "rounded-lg border border-[var(--color-border-danger)] bg-[var(--color-surface-danger-muted)]/30 p-3 space-y-2",
461
526
  children: [
462
- /* @__PURE__ */ v("p", {
527
+ /* @__PURE__ */ p("p", {
463
528
  className: "text-xs font-semibold text-[var(--color-text-danger)]",
464
529
  children: "Rejection reason (the developer will see this)"
465
530
  }),
466
- /* @__PURE__ */ v("textarea", {
467
- value: q,
468
- onChange: (e) => J(e.target.value),
531
+ /* @__PURE__ */ p("textarea", {
532
+ value: K,
533
+ onChange: (e) => q(e.target.value),
469
534
  rows: 2,
470
535
  className: "w-full rounded-md border border-[var(--color-border-default)] bg-[var(--color-surface-default)] px-3 py-2 text-sm text-[var(--color-text-primary)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)] resize-none",
471
536
  placeholder: "Be specific — what needs to change before this version can be approved…"
472
537
  }),
473
- /* @__PURE__ */ y("div", {
538
+ /* @__PURE__ */ m("div", {
474
539
  className: "flex gap-2 justify-end",
475
- children: [/* @__PURE__ */ v("button", {
540
+ children: [/* @__PURE__ */ p("button", {
476
541
  type: "button",
477
542
  onClick: () => {
478
- K(null), J(""), Y(null);
543
+ G(null), q(""), J(null);
479
544
  },
480
545
  className: "rounded-md border border-[var(--color-border-default)] bg-[var(--color-surface-default)] px-3 py-1.5 text-xs font-medium text-[var(--color-text-primary)] hover:bg-[var(--color-surface-hover)] transition-colors",
481
546
  children: "Cancel"
482
- }), /* @__PURE__ */ v("button", {
547
+ }), /* @__PURE__ */ p("button", {
483
548
  type: "button",
484
- onClick: () => void Pe(t.id, e.id, q),
485
- disabled: !q.trim() || W === t.id,
549
+ onClick: () => void He(t.id, e.id, K),
550
+ disabled: !K.trim() || H === t.id,
486
551
  className: "rounded-md bg-[var(--color-surface-danger)] px-3 py-1.5 text-xs font-semibold text-[var(--color-text-on-danger)] hover:opacity-90 disabled:opacity-50 transition-opacity",
487
552
  children: "Submit rejection"
488
553
  })]
489
554
  })
490
555
  ]
491
556
  }),
492
- /* @__PURE__ */ y("div", {
557
+ /* @__PURE__ */ m("div", {
493
558
  className: "flex items-center gap-2",
494
- children: [/* @__PURE__ */ y("button", {
559
+ children: [/* @__PURE__ */ m("button", {
495
560
  type: "button",
496
- onClick: () => void Ne(t.id, e.id, ""),
497
- disabled: W === t.id,
561
+ onClick: () => void Ve(t.id, e.id, ""),
562
+ disabled: H === t.id,
498
563
  className: "inline-flex items-center gap-1.5 rounded-md bg-[var(--color-surface-success)] px-4 py-1.5 text-xs font-semibold text-[var(--color-text-on-success)] hover:opacity-90 disabled:opacity-50 transition-opacity",
499
- children: [W === t.id ? /* @__PURE__ */ v(h, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ v(s, { className: "size-3.5" }), "Approve version"]
500
- }), Oe !== t.id && /* @__PURE__ */ y("button", {
564
+ children: [H === t.id ? /* @__PURE__ */ p(u, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ p(ne, { className: "size-3.5" }), "Approve version"]
565
+ }), Le !== t.id && /* @__PURE__ */ m("button", {
501
566
  type: "button",
502
567
  onClick: () => {
503
- K(t.id), J(""), Y(e.id);
568
+ G(t.id), q(""), J(e.id);
504
569
  },
505
- disabled: W === t.id,
570
+ disabled: H === t.id,
506
571
  className: "inline-flex items-center gap-1.5 rounded-md border border-[var(--color-border-danger)] bg-[var(--color-surface-danger-muted)] px-4 py-1.5 text-xs font-semibold text-[var(--color-text-danger)] hover:bg-[var(--color-surface-danger)] hover:text-[var(--color-text-on-danger)] disabled:opacity-50 transition-colors",
507
- children: [/* @__PURE__ */ v(g, { className: "size-3.5" }), "Reject version"]
572
+ children: [/* @__PURE__ */ p(d, { className: "size-3.5" }), "Reject version"]
508
573
  })]
509
574
  })
510
575
  ]
@@ -512,63 +577,71 @@ var w = () => {
512
577
  })]
513
578
  }, e.id);
514
579
  })
515
- }) : k && T.length === 0 ? /* @__PURE__ */ v("div", {
580
+ }) : E && C.length === 0 ? /* @__PURE__ */ p("div", {
516
581
  className: "flex items-center justify-center py-24",
517
- children: /* @__PURE__ */ v(h, { className: "size-6 animate-spin text-[var(--color-text-muted)]" })
518
- }) : T.length === 0 ? /* @__PURE__ */ v(b, {
519
- illustration: F === "PENDING_REVIEW" ? "empty-notifications" : "empty-data",
520
- title: F === "PENDING_REVIEW" ? "Queue is clear" : "No products match this filter",
521
- description: F === "PENDING_REVIEW" ? "No submissions are awaiting review. New submissions will appear here as publishers send them in." : "Nothing matches the current filter. Try switching to a different status above."
522
- }) : /* @__PURE__ */ v("ul", {
582
+ children: /* @__PURE__ */ p(u, { className: "size-6 animate-spin text-[var(--color-text-muted)]" })
583
+ }) : C.length === 0 ? /* @__PURE__ */ p(me, {
584
+ illustration: M === "PENDING_REVIEW" ? "empty-notifications" : "empty-data",
585
+ title: M === "PENDING_REVIEW" ? "Queue is clear" : "No products match this filter",
586
+ description: M === "PENDING_REVIEW" ? "No submissions are awaiting review. New submissions will appear here as publishers send them in." : "Nothing matches the current filter. Try switching to a different status above."
587
+ }) : /* @__PURE__ */ p("ul", {
523
588
  className: "space-y-3",
524
- children: T.map((e) => /* @__PURE__ */ y("li", {
589
+ children: C.map((e) => /* @__PURE__ */ m("li", {
525
590
  className: "overflow-hidden rounded-xl border border-[var(--color-border-seam)] bg-[var(--color-surface-raised)] shadow-[var(--shadow-elevation-1)] transition-[box-shadow,border-color] hover:border-[var(--color-border-strong)] hover:shadow-[var(--shadow-elevation-2)]",
526
591
  children: [
527
- /* @__PURE__ */ y("div", {
592
+ /* @__PURE__ */ m("div", {
528
593
  className: "flex items-start gap-4 p-5",
529
- children: [e.icon ? /* @__PURE__ */ v("img", {
594
+ children: [e.icon ? /* @__PURE__ */ p("img", {
530
595
  src: e.icon,
531
596
  alt: "",
532
597
  className: "size-14 shrink-0 rounded-xl object-cover shadow-sm"
533
- }) : /* @__PURE__ */ v("div", {
598
+ }) : /* @__PURE__ */ p("div", {
534
599
  className: "flex size-14 shrink-0 items-center justify-center rounded-xl bg-[var(--color-surface-muted)] text-sm font-bold text-[var(--color-text-muted)] uppercase",
535
600
  children: e.type.slice(0, 2)
536
- }), /* @__PURE__ */ y("div", {
601
+ }), /* @__PURE__ */ m("div", {
537
602
  className: "min-w-0 flex-1",
538
603
  children: [
539
- /* @__PURE__ */ y("div", {
604
+ /* @__PURE__ */ m("div", {
540
605
  className: "flex flex-wrap items-center gap-2",
541
606
  children: [
542
- /* @__PURE__ */ v("h3", {
607
+ /* @__PURE__ */ p("h3", {
543
608
  className: "text-base font-semibold text-[var(--color-text-primary)]",
544
609
  children: e.name
545
610
  }),
546
- /* @__PURE__ */ v("span", {
547
- className: `rounded-full px-2 py-0.5 text-[11px] font-semibold uppercase tracking-wide ${be(e.type)}`,
611
+ /* @__PURE__ */ p("span", {
612
+ className: `rounded-full px-2 py-0.5 text-[11px] font-semibold uppercase tracking-wide ${ke(e.type)}`,
548
613
  children: e.type
549
614
  }),
550
- /* @__PURE__ */ v("span", {
551
- className: `rounded-full px-2 py-0.5 text-[11px] font-medium ${xe(e.status)}`,
615
+ /* @__PURE__ */ p("span", {
616
+ className: `rounded-full px-2 py-0.5 text-[11px] font-medium ${Ae(e.status)}`,
552
617
  children: e.status.replace("_", " ")
553
- })
618
+ }),
619
+ e.type === "NODE" && e.productId && (() => {
620
+ let t = h(Y[e.productId]?.metadata);
621
+ return t ? /* @__PURE__ */ p("span", {
622
+ className: `rounded-full px-2 py-0.5 text-[11px] font-medium ${_[t]}`,
623
+ title: g(Y[e.productId]?.metadata) ?? void 0,
624
+ children: ge[t]
625
+ }) : null;
626
+ })()
554
627
  ]
555
628
  }),
556
- /* @__PURE__ */ y("div", {
629
+ /* @__PURE__ */ m("div", {
557
630
  className: "mt-1 flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-[var(--color-text-secondary)]",
558
631
  children: [
559
- /* @__PURE__ */ y("span", {
632
+ /* @__PURE__ */ m("span", {
560
633
  className: "flex items-center gap-1",
561
- children: [/* @__PURE__ */ v(re, { className: "size-3" }), /* @__PURE__ */ v("span", {
634
+ children: [/* @__PURE__ */ p(ce, { className: "size-3" }), /* @__PURE__ */ p("span", {
562
635
  className: "font-mono",
563
636
  children: e.slug
564
637
  })]
565
638
  }),
566
- e.publisher && /* @__PURE__ */ y("span", {
639
+ e.publisher && /* @__PURE__ */ m("span", {
567
640
  className: "flex items-center gap-1",
568
641
  children: [
569
- /* @__PURE__ */ v(se, { className: "size-3" }),
642
+ /* @__PURE__ */ p(pe, { className: "size-3" }),
570
643
  e.publisher.name,
571
- e.publisher.email && /* @__PURE__ */ y("span", {
644
+ e.publisher.email && /* @__PURE__ */ m("span", {
572
645
  className: "text-[var(--color-text-muted)]",
573
646
  children: [
574
647
  "(",
@@ -578,126 +651,137 @@ var w = () => {
578
651
  })
579
652
  ]
580
653
  }),
581
- e.submittedAt && /* @__PURE__ */ y("span", {
654
+ e.submittedAt && /* @__PURE__ */ m("span", {
582
655
  className: "flex items-center gap-1",
583
- children: [/* @__PURE__ */ v(u, { className: "size-3" }), Se(e.submittedAt)]
656
+ children: [/* @__PURE__ */ p(ae, { className: "size-3" }), x(e.submittedAt)]
584
657
  }),
585
- /* @__PURE__ */ y("span", {
658
+ /* @__PURE__ */ m("span", {
586
659
  className: "flex items-center gap-1",
587
- children: [/* @__PURE__ */ v(oe, { className: "size-3" }), t(e.price, e.currency, e.pricingModel)]
660
+ children: [/* @__PURE__ */ p(fe, { className: "size-3" }), t(e.price, e.currency, e.pricingModel)]
588
661
  })
589
662
  ]
590
663
  }),
591
- e.description && /* @__PURE__ */ v("p", {
664
+ e.description && /* @__PURE__ */ p("p", {
592
665
  className: "mt-2 line-clamp-2 text-sm text-[var(--color-text-secondary)]",
593
666
  children: e.description
667
+ }),
668
+ e.type === "NODE" && e.productId && g(Y[e.productId]?.metadata) && /* @__PURE__ */ p("p", {
669
+ className: "mt-2 text-xs text-[var(--color-status-error-text)]",
670
+ children: g(Y[e.productId]?.metadata)
594
671
  })
595
672
  ]
596
673
  })]
597
674
  }),
598
- /* @__PURE__ */ y("div", {
675
+ /* @__PURE__ */ m("div", {
599
676
  className: "flex flex-wrap items-center justify-between gap-2 border-t border-[var(--color-border-seam)] bg-[var(--color-surface-muted)] px-5 py-3",
600
- children: [/* @__PURE__ */ y("div", {
677
+ children: [/* @__PURE__ */ m("div", {
601
678
  className: "flex flex-wrap items-center gap-2",
602
679
  children: [
603
- e.productId && /* @__PURE__ */ y("a", {
680
+ e.productId && /* @__PURE__ */ m("a", {
604
681
  href: `/devportal/apps/${e.productId}`,
605
682
  target: "_blank",
606
683
  rel: "noreferrer",
607
684
  className: "inline-flex items-center gap-1.5 rounded-md border border-[var(--color-border-default)] bg-[var(--color-surface-default)] px-3 py-1.5 text-xs font-medium text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)] transition-colors",
608
- children: [/* @__PURE__ */ v(f, { className: "size-3.5" }), "Devportal"]
685
+ children: [/* @__PURE__ */ p(oe, { className: "size-3.5" }), "Devportal"]
609
686
  }),
610
- C.has(e.type) && (() => {
611
- let t = e.productId ? Ae[e.productId]?.versionId ?? U.find((t) => t.id === e.productId)?.versions?.edges?.[0]?.node?.id : void 0;
687
+ b.has(e.type) && (() => {
688
+ let t = e.productId ? Y[e.productId]?.versionId ?? B.find((t) => t.id === e.productId)?.versions?.edges?.[0]?.node?.id : void 0;
612
689
  if (!t && !e.zipFileUrl) return null;
613
690
  let n = X === t;
614
- return t ? /* @__PURE__ */ y("button", {
691
+ return t ? /* @__PURE__ */ m("button", {
615
692
  type: "button",
616
- onClick: () => void Fe(t),
693
+ onClick: () => void We(t),
617
694
  disabled: n,
618
695
  className: "inline-flex items-center gap-1.5 rounded-md border border-[var(--color-border-default)] bg-[var(--color-surface-default)] px-3 py-1.5 text-xs font-medium text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)] transition-colors disabled:opacity-50",
619
- children: [n ? /* @__PURE__ */ v(h, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ v(d, { className: "size-3.5" }), "Download Package"]
620
- }) : /* @__PURE__ */ y("a", {
696
+ children: [n ? /* @__PURE__ */ p(u, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ p(s, { className: "size-3.5" }), "Download Package"]
697
+ }) : /* @__PURE__ */ m("a", {
621
698
  href: e.zipFileUrl,
622
699
  download: !0,
623
700
  target: "_blank",
624
701
  rel: "noreferrer",
625
702
  className: "inline-flex items-center gap-1.5 rounded-md border border-[var(--color-border-default)] bg-[var(--color-surface-default)] px-3 py-1.5 text-xs font-medium text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)] transition-colors",
626
- children: [/* @__PURE__ */ v(d, { className: "size-3.5" }), "Download Package"]
703
+ children: [/* @__PURE__ */ p(s, { className: "size-3.5" }), "Download Package"]
627
704
  });
628
705
  })(),
629
- C.has(e.type) && /* @__PURE__ */ y("button", {
706
+ e.type === "NODE" && e.productId && Y[e.productId]?.versionId && h(Y[e.productId]?.metadata) !== "READY" && /* @__PURE__ */ m("button", {
707
+ type: "button",
708
+ onClick: () => void Ue(Y[e.productId].versionId),
709
+ disabled: W === Y[e.productId]?.versionId,
710
+ className: "inline-flex items-center gap-1.5 rounded-md border border-[var(--color-border-accent)] bg-[var(--color-surface-default)] px-3 py-1.5 text-xs font-medium text-[var(--color-text-accent)] hover:bg-[var(--color-surface-accent-muted)] transition-colors disabled:opacity-50",
711
+ children: [W === Y[e.productId]?.versionId ? /* @__PURE__ */ p(u, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ p(u, { className: "size-3.5" }), "Retry Deployment"]
712
+ }),
713
+ b.has(e.type) && /* @__PURE__ */ m("button", {
630
714
  type: "button",
631
- onClick: () => H(e),
715
+ onClick: () => z(e),
632
716
  className: "inline-flex items-center gap-1.5 rounded-md border border-[var(--color-border-accent)] bg-[var(--color-surface-default)] px-3 py-1.5 text-xs font-medium text-[var(--color-text-accent)] hover:bg-[var(--color-surface-accent-muted)] transition-colors",
633
- children: [/* @__PURE__ */ v(ne, { className: "size-3.5" }), "Test in workspace"]
717
+ children: [/* @__PURE__ */ p(se, { className: "size-3.5" }), "Test in workspace"]
634
718
  }),
635
- /* @__PURE__ */ y("button", {
719
+ /* @__PURE__ */ m("button", {
636
720
  type: "button",
637
- onClick: () => B(z === e.id ? null : e.id),
721
+ onClick: () => L(I === e.id ? null : e.id),
638
722
  className: "inline-flex items-center gap-1.5 rounded-md border border-[var(--color-border-default)] bg-[var(--color-surface-default)] px-3 py-1.5 text-xs font-medium text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-hover)] transition-colors",
639
723
  children: [
640
- /* @__PURE__ */ v(p, { className: "size-3.5" }),
641
- z === e.id ? "Hide details" : "Inspect details",
642
- z === e.id ? /* @__PURE__ */ v(l, { className: "size-3" }) : /* @__PURE__ */ v(c, { className: "size-3" })
724
+ /* @__PURE__ */ p(c, { className: "size-3.5" }),
725
+ I === e.id ? "Hide details" : "Inspect details",
726
+ I === e.id ? /* @__PURE__ */ p(ie, { className: "size-3" }) : /* @__PURE__ */ p(re, { className: "size-3" })
643
727
  ]
644
728
  })
645
729
  ]
646
- }), /* @__PURE__ */ y("div", {
730
+ }), /* @__PURE__ */ m("div", {
647
731
  className: "flex items-center gap-2",
648
732
  children: [
649
- e.status !== "PUBLISHED" && /* @__PURE__ */ y("button", {
733
+ e.status !== "PUBLISHED" && /* @__PURE__ */ m("button", {
650
734
  type: "button",
651
- onClick: () => void Ie(e.id),
652
- disabled: N === e.id,
735
+ onClick: () => void Ge(e.id),
736
+ disabled: A === e.id,
653
737
  className: "inline-flex items-center gap-1.5 rounded-md bg-[var(--color-surface-success)] px-4 py-1.5 text-xs font-semibold text-[var(--color-text-on-success)] hover:opacity-90 disabled:opacity-50 transition-opacity",
654
- children: [/* @__PURE__ */ v(s, { className: "size-3.5" }), "Approve"]
738
+ children: [/* @__PURE__ */ p(ne, { className: "size-3.5" }), "Approve"]
655
739
  }),
656
- e.status === "PENDING_REVIEW" && /* @__PURE__ */ y("button", {
740
+ e.status === "PENDING_REVIEW" && /* @__PURE__ */ m("button", {
657
741
  type: "button",
658
742
  onClick: () => {
659
- I(e.id), R("");
743
+ N(e.id), F("");
660
744
  },
661
- disabled: N === e.id,
745
+ disabled: A === e.id,
662
746
  className: "inline-flex items-center gap-1.5 rounded-md border border-[var(--color-border-danger)] bg-[var(--color-surface-danger-muted)] px-4 py-1.5 text-xs font-semibold text-[var(--color-text-danger)] hover:bg-[var(--color-surface-danger)] hover:text-[var(--color-text-on-danger)] disabled:opacity-50 transition-colors",
663
- children: [/* @__PURE__ */ v(g, { className: "size-3.5" }), "Reject"]
747
+ children: [/* @__PURE__ */ p(d, { className: "size-3.5" }), "Reject"]
664
748
  }),
665
- e.status === "PUBLISHED" && /* @__PURE__ */ y("button", {
749
+ e.status === "PUBLISHED" && /* @__PURE__ */ m("button", {
666
750
  type: "button",
667
751
  onClick: () => {
668
- I(e.id), R("");
752
+ N(e.id), F("");
669
753
  },
670
- disabled: N === e.id,
754
+ disabled: A === e.id,
671
755
  className: "inline-flex items-center gap-1.5 rounded-md border border-[var(--color-border-warning)] bg-[var(--color-surface-warning-muted)] px-4 py-1.5 text-xs font-semibold text-[var(--color-text-warning)] hover:bg-[var(--color-surface-warning)] hover:text-[var(--color-text-on-warning)] disabled:opacity-50 transition-colors",
672
- children: [/* @__PURE__ */ v(g, { className: "size-3.5" }), "Delist"]
756
+ children: [/* @__PURE__ */ p(d, { className: "size-3.5" }), "Delist"]
673
757
  })
674
758
  ]
675
759
  })]
676
760
  }),
677
- z === e.id && /* @__PURE__ */ y("div", {
761
+ I === e.id && /* @__PURE__ */ m("div", {
678
762
  className: "border-t border-[var(--color-border-seam)] bg-[var(--color-surface-muted)] p-5 space-y-5",
679
763
  children: [
680
- /* @__PURE__ */ y("div", {
764
+ /* @__PURE__ */ m("div", {
681
765
  className: "grid grid-cols-2 gap-x-8 gap-y-3 text-xs sm:grid-cols-3",
682
766
  children: [
683
- /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("dt", {
767
+ /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("dt", {
684
768
  className: "font-medium text-[var(--color-text-secondary)]",
685
769
  children: "Store product ID"
686
- }), /* @__PURE__ */ v("dd", {
770
+ }), /* @__PURE__ */ p("dd", {
687
771
  className: "mt-0.5 font-mono text-[var(--color-text-primary)] break-all",
688
772
  children: e.id
689
773
  })] }),
690
- /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("dt", {
774
+ /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("dt", {
691
775
  className: "font-medium text-[var(--color-text-secondary)]",
692
776
  children: "Slug"
693
- }), /* @__PURE__ */ v("dd", {
777
+ }), /* @__PURE__ */ p("dd", {
694
778
  className: "mt-0.5 font-mono text-[var(--color-text-primary)]",
695
779
  children: e.slug
696
780
  })] }),
697
- /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("dt", {
781
+ /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("dt", {
698
782
  className: "font-medium text-[var(--color-text-secondary)]",
699
783
  children: "Type / Nature"
700
- }), /* @__PURE__ */ y("dd", {
784
+ }), /* @__PURE__ */ m("dd", {
701
785
  className: "mt-0.5 text-[var(--color-text-primary)]",
702
786
  children: [
703
787
  e.type,
@@ -705,22 +789,22 @@ var w = () => {
705
789
  e.nature
706
790
  ]
707
791
  })] }),
708
- e.category && /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("dt", {
792
+ e.category && /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("dt", {
709
793
  className: "font-medium text-[var(--color-text-secondary)]",
710
794
  children: "Category"
711
- }), /* @__PURE__ */ v("dd", {
795
+ }), /* @__PURE__ */ p("dd", {
712
796
  className: "mt-0.5 text-[var(--color-text-primary)]",
713
797
  children: e.category
714
798
  })] }),
715
- /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("dt", {
799
+ /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("dt", {
716
800
  className: "font-medium text-[var(--color-text-secondary)]",
717
801
  children: "Pricing"
718
- }), /* @__PURE__ */ y("dd", {
802
+ }), /* @__PURE__ */ m("dd", {
719
803
  className: "mt-0.5 text-[var(--color-text-primary)]",
720
804
  children: [
721
805
  t(e.price, e.currency, e.pricingModel),
722
806
  " ",
723
- /* @__PURE__ */ y("span", {
807
+ /* @__PURE__ */ m("span", {
724
808
  className: "text-[var(--color-text-muted)]",
725
809
  children: [
726
810
  "(",
@@ -730,81 +814,81 @@ var w = () => {
730
814
  })
731
815
  ]
732
816
  })] }),
733
- e.productId && /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("dt", {
817
+ e.productId && /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("dt", {
734
818
  className: "font-medium text-[var(--color-text-secondary)]",
735
819
  children: "Devportal app ID"
736
- }), /* @__PURE__ */ v("dd", {
820
+ }), /* @__PURE__ */ p("dd", {
737
821
  className: "mt-0.5 font-mono text-[var(--color-text-primary)] break-all",
738
822
  children: e.productId
739
823
  })] }),
740
- e.submittedBy && /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("dt", {
824
+ e.submittedBy && /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("dt", {
741
825
  className: "font-medium text-[var(--color-text-secondary)]",
742
826
  children: "Submitted by (actor)"
743
- }), /* @__PURE__ */ v("dd", {
827
+ }), /* @__PURE__ */ p("dd", {
744
828
  className: "mt-0.5 font-mono text-[var(--color-text-primary)] break-all",
745
829
  children: e.submittedBy
746
830
  })] })
747
831
  ]
748
832
  }),
749
- e.requiredPermissions && e.requiredPermissions.length > 0 && /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ y("h4", {
833
+ e.requiredPermissions && e.requiredPermissions.length > 0 && /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ m("h4", {
750
834
  className: "mb-2 flex items-center gap-1.5 text-xs font-semibold text-[var(--color-text-secondary)] uppercase tracking-wide",
751
- children: [/* @__PURE__ */ v(ae, { className: "size-3.5 text-[var(--color-status-success-text)]" }), "Required Permissions"]
752
- }), /* @__PURE__ */ v("div", {
835
+ children: [/* @__PURE__ */ p(de, { className: "size-3.5 text-[var(--color-status-success-text)]" }), "Required Permissions"]
836
+ }), /* @__PURE__ */ p("div", {
753
837
  className: "flex flex-wrap gap-1.5",
754
- children: e.requiredPermissions.map((e) => /* @__PURE__ */ v("span", {
838
+ children: e.requiredPermissions.map((e) => /* @__PURE__ */ p("span", {
755
839
  className: "inline-flex items-center gap-1 rounded-md bg-[var(--color-surface-default)] border border-[var(--color-border-seam)] px-2 py-1 text-xs font-mono text-[var(--color-text-primary)]",
756
840
  children: e
757
841
  }, e))
758
842
  })] }),
759
- e.manifest && /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ y("h4", {
843
+ e.manifest && /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ m("h4", {
760
844
  className: "mb-2 flex items-center gap-1.5 text-xs font-semibold text-[var(--color-text-secondary)] uppercase tracking-wide",
761
- children: [/* @__PURE__ */ v(p, { className: "size-3.5" }), "Manifest"]
762
- }), /* @__PURE__ */ v("pre", {
845
+ children: [/* @__PURE__ */ p(c, { className: "size-3.5" }), "Manifest"]
846
+ }), /* @__PURE__ */ p("pre", {
763
847
  className: "overflow-x-auto rounded-lg border border-[var(--color-border-seam)] bg-[var(--color-surface-default)] p-4 text-[11px] leading-relaxed text-[var(--color-text-primary)] max-h-72 overflow-y-auto scrollbar-thin",
764
848
  children: JSON.stringify(e.manifest, null, 2)
765
849
  })] })
766
850
  ]
767
851
  }),
768
- we === e.id && /* @__PURE__ */ y("div", {
852
+ Ne === e.id && /* @__PURE__ */ m("div", {
769
853
  className: `border-t border-[var(--color-border-seam)] px-5 py-4 ${e.status === "PUBLISHED" ? "bg-[var(--color-surface-warning-muted)]/30" : "bg-[var(--color-surface-danger-muted)]/30"}`,
770
854
  children: [
771
- e.status === "PUBLISHED" ? /* @__PURE__ */ v("p", {
855
+ e.status === "PUBLISHED" ? /* @__PURE__ */ p("p", {
772
856
  className: "mb-2 text-xs font-semibold text-[var(--color-text-warning)]",
773
857
  children: "Delist — this removes the product from the store for new users. Existing installs keep working. Reason is optional."
774
- }) : /* @__PURE__ */ v("p", {
858
+ }) : /* @__PURE__ */ p("p", {
775
859
  className: "mb-2 text-xs font-semibold text-[var(--color-text-danger)]",
776
860
  children: "Reject — provide a reason (the publisher will see this)"
777
861
  }),
778
- /* @__PURE__ */ v("textarea", {
862
+ /* @__PURE__ */ p("textarea", {
779
863
  id: `reject-reason-${e.id}`,
780
864
  "aria-label": e.status === "PUBLISHED" ? "Delist reason" : "Rejection reason",
781
- value: L,
782
- onChange: (e) => R(e.target.value),
865
+ value: P,
866
+ onChange: (e) => F(e.target.value),
783
867
  rows: 3,
784
868
  required: e.status !== "PUBLISHED",
785
869
  "aria-required": e.status !== "PUBLISHED",
786
870
  className: "w-full rounded-lg border border-[var(--color-border-default)] bg-[var(--color-surface-default)] px-3 py-2 text-sm text-[var(--color-text-primary)] focus:border-[var(--color-border-accent)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)] resize-none",
787
871
  placeholder: e.status === "PUBLISHED" ? "Optional — reason for delisting…" : "Be specific — e.g. 'Manifest is missing the identity.version field' or 'ZIP file is empty'…"
788
872
  }),
789
- /* @__PURE__ */ y("div", {
873
+ /* @__PURE__ */ m("div", {
790
874
  className: "mt-2 flex items-center justify-end gap-2",
791
- children: [/* @__PURE__ */ v("button", {
875
+ children: [/* @__PURE__ */ p("button", {
792
876
  type: "button",
793
877
  onClick: () => {
794
- I(null), R("");
878
+ N(null), F("");
795
879
  },
796
880
  className: "rounded-md border border-[var(--color-border-default)] bg-[var(--color-surface-default)] px-3 py-1.5 text-xs font-medium text-[var(--color-text-primary)] hover:bg-[var(--color-surface-hover)] transition-colors",
797
881
  children: "Cancel"
798
- }), e.status === "PUBLISHED" ? /* @__PURE__ */ v("button", {
882
+ }), e.status === "PUBLISHED" ? /* @__PURE__ */ p("button", {
799
883
  type: "button",
800
- onClick: () => void Re(e.id),
801
- disabled: N === e.id,
884
+ onClick: () => void qe(e.id),
885
+ disabled: A === e.id,
802
886
  className: "rounded-md bg-[var(--color-surface-warning)] px-3 py-1.5 text-xs font-semibold text-[var(--color-text-on-warning)] hover:opacity-90 disabled:opacity-50 transition-opacity",
803
887
  children: "Confirm delist"
804
- }) : /* @__PURE__ */ v("button", {
888
+ }) : /* @__PURE__ */ p("button", {
805
889
  type: "button",
806
- onClick: () => void Le(e.id),
807
- disabled: !L.trim() || N === e.id,
890
+ onClick: () => void Ke(e.id),
891
+ disabled: !P.trim() || A === e.id,
808
892
  className: "rounded-md bg-[var(--color-surface-danger)] px-3 py-1.5 text-xs font-semibold text-[var(--color-text-on-danger)] hover:opacity-90 disabled:opacity-50 transition-opacity",
809
893
  children: "Submit rejection"
810
894
  })]
@@ -816,20 +900,20 @@ var w = () => {
816
900
  })
817
901
  ]
818
902
  }),
819
- V && /* @__PURE__ */ v(r, {
903
+ R && /* @__PURE__ */ p(r, {
820
904
  isOpen: !0,
821
- onClose: () => H(null),
905
+ onClose: () => z(null),
822
906
  app: {
823
- id: V.id,
824
- name: V.name,
825
- slug: V.slug,
826
- icon: V.icon ?? void 0,
827
- type: V.type,
828
- permissions: V.requiredPermissions?.length ? V.requiredPermissions : void 0
907
+ id: R.id,
908
+ name: R.name,
909
+ slug: R.slug,
910
+ icon: R.icon ?? void 0,
911
+ type: R.type,
912
+ permissions: R.requiredPermissions?.length ? R.requiredPermissions : void 0
829
913
  },
830
914
  purchaseState: "free",
831
915
  onInstallSuccess: () => {
832
- H(null);
916
+ z(null);
833
917
  },
834
918
  onInstallError: () => {}
835
919
  })
@@ -837,6 +921,6 @@ var w = () => {
837
921
  });
838
922
  };
839
923
  //#endregion
840
- export { w as AdminSubmissionsQueuePage };
924
+ export { S as AdminSubmissionsQueuePage };
841
925
 
842
926
  //# sourceMappingURL=AdminSubmissionsQueuePage.js.map