@burdenoff/microfe-devportal 2026.1014.1 → 2026.1026.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.
Files changed (40) hide show
  1. package/dist/devportal/components/PackageValidationPanel.d.ts +31 -0
  2. package/dist/devportal/components/PackageValidationPanel.d.ts.map +1 -0
  3. package/dist/devportal/components/PackageValidationPanel.js +104 -0
  4. package/dist/devportal/components/PackageValidationPanel.js.map +1 -0
  5. package/dist/devportal/components/index.d.ts +1 -0
  6. package/dist/devportal/components/index.d.ts.map +1 -1
  7. package/dist/devportal/components/index.js +1 -0
  8. package/dist/devportal/hooks/useSellerOrganization.d.ts.map +1 -1
  9. package/dist/devportal/hooks/useSellerOrganization.js +23 -22
  10. package/dist/devportal/hooks/useSellerOrganization.js.map +1 -1
  11. package/dist/devportal/pages/AdminReviewPage.d.ts.map +1 -1
  12. package/dist/devportal/pages/AdminReviewPage.js +192 -181
  13. package/dist/devportal/pages/AdminReviewPage.js.map +1 -1
  14. package/dist/devportal/pages/ApplicationVersionsPage.d.ts.map +1 -1
  15. package/dist/devportal/pages/ApplicationVersionsPage.js +117 -115
  16. package/dist/devportal/pages/ApplicationVersionsPage.js.map +1 -1
  17. package/dist/devportal/pages/CreatePhysicalItemPage.d.ts.map +1 -1
  18. package/dist/devportal/pages/CreatePhysicalItemPage.js +119 -118
  19. package/dist/devportal/pages/CreatePhysicalItemPage.js.map +1 -1
  20. package/dist/devportal/pages/EditPhysicalItemPage.d.ts.map +1 -1
  21. package/dist/devportal/pages/EditPhysicalItemPage.js +61 -60
  22. package/dist/devportal/pages/EditPhysicalItemPage.js.map +1 -1
  23. package/dist/devportal/pages/SellerDashboardPage.d.ts.map +1 -1
  24. package/dist/devportal/pages/SellerDashboardPage.js +142 -141
  25. package/dist/devportal/pages/SellerDashboardPage.js.map +1 -1
  26. package/dist/devportal/pages/SellerItemsPage.d.ts.map +1 -1
  27. package/dist/devportal/pages/SellerItemsPage.js +190 -189
  28. package/dist/devportal/pages/SellerItemsPage.js.map +1 -1
  29. package/dist/devportal/pages/SellerOrdersPage.d.ts.map +1 -1
  30. package/dist/devportal/pages/SellerOrdersPage.js +43 -42
  31. package/dist/devportal/pages/SellerOrdersPage.js.map +1 -1
  32. package/dist/devportal/utils/graphqlEndpoint.d.ts +6 -0
  33. package/dist/devportal/utils/graphqlEndpoint.d.ts.map +1 -0
  34. package/dist/devportal/utils/graphqlEndpoint.js +9 -0
  35. package/dist/devportal/utils/graphqlEndpoint.js.map +1 -0
  36. package/dist/generated/global-operations.d.ts +1 -0
  37. package/dist/generated/global-operations.d.ts.map +1 -1
  38. package/dist/generated/global-operations.js +1 -0
  39. package/dist/generated/global-operations.js.map +1 -1
  40. package/package.json +1 -1
@@ -10,17 +10,18 @@ import { ConfirmDialog as i } from "../components/ConfirmDialog.js";
10
10
  import { PermissionGuard as de } from "../components/PermissionGuard.js";
11
11
  import { MarkdownEditor as a } from "../components/MarkdownEditor.js";
12
12
  import { ManifestViewer as fe } from "../components/ManifestViewer.js";
13
+ import { PackageValidationPanel as pe } from "../components/PackageValidationPanel.js";
13
14
  import "../components/index.js";
14
15
  import { useDevportalPermission as o } from "../hooks/usePermission.js";
15
16
  import "../hooks/index.js";
16
- import { DEVPORTAL_PERMISSIONS as pe } from "../constants/permissions.js";
17
- import me from "../../node_modules/date-fns/format.js";
18
- import { usePackageUpload as he } from "../hooks/usePackageUpload.js";
19
- import { useCallback as s, useEffect as ge, useMemo as c, useRef as l, useState as u } from "react";
20
- import { AlertCircle as d, Archive as _e, CheckCircle as ve, Clock as ye, Loader2 as be, Package as xe, Plus as Se, Send as f, Upload as p, XCircle as Ce } from "lucide-react";
21
- import { useParams as we } from "react-router";
17
+ import { DEVPORTAL_PERMISSIONS as me } from "../constants/permissions.js";
18
+ import he from "../../node_modules/date-fns/format.js";
19
+ import { usePackageUpload as ge } from "../hooks/usePackageUpload.js";
20
+ import { useCallback as s, useEffect as _e, useMemo as c, useRef as l, useState as u } from "react";
21
+ import { AlertCircle as d, Archive as ve, CheckCircle as ye, Clock as be, Loader2 as xe, Package as Se, Plus as Ce, Send as f, Upload as p, XCircle as we } from "lucide-react";
22
+ import { useParams as Te } from "react-router";
22
23
  import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
23
- import { useI18n as Te } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
24
+ import { useI18n as Ee } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
24
25
  //#region src/devportal/pages/ApplicationVersionsPage.tsx
25
26
  var _ = (e) => {
26
27
  if (e.trim()) try {
@@ -30,11 +31,11 @@ var _ = (e) => {
30
31
  if (n && typeof n.version == "string" && n.version.trim()) return n.version.trim();
31
32
  if (typeof t.version == "string" && t.version.trim()) return t.version.trim();
32
33
  } catch {}
33
- }, Ee = () => {
34
- let { t: Ee } = Te(), v = (e, t) => {
35
- let n = Ee(e);
34
+ }, De = () => {
35
+ let { t: De } = Ee(), v = (e, t) => {
36
+ let n = De(e);
36
37
  return n === e ? t : n;
37
- }, { allowed: De } = o(pe.APP_VERSION_CREATE), { allowed: y } = o(pe.APP_VERSION_PUBLISH), { allowed: b } = o(pe.APP_VERSION_DEPRECATE), { appId: x } = we(), { workspacesGatewayUrl: Oe, authToken: ke, workspaceId: Ae, getWorkspaceToken: je } = e(), { upload: S, uploading: C, progress: Me, error: w } = he(Oe, ke, Ae, je), Ne = l(null), Pe = l(null), Fe = l(null), Ie = l(null), [Le, Re] = u(null), [ze, T] = u(null), [Be, E] = u(!1), [D, O] = u(null), [k, A] = u({
38
+ }, { allowed: Oe } = o(me.APP_VERSION_CREATE), { allowed: y } = o(me.APP_VERSION_PUBLISH), { allowed: b } = o(me.APP_VERSION_DEPRECATE), { appId: x } = Te(), { workspacesGatewayUrl: ke, authToken: Ae, workspaceId: je, getWorkspaceToken: Me } = e(), { upload: S, uploading: C, progress: Ne, error: w } = ge(ke, Ae, je, Me), Pe = l(null), Fe = l(null), Ie = l(null), Le = l(null), [Re, ze] = u(null), [Be, T] = u(null), [Ve, E] = u(!1), [D, O] = u(null), [k, A] = u({
38
39
  version: "",
39
40
  releaseNotes: "",
40
41
  changelog: "",
@@ -42,7 +43,7 @@ var _ = (e) => {
42
43
  packageSize: "",
43
44
  manifestJson: "",
44
45
  requiredScopes: ""
45
- }), [Ve, j] = u(null), [He, M] = u(null), [Ue, N] = u(null), [We, P] = u(null), [F, I] = u(/* @__PURE__ */ new Set()), [L, Ge] = u(null), [R, z] = u(""), Ke = s((e) => {
46
+ }), [He, j] = u(null), [Ue, M] = u(null), [We, N] = u(null), [Ge, P] = u(null), [F, I] = u(/* @__PURE__ */ new Set()), [L, Ke] = u(null), [R, z] = u(""), qe = s((e) => {
46
47
  let t = e.target.files?.[0];
47
48
  if (!t) return;
48
49
  let n = new FileReader();
@@ -54,10 +55,10 @@ var _ = (e) => {
54
55
  ...t,
55
56
  manifestJson: n,
56
57
  ...e ? { version: e } : {}
57
- })), Re(t.name);
58
+ })), ze(t.name);
58
59
  }
59
60
  }, n.readAsText(t), e.target.value = "";
60
- }, []), [qe, B] = u(null), { data: V } = te({
61
+ }, []), [Je, B] = u(null), { data: V } = te({
61
62
  variables: { id: x ?? "" },
62
63
  skip: !x,
63
64
  fetchPolicy: "cache-first"
@@ -66,18 +67,18 @@ var _ = (e) => {
66
67
  "PARSER",
67
68
  "WIDGET",
68
69
  "DASHBOARD"
69
- ].includes(V?.application?.appType ?? ""), Je = !W && !U, G = V?.application, Ye = G?.pricingDetails ?? {}, Xe = G?.pricingType === "FREE" || G?.pricingType === "PAID" && typeof Ye.price == "number" && Ye.price > 0, Ze = !!G?.shortDescription?.trim() && !!G?.privacyPolicyUrl?.trim() && !!G?.termsOfServiceUrl?.trim(), K = Xe && Ze, Qe = [...Ze ? [] : ["Complete your store listing (short description, privacy policy, terms of service)"], ...Xe ? [] : ["Set pricing in the Pricing tab"]];
70
- ge(() => {
70
+ ].includes(V?.application?.appType ?? ""), Ye = !W && !U, G = V?.application, Xe = G?.pricingDetails ?? {}, Ze = G?.pricingType === "FREE" || G?.pricingType === "PAID" && typeof Xe.price == "number" && Xe.price > 0, Qe = !!G?.shortDescription?.trim() && !!G?.privacyPolicyUrl?.trim() && !!G?.termsOfServiceUrl?.trim(), K = Ze && Qe, $e = [...Qe ? [] : ["Complete your store listing (short description, privacy policy, terms of service)"], ...Ze ? [] : ["Set pricing in the Pricing tab"]];
71
+ _e(() => {
71
72
  let e = V?.application?.name;
72
73
  if (!x || !e) return;
73
74
  let t = window.__breadcrumbRegistry;
74
75
  return t?.register(x, e), () => t?.unregister(x);
75
76
  }, [x, V?.application?.name]);
76
- let { data: q, loading: $e, error: et } = ne({
77
+ let { data: q, loading: et, error: tt } = ne({
77
78
  variables: { applicationId: x },
78
79
  skip: !x,
79
80
  fetchPolicy: "cache-and-network"
80
- }), [tt, { loading: nt }] = r({ refetchQueries: ["GetApplicationVersions"] }), [rt, { loading: it }] = ae({ refetchQueries: ["GetApplicationVersions"] }), [at] = re({ refetchQueries: ["GetApplicationVersions"] }), [ot] = ee({ refetchQueries: ["GetApplicationVersions"] }), [st] = n({ refetchQueries: ["GetApplicationVersions"] }), [ct] = ie({ refetchQueries: ["GetApplicationVersions"] }), J = c(() => q?.application?.versions?.edges?.map((e) => e.node) ?? [], [q?.application?.versions]), Y = c(() => J.filter((e) => F.has(e.id)), [J, F]), X = c(() => Y.filter((e) => e.status === "draft" || e.status === "rejected"), [Y]), Z = c(() => J.some((e) => e.status === "pending_review"), [J]), Q = c(() => Y.filter((e) => e.status?.toUpperCase() === "PUBLISHED" && !e.isLatest), [Y]), lt = J.length > 0 && J.every((e) => F.has(e.id)), ut = J.some((e) => F.has(e.id)) && !lt, dt = async () => {
81
+ }), [nt, { loading: rt }] = r({ refetchQueries: ["GetApplicationVersions"] }), [it, { loading: at }] = ae({ refetchQueries: ["GetApplicationVersions"] }), [ot] = re({ refetchQueries: ["GetApplicationVersions"] }), [st] = ee({ refetchQueries: ["GetApplicationVersions"] }), [ct] = n({ refetchQueries: ["GetApplicationVersions"] }), [lt] = ie({ refetchQueries: ["GetApplicationVersions"] }), J = c(() => q?.application?.versions?.edges?.map((e) => e.node) ?? [], [q?.application?.versions]), Y = c(() => J.filter((e) => F.has(e.id)), [J, F]), X = c(() => Y.filter((e) => e.status === "draft" || e.status === "rejected"), [Y]), Z = c(() => J.some((e) => e.status === "pending_review"), [J]), Q = c(() => Y.filter((e) => e.status?.toUpperCase() === "PUBLISHED" && !e.isLatest), [Y]), ut = J.length > 0 && J.every((e) => F.has(e.id)), dt = J.some((e) => F.has(e.id)) && !ut, ft = async () => {
81
82
  if (!x || !k.version.trim()) return;
82
83
  N(null);
83
84
  let e;
@@ -113,9 +114,9 @@ var _ = (e) => {
113
114
  N("Invalid JSON in manifest — please check your input.");
114
115
  return;
115
116
  }
116
- let t = Je && k.requiredScopes.trim() ? k.requiredScopes.split(",").map((e) => e.trim()).filter(Boolean) : void 0;
117
+ let t = Ye && k.requiredScopes.trim() ? k.requiredScopes.split(",").map((e) => e.trim()).filter(Boolean) : void 0;
117
118
  try {
118
- await tt({ variables: {
119
+ await nt({ variables: {
119
120
  applicationId: x,
120
121
  input: {
121
122
  version: k.version,
@@ -126,7 +127,7 @@ var _ = (e) => {
126
127
  manifest: e,
127
128
  requiredScopes: t
128
129
  }
129
- } }), E(!1), Re(null), A({
130
+ } }), E(!1), ze(null), A({
130
131
  version: "",
131
132
  releaseNotes: "",
132
133
  changelog: "",
@@ -138,7 +139,7 @@ var _ = (e) => {
138
139
  } catch (e) {
139
140
  j(e instanceof Error ? e.message : v("devportal.versionCreateFailed", "Failed to create version"));
140
141
  }
141
- }, ft = s(async (e) => {
142
+ }, pt = s(async (e) => {
142
143
  let t = e.target.files?.[0];
143
144
  if (t) {
144
145
  e.target.value = "";
@@ -151,7 +152,7 @@ var _ = (e) => {
151
152
  }));
152
153
  } catch {}
153
154
  }
154
- }, [S]), pt = s(async (e) => {
155
+ }, [S]), mt = s(async (e) => {
155
156
  let t = e.target.files?.[0];
156
157
  if (t) {
157
158
  e.target.value = "";
@@ -164,7 +165,7 @@ var _ = (e) => {
164
165
  });
165
166
  } catch {}
166
167
  }
167
- }, [S]), mt = s((e) => {
168
+ }, [S]), ht = s((e) => {
168
169
  let t = e.target.files?.[0];
169
170
  if (!t) return;
170
171
  let n = new FileReader();
@@ -175,7 +176,7 @@ var _ = (e) => {
175
176
  manifestJson: n
176
177
  }), T(t.name));
177
178
  }, n.readAsText(t), e.target.value = "";
178
- }, []), ht = async () => {
179
+ }, []), gt = async () => {
179
180
  if (!D) return;
180
181
  P(null);
181
182
  let e = D.manifestJson.trim() !== D.originalManifestJson.trim(), t;
@@ -188,90 +189,90 @@ var _ = (e) => {
188
189
  let n = {};
189
190
  D.releaseNotes.trim() && (n.releaseNotes = D.releaseNotes), D.changelog.trim() && (n.changelog = D.changelog), D.newPackageUrl && (n.packageUrl = D.newPackageUrl, n.packageSize = D.newPackageSize), t && (n.manifest = t);
190
191
  try {
191
- await rt({ variables: {
192
+ await it({ variables: {
192
193
  id: D.versionId,
193
194
  input: n
194
195
  } }), O(null), T(null), M(v("devportal.versionUpdatedSuccess", "Version updated successfully"));
195
196
  } catch (e) {
196
197
  j(e instanceof Error ? e.message : v("devportal.versionUpdateFailed", "Failed to update version"));
197
198
  }
198
- }, gt = async (e) => {
199
+ }, _t = async (e) => {
199
200
  j(null), M(null);
200
201
  try {
201
- await at({ variables: { id: e } }), M(v("devportal.versionSubmittedSuccess", "Version submitted for review — you'll be notified when approved"));
202
+ await ot({ variables: { id: e } }), M(v("devportal.versionSubmittedSuccess", "Version submitted for review — you'll be notified when approved"));
202
203
  } catch (e) {
203
204
  j(e instanceof Error ? e.message : v("devportal.versionPublishFailed", "Failed to submit version for review"));
204
205
  }
205
- }, _t = async (e) => {
206
+ }, vt = async (e) => {
206
207
  j(null), M(null);
207
208
  try {
208
- await ot({ variables: { id: e } }), M(v("devportal.versionDeprecatedSuccess", "Version deprecated successfully"));
209
+ await st({ variables: { id: e } }), M(v("devportal.versionDeprecatedSuccess", "Version deprecated successfully"));
209
210
  } catch (e) {
210
211
  j(e instanceof Error ? e.message : v("devportal.versionDeprecateFailed", "Failed to deprecate version"));
211
212
  }
212
- }, vt = async () => {
213
+ }, yt = async () => {
213
214
  if (!(!L || !R.trim())) {
214
215
  j(null), M(null);
215
216
  try {
216
- await ct({ variables: {
217
+ await lt({ variables: {
217
218
  id: L.versionId,
218
219
  reason: R
219
- } }), M(v("devportal.versionRejectedSuccess", "Version rejected — developer has been notified")), Ge(null), z("");
220
+ } }), M(v("devportal.versionRejectedSuccess", "Version rejected — developer has been notified")), Ke(null), z("");
220
221
  } catch (e) {
221
222
  j(e instanceof Error ? e.message : v("devportal.versionRejectFailed", "Failed to reject version"));
222
223
  }
223
224
  }
224
- }, yt = (e) => e.status === "published" && e.isLatest ? /* @__PURE__ */ h(ve, {
225
+ }, bt = (e) => e.status === "published" && e.isLatest ? /* @__PURE__ */ h(ye, {
225
226
  size: 16,
226
227
  className: "text-status-success-text"
227
228
  }) : e.status === "pending_review" ? /* @__PURE__ */ h(f, {
228
229
  size: 16,
229
230
  className: "text-status-info-text"
230
- }) : e.status === "rejected" ? /* @__PURE__ */ h(Ce, {
231
+ }) : e.status === "rejected" ? /* @__PURE__ */ h(we, {
231
232
  size: 16,
232
233
  className: "text-status-error-text"
233
- }) : e.status === "draft" ? /* @__PURE__ */ h(ye, {
234
+ }) : e.status === "draft" ? /* @__PURE__ */ h(be, {
234
235
  size: 16,
235
236
  className: "text-status-warning-text"
236
- }) : e.status === "deprecated" ? /* @__PURE__ */ h(_e, {
237
+ }) : e.status === "deprecated" ? /* @__PURE__ */ h(ve, {
237
238
  size: 16,
238
239
  className: "text-text-secondary"
239
- }) : /* @__PURE__ */ h(xe, {
240
+ }) : /* @__PURE__ */ h(Se, {
240
241
  size: 16,
241
242
  className: "text-accent-blue"
242
- }), bt = (e, t) => {
243
+ }), xt = (e, t) => {
243
244
  I((n) => {
244
245
  let r = new Set(n);
245
246
  return t ? r.add(e) : r.delete(e), r;
246
247
  });
247
- }, xt = (e) => {
248
+ }, St = (e) => {
248
249
  I((t) => {
249
250
  let n = new Set(t);
250
251
  return J.forEach((t) => {
251
252
  e ? n.add(t.id) : n.delete(t.id);
252
253
  }), n;
253
254
  });
254
- }, $ = () => I(/* @__PURE__ */ new Set()), St = async () => {
255
+ }, $ = () => I(/* @__PURE__ */ new Set()), Ct = async () => {
255
256
  if (X.length === 0) return;
256
257
  j(null);
257
- let e = await Promise.allSettled(X.map((e) => at({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
258
+ let e = await Promise.allSettled(X.map((e) => ot({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
258
259
  M(`Published ${t} version${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`), $(), B(null);
259
- }, Ct = async () => {
260
+ }, wt = async () => {
260
261
  if (Q.length === 0) return;
261
262
  j(null);
262
- let e = await Promise.allSettled(Q.map((e) => ot({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
263
+ let e = await Promise.allSettled(Q.map((e) => st({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
263
264
  M(`Deprecated ${t} version${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`), $(), B(null);
264
- }, wt = _(k.manifestJson);
265
- return $e && !q ? /* @__PURE__ */ h(oe, {
265
+ }, Tt = _(k.manifestJson);
266
+ return et && !q ? /* @__PURE__ */ h(oe, {
266
267
  title: v("devportal.versionManagement", "Version Management"),
267
268
  description: v("devportal.versionManagementDescription", "Manage your application versions"),
268
269
  backLink: `/apps/${x}`,
269
270
  backLabel: v("devportal.backToApplication", "Back to Application"),
270
271
  children: /* @__PURE__ */ h("div", {
271
272
  className: "flex items-center justify-center py-16",
272
- children: /* @__PURE__ */ h(be, { className: "h-8 w-8 animate-spin text-text-secondary" })
273
+ children: /* @__PURE__ */ h(xe, { className: "h-8 w-8 animate-spin text-text-secondary" })
273
274
  })
274
- }) : et && !q ? /* @__PURE__ */ h(oe, {
275
+ }) : tt && !q ? /* @__PURE__ */ h(oe, {
275
276
  title: v("devportal.versionManagement", "Version Management"),
276
277
  description: v("devportal.versionManagementDescription", "Manage your application versions"),
277
278
  backLink: `/apps/${x}`,
@@ -282,7 +283,7 @@ var _ = (e) => {
282
283
  className: "text-status-error-text"
283
284
  }),
284
285
  title: v("devportal.failedToLoadVersions", "Failed to load versions"),
285
- description: et.message || v("devportal.versionsLoadError", "An error occurred while loading versions")
286
+ description: tt.message || v("devportal.versionsLoadError", "An error occurred while loading versions")
286
287
  })
287
288
  }) : /* @__PURE__ */ h(de, {
288
289
  authOnly: !0,
@@ -296,20 +297,20 @@ var _ = (e) => {
296
297
  onClick: () => {
297
298
  N(null), E(!0);
298
299
  },
299
- disabled: !De,
300
- "aria-disabled": !De,
300
+ disabled: !Oe,
301
+ "aria-disabled": !Oe,
301
302
  className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 disabled:opacity-50",
302
- children: [/* @__PURE__ */ h(Se, { size: 16 }), v("devportal.newVersion", "New Version")]
303
+ children: [/* @__PURE__ */ h(Ce, { size: 16 }), v("devportal.newVersion", "New Version")]
303
304
  }),
304
305
  children: [
305
- Ve && /* @__PURE__ */ g("div", {
306
+ He && /* @__PURE__ */ g("div", {
306
307
  className: "rounded-lg border border-border-subtle bg-status-error-bg-subtle p-3 flex items-center gap-2 text-sm text-status-error-text",
307
308
  children: [
308
309
  /* @__PURE__ */ h(d, {
309
310
  size: 16,
310
311
  className: "flex-shrink-0"
311
312
  }),
312
- Ve,
313
+ He,
313
314
  /* @__PURE__ */ h("button", {
314
315
  onClick: () => j(null),
315
316
  className: "ml-auto text-status-error-text hover:text-status-error-text",
@@ -317,14 +318,14 @@ var _ = (e) => {
317
318
  })
318
319
  ]
319
320
  }),
320
- He && /* @__PURE__ */ g("div", {
321
+ Ue && /* @__PURE__ */ g("div", {
321
322
  className: "rounded-lg border border-border-subtle bg-status-success-bg-subtle p-3 flex items-center gap-2 text-sm text-status-success-text",
322
323
  children: [
323
- /* @__PURE__ */ h(ve, {
324
+ /* @__PURE__ */ h(ye, {
324
325
  size: 16,
325
326
  className: "flex-shrink-0"
326
327
  }),
327
- He,
328
+ Ue,
328
329
  /* @__PURE__ */ h("button", {
329
330
  onClick: () => M(null),
330
331
  className: "ml-auto text-status-success-text hover:text-status-success-text",
@@ -342,7 +343,7 @@ var _ = (e) => {
342
343
  children: "Complete your app setup before submitting for review"
343
344
  }), /* @__PURE__ */ h("ul", {
344
345
  className: "mt-1 list-disc pl-4 text-xs opacity-80",
345
- children: Qe.map((e) => /* @__PURE__ */ h("li", { children: e }, e))
346
+ children: $e.map((e) => /* @__PURE__ */ h("li", { children: e }, e))
346
347
  })] })]
347
348
  }),
348
349
  G && G.status !== "PUBLISHED" && J.some((e) => e.status === "draft") && /* @__PURE__ */ g("div", {
@@ -384,9 +385,9 @@ var _ = (e) => {
384
385
  children: [/* @__PURE__ */ g("div", {
385
386
  className: "flex items-center gap-2",
386
387
  children: [/* @__PURE__ */ h(ce, {
387
- checked: lt,
388
- indeterminate: ut,
389
- onChange: xt,
388
+ checked: ut,
389
+ indeterminate: dt,
390
+ onChange: St,
390
391
  ariaLabel: "Select all visible versions"
391
392
  }), /* @__PURE__ */ h("span", {
392
393
  className: "text-sm font-medium",
@@ -408,7 +409,7 @@ var _ = (e) => {
408
409
  onClick: () => B("publish"),
409
410
  disabled: X.length === 0 || !y || !K || Z,
410
411
  "aria-disabled": !y || !K || Z,
411
- title: Z ? v("devportal.versionAlreadyPending", "A version is already pending review") : K ? void 0 : Qe.join(" · "),
412
+ title: Z ? v("devportal.versionAlreadyPending", "A version is already pending review") : K ? void 0 : $e.join(" · "),
412
413
  className: "rounded-md border border-status-success-bg px-3 py-2 text-sm font-medium text-status-success-text hover:bg-status-success-bg-subtle disabled:cursor-not-allowed disabled:opacity-50",
413
414
  children: [v("devportal.submitForReview", "Submit for Review"), X.length > 0 ? ` (${X.length})` : ""]
414
415
  }),
@@ -430,9 +431,9 @@ var _ = (e) => {
430
431
  {
431
432
  key: "select",
432
433
  header: /* @__PURE__ */ h(ce, {
433
- checked: lt,
434
- indeterminate: ut,
435
- onChange: xt,
434
+ checked: ut,
435
+ indeterminate: dt,
436
+ onChange: St,
436
437
  ariaLabel: "Select all visible versions"
437
438
  }),
438
439
  className: "w-12",
@@ -440,7 +441,7 @@ var _ = (e) => {
440
441
  onClick: (e) => e.stopPropagation(),
441
442
  children: /* @__PURE__ */ h(ce, {
442
443
  checked: F.has(e.id),
443
- onChange: (t) => bt(e.id, t),
444
+ onChange: (t) => xt(e.id, t),
444
445
  ariaLabel: `Select version ${e.version}`
445
446
  })
446
447
  })
@@ -451,7 +452,7 @@ var _ = (e) => {
451
452
  render: (e) => /* @__PURE__ */ g("div", {
452
453
  className: "flex items-center gap-2",
453
454
  children: [
454
- yt(e),
455
+ bt(e),
455
456
  /* @__PURE__ */ h("span", {
456
457
  className: "font-mono font-medium",
457
458
  children: e.version
@@ -489,14 +490,15 @@ var _ = (e) => {
489
490
  e.status === "rejected" && e.reviewNotes && /* @__PURE__ */ h("p", {
490
491
  className: "text-xs text-status-error-text max-w-xs",
491
492
  children: e.reviewNotes
492
- })
493
+ }),
494
+ U && e.packageUrl && /* @__PURE__ */ h(pe, { metadata: e.metadata })
493
495
  ]
494
496
  })
495
497
  },
496
498
  {
497
499
  key: "publishedAt",
498
500
  header: v("devportal.published", "Published"),
499
- render: (e) => e.publishedAt ? me(new Date(e.publishedAt), "MMM d, yyyy") : "-"
501
+ render: (e) => e.publishedAt ? he(new Date(e.publishedAt), "MMM d, yyyy") : "-"
500
502
  },
501
503
  {
502
504
  key: "manifest",
@@ -516,7 +518,7 @@ var _ = (e) => {
516
518
  render: (e) => /* @__PURE__ */ g("div", {
517
519
  className: "flex flex-wrap gap-2",
518
520
  children: [
519
- (e.status === "draft" || e.status === "rejected") && De && /* @__PURE__ */ h("button", {
521
+ (e.status === "draft" || e.status === "rejected") && Oe && /* @__PURE__ */ h("button", {
520
522
  className: "inline-flex items-center gap-1 text-xs text-text-secondary hover:text-text-primary hover:underline",
521
523
  onClick: () => {
522
524
  let t = e.manifest ? JSON.stringify(e.manifest, null, 2) : "";
@@ -538,15 +540,15 @@ var _ = (e) => {
538
540
  className: "inline-flex items-center gap-1 text-xs text-primary hover:underline disabled:opacity-50 disabled:cursor-not-allowed",
539
541
  disabled: !y || !K || Z,
540
542
  "aria-disabled": !y || !K || Z,
541
- title: Z ? v("devportal.versionAlreadyPending", "A version is already pending review") : K ? void 0 : Qe.join(" · "),
542
- onClick: () => gt(e.id),
543
+ title: Z ? v("devportal.versionAlreadyPending", "A version is already pending review") : K ? void 0 : $e.join(" · "),
544
+ onClick: () => _t(e.id),
543
545
  children: [/* @__PURE__ */ h(f, { size: 11 }), v("devportal.submitForReview", "Submit for Review")]
544
546
  }),
545
547
  e.status === "published" && !e.isLatest && /* @__PURE__ */ h("button", {
546
548
  className: "text-xs text-status-warning-text hover:underline disabled:opacity-50",
547
549
  disabled: !b,
548
550
  "aria-disabled": !b,
549
- onClick: () => _t(e.id),
551
+ onClick: () => vt(e.id),
550
552
  children: v("devportal.deprecate", "Deprecate")
551
553
  })
552
554
  ]
@@ -562,26 +564,26 @@ var _ = (e) => {
562
564
  N(null), E(!0);
563
565
  },
564
566
  className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90",
565
- children: [/* @__PURE__ */ h(Se, { size: 16 }), v("devportal.createVersion", "Create Version")]
567
+ children: [/* @__PURE__ */ h(Ce, { size: 16 }), v("devportal.createVersion", "Create Version")]
566
568
  })
567
569
  }),
568
- Be && /* @__PURE__ */ h(i, {
569
- open: Be,
570
+ Ve && /* @__PURE__ */ h(i, {
571
+ open: Ve,
570
572
  onOpenChange: (e) => {
571
573
  E(e), e || N(null);
572
574
  },
573
- onConfirm: dt,
575
+ onConfirm: ft,
574
576
  title: v("devportal.createNewVersion", "Create New Version"),
575
- confirmLabel: nt ? v("devportal.creating", "Creating...") : v("devportal.createVersion", "Create Version"),
577
+ confirmLabel: rt ? v("devportal.creating", "Creating...") : v("devportal.createVersion", "Create Version"),
576
578
  children: /* @__PURE__ */ g("div", {
577
579
  className: "space-y-4",
578
580
  children: [
579
- Ue && /* @__PURE__ */ g("div", {
581
+ We && /* @__PURE__ */ g("div", {
580
582
  className: "rounded-lg border border-status-error-bg bg-status-error-bg-subtle p-3 flex items-center gap-2 text-sm text-status-error-text",
581
583
  children: [/* @__PURE__ */ h(d, {
582
584
  size: 14,
583
585
  className: "flex-shrink-0"
584
- }), Ue]
586
+ }), We]
585
587
  }),
586
588
  /* @__PURE__ */ h(ue, {
587
589
  label: v("devportal.versionNumber", "Version Number"),
@@ -591,8 +593,8 @@ var _ = (e) => {
591
593
  version: e.target.value
592
594
  }),
593
595
  placeholder: "e.g., 2.2.0",
594
- hint: wt ? v("devportal.versionHintAutoFilled", "Filled in from the manifest's version — edit it there if this is wrong.") : v("devportal.versionHint", "Use semantic versioning (major.minor.patch). Upload a manifest.json/manifest with a version to fill this in automatically."),
595
- readOnly: !!wt,
596
+ hint: Tt ? v("devportal.versionHintAutoFilled", "Filled in from the manifest's version — edit it there if this is wrong.") : v("devportal.versionHint", "Use semantic versioning (major.minor.patch). Upload a manifest.json/manifest with a version to fill this in automatically."),
597
+ readOnly: !!Tt,
596
598
  required: !0
597
599
  }),
598
600
  W && /* @__PURE__ */ g("div", {
@@ -652,25 +654,25 @@ var _ = (e) => {
652
654
  className: "flex gap-2 items-center",
653
655
  children: [
654
656
  /* @__PURE__ */ h("input", {
655
- ref: Ne,
657
+ ref: Pe,
656
658
  type: "file",
657
659
  accept: ".zip",
658
660
  className: "hidden",
659
- onChange: ft
661
+ onChange: pt
660
662
  }),
661
663
  /* @__PURE__ */ h("button", {
662
664
  type: "button",
663
665
  disabled: C,
664
- onClick: () => Ne.current?.click(),
666
+ onClick: () => Pe.current?.click(),
665
667
  className: "inline-flex items-center gap-1.5 rounded-md border px-3 py-1.5 text-sm font-medium hover:bg-bg-sunken transition-colors disabled:opacity-50",
666
668
  children: C ? /* @__PURE__ */ g(m, { children: [
667
- /* @__PURE__ */ h(be, {
669
+ /* @__PURE__ */ h(xe, {
668
670
  size: 14,
669
671
  className: "animate-spin"
670
672
  }),
671
673
  " ",
672
674
  "Uploading… ",
673
- Me,
675
+ Ne,
674
676
  "%"
675
677
  ] }) : /* @__PURE__ */ g(m, { children: [
676
678
  /* @__PURE__ */ h(p, { size: 14 }),
@@ -712,20 +714,20 @@ var _ = (e) => {
712
714
  }), /* @__PURE__ */ g("div", {
713
715
  className: "flex items-center gap-2",
714
716
  children: [
715
- Le && /* @__PURE__ */ g("span", {
717
+ Re && /* @__PURE__ */ g("span", {
716
718
  className: "text-xs text-status-success-text",
717
- children: ["✓ ", Le]
719
+ children: ["✓ ", Re]
718
720
  }),
719
721
  /* @__PURE__ */ h("input", {
720
- ref: Pe,
722
+ ref: Fe,
721
723
  type: "file",
722
724
  accept: ".json,application/json",
723
725
  className: "hidden",
724
- onChange: Ke
726
+ onChange: qe
725
727
  }),
726
728
  /* @__PURE__ */ g("button", {
727
729
  type: "button",
728
- onClick: () => Pe.current?.click(),
730
+ onClick: () => Fe.current?.click(),
729
731
  className: "inline-flex items-center gap-1.5 rounded-md border border-border-subtle px-2.5 py-1 text-xs font-medium hover:bg-bg-sunken transition-colors",
730
732
  children: [/* @__PURE__ */ h(p, { size: 12 }), "Upload manifest.json"]
731
733
  })
@@ -737,7 +739,7 @@ var _ = (e) => {
737
739
  placeholder: "{\n \"manifestVersion\": \"1.0\",\n \"itemType\": \"node\",\n \"identity\": { \"version\": \"1.0.0\", \"displayName\": \"My Node\" }\n}",
738
740
  value: k.manifestJson,
739
741
  onChange: (e) => {
740
- Re(null);
742
+ ze(null);
741
743
  let t = _(e.target.value);
742
744
  A({
743
745
  ...k,
@@ -757,7 +759,7 @@ var _ = (e) => {
757
759
  })
758
760
  ]
759
761
  }),
760
- Je && /* @__PURE__ */ g("div", {
762
+ Ye && /* @__PURE__ */ g("div", {
761
763
  className: "space-y-1",
762
764
  children: [
763
765
  /* @__PURE__ */ g("label", {
@@ -813,9 +815,9 @@ var _ = (e) => {
813
815
  L && /* @__PURE__ */ h(i, {
814
816
  open: !!L,
815
817
  onOpenChange: (e) => {
816
- e || (Ge(null), z(""));
818
+ e || (Ke(null), z(""));
817
819
  },
818
- onConfirm: vt,
820
+ onConfirm: yt,
819
821
  title: `Reject version ${L.version}`,
820
822
  confirmLabel: "Reject Version",
821
823
  cancelLabel: v("devportal.cancel", "Cancel"),
@@ -852,18 +854,18 @@ var _ = (e) => {
852
854
  onOpenChange: (e) => {
853
855
  e || (O(null), T(null), P(null));
854
856
  },
855
- onConfirm: ht,
857
+ onConfirm: gt,
856
858
  title: `Edit Version ${D.version}`,
857
- confirmLabel: it ? "Saving…" : "Save Changes",
859
+ confirmLabel: at ? "Saving…" : "Save Changes",
858
860
  children: /* @__PURE__ */ g("div", {
859
861
  className: "space-y-4",
860
862
  children: [
861
- We && /* @__PURE__ */ g("div", {
863
+ Ge && /* @__PURE__ */ g("div", {
862
864
  className: "rounded-lg border border-status-error-bg bg-status-error-bg-subtle p-3 flex items-center gap-2 text-sm text-status-error-text",
863
865
  children: [/* @__PURE__ */ h(d, {
864
866
  size: 14,
865
867
  className: "flex-shrink-0"
866
- }), We]
868
+ }), Ge]
867
869
  }),
868
870
  /* @__PURE__ */ h("div", {
869
871
  className: "rounded-lg border border-status-info-bg bg-status-info-bg-subtle px-3 py-2 text-xs text-status-info-text",
@@ -880,25 +882,25 @@ var _ = (e) => {
880
882
  className: "flex gap-2 items-center",
881
883
  children: [
882
884
  /* @__PURE__ */ h("input", {
883
- ref: Fe,
885
+ ref: Ie,
884
886
  type: "file",
885
887
  accept: ".zip",
886
888
  className: "hidden",
887
- onChange: pt
889
+ onChange: mt
888
890
  }),
889
891
  /* @__PURE__ */ h("button", {
890
892
  type: "button",
891
893
  disabled: C,
892
- onClick: () => Fe.current?.click(),
894
+ onClick: () => Ie.current?.click(),
893
895
  className: "inline-flex items-center gap-1.5 rounded-md border px-3 py-1.5 text-sm font-medium hover:bg-bg-sunken transition-colors disabled:opacity-50",
894
896
  children: C ? /* @__PURE__ */ g(m, { children: [
895
- /* @__PURE__ */ h(be, {
897
+ /* @__PURE__ */ h(xe, {
896
898
  size: 14,
897
899
  className: "animate-spin"
898
900
  }),
899
901
  " ",
900
902
  "Uploading… ",
901
- Me,
903
+ Ne,
902
904
  "%"
903
905
  ] }) : /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h(p, { size: 14 }), D.newPackageUrl ? "Replace zip again" : D.hasExistingZip ? "Replace zip" : "Upload zip"] })
904
906
  }),
@@ -935,20 +937,20 @@ var _ = (e) => {
935
937
  }), /* @__PURE__ */ g("div", {
936
938
  className: "flex items-center gap-2",
937
939
  children: [
938
- ze && /* @__PURE__ */ g("span", {
940
+ Be && /* @__PURE__ */ g("span", {
939
941
  className: "text-xs text-status-success-text",
940
- children: ["✓ ", ze]
942
+ children: ["✓ ", Be]
941
943
  }),
942
944
  /* @__PURE__ */ h("input", {
943
- ref: Ie,
945
+ ref: Le,
944
946
  type: "file",
945
947
  accept: ".json,application/json",
946
948
  className: "hidden",
947
- onChange: mt
949
+ onChange: ht
948
950
  }),
949
951
  /* @__PURE__ */ g("button", {
950
952
  type: "button",
951
- onClick: () => Ie.current?.click(),
953
+ onClick: () => Le.current?.click(),
952
954
  className: "inline-flex items-center gap-1.5 rounded-md border border-border-subtle px-2.5 py-1 text-xs font-medium hover:bg-bg-sunken transition-colors",
953
955
  children: [/* @__PURE__ */ h(p, { size: 12 }), " Upload manifest.json"]
954
956
  })
@@ -1014,11 +1016,11 @@ var _ = (e) => {
1014
1016
  })
1015
1017
  }),
1016
1018
  /* @__PURE__ */ h(i, {
1017
- open: qe === "publish",
1019
+ open: Je === "publish",
1018
1020
  onOpenChange: (e) => {
1019
1021
  e || B(null);
1020
1022
  },
1021
- onConfirm: St,
1023
+ onConfirm: Ct,
1022
1024
  title: v("devportal.submitSelectedVersions", "Submit selected versions for review"),
1023
1025
  description: `Submit ${X.length} selected version${X.length === 1 ? "" : "s"} for platform review?`,
1024
1026
  confirmLabel: v("devportal.submitForReview", "Submit for Review"),
@@ -1026,11 +1028,11 @@ var _ = (e) => {
1026
1028
  variant: "success"
1027
1029
  }),
1028
1030
  /* @__PURE__ */ h(i, {
1029
- open: qe === "deprecate",
1031
+ open: Je === "deprecate",
1030
1032
  onOpenChange: (e) => {
1031
1033
  e || B(null);
1032
1034
  },
1033
- onConfirm: Ct,
1035
+ onConfirm: wt,
1034
1036
  title: v("devportal.deprecateSelectedVersions", "Deprecate selected versions"),
1035
1037
  description: `${v("devportal.deprecate", "Deprecate")} ${Q.length} selected version${Q.length === 1 ? "" : "s"}? ${v("devportal.deprecateVersionsWarning", "Deprecated versions remain visible but should no longer be promoted.")}`,
1036
1038
  confirmLabel: v("devportal.deprecate", "Deprecate"),
@@ -1042,6 +1044,6 @@ var _ = (e) => {
1042
1044
  });
1043
1045
  };
1044
1046
  //#endregion
1045
- export { Ee as ApplicationVersionsPage };
1047
+ export { De as ApplicationVersionsPage };
1046
1048
 
1047
1049
  //# sourceMappingURL=ApplicationVersionsPage.js.map