@burdenoff/microfe-devportal 2026.801.1 → 2026.802.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/AdminDevportalRoutes.js +14 -14
- package/dist/devportal/DevportalRoutes.js +115 -115
- package/dist/devportal/DevportalRoutes.js.map +1 -1
- package/dist/devportal/components/SectionNav.js +1 -0
- package/dist/devportal/components/SectionNav.js.map +1 -1
- package/dist/devportal/components/TelemetryErrorBoundary.js +7 -7
- package/dist/devportal/pages/AnalyticsDashboardPage.js +41 -41
- package/dist/devportal/pages/AnalyticsDashboardPage.js.map +1 -1
- package/dist/devportal/pages/AppLogsPage.js +27 -27
- package/dist/devportal/pages/ApplicationDetailPage.js +929 -929
- package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
- package/dist/devportal/pages/ApplicationVersionsPage.js +39 -39
- package/dist/devportal/pages/ApplicationVersionsPage.js.map +1 -1
- package/dist/devportal/pages/CreateWebhookPage.js +55 -55
- package/dist/devportal/pages/EditApplicationPage.js +36 -36
- package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
- package/dist/devportal/pages/EditPhysicalItemPage.js +40 -40
- package/dist/devportal/pages/InvitationDecisionPage.js +25 -25
- package/dist/devportal/pages/ListingPreviewPage.js +36 -36
- package/dist/devportal/pages/OAuthCallbackPage.js +10 -10
- package/dist/devportal/pages/OAuthClientDetailPage.js +27 -27
- package/dist/devportal/pages/OAuthClientDetailPage.js.map +1 -1
- package/dist/devportal/pages/OrganizationDetailPage.js +329 -329
- package/dist/devportal/pages/OrganizationDetailPage.js.map +1 -1
- package/dist/devportal/pages/OrganizationMembersPage.js +181 -181
- package/dist/devportal/pages/OrganizationMembersPage.js.map +1 -1
- package/dist/devportal/pages/PublishPage.js +43 -43
- package/dist/devportal/pages/PublishPage.js.map +1 -1
- package/dist/devportal/pages/RevenueDashboardPage.js +65 -65
- package/dist/devportal/pages/RevenueDashboardPage.js.map +1 -1
- package/dist/devportal/pages/StoreSubmissionPage.js +126 -126
- package/dist/devportal/pages/StoreSubmissionPage.js.map +1 -1
- package/dist/devportal/pages/WebhookDetailPage.js +28 -28
- package/dist/devportal/pages/WebhookDetailPage.js.map +1 -1
- package/dist/devportal/pages/WebhooksPage.js +47 -47
- package/dist/devportal/pages/WebhooksPage.js.map +1 -1
- package/dist/devportal/providers/DevportalProvider.js +12 -12
- package/package.json +1 -1
- package/dist/node_modules/react-router/dist/production/lib/components.js +0 -124
- package/dist/node_modules/react-router/dist/production/lib/components.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/context.js +0 -32
- package/dist/node_modules/react-router/dist/production/lib/context.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/dom/dom.js +0 -83
- package/dist/node_modules/react-router/dist/production/lib/dom/dom.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/dom/lib.js +0 -358
- package/dist/node_modules/react-router/dist/production/lib/dom/lib.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/components.js +0 -188
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/components.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/invariant.js +0 -8
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/invariant.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/links.js +0 -75
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/links.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/markup.js +0 -15
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/markup.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/routeModules.js +0 -18
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/routeModules.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/single-fetch.js +0 -10
- package/dist/node_modules/react-router/dist/production/lib/dom/ssr/single-fetch.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/errors.js +0 -19
- package/dist/node_modules/react-router/dist/production/lib/errors.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/hooks.js +0 -296
- package/dist/node_modules/react-router/dist/production/lib/hooks.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/router/history.js +0 -166
- package/dist/node_modules/react-router/dist/production/lib/router/history.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/router/router.js +0 -33
- package/dist/node_modules/react-router/dist/production/lib/router/router.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/router/url.js +0 -9
- package/dist/node_modules/react-router/dist/production/lib/router/url.js.map +0 -1
- package/dist/node_modules/react-router/dist/production/lib/router/utils.js +0 -236
- package/dist/node_modules/react-router/dist/production/lib/router/utils.js.map +0 -1
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { PageLayout as o, PageSection as s } from "../components/PageLayout.js";
|
|
1
|
+
import { useDevportal as e } from "../providers/DevportalProvider.js";
|
|
2
|
+
import { EmptyState as t } from "../components/EmptyState.js";
|
|
3
|
+
import { useAcceptInvitationMutation as n, useGetInvitationByTokenQuery as r, useRejectInvitationMutation as i } from "../../generated/global-operations.js";
|
|
4
|
+
import { PageLayout as a, PageSection as o } from "../components/PageLayout.js";
|
|
6
5
|
import "../hooks/index.js";
|
|
7
|
-
import { CheckCircle as
|
|
6
|
+
import { CheckCircle as s, Loader2 as c, Mail as l, Shield as u, XCircle as d } from "lucide-react";
|
|
7
|
+
import { useParams as f } from "react-router";
|
|
8
8
|
import { jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
9
9
|
//#region src/devportal/pages/InvitationDecisionPage.tsx
|
|
10
10
|
var h = () => {
|
|
11
|
-
let { token: h } =
|
|
11
|
+
let { token: h } = f(), { navigate: g, basePath: _ } = e(), { data: v, loading: y, error: b } = r({
|
|
12
12
|
variables: { token: h ?? "" },
|
|
13
13
|
skip: !h,
|
|
14
14
|
fetchPolicy: "cache-and-network"
|
|
15
|
-
}), [x, { loading: S, data: C }] =
|
|
15
|
+
}), [x, { loading: S, data: C }] = n(), [w, { loading: T, data: E }] = i(), D = v?.developerOrgInvitationByToken, O = C?.acceptDeveloperOrgInvitation, k = E?.rejectDeveloperOrgInvitation, A = async () => {
|
|
16
16
|
h && await x({ variables: { token: h } });
|
|
17
17
|
}, j = async () => {
|
|
18
18
|
h && await w({ variables: { token: h } });
|
|
19
19
|
};
|
|
20
|
-
return y && !D ? /* @__PURE__ */ p(
|
|
20
|
+
return y && !D ? /* @__PURE__ */ p(a, {
|
|
21
21
|
title: "Developer Team Invitation",
|
|
22
22
|
children: /* @__PURE__ */ p("div", {
|
|
23
23
|
className: "flex items-center justify-center py-16 text-text-secondary",
|
|
24
|
-
children: /* @__PURE__ */ p(
|
|
24
|
+
children: /* @__PURE__ */ p(c, { className: "h-8 w-8 animate-spin" })
|
|
25
25
|
})
|
|
26
|
-
}) : b || !D ? /* @__PURE__ */ p(
|
|
26
|
+
}) : b || !D ? /* @__PURE__ */ p(a, {
|
|
27
27
|
title: "Developer Team Invitation",
|
|
28
|
-
children: /* @__PURE__ */ p(
|
|
29
|
-
icon: /* @__PURE__ */ p(
|
|
28
|
+
children: /* @__PURE__ */ p(t, {
|
|
29
|
+
icon: /* @__PURE__ */ p(d, {
|
|
30
30
|
size: 32,
|
|
31
31
|
className: "text-status-error-text"
|
|
32
32
|
}),
|
|
33
33
|
title: "Invitation not available",
|
|
34
34
|
description: b?.message || "This invitation is invalid, expired, or not available to your signed-in account."
|
|
35
35
|
})
|
|
36
|
-
}) : O ? /* @__PURE__ */ p(
|
|
36
|
+
}) : O ? /* @__PURE__ */ p(a, {
|
|
37
37
|
title: "Invitation accepted",
|
|
38
|
-
children: /* @__PURE__ */ p(
|
|
39
|
-
icon: /* @__PURE__ */ p(
|
|
38
|
+
children: /* @__PURE__ */ p(t, {
|
|
39
|
+
icon: /* @__PURE__ */ p(s, {
|
|
40
40
|
size: 32,
|
|
41
41
|
className: "text-status-success-text"
|
|
42
42
|
}),
|
|
@@ -49,10 +49,10 @@ var h = () => {
|
|
|
49
49
|
children: "Open organization"
|
|
50
50
|
})
|
|
51
51
|
})
|
|
52
|
-
}) : k ? /* @__PURE__ */ p(
|
|
52
|
+
}) : k ? /* @__PURE__ */ p(a, {
|
|
53
53
|
title: "Invitation declined",
|
|
54
|
-
children: /* @__PURE__ */ p(
|
|
55
|
-
icon: /* @__PURE__ */ p(
|
|
54
|
+
children: /* @__PURE__ */ p(t, {
|
|
55
|
+
icon: /* @__PURE__ */ p(d, {
|
|
56
56
|
size: 32,
|
|
57
57
|
className: "text-status-warning-text"
|
|
58
58
|
}),
|
|
@@ -65,12 +65,12 @@ var h = () => {
|
|
|
65
65
|
children: "Return to Devportal"
|
|
66
66
|
})
|
|
67
67
|
})
|
|
68
|
-
}) : /* @__PURE__ */ p(
|
|
68
|
+
}) : /* @__PURE__ */ p(a, {
|
|
69
69
|
title: "Developer Team Invitation",
|
|
70
70
|
description: "Review your invitation to join a developer organization",
|
|
71
71
|
children: /* @__PURE__ */ m("div", {
|
|
72
72
|
className: "mx-auto max-w-2xl space-y-6",
|
|
73
|
-
children: [/* @__PURE__ */ p(
|
|
73
|
+
children: [/* @__PURE__ */ p(o, {
|
|
74
74
|
title: "Invitation details",
|
|
75
75
|
children: /* @__PURE__ */ m("div", {
|
|
76
76
|
className: "rounded-card border border-border-seam bg-bg-surface p-6 space-y-4",
|
|
@@ -89,13 +89,13 @@ var h = () => {
|
|
|
89
89
|
children: "Invited email"
|
|
90
90
|
}), /* @__PURE__ */ m("p", {
|
|
91
91
|
className: "flex items-center gap-2 text-text-primary",
|
|
92
|
-
children: [/* @__PURE__ */ p(
|
|
92
|
+
children: [/* @__PURE__ */ p(l, { size: 14 }), D.invitedEmail]
|
|
93
93
|
})] }), /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("p", {
|
|
94
94
|
className: "text-sm text-text-secondary",
|
|
95
95
|
children: "Role"
|
|
96
96
|
}), /* @__PURE__ */ m("p", {
|
|
97
97
|
className: "flex items-center gap-2 text-text-primary",
|
|
98
|
-
children: [/* @__PURE__ */ p(
|
|
98
|
+
children: [/* @__PURE__ */ p(u, { size: 14 }), D.role]
|
|
99
99
|
})] })]
|
|
100
100
|
}),
|
|
101
101
|
D.message ? /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("p", {
|
|
@@ -118,7 +118,7 @@ var h = () => {
|
|
|
118
118
|
onClick: () => void j(),
|
|
119
119
|
disabled: S || T,
|
|
120
120
|
className: "inline-flex items-center gap-2 rounded-md border border-border-seam px-4 py-2 text-sm font-medium hover:bg-bg-sunken disabled:opacity-50",
|
|
121
|
-
children: [T ? /* @__PURE__ */ p(
|
|
121
|
+
children: [T ? /* @__PURE__ */ p(c, {
|
|
122
122
|
size: 14,
|
|
123
123
|
className: "animate-spin"
|
|
124
124
|
}) : null, "Decline"]
|
|
@@ -127,7 +127,7 @@ var h = () => {
|
|
|
127
127
|
onClick: () => void A(),
|
|
128
128
|
disabled: S || T,
|
|
129
129
|
className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 disabled:opacity-50",
|
|
130
|
-
children: [S ? /* @__PURE__ */ p(
|
|
130
|
+
children: [S ? /* @__PURE__ */ p(c, {
|
|
131
131
|
size: 14,
|
|
132
132
|
className: "animate-spin"
|
|
133
133
|
}) : null, "Accept invitation"]
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { PermissionGuard as o } from "../components/PermissionGuard.js";
|
|
1
|
+
import { useDevportal as e } from "../providers/DevportalProvider.js";
|
|
2
|
+
import { useGetApplicationQuery as t } from "../../generated/global-operations.js";
|
|
3
|
+
import { PageLayout as n, PageSection as r } from "../components/PageLayout.js";
|
|
4
|
+
import { Alert as i } from "../components/ConfirmDialog.js";
|
|
5
|
+
import { PermissionGuard as a } from "../components/PermissionGuard.js";
|
|
7
6
|
import "../components/index.js";
|
|
8
|
-
import { useEffect as
|
|
9
|
-
import { Markdown as
|
|
10
|
-
import { useI18n as
|
|
11
|
-
import { CheckCircle as
|
|
7
|
+
import { useEffect as o } from "react";
|
|
8
|
+
import { Markdown as s } from "@burdenoff/fe-libs/shared/components";
|
|
9
|
+
import { useI18n as c } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
10
|
+
import { CheckCircle as l, Download as u, ExternalLink as d, Eye as f, FileText as p, Globe as m, Loader2 as h, Shield as g, Star as _, Tag as v } from "lucide-react";
|
|
11
|
+
import { useParams as y } from "react-router";
|
|
12
12
|
import { jsx as b, jsxs as x } from "react/jsx-runtime";
|
|
13
13
|
//#region src/devportal/pages/ListingPreviewPage.tsx
|
|
14
14
|
var S = {
|
|
@@ -35,44 +35,44 @@ var S = {
|
|
|
35
35
|
CLI_TOOL: "CLI Tool",
|
|
36
36
|
SERVICE: "Service"
|
|
37
37
|
}, w = () => {
|
|
38
|
-
let { appId: w } =
|
|
38
|
+
let { appId: w } = y(), { navigate: T, basePath: E } = e(), { t: D } = c(), O = (e, t) => {
|
|
39
39
|
let n = D(e);
|
|
40
40
|
return n === e ? t : n;
|
|
41
|
-
}, { data: k, loading: A, error: j } =
|
|
41
|
+
}, { data: k, loading: A, error: j } = t({
|
|
42
42
|
variables: { id: w },
|
|
43
43
|
skip: !w,
|
|
44
44
|
fetchPolicy: "cache-and-network"
|
|
45
45
|
}), M = k?.application;
|
|
46
|
-
if (
|
|
46
|
+
if (o(() => {
|
|
47
47
|
let e = M?.name;
|
|
48
48
|
if (!w || !e) return;
|
|
49
49
|
let t = window.__breadcrumbRegistry;
|
|
50
50
|
return t?.register(w, e), () => t?.unregister(w);
|
|
51
|
-
}, [w, M?.name]), A) return /* @__PURE__ */ b(
|
|
51
|
+
}, [w, M?.name]), A) return /* @__PURE__ */ b(n, {
|
|
52
52
|
title: O("devportal.marketplacePreview", "Marketplace Preview"),
|
|
53
53
|
description: O("devportal.loading", "Loading..."),
|
|
54
54
|
backLink: `/apps/${w}`,
|
|
55
55
|
backLabel: O("devportal.backToApplication", "Back to Application"),
|
|
56
56
|
children: /* @__PURE__ */ b("div", {
|
|
57
57
|
className: "flex items-center justify-center py-12",
|
|
58
|
-
children: /* @__PURE__ */ b(
|
|
58
|
+
children: /* @__PURE__ */ b(h, { className: "h-8 w-8 animate-spin text-text-secondary" })
|
|
59
59
|
})
|
|
60
60
|
});
|
|
61
|
-
if (j || !M) return /* @__PURE__ */ b(
|
|
61
|
+
if (j || !M) return /* @__PURE__ */ b(n, {
|
|
62
62
|
title: O("devportal.marketplacePreview", "Marketplace Preview"),
|
|
63
63
|
description: O("devportal.couldNotLoadApplication", "Could not load application"),
|
|
64
64
|
backLink: `/apps/${w}`,
|
|
65
65
|
backLabel: O("devportal.backToApplication", "Back to Application"),
|
|
66
|
-
children: /* @__PURE__ */ b(
|
|
66
|
+
children: /* @__PURE__ */ b(i, {
|
|
67
67
|
variant: "error",
|
|
68
68
|
title: O("devportal.failedToLoadApplication", "Failed to load application"),
|
|
69
69
|
children: j?.message ?? O("devportal.applicationNotFound", "Application not found")
|
|
70
70
|
})
|
|
71
71
|
});
|
|
72
72
|
let N = Array.isArray(M.screenshots) ? M.screenshots : [], P = M.status === "PUBLISHED";
|
|
73
|
-
return /* @__PURE__ */ b(
|
|
73
|
+
return /* @__PURE__ */ b(a, {
|
|
74
74
|
authOnly: !0,
|
|
75
|
-
children: /* @__PURE__ */ x(
|
|
75
|
+
children: /* @__PURE__ */ x(n, {
|
|
76
76
|
title: O("devportal.marketplacePreview", "Marketplace Preview"),
|
|
77
77
|
description: O("devportal.marketplacePreviewDescription", "Preview how your app will appear in the marketplace"),
|
|
78
78
|
purpose: O("devportal.marketplacePreviewPurpose", "See exactly how shoppers will experience your store listing — icon, screenshots, description, and pricing — before it goes live. Use it to catch missing assets or typos, then submit for review when the listing looks right."),
|
|
@@ -81,12 +81,12 @@ var S = {
|
|
|
81
81
|
actions: P ? void 0 : /* @__PURE__ */ x("button", {
|
|
82
82
|
onClick: () => T?.(`${E}/apps/${w}/publish`),
|
|
83
83
|
className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90",
|
|
84
|
-
children: [/* @__PURE__ */ b(
|
|
84
|
+
children: [/* @__PURE__ */ b(f, { size: 16 }), O("devportal.submitForReview", "Submit for Review")]
|
|
85
85
|
}),
|
|
86
86
|
children: [
|
|
87
87
|
/* @__PURE__ */ x("div", {
|
|
88
88
|
className: "flex items-center gap-2 rounded-lg border border-border-subtle bg-status-warning-bg-subtle px-4 py-3 text-sm text-status-warning-text",
|
|
89
|
-
children: [/* @__PURE__ */ b(
|
|
89
|
+
children: [/* @__PURE__ */ b(f, {
|
|
90
90
|
size: 16,
|
|
91
91
|
className: "flex-shrink-0"
|
|
92
92
|
}), /* @__PURE__ */ b("span", { children: O("devportal.previewBannerText", "This is a preview of your marketplace listing. It shows how your app will appear to users after publication.") })]
|
|
@@ -129,7 +129,7 @@ var S = {
|
|
|
129
129
|
className: "text-2xl font-bold",
|
|
130
130
|
children: M.name
|
|
131
131
|
}),
|
|
132
|
-
M.isVerified && /* @__PURE__ */ b(
|
|
132
|
+
M.isVerified && /* @__PURE__ */ b(l, {
|
|
133
133
|
size: 20,
|
|
134
134
|
className: "text-primary"
|
|
135
135
|
}),
|
|
@@ -149,7 +149,7 @@ var S = {
|
|
|
149
149
|
M.averageRating != null && /* @__PURE__ */ x("div", {
|
|
150
150
|
className: "flex items-center gap-1",
|
|
151
151
|
children: [
|
|
152
|
-
/* @__PURE__ */ b(
|
|
152
|
+
/* @__PURE__ */ b(_, {
|
|
153
153
|
size: 14,
|
|
154
154
|
className: "text-status-warning-text fill-status-warning-text"
|
|
155
155
|
}),
|
|
@@ -168,7 +168,7 @@ var S = {
|
|
|
168
168
|
}),
|
|
169
169
|
/* @__PURE__ */ x("div", {
|
|
170
170
|
className: "flex items-center gap-1",
|
|
171
|
-
children: [/* @__PURE__ */ b(
|
|
171
|
+
children: [/* @__PURE__ */ b(u, { size: 14 }), /* @__PURE__ */ x("span", { children: [
|
|
172
172
|
(M.installCount ?? 0).toLocaleString(),
|
|
173
173
|
" ",
|
|
174
174
|
O("devportal.installs", "installs")
|
|
@@ -227,7 +227,7 @@ var S = {
|
|
|
227
227
|
children: [/* @__PURE__ */ b("h2", {
|
|
228
228
|
className: "text-base font-semibold mb-2",
|
|
229
229
|
children: O("devportal.about", "About")
|
|
230
|
-
}), M.description || M.shortDescription ? /* @__PURE__ */ b(
|
|
230
|
+
}), M.description || M.shortDescription ? /* @__PURE__ */ b(s, {
|
|
231
231
|
className: "text-sm text-text-secondary",
|
|
232
232
|
children: M.description ?? M.shortDescription ?? ""
|
|
233
233
|
}) : /* @__PURE__ */ b("p", {
|
|
@@ -241,7 +241,7 @@ var S = {
|
|
|
241
241
|
className: "flex flex-wrap gap-2",
|
|
242
242
|
children: M.tags.map((e) => /* @__PURE__ */ x("span", {
|
|
243
243
|
className: "inline-flex items-center gap-1 rounded-full border px-3 py-1 text-xs text-text-secondary",
|
|
244
|
-
children: [/* @__PURE__ */ b(
|
|
244
|
+
children: [/* @__PURE__ */ b(v, { size: 10 }), e]
|
|
245
245
|
}, e))
|
|
246
246
|
})
|
|
247
247
|
}),
|
|
@@ -254,9 +254,9 @@ var S = {
|
|
|
254
254
|
rel: "noopener noreferrer",
|
|
255
255
|
className: "flex items-center gap-2 text-primary hover:underline",
|
|
256
256
|
children: [
|
|
257
|
-
/* @__PURE__ */ b(
|
|
257
|
+
/* @__PURE__ */ b(m, { size: 14 }),
|
|
258
258
|
O("devportal.website", "Website"),
|
|
259
|
-
/* @__PURE__ */ b(
|
|
259
|
+
/* @__PURE__ */ b(d, { size: 12 })
|
|
260
260
|
]
|
|
261
261
|
}),
|
|
262
262
|
M.documentationUrl && /* @__PURE__ */ x("a", {
|
|
@@ -265,9 +265,9 @@ var S = {
|
|
|
265
265
|
rel: "noopener noreferrer",
|
|
266
266
|
className: "flex items-center gap-2 text-primary hover:underline",
|
|
267
267
|
children: [
|
|
268
|
-
/* @__PURE__ */ b(
|
|
268
|
+
/* @__PURE__ */ b(p, { size: 14 }),
|
|
269
269
|
O("devportal.documentation", "Documentation"),
|
|
270
|
-
/* @__PURE__ */ b(
|
|
270
|
+
/* @__PURE__ */ b(d, { size: 12 })
|
|
271
271
|
]
|
|
272
272
|
}),
|
|
273
273
|
M.privacyPolicyUrl && /* @__PURE__ */ x("a", {
|
|
@@ -276,9 +276,9 @@ var S = {
|
|
|
276
276
|
rel: "noopener noreferrer",
|
|
277
277
|
className: "flex items-center gap-2 text-primary hover:underline",
|
|
278
278
|
children: [
|
|
279
|
-
/* @__PURE__ */ b(
|
|
279
|
+
/* @__PURE__ */ b(g, { size: 14 }),
|
|
280
280
|
O("devportal.privacyPolicy", "Privacy Policy"),
|
|
281
|
-
/* @__PURE__ */ b(
|
|
281
|
+
/* @__PURE__ */ b(d, { size: 12 })
|
|
282
282
|
]
|
|
283
283
|
}),
|
|
284
284
|
M.termsOfServiceUrl && /* @__PURE__ */ x("a", {
|
|
@@ -287,16 +287,16 @@ var S = {
|
|
|
287
287
|
rel: "noopener noreferrer",
|
|
288
288
|
className: "flex items-center gap-2 text-primary hover:underline",
|
|
289
289
|
children: [
|
|
290
|
-
/* @__PURE__ */ b(
|
|
290
|
+
/* @__PURE__ */ b(p, { size: 14 }),
|
|
291
291
|
O("devportal.termsOfService", "Terms of Service"),
|
|
292
|
-
/* @__PURE__ */ b(
|
|
292
|
+
/* @__PURE__ */ b(d, { size: 12 })
|
|
293
293
|
]
|
|
294
294
|
})
|
|
295
295
|
]
|
|
296
296
|
})
|
|
297
297
|
]
|
|
298
298
|
}),
|
|
299
|
-
/* @__PURE__ */ x(
|
|
299
|
+
/* @__PURE__ */ x(r, {
|
|
300
300
|
title: O("devportal.listingCompleteness", "Listing Completeness"),
|
|
301
301
|
children: [/* @__PURE__ */ b("div", {
|
|
302
302
|
className: "space-y-2",
|
|
@@ -339,7 +339,7 @@ var S = {
|
|
|
339
339
|
}
|
|
340
340
|
].map(({ label: e, ok: t }) => /* @__PURE__ */ x("div", {
|
|
341
341
|
className: "flex items-center gap-3 text-sm",
|
|
342
|
-
children: [t ? /* @__PURE__ */ b(
|
|
342
|
+
children: [t ? /* @__PURE__ */ b(l, {
|
|
343
343
|
size: 16,
|
|
344
344
|
className: "text-status-success-text flex-shrink-0"
|
|
345
345
|
}) : /* @__PURE__ */ b("div", { className: "h-4 w-4 rounded-full border-2 border-muted-foreground flex-shrink-0" }), /* @__PURE__ */ b("span", {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { useDevportal as e } from "../providers/DevportalProvider.js";
|
|
2
|
+
import { useCompleteAppOAuthMutation as t } from "../../generated/global-operations.js";
|
|
3
|
+
import { useEffect as n, useState as r } from "react";
|
|
4
|
+
import { CheckCircle as i, Loader2 as a, XCircle as o } from "lucide-react";
|
|
5
|
+
import { useSearchParams as s } from "react-router";
|
|
6
6
|
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
7
7
|
//#region src/devportal/pages/OAuthCallbackPage.tsx
|
|
8
8
|
var u = () => {
|
|
9
|
-
let [u] =
|
|
10
|
-
return
|
|
9
|
+
let [u] = s(), { navigate: d, basePath: f } = e(), [p, m] = r("loading"), [h, g] = r(""), [_] = t();
|
|
10
|
+
return n(() => {
|
|
11
11
|
let e = u.get("code"), t = u.get("state"), n = localStorage.getItem("oauth_pending");
|
|
12
12
|
if (!n || !e || !t) {
|
|
13
13
|
m("error"), g("Missing OAuth parameters.");
|
|
@@ -33,20 +33,20 @@ var u = () => {
|
|
|
33
33
|
});
|
|
34
34
|
}, []), p === "loading" ? /* @__PURE__ */ l("div", {
|
|
35
35
|
className: "flex flex-col items-center justify-center min-h-[60vh] gap-4",
|
|
36
|
-
children: [/* @__PURE__ */ c(
|
|
36
|
+
children: [/* @__PURE__ */ c(a, { className: "h-8 w-8 animate-spin text-primary" }), /* @__PURE__ */ c("p", {
|
|
37
37
|
className: "text-sm text-muted-foreground",
|
|
38
38
|
children: "Completing authorization…"
|
|
39
39
|
})]
|
|
40
40
|
}) : p === "success" ? /* @__PURE__ */ l("div", {
|
|
41
41
|
className: "flex flex-col items-center justify-center min-h-[60vh] gap-4",
|
|
42
|
-
children: [/* @__PURE__ */ c(
|
|
42
|
+
children: [/* @__PURE__ */ c(i, { className: "h-8 w-8 text-status-success-text" }), /* @__PURE__ */ c("p", {
|
|
43
43
|
className: "text-sm font-medium",
|
|
44
44
|
children: "Authorization successful! Redirecting…"
|
|
45
45
|
})]
|
|
46
46
|
}) : /* @__PURE__ */ l("div", {
|
|
47
47
|
className: "flex flex-col items-center justify-center min-h-[60vh] gap-4",
|
|
48
48
|
children: [
|
|
49
|
-
/* @__PURE__ */ c(
|
|
49
|
+
/* @__PURE__ */ c(o, { className: "h-8 w-8 text-status-error-text" }),
|
|
50
50
|
/* @__PURE__ */ c("p", {
|
|
51
51
|
className: "text-sm font-medium text-status-error-text",
|
|
52
52
|
children: "Authorization failed"
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { PageLayout as s } from "../components/PageLayout.js";
|
|
1
|
+
import { useDevportal as e } from "../providers/DevportalProvider.js";
|
|
2
|
+
import { cn as t } from "../utils/cn.js";
|
|
3
|
+
import { useDeactivateAppMutation as n, useGetAuthAppQuery as r, useRotateAppSecretMutation as i, useUpdateAuthAppMutation as a } from "../../generated/global-operations.js";
|
|
4
|
+
import { getErrorMessage as ee } from "../hooks/useGraphQL.js";
|
|
5
|
+
import { PageLayout as o } from "../components/PageLayout.js";
|
|
7
6
|
import { ActiveIndicator as te } from "../components/StatusBadge.js";
|
|
8
|
-
import { nativeCopyText as
|
|
9
|
-
import { PermissionGuard as
|
|
7
|
+
import { nativeCopyText as s, nativeImpact as c, nativeNotify as l } from "../../utils/nativeBridge.js";
|
|
8
|
+
import { PermissionGuard as ne } from "../components/PermissionGuard.js";
|
|
10
9
|
import "../components/index.js";
|
|
11
10
|
import "../hooks/index.js";
|
|
12
|
-
import { useState as
|
|
11
|
+
import { useState as u } from "react";
|
|
13
12
|
import { useI18n as re } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
14
|
-
import { AlertCircle as ie, ArrowLeft as ae, Copy as
|
|
13
|
+
import { AlertCircle as ie, ArrowLeft as ae, Copy as d, Eye as f, EyeOff as p, Loader2 as m, RefreshCw as h, Trash2 as g } from "lucide-react";
|
|
14
|
+
import { useParams as _ } from "react-router";
|
|
15
15
|
import { jsx as v, jsxs as y } from "react/jsx-runtime";
|
|
16
16
|
import { AlertDialog as b, AlertDialogAction as x, AlertDialogCancel as S, AlertDialogContent as C, AlertDialogDescription as w, AlertDialogFooter as T, AlertDialogHeader as E, AlertDialogTitle as D, CTAOverflowMenu as O, GlassCard as k } from "@burdenoff/fe-libs/ui";
|
|
17
17
|
//#region src/devportal/pages/OAuthClientDetailPage.tsx
|
|
18
18
|
var A = () => {
|
|
19
|
-
let { clientId: A } =
|
|
19
|
+
let { clientId: A } = _(), { navigate: j, basePath: M } = e(), { t: N } = re(), P = (e, t) => {
|
|
20
20
|
let n = N(e);
|
|
21
21
|
return n === e ? t : n;
|
|
22
|
-
}, [F, I] =
|
|
22
|
+
}, [F, I] = u(!1), [L, R] = u(null), [z, B] = u(!1), [V, H] = u(!1), { data: U, loading: W, error: G, refetch: K } = r({
|
|
23
23
|
variables: { id: A || "" },
|
|
24
24
|
skip: !A,
|
|
25
25
|
fetchPolicy: "cache-and-network"
|
|
26
|
-
}), [q, { loading: J }] =
|
|
26
|
+
}), [q, { loading: J }] = i(), [Y, { loading: X }] = n(), [oe] = a(), Z = U?.app ? {
|
|
27
27
|
id: U.app.id,
|
|
28
28
|
name: U.app.name,
|
|
29
29
|
description: U.app.description ?? void 0,
|
|
@@ -39,7 +39,7 @@ var A = () => {
|
|
|
39
39
|
} : null, Q = (e) => {
|
|
40
40
|
j?.(`${M}${e}`);
|
|
41
41
|
}, $ = async (e) => {
|
|
42
|
-
c("light"), l(await
|
|
42
|
+
c("light"), l(await s(e) ? "success" : "error");
|
|
43
43
|
}, se = async () => {
|
|
44
44
|
if (A) try {
|
|
45
45
|
let e = (await q({ variables: { id: A } })).data?.rotateAppSecret?.clientSecret;
|
|
@@ -50,16 +50,16 @@ var A = () => {
|
|
|
50
50
|
await Y({ variables: { id: A } }), B(!1), Q("/oauth");
|
|
51
51
|
} catch {}
|
|
52
52
|
};
|
|
53
|
-
return W && !U ? /* @__PURE__ */ v(
|
|
53
|
+
return W && !U ? /* @__PURE__ */ v(o, {
|
|
54
54
|
title: P("devportal.appDetails", "App Details"),
|
|
55
55
|
description: P("devportal.loadingDots", "Loading..."),
|
|
56
56
|
backLink: "/oauth",
|
|
57
57
|
backLabel: P("devportal.backToApps", "Back to Apps"),
|
|
58
58
|
children: /* @__PURE__ */ v("div", {
|
|
59
59
|
className: "flex items-center justify-center py-12",
|
|
60
|
-
children: /* @__PURE__ */ v(
|
|
60
|
+
children: /* @__PURE__ */ v(m, { className: "h-8 w-8 animate-spin text-text-secondary" })
|
|
61
61
|
})
|
|
62
|
-
}) : G || !Z ? /* @__PURE__ */ v(
|
|
62
|
+
}) : G || !Z ? /* @__PURE__ */ v(o, {
|
|
63
63
|
title: P("devportal.appDetails", "App Details"),
|
|
64
64
|
description: P("devportal.failedToLoad", "Failed to load"),
|
|
65
65
|
backLink: "/oauth",
|
|
@@ -74,7 +74,7 @@ var A = () => {
|
|
|
74
74
|
}),
|
|
75
75
|
G && /* @__PURE__ */ v("p", {
|
|
76
76
|
className: "mt-1 text-sm text-text-secondary",
|
|
77
|
-
children:
|
|
77
|
+
children: ee(G)
|
|
78
78
|
}),
|
|
79
79
|
/* @__PURE__ */ y("button", {
|
|
80
80
|
onClick: () => Q("/oauth"),
|
|
@@ -83,9 +83,9 @@ var A = () => {
|
|
|
83
83
|
})
|
|
84
84
|
]
|
|
85
85
|
})
|
|
86
|
-
}) : /* @__PURE__ */ v(
|
|
86
|
+
}) : /* @__PURE__ */ v(ne, {
|
|
87
87
|
authOnly: !0,
|
|
88
|
-
children: /* @__PURE__ */ y(
|
|
88
|
+
children: /* @__PURE__ */ y(o, {
|
|
89
89
|
title: Z.name,
|
|
90
90
|
description: Z.description || P("devportal.oauthAppDetailsAndCredentials", "OAuth App details and credentials"),
|
|
91
91
|
purpose: P("devportal.oauthAppDetailPurpose", "These are this OAuth app's credentials and the scopes it may request. Copy the client ID for your integration, rotate the secret if it leaks, and keep scopes minimal so users only grant what the app truly needs."),
|
|
@@ -107,7 +107,7 @@ var A = () => {
|
|
|
107
107
|
},
|
|
108
108
|
actions: [{
|
|
109
109
|
label: P("devportal.delete", "Delete"),
|
|
110
|
-
icon: /* @__PURE__ */ v(
|
|
110
|
+
icon: /* @__PURE__ */ v(g, { size: 16 }),
|
|
111
111
|
intent: "destructive",
|
|
112
112
|
onSelect: () => B(!0)
|
|
113
113
|
}]
|
|
@@ -142,7 +142,7 @@ var A = () => {
|
|
|
142
142
|
className: "text-sm text-text-secondary",
|
|
143
143
|
children: P("devportal.type", "Type")
|
|
144
144
|
}), /* @__PURE__ */ v("span", {
|
|
145
|
-
className:
|
|
145
|
+
className: t("rounded px-2 py-0.5 text-xs font-medium", Z.type === "SERVICE" ? "bg-accent-purple-subtle text-accent-purple" : Z.type === "INTEGRATION" || Z.type === "API_INTEGRATION" ? "bg-status-info-bg-subtle text-status-info-text" : "bg-status-success-bg-subtle text-status-success-text"),
|
|
146
146
|
children: Z.type
|
|
147
147
|
})]
|
|
148
148
|
}),
|
|
@@ -180,7 +180,7 @@ var A = () => {
|
|
|
180
180
|
onClick: () => $(Z.clientId),
|
|
181
181
|
className: "rounded p-1.5 hover:bg-bg-sunken transition-colors",
|
|
182
182
|
title: "Copy",
|
|
183
|
-
children: /* @__PURE__ */ v(
|
|
183
|
+
children: /* @__PURE__ */ v(d, { size: 14 })
|
|
184
184
|
})]
|
|
185
185
|
})] }),
|
|
186
186
|
L && /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("label", {
|
|
@@ -196,12 +196,12 @@ var A = () => {
|
|
|
196
196
|
/* @__PURE__ */ v("button", {
|
|
197
197
|
onClick: () => I(!F),
|
|
198
198
|
className: "rounded p-1.5 hover:bg-bg-sunken transition-colors",
|
|
199
|
-
children: v(F ?
|
|
199
|
+
children: v(F ? p : f, { size: 14 })
|
|
200
200
|
}),
|
|
201
201
|
/* @__PURE__ */ v("button", {
|
|
202
202
|
onClick: () => $(L),
|
|
203
203
|
className: "rounded p-1.5 hover:bg-bg-sunken transition-colors",
|
|
204
|
-
children: /* @__PURE__ */ v(
|
|
204
|
+
children: /* @__PURE__ */ v(d, { size: 14 })
|
|
205
205
|
})
|
|
206
206
|
]
|
|
207
207
|
})] }),
|
|
@@ -209,7 +209,7 @@ var A = () => {
|
|
|
209
209
|
onClick: () => H(!0),
|
|
210
210
|
disabled: J,
|
|
211
211
|
className: "mt-2 inline-flex items-center gap-2 rounded-md bg-status-warning-bg-subtle px-3 py-1.5 text-sm font-medium text-status-warning-text hover:bg-status-warning-bg-subtle transition-colors disabled:opacity-50",
|
|
212
|
-
children: [/* @__PURE__ */ v(
|
|
212
|
+
children: [/* @__PURE__ */ v(h, {
|
|
213
213
|
size: 14,
|
|
214
214
|
className: J ? "animate-spin" : ""
|
|
215
215
|
}), P("devportal.rotateSecret", "Rotate Secret")]
|
|
@@ -259,7 +259,7 @@ var A = () => {
|
|
|
259
259
|
}), /* @__PURE__ */ v("button", {
|
|
260
260
|
onClick: () => $(e),
|
|
261
261
|
className: "rounded p-1 hover:bg-bg-sunken transition-colors",
|
|
262
|
-
children: /* @__PURE__ */ v(
|
|
262
|
+
children: /* @__PURE__ */ v(d, { size: 12 })
|
|
263
263
|
})]
|
|
264
264
|
}, e))
|
|
265
265
|
}) : /* @__PURE__ */ v("p", {
|