@burdenoff/microfe-devportal 2026.611.2 → 2026.616.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.
- package/dist/devportal/components/SectionNav.js +105 -41
- package/dist/devportal/components/SectionNav.js.map +1 -1
- package/dist/devportal/hooks/useGraphQL.js +1 -1
- package/dist/devportal/pages/AdminReviewPage.js +36 -36
- package/dist/devportal/pages/AnalyticsDashboardPage.js +150 -150
- package/dist/devportal/pages/AnalyticsDashboardPage.js.map +1 -1
- package/dist/devportal/pages/ApiKeysPage.js +184 -172
- package/dist/devportal/pages/ApiKeysPage.js.map +1 -1
- package/dist/devportal/pages/AppLogsPage.js +9 -9
- package/dist/devportal/pages/ApplicationDetailPage.js +414 -414
- package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
- package/dist/devportal/pages/ApplicationVersionsPage.js +44 -44
- package/dist/devportal/pages/ApplicationVersionsPage.js.map +1 -1
- package/dist/devportal/pages/ApplicationsPage.js +118 -118
- package/dist/devportal/pages/ApplicationsPage.js.map +1 -1
- package/dist/devportal/pages/CreateApiKeyPage.js +20 -20
- package/dist/devportal/pages/CreateApplicationPage.js +46 -66
- package/dist/devportal/pages/CreateApplicationPage.js.map +1 -1
- package/dist/devportal/pages/CreateOAuthClientPage.js +20 -20
- package/dist/devportal/pages/CreateOrganizationPage.js +125 -442
- package/dist/devportal/pages/CreateOrganizationPage.js.map +1 -1
- package/dist/devportal/pages/CreateWebhookPage.js +25 -25
- package/dist/devportal/pages/DashboardPage.js +160 -145
- package/dist/devportal/pages/DashboardPage.js.map +1 -1
- package/dist/devportal/pages/DelegationsPage.js +22 -22
- package/dist/devportal/pages/EditApplicationPage.js +297 -317
- package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
- package/dist/devportal/pages/ListingPreviewPage.js +9 -9
- package/dist/devportal/pages/OAuthClientDetailPage.js +17 -17
- package/dist/devportal/pages/OAuthClientsPage.js +16 -16
- package/dist/devportal/pages/OrganizationDetailPage.js +78 -78
- package/dist/devportal/pages/OrganizationMembersPage.js +260 -260
- package/dist/devportal/pages/OrganizationMembersPage.js.map +1 -1
- package/dist/devportal/pages/OrganizationsPage.js +18 -18
- package/dist/devportal/pages/PublishPage.js +16 -16
- package/dist/devportal/pages/PublisherProfilePage.js +156 -146
- package/dist/devportal/pages/PublisherProfilePage.js.map +1 -1
- package/dist/devportal/pages/RevenueDashboardPage.js +512 -362
- package/dist/devportal/pages/RevenueDashboardPage.js.map +1 -1
- 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 +140 -140
- package/dist/devportal/pages/WebhooksPage.js.map +1 -1
- package/dist/devportal/providers/DevportalProvider.js +46 -33
- package/dist/devportal/providers/DevportalProvider.js.map +1 -1
- package/dist/generated/global-operations.js +69 -55
- package/dist/generated/global-operations.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import { useDevportal as e } from "../providers/DevportalProvider.js";
|
|
2
2
|
import { LoadingState as t } from "../components/LoadingState.js";
|
|
3
3
|
import { EmptyState as n } from "../components/EmptyState.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
4
|
+
import { useDeactivateAppMutation as ee, useDeleteApplicationMutation as te, useGetApplicationQuery as ne, useSubmitApplicationMutation as r, useUpdateApplicationMutation as i } from "../../generated/global-operations.js";
|
|
5
|
+
import { PageLayout as a, PageSection as o } from "../components/PageLayout.js";
|
|
6
|
+
import { APP_TYPE_LABELS as s } from "../utils/constants.js";
|
|
7
|
+
import { StatusBadge as re } from "../components/StatusBadge.js";
|
|
8
|
+
import { nativeImpact as c, nativeNotify as l } from "../../utils/nativeBridge.js";
|
|
9
|
+
import { CheckboxField as u, InputField as d, SelectField as f, TagInput as p, TextareaField as m } from "../components/FormField.js";
|
|
10
|
+
import { ConfirmDialog as h } from "../components/ConfirmDialog.js";
|
|
11
11
|
import { PermissionGuard as g } from "../components/PermissionGuard.js";
|
|
12
12
|
import "../components/index.js";
|
|
13
13
|
import { DEVPORTAL_PERMISSIONS as _ } from "../constants/permissions.js";
|
|
14
14
|
import { useDevportalPermission as v } from "../hooks/usePermission.js";
|
|
15
15
|
import { useEffect as y, useState as b } from "react";
|
|
16
16
|
import { useI18n as x } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
17
|
-
import { AlertCircle as S, AlertTriangle as C, AppWindow as w, Archive as
|
|
18
|
-
import { useParams as
|
|
19
|
-
import { Fragment as
|
|
17
|
+
import { AlertCircle as S, AlertTriangle as C, AppWindow as w, Archive as T, Power as ie, Save as ae, Send as oe, Trash2 as se } from "lucide-react";
|
|
18
|
+
import { useParams as ce } from "react-router-dom";
|
|
19
|
+
import { Fragment as E, jsx as D, jsxs as O } from "react/jsx-runtime";
|
|
20
20
|
//#region src/devportal/pages/EditApplicationPage.tsx
|
|
21
|
-
var
|
|
21
|
+
var le = Object.entries(s).map(([e, t]) => ({
|
|
22
22
|
value: e,
|
|
23
23
|
label: t
|
|
24
|
-
})),
|
|
24
|
+
})), ue = [
|
|
25
25
|
{
|
|
26
26
|
value: "PUBLIC",
|
|
27
27
|
label: "Public - Visible to everyone"
|
|
@@ -38,57 +38,37 @@ var ue = Object.entries(a).map(([e, t]) => ({
|
|
|
38
38
|
value: "INTERNAL",
|
|
39
39
|
label: "Internal - Only visible within organization"
|
|
40
40
|
}
|
|
41
|
-
],
|
|
41
|
+
], de = [
|
|
42
42
|
{
|
|
43
|
-
value: "
|
|
44
|
-
label: "
|
|
43
|
+
value: "ai",
|
|
44
|
+
label: "AI & Automation"
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
|
-
value: "
|
|
48
|
-
label: "
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
value: "analytics",
|
|
52
|
-
label: "Analytics"
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
value: "automation",
|
|
56
|
-
label: "Automation"
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
value: "developer-tools",
|
|
60
|
-
label: "Developer Tools"
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
value: "finance",
|
|
64
|
-
label: "Finance"
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
value: "hr",
|
|
68
|
-
label: "HR & People"
|
|
47
|
+
value: "integration",
|
|
48
|
+
label: "Action in an App"
|
|
69
49
|
},
|
|
70
50
|
{
|
|
71
|
-
value: "
|
|
72
|
-
label: "
|
|
51
|
+
value: "data",
|
|
52
|
+
label: "Data & Transform"
|
|
73
53
|
},
|
|
74
54
|
{
|
|
75
|
-
value: "
|
|
76
|
-
label: "
|
|
55
|
+
value: "flow",
|
|
56
|
+
label: "Flow & Logic"
|
|
77
57
|
},
|
|
78
58
|
{
|
|
79
|
-
value: "
|
|
80
|
-
label: "
|
|
59
|
+
value: "core",
|
|
60
|
+
label: "Core"
|
|
81
61
|
},
|
|
82
62
|
{
|
|
83
|
-
value: "
|
|
84
|
-
label: "
|
|
63
|
+
value: "communication",
|
|
64
|
+
label: "Communication"
|
|
85
65
|
},
|
|
86
66
|
{
|
|
87
|
-
value: "
|
|
88
|
-
label: "
|
|
67
|
+
value: "trigger",
|
|
68
|
+
label: "Triggers"
|
|
89
69
|
}
|
|
90
70
|
];
|
|
91
|
-
function
|
|
71
|
+
function fe(e) {
|
|
92
72
|
return e ? {
|
|
93
73
|
id: e.id,
|
|
94
74
|
name: e.name,
|
|
@@ -129,21 +109,21 @@ function pe(e) {
|
|
|
129
109
|
updatedAt: e.updatedAt
|
|
130
110
|
} : null;
|
|
131
111
|
}
|
|
132
|
-
var
|
|
133
|
-
let { navigate:
|
|
134
|
-
let n =
|
|
112
|
+
var k = () => {
|
|
113
|
+
let { navigate: s, basePath: k } = e(), { appId: A } = ce(), { t: j } = x(), { allowed: M } = v(_.APP_UPDATE), { allowed: N } = v(_.APP_DELETE), P = (e, t) => {
|
|
114
|
+
let n = j(e);
|
|
135
115
|
return n === e ? t : n;
|
|
136
|
-
}, [
|
|
137
|
-
variables: { id:
|
|
138
|
-
skip: !
|
|
139
|
-
}), [
|
|
116
|
+
}, [F, I] = b(!1), [L, R] = b({}), [z, B] = b(!1), [V, H] = b(!1), [pe, U] = b(!1), [W, G] = b(!1), { data: K, loading: me, error: q } = ne({
|
|
117
|
+
variables: { id: A },
|
|
118
|
+
skip: !A
|
|
119
|
+
}), [J] = i(), [he] = te(), [ge] = r(), [_e] = ee(), Y = fe(K?.application);
|
|
140
120
|
y(() => {
|
|
141
|
-
let e =
|
|
142
|
-
if (!
|
|
121
|
+
let e = Y?.name;
|
|
122
|
+
if (!A || !e) return;
|
|
143
123
|
let t = window.__breadcrumbRegistry;
|
|
144
|
-
return t?.register(
|
|
145
|
-
}, [
|
|
146
|
-
let [
|
|
124
|
+
return t?.register(A, e), () => t?.unregister(A);
|
|
125
|
+
}, [A, Y?.name]);
|
|
126
|
+
let [X, Z] = b({
|
|
147
127
|
name: "",
|
|
148
128
|
slug: "",
|
|
149
129
|
shortDescription: "",
|
|
@@ -162,376 +142,376 @@ var O = () => {
|
|
|
162
142
|
requiresApproval: !1
|
|
163
143
|
});
|
|
164
144
|
y(() => {
|
|
165
|
-
|
|
166
|
-
name:
|
|
167
|
-
slug:
|
|
168
|
-
shortDescription:
|
|
169
|
-
description:
|
|
170
|
-
appType:
|
|
171
|
-
visibility:
|
|
172
|
-
category:
|
|
173
|
-
tags:
|
|
174
|
-
keywords:
|
|
175
|
-
websiteUrl:
|
|
176
|
-
documentationUrl:
|
|
177
|
-
supportUrl:
|
|
178
|
-
privacyPolicyUrl:
|
|
179
|
-
termsOfServiceUrl:
|
|
180
|
-
githubUrl:
|
|
181
|
-
requiresApproval:
|
|
182
|
-
}),
|
|
183
|
-
}, [
|
|
184
|
-
let
|
|
185
|
-
|
|
186
|
-
},
|
|
187
|
-
|
|
145
|
+
Y && (Z({
|
|
146
|
+
name: Y.name,
|
|
147
|
+
slug: Y.slug,
|
|
148
|
+
shortDescription: Y.shortDescription || "",
|
|
149
|
+
description: Y.description || "",
|
|
150
|
+
appType: Y.appType,
|
|
151
|
+
visibility: Y.visibility,
|
|
152
|
+
category: Y.category || "",
|
|
153
|
+
tags: Y.tags,
|
|
154
|
+
keywords: Y.keywords,
|
|
155
|
+
websiteUrl: Y.websiteUrl || "",
|
|
156
|
+
documentationUrl: Y.documentationUrl || "",
|
|
157
|
+
supportUrl: Y.supportUrl || "",
|
|
158
|
+
privacyPolicyUrl: Y.privacyPolicyUrl || "",
|
|
159
|
+
termsOfServiceUrl: Y.termsOfServiceUrl || "",
|
|
160
|
+
githubUrl: Y.githubUrl || "",
|
|
161
|
+
requiresApproval: Y.requiresApproval
|
|
162
|
+
}), G(!1));
|
|
163
|
+
}, [K?.application]);
|
|
164
|
+
let Q = (e) => {
|
|
165
|
+
s?.(`${k}${e}`);
|
|
166
|
+
}, $ = (e, t) => {
|
|
167
|
+
Z((n) => ({
|
|
188
168
|
...n,
|
|
189
169
|
[e]: t
|
|
190
|
-
})),
|
|
170
|
+
})), G(!0), L[e] && R((t) => ({
|
|
191
171
|
...t,
|
|
192
172
|
[e]: void 0
|
|
193
173
|
}));
|
|
194
|
-
},
|
|
174
|
+
}, ve = () => {
|
|
195
175
|
let e = {};
|
|
196
|
-
return
|
|
197
|
-
},
|
|
198
|
-
if (e.preventDefault(), !(!
|
|
199
|
-
|
|
176
|
+
return X.name.trim() ? X.name.length < 3 ? e.name = P("devportal.appNameMinLength", "Name must be at least 3 characters") : X.name.length > 100 && (e.name = P("devportal.appNameMaxLength", "Name must be less than 100 characters")) : e.name = P("devportal.appNameRequired", "Application name is required"), X.slug.trim() ? /^[a-z0-9-]+$/.test(X.slug) || (e.slug = P("devportal.slugInvalidChars", "Slug can only contain lowercase letters, numbers, and hyphens")) : e.slug = P("devportal.slugRequired", "Slug is required"), X.shortDescription.trim() ? X.shortDescription.length > 200 && (e.shortDescription = P("devportal.shortDescriptionMaxLength", "Short description must be less than 200 characters")) : e.shortDescription = P("devportal.shortDescriptionRequired", "Short description is required"), X.appType || (e.appType = P("devportal.appTypeRequired", "Application type is required")), X.category || (e.category = P("devportal.categoryRequired", "Category is required")), R(e), Object.keys(e).length === 0;
|
|
177
|
+
}, ye = async (e) => {
|
|
178
|
+
if (e.preventDefault(), !(!ve() || !Y)) {
|
|
179
|
+
I(!0);
|
|
200
180
|
try {
|
|
201
|
-
await
|
|
202
|
-
id:
|
|
181
|
+
await J({ variables: {
|
|
182
|
+
id: Y.id,
|
|
203
183
|
input: {
|
|
204
|
-
name:
|
|
205
|
-
shortDescription:
|
|
206
|
-
description:
|
|
207
|
-
appType:
|
|
208
|
-
visibility:
|
|
209
|
-
category:
|
|
210
|
-
tags:
|
|
211
|
-
keywords:
|
|
212
|
-
websiteUrl:
|
|
213
|
-
documentationUrl:
|
|
214
|
-
supportUrl:
|
|
215
|
-
privacyPolicyUrl:
|
|
216
|
-
termsOfServiceUrl:
|
|
217
|
-
githubUrl:
|
|
184
|
+
name: X.name,
|
|
185
|
+
shortDescription: X.shortDescription,
|
|
186
|
+
description: X.description,
|
|
187
|
+
appType: X.appType,
|
|
188
|
+
visibility: X.visibility,
|
|
189
|
+
category: X.category,
|
|
190
|
+
tags: X.tags,
|
|
191
|
+
keywords: X.keywords,
|
|
192
|
+
websiteUrl: X.websiteUrl || null,
|
|
193
|
+
documentationUrl: X.documentationUrl || null,
|
|
194
|
+
supportUrl: X.supportUrl || null,
|
|
195
|
+
privacyPolicyUrl: X.privacyPolicyUrl || null,
|
|
196
|
+
termsOfServiceUrl: X.termsOfServiceUrl || null,
|
|
197
|
+
githubUrl: X.githubUrl || null
|
|
218
198
|
}
|
|
219
|
-
} }),
|
|
199
|
+
} }), G(!1);
|
|
220
200
|
} catch (e) {
|
|
221
201
|
console.error("Failed to update application:", e);
|
|
222
202
|
} finally {
|
|
223
|
-
|
|
203
|
+
I(!1);
|
|
224
204
|
}
|
|
225
205
|
}
|
|
226
|
-
},
|
|
227
|
-
if (
|
|
228
|
-
|
|
206
|
+
}, be = async () => {
|
|
207
|
+
if (Y) {
|
|
208
|
+
c("medium");
|
|
229
209
|
try {
|
|
230
|
-
await
|
|
210
|
+
await he({ variables: { id: Y.id } }), l("success"), Q("/apps");
|
|
231
211
|
} catch (e) {
|
|
232
|
-
|
|
212
|
+
l("error"), console.error("Failed to delete application:", e);
|
|
233
213
|
}
|
|
234
214
|
}
|
|
235
|
-
},
|
|
236
|
-
if (
|
|
237
|
-
await
|
|
238
|
-
id:
|
|
215
|
+
}, xe = async () => {
|
|
216
|
+
if (Y) try {
|
|
217
|
+
await J({ variables: {
|
|
218
|
+
id: Y.id,
|
|
239
219
|
input: { visibility: "PRIVATE" }
|
|
240
|
-
} }),
|
|
220
|
+
} }), H(!1);
|
|
241
221
|
} catch (e) {
|
|
242
222
|
console.error("Failed to deprecate application:", e);
|
|
243
223
|
}
|
|
244
|
-
},
|
|
245
|
-
if (
|
|
246
|
-
await
|
|
224
|
+
}, Se = async () => {
|
|
225
|
+
if (Y) try {
|
|
226
|
+
await _e({ variables: { id: Y.id } }), U(!1), Q("/apps");
|
|
247
227
|
} catch (e) {
|
|
248
228
|
console.error("Failed to deactivate application:", e);
|
|
249
229
|
}
|
|
250
|
-
},
|
|
251
|
-
if (
|
|
252
|
-
|
|
230
|
+
}, Ce = async () => {
|
|
231
|
+
if (Y) try {
|
|
232
|
+
I(!0), await ge({ variables: { id: Y.id } });
|
|
253
233
|
} catch (e) {
|
|
254
234
|
console.error("Failed to submit for review:", e);
|
|
255
235
|
} finally {
|
|
256
|
-
|
|
236
|
+
I(!1);
|
|
257
237
|
}
|
|
258
238
|
};
|
|
259
|
-
if (
|
|
260
|
-
if (
|
|
261
|
-
title:
|
|
262
|
-
backLink: `${
|
|
263
|
-
backLabel:
|
|
264
|
-
children: /* @__PURE__ */
|
|
239
|
+
if (me) return /* @__PURE__ */ D(t, { message: P("devportal.loadingApplication", "Loading application...") });
|
|
240
|
+
if (q) return /* @__PURE__ */ D(a, {
|
|
241
|
+
title: P("devportal.error", "Error"),
|
|
242
|
+
backLink: `${k}/apps`,
|
|
243
|
+
backLabel: P("devportal.backToApplications", "Back to Applications"),
|
|
244
|
+
children: /* @__PURE__ */ O("div", {
|
|
265
245
|
className: "flex flex-col items-center justify-center py-12 text-center",
|
|
266
246
|
children: [
|
|
267
|
-
/* @__PURE__ */
|
|
247
|
+
/* @__PURE__ */ D(S, {
|
|
268
248
|
size: 48,
|
|
269
249
|
className: "text-destructive mb-4"
|
|
270
250
|
}),
|
|
271
|
-
/* @__PURE__ */
|
|
251
|
+
/* @__PURE__ */ D("h3", {
|
|
272
252
|
className: "text-lg font-semibold mb-2",
|
|
273
|
-
children:
|
|
253
|
+
children: P("devportal.failedToLoadApplication", "Failed to load application")
|
|
274
254
|
}),
|
|
275
|
-
/* @__PURE__ */
|
|
255
|
+
/* @__PURE__ */ D("p", {
|
|
276
256
|
className: "text-sm text-muted-foreground",
|
|
277
|
-
children:
|
|
257
|
+
children: q.message
|
|
278
258
|
})
|
|
279
259
|
]
|
|
280
260
|
})
|
|
281
261
|
});
|
|
282
|
-
if (!
|
|
283
|
-
title:
|
|
284
|
-
backLink: `${
|
|
285
|
-
backLabel:
|
|
286
|
-
children: /* @__PURE__ */
|
|
287
|
-
icon: /* @__PURE__ */
|
|
288
|
-
title:
|
|
289
|
-
description:
|
|
262
|
+
if (!Y) return /* @__PURE__ */ D(a, {
|
|
263
|
+
title: P("devportal.notFound", "Not Found"),
|
|
264
|
+
backLink: `${k}/apps`,
|
|
265
|
+
backLabel: P("devportal.backToApplications", "Back to Applications"),
|
|
266
|
+
children: /* @__PURE__ */ D(n, {
|
|
267
|
+
icon: /* @__PURE__ */ D(w, { size: 48 }),
|
|
268
|
+
title: P("devportal.applicationNotFound", "Application not found"),
|
|
269
|
+
description: P("devportal.applicationNotFoundDescription", "The application you're looking for doesn't exist or you don't have access to it.")
|
|
290
270
|
})
|
|
291
271
|
});
|
|
292
|
-
let we =
|
|
293
|
-
return /* @__PURE__ */
|
|
272
|
+
let we = Y.status === "DRAFT" || Y.status === "REJECTED", Te = Y.status === "PUBLISHED", Ee = Y.status === "ACTIVE" || Y.status === "PUBLISHED";
|
|
273
|
+
return /* @__PURE__ */ D(g, {
|
|
294
274
|
permission: _.APP_UPDATE,
|
|
295
|
-
children: /* @__PURE__ */
|
|
296
|
-
title: `${
|
|
297
|
-
description:
|
|
298
|
-
backLink: `${
|
|
299
|
-
backLabel:
|
|
300
|
-
actions: /* @__PURE__ */
|
|
275
|
+
children: /* @__PURE__ */ O(a, {
|
|
276
|
+
title: `${P("devportal.editAppTitlePrefix", "Edit:")} ${Y.name}`,
|
|
277
|
+
description: P("devportal.editAppDescription", "Update your application settings"),
|
|
278
|
+
backLink: `${k}/apps/${Y.id}`,
|
|
279
|
+
backLabel: P("devportal.backToApplication", "Back to Application"),
|
|
280
|
+
actions: /* @__PURE__ */ D("div", {
|
|
301
281
|
className: "flex items-center gap-2",
|
|
302
|
-
children: /* @__PURE__ */
|
|
303
|
-
status:
|
|
282
|
+
children: /* @__PURE__ */ D(re, {
|
|
283
|
+
status: Y.status,
|
|
304
284
|
type: "app"
|
|
305
285
|
})
|
|
306
286
|
}),
|
|
307
287
|
children: [
|
|
308
|
-
/* @__PURE__ */
|
|
309
|
-
onSubmit:
|
|
288
|
+
/* @__PURE__ */ O("form", {
|
|
289
|
+
onSubmit: ye,
|
|
310
290
|
className: "space-y-8 max-w-3xl",
|
|
311
291
|
children: [
|
|
312
|
-
|
|
292
|
+
Y.status === "PUBLISHED" && /* @__PURE__ */ O("div", {
|
|
313
293
|
className: "rounded-lg border border-border-subtle bg-status-warning-bg-subtle p-4 flex gap-3",
|
|
314
|
-
children: [/* @__PURE__ */
|
|
294
|
+
children: [/* @__PURE__ */ D(C, {
|
|
315
295
|
size: 20,
|
|
316
296
|
className: "text-status-warning-text flex-shrink-0 mt-0.5"
|
|
317
|
-
}), /* @__PURE__ */
|
|
297
|
+
}), /* @__PURE__ */ O("div", {
|
|
318
298
|
className: "text-sm text-status-warning-text",
|
|
319
|
-
children: [/* @__PURE__ */
|
|
299
|
+
children: [/* @__PURE__ */ D("p", {
|
|
320
300
|
className: "font-medium",
|
|
321
|
-
children:
|
|
322
|
-
}), /* @__PURE__ */
|
|
301
|
+
children: P("devportal.appIsPublished", "This application is published")
|
|
302
|
+
}), /* @__PURE__ */ D("p", {
|
|
323
303
|
className: "mt-1 text-status-warning-text",
|
|
324
|
-
children:
|
|
304
|
+
children: P("devportal.publishedAppChangesWarning", "Changes to published apps may require re-review. Major changes will put the app back into review status.")
|
|
325
305
|
})]
|
|
326
306
|
})]
|
|
327
307
|
}),
|
|
328
|
-
/* @__PURE__ */
|
|
329
|
-
title:
|
|
330
|
-
description:
|
|
331
|
-
children: /* @__PURE__ */
|
|
308
|
+
/* @__PURE__ */ D(o, {
|
|
309
|
+
title: P("devportal.basicInformation", "Basic Information"),
|
|
310
|
+
description: P("devportal.basicInformationDescription", "Core details about your application"),
|
|
311
|
+
children: /* @__PURE__ */ O("div", {
|
|
332
312
|
className: "space-y-4",
|
|
333
313
|
children: [
|
|
334
|
-
/* @__PURE__ */
|
|
335
|
-
label:
|
|
336
|
-
value:
|
|
337
|
-
onChange: (e) =>
|
|
338
|
-
placeholder:
|
|
314
|
+
/* @__PURE__ */ D(d, {
|
|
315
|
+
label: P("devportal.applicationName", "Application Name"),
|
|
316
|
+
value: X.name,
|
|
317
|
+
onChange: (e) => $("name", e.target.value),
|
|
318
|
+
placeholder: P("devportal.applicationNamePlaceholder", "My Awesome App"),
|
|
339
319
|
required: !0,
|
|
340
|
-
error:
|
|
320
|
+
error: L.name
|
|
341
321
|
}),
|
|
342
|
-
/* @__PURE__ */
|
|
343
|
-
label:
|
|
344
|
-
value:
|
|
345
|
-
onChange: (e) =>
|
|
346
|
-
placeholder:
|
|
322
|
+
/* @__PURE__ */ D(d, {
|
|
323
|
+
label: P("devportal.slug", "Slug"),
|
|
324
|
+
value: X.slug,
|
|
325
|
+
onChange: (e) => $("slug", e.target.value.toLowerCase()),
|
|
326
|
+
placeholder: P("devportal.slugPlaceholder", "my-awesome-app"),
|
|
347
327
|
required: !0,
|
|
348
|
-
error:
|
|
349
|
-
hint:
|
|
328
|
+
error: L.slug,
|
|
329
|
+
hint: P("devportal.slugChangeWarning", "Changing the slug may break existing integrations")
|
|
350
330
|
}),
|
|
351
|
-
/* @__PURE__ */
|
|
352
|
-
label:
|
|
353
|
-
value:
|
|
354
|
-
onChange: (e) =>
|
|
355
|
-
placeholder:
|
|
331
|
+
/* @__PURE__ */ D(m, {
|
|
332
|
+
label: P("devportal.shortDescription", "Short Description"),
|
|
333
|
+
value: X.shortDescription,
|
|
334
|
+
onChange: (e) => $("shortDescription", e.target.value),
|
|
335
|
+
placeholder: P("devportal.shortDescriptionPlaceholder", "A brief description of what your app does"),
|
|
356
336
|
required: !0,
|
|
357
|
-
error:
|
|
358
|
-
hint: `${
|
|
337
|
+
error: L.shortDescription,
|
|
338
|
+
hint: `${X.shortDescription.length}/200 ${P("devportal.characters", "characters")}`,
|
|
359
339
|
rows: 2
|
|
360
340
|
}),
|
|
361
|
-
/* @__PURE__ */
|
|
362
|
-
label:
|
|
363
|
-
value:
|
|
364
|
-
onChange: (e) =>
|
|
365
|
-
placeholder:
|
|
341
|
+
/* @__PURE__ */ D(m, {
|
|
342
|
+
label: P("devportal.fullDescription", "Full Description"),
|
|
343
|
+
value: X.description,
|
|
344
|
+
onChange: (e) => $("description", e.target.value),
|
|
345
|
+
placeholder: P("devportal.fullDescriptionPlaceholder", "Detailed description of your application, features, and use cases..."),
|
|
366
346
|
rows: 6,
|
|
367
|
-
hint:
|
|
347
|
+
hint: P("devportal.markdownSupported", "Markdown formatting is supported")
|
|
368
348
|
})
|
|
369
349
|
]
|
|
370
350
|
})
|
|
371
351
|
}),
|
|
372
|
-
/* @__PURE__ */
|
|
373
|
-
title:
|
|
374
|
-
description:
|
|
352
|
+
/* @__PURE__ */ O(o, {
|
|
353
|
+
title: P("devportal.classification", "Classification"),
|
|
354
|
+
description: P("devportal.classificationDescription", "Categorize your application"),
|
|
375
355
|
children: [
|
|
376
|
-
/* @__PURE__ */
|
|
356
|
+
/* @__PURE__ */ O("div", {
|
|
377
357
|
className: "grid gap-4 sm:grid-cols-2",
|
|
378
358
|
children: [
|
|
379
|
-
/* @__PURE__ */
|
|
380
|
-
label:
|
|
381
|
-
value:
|
|
382
|
-
onChange: (e) =>
|
|
383
|
-
options:
|
|
359
|
+
/* @__PURE__ */ D(f, {
|
|
360
|
+
label: P("devportal.applicationType", "Application Type"),
|
|
361
|
+
value: X.appType,
|
|
362
|
+
onChange: (e) => $("appType", e.target.value),
|
|
363
|
+
options: le,
|
|
384
364
|
required: !0,
|
|
385
|
-
error:
|
|
365
|
+
error: L.appType
|
|
386
366
|
}),
|
|
387
|
-
/* @__PURE__ */
|
|
388
|
-
label:
|
|
389
|
-
value:
|
|
390
|
-
onChange: (e) =>
|
|
391
|
-
options:
|
|
367
|
+
/* @__PURE__ */ D(f, {
|
|
368
|
+
label: P("devportal.category", "Category"),
|
|
369
|
+
value: X.category,
|
|
370
|
+
onChange: (e) => $("category", e.target.value),
|
|
371
|
+
options: de,
|
|
392
372
|
required: !0,
|
|
393
|
-
error:
|
|
373
|
+
error: L.category
|
|
394
374
|
}),
|
|
395
|
-
/* @__PURE__ */
|
|
396
|
-
label:
|
|
397
|
-
value:
|
|
398
|
-
onChange: (e) =>
|
|
399
|
-
options:
|
|
400
|
-
hint:
|
|
375
|
+
/* @__PURE__ */ D(f, {
|
|
376
|
+
label: P("devportal.visibility", "Visibility"),
|
|
377
|
+
value: X.visibility,
|
|
378
|
+
onChange: (e) => $("visibility", e.target.value),
|
|
379
|
+
options: ue,
|
|
380
|
+
hint: P("devportal.visibilityHint", "Controls who can see this app once published. Public apps still require admin review and approval before appearing in the store.")
|
|
401
381
|
})
|
|
402
382
|
]
|
|
403
383
|
}),
|
|
404
|
-
/* @__PURE__ */
|
|
405
|
-
label:
|
|
406
|
-
value:
|
|
407
|
-
onChange: (e) =>
|
|
408
|
-
placeholder:
|
|
384
|
+
/* @__PURE__ */ D(p, {
|
|
385
|
+
label: P("devportal.tags", "Tags"),
|
|
386
|
+
value: X.tags,
|
|
387
|
+
onChange: (e) => $("tags", e),
|
|
388
|
+
placeholder: P("devportal.addTagsPlaceholder", "Add tags (press Enter)")
|
|
409
389
|
}),
|
|
410
|
-
/* @__PURE__ */
|
|
411
|
-
label:
|
|
412
|
-
value:
|
|
413
|
-
onChange: (e) =>
|
|
414
|
-
placeholder:
|
|
390
|
+
/* @__PURE__ */ D(p, {
|
|
391
|
+
label: P("devportal.keywords", "Keywords"),
|
|
392
|
+
value: X.keywords,
|
|
393
|
+
onChange: (e) => $("keywords", e),
|
|
394
|
+
placeholder: P("devportal.addKeywordsPlaceholder", "Add keywords (press Enter)")
|
|
415
395
|
})
|
|
416
396
|
]
|
|
417
397
|
}),
|
|
418
|
-
/* @__PURE__ */
|
|
419
|
-
title:
|
|
420
|
-
description:
|
|
421
|
-
children: /* @__PURE__ */
|
|
398
|
+
/* @__PURE__ */ D(o, {
|
|
399
|
+
title: P("devportal.links", "Links"),
|
|
400
|
+
description: P("devportal.linksDescription", "External resources for your application"),
|
|
401
|
+
children: /* @__PURE__ */ O("div", {
|
|
422
402
|
className: "grid gap-4 sm:grid-cols-2",
|
|
423
403
|
children: [
|
|
424
|
-
/* @__PURE__ */
|
|
425
|
-
label:
|
|
404
|
+
/* @__PURE__ */ D(d, {
|
|
405
|
+
label: P("devportal.websiteUrl", "Website URL"),
|
|
426
406
|
type: "url",
|
|
427
|
-
value:
|
|
428
|
-
onChange: (e) =>
|
|
429
|
-
placeholder:
|
|
407
|
+
value: X.websiteUrl,
|
|
408
|
+
onChange: (e) => $("websiteUrl", e.target.value),
|
|
409
|
+
placeholder: P("devportal.websiteUrlPlaceholder", "https://example.com")
|
|
430
410
|
}),
|
|
431
|
-
/* @__PURE__ */
|
|
432
|
-
label:
|
|
411
|
+
/* @__PURE__ */ D(d, {
|
|
412
|
+
label: P("devportal.documentationUrl", "Documentation URL"),
|
|
433
413
|
type: "url",
|
|
434
|
-
value:
|
|
435
|
-
onChange: (e) =>
|
|
436
|
-
placeholder:
|
|
414
|
+
value: X.documentationUrl,
|
|
415
|
+
onChange: (e) => $("documentationUrl", e.target.value),
|
|
416
|
+
placeholder: P("devportal.documentationUrlPlaceholder", "https://docs.example.com")
|
|
437
417
|
}),
|
|
438
|
-
/* @__PURE__ */
|
|
439
|
-
label:
|
|
418
|
+
/* @__PURE__ */ D(d, {
|
|
419
|
+
label: P("devportal.supportUrl", "Support URL"),
|
|
440
420
|
type: "url",
|
|
441
|
-
value:
|
|
442
|
-
onChange: (e) =>
|
|
443
|
-
placeholder:
|
|
421
|
+
value: X.supportUrl,
|
|
422
|
+
onChange: (e) => $("supportUrl", e.target.value),
|
|
423
|
+
placeholder: P("devportal.supportUrlPlaceholder", "https://support.example.com")
|
|
444
424
|
}),
|
|
445
|
-
/* @__PURE__ */
|
|
446
|
-
label:
|
|
425
|
+
/* @__PURE__ */ D(d, {
|
|
426
|
+
label: P("devportal.githubUrl", "GitHub URL"),
|
|
447
427
|
type: "url",
|
|
448
|
-
value:
|
|
449
|
-
onChange: (e) =>
|
|
450
|
-
placeholder:
|
|
428
|
+
value: X.githubUrl,
|
|
429
|
+
onChange: (e) => $("githubUrl", e.target.value),
|
|
430
|
+
placeholder: P("devportal.githubUrlPlaceholder", "https://github.com/org/repo")
|
|
451
431
|
}),
|
|
452
|
-
/* @__PURE__ */
|
|
453
|
-
label:
|
|
432
|
+
/* @__PURE__ */ D(d, {
|
|
433
|
+
label: P("devportal.privacyPolicyUrl", "Privacy Policy URL"),
|
|
454
434
|
type: "url",
|
|
455
|
-
value:
|
|
456
|
-
onChange: (e) =>
|
|
457
|
-
placeholder:
|
|
435
|
+
value: X.privacyPolicyUrl,
|
|
436
|
+
onChange: (e) => $("privacyPolicyUrl", e.target.value),
|
|
437
|
+
placeholder: P("devportal.privacyPolicyUrlPlaceholder", "https://example.com/privacy")
|
|
458
438
|
}),
|
|
459
|
-
/* @__PURE__ */
|
|
460
|
-
label:
|
|
439
|
+
/* @__PURE__ */ D(d, {
|
|
440
|
+
label: P("devportal.termsOfServiceUrl", "Terms of Service URL"),
|
|
461
441
|
type: "url",
|
|
462
|
-
value:
|
|
463
|
-
onChange: (e) =>
|
|
464
|
-
placeholder:
|
|
442
|
+
value: X.termsOfServiceUrl,
|
|
443
|
+
onChange: (e) => $("termsOfServiceUrl", e.target.value),
|
|
444
|
+
placeholder: P("devportal.termsOfServiceUrlPlaceholder", "https://example.com/terms")
|
|
465
445
|
})
|
|
466
446
|
]
|
|
467
447
|
})
|
|
468
448
|
}),
|
|
469
|
-
/* @__PURE__ */
|
|
470
|
-
title:
|
|
471
|
-
description:
|
|
472
|
-
children: /* @__PURE__ */
|
|
449
|
+
/* @__PURE__ */ D(o, {
|
|
450
|
+
title: P("devportal.settings", "Settings"),
|
|
451
|
+
description: P("devportal.settingsDescription", "Additional configuration options"),
|
|
452
|
+
children: /* @__PURE__ */ D("div", {
|
|
473
453
|
className: "space-y-4",
|
|
474
|
-
children: /* @__PURE__ */
|
|
475
|
-
label:
|
|
476
|
-
description:
|
|
477
|
-
checked:
|
|
478
|
-
onChange: (e) =>
|
|
454
|
+
children: /* @__PURE__ */ D(u, {
|
|
455
|
+
label: P("devportal.requireWorkspaceAdminApproval", "Require workspace admin approval"),
|
|
456
|
+
description: P("devportal.requireWorkspaceAdminApprovalDescription", "When enabled, workspace admins must approve installations before users can access this app"),
|
|
457
|
+
checked: X.requiresApproval,
|
|
458
|
+
onChange: (e) => $("requiresApproval", e.target.checked)
|
|
479
459
|
})
|
|
480
460
|
})
|
|
481
461
|
}),
|
|
482
|
-
/* @__PURE__ */
|
|
462
|
+
/* @__PURE__ */ O("div", {
|
|
483
463
|
className: "flex flex-col gap-4 border-t pt-6",
|
|
484
|
-
children: [/* @__PURE__ */
|
|
464
|
+
children: [/* @__PURE__ */ O("div", {
|
|
485
465
|
className: "flex items-center justify-between",
|
|
486
|
-
children: [/* @__PURE__ */
|
|
466
|
+
children: [/* @__PURE__ */ D("div", {
|
|
487
467
|
className: "flex items-center gap-2",
|
|
488
|
-
children: we && /* @__PURE__ */
|
|
468
|
+
children: we && /* @__PURE__ */ O("button", {
|
|
489
469
|
type: "button",
|
|
490
|
-
onClick:
|
|
491
|
-
disabled:
|
|
470
|
+
onClick: Ce,
|
|
471
|
+
disabled: F || W,
|
|
492
472
|
className: "inline-flex items-center gap-2 rounded-md border border-primary bg-primary/10 px-4 py-2 text-sm font-medium text-primary hover:bg-primary/20 transition-colors disabled:opacity-50",
|
|
493
|
-
children: [/* @__PURE__ */
|
|
473
|
+
children: [/* @__PURE__ */ D(oe, { size: 16 }), P("devportal.submitForReview", "Submit for Review")]
|
|
494
474
|
})
|
|
495
|
-
}), /* @__PURE__ */
|
|
475
|
+
}), /* @__PURE__ */ D("button", {
|
|
496
476
|
type: "submit",
|
|
497
|
-
disabled:
|
|
498
|
-
"aria-disabled": !
|
|
477
|
+
disabled: F || !W || !M,
|
|
478
|
+
"aria-disabled": !M,
|
|
499
479
|
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 transition-colors disabled:opacity-50",
|
|
500
|
-
children:
|
|
480
|
+
children: F ? /* @__PURE__ */ O(E, { children: [/* @__PURE__ */ D("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent" }), P("devportal.saving", "Saving...")] }) : /* @__PURE__ */ O(E, { children: [/* @__PURE__ */ D(ae, { size: 16 }), P("devportal.saveChanges", "Save Changes")] })
|
|
501
481
|
})]
|
|
502
|
-
}), /* @__PURE__ */
|
|
482
|
+
}), /* @__PURE__ */ O("div", {
|
|
503
483
|
className: "rounded-lg border border-border-subtle bg-status-error-bg-subtle p-4",
|
|
504
484
|
children: [
|
|
505
|
-
/* @__PURE__ */
|
|
485
|
+
/* @__PURE__ */ D("h3", {
|
|
506
486
|
className: "text-sm font-medium text-status-error-text",
|
|
507
|
-
children:
|
|
487
|
+
children: P("devportal.dangerZone", "Danger Zone")
|
|
508
488
|
}),
|
|
509
|
-
/* @__PURE__ */
|
|
489
|
+
/* @__PURE__ */ D("p", {
|
|
510
490
|
className: "mt-1 text-sm text-status-error-text",
|
|
511
|
-
children:
|
|
491
|
+
children: P("devportal.dangerZoneWarning", "These actions are irreversible. Please proceed with caution.")
|
|
512
492
|
}),
|
|
513
|
-
/* @__PURE__ */
|
|
493
|
+
/* @__PURE__ */ O("div", {
|
|
514
494
|
className: "mt-4 flex gap-3",
|
|
515
495
|
children: [
|
|
516
|
-
Te && /* @__PURE__ */
|
|
496
|
+
Te && /* @__PURE__ */ O("button", {
|
|
517
497
|
type: "button",
|
|
518
|
-
onClick: () =>
|
|
498
|
+
onClick: () => H(!0),
|
|
519
499
|
className: "inline-flex items-center gap-2 rounded-md border border-accent-orange bg-bg-surface px-3 py-1.5 text-sm font-medium text-accent-orange hover:bg-accent-orange-subtle transition-colors",
|
|
520
|
-
children: [/* @__PURE__ */
|
|
500
|
+
children: [/* @__PURE__ */ D(T, { size: 14 }), P("devportal.deprecateApp", "Deprecate App")]
|
|
521
501
|
}),
|
|
522
|
-
Ee && /* @__PURE__ */
|
|
502
|
+
Ee && /* @__PURE__ */ O("button", {
|
|
523
503
|
type: "button",
|
|
524
|
-
onClick: () =>
|
|
504
|
+
onClick: () => U(!0),
|
|
525
505
|
className: "inline-flex items-center gap-2 rounded-md border border-accent-orange bg-bg-surface px-3 py-1.5 text-sm font-medium text-accent-orange hover:bg-accent-orange-subtle transition-colors",
|
|
526
|
-
children: [/* @__PURE__ */
|
|
506
|
+
children: [/* @__PURE__ */ D(ie, { size: 14 }), P("devportal.deactivateApp", "Deactivate App")]
|
|
527
507
|
}),
|
|
528
|
-
/* @__PURE__ */
|
|
508
|
+
/* @__PURE__ */ O("button", {
|
|
529
509
|
type: "button",
|
|
530
|
-
onClick: () =>
|
|
531
|
-
disabled: !
|
|
532
|
-
"aria-disabled": !
|
|
510
|
+
onClick: () => B(!0),
|
|
511
|
+
disabled: !N,
|
|
512
|
+
"aria-disabled": !N,
|
|
533
513
|
className: "inline-flex items-center gap-2 rounded-md border border-status-error-bg bg-bg-surface px-3 py-1.5 text-sm font-medium text-status-error-text hover:bg-status-error-bg-subtle transition-colors disabled:opacity-50",
|
|
534
|
-
children: [/* @__PURE__ */
|
|
514
|
+
children: [/* @__PURE__ */ D(se, { size: 14 }), P("devportal.deleteApp", "Delete App")]
|
|
535
515
|
})
|
|
536
516
|
]
|
|
537
517
|
})
|
|
@@ -540,38 +520,38 @@ var O = () => {
|
|
|
540
520
|
})
|
|
541
521
|
]
|
|
542
522
|
}),
|
|
543
|
-
/* @__PURE__ */
|
|
544
|
-
open:
|
|
545
|
-
onOpenChange:
|
|
546
|
-
title:
|
|
547
|
-
description:
|
|
548
|
-
confirmLabel:
|
|
523
|
+
/* @__PURE__ */ D(h, {
|
|
524
|
+
open: z,
|
|
525
|
+
onOpenChange: B,
|
|
526
|
+
title: P("devportal.deleteApplication", "Delete Application"),
|
|
527
|
+
description: P("devportal.deleteApplicationConfirm", `Are you sure you want to delete "${Y.name}"? This action cannot be undone. All OAuth clients, API keys, webhooks, and analytics data will be permanently deleted.`),
|
|
528
|
+
confirmLabel: P("devportal.deleteApplication", "Delete Application"),
|
|
549
529
|
variant: "destructive",
|
|
550
|
-
onConfirm:
|
|
530
|
+
onConfirm: be
|
|
551
531
|
}),
|
|
552
|
-
/* @__PURE__ */
|
|
553
|
-
open:
|
|
554
|
-
onOpenChange:
|
|
555
|
-
title:
|
|
556
|
-
description:
|
|
557
|
-
confirmLabel:
|
|
532
|
+
/* @__PURE__ */ D(h, {
|
|
533
|
+
open: V,
|
|
534
|
+
onOpenChange: H,
|
|
535
|
+
title: P("devportal.deprecateApplication", "Deprecate Application"),
|
|
536
|
+
description: P("devportal.deprecateApplicationConfirm", `Are you sure you want to deprecate "${Y.name}"? Existing users will still be able to use the app, but it will no longer be visible in the marketplace and new installations will be disabled.`),
|
|
537
|
+
confirmLabel: P("devportal.deprecateApplication", "Deprecate Application"),
|
|
558
538
|
variant: "warning",
|
|
559
|
-
onConfirm:
|
|
539
|
+
onConfirm: xe
|
|
560
540
|
}),
|
|
561
|
-
/* @__PURE__ */
|
|
562
|
-
open:
|
|
563
|
-
onOpenChange:
|
|
564
|
-
title:
|
|
565
|
-
description:
|
|
566
|
-
confirmLabel:
|
|
541
|
+
/* @__PURE__ */ D(h, {
|
|
542
|
+
open: pe,
|
|
543
|
+
onOpenChange: U,
|
|
544
|
+
title: P("devportal.deactivateApplication", "Deactivate Application"),
|
|
545
|
+
description: P("devportal.deactivateApplicationConfirm", `Are you sure you want to deactivate "${Y.name}"? This will revoke all active tokens and disable the app from the auth-svc layer. The app will no longer be able to authenticate or act on behalf of users.`),
|
|
546
|
+
confirmLabel: P("devportal.deactivateApplication", "Deactivate Application"),
|
|
567
547
|
variant: "destructive",
|
|
568
|
-
onConfirm:
|
|
548
|
+
onConfirm: Se
|
|
569
549
|
})
|
|
570
550
|
]
|
|
571
551
|
})
|
|
572
552
|
});
|
|
573
553
|
};
|
|
574
554
|
//#endregion
|
|
575
|
-
export {
|
|
555
|
+
export { k as EditApplicationPage };
|
|
576
556
|
|
|
577
557
|
//# sourceMappingURL=EditApplicationPage.js.map
|