@burdenoff/microfe-devportal 2026.611.2 → 2026.614.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 +32 -32
- 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 +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 +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,10 +1,10 @@
|
|
|
1
1
|
import { useDevportal as e } from "../providers/DevportalProvider.js";
|
|
2
2
|
import { useDevportalEventBus as t } from "../events/index.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
3
|
+
import { useCurrentUserAppsQuery as n, useGenerateApiKeyMutation as r } from "../../generated/global-operations.js";
|
|
4
|
+
import { PageLayout as i, PageSection as a } from "../components/PageLayout.js";
|
|
5
|
+
import { NewSecretAlert as o } from "../components/SecretDisplay.js";
|
|
6
|
+
import { InputField as s, SelectField as c, TagInput as l } from "../components/FormField.js";
|
|
7
|
+
import { Alert as u } from "../components/ConfirmDialog.js";
|
|
8
8
|
import { PermissionGuard as d } from "../components/PermissionGuard.js";
|
|
9
9
|
import "../components/index.js";
|
|
10
10
|
import { DEVPORTAL_PERMISSIONS as f } from "../constants/permissions.js";
|
|
@@ -32,7 +32,7 @@ var w = () => {
|
|
|
32
32
|
let { t: S } = h(), w = (e, t) => {
|
|
33
33
|
let n = S(e);
|
|
34
34
|
return n === e ? t : n;
|
|
35
|
-
}, { navigate: T, basePath: E } = e(), [D, O] = m(null), [k, A] = m({}), [j, M] = m(null), [N, { loading: P }] =
|
|
35
|
+
}, { navigate: T, basePath: E } = e(), [D, O] = m(null), [k, A] = m({}), [j, M] = m(null), [N, { loading: P }] = r(), F = t(), { data: I, loading: L } = n({ fetchPolicy: "cache-and-network" }), R = I?.currentUserApps?.apps.map((e) => ({
|
|
36
36
|
id: e.id,
|
|
37
37
|
name: e.name,
|
|
38
38
|
clientId: e.clientId
|
|
@@ -82,19 +82,19 @@ var w = () => {
|
|
|
82
82
|
}, K = () => {
|
|
83
83
|
V("/api-keys");
|
|
84
84
|
};
|
|
85
|
-
return D ? /* @__PURE__ */ y(
|
|
85
|
+
return D ? /* @__PURE__ */ y(i, {
|
|
86
86
|
title: "API Key Generated",
|
|
87
87
|
description: "Your new API key has been generated successfully",
|
|
88
88
|
children: /* @__PURE__ */ b("div", {
|
|
89
89
|
className: "max-w-2xl space-y-6",
|
|
90
90
|
children: [
|
|
91
|
-
/* @__PURE__ */ y(
|
|
91
|
+
/* @__PURE__ */ y(o, {
|
|
92
92
|
title: "API Key & Secret",
|
|
93
93
|
secret: D.apiSecret,
|
|
94
94
|
description: "Store this secret securely — you won't be able to see it again.",
|
|
95
95
|
onDismiss: K
|
|
96
96
|
}),
|
|
97
|
-
/* @__PURE__ */ y(
|
|
97
|
+
/* @__PURE__ */ y(u, {
|
|
98
98
|
variant: "info",
|
|
99
99
|
title: "Usage Instructions",
|
|
100
100
|
children: /* @__PURE__ */ b("div", {
|
|
@@ -142,7 +142,7 @@ var w = () => {
|
|
|
142
142
|
})
|
|
143
143
|
}) : /* @__PURE__ */ y(d, {
|
|
144
144
|
permission: f.APP_UPDATE,
|
|
145
|
-
children: /* @__PURE__ */ y(
|
|
145
|
+
children: /* @__PURE__ */ y(i, {
|
|
146
146
|
title: "Generate API Key",
|
|
147
147
|
description: "Generate a new API key for programmatic access",
|
|
148
148
|
backLink: "/api-keys",
|
|
@@ -151,13 +151,13 @@ var w = () => {
|
|
|
151
151
|
onSubmit: G,
|
|
152
152
|
className: "max-w-3xl space-y-8",
|
|
153
153
|
children: [
|
|
154
|
-
j && /* @__PURE__ */ y(
|
|
154
|
+
j && /* @__PURE__ */ y(u, {
|
|
155
155
|
variant: "error",
|
|
156
156
|
title: "Error Generating API Key",
|
|
157
157
|
onDismiss: () => M(null),
|
|
158
158
|
children: j
|
|
159
159
|
}),
|
|
160
|
-
/* @__PURE__ */ y(
|
|
160
|
+
/* @__PURE__ */ y(a, {
|
|
161
161
|
title: "Basic Information",
|
|
162
162
|
description: "Configure the API key settings",
|
|
163
163
|
children: /* @__PURE__ */ b("div", {
|
|
@@ -168,7 +168,7 @@ var w = () => {
|
|
|
168
168
|
className: "text-sm text-muted-foreground",
|
|
169
169
|
children: "Loading apps..."
|
|
170
170
|
})]
|
|
171
|
-
}) : R.length === 0 ? /* @__PURE__ */ y(
|
|
171
|
+
}) : R.length === 0 ? /* @__PURE__ */ y(u, {
|
|
172
172
|
variant: "warning",
|
|
173
173
|
title: "No Apps Found",
|
|
174
174
|
children: /* @__PURE__ */ b("p", { children: [
|
|
@@ -181,7 +181,7 @@ var w = () => {
|
|
|
181
181
|
children: "Create an app"
|
|
182
182
|
})
|
|
183
183
|
] })
|
|
184
|
-
}) : /* @__PURE__ */ y(
|
|
184
|
+
}) : /* @__PURE__ */ y(c, {
|
|
185
185
|
label: "App",
|
|
186
186
|
value: z.appId,
|
|
187
187
|
onChange: (e) => U("appId", e.target.value),
|
|
@@ -193,7 +193,7 @@ var w = () => {
|
|
|
193
193
|
error: k.appId,
|
|
194
194
|
required: !0,
|
|
195
195
|
hint: "The OAuth app this API key will be associated with"
|
|
196
|
-
}), /* @__PURE__ */ y(
|
|
196
|
+
}), /* @__PURE__ */ y(s, {
|
|
197
197
|
label: "Key Name",
|
|
198
198
|
placeholder: "e.g., Production Backend Key",
|
|
199
199
|
value: z.name,
|
|
@@ -204,12 +204,12 @@ var w = () => {
|
|
|
204
204
|
})]
|
|
205
205
|
})
|
|
206
206
|
}),
|
|
207
|
-
/* @__PURE__ */ y(
|
|
207
|
+
/* @__PURE__ */ y(a, {
|
|
208
208
|
title: "Scopes",
|
|
209
209
|
description: "Define what this API key can access",
|
|
210
210
|
children: /* @__PURE__ */ y("div", {
|
|
211
211
|
className: "space-y-4",
|
|
212
|
-
children: /* @__PURE__ */ y(
|
|
212
|
+
children: /* @__PURE__ */ y(l, {
|
|
213
213
|
label: "Scopes",
|
|
214
214
|
value: z.scopes,
|
|
215
215
|
onChange: (e) => U("scopes", e),
|
|
@@ -222,10 +222,10 @@ var w = () => {
|
|
|
222
222
|
/* @__PURE__ */ y(x, {
|
|
223
223
|
title: "Advanced settings",
|
|
224
224
|
description: "Rate-limit overrides, allowed origins, scope tuning, and expiration.",
|
|
225
|
-
children: /* @__PURE__ */ b(
|
|
225
|
+
children: /* @__PURE__ */ b(a, {
|
|
226
226
|
title: "Key Expiration",
|
|
227
227
|
description: "Set when this key should expire",
|
|
228
|
-
children: [/* @__PURE__ */ y(
|
|
228
|
+
children: [/* @__PURE__ */ y(c, {
|
|
229
229
|
label: "Expires In",
|
|
230
230
|
value: z.expiresIn,
|
|
231
231
|
onChange: (e) => U("expiresIn", e.target.value),
|
|
@@ -256,7 +256,7 @@ var w = () => {
|
|
|
256
256
|
}
|
|
257
257
|
],
|
|
258
258
|
hint: "Keys can be revoked at any time regardless of expiration"
|
|
259
|
-
}), z.expiresIn === "never" && /* @__PURE__ */ y(
|
|
259
|
+
}), z.expiresIn === "never" && /* @__PURE__ */ y(u, {
|
|
260
260
|
variant: "warning",
|
|
261
261
|
className: "mt-4",
|
|
262
262
|
children: "Non-expiring keys are a security risk. Consider setting an expiration and rotating keys periodically."
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { useDevportal as e } from "../providers/DevportalProvider.js";
|
|
2
2
|
import { useDevportalEventBus as t } from "../events/index.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
3
|
+
import { useCreateApplicationMutation as n, useCurrentUserAppsQuery as r, useGetMyOrganizationsQuery as i } from "../../generated/global-operations.js";
|
|
4
|
+
import { PageLayout as a, PageSection as o } from "../components/PageLayout.js";
|
|
5
|
+
import { APP_TYPE_LABELS as s } from "../utils/constants.js";
|
|
6
|
+
import { CheckboxField as c, InputField as l, SelectField as u, TagInput as d, TextareaField as f } from "../components/FormField.js";
|
|
7
7
|
import { PermissionGuard as p } from "../components/PermissionGuard.js";
|
|
8
8
|
import "../components/index.js";
|
|
9
9
|
import { DEVPORTAL_PERMISSIONS as m } from "../constants/permissions.js";
|
|
@@ -13,7 +13,7 @@ import { useI18n as g } from "@burdenoff/fe-libs/shared/providers/shell/I18nProv
|
|
|
13
13
|
import { Info as _, Save as v, X as y } from "lucide-react";
|
|
14
14
|
import { Fragment as b, jsx as x, jsxs as S } from "react/jsx-runtime";
|
|
15
15
|
//#region src/devportal/pages/CreateApplicationPage.tsx
|
|
16
|
-
var C = Object.entries(
|
|
16
|
+
var C = Object.entries(s).map(([e, t]) => ({
|
|
17
17
|
value: e,
|
|
18
18
|
label: t
|
|
19
19
|
})), w = [
|
|
@@ -83,10 +83,10 @@ var C = Object.entries(i).map(([e, t]) => ({
|
|
|
83
83
|
label: "Other"
|
|
84
84
|
}
|
|
85
85
|
], E = () => {
|
|
86
|
-
let { navigate:
|
|
86
|
+
let { navigate: s, basePath: E } = e(), { t: D } = g(), O = (e, t) => {
|
|
87
87
|
let n = D(e);
|
|
88
88
|
return n === e ? t : n;
|
|
89
|
-
}, [k, A] = h({}), [j, { loading: M }] =
|
|
89
|
+
}, [k, A] = h({}), [j, { loading: M }] = n(), N = t(), { data: P } = i({ fetchPolicy: "cache-and-network" }), { data: F, loading: I } = r({ fetchPolicy: "cache-and-network" }), L = [{
|
|
90
90
|
value: "",
|
|
91
91
|
label: "No organization (publish under personal account)"
|
|
92
92
|
}, ...(P?.myDeveloperOrganizations ?? []).map((e) => ({
|
|
@@ -118,7 +118,7 @@ var C = Object.entries(i).map(([e, t]) => ({
|
|
|
118
118
|
appId: "",
|
|
119
119
|
requiresApproval: !1
|
|
120
120
|
}), V = (e) => {
|
|
121
|
-
|
|
121
|
+
s?.(`${E}${e}`);
|
|
122
122
|
}, H = (e) => e.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, ""), U = (e) => {
|
|
123
123
|
let t = e.target.value;
|
|
124
124
|
B((e) => ({
|
|
@@ -143,7 +143,7 @@ var C = Object.entries(i).map(([e, t]) => ({
|
|
|
143
143
|
};
|
|
144
144
|
return /* @__PURE__ */ x(p, {
|
|
145
145
|
permission: m.APP_CREATE,
|
|
146
|
-
children: /* @__PURE__ */ x(
|
|
146
|
+
children: /* @__PURE__ */ x(a, {
|
|
147
147
|
title: O("devportal.createApplication", "Create Application"),
|
|
148
148
|
description: O("devportal.createApplicationDescription", "Register a new application in the developer portal"),
|
|
149
149
|
backLink: `${E}/apps`,
|
|
@@ -188,13 +188,13 @@ var C = Object.entries(i).map(([e, t]) => ({
|
|
|
188
188
|
},
|
|
189
189
|
className: "space-y-8 max-w-3xl",
|
|
190
190
|
children: [
|
|
191
|
-
/* @__PURE__ */ x(
|
|
191
|
+
/* @__PURE__ */ x(o, {
|
|
192
192
|
title: O("devportal.basicInformation", "Basic Information"),
|
|
193
193
|
description: O("devportal.basicInformationDescription", "Core details about your application"),
|
|
194
194
|
children: /* @__PURE__ */ S("div", {
|
|
195
195
|
className: "space-y-4",
|
|
196
196
|
children: [
|
|
197
|
-
/* @__PURE__ */ x(
|
|
197
|
+
/* @__PURE__ */ x(l, {
|
|
198
198
|
label: O("devportal.applicationName", "Application Name"),
|
|
199
199
|
value: z.name,
|
|
200
200
|
onChange: U,
|
|
@@ -203,7 +203,7 @@ var C = Object.entries(i).map(([e, t]) => ({
|
|
|
203
203
|
error: k.name,
|
|
204
204
|
hint: O("devportal.applicationNameHint", "Choose a memorable name for your application")
|
|
205
205
|
}),
|
|
206
|
-
/* @__PURE__ */ x(
|
|
206
|
+
/* @__PURE__ */ x(l, {
|
|
207
207
|
label: O("devportal.slug", "Slug"),
|
|
208
208
|
value: z.slug,
|
|
209
209
|
onChange: (e) => W("slug", e.target.value.toLowerCase()),
|
|
@@ -212,7 +212,7 @@ var C = Object.entries(i).map(([e, t]) => ({
|
|
|
212
212
|
error: k.slug,
|
|
213
213
|
hint: O("devportal.slugHint", "URL-friendly identifier (auto-generated from name)")
|
|
214
214
|
}),
|
|
215
|
-
/* @__PURE__ */ x(
|
|
215
|
+
/* @__PURE__ */ x(f, {
|
|
216
216
|
label: O("devportal.shortDescription", "Short Description"),
|
|
217
217
|
value: z.shortDescription,
|
|
218
218
|
onChange: (e) => W("shortDescription", e.target.value),
|
|
@@ -222,7 +222,7 @@ var C = Object.entries(i).map(([e, t]) => ({
|
|
|
222
222
|
hint: `${z.shortDescription.length}/200 ${O("devportal.characters", "characters")}`,
|
|
223
223
|
rows: 2
|
|
224
224
|
}),
|
|
225
|
-
/* @__PURE__ */ x(
|
|
225
|
+
/* @__PURE__ */ x(f, {
|
|
226
226
|
label: O("devportal.fullDescription", "Full Description"),
|
|
227
227
|
value: z.description,
|
|
228
228
|
onChange: (e) => W("description", e.target.value),
|
|
@@ -233,14 +233,14 @@ var C = Object.entries(i).map(([e, t]) => ({
|
|
|
233
233
|
]
|
|
234
234
|
})
|
|
235
235
|
}),
|
|
236
|
-
/* @__PURE__ */ S(
|
|
236
|
+
/* @__PURE__ */ S(o, {
|
|
237
237
|
title: O("devportal.classification", "Classification"),
|
|
238
238
|
description: O("devportal.classificationDescription", "Categorize your application"),
|
|
239
239
|
children: [
|
|
240
240
|
/* @__PURE__ */ S("div", {
|
|
241
241
|
className: "grid gap-4 sm:grid-cols-2",
|
|
242
242
|
children: [
|
|
243
|
-
/* @__PURE__ */ x(
|
|
243
|
+
/* @__PURE__ */ x(u, {
|
|
244
244
|
label: O("devportal.applicationType", "Application Type"),
|
|
245
245
|
value: z.appType,
|
|
246
246
|
onChange: (e) => W("appType", e.target.value),
|
|
@@ -249,7 +249,7 @@ var C = Object.entries(i).map(([e, t]) => ({
|
|
|
249
249
|
error: k.appType,
|
|
250
250
|
placeholder: O("devportal.selectAppType", "Select app type")
|
|
251
251
|
}),
|
|
252
|
-
/* @__PURE__ */ x(
|
|
252
|
+
/* @__PURE__ */ x(u, {
|
|
253
253
|
label: O("devportal.category", "Category"),
|
|
254
254
|
value: z.category,
|
|
255
255
|
onChange: (e) => W("category", e.target.value),
|
|
@@ -258,14 +258,14 @@ var C = Object.entries(i).map(([e, t]) => ({
|
|
|
258
258
|
error: k.category,
|
|
259
259
|
placeholder: O("devportal.selectCategory", "Select category")
|
|
260
260
|
}),
|
|
261
|
-
/* @__PURE__ */ x(
|
|
261
|
+
/* @__PURE__ */ x(u, {
|
|
262
262
|
label: O("devportal.visibility", "Visibility"),
|
|
263
263
|
value: z.visibility,
|
|
264
264
|
onChange: (e) => W("visibility", e.target.value),
|
|
265
265
|
options: w,
|
|
266
266
|
hint: O("devportal.visibilityHint", "Controls who can see this app once published. Public apps still require admin review and approval before appearing in the store.")
|
|
267
267
|
}),
|
|
268
|
-
/* @__PURE__ */ x(
|
|
268
|
+
/* @__PURE__ */ x(u, {
|
|
269
269
|
label: O("devportal.developerOrganization", "Developer Organization"),
|
|
270
270
|
value: z.developerOrganizationId,
|
|
271
271
|
onChange: (e) => W("developerOrganizationId", e.target.value),
|
|
@@ -274,14 +274,14 @@ var C = Object.entries(i).map(([e, t]) => ({
|
|
|
274
274
|
})
|
|
275
275
|
]
|
|
276
276
|
}),
|
|
277
|
-
/* @__PURE__ */ x(
|
|
277
|
+
/* @__PURE__ */ x(d, {
|
|
278
278
|
label: O("devportal.tags", "Tags"),
|
|
279
279
|
value: z.tags,
|
|
280
280
|
onChange: (e) => W("tags", e),
|
|
281
281
|
placeholder: O("devportal.addTagsPlaceholder", "Add tags (press Enter)"),
|
|
282
282
|
hint: O("devportal.tagsHint", "Help users discover your app")
|
|
283
283
|
}),
|
|
284
|
-
/* @__PURE__ */ x(
|
|
284
|
+
/* @__PURE__ */ x(d, {
|
|
285
285
|
label: O("devportal.keywords", "Keywords"),
|
|
286
286
|
value: z.keywords,
|
|
287
287
|
onChange: (e) => W("keywords", e),
|
|
@@ -290,12 +290,12 @@ var C = Object.entries(i).map(([e, t]) => ({
|
|
|
290
290
|
})
|
|
291
291
|
]
|
|
292
292
|
}),
|
|
293
|
-
/* @__PURE__ */ x(
|
|
293
|
+
/* @__PURE__ */ x(o, {
|
|
294
294
|
title: O("devportal.authenticationAndAuthorization", "Authentication & Authorization"),
|
|
295
295
|
description: O("devportal.authenticationAndAuthorizationDescription", "Link this marketplace app to an auth app for OAuth, client credentials, API keys, delegation, and device flows."),
|
|
296
296
|
children: /* @__PURE__ */ S("div", {
|
|
297
297
|
className: "space-y-4",
|
|
298
|
-
children: [/* @__PURE__ */ x(
|
|
298
|
+
children: [/* @__PURE__ */ x(u, {
|
|
299
299
|
label: O("devportal.linkedAuthApp", "Linked Auth App"),
|
|
300
300
|
value: z.appId,
|
|
301
301
|
onChange: (e) => W("appId", e.target.value),
|
|
@@ -310,48 +310,48 @@ var C = Object.entries(i).map(([e, t]) => ({
|
|
|
310
310
|
})]
|
|
311
311
|
})
|
|
312
312
|
}),
|
|
313
|
-
/* @__PURE__ */ x(
|
|
313
|
+
/* @__PURE__ */ x(o, {
|
|
314
314
|
title: O("devportal.links", "Links"),
|
|
315
315
|
description: O("devportal.linksDescription", "External resources for your application"),
|
|
316
316
|
children: /* @__PURE__ */ S("div", {
|
|
317
317
|
className: "grid gap-4 sm:grid-cols-2",
|
|
318
318
|
children: [
|
|
319
|
-
/* @__PURE__ */ x(
|
|
319
|
+
/* @__PURE__ */ x(l, {
|
|
320
320
|
label: O("devportal.websiteUrl", "Website URL"),
|
|
321
321
|
type: "url",
|
|
322
322
|
value: z.websiteUrl,
|
|
323
323
|
onChange: (e) => W("websiteUrl", e.target.value),
|
|
324
324
|
placeholder: "https://example.com"
|
|
325
325
|
}),
|
|
326
|
-
/* @__PURE__ */ x(
|
|
326
|
+
/* @__PURE__ */ x(l, {
|
|
327
327
|
label: O("devportal.documentationUrl", "Documentation URL"),
|
|
328
328
|
type: "url",
|
|
329
329
|
value: z.documentationUrl,
|
|
330
330
|
onChange: (e) => W("documentationUrl", e.target.value),
|
|
331
331
|
placeholder: "https://docs.example.com"
|
|
332
332
|
}),
|
|
333
|
-
/* @__PURE__ */ x(
|
|
333
|
+
/* @__PURE__ */ x(l, {
|
|
334
334
|
label: O("devportal.supportUrl", "Support URL"),
|
|
335
335
|
type: "url",
|
|
336
336
|
value: z.supportUrl,
|
|
337
337
|
onChange: (e) => W("supportUrl", e.target.value),
|
|
338
338
|
placeholder: "https://support.example.com"
|
|
339
339
|
}),
|
|
340
|
-
/* @__PURE__ */ x(
|
|
340
|
+
/* @__PURE__ */ x(l, {
|
|
341
341
|
label: O("devportal.githubUrl", "GitHub URL"),
|
|
342
342
|
type: "url",
|
|
343
343
|
value: z.githubUrl,
|
|
344
344
|
onChange: (e) => W("githubUrl", e.target.value),
|
|
345
345
|
placeholder: "https://github.com/org/repo"
|
|
346
346
|
}),
|
|
347
|
-
/* @__PURE__ */ x(
|
|
347
|
+
/* @__PURE__ */ x(l, {
|
|
348
348
|
label: O("devportal.privacyPolicyUrl", "Privacy Policy URL"),
|
|
349
349
|
type: "url",
|
|
350
350
|
value: z.privacyPolicyUrl,
|
|
351
351
|
onChange: (e) => W("privacyPolicyUrl", e.target.value),
|
|
352
352
|
placeholder: "https://example.com/privacy"
|
|
353
353
|
}),
|
|
354
|
-
/* @__PURE__ */ x(
|
|
354
|
+
/* @__PURE__ */ x(l, {
|
|
355
355
|
label: O("devportal.termsOfServiceUrl", "Terms of Service URL"),
|
|
356
356
|
type: "url",
|
|
357
357
|
value: z.termsOfServiceUrl,
|
|
@@ -361,12 +361,12 @@ var C = Object.entries(i).map(([e, t]) => ({
|
|
|
361
361
|
]
|
|
362
362
|
})
|
|
363
363
|
}),
|
|
364
|
-
/* @__PURE__ */ S(
|
|
364
|
+
/* @__PURE__ */ S(o, {
|
|
365
365
|
title: O("devportal.settings", "Settings"),
|
|
366
366
|
description: O("devportal.settingsDescription", "Additional configuration options"),
|
|
367
367
|
children: [/* @__PURE__ */ x("div", {
|
|
368
368
|
className: "space-y-4",
|
|
369
|
-
children: /* @__PURE__ */ x(
|
|
369
|
+
children: /* @__PURE__ */ x(c, {
|
|
370
370
|
label: O("devportal.requireWorkspaceAdminApproval", "Require workspace admin approval"),
|
|
371
371
|
description: O("devportal.requireWorkspaceAdminApprovalDescription", "When enabled, workspace admins must approve installations before users can access this app"),
|
|
372
372
|
checked: z.requiresApproval,
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { useDevportal as e } from "../providers/DevportalProvider.js";
|
|
2
2
|
import { cn as t } from "../utils/cn.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
3
|
+
import { useCreateAuthAppMutation as n } from "../../generated/global-operations.js";
|
|
4
|
+
import { getErrorMessage as r } from "../hooks/useGraphQL.js";
|
|
5
|
+
import { PageLayout as i, PageSection as a } from "../components/PageLayout.js";
|
|
6
|
+
import { nativeCopyText as o, nativeImpact as s, nativeNotify as c } from "../../utils/nativeBridge.js";
|
|
7
|
+
import { InputField as l, SelectField as u, TextareaField as d } from "../components/FormField.js";
|
|
8
|
+
import { PermissionGuard as f } from "../components/PermissionGuard.js";
|
|
8
9
|
import "../components/index.js";
|
|
9
|
-
import { DEVPORTAL_PERMISSIONS as
|
|
10
|
-
import { getErrorMessage as p } from "../hooks/useGraphQL.js";
|
|
10
|
+
import { DEVPORTAL_PERMISSIONS as p } from "../constants/permissions.js";
|
|
11
11
|
import "../hooks/index.js";
|
|
12
12
|
import { useState as m } from "react";
|
|
13
13
|
import { useI18n as h } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
@@ -19,7 +19,7 @@ var C = () => {
|
|
|
19
19
|
let { navigate: C, basePath: w } = e(), { t: T } = h(), E = (e, t) => {
|
|
20
20
|
let n = T(e);
|
|
21
21
|
return n === e ? t : n;
|
|
22
|
-
}, [D, O] = m(""), [k, A] = m(""), [j, M] = m("CONFIDENTIAL"), [N, P] = m([]), [F, I] = m(""), [L, R] = m([]), [z, B] = m(""), [V, H] = m(null), [U, W] = m(null), [G, { loading: K, error: q }] =
|
|
22
|
+
}, [D, O] = m(""), [k, A] = m(""), [j, M] = m("CONFIDENTIAL"), [N, P] = m([]), [F, I] = m(""), [L, R] = m([]), [z, B] = m(""), [V, H] = m(null), [U, W] = m(null), [G, { loading: K, error: q }] = n(), J = (e) => {
|
|
23
23
|
C?.(`${w}${e}`);
|
|
24
24
|
}, Y = () => {
|
|
25
25
|
let e = F.trim();
|
|
@@ -32,7 +32,7 @@ var C = () => {
|
|
|
32
32
|
}, Q = (e) => {
|
|
33
33
|
R(L.filter((t) => t !== e));
|
|
34
34
|
};
|
|
35
|
-
return V ? /* @__PURE__ */ b(
|
|
35
|
+
return V ? /* @__PURE__ */ b(i, {
|
|
36
36
|
title: E("devportal.appCreated", "App Created!"),
|
|
37
37
|
description: E("devportal.appCreatedDescription", "Save the client secret below. It will not be shown again."),
|
|
38
38
|
backLink: "/oauth",
|
|
@@ -56,7 +56,7 @@ var C = () => {
|
|
|
56
56
|
children: V
|
|
57
57
|
}), /* @__PURE__ */ b("button", {
|
|
58
58
|
onClick: async () => {
|
|
59
|
-
|
|
59
|
+
s("light"), c(await o(V) ? "success" : "error");
|
|
60
60
|
},
|
|
61
61
|
className: "rounded bg-status-success-bg-subtle px-3 py-2 text-sm font-medium text-status-success-text hover:bg-status-success-bg-subtle transition-colors",
|
|
62
62
|
children: E("devportal.copy", "Copy")
|
|
@@ -80,9 +80,9 @@ var C = () => {
|
|
|
80
80
|
})
|
|
81
81
|
]
|
|
82
82
|
})
|
|
83
|
-
}) : /* @__PURE__ */ b(
|
|
84
|
-
permission:
|
|
85
|
-
children: /* @__PURE__ */ b(
|
|
83
|
+
}) : /* @__PURE__ */ b(f, {
|
|
84
|
+
permission: p.APP_CREATE,
|
|
85
|
+
children: /* @__PURE__ */ b(i, {
|
|
86
86
|
title: E("devportal.createOAuthApp", "Create OAuth App"),
|
|
87
87
|
description: E("devportal.createOAuthAppDescription", "Register a new OAuth application for authentication"),
|
|
88
88
|
backLink: "/oauth",
|
|
@@ -106,26 +106,26 @@ var C = () => {
|
|
|
106
106
|
className: "rounded-lg border border-destructive/50 bg-destructive/10 p-4",
|
|
107
107
|
children: /* @__PURE__ */ b("p", {
|
|
108
108
|
className: "text-sm text-destructive",
|
|
109
|
-
children:
|
|
109
|
+
children: r(q)
|
|
110
110
|
})
|
|
111
111
|
}),
|
|
112
|
-
/* @__PURE__ */ x(
|
|
112
|
+
/* @__PURE__ */ x(a, {
|
|
113
113
|
title: E("devportal.basicInformation", "Basic Information"),
|
|
114
114
|
children: [
|
|
115
|
-
/* @__PURE__ */ b(
|
|
115
|
+
/* @__PURE__ */ b(l, {
|
|
116
116
|
label: E("devportal.appName", "App Name"),
|
|
117
117
|
value: D,
|
|
118
118
|
onChange: (e) => O(e.target.value),
|
|
119
119
|
placeholder: E("devportal.myOAuthAppPlaceholder", "My OAuth App"),
|
|
120
120
|
required: !0
|
|
121
121
|
}),
|
|
122
|
-
/* @__PURE__ */ b(
|
|
122
|
+
/* @__PURE__ */ b(d, {
|
|
123
123
|
label: E("devportal.description", "Description"),
|
|
124
124
|
value: k,
|
|
125
125
|
onChange: (e) => A(e.target.value),
|
|
126
126
|
placeholder: E("devportal.appDescriptionPlaceholder", "Brief description of what this app does...")
|
|
127
127
|
}),
|
|
128
|
-
/* @__PURE__ */ b(
|
|
128
|
+
/* @__PURE__ */ b(u, {
|
|
129
129
|
label: E("devportal.appType", "App Type"),
|
|
130
130
|
value: j,
|
|
131
131
|
onChange: (e) => M(e.target.value),
|
|
@@ -157,7 +157,7 @@ var C = () => {
|
|
|
157
157
|
/* @__PURE__ */ x(S, {
|
|
158
158
|
title: E("devportal.advancedOAuthSettings", "Advanced settings"),
|
|
159
159
|
description: E("devportal.advancedOAuthSettingsDescription", "Advanced grant types, PKCE-required toggles, scope tuning, and redirect URIs."),
|
|
160
|
-
children: [/* @__PURE__ */ b(
|
|
160
|
+
children: [/* @__PURE__ */ b(a, {
|
|
161
161
|
title: E("devportal.scopes", "Scopes"),
|
|
162
162
|
children: /* @__PURE__ */ x("div", {
|
|
163
163
|
className: "space-y-3",
|
|
@@ -191,7 +191,7 @@ var C = () => {
|
|
|
191
191
|
}, e))
|
|
192
192
|
})]
|
|
193
193
|
})
|
|
194
|
-
}), /* @__PURE__ */ b(
|
|
194
|
+
}), /* @__PURE__ */ b(a, {
|
|
195
195
|
title: E("devportal.redirectUris", "Redirect URIs"),
|
|
196
196
|
children: /* @__PURE__ */ x("div", {
|
|
197
197
|
className: "space-y-3",
|