@burdenoff/microfe-store 2026.720.1 → 2026.720.3

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.
@@ -2,13 +2,14 @@ import { useStore as e } from "../providers/StoreProvider.js";
2
2
  import { formatPriceForModel as t } from "../utils/index.js";
3
3
  import { InstallAppModal as n } from "../components/InstallAppModal.js";
4
4
  import { useCallback as r, useEffect as i, useState as a } from "react";
5
- import { ArrowLeft as ee, Check as o, ChevronDown as s, ChevronUp as c, Clock as l, Download as u, ExternalLink as d, FileJson as f, FlaskConical as te, GitBranch as p, Hash as ne, PackageCheck as re, RefreshCw as m, ShieldCheck as ie, Tag as ae, User as oe, X as h } from "lucide-react";
5
+ import { Markdown as ee } from "@burdenoff/fe-libs/shared/components";
6
+ import { ArrowLeft as te, Check as o, ChevronDown as s, ChevronUp as c, Clock as l, Download as u, ExternalLink as d, FileJson as f, FlaskConical as ne, GitBranch as p, Hash as re, PackageCheck as ie, RefreshCw as m, ShieldCheck as ae, Tag as oe, User as se, X as h } from "lucide-react";
6
7
  import { graphqlFetch as g } from "@burdenoff/fe-libs/shared/graphql";
7
8
  import { jsx as _, jsxs as v } from "react/jsx-runtime";
8
- import { useNavigate as se } from "react-router-dom";
9
- import { IllustratedEmptyState as y, PagePurpose as ce } from "@burdenoff/fe-libs/ui";
9
+ import { useNavigate as ce } from "react-router-dom";
10
+ import { IllustratedEmptyState as y, PagePurpose as le } from "@burdenoff/fe-libs/ui";
10
11
  //#region src/pages/AdminSubmissionsQueuePage.tsx
11
- 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
+ var ue = "\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", de = "\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", fe = "\n mutation ApproveProduct($id: ID!, $notes: String) {\n approveProduct(id: $id, notes: $notes) {\n id\n status\n publishedAt\n }\n }\n", pe = "\n mutation RejectProduct($id: ID!, $reason: String!) {\n rejectProduct(id: $id, reason: $reason) {\n id\n status\n rejectedReason\n }\n }\n", me = "\n mutation DelistProduct($id: ID!, $reason: String) {\n delistProduct(id: $id, reason: $reason) {\n id\n status\n }\n }\n", he = "\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", ge = "\n mutation RefreshApplicationVersionPackageUrl($id: ID!) {\n refreshApplicationVersionPackageUrl(id: $id)\n }\n", _e = "\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", ve = "\n mutation AdminApproveApplicationVersion($id: ID!, $notes: String) {\n approveApplicationVersion(id: $id, notes: $notes) {\n id\n status\n }\n }\n", ye = "\n mutation AdminRejectApplicationVersion($id: ID!, $reason: String!) {\n rejectApplicationVersion(id: $id, reason: $reason) {\n id\n status\n }\n }\n", be = [
12
13
  {
13
14
  label: "Pending review",
14
15
  value: "PENDING_REVIEW"
@@ -46,10 +47,10 @@ var le = "\n query PendingReviewProducts($limit: Int, $offset: Int) {\n pend
46
47
  "DATASINK",
47
48
  "CONSOLE"
48
49
  ]);
49
- function be(e) {
50
+ function xe(e) {
50
51
  return b[e] ?? "bg-[var(--color-surface-muted)] text-[var(--color-text-secondary)]";
51
52
  }
52
- function xe(e) {
53
+ function Se(e) {
53
54
  return x[e] ?? "bg-[var(--color-surface-muted)] text-[var(--color-text-secondary)]";
54
55
  }
55
56
  function C(e) {
@@ -62,12 +63,12 @@ function C(e) {
62
63
  }) : "—";
63
64
  }
64
65
  var w = () => {
65
- let b = se(), { authToken: x, basePath: w } = e(), [T, E] = a([]), [D, O] = a(0), [k, A] = a(!1), [j, M] = a(null), [N, P] = a(null), [F, Se] = a("PENDING_REVIEW"), [Ce, I] = a(null), [L, R] = a(""), [z, B] = a(null), [V, H] = a(null), [U, we] = a([]), [W, Te] = a(0), [G, K] = a(null), [Ee, q] = a(null), [J, Y] = a(""), [De, X] = a(null), [Oe, ke] = a({}), [Z, Ae] = a(null), Q = r(async () => {
66
+ let b = ce(), { authToken: x, basePath: w } = e(), [T, E] = a([]), [D, O] = a(0), [k, A] = a(!1), [j, M] = a(null), [N, P] = a(null), [F, Ce] = a("PENDING_REVIEW"), [we, I] = a(null), [L, R] = a(""), [z, B] = a(null), [V, H] = a(null), [U, Te] = a([]), [Ee, De] = a(0), [W, G] = a(null), [Oe, K] = a(null), [q, J] = a(""), [ke, Y] = a(null), [Ae, je] = a({}), [X, Me] = a(null), Z = r(async () => {
66
67
  A(!0), M(null);
67
68
  try {
68
69
  let e = await g({
69
70
  gateway: "global",
70
- query: ge,
71
+ query: _e,
71
72
  variables: {
72
73
  limit: 50,
73
74
  offset: 0
@@ -75,18 +76,18 @@ var w = () => {
75
76
  authToken: x || void 0
76
77
  });
77
78
  if (e.errors?.length) throw Error(e.errors[0]?.message ?? "Failed to load version updates");
78
- we((e.data?.applicationsWithPendingVersions.edges ?? []).map((e) => e.node)), Te(e.data?.applicationsWithPendingVersions.totalCount ?? 0);
79
+ Te((e.data?.applicationsWithPendingVersions.edges ?? []).map((e) => e.node)), De(e.data?.applicationsWithPendingVersions.totalCount ?? 0);
79
80
  } catch (e) {
80
81
  M(e instanceof Error ? e.message : "Failed to load version updates");
81
82
  } finally {
82
83
  A(!1);
83
84
  }
84
- }, [x]), je = async (e, t, n) => {
85
- K(e), M(null);
85
+ }, [x]), Ne = async (e, t, n) => {
86
+ G(e), M(null);
86
87
  try {
87
88
  let t = await g({
88
89
  gateway: "global",
89
- query: _e,
90
+ query: ve,
90
91
  variables: {
91
92
  id: e,
92
93
  notes: n || null
@@ -94,22 +95,22 @@ var w = () => {
94
95
  authToken: x || void 0
95
96
  });
96
97
  if (t.errors?.length) throw Error(t.errors[0]?.message ?? "Approval failed");
97
- await Q();
98
+ await Z();
98
99
  } catch (e) {
99
100
  M(e instanceof Error ? e.message : "Approval failed");
100
101
  } finally {
101
- K(null);
102
+ G(null);
102
103
  }
103
- }, Me = async (e, t, n) => {
104
+ }, Pe = async (e, t, n) => {
104
105
  if (!n.trim()) {
105
106
  M("Rejection reason is required");
106
107
  return;
107
108
  }
108
- K(e), M(null);
109
+ G(e), M(null);
109
110
  try {
110
111
  let t = await g({
111
112
  gateway: "global",
112
- query: ve,
113
+ query: ye,
113
114
  variables: {
114
115
  id: e,
115
116
  reason: n.trim()
@@ -117,15 +118,15 @@ var w = () => {
117
118
  authToken: x || void 0
118
119
  });
119
120
  if (t.errors?.length) throw Error(t.errors[0]?.message ?? "Rejection failed");
120
- q(null), Y(""), X(null), await Q();
121
+ K(null), J(""), Y(null), await Z();
121
122
  } catch (e) {
122
123
  M(e instanceof Error ? e.message : "Rejection failed");
123
124
  } finally {
124
- K(null);
125
+ G(null);
125
126
  }
126
- }, $ = r(async (e) => {
127
+ }, Q = r(async (e) => {
127
128
  if (e === "VERSION_UPDATES") {
128
- await Q();
129
+ await Z();
129
130
  return;
130
131
  }
131
132
  A(!0), M(null);
@@ -133,7 +134,7 @@ var w = () => {
133
134
  if (e === "PENDING_REVIEW") {
134
135
  let e = await g({
135
136
  gateway: "global",
136
- query: le,
137
+ query: ue,
137
138
  variables: {
138
139
  limit: 100,
139
140
  offset: 0
@@ -145,7 +146,7 @@ var w = () => {
145
146
  } else {
146
147
  let t = await g({
147
148
  gateway: "global",
148
- query: ue,
149
+ query: de,
149
150
  variables: {
150
151
  limit: 100,
151
152
  offset: 0,
@@ -162,21 +163,21 @@ var w = () => {
162
163
  } finally {
163
164
  A(!1);
164
165
  }
165
- }, [x, Q]);
166
+ }, [x, Z]);
166
167
  i(() => {
167
- $(F);
168
- }, [$, F]), i(() => {
169
- Q();
170
- }, [Q]), i(() => {
168
+ Q(F);
169
+ }, [Q, F]), i(() => {
170
+ Z();
171
+ }, [Z]), i(() => {
171
172
  let e = T.filter((e) => S.has(e.type) && e.productId && !e.zipFileUrl);
172
173
  e.length !== 0 && (async () => {
173
174
  let t = await Promise.allSettled(e.map((e) => g({
174
175
  gateway: "global",
175
- query: me,
176
+ query: he,
176
177
  variables: { id: e.productId },
177
178
  authToken: x || void 0
178
179
  })));
179
- ke((n) => {
180
+ je((n) => {
180
181
  let r = { ...n };
181
182
  return t.forEach((t, n) => {
182
183
  if (t.status === "fulfilled") {
@@ -190,12 +191,12 @@ var w = () => {
190
191
  });
191
192
  })();
192
193
  }, [T, x]);
193
- let Ne = async (e) => {
194
- Ae(e);
194
+ let Fe = async (e) => {
195
+ Me(e);
195
196
  try {
196
197
  let t = (await g({
197
198
  gateway: "global",
198
- query: he,
199
+ query: ge,
199
200
  variables: { id: e },
200
201
  authToken: x || void 0
201
202
  })).data?.refreshApplicationVersionPackageUrl;
@@ -203,14 +204,14 @@ var w = () => {
203
204
  } catch (e) {
204
205
  M(e instanceof Error ? e.message : "Failed to refresh download URL");
205
206
  } finally {
206
- Ae(null);
207
+ Me(null);
207
208
  }
208
- }, Pe = async (e) => {
209
+ }, Ie = async (e) => {
209
210
  P(e), M(null);
210
211
  try {
211
212
  let t = await g({
212
213
  gateway: "global",
213
- query: de,
214
+ query: fe,
214
215
  variables: {
215
216
  id: e,
216
217
  notes: null
@@ -218,13 +219,13 @@ var w = () => {
218
219
  authToken: x || void 0
219
220
  });
220
221
  if (t.errors?.length) throw Error(t.errors[0]?.message ?? "Approval failed");
221
- await $(F);
222
+ await Q(F);
222
223
  } catch (e) {
223
224
  M(e instanceof Error ? e.message : "Approval failed");
224
225
  } finally {
225
226
  P(null);
226
227
  }
227
- }, Fe = async (e) => {
228
+ }, Le = async (e) => {
228
229
  if (!L.trim()) {
229
230
  M("Rejection reason is required");
230
231
  return;
@@ -233,7 +234,7 @@ var w = () => {
233
234
  try {
234
235
  let t = await g({
235
236
  gateway: "global",
236
- query: fe,
237
+ query: pe,
237
238
  variables: {
238
239
  id: e,
239
240
  reason: L.trim()
@@ -241,18 +242,18 @@ var w = () => {
241
242
  authToken: x || void 0
242
243
  });
243
244
  if (t.errors?.length) throw Error(t.errors[0]?.message ?? "Rejection failed");
244
- I(null), R(""), await $(F);
245
+ I(null), R(""), await Q(F);
245
246
  } catch (e) {
246
247
  M(e instanceof Error ? e.message : "Rejection failed");
247
248
  } finally {
248
249
  P(null);
249
250
  }
250
- }, Ie = async (e) => {
251
+ }, Re = async (e) => {
251
252
  P(e), M(null);
252
253
  try {
253
254
  let t = await g({
254
255
  gateway: "global",
255
- query: pe,
256
+ query: me,
256
257
  variables: {
257
258
  id: e,
258
259
  reason: L.trim() || void 0
@@ -260,13 +261,13 @@ var w = () => {
260
261
  authToken: x || void 0
261
262
  });
262
263
  if (t.errors?.length) throw Error(t.errors[0]?.message ?? "Delist failed");
263
- I(null), R(""), await $(F);
264
+ I(null), R(""), await Q(F);
264
265
  } catch (e) {
265
266
  M(e instanceof Error ? e.message : "Delist failed");
266
267
  } finally {
267
268
  P(null);
268
269
  }
269
- }, Le = T.filter((e) => e.status === "PENDING_REVIEW").length;
270
+ }, $ = T.filter((e) => e.status === "PENDING_REVIEW").length;
270
271
  return /* @__PURE__ */ v("div", {
271
272
  className: "min-h-screen bg-[var(--color-surface-default)]",
272
273
  children: [
@@ -283,10 +284,10 @@ var w = () => {
283
284
  type: "button",
284
285
  onClick: () => b(`${w}/dashboard`),
285
286
  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",
286
- children: [/* @__PURE__ */ _(ee, { className: "size-4 shrink-0" }), "Back"]
287
+ children: [/* @__PURE__ */ _(te, { className: "size-4 shrink-0" }), "Back"]
287
288
  }),
288
289
  /* @__PURE__ */ _("div", { className: "h-5 w-px bg-[var(--color-border-seam)]" }),
289
- /* @__PURE__ */ _(re, { className: "size-5 shrink-0 text-[var(--color-text-primary)]" }),
290
+ /* @__PURE__ */ _(ie, { className: "size-5 shrink-0 text-[var(--color-text-primary)]" }),
290
291
  /* @__PURE__ */ _("h1", {
291
292
  className: "text-lg font-semibold text-[var(--color-text-primary)] truncate",
292
293
  children: "Submission Queue"
@@ -298,26 +299,26 @@ var w = () => {
298
299
  ]
299
300
  }), /* @__PURE__ */ v("button", {
300
301
  type: "button",
301
- onClick: () => void $(F),
302
+ onClick: () => void Q(F),
302
303
  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",
303
304
  disabled: k,
304
305
  children: [/* @__PURE__ */ _(m, { className: `size-4 ${k ? "animate-spin" : ""}` }), "Refresh"]
305
306
  })]
306
307
  }), /* @__PURE__ */ _("div", {
307
308
  className: "mt-3 flex gap-1.5 flex-wrap",
308
- children: ye.map((e) => /* @__PURE__ */ v("button", {
309
+ children: be.map((e) => /* @__PURE__ */ v("button", {
309
310
  type: "button",
310
- onClick: () => Se(e.value),
311
+ onClick: () => Ce(e.value),
311
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)]"}`,
312
313
  children: [
313
314
  e.label,
314
- e.value === "PENDING_REVIEW" && Le > 0 && F !== "PENDING_REVIEW" && /* @__PURE__ */ _("span", {
315
+ e.value === "PENDING_REVIEW" && $ > 0 && F !== "PENDING_REVIEW" && /* @__PURE__ */ _("span", {
315
316
  className: "ml-1.5 rounded-full bg-[var(--color-status-warning-text)] px-1.5 py-0.5 text-[10px] text-white",
316
- children: Le
317
+ children: $
317
318
  }),
318
- e.value === "VERSION_UPDATES" && W > 0 && F !== "VERSION_UPDATES" && /* @__PURE__ */ _("span", {
319
+ e.value === "VERSION_UPDATES" && Ee > 0 && F !== "VERSION_UPDATES" && /* @__PURE__ */ _("span", {
319
320
  className: "ml-1.5 rounded-full bg-[var(--color-status-info-text)] px-1.5 py-0.5 text-[10px] text-white",
320
- children: W
321
+ children: Ee
321
322
  })
322
323
  ]
323
324
  }, e.value))
@@ -327,7 +328,7 @@ var w = () => {
327
328
  /* @__PURE__ */ v("main", {
328
329
  className: "mx-auto max-w-5xl space-y-4 p-6",
329
330
  children: [
330
- /* @__PURE__ */ _(ce, {
331
+ /* @__PURE__ */ _(le, {
331
332
  className: "mb-2",
332
333
  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."
333
334
  }),
@@ -417,7 +418,7 @@ var w = () => {
417
418
  })
418
419
  ]
419
420
  }),
420
- t.releaseNotes && /* @__PURE__ */ _("p", {
421
+ t.releaseNotes && /* @__PURE__ */ _(ee, {
421
422
  className: "text-sm text-[var(--color-text-secondary)]",
422
423
  children: t.releaseNotes
423
424
  }),
@@ -425,11 +426,11 @@ var w = () => {
425
426
  className: "flex flex-wrap gap-2",
426
427
  children: [t.packageUrl && /* @__PURE__ */ v("button", {
427
428
  type: "button",
428
- onClick: () => void Ne(t.id),
429
- disabled: Z === t.id,
429
+ onClick: () => void Fe(t.id),
430
+ disabled: X === t.id,
430
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",
431
432
  children: [
432
- Z === t.id ? /* @__PURE__ */ _(m, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ _(u, { className: "size-3.5" }),
433
+ X === t.id ? /* @__PURE__ */ _(m, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ _(u, { className: "size-3.5" }),
433
434
  "Download Package",
434
435
  t.packageSize != null && /* @__PURE__ */ v("span", {
435
436
  className: "text-[var(--color-text-muted)]",
@@ -455,7 +456,7 @@ var w = () => {
455
456
  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",
456
457
  children: JSON.stringify(t.manifest, null, 2)
457
458
  }),
458
- Ee === t.id && De === e.id && /* @__PURE__ */ v("div", {
459
+ Oe === t.id && ke === e.id && /* @__PURE__ */ v("div", {
459
460
  className: "rounded-lg border border-[var(--color-border-danger)] bg-[var(--color-surface-danger-muted)]/30 p-3 space-y-2",
460
461
  children: [
461
462
  /* @__PURE__ */ _("p", {
@@ -463,8 +464,8 @@ var w = () => {
463
464
  children: "Rejection reason (the developer will see this)"
464
465
  }),
465
466
  /* @__PURE__ */ _("textarea", {
466
- value: J,
467
- onChange: (e) => Y(e.target.value),
467
+ value: q,
468
+ onChange: (e) => J(e.target.value),
468
469
  rows: 2,
469
470
  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",
470
471
  placeholder: "Be specific — what needs to change before this version can be approved…"
@@ -474,14 +475,14 @@ var w = () => {
474
475
  children: [/* @__PURE__ */ _("button", {
475
476
  type: "button",
476
477
  onClick: () => {
477
- q(null), Y(""), X(null);
478
+ K(null), J(""), Y(null);
478
479
  },
479
480
  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",
480
481
  children: "Cancel"
481
482
  }), /* @__PURE__ */ _("button", {
482
483
  type: "button",
483
- onClick: () => void Me(t.id, e.id, J),
484
- disabled: !J.trim() || G === t.id,
484
+ onClick: () => void Pe(t.id, e.id, q),
485
+ disabled: !q.trim() || W === t.id,
485
486
  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",
486
487
  children: "Submit rejection"
487
488
  })]
@@ -492,16 +493,16 @@ var w = () => {
492
493
  className: "flex items-center gap-2",
493
494
  children: [/* @__PURE__ */ v("button", {
494
495
  type: "button",
495
- onClick: () => void je(t.id, e.id, ""),
496
- disabled: G === t.id,
496
+ onClick: () => void Ne(t.id, e.id, ""),
497
+ disabled: W === t.id,
497
498
  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",
498
- children: [G === t.id ? /* @__PURE__ */ _(m, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ _(o, { className: "size-3.5" }), "Approve version"]
499
- }), Ee !== t.id && /* @__PURE__ */ v("button", {
499
+ children: [W === t.id ? /* @__PURE__ */ _(m, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ _(o, { className: "size-3.5" }), "Approve version"]
500
+ }), Oe !== t.id && /* @__PURE__ */ v("button", {
500
501
  type: "button",
501
502
  onClick: () => {
502
- q(t.id), Y(""), X(e.id);
503
+ K(t.id), J(""), Y(e.id);
503
504
  },
504
- disabled: G === t.id,
505
+ disabled: W === t.id,
505
506
  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",
506
507
  children: [/* @__PURE__ */ _(h, { className: "size-3.5" }), "Reject version"]
507
508
  })]
@@ -543,11 +544,11 @@ var w = () => {
543
544
  children: e.name
544
545
  }),
545
546
  /* @__PURE__ */ _("span", {
546
- className: `rounded-full px-2 py-0.5 text-[11px] font-semibold uppercase tracking-wide ${be(e.type)}`,
547
+ className: `rounded-full px-2 py-0.5 text-[11px] font-semibold uppercase tracking-wide ${xe(e.type)}`,
547
548
  children: e.type
548
549
  }),
549
550
  /* @__PURE__ */ _("span", {
550
- className: `rounded-full px-2 py-0.5 text-[11px] font-medium ${xe(e.status)}`,
551
+ className: `rounded-full px-2 py-0.5 text-[11px] font-medium ${Se(e.status)}`,
551
552
  children: e.status.replace("_", " ")
552
553
  })
553
554
  ]
@@ -557,7 +558,7 @@ var w = () => {
557
558
  children: [
558
559
  /* @__PURE__ */ v("span", {
559
560
  className: "flex items-center gap-1",
560
- children: [/* @__PURE__ */ _(ne, { className: "size-3" }), /* @__PURE__ */ _("span", {
561
+ children: [/* @__PURE__ */ _(re, { className: "size-3" }), /* @__PURE__ */ _("span", {
561
562
  className: "font-mono",
562
563
  children: e.slug
563
564
  })]
@@ -565,7 +566,7 @@ var w = () => {
565
566
  e.publisher && /* @__PURE__ */ v("span", {
566
567
  className: "flex items-center gap-1",
567
568
  children: [
568
- /* @__PURE__ */ _(oe, { className: "size-3" }),
569
+ /* @__PURE__ */ _(se, { className: "size-3" }),
569
570
  e.publisher.name,
570
571
  e.publisher.email && /* @__PURE__ */ v("span", {
571
572
  className: "text-[var(--color-text-muted)]",
@@ -583,7 +584,7 @@ var w = () => {
583
584
  }),
584
585
  /* @__PURE__ */ v("span", {
585
586
  className: "flex items-center gap-1",
586
- children: [/* @__PURE__ */ _(ae, { className: "size-3" }), t(e.price, e.currency, e.pricingModel)]
587
+ children: [/* @__PURE__ */ _(oe, { className: "size-3" }), t(e.price, e.currency, e.pricingModel)]
587
588
  })
588
589
  ]
589
590
  }),
@@ -607,12 +608,12 @@ var w = () => {
607
608
  children: [/* @__PURE__ */ _(d, { className: "size-3.5" }), "Devportal"]
608
609
  }),
609
610
  S.has(e.type) && (() => {
610
- let t = e.productId ? Oe[e.productId]?.versionId ?? U.find((t) => t.id === e.productId)?.versions?.edges?.[0]?.node?.id : void 0;
611
+ let t = e.productId ? Ae[e.productId]?.versionId ?? U.find((t) => t.id === e.productId)?.versions?.edges?.[0]?.node?.id : void 0;
611
612
  if (!t && !e.zipFileUrl) return null;
612
- let n = Z === t;
613
+ let n = X === t;
613
614
  return t ? /* @__PURE__ */ v("button", {
614
615
  type: "button",
615
- onClick: () => void Ne(t),
616
+ onClick: () => void Fe(t),
616
617
  disabled: n,
617
618
  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",
618
619
  children: [n ? /* @__PURE__ */ _(m, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ _(u, { className: "size-3.5" }), "Download Package"]
@@ -629,7 +630,7 @@ var w = () => {
629
630
  type: "button",
630
631
  onClick: () => H(e),
631
632
  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",
632
- children: [/* @__PURE__ */ _(te, { className: "size-3.5" }), "Test in workspace"]
633
+ children: [/* @__PURE__ */ _(ne, { className: "size-3.5" }), "Test in workspace"]
633
634
  }),
634
635
  /* @__PURE__ */ v("button", {
635
636
  type: "button",
@@ -647,7 +648,7 @@ var w = () => {
647
648
  children: [
648
649
  e.status !== "PUBLISHED" && /* @__PURE__ */ v("button", {
649
650
  type: "button",
650
- onClick: () => void Pe(e.id),
651
+ onClick: () => void Ie(e.id),
651
652
  disabled: N === e.id,
652
653
  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",
653
654
  children: [/* @__PURE__ */ _(o, { className: "size-3.5" }), "Approve"]
@@ -747,7 +748,7 @@ var w = () => {
747
748
  }),
748
749
  e.requiredPermissions && e.requiredPermissions.length > 0 && /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ v("h4", {
749
750
  className: "mb-2 flex items-center gap-1.5 text-xs font-semibold text-[var(--color-text-secondary)] uppercase tracking-wide",
750
- children: [/* @__PURE__ */ _(ie, { className: "size-3.5 text-[var(--color-status-success-text)]" }), "Required Permissions"]
751
+ children: [/* @__PURE__ */ _(ae, { className: "size-3.5 text-[var(--color-status-success-text)]" }), "Required Permissions"]
751
752
  }), /* @__PURE__ */ _("div", {
752
753
  className: "flex flex-wrap gap-1.5",
753
754
  children: e.requiredPermissions.map((e) => /* @__PURE__ */ _("span", {
@@ -764,7 +765,7 @@ var w = () => {
764
765
  })] })
765
766
  ]
766
767
  }),
767
- Ce === e.id && /* @__PURE__ */ v("div", {
768
+ we === e.id && /* @__PURE__ */ v("div", {
768
769
  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"}`,
769
770
  children: [
770
771
  e.status === "PUBLISHED" ? /* @__PURE__ */ _("p", {
@@ -796,13 +797,13 @@ var w = () => {
796
797
  children: "Cancel"
797
798
  }), e.status === "PUBLISHED" ? /* @__PURE__ */ _("button", {
798
799
  type: "button",
799
- onClick: () => void Ie(e.id),
800
+ onClick: () => void Re(e.id),
800
801
  disabled: N === e.id,
801
802
  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",
802
803
  children: "Confirm delist"
803
804
  }) : /* @__PURE__ */ _("button", {
804
805
  type: "button",
805
- onClick: () => void Fe(e.id),
806
+ onClick: () => void Le(e.id),
806
807
  disabled: !L.trim() || N === e.id,
807
808
  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",
808
809
  children: "Submit rejection"