@burdenoff/microfe-devportal 2026.623.5 → 2026.623.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/devportal/DevportalRoutes.js +101 -94
- package/dist/devportal/DevportalRoutes.js.map +1 -1
- package/dist/devportal/components/SectionNav.js +71 -5
- package/dist/devportal/components/SectionNav.js.map +1 -0
- package/dist/devportal/components/index.js +1 -1
- package/dist/devportal/hooks/useGraphQL.js +1 -1
- package/dist/devportal/pages/AdminReviewPage.js +39 -39
- package/dist/devportal/pages/AnalyticsDashboardPage.js +54 -54
- package/dist/devportal/pages/AnalyticsDashboardPage.js.map +1 -1
- package/dist/devportal/pages/ApiKeysPage.js +53 -53
- package/dist/devportal/pages/ApiKeysPage.js.map +1 -1
- package/dist/devportal/pages/AppLogsPage.js +9 -9
- package/dist/devportal/pages/ApplicationDetailPage.js +462 -462
- package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
- package/dist/devportal/pages/ApplicationVersionsPage.js +120 -120
- package/dist/devportal/pages/ApplicationVersionsPage.js.map +1 -1
- package/dist/devportal/pages/ApplicationsPage.js +73 -73
- package/dist/devportal/pages/ApplicationsPage.js.map +1 -1
- package/dist/devportal/pages/CreateApiKeyPage.js +20 -20
- package/dist/devportal/pages/CreateApplicationPage.js +32 -32
- package/dist/devportal/pages/CreateOAuthClientPage.js +18 -18
- package/dist/devportal/pages/CreateOrganizationPage.js +12 -12
- package/dist/devportal/pages/CreateWebhookPage.js +23 -23
- package/dist/devportal/pages/DashboardPage.js +23 -23
- package/dist/devportal/pages/DelegationsPage.js +22 -22
- package/dist/devportal/pages/EditApplicationPage.js +283 -283
- package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
- package/dist/devportal/pages/ListingPreviewPage.js +9 -9
- package/dist/devportal/pages/OAuthClientDetailPage.js +15 -15
- package/dist/devportal/pages/OAuthClientsPage.js +14 -14
- package/dist/devportal/pages/OrganizationDetailPage.js +84 -84
- package/dist/devportal/pages/OrganizationMembersPage.js +260 -260
- package/dist/devportal/pages/OrganizationMembersPage.js.map +1 -1
- package/dist/devportal/pages/OrganizationsPage.js +16 -16
- package/dist/devportal/pages/PublishPage.js +16 -16
- package/dist/devportal/pages/PublisherProfilePage.js +18 -18
- package/dist/devportal/pages/RevenueDashboardPage.js +29 -29
- package/dist/devportal/pages/SettingsPage.js +17 -17
- package/dist/devportal/pages/SetupPage.js +99 -99
- package/dist/devportal/pages/SetupPage.js.map +1 -1
- package/dist/devportal/pages/WebhookDetailPage.js +143 -143
- package/dist/devportal/pages/WebhookDetailPage.js.map +1 -1
- package/dist/devportal/pages/WebhooksPage.js +133 -133
- package/dist/devportal/pages/WebhooksPage.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,63 +1,63 @@
|
|
|
1
1
|
import { useDevportal as e } from "../providers/DevportalProvider.js";
|
|
2
2
|
import { EmptyState as t } from "../components/EmptyState.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { PermissionGuard as
|
|
3
|
+
import { useCreateApplicationVersionMutation as n, useDeprecateApplicationVersionMutation as r, useGetApplicationQuery as ee, useGetApplicationVersionsQuery as te, usePublishApplicationVersionMutation as ne } from "../../generated/global-operations.js";
|
|
4
|
+
import { PageLayout as i } from "../components/PageLayout.js";
|
|
5
|
+
import { StatusBadge as re } from "../components/StatusBadge.js";
|
|
6
|
+
import { SelectionCheckbox as a } from "../components/SelectionCheckbox.js";
|
|
7
|
+
import { DataTable as ie } from "../components/DataTable.js";
|
|
8
|
+
import { InputField as ae, TextareaField as oe } from "../components/FormField.js";
|
|
9
|
+
import { ConfirmDialog as o } from "../components/ConfirmDialog.js";
|
|
10
|
+
import { PermissionGuard as se } from "../components/PermissionGuard.js";
|
|
11
11
|
import "../components/index.js";
|
|
12
|
-
import { DEVPORTAL_PERMISSIONS as
|
|
13
|
-
import { useDevportalPermission as
|
|
12
|
+
import { DEVPORTAL_PERMISSIONS as s } from "../constants/permissions.js";
|
|
13
|
+
import { useDevportalPermission as c } from "../hooks/usePermission.js";
|
|
14
14
|
import "../hooks/index.js";
|
|
15
|
-
import
|
|
16
|
-
import { usePackageUpload as
|
|
17
|
-
import { useCallback as
|
|
18
|
-
import { useI18n as
|
|
19
|
-
import { AlertCircle as
|
|
15
|
+
import ce from "../../node_modules/.bun/date-fns@3.6.0/node_modules/date-fns/format.js";
|
|
16
|
+
import { usePackageUpload as le } from "../hooks/usePackageUpload.js";
|
|
17
|
+
import { useCallback as ue, useEffect as de, useMemo as l, useRef as fe, useState as u } from "react";
|
|
18
|
+
import { useI18n as pe } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
19
|
+
import { AlertCircle as d, Archive as me, CheckCircle as f, Clock as he, FileJson as ge, Loader2 as p, Package as m, Plus as h, Upload as _e } from "lucide-react";
|
|
20
20
|
import { useParams as ve } from "react-router-dom";
|
|
21
21
|
import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
22
22
|
//#region src/devportal/pages/ApplicationVersionsPage.tsx
|
|
23
23
|
var y = () => {
|
|
24
|
-
let { t: y } =
|
|
24
|
+
let { t: y } = pe(), b = (e, t) => {
|
|
25
25
|
let n = y(e);
|
|
26
26
|
return n === e ? t : n;
|
|
27
|
-
}, { allowed: x } = s
|
|
27
|
+
}, { allowed: x } = c(s.APP_VERSION_CREATE), { allowed: S } = c(s.APP_VERSION_PUBLISH), { allowed: C } = c(s.APP_VERSION_DEPRECATE), { appId: w } = ve(), { workspacesGatewayUrl: ye, authToken: be, workspaceId: xe, getWorkspaceToken: Se } = e(), { upload: T, uploading: E, progress: Ce, error: D } = le(ye, be, xe, Se), O = fe(null), [k, A] = u(!1), [j, M] = u({
|
|
28
28
|
version: "",
|
|
29
29
|
releaseNotes: "",
|
|
30
30
|
changelog: "",
|
|
31
31
|
packageUrl: "",
|
|
32
32
|
packageSize: "",
|
|
33
33
|
manifestJson: ""
|
|
34
|
-
}), [N, P] =
|
|
34
|
+
}), [N, P] = u("file"), [F, I] = u(null), [L, R] = u(null), [z, B] = u(/* @__PURE__ */ new Set()), [V, H] = u(null), { data: U } = ee({
|
|
35
35
|
variables: { id: w ?? "" },
|
|
36
36
|
skip: !w,
|
|
37
37
|
fetchPolicy: "cache-first"
|
|
38
38
|
});
|
|
39
|
-
|
|
40
|
-
let e =
|
|
39
|
+
de(() => {
|
|
40
|
+
let e = U?.application?.name;
|
|
41
41
|
if (!w || !e) return;
|
|
42
42
|
let t = window.__breadcrumbRegistry;
|
|
43
43
|
return t?.register(w, e), () => t?.unregister(w);
|
|
44
|
-
}, [w,
|
|
45
|
-
let { data:
|
|
44
|
+
}, [w, U?.application?.name]);
|
|
45
|
+
let { data: W, loading: we, error: G } = te({
|
|
46
46
|
variables: { applicationId: w },
|
|
47
47
|
skip: !w,
|
|
48
48
|
fetchPolicy: "cache-and-network"
|
|
49
|
-
}), [
|
|
49
|
+
}), [Te, { loading: Ee }] = n({ refetchQueries: ["GetApplicationVersions"] }), [K] = ne({ refetchQueries: ["GetApplicationVersions"] }), [q] = r({ refetchQueries: ["GetApplicationVersions"] }), J = l(() => W?.application?.versions?.edges?.map((e) => e.node) ?? [], [W?.application?.versions]), Y = l(() => J.filter((e) => z.has(e.id)), [J, z]), X = l(() => Y.filter((e) => e.status?.toUpperCase() === "DRAFT"), [Y]), Z = l(() => Y.filter((e) => e.status?.toUpperCase() === "PUBLISHED" && !e.isLatest), [Y]), Q = J.length > 0 && J.every((e) => z.has(e.id)), De = J.some((e) => z.has(e.id)) && !Q, Oe = async () => {
|
|
50
50
|
if (!w || !j.version.trim()) return;
|
|
51
|
-
|
|
51
|
+
I(null);
|
|
52
52
|
let e;
|
|
53
53
|
if (N === "manifest" && j.manifestJson.trim()) try {
|
|
54
54
|
e = JSON.parse(j.manifestJson);
|
|
55
55
|
} catch {
|
|
56
|
-
|
|
56
|
+
I("Invalid JSON in manifest — please check your input.");
|
|
57
57
|
return;
|
|
58
58
|
}
|
|
59
59
|
try {
|
|
60
|
-
await
|
|
60
|
+
await Te({ variables: {
|
|
61
61
|
applicationId: w,
|
|
62
62
|
input: {
|
|
63
63
|
version: j.version,
|
|
@@ -74,11 +74,11 @@ var y = () => {
|
|
|
74
74
|
packageUrl: "",
|
|
75
75
|
packageSize: "",
|
|
76
76
|
manifestJson: ""
|
|
77
|
-
}), P("file"),
|
|
77
|
+
}), P("file"), R(b("devportal.versionCreatedSuccess", "Version created successfully"));
|
|
78
78
|
} catch (e) {
|
|
79
|
-
|
|
79
|
+
I(e instanceof Error ? e.message : b("devportal.versionCreateFailed", "Failed to create version"));
|
|
80
80
|
}
|
|
81
|
-
},
|
|
81
|
+
}, ke = ue(async (e) => {
|
|
82
82
|
let t = e.target.files?.[0];
|
|
83
83
|
if (t) {
|
|
84
84
|
e.target.value = "";
|
|
@@ -91,73 +91,73 @@ var y = () => {
|
|
|
91
91
|
}));
|
|
92
92
|
} catch {}
|
|
93
93
|
}
|
|
94
|
-
}, [T]),
|
|
95
|
-
|
|
94
|
+
}, [T]), Ae = async (e) => {
|
|
95
|
+
I(null), R(null);
|
|
96
96
|
try {
|
|
97
|
-
await
|
|
97
|
+
await K({ variables: { id: e } }), R(b("devportal.versionPublishedSuccess", "Version published successfully"));
|
|
98
98
|
} catch (e) {
|
|
99
|
-
|
|
99
|
+
I(e instanceof Error ? e.message : b("devportal.versionPublishFailed", "Failed to publish version"));
|
|
100
100
|
}
|
|
101
|
-
},
|
|
102
|
-
|
|
101
|
+
}, je = async (e) => {
|
|
102
|
+
I(null), R(null);
|
|
103
103
|
try {
|
|
104
|
-
await
|
|
104
|
+
await q({ variables: { id: e } }), R(b("devportal.versionDeprecatedSuccess", "Version deprecated successfully"));
|
|
105
105
|
} catch (e) {
|
|
106
|
-
|
|
106
|
+
I(e instanceof Error ? e.message : b("devportal.versionDeprecateFailed", "Failed to deprecate version"));
|
|
107
107
|
}
|
|
108
|
-
},
|
|
108
|
+
}, Me = (e) => {
|
|
109
109
|
let t = e.status?.toUpperCase();
|
|
110
|
-
return t === "PUBLISHED" && e.isLatest ? /* @__PURE__ */ _(
|
|
110
|
+
return t === "PUBLISHED" && e.isLatest ? /* @__PURE__ */ _(f, {
|
|
111
111
|
size: 16,
|
|
112
112
|
className: "text-status-success-text"
|
|
113
|
-
}) : t === "DRAFT" ? /* @__PURE__ */ _(
|
|
113
|
+
}) : t === "DRAFT" ? /* @__PURE__ */ _(he, {
|
|
114
114
|
size: 16,
|
|
115
115
|
className: "text-status-warning-text"
|
|
116
|
-
}) : t === "DEPRECATED" ? /* @__PURE__ */ _(
|
|
116
|
+
}) : t === "DEPRECATED" ? /* @__PURE__ */ _(me, {
|
|
117
117
|
size: 16,
|
|
118
118
|
className: "text-text-secondary"
|
|
119
|
-
}) : /* @__PURE__ */ _(
|
|
119
|
+
}) : /* @__PURE__ */ _(m, {
|
|
120
120
|
size: 16,
|
|
121
121
|
className: "text-accent-blue"
|
|
122
122
|
});
|
|
123
|
-
},
|
|
124
|
-
|
|
123
|
+
}, Ne = (e, t) => {
|
|
124
|
+
B((n) => {
|
|
125
125
|
let r = new Set(n);
|
|
126
126
|
return t ? r.add(e) : r.delete(e), r;
|
|
127
127
|
});
|
|
128
|
-
},
|
|
129
|
-
|
|
128
|
+
}, Pe = (e) => {
|
|
129
|
+
B((t) => {
|
|
130
130
|
let n = new Set(t);
|
|
131
|
-
return
|
|
131
|
+
return J.forEach((t) => {
|
|
132
132
|
e ? n.add(t.id) : n.delete(t.id);
|
|
133
133
|
}), n;
|
|
134
134
|
});
|
|
135
|
-
}, $ = () =>
|
|
136
|
-
return
|
|
135
|
+
}, $ = () => B(/* @__PURE__ */ new Set());
|
|
136
|
+
return we && !W ? /* @__PURE__ */ _(i, {
|
|
137
137
|
title: b("devportal.versionManagement", "Version Management"),
|
|
138
138
|
description: b("devportal.versionManagementDescription", "Manage your application versions"),
|
|
139
139
|
backLink: `/apps/${w}`,
|
|
140
140
|
backLabel: b("devportal.backToApplication", "Back to Application"),
|
|
141
141
|
children: /* @__PURE__ */ _("div", {
|
|
142
142
|
className: "flex items-center justify-center py-16",
|
|
143
|
-
children: /* @__PURE__ */ _(
|
|
143
|
+
children: /* @__PURE__ */ _(p, { className: "h-8 w-8 animate-spin text-muted-foreground" })
|
|
144
144
|
})
|
|
145
|
-
}) :
|
|
145
|
+
}) : G && !W ? /* @__PURE__ */ _(i, {
|
|
146
146
|
title: b("devportal.versionManagement", "Version Management"),
|
|
147
147
|
description: b("devportal.versionManagementDescription", "Manage your application versions"),
|
|
148
148
|
backLink: `/apps/${w}`,
|
|
149
149
|
backLabel: b("devportal.backToApplication", "Back to Application"),
|
|
150
150
|
children: /* @__PURE__ */ _(t, {
|
|
151
|
-
icon: /* @__PURE__ */ _(
|
|
151
|
+
icon: /* @__PURE__ */ _(d, {
|
|
152
152
|
size: 32,
|
|
153
153
|
className: "text-status-error-text"
|
|
154
154
|
}),
|
|
155
155
|
title: b("devportal.failedToLoadVersions", "Failed to load versions"),
|
|
156
|
-
description:
|
|
156
|
+
description: G.message || b("devportal.versionsLoadError", "An error occurred while loading versions")
|
|
157
157
|
})
|
|
158
|
-
}) : /* @__PURE__ */ _(
|
|
159
|
-
permission:
|
|
160
|
-
children: /* @__PURE__ */ v(
|
|
158
|
+
}) : /* @__PURE__ */ _(se, {
|
|
159
|
+
permission: s.APP_READ,
|
|
160
|
+
children: /* @__PURE__ */ v(i, {
|
|
161
161
|
title: b("devportal.versionManagement", "Version Management"),
|
|
162
162
|
description: b("devportal.versionManagementDescription", "Manage your application versions"),
|
|
163
163
|
backLink: `/apps/${w}`,
|
|
@@ -167,40 +167,40 @@ var y = () => {
|
|
|
167
167
|
disabled: !x,
|
|
168
168
|
"aria-disabled": !x,
|
|
169
169
|
className: "inline-flex items-center gap-2 rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50",
|
|
170
|
-
children: [/* @__PURE__ */ _(
|
|
170
|
+
children: [/* @__PURE__ */ _(h, { size: 16 }), b("devportal.newVersion", "New Version")]
|
|
171
171
|
}),
|
|
172
172
|
children: [
|
|
173
|
-
|
|
173
|
+
F && /* @__PURE__ */ v("div", {
|
|
174
174
|
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",
|
|
175
175
|
children: [
|
|
176
|
-
/* @__PURE__ */ _(
|
|
176
|
+
/* @__PURE__ */ _(d, {
|
|
177
177
|
size: 16,
|
|
178
178
|
className: "flex-shrink-0"
|
|
179
179
|
}),
|
|
180
|
-
|
|
180
|
+
F,
|
|
181
181
|
/* @__PURE__ */ _("button", {
|
|
182
|
-
onClick: () =>
|
|
182
|
+
onClick: () => I(null),
|
|
183
183
|
className: "ml-auto text-status-error-text hover:text-status-error-text",
|
|
184
184
|
children: b("devportal.dismiss", "Dismiss")
|
|
185
185
|
})
|
|
186
186
|
]
|
|
187
187
|
}),
|
|
188
|
-
|
|
188
|
+
L && /* @__PURE__ */ v("div", {
|
|
189
189
|
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",
|
|
190
190
|
children: [
|
|
191
|
-
/* @__PURE__ */ _(
|
|
191
|
+
/* @__PURE__ */ _(f, {
|
|
192
192
|
size: 16,
|
|
193
193
|
className: "flex-shrink-0"
|
|
194
194
|
}),
|
|
195
|
-
|
|
195
|
+
L,
|
|
196
196
|
/* @__PURE__ */ _("button", {
|
|
197
|
-
onClick: () =>
|
|
197
|
+
onClick: () => R(null),
|
|
198
198
|
className: "ml-auto text-status-success-text hover:text-status-success-text",
|
|
199
199
|
children: b("devportal.dismiss", "Dismiss")
|
|
200
200
|
})
|
|
201
201
|
]
|
|
202
202
|
}),
|
|
203
|
-
|
|
203
|
+
J.length > 0 && /* @__PURE__ */ _("div", {
|
|
204
204
|
className: "rounded-lg border bg-card p-4",
|
|
205
205
|
children: /* @__PURE__ */ v("div", {
|
|
206
206
|
className: "flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between",
|
|
@@ -208,16 +208,16 @@ var y = () => {
|
|
|
208
208
|
className: "flex flex-wrap items-center gap-3",
|
|
209
209
|
children: [/* @__PURE__ */ v("div", {
|
|
210
210
|
className: "flex items-center gap-2",
|
|
211
|
-
children: [/* @__PURE__ */ _(
|
|
212
|
-
checked:
|
|
213
|
-
indeterminate:
|
|
214
|
-
onChange:
|
|
211
|
+
children: [/* @__PURE__ */ _(a, {
|
|
212
|
+
checked: Q,
|
|
213
|
+
indeterminate: De,
|
|
214
|
+
onChange: Pe,
|
|
215
215
|
ariaLabel: "Select all visible versions"
|
|
216
216
|
}), /* @__PURE__ */ _("span", {
|
|
217
217
|
className: "text-sm font-medium",
|
|
218
218
|
children: b("devportal.selectAllVisible", "Select all visible")
|
|
219
219
|
})]
|
|
220
|
-
}),
|
|
220
|
+
}), z.size > 0 && /* @__PURE__ */ _("button", {
|
|
221
221
|
onClick: $,
|
|
222
222
|
className: "text-sm text-muted-foreground hover:text-foreground",
|
|
223
223
|
children: b("devportal.clearSelection", "Clear selection")
|
|
@@ -227,44 +227,44 @@ var y = () => {
|
|
|
227
227
|
children: [
|
|
228
228
|
/* @__PURE__ */ v("span", {
|
|
229
229
|
className: "rounded-full bg-muted px-3 py-1 text-sm font-medium text-muted-foreground",
|
|
230
|
-
children: [
|
|
230
|
+
children: [z.size, " selected"]
|
|
231
231
|
}),
|
|
232
232
|
/* @__PURE__ */ v("button", {
|
|
233
|
-
onClick: () =>
|
|
234
|
-
disabled:
|
|
233
|
+
onClick: () => H("publish"),
|
|
234
|
+
disabled: X.length === 0 || !S,
|
|
235
235
|
"aria-disabled": !S,
|
|
236
236
|
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",
|
|
237
|
-
children: [b("devportal.publishSelected", "Publish Selected"),
|
|
237
|
+
children: [b("devportal.publishSelected", "Publish Selected"), X.length > 0 ? ` (${X.length})` : ""]
|
|
238
238
|
}),
|
|
239
239
|
/* @__PURE__ */ v("button", {
|
|
240
|
-
onClick: () =>
|
|
241
|
-
disabled:
|
|
240
|
+
onClick: () => H("deprecate"),
|
|
241
|
+
disabled: Z.length === 0 || !C,
|
|
242
242
|
"aria-disabled": !C,
|
|
243
243
|
className: "rounded-md border border-status-warning-bg px-3 py-2 text-sm font-medium text-status-warning-text hover:bg-status-warning-bg-subtle disabled:cursor-not-allowed disabled:opacity-50",
|
|
244
|
-
children: [b("devportal.deprecateSelected", "Deprecate Selected"),
|
|
244
|
+
children: [b("devportal.deprecateSelected", "Deprecate Selected"), Z.length > 0 ? ` (${Z.length})` : ""]
|
|
245
245
|
})
|
|
246
246
|
]
|
|
247
247
|
})]
|
|
248
248
|
})
|
|
249
249
|
}),
|
|
250
|
-
|
|
251
|
-
data:
|
|
250
|
+
J.length > 0 ? /* @__PURE__ */ _(ie, {
|
|
251
|
+
data: J,
|
|
252
252
|
keyField: "id",
|
|
253
253
|
columns: [
|
|
254
254
|
{
|
|
255
255
|
key: "select",
|
|
256
|
-
header: /* @__PURE__ */ _(
|
|
257
|
-
checked:
|
|
258
|
-
indeterminate:
|
|
259
|
-
onChange:
|
|
256
|
+
header: /* @__PURE__ */ _(a, {
|
|
257
|
+
checked: Q,
|
|
258
|
+
indeterminate: De,
|
|
259
|
+
onChange: Pe,
|
|
260
260
|
ariaLabel: "Select all visible versions"
|
|
261
261
|
}),
|
|
262
262
|
className: "w-12",
|
|
263
263
|
render: (e) => /* @__PURE__ */ _("div", {
|
|
264
264
|
onClick: (e) => e.stopPropagation(),
|
|
265
|
-
children: /* @__PURE__ */ _(
|
|
266
|
-
checked:
|
|
267
|
-
onChange: (t) =>
|
|
265
|
+
children: /* @__PURE__ */ _(a, {
|
|
266
|
+
checked: z.has(e.id),
|
|
267
|
+
onChange: (t) => Ne(e.id, t),
|
|
268
268
|
ariaLabel: `Select version ${e.version}`
|
|
269
269
|
})
|
|
270
270
|
})
|
|
@@ -275,7 +275,7 @@ var y = () => {
|
|
|
275
275
|
render: (e) => /* @__PURE__ */ v("div", {
|
|
276
276
|
className: "flex items-center gap-2",
|
|
277
277
|
children: [
|
|
278
|
-
|
|
278
|
+
Me(e),
|
|
279
279
|
/* @__PURE__ */ _("span", {
|
|
280
280
|
className: "font-mono font-medium",
|
|
281
281
|
children: e.version
|
|
@@ -302,12 +302,12 @@ var y = () => {
|
|
|
302
302
|
{
|
|
303
303
|
key: "status",
|
|
304
304
|
header: b("devportal.status", "Status"),
|
|
305
|
-
render: (e) => /* @__PURE__ */ _(
|
|
305
|
+
render: (e) => /* @__PURE__ */ _(re, { status: e.status })
|
|
306
306
|
},
|
|
307
307
|
{
|
|
308
308
|
key: "publishedAt",
|
|
309
309
|
header: b("devportal.published", "Published"),
|
|
310
|
-
render: (e) => e.publishedAt ?
|
|
310
|
+
render: (e) => e.publishedAt ? ce(new Date(e.publishedAt), "MMM d, yyyy") : "-"
|
|
311
311
|
},
|
|
312
312
|
{
|
|
313
313
|
key: "actions",
|
|
@@ -319,38 +319,38 @@ var y = () => {
|
|
|
319
319
|
className: "text-xs text-primary hover:underline disabled:opacity-50",
|
|
320
320
|
disabled: !S,
|
|
321
321
|
"aria-disabled": !S,
|
|
322
|
-
onClick: () =>
|
|
322
|
+
onClick: () => Ae(e.id),
|
|
323
323
|
children: b("devportal.publish", "Publish")
|
|
324
324
|
}), e.status?.toUpperCase() === "PUBLISHED" && !e.isLatest && /* @__PURE__ */ _("button", {
|
|
325
325
|
className: "text-xs text-status-warning-text hover:underline disabled:opacity-50",
|
|
326
326
|
disabled: !C,
|
|
327
327
|
"aria-disabled": !C,
|
|
328
|
-
onClick: () =>
|
|
328
|
+
onClick: () => je(e.id),
|
|
329
329
|
children: b("devportal.deprecate", "Deprecate")
|
|
330
330
|
})]
|
|
331
331
|
})
|
|
332
332
|
}
|
|
333
333
|
]
|
|
334
334
|
}) : /* @__PURE__ */ _(t, {
|
|
335
|
-
icon: /* @__PURE__ */ _(
|
|
335
|
+
icon: /* @__PURE__ */ _(m, { size: 32 }),
|
|
336
336
|
title: b("devportal.noVersionsYet", "No versions yet"),
|
|
337
337
|
description: b("devportal.noVersionsYetDescription", "Create your first version to start distributing your app"),
|
|
338
338
|
action: /* @__PURE__ */ v("button", {
|
|
339
339
|
onClick: () => A(!0),
|
|
340
340
|
className: "inline-flex items-center gap-2 rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90",
|
|
341
|
-
children: [/* @__PURE__ */ _(
|
|
341
|
+
children: [/* @__PURE__ */ _(h, { size: 16 }), b("devportal.createVersion", "Create Version")]
|
|
342
342
|
})
|
|
343
343
|
}),
|
|
344
|
-
k && /* @__PURE__ */ _(
|
|
344
|
+
k && /* @__PURE__ */ _(o, {
|
|
345
345
|
open: k,
|
|
346
346
|
onOpenChange: A,
|
|
347
|
-
onConfirm:
|
|
347
|
+
onConfirm: Oe,
|
|
348
348
|
title: b("devportal.createNewVersion", "Create New Version"),
|
|
349
|
-
confirmLabel:
|
|
349
|
+
confirmLabel: Ee ? b("devportal.creating", "Creating...") : b("devportal.createVersion", "Create Version"),
|
|
350
350
|
children: /* @__PURE__ */ v("div", {
|
|
351
351
|
className: "space-y-4",
|
|
352
352
|
children: [
|
|
353
|
-
/* @__PURE__ */ _(
|
|
353
|
+
/* @__PURE__ */ _(ae, {
|
|
354
354
|
label: b("devportal.versionNumber", "Version Number"),
|
|
355
355
|
value: j.version,
|
|
356
356
|
onChange: (e) => M({
|
|
@@ -374,12 +374,12 @@ var y = () => {
|
|
|
374
374
|
type: "button",
|
|
375
375
|
onClick: () => P("file"),
|
|
376
376
|
className: `inline-flex items-center gap-1.5 rounded px-3 py-1 text-xs font-medium transition-colors ${N === "file" ? "bg-primary text-primary-foreground" : "hover:bg-muted"}`,
|
|
377
|
-
children: [/* @__PURE__ */ _(
|
|
377
|
+
children: [/* @__PURE__ */ _(_e, { size: 12 }), " Upload zip"]
|
|
378
378
|
}), /* @__PURE__ */ v("button", {
|
|
379
379
|
type: "button",
|
|
380
380
|
onClick: () => P("manifest"),
|
|
381
381
|
className: `inline-flex items-center gap-1.5 rounded px-3 py-1 text-xs font-medium transition-colors ${N === "manifest" ? "bg-primary text-primary-foreground" : "hover:bg-muted"}`,
|
|
382
|
-
children: [/* @__PURE__ */ _(
|
|
382
|
+
children: [/* @__PURE__ */ _(ge, { size: 12 }), " Paste manifest JSON"]
|
|
383
383
|
})]
|
|
384
384
|
}),
|
|
385
385
|
N === "file" && /* @__PURE__ */ v("div", {
|
|
@@ -392,7 +392,7 @@ var y = () => {
|
|
|
392
392
|
type: "file",
|
|
393
393
|
accept: ".zip",
|
|
394
394
|
className: "hidden",
|
|
395
|
-
onChange:
|
|
395
|
+
onChange: ke
|
|
396
396
|
}),
|
|
397
397
|
/* @__PURE__ */ _("button", {
|
|
398
398
|
type: "button",
|
|
@@ -400,7 +400,7 @@ var y = () => {
|
|
|
400
400
|
onClick: () => O.current?.click(),
|
|
401
401
|
className: "inline-flex items-center gap-1.5 rounded-md border px-3 py-1.5 text-sm font-medium hover:bg-muted transition-colors disabled:opacity-50",
|
|
402
402
|
children: E ? /* @__PURE__ */ v(g, { children: [
|
|
403
|
-
/* @__PURE__ */ _(
|
|
403
|
+
/* @__PURE__ */ _(p, {
|
|
404
404
|
size: 14,
|
|
405
405
|
className: "animate-spin"
|
|
406
406
|
}),
|
|
@@ -409,7 +409,7 @@ var y = () => {
|
|
|
409
409
|
Ce,
|
|
410
410
|
"%"
|
|
411
411
|
] }) : /* @__PURE__ */ v(g, { children: [
|
|
412
|
-
/* @__PURE__ */ _(
|
|
412
|
+
/* @__PURE__ */ _(_e, { size: 14 }),
|
|
413
413
|
" ",
|
|
414
414
|
j.packageUrl ? "Replace zip" : "Upload zip"
|
|
415
415
|
] })
|
|
@@ -442,7 +442,7 @@ var y = () => {
|
|
|
442
442
|
})
|
|
443
443
|
]
|
|
444
444
|
}),
|
|
445
|
-
/* @__PURE__ */ _(
|
|
445
|
+
/* @__PURE__ */ _(oe, {
|
|
446
446
|
label: b("devportal.releaseNotes", "Release Notes"),
|
|
447
447
|
value: j.releaseNotes,
|
|
448
448
|
onChange: (e) => M({
|
|
@@ -455,36 +455,36 @@ var y = () => {
|
|
|
455
455
|
]
|
|
456
456
|
})
|
|
457
457
|
}),
|
|
458
|
-
/* @__PURE__ */ _(
|
|
459
|
-
open:
|
|
458
|
+
/* @__PURE__ */ _(o, {
|
|
459
|
+
open: V === "publish",
|
|
460
460
|
onOpenChange: (e) => {
|
|
461
|
-
e ||
|
|
461
|
+
e || H(null);
|
|
462
462
|
},
|
|
463
463
|
onConfirm: async () => {
|
|
464
|
-
if (
|
|
465
|
-
|
|
466
|
-
let e = await Promise.allSettled(
|
|
467
|
-
|
|
464
|
+
if (X.length === 0) return;
|
|
465
|
+
I(null);
|
|
466
|
+
let e = await Promise.allSettled(X.map((e) => K({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
|
|
467
|
+
R(`Published ${t} version${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`), $(), H(null);
|
|
468
468
|
},
|
|
469
469
|
title: b("devportal.publishSelectedVersions", "Publish selected versions"),
|
|
470
|
-
description: `${b("devportal.publish", "Publish")} ${
|
|
470
|
+
description: `${b("devportal.publish", "Publish")} ${X.length} selected version${X.length === 1 ? "" : "s"}?`,
|
|
471
471
|
confirmLabel: b("devportal.publish", "Publish"),
|
|
472
472
|
cancelLabel: b("devportal.cancel", "Cancel"),
|
|
473
473
|
variant: "success"
|
|
474
474
|
}),
|
|
475
|
-
/* @__PURE__ */ _(
|
|
476
|
-
open:
|
|
475
|
+
/* @__PURE__ */ _(o, {
|
|
476
|
+
open: V === "deprecate",
|
|
477
477
|
onOpenChange: (e) => {
|
|
478
|
-
e ||
|
|
478
|
+
e || H(null);
|
|
479
479
|
},
|
|
480
480
|
onConfirm: async () => {
|
|
481
|
-
if (
|
|
482
|
-
|
|
483
|
-
let e = await Promise.allSettled(
|
|
484
|
-
|
|
481
|
+
if (Z.length === 0) return;
|
|
482
|
+
I(null);
|
|
483
|
+
let e = await Promise.allSettled(Z.map((e) => q({ variables: { id: e.id } }))), t = e.filter((e) => e.status === "fulfilled").length, n = e.length - t;
|
|
484
|
+
R(`Deprecated ${t} version${t === 1 ? "" : "s"}${n > 0 ? ` • ${n} failed` : ""}`), $(), H(null);
|
|
485
485
|
},
|
|
486
486
|
title: b("devportal.deprecateSelectedVersions", "Deprecate selected versions"),
|
|
487
|
-
description: `${b("devportal.deprecate", "Deprecate")} ${
|
|
487
|
+
description: `${b("devportal.deprecate", "Deprecate")} ${Z.length} selected version${Z.length === 1 ? "" : "s"}? ${b("devportal.deprecateVersionsWarning", "Deprecated versions remain visible but should no longer be promoted.")}`,
|
|
488
488
|
confirmLabel: b("devportal.deprecate", "Deprecate"),
|
|
489
489
|
cancelLabel: b("devportal.cancel", "Cancel"),
|
|
490
490
|
variant: "warning"
|