@burdenoff/microfe-devportal 2026.623.5 → 2026.623.7
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 +123 -108
- 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,11 +1,11 @@
|
|
|
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 {
|
|
8
|
-
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";
|
|
9
9
|
import "../components/index.js";
|
|
10
10
|
import { DEVPORTAL_PERMISSIONS as p } from "../constants/permissions.js";
|
|
11
11
|
import "../hooks/index.js";
|
|
@@ -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(
|
|
83
|
+
}) : /* @__PURE__ */ b(f, {
|
|
84
84
|
permission: p.APP_CREATE,
|
|
85
|
-
children: /* @__PURE__ */ b(
|
|
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",
|
|
@@ -1,8 +1,8 @@
|
|
|
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 {
|
|
3
|
+
import { useCreateBillingAccountMutation as n, useCreateOrganizationMutation as r, useLinkDevOrgBillingAccountMutation as i } from "../../generated/global-operations.js";
|
|
4
|
+
import { PageLayout as a, PageSection as o } from "../components/PageLayout.js";
|
|
5
|
+
import { InputField as s, TextareaField as c } from "../components/FormField.js";
|
|
6
6
|
import { PermissionGuard as l } from "../components/PermissionGuard.js";
|
|
7
7
|
import "../components/index.js";
|
|
8
8
|
import { DEVPORTAL_PERMISSIONS as u } from "../constants/permissions.js";
|
|
@@ -16,7 +16,7 @@ var y = () => {
|
|
|
16
16
|
let { navigate: y, basePath: b, currentUser: x } = e(), { t: S } = f(), C = (e, t) => {
|
|
17
17
|
let n = S(e);
|
|
18
18
|
return n === e ? t : n;
|
|
19
|
-
}, [w, T] = d({}), [E, { loading: D }] =
|
|
19
|
+
}, [w, T] = d({}), [E, { loading: D }] = r(), [O] = n(), [k] = i(), A = t(), [j, M] = d({
|
|
20
20
|
name: "",
|
|
21
21
|
slug: "",
|
|
22
22
|
description: "",
|
|
@@ -49,7 +49,7 @@ var y = () => {
|
|
|
49
49
|
};
|
|
50
50
|
return /* @__PURE__ */ _(l, {
|
|
51
51
|
permission: u.ORG_CREATE,
|
|
52
|
-
children: /* @__PURE__ */ _(
|
|
52
|
+
children: /* @__PURE__ */ _(a, {
|
|
53
53
|
title: C("devportal.createOrganization", "Create Organization"),
|
|
54
54
|
description: C("devportal.createOrganizationDescription", "Set up a developer organization to collaborate with your team"),
|
|
55
55
|
backLink: `${b}/organizations`,
|
|
@@ -88,13 +88,13 @@ var y = () => {
|
|
|
88
88
|
},
|
|
89
89
|
className: "space-y-8 max-w-3xl",
|
|
90
90
|
children: [
|
|
91
|
-
/* @__PURE__ */ _(
|
|
91
|
+
/* @__PURE__ */ _(o, {
|
|
92
92
|
title: C("devportal.organizationDetails", "Organization Details"),
|
|
93
93
|
description: C("devportal.organizationDetailsDescription", "Basic information about your organization"),
|
|
94
94
|
children: /* @__PURE__ */ v("div", {
|
|
95
95
|
className: "space-y-4",
|
|
96
96
|
children: [
|
|
97
|
-
/* @__PURE__ */ _(
|
|
97
|
+
/* @__PURE__ */ _(s, {
|
|
98
98
|
label: C("devportal.organizationName", "Organization Name"),
|
|
99
99
|
value: j.name,
|
|
100
100
|
onChange: F,
|
|
@@ -103,7 +103,7 @@ var y = () => {
|
|
|
103
103
|
error: w.name,
|
|
104
104
|
hint: C("devportal.organizationNameHint", "Your organization's display name")
|
|
105
105
|
}),
|
|
106
|
-
/* @__PURE__ */ _(
|
|
106
|
+
/* @__PURE__ */ _(s, {
|
|
107
107
|
label: C("devportal.slug", "Slug"),
|
|
108
108
|
value: j.slug,
|
|
109
109
|
onChange: (e) => I("slug", e.target.value.toLowerCase()),
|
|
@@ -112,14 +112,14 @@ var y = () => {
|
|
|
112
112
|
error: w.slug,
|
|
113
113
|
hint: C("devportal.slugHint", "URL-friendly identifier (auto-generated from name)")
|
|
114
114
|
}),
|
|
115
|
-
/* @__PURE__ */ _(
|
|
115
|
+
/* @__PURE__ */ _(c, {
|
|
116
116
|
label: C("devportal.description", "Description"),
|
|
117
117
|
value: j.description,
|
|
118
118
|
onChange: (e) => I("description", e.target.value),
|
|
119
119
|
placeholder: C("devportal.orgDescriptionPlaceholder", "Tell us about your organization..."),
|
|
120
120
|
rows: 3
|
|
121
121
|
}),
|
|
122
|
-
/* @__PURE__ */ _(
|
|
122
|
+
/* @__PURE__ */ _(s, {
|
|
123
123
|
label: C("devportal.websiteUrl", "Website URL"),
|
|
124
124
|
type: "url",
|
|
125
125
|
value: j.websiteUrl,
|
|
@@ -128,14 +128,14 @@ var y = () => {
|
|
|
128
128
|
}),
|
|
129
129
|
/* @__PURE__ */ v("div", {
|
|
130
130
|
className: "grid gap-4 sm:grid-cols-2",
|
|
131
|
-
children: [/* @__PURE__ */ _(
|
|
131
|
+
children: [/* @__PURE__ */ _(s, {
|
|
132
132
|
label: C("devportal.contactEmail", "Contact Email"),
|
|
133
133
|
type: "email",
|
|
134
134
|
value: j.contactEmail,
|
|
135
135
|
onChange: (e) => I("contactEmail", e.target.value),
|
|
136
136
|
placeholder: "contact@example.com",
|
|
137
137
|
error: w.contactEmail
|
|
138
|
-
}), /* @__PURE__ */ _(
|
|
138
|
+
}), /* @__PURE__ */ _(s, {
|
|
139
139
|
label: C("devportal.supportEmail", "Support Email"),
|
|
140
140
|
type: "email",
|
|
141
141
|
value: j.supportEmail,
|
|
@@ -1,11 +1,11 @@
|
|
|
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 {
|
|
8
|
-
import {
|
|
3
|
+
import { useCreateWebhookMutation as n, useGetApplicationQuery as r, useGetApplicationsQuery as i } from "../../generated/global-operations.js";
|
|
4
|
+
import { getErrorMessage as a } from "../hooks/useGraphQL.js";
|
|
5
|
+
import { PageLayout as o, PageSection as s } from "../components/PageLayout.js";
|
|
6
|
+
import { CheckboxField as c, InputField as l, TextareaField as u } from "../components/FormField.js";
|
|
7
|
+
import { Alert as d } from "../components/ConfirmDialog.js";
|
|
8
|
+
import { PermissionGuard as f } from "../components/PermissionGuard.js";
|
|
9
9
|
import "../components/index.js";
|
|
10
10
|
import { DEVPORTAL_PERMISSIONS as p } from "../constants/permissions.js";
|
|
11
11
|
import { useDevportalPermission as m } from "../hooks/usePermission.js";
|
|
@@ -36,7 +36,7 @@ var T = {
|
|
|
36
36
|
events: [],
|
|
37
37
|
retryEnabled: !0,
|
|
38
38
|
maxRetries: 3
|
|
39
|
-
}), [A, j] = y({}), [M, N] = y(null), { data: P } =
|
|
39
|
+
}), [A, j] = y({}), [M, N] = y(null), { data: P } = r({
|
|
40
40
|
variables: { id: h ?? "" },
|
|
41
41
|
skip: !h,
|
|
42
42
|
fetchPolicy: "cache-first"
|
|
@@ -47,11 +47,11 @@ var T = {
|
|
|
47
47
|
let t = window.__breadcrumbRegistry;
|
|
48
48
|
return t?.register(h, e), () => t?.unregister(h);
|
|
49
49
|
}, [h, P?.application?.name]);
|
|
50
|
-
let { data: F, loading: I, error: L } =
|
|
50
|
+
let { data: F, loading: I, error: L } = i({
|
|
51
51
|
variables: { limit: 100 },
|
|
52
52
|
skip: !!h,
|
|
53
53
|
fetchPolicy: "cache-and-network"
|
|
54
|
-
}), [R, { loading: z }] =
|
|
54
|
+
}), [R, { loading: z }] = n(), B = t(), V = g(), H = m(p.WEBHOOK_CREATE), U = v(() => F?.applications?.edges?.map((e) => e.node).map((e) => ({
|
|
55
55
|
id: e.id,
|
|
56
56
|
name: e.name,
|
|
57
57
|
slug: e.slug
|
|
@@ -79,9 +79,9 @@ var T = {
|
|
|
79
79
|
let e = {};
|
|
80
80
|
return O.applicationId || (e.applicationId = V("devportal.createWebhook.errors.appRequired", "Select an application")), O.name.trim() || (e.name = V("devportal.createWebhook.errors.nameRequired", "Name is required")), O.url.trim() ? /^https:\/\//i.test(O.url) || (e.url = V("devportal.createWebhook.errors.urlHttps", "Endpoint URL must use HTTPS")) : e.url = V("devportal.createWebhook.errors.urlRequired", "Endpoint URL is required"), O.events.length === 0 && (e.events = V("devportal.createWebhook.errors.eventsRequired", "Select at least one event")), O.retryEnabled && (O.maxRetries < 1 || O.maxRetries > 10) && (e.maxRetries = V("devportal.createWebhook.errors.retriesRange", "Retry count must be between 1 and 10")), j(e), Object.keys(e).length === 0;
|
|
81
81
|
};
|
|
82
|
-
return /* @__PURE__ */ C(
|
|
82
|
+
return /* @__PURE__ */ C(f, {
|
|
83
83
|
permission: p.WEBHOOK_CREATE,
|
|
84
|
-
children: /* @__PURE__ */ C(
|
|
84
|
+
children: /* @__PURE__ */ C(o, {
|
|
85
85
|
title: V("devportal.createWebhook.title", "Create Webhook"),
|
|
86
86
|
description: V("devportal.createWebhook.description", "Set up a real webhook endpoint to receive platform events through the public gateway"),
|
|
87
87
|
backLink: O.applicationId ? `/apps/${O.applicationId}/webhooks` : "/webhooks",
|
|
@@ -111,19 +111,19 @@ var T = {
|
|
|
111
111
|
},
|
|
112
112
|
className: "space-y-6",
|
|
113
113
|
children: [
|
|
114
|
-
/* @__PURE__ */ C(
|
|
114
|
+
/* @__PURE__ */ C(d, {
|
|
115
115
|
variant: "info",
|
|
116
116
|
children: V("devportal.createWebhook.info", "Webhook deliveries are signed and sent through the public global gateway. Use an HTTPS endpoint that accepts POST requests and returns a 2xx response for successful deliveries.")
|
|
117
117
|
}),
|
|
118
|
-
M && /* @__PURE__ */ C(
|
|
118
|
+
M && /* @__PURE__ */ C(d, {
|
|
119
119
|
variant: "error",
|
|
120
120
|
children: M
|
|
121
121
|
}),
|
|
122
|
-
L && !h && /* @__PURE__ */ C(
|
|
122
|
+
L && !h && /* @__PURE__ */ C(d, {
|
|
123
123
|
variant: "error",
|
|
124
|
-
children:
|
|
124
|
+
children: a(L)
|
|
125
125
|
}),
|
|
126
|
-
/* @__PURE__ */ C(
|
|
126
|
+
/* @__PURE__ */ C(s, {
|
|
127
127
|
title: V("devportal.createWebhook.basicInfo", "Basic Information"),
|
|
128
128
|
children: /* @__PURE__ */ w("div", {
|
|
129
129
|
className: "space-y-4 rounded-lg border bg-card p-4",
|
|
@@ -172,7 +172,7 @@ var T = {
|
|
|
172
172
|
})
|
|
173
173
|
]
|
|
174
174
|
}),
|
|
175
|
-
/* @__PURE__ */ C(
|
|
175
|
+
/* @__PURE__ */ C(l, {
|
|
176
176
|
label: V("devportal.createWebhook.webhookName", "Webhook Name"),
|
|
177
177
|
value: O.name,
|
|
178
178
|
onChange: (e) => G("name", e.target.value),
|
|
@@ -180,14 +180,14 @@ var T = {
|
|
|
180
180
|
error: A.name,
|
|
181
181
|
required: !0
|
|
182
182
|
}),
|
|
183
|
-
/* @__PURE__ */ C(
|
|
183
|
+
/* @__PURE__ */ C(u, {
|
|
184
184
|
label: V("devportal.createWebhook.descriptionLabel", "Description"),
|
|
185
185
|
value: O.description,
|
|
186
186
|
onChange: (e) => G("description", e.target.value),
|
|
187
187
|
placeholder: V("devportal.createWebhook.descriptionPlaceholder", "What this webhook is used for"),
|
|
188
188
|
rows: 2
|
|
189
189
|
}),
|
|
190
|
-
/* @__PURE__ */ C(
|
|
190
|
+
/* @__PURE__ */ C(l, {
|
|
191
191
|
label: V("devportal.createWebhook.endpointUrl", "Endpoint URL"),
|
|
192
192
|
type: "url",
|
|
193
193
|
value: O.url,
|
|
@@ -200,7 +200,7 @@ var T = {
|
|
|
200
200
|
]
|
|
201
201
|
})
|
|
202
202
|
}),
|
|
203
|
-
/* @__PURE__ */ C(
|
|
203
|
+
/* @__PURE__ */ C(s, {
|
|
204
204
|
title: V("devportal.createWebhook.subscribedEvents", "Subscribed Events"),
|
|
205
205
|
children: /* @__PURE__ */ w("div", {
|
|
206
206
|
className: "space-y-4 rounded-lg border bg-card p-4",
|
|
@@ -240,16 +240,16 @@ var T = {
|
|
|
240
240
|
}, e))]
|
|
241
241
|
})
|
|
242
242
|
}),
|
|
243
|
-
/* @__PURE__ */ C(
|
|
243
|
+
/* @__PURE__ */ C(s, {
|
|
244
244
|
title: V("devportal.createWebhook.retrySettings", "Retry Settings"),
|
|
245
245
|
children: /* @__PURE__ */ w("div", {
|
|
246
246
|
className: "space-y-4 rounded-lg border bg-card p-4",
|
|
247
|
-
children: [/* @__PURE__ */ C(
|
|
247
|
+
children: [/* @__PURE__ */ C(c, {
|
|
248
248
|
label: V("devportal.createWebhook.enableRetries", "Enable retries"),
|
|
249
249
|
description: V("devportal.createWebhook.enableRetriesDesc", "Retry failed deliveries automatically"),
|
|
250
250
|
checked: O.retryEnabled,
|
|
251
251
|
onChange: (e) => G("retryEnabled", e.target.checked)
|
|
252
|
-
}), O.retryEnabled && /* @__PURE__ */ C(
|
|
252
|
+
}), O.retryEnabled && /* @__PURE__ */ C(l, {
|
|
253
253
|
label: V("devportal.createWebhook.maxRetries", "Maximum retries"),
|
|
254
254
|
type: "number",
|
|
255
255
|
value: O.maxRetries,
|
|
@@ -1,9 +1,9 @@
|
|
|
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 {
|
|
3
|
+
import { useGetDevportalDashboardBootstrapQuery as n } from "../../generated/global-operations.js";
|
|
4
|
+
import { PageLayout as r, PageSection as i } from "../components/PageLayout.js";
|
|
5
|
+
import { StatCard as a, StatCardGrid as o } from "../components/StatCard.js";
|
|
6
|
+
import { AppListItem as s } from "../components/AppCard.js";
|
|
7
7
|
import { PermissionGuard as c } from "../components/PermissionGuard.js";
|
|
8
8
|
import "../components/index.js";
|
|
9
9
|
import { DEVPORTAL_PERMISSIONS as l } from "../constants/permissions.js";
|
|
@@ -17,7 +17,7 @@ var E = () => {
|
|
|
17
17
|
let { navigate: E, basePath: k } = e(), { t: A } = d(), j = (e, t) => {
|
|
18
18
|
let n = A(e);
|
|
19
19
|
return n === e ? t : n;
|
|
20
|
-
}, { data: M, loading: N } =
|
|
20
|
+
}, { data: M, loading: N } = n({ fetchPolicy: "cache-and-network" }), P = M?.myDeveloperOrganizations ?? [];
|
|
21
21
|
u(() => {
|
|
22
22
|
if (!(N || !M) && !(P.length > 0)) {
|
|
23
23
|
try {
|
|
@@ -48,7 +48,7 @@ var E = () => {
|
|
|
48
48
|
}, R = N, z = !R && P.length > 0;
|
|
49
49
|
return /* @__PURE__ */ w(c, {
|
|
50
50
|
permission: l.APP_READ,
|
|
51
|
-
children: /* @__PURE__ */ T(
|
|
51
|
+
children: /* @__PURE__ */ T(r, {
|
|
52
52
|
title: j("devportal.developerPortal", "Developer Portal"),
|
|
53
53
|
description: j("devportal.buildManageMonitor", "Build, manage, and monitor your applications"),
|
|
54
54
|
actions: z ? /* @__PURE__ */ T("button", {
|
|
@@ -63,29 +63,29 @@ var E = () => {
|
|
|
63
63
|
children: [/* @__PURE__ */ w(y, { size: 16 }), j("devportal.createOrganization", "Create Organization")]
|
|
64
64
|
}),
|
|
65
65
|
children: [
|
|
66
|
-
/* @__PURE__ */ w(
|
|
66
|
+
/* @__PURE__ */ w(i, {
|
|
67
67
|
"data-tour": "devportal-dashboard-stats-overview",
|
|
68
|
-
children: /* @__PURE__ */ T(
|
|
68
|
+
children: /* @__PURE__ */ T(o, {
|
|
69
69
|
columns: 4,
|
|
70
70
|
children: [
|
|
71
|
-
/* @__PURE__ */ w(
|
|
71
|
+
/* @__PURE__ */ w(a, {
|
|
72
72
|
title: j("devportal.totalApps", "Total Apps"),
|
|
73
73
|
value: R ? /* @__PURE__ */ w(v, { className: "h-5 w-5 animate-spin" }) : I.totalApps,
|
|
74
74
|
icon: /* @__PURE__ */ w(p, { size: 20 }),
|
|
75
75
|
trend: void 0
|
|
76
76
|
}),
|
|
77
|
-
/* @__PURE__ */ w(
|
|
77
|
+
/* @__PURE__ */ w(a, {
|
|
78
78
|
title: j("devportal.organizations", "Organizations"),
|
|
79
79
|
value: R ? /* @__PURE__ */ w(v, { className: "h-5 w-5 animate-spin" }) : I.totalOrgs,
|
|
80
80
|
icon: /* @__PURE__ */ w(h, { size: 20 })
|
|
81
81
|
}),
|
|
82
|
-
/* @__PURE__ */ w(
|
|
82
|
+
/* @__PURE__ */ w(a, {
|
|
83
83
|
title: j("devportal.apiKeys", "API Keys"),
|
|
84
84
|
value: I.totalApiKeys,
|
|
85
85
|
icon: /* @__PURE__ */ w(_, { size: 20 }),
|
|
86
86
|
description: j("devportal.activeKeys", "Active keys")
|
|
87
87
|
}),
|
|
88
|
-
/* @__PURE__ */ w(
|
|
88
|
+
/* @__PURE__ */ w(a, {
|
|
89
89
|
title: j("devportal.webhooks", "Webhooks"),
|
|
90
90
|
value: I.totalWebhooks,
|
|
91
91
|
icon: /* @__PURE__ */ w(C, { size: 20 }),
|
|
@@ -94,31 +94,31 @@ var E = () => {
|
|
|
94
94
|
]
|
|
95
95
|
})
|
|
96
96
|
}),
|
|
97
|
-
/* @__PURE__ */ w(
|
|
97
|
+
/* @__PURE__ */ w(i, {
|
|
98
98
|
title: j("devportal.usageOverview", "Usage Overview"),
|
|
99
99
|
"data-tour": "devportal-dashboard-usage-overview",
|
|
100
|
-
children: /* @__PURE__ */ T(
|
|
100
|
+
children: /* @__PURE__ */ T(o, {
|
|
101
101
|
columns: 4,
|
|
102
102
|
children: [
|
|
103
|
-
/* @__PURE__ */ w(
|
|
103
|
+
/* @__PURE__ */ w(a, {
|
|
104
104
|
title: j("devportal.apiCalls", "API Calls"),
|
|
105
105
|
value: R ? /* @__PURE__ */ w(v, { className: "h-5 w-5 animate-spin" }) : I.totalApiCalls > 1e6 ? `${(I.totalApiCalls / 1e6).toFixed(1)}M` : I.totalApiCalls > 1e3 ? `${(I.totalApiCalls / 1e3).toFixed(1)}K` : I.totalApiCalls.toString(),
|
|
106
106
|
icon: /* @__PURE__ */ w(f, { size: 20 }),
|
|
107
107
|
trend: void 0
|
|
108
108
|
}),
|
|
109
|
-
/* @__PURE__ */ w(
|
|
109
|
+
/* @__PURE__ */ w(a, {
|
|
110
110
|
title: j("devportal.activeInstalls", "Active Installs"),
|
|
111
111
|
value: R ? /* @__PURE__ */ w(v, { className: "h-5 w-5 animate-spin" }) : I.activeInstalls > 1e3 ? `${(I.activeInstalls / 1e3).toFixed(1)}K` : I.activeInstalls.toString(),
|
|
112
112
|
icon: /* @__PURE__ */ w(S, { size: 20 }),
|
|
113
113
|
trend: void 0
|
|
114
114
|
}),
|
|
115
|
-
/* @__PURE__ */ w(
|
|
115
|
+
/* @__PURE__ */ w(a, {
|
|
116
116
|
title: j("devportal.monthlyRevenue", "Monthly Revenue"),
|
|
117
117
|
value: R ? /* @__PURE__ */ w(v, { className: "h-5 w-5 animate-spin" }) : `$${I.monthlyRevenue.toLocaleString()}`,
|
|
118
118
|
icon: /* @__PURE__ */ w(g, { size: 20 }),
|
|
119
119
|
trend: void 0
|
|
120
120
|
}),
|
|
121
|
-
/* @__PURE__ */ w(
|
|
121
|
+
/* @__PURE__ */ w(a, {
|
|
122
122
|
title: j("devportal.errorRate", "Error Rate"),
|
|
123
123
|
value: `${I.errorRate}%`,
|
|
124
124
|
icon: /* @__PURE__ */ w(x, { size: 20 }),
|
|
@@ -129,7 +129,7 @@ var E = () => {
|
|
|
129
129
|
}),
|
|
130
130
|
/* @__PURE__ */ T("div", {
|
|
131
131
|
className: "grid gap-6 lg:grid-cols-2",
|
|
132
|
-
children: [/* @__PURE__ */ w(
|
|
132
|
+
children: [/* @__PURE__ */ w(i, {
|
|
133
133
|
"data-tour": "devportal-dashboard-recent-apps",
|
|
134
134
|
title: j("devportal.recentApplications", "Recent Applications"),
|
|
135
135
|
actions: /* @__PURE__ */ T("button", {
|
|
@@ -146,7 +146,7 @@ var E = () => {
|
|
|
146
146
|
children: /* @__PURE__ */ w(v, { className: "h-6 w-6 animate-spin text-muted-foreground" })
|
|
147
147
|
}) : F.length > 0 ? /* @__PURE__ */ w("div", {
|
|
148
148
|
className: "space-y-2",
|
|
149
|
-
children: F.slice(0, 3).map((e) => /* @__PURE__ */ w(
|
|
149
|
+
children: F.slice(0, 3).map((e) => /* @__PURE__ */ w(s, {
|
|
150
150
|
app: e,
|
|
151
151
|
onClick: () => L(`/apps/${e.id}`)
|
|
152
152
|
}, e.id))
|
|
@@ -164,7 +164,7 @@ var E = () => {
|
|
|
164
164
|
children: [/* @__PURE__ */ w(y, { size: 16 }), j("devportal.createOrganization", "Create Organization")]
|
|
165
165
|
})
|
|
166
166
|
})
|
|
167
|
-
}), /* @__PURE__ */ w(
|
|
167
|
+
}), /* @__PURE__ */ w(i, {
|
|
168
168
|
title: j("devportal.quickActions", "Quick Actions"),
|
|
169
169
|
"data-tour": "devportal-dashboard-quick-actions",
|
|
170
170
|
children: /* @__PURE__ */ T("div", {
|
|
@@ -204,14 +204,14 @@ var E = () => {
|
|
|
204
204
|
})
|
|
205
205
|
})]
|
|
206
206
|
}),
|
|
207
|
-
R ? /* @__PURE__ */ w(
|
|
207
|
+
R ? /* @__PURE__ */ w(i, {
|
|
208
208
|
"data-tour": "devportal-dashboard-organizations",
|
|
209
209
|
title: j("devportal.yourOrganizations", "Your Organizations"),
|
|
210
210
|
children: /* @__PURE__ */ w("div", {
|
|
211
211
|
className: "flex items-center justify-center py-8",
|
|
212
212
|
children: /* @__PURE__ */ w(v, { className: "h-6 w-6 animate-spin text-muted-foreground" })
|
|
213
213
|
})
|
|
214
|
-
}) : P.length > 0 ? /* @__PURE__ */ w(
|
|
214
|
+
}) : P.length > 0 ? /* @__PURE__ */ w(i, {
|
|
215
215
|
title: j("devportal.yourOrganizations", "Your Organizations"),
|
|
216
216
|
actions: /* @__PURE__ */ T("button", {
|
|
217
217
|
onClick: () => L("/organizations"),
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { cn as e } from "../utils/cn.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 {
|
|
4
|
+
import { useCurrentUserDelegationsQuery as r, useCurrentUserGrantedDelegationsQuery as i, useRevokeDelegationMutation as a } from "../../generated/global-operations.js";
|
|
5
|
+
import { PageLayout as o } from "../components/PageLayout.js";
|
|
6
|
+
import { SelectionCheckbox as s } from "../components/SelectionCheckbox.js";
|
|
7
|
+
import { ConfirmDialog as c } from "../components/ConfirmDialog.js";
|
|
8
8
|
import { PermissionGuard as l } from "../components/PermissionGuard.js";
|
|
9
9
|
import "../components/index.js";
|
|
10
10
|
import { DEVPORTAL_PERMISSIONS as u } from "../constants/permissions.js";
|
|
@@ -96,13 +96,13 @@ var A = ({ type: t, className: n }) => {
|
|
|
96
96
|
]
|
|
97
97
|
})
|
|
98
98
|
});
|
|
99
|
-
}, ae = ({ delegation: t, onRevoke: n, isRevoking: r, selected:
|
|
99
|
+
}, ae = ({ delegation: t, onRevoke: n, isRevoking: r, selected: i, onToggleSelect: a, canRevoke: o }) => {
|
|
100
100
|
let { t: c } = m(), l = (e, t) => {
|
|
101
101
|
let n = c(e);
|
|
102
102
|
return n === e ? t : n;
|
|
103
103
|
};
|
|
104
104
|
return /* @__PURE__ */ T("div", {
|
|
105
|
-
className: e("rounded-lg border bg-card p-5 transition-colors hover:border-border/80",
|
|
105
|
+
className: e("rounded-lg border bg-card p-5 transition-colors hover:border-border/80", i && "border-primary bg-primary/5", t.status !== "ACTIVE" && "opacity-60"),
|
|
106
106
|
children: /* @__PURE__ */ E("div", {
|
|
107
107
|
className: "flex items-start justify-between gap-4",
|
|
108
108
|
children: [/* @__PURE__ */ E("div", {
|
|
@@ -110,9 +110,9 @@ var A = ({ type: t, className: n }) => {
|
|
|
110
110
|
children: [
|
|
111
111
|
t.status === "ACTIVE" && /* @__PURE__ */ T("div", {
|
|
112
112
|
onClick: (e) => e.stopPropagation(),
|
|
113
|
-
children: /* @__PURE__ */ T(
|
|
114
|
-
checked:
|
|
115
|
-
onChange:
|
|
113
|
+
children: /* @__PURE__ */ T(s, {
|
|
114
|
+
checked: i,
|
|
115
|
+
onChange: a,
|
|
116
116
|
ariaLabel: l("devportal.selectDelegationAriaLabel", `Select delegation ${t.app?.name ?? t.id}`),
|
|
117
117
|
className: "mt-1"
|
|
118
118
|
})
|
|
@@ -192,20 +192,20 @@ var A = ({ type: t, className: n }) => {
|
|
|
192
192
|
]
|
|
193
193
|
}), t.status === "ACTIVE" && /* @__PURE__ */ E("button", {
|
|
194
194
|
onClick: () => n(t),
|
|
195
|
-
disabled: r || !
|
|
196
|
-
"aria-disabled": !
|
|
195
|
+
disabled: r || !o,
|
|
196
|
+
"aria-disabled": !o,
|
|
197
197
|
className: "inline-flex shrink-0 items-center gap-2 rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-status-error-text transition-colors hover:bg-status-error-bg-subtle disabled:cursor-not-allowed disabled:opacity-50",
|
|
198
198
|
children: [r ? /* @__PURE__ */ T(b, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ T(C, { className: "h-4 w-4" }), l("devportal.revoke", "Revoke")]
|
|
199
199
|
})]
|
|
200
200
|
})
|
|
201
201
|
});
|
|
202
|
-
}, oe = ({ delegation: t, onRevoke: n, isRevoking: r, selected:
|
|
202
|
+
}, oe = ({ delegation: t, onRevoke: n, isRevoking: r, selected: i, onToggleSelect: a, canRevoke: o }) => {
|
|
203
203
|
let { t: c } = m(), l = (e, t) => {
|
|
204
204
|
let n = c(e);
|
|
205
205
|
return n === e ? t : n;
|
|
206
206
|
};
|
|
207
207
|
return /* @__PURE__ */ T("div", {
|
|
208
|
-
className: e("rounded-lg border bg-card p-5 transition-colors hover:border-border/80",
|
|
208
|
+
className: e("rounded-lg border bg-card p-5 transition-colors hover:border-border/80", i && "border-primary bg-primary/5"),
|
|
209
209
|
children: /* @__PURE__ */ E("div", {
|
|
210
210
|
className: "flex items-start justify-between gap-4",
|
|
211
211
|
children: [/* @__PURE__ */ E("div", {
|
|
@@ -213,9 +213,9 @@ var A = ({ type: t, className: n }) => {
|
|
|
213
213
|
children: [
|
|
214
214
|
t.status === "ACTIVE" && /* @__PURE__ */ T("div", {
|
|
215
215
|
onClick: (e) => e.stopPropagation(),
|
|
216
|
-
children: /* @__PURE__ */ T(
|
|
217
|
-
checked:
|
|
218
|
-
onChange:
|
|
216
|
+
children: /* @__PURE__ */ T(s, {
|
|
217
|
+
checked: i,
|
|
218
|
+
onChange: a,
|
|
219
219
|
ariaLabel: l("devportal.selectDelegationAriaLabel", `Select delegation ${t.app?.name ?? t.id}`),
|
|
220
220
|
className: "mt-1"
|
|
221
221
|
})
|
|
@@ -283,8 +283,8 @@ var A = ({ type: t, className: n }) => {
|
|
|
283
283
|
]
|
|
284
284
|
}), t.status === "ACTIVE" && /* @__PURE__ */ E("button", {
|
|
285
285
|
onClick: () => n(t),
|
|
286
|
-
disabled: r || !
|
|
287
|
-
"aria-disabled": !
|
|
286
|
+
disabled: r || !o,
|
|
287
|
+
"aria-disabled": !o,
|
|
288
288
|
className: "inline-flex shrink-0 items-center gap-2 rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-status-error-text transition-colors hover:bg-status-error-bg-subtle disabled:cursor-not-allowed disabled:opacity-50",
|
|
289
289
|
children: [r ? /* @__PURE__ */ T(b, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ T(C, { className: "h-4 w-4" }), l("devportal.revoke", "Revoke")]
|
|
290
290
|
})]
|
|
@@ -331,7 +331,7 @@ var A = ({ type: t, className: n }) => {
|
|
|
331
331
|
let { t: f } = m(), _ = (e, t) => {
|
|
332
332
|
let n = f(e);
|
|
333
333
|
return n === e ? t : n;
|
|
334
|
-
}, { allowed: y } = ee(u.DELEGATION_REVOKE), [b, C] = p("acting-as-me"), [w, O] = p([]), [k, A] = p(null), [j, M] = p(/* @__PURE__ */ new Set()), { data: N, loading: ce, error: le, refetch: P } =
|
|
334
|
+
}, { allowed: y } = ee(u.DELEGATION_REVOKE), [b, C] = p("acting-as-me"), [w, O] = p([]), [k, A] = p(null), [j, M] = p(/* @__PURE__ */ new Set()), { data: N, loading: ce, error: le, refetch: P } = r({ fetchPolicy: "cache-and-network" }), { data: F, loading: ue, error: de, refetch: I } = i({ fetchPolicy: "cache-and-network" }), [L, { loading: R }] = a(), z = (N?.currentUserDelegations?.delegations ?? []).map(D), B = (F?.currentUserGrantedDelegations?.delegations ?? []).map(D), V = z.filter((e) => e.status === "ACTIVE"), H = z.filter((e) => e.status !== "ACTIVE"), U = B.filter((e) => e.status === "ACTIVE"), W = b === "acting-as-me" ? V : U, G = te(() => W.filter((e) => j.has(e.id)), [j, W]), K = W.length > 0 && W.every((e) => j.has(e.id)), fe = W.some((e) => j.has(e.id)) && !K, q = b === "acting-as-me" ? ce : ue, J = b === "acting-as-me" ? le : de, Y = d((e) => {
|
|
335
335
|
O([e]);
|
|
336
336
|
}, []), X = d((e, t) => {
|
|
337
337
|
M((n) => {
|
|
@@ -374,7 +374,7 @@ var A = ({ type: t, className: n }) => {
|
|
|
374
374
|
}, []), Q = V.length, $ = U.length;
|
|
375
375
|
return /* @__PURE__ */ T(l, {
|
|
376
376
|
permission: u.INSTALLATION_READ,
|
|
377
|
-
children: /* @__PURE__ */ E(
|
|
377
|
+
children: /* @__PURE__ */ E(o, {
|
|
378
378
|
title: _("devportal.appDelegationsTitle", "App Delegations"),
|
|
379
379
|
description: _("devportal.appDelegationsDescription", "Manage which apps can act on your behalf. Revoke access at any time."),
|
|
380
380
|
children: [
|
|
@@ -487,7 +487,7 @@ var A = ({ type: t, className: n }) => {
|
|
|
487
487
|
className: "flex flex-wrap items-center gap-3",
|
|
488
488
|
children: [/* @__PURE__ */ E("div", {
|
|
489
489
|
className: "flex items-center gap-2",
|
|
490
|
-
children: [/* @__PURE__ */ T(
|
|
490
|
+
children: [/* @__PURE__ */ T(s, {
|
|
491
491
|
checked: K,
|
|
492
492
|
indeterminate: fe,
|
|
493
493
|
onChange: pe,
|
|
@@ -579,7 +579,7 @@ var A = ({ type: t, className: n }) => {
|
|
|
579
579
|
})] })]
|
|
580
580
|
})
|
|
581
581
|
}),
|
|
582
|
-
/* @__PURE__ */ T(
|
|
582
|
+
/* @__PURE__ */ T(c, {
|
|
583
583
|
open: w.length > 0,
|
|
584
584
|
onOpenChange: (e) => {
|
|
585
585
|
e || O([]);
|