@burdenoff/microfe-devportal 2026.611.1 → 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 +109 -422
- 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 +528 -322
- 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/devportal/types/index.js.map +1 -1
- package/dist/generated/global-operations.js +99 -59
- package/dist/generated/global-operations.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 { EmptyState as t } from "../components/EmptyState.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
3
|
+
import { useGetAnalyticsDashboardOptionsQuery as n, useGetApplicationAnalyticsDashboardQuery as r } from "../../generated/global-operations.js";
|
|
4
|
+
import { getErrorMessage as i } from "../hooks/useGraphQL.js";
|
|
5
|
+
import { PageLayout as a, PageSection as o } from "../components/PageLayout.js";
|
|
6
|
+
import { StatCard as s, StatCardGrid as ee } from "../components/StatCard.js";
|
|
7
|
+
import { AppListItem as te } from "../components/AppCard.js";
|
|
8
|
+
import { DataTable as ne } from "../components/DataTable.js";
|
|
9
9
|
import "../hooks/index.js";
|
|
10
10
|
import { Tooltip as c } from "../../node_modules/recharts/es6/component/Tooltip.js";
|
|
11
11
|
import { ResponsiveContainer as l } from "../../node_modules/recharts/es6/component/ResponsiveContainer.js";
|
|
@@ -16,49 +16,49 @@ import { XAxis as p } from "../../node_modules/recharts/es6/cartesian/XAxis.js";
|
|
|
16
16
|
import { YAxis as m } from "../../node_modules/recharts/es6/cartesian/YAxis.js";
|
|
17
17
|
import { LineChart as re } from "../../node_modules/recharts/es6/chart/LineChart.js";
|
|
18
18
|
import { BarChart as ie } from "../../node_modules/recharts/es6/chart/BarChart.js";
|
|
19
|
-
import { useTr as
|
|
20
|
-
import { useEffect as
|
|
21
|
-
import { Activity as
|
|
22
|
-
import { useParams as
|
|
23
|
-
import { Fragment as
|
|
19
|
+
import { useTr as ae } from "../utils/i18n.js";
|
|
20
|
+
import { useEffect as h, useMemo as g, useState as _ } from "react";
|
|
21
|
+
import { Activity as v, AlertCircle as y, AlertTriangle as b, BarChart3 as x, Clock as oe, Loader2 as S, Users as C } from "lucide-react";
|
|
22
|
+
import { useParams as w } from "react-router-dom";
|
|
23
|
+
import { Fragment as T, jsx as E, jsxs as D } from "react/jsx-runtime";
|
|
24
24
|
//#region src/devportal/pages/AnalyticsDashboardPage.tsx
|
|
25
|
-
var
|
|
25
|
+
var O = {
|
|
26
26
|
"7d": 7,
|
|
27
27
|
"30d": 30,
|
|
28
28
|
"90d": 90
|
|
29
|
-
},
|
|
29
|
+
}, k = {
|
|
30
30
|
primary: "var(--color-chart-1)",
|
|
31
31
|
secondary: "var(--color-chart-2)",
|
|
32
32
|
tertiary: "var(--color-chart-4)",
|
|
33
33
|
negative: "var(--color-chart-negative)"
|
|
34
|
-
},
|
|
35
|
-
let { appId:
|
|
36
|
-
let e = new Date(
|
|
37
|
-
return e.setDate(e.getDate() -
|
|
38
|
-
}, [
|
|
39
|
-
skip: !!
|
|
34
|
+
}, A = () => {
|
|
35
|
+
let { appId: A } = w(), { navigate: se, basePath: ce, activeOrgId: j } = e(), M = ae(), [N, P] = _("30d"), [F, I] = _(A || ""), L = g(() => /* @__PURE__ */ new Date(), []), R = g(() => {
|
|
36
|
+
let e = new Date(L);
|
|
37
|
+
return e.setDate(e.getDate() - O[N]), e.toISOString();
|
|
38
|
+
}, [L, N]), { data: z, loading: B, error: V } = n({
|
|
39
|
+
skip: !!A,
|
|
40
40
|
fetchPolicy: "cache-and-network"
|
|
41
|
-
}), { data:
|
|
41
|
+
}), { data: H, loading: U, error: W } = r({
|
|
42
42
|
variables: {
|
|
43
|
-
applicationId:
|
|
43
|
+
applicationId: F || A || "",
|
|
44
44
|
period: "daily",
|
|
45
|
-
startDate:
|
|
46
|
-
endDate:
|
|
45
|
+
startDate: R,
|
|
46
|
+
endDate: L.toISOString()
|
|
47
47
|
},
|
|
48
|
-
skip: !(
|
|
48
|
+
skip: !(F || A),
|
|
49
49
|
fetchPolicy: "cache-and-network"
|
|
50
|
-
}),
|
|
51
|
-
|
|
52
|
-
let e = q?.name, t =
|
|
50
|
+
}), G = z?.applications?.edges?.map((e) => e.node) ?? [], K = j ? G.filter((e) => e.developerOrganizationId === j) : G, q = H?.application;
|
|
51
|
+
h(() => {
|
|
52
|
+
let e = q?.name, t = A || F;
|
|
53
53
|
if (!t || !e) return;
|
|
54
54
|
let n = window.__breadcrumbRegistry;
|
|
55
55
|
return n?.register(t, e), () => n?.unregister(t);
|
|
56
56
|
}, [
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
A,
|
|
58
|
+
F,
|
|
59
59
|
q?.name
|
|
60
60
|
]);
|
|
61
|
-
let J = [...
|
|
61
|
+
let J = [...H?.applicationAnalytics ?? []].sort((e, t) => new Date(e.date).getTime() - new Date(t.date).getTime()), Y = J[J.length - 1], X = J[J.length - 2], Z = J.map((e) => ({
|
|
62
62
|
date: new Date(e.date).toLocaleDateString(void 0, {
|
|
63
63
|
month: "short",
|
|
64
64
|
day: "numeric"
|
|
@@ -69,169 +69,169 @@ var ae = {
|
|
|
69
69
|
newUsers: e.newUsers,
|
|
70
70
|
sessions: e.sessions,
|
|
71
71
|
avgResponseTime: e.avgResponseTime ?? 0
|
|
72
|
-
})), Q = Y && Y.apiCalls > 0 ? Y.errors / Y.apiCalls * 100 : 0,
|
|
73
|
-
|
|
72
|
+
})), Q = Y && Y.apiCalls > 0 ? Y.errors / Y.apiCalls * 100 : 0, le = X && X.apiCalls > 0 ? X.errors / X.apiCalls * 100 : 0, $ = Y?.avgResponseTime && X?.avgResponseTime ? X.avgResponseTime - Y.avgResponseTime : void 0, ue = (e) => {
|
|
73
|
+
se?.(`${ce}${e}`);
|
|
74
74
|
};
|
|
75
|
-
return !
|
|
76
|
-
title:
|
|
77
|
-
description:
|
|
78
|
-
children: /* @__PURE__ */
|
|
75
|
+
return !A && B && !z ? /* @__PURE__ */ E(a, {
|
|
76
|
+
title: M("devportal.analytics.title", "Analytics"),
|
|
77
|
+
description: M("devportal.analytics.description", "Explore live application usage and performance metrics"),
|
|
78
|
+
children: /* @__PURE__ */ E("div", {
|
|
79
79
|
className: "flex items-center justify-center py-16 text-muted-foreground",
|
|
80
|
-
children: /* @__PURE__ */
|
|
80
|
+
children: /* @__PURE__ */ E(S, { className: "h-8 w-8 animate-spin" })
|
|
81
81
|
})
|
|
82
|
-
}) : !
|
|
83
|
-
title:
|
|
84
|
-
description:
|
|
85
|
-
children: /* @__PURE__ */
|
|
86
|
-
icon: /* @__PURE__ */
|
|
82
|
+
}) : !A && V ? /* @__PURE__ */ E(a, {
|
|
83
|
+
title: M("devportal.analytics.title", "Analytics"),
|
|
84
|
+
description: M("devportal.analytics.description", "Explore live application usage and performance metrics"),
|
|
85
|
+
children: /* @__PURE__ */ E(t, {
|
|
86
|
+
icon: /* @__PURE__ */ E(y, {
|
|
87
87
|
size: 32,
|
|
88
88
|
className: "text-status-error-text"
|
|
89
89
|
}),
|
|
90
|
-
title:
|
|
91
|
-
description:
|
|
90
|
+
title: M("devportal.analytics.errorLoadApps", "Unable to load applications"),
|
|
91
|
+
description: i(V)
|
|
92
92
|
})
|
|
93
|
-
}) : !
|
|
94
|
-
title:
|
|
95
|
-
description:
|
|
96
|
-
children: K.length > 0 ? /* @__PURE__ */
|
|
93
|
+
}) : !A && !F ? /* @__PURE__ */ E(a, {
|
|
94
|
+
title: M("devportal.analytics.title", "Analytics"),
|
|
95
|
+
description: M("devportal.analytics.selectAppDescription", "Select an application to review live usage metrics from the public gateway"),
|
|
96
|
+
children: K.length > 0 ? /* @__PURE__ */ E("div", {
|
|
97
97
|
className: "space-y-2",
|
|
98
|
-
children: K.map((e) => /* @__PURE__ */
|
|
98
|
+
children: K.map((e) => /* @__PURE__ */ E(te, {
|
|
99
99
|
app: e,
|
|
100
|
-
onClick: () =>
|
|
100
|
+
onClick: () => I(e.id)
|
|
101
101
|
}, e.id))
|
|
102
|
-
}) : /* @__PURE__ */
|
|
103
|
-
icon: /* @__PURE__ */
|
|
104
|
-
title:
|
|
105
|
-
description:
|
|
102
|
+
}) : /* @__PURE__ */ E(t, {
|
|
103
|
+
icon: /* @__PURE__ */ E(x, { size: 32 }),
|
|
104
|
+
title: M("devportal.analytics.noAppsTitle", "No applications available"),
|
|
105
|
+
description: M("devportal.analytics.noAppsDescription", "Create an application before viewing analytics.")
|
|
106
106
|
})
|
|
107
|
-
}) :
|
|
108
|
-
title:
|
|
109
|
-
description:
|
|
110
|
-
backLink:
|
|
111
|
-
backLabel:
|
|
112
|
-
children: /* @__PURE__ */
|
|
113
|
-
icon: /* @__PURE__ */
|
|
107
|
+
}) : W ? /* @__PURE__ */ E(a, {
|
|
108
|
+
title: M("devportal.analytics.title", "Analytics"),
|
|
109
|
+
description: M("devportal.analytics.description", "Explore live application usage and performance metrics"),
|
|
110
|
+
backLink: F ? `/apps/${F}` : void 0,
|
|
111
|
+
backLabel: M("devportal.analytics.backToApplication", "Back to Application"),
|
|
112
|
+
children: /* @__PURE__ */ E(t, {
|
|
113
|
+
icon: /* @__PURE__ */ E(y, {
|
|
114
114
|
size: 32,
|
|
115
115
|
className: "text-status-error-text"
|
|
116
116
|
}),
|
|
117
|
-
title:
|
|
118
|
-
description:
|
|
117
|
+
title: M("devportal.analytics.errorLoadAnalytics", "Unable to load analytics"),
|
|
118
|
+
description: i(W)
|
|
119
119
|
})
|
|
120
|
-
}) : /* @__PURE__ */
|
|
121
|
-
title:
|
|
122
|
-
description: q ? `${
|
|
123
|
-
backLink:
|
|
124
|
-
backLabel:
|
|
125
|
-
actions: /* @__PURE__ */
|
|
120
|
+
}) : /* @__PURE__ */ E(a, {
|
|
121
|
+
title: A ? M("devportal.analytics.appTitle", "Application Analytics") : M("devportal.analytics.title", "Analytics"),
|
|
122
|
+
description: q ? `${M("devportal.analytics.liveUsageFor", "Live usage and performance for")} ${q.name}` : M("devportal.analytics.description", "Explore live application usage and performance metrics"),
|
|
123
|
+
backLink: A && q ? `/apps/${q.id}` : void 0,
|
|
124
|
+
backLabel: M("devportal.analytics.backToApplication", "Back to Application"),
|
|
125
|
+
actions: /* @__PURE__ */ D("div", {
|
|
126
126
|
className: "flex flex-wrap gap-2",
|
|
127
|
-
children: [!
|
|
128
|
-
value:
|
|
129
|
-
onChange: (e) =>
|
|
130
|
-
"aria-label":
|
|
127
|
+
children: [!A && K.length > 0 && /* @__PURE__ */ E("select", {
|
|
128
|
+
value: F,
|
|
129
|
+
onChange: (e) => I(e.target.value),
|
|
130
|
+
"aria-label": M("devportal.analytics.selectAppAria", "Select application"),
|
|
131
131
|
className: "rounded-md border bg-background px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary",
|
|
132
|
-
children: K.map((e) => /* @__PURE__ */
|
|
132
|
+
children: K.map((e) => /* @__PURE__ */ E("option", {
|
|
133
133
|
value: e.id,
|
|
134
134
|
children: e.name
|
|
135
135
|
}, e.id))
|
|
136
|
-
}), /* @__PURE__ */
|
|
137
|
-
value:
|
|
138
|
-
onChange: (e) =>
|
|
139
|
-
"aria-label":
|
|
136
|
+
}), /* @__PURE__ */ D("select", {
|
|
137
|
+
value: N,
|
|
138
|
+
onChange: (e) => P(e.target.value),
|
|
139
|
+
"aria-label": M("devportal.analytics.selectRangeAria", "Select time range"),
|
|
140
140
|
className: "rounded-md border bg-background px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary",
|
|
141
141
|
children: [
|
|
142
|
-
/* @__PURE__ */
|
|
142
|
+
/* @__PURE__ */ E("option", {
|
|
143
143
|
value: "7d",
|
|
144
|
-
children:
|
|
144
|
+
children: M("devportal.analytics.range.7d", "Last 7 days")
|
|
145
145
|
}),
|
|
146
|
-
/* @__PURE__ */
|
|
146
|
+
/* @__PURE__ */ E("option", {
|
|
147
147
|
value: "30d",
|
|
148
|
-
children:
|
|
148
|
+
children: M("devportal.analytics.range.30d", "Last 30 days")
|
|
149
149
|
}),
|
|
150
|
-
/* @__PURE__ */
|
|
150
|
+
/* @__PURE__ */ E("option", {
|
|
151
151
|
value: "90d",
|
|
152
|
-
children:
|
|
152
|
+
children: M("devportal.analytics.range.90d", "Last 90 days")
|
|
153
153
|
})
|
|
154
154
|
]
|
|
155
155
|
})]
|
|
156
156
|
}),
|
|
157
|
-
children:
|
|
157
|
+
children: U && !J.length ? /* @__PURE__ */ E("div", {
|
|
158
158
|
className: "flex items-center justify-center py-16 text-muted-foreground",
|
|
159
|
-
children: /* @__PURE__ */
|
|
160
|
-
}) : J.length > 0 ? /* @__PURE__ */
|
|
161
|
-
/* @__PURE__ */
|
|
159
|
+
children: /* @__PURE__ */ E(S, { className: "h-8 w-8 animate-spin" })
|
|
160
|
+
}) : J.length > 0 ? /* @__PURE__ */ D(T, { children: [
|
|
161
|
+
/* @__PURE__ */ D(ee, {
|
|
162
162
|
columns: 4,
|
|
163
163
|
children: [
|
|
164
|
-
/* @__PURE__ */
|
|
165
|
-
title:
|
|
164
|
+
/* @__PURE__ */ E(s, {
|
|
165
|
+
title: M("devportal.analytics.apiCalls", "API Calls"),
|
|
166
166
|
value: (Y?.apiCalls ?? 0).toLocaleString(),
|
|
167
|
-
icon: /* @__PURE__ */
|
|
167
|
+
icon: /* @__PURE__ */ E(v, { size: 20 })
|
|
168
168
|
}),
|
|
169
|
-
/* @__PURE__ */
|
|
170
|
-
title:
|
|
169
|
+
/* @__PURE__ */ E(s, {
|
|
170
|
+
title: M("devportal.analytics.activeUsers", "Active Users"),
|
|
171
171
|
value: (Y?.activeUsers ?? 0).toLocaleString(),
|
|
172
|
-
icon: /* @__PURE__ */
|
|
172
|
+
icon: /* @__PURE__ */ E(C, { size: 20 })
|
|
173
173
|
}),
|
|
174
|
-
/* @__PURE__ */
|
|
175
|
-
title:
|
|
174
|
+
/* @__PURE__ */ E(s, {
|
|
175
|
+
title: M("devportal.analytics.errorRate", "Error Rate"),
|
|
176
176
|
value: `${Q.toFixed(2)}%`,
|
|
177
|
-
icon: /* @__PURE__ */
|
|
177
|
+
icon: /* @__PURE__ */ E(b, { size: 20 }),
|
|
178
178
|
trend: X ? {
|
|
179
|
-
value:
|
|
180
|
-
label:
|
|
179
|
+
value: le - Q,
|
|
180
|
+
label: M("devportal.analytics.vsPrevious", "vs previous period")
|
|
181
181
|
} : void 0
|
|
182
182
|
}),
|
|
183
|
-
/* @__PURE__ */
|
|
184
|
-
title:
|
|
185
|
-
value: Y?.avgResponseTime ? `${Y.avgResponseTime}ms` :
|
|
186
|
-
icon: /* @__PURE__ */
|
|
183
|
+
/* @__PURE__ */ E(s, {
|
|
184
|
+
title: M("devportal.analytics.avgResponseTime", "Avg Response Time"),
|
|
185
|
+
value: Y?.avgResponseTime ? `${Y.avgResponseTime}ms` : M("devportal.common.na", "N/A"),
|
|
186
|
+
icon: /* @__PURE__ */ E(oe, { size: 20 }),
|
|
187
187
|
trend: typeof $ == "number" ? {
|
|
188
188
|
value: $,
|
|
189
|
-
label:
|
|
189
|
+
label: M("devportal.analytics.fasterThanPrevious", "faster than previous")
|
|
190
190
|
} : void 0
|
|
191
191
|
})
|
|
192
192
|
]
|
|
193
193
|
}),
|
|
194
|
-
/* @__PURE__ */
|
|
194
|
+
/* @__PURE__ */ D("div", {
|
|
195
195
|
className: "grid gap-6 xl:grid-cols-2",
|
|
196
|
-
children: [/* @__PURE__ */
|
|
197
|
-
title:
|
|
198
|
-
children: /* @__PURE__ */
|
|
196
|
+
children: [/* @__PURE__ */ E(o, {
|
|
197
|
+
title: M("devportal.analytics.trafficTrend", "Traffic trend"),
|
|
198
|
+
children: /* @__PURE__ */ E("div", {
|
|
199
199
|
className: "rounded-lg border bg-card p-4",
|
|
200
|
-
children: /* @__PURE__ */
|
|
200
|
+
children: /* @__PURE__ */ E(l, {
|
|
201
201
|
width: "100%",
|
|
202
202
|
height: 300,
|
|
203
|
-
children: /* @__PURE__ */
|
|
203
|
+
children: /* @__PURE__ */ D(re, {
|
|
204
204
|
data: Z,
|
|
205
205
|
children: [
|
|
206
|
-
/* @__PURE__ */
|
|
206
|
+
/* @__PURE__ */ E(d, {
|
|
207
207
|
strokeDasharray: "3 3",
|
|
208
208
|
stroke: "var(--color-chart-grid)"
|
|
209
209
|
}),
|
|
210
|
-
/* @__PURE__ */
|
|
210
|
+
/* @__PURE__ */ E(p, {
|
|
211
211
|
dataKey: "date",
|
|
212
212
|
stroke: "var(--color-chart-axis)",
|
|
213
213
|
fontSize: 12
|
|
214
214
|
}),
|
|
215
|
-
/* @__PURE__ */
|
|
215
|
+
/* @__PURE__ */ E(m, {
|
|
216
216
|
stroke: "var(--color-chart-axis)",
|
|
217
217
|
fontSize: 12
|
|
218
218
|
}),
|
|
219
|
-
/* @__PURE__ */
|
|
219
|
+
/* @__PURE__ */ E(c, { contentStyle: {
|
|
220
220
|
backgroundColor: "var(--color-card)",
|
|
221
221
|
border: "1px solid var(--color-border-default)",
|
|
222
222
|
borderRadius: 12
|
|
223
223
|
} }),
|
|
224
|
-
/* @__PURE__ */
|
|
224
|
+
/* @__PURE__ */ E(f, {
|
|
225
225
|
type: "monotone",
|
|
226
226
|
dataKey: "apiCalls",
|
|
227
|
-
stroke:
|
|
227
|
+
stroke: k.primary,
|
|
228
228
|
strokeWidth: 2,
|
|
229
229
|
dot: !1
|
|
230
230
|
}),
|
|
231
|
-
/* @__PURE__ */
|
|
231
|
+
/* @__PURE__ */ E(f, {
|
|
232
232
|
type: "monotone",
|
|
233
233
|
dataKey: "errors",
|
|
234
|
-
stroke:
|
|
234
|
+
stroke: k.negative,
|
|
235
235
|
strokeWidth: 2,
|
|
236
236
|
dot: !1
|
|
237
237
|
})
|
|
@@ -239,37 +239,37 @@ var ae = {
|
|
|
239
239
|
})
|
|
240
240
|
})
|
|
241
241
|
})
|
|
242
|
-
}), /* @__PURE__ */
|
|
243
|
-
title:
|
|
244
|
-
children: /* @__PURE__ */
|
|
242
|
+
}), /* @__PURE__ */ E(o, {
|
|
243
|
+
title: M("devportal.analytics.userActivity", "User activity"),
|
|
244
|
+
children: /* @__PURE__ */ E("div", {
|
|
245
245
|
className: "rounded-lg border bg-card p-4",
|
|
246
|
-
children: /* @__PURE__ */
|
|
246
|
+
children: /* @__PURE__ */ E(l, {
|
|
247
247
|
width: "100%",
|
|
248
248
|
height: 300,
|
|
249
|
-
children: /* @__PURE__ */
|
|
249
|
+
children: /* @__PURE__ */ D(ie, {
|
|
250
250
|
data: Z,
|
|
251
251
|
children: [
|
|
252
|
-
/* @__PURE__ */
|
|
252
|
+
/* @__PURE__ */ E(d, {
|
|
253
253
|
strokeDasharray: "3 3",
|
|
254
254
|
stroke: "var(--color-chart-grid)"
|
|
255
255
|
}),
|
|
256
|
-
/* @__PURE__ */
|
|
256
|
+
/* @__PURE__ */ E(p, {
|
|
257
257
|
dataKey: "date",
|
|
258
258
|
stroke: "var(--color-chart-axis)",
|
|
259
259
|
fontSize: 12
|
|
260
260
|
}),
|
|
261
|
-
/* @__PURE__ */
|
|
261
|
+
/* @__PURE__ */ E(m, {
|
|
262
262
|
stroke: "var(--color-chart-axis)",
|
|
263
263
|
fontSize: 12
|
|
264
264
|
}),
|
|
265
|
-
/* @__PURE__ */
|
|
265
|
+
/* @__PURE__ */ E(c, { contentStyle: {
|
|
266
266
|
backgroundColor: "var(--color-card)",
|
|
267
267
|
border: "1px solid var(--color-border-default)",
|
|
268
268
|
borderRadius: 12
|
|
269
269
|
} }),
|
|
270
|
-
/* @__PURE__ */
|
|
270
|
+
/* @__PURE__ */ E(u, {
|
|
271
271
|
dataKey: "activeUsers",
|
|
272
|
-
fill:
|
|
272
|
+
fill: k.primary,
|
|
273
273
|
radius: [
|
|
274
274
|
6,
|
|
275
275
|
6,
|
|
@@ -277,9 +277,9 @@ var ae = {
|
|
|
277
277
|
0
|
|
278
278
|
]
|
|
279
279
|
}),
|
|
280
|
-
/* @__PURE__ */
|
|
280
|
+
/* @__PURE__ */ E(u, {
|
|
281
281
|
dataKey: "newUsers",
|
|
282
|
-
fill:
|
|
282
|
+
fill: k.secondary,
|
|
283
283
|
radius: [
|
|
284
284
|
6,
|
|
285
285
|
6,
|
|
@@ -293,15 +293,15 @@ var ae = {
|
|
|
293
293
|
})
|
|
294
294
|
})]
|
|
295
295
|
}),
|
|
296
|
-
/* @__PURE__ */
|
|
297
|
-
title:
|
|
298
|
-
children: /* @__PURE__ */
|
|
296
|
+
/* @__PURE__ */ E(o, {
|
|
297
|
+
title: M("devportal.analytics.dailyBreakdown", "Daily breakdown"),
|
|
298
|
+
children: /* @__PURE__ */ E(ne, {
|
|
299
299
|
data: J,
|
|
300
300
|
keyField: "id",
|
|
301
301
|
columns: [
|
|
302
302
|
{
|
|
303
303
|
key: "date",
|
|
304
|
-
header:
|
|
304
|
+
header: M("devportal.analytics.date", "Date"),
|
|
305
305
|
render: (e) => new Date(e.date).toLocaleDateString(void 0, {
|
|
306
306
|
month: "short",
|
|
307
307
|
day: "numeric",
|
|
@@ -310,51 +310,51 @@ var ae = {
|
|
|
310
310
|
},
|
|
311
311
|
{
|
|
312
312
|
key: "apiCalls",
|
|
313
|
-
header:
|
|
313
|
+
header: M("devportal.analytics.apiCalls", "API Calls"),
|
|
314
314
|
render: (e) => e.apiCalls.toLocaleString()
|
|
315
315
|
},
|
|
316
316
|
{
|
|
317
317
|
key: "errors",
|
|
318
|
-
header:
|
|
318
|
+
header: M("devportal.analytics.errors", "Errors"),
|
|
319
319
|
render: (e) => e.errors.toLocaleString()
|
|
320
320
|
},
|
|
321
321
|
{
|
|
322
322
|
key: "activeUsers",
|
|
323
|
-
header:
|
|
323
|
+
header: M("devportal.analytics.activeUsers", "Active Users"),
|
|
324
324
|
render: (e) => e.activeUsers.toLocaleString()
|
|
325
325
|
},
|
|
326
326
|
{
|
|
327
327
|
key: "newUsers",
|
|
328
|
-
header:
|
|
328
|
+
header: M("devportal.analytics.newUsers", "New Users"),
|
|
329
329
|
render: (e) => e.newUsers.toLocaleString()
|
|
330
330
|
},
|
|
331
331
|
{
|
|
332
332
|
key: "avgResponseTime",
|
|
333
|
-
header:
|
|
334
|
-
render: (e) => e.avgResponseTime ? `${e.avgResponseTime}ms` :
|
|
333
|
+
header: M("devportal.analytics.avgResponse", "Avg Response"),
|
|
334
|
+
render: (e) => e.avgResponseTime ? `${e.avgResponseTime}ms` : M("devportal.common.na", "N/A")
|
|
335
335
|
},
|
|
336
336
|
{
|
|
337
337
|
key: "sessions",
|
|
338
|
-
header:
|
|
338
|
+
header: M("devportal.analytics.sessions", "Sessions"),
|
|
339
339
|
render: (e) => e.sessions.toLocaleString()
|
|
340
340
|
}
|
|
341
341
|
]
|
|
342
342
|
})
|
|
343
343
|
})
|
|
344
|
-
] }) : /* @__PURE__ */
|
|
345
|
-
icon: /* @__PURE__ */
|
|
346
|
-
title:
|
|
347
|
-
description:
|
|
348
|
-
action:
|
|
344
|
+
] }) : /* @__PURE__ */ E(t, {
|
|
345
|
+
icon: /* @__PURE__ */ E(x, { size: 32 }),
|
|
346
|
+
title: M("devportal.analytics.noAnalyticsTitle", "No analytics available yet"),
|
|
347
|
+
description: M("devportal.analytics.noAnalyticsDescription", "Analytics will appear after this application starts receiving traffic through the public gateway."),
|
|
348
|
+
action: A ? void 0 : /* @__PURE__ */ E("button", {
|
|
349
349
|
type: "button",
|
|
350
|
-
onClick: () =>
|
|
350
|
+
onClick: () => ue("/apps"),
|
|
351
351
|
className: "inline-flex items-center gap-2 rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary",
|
|
352
|
-
children:
|
|
352
|
+
children: M("devportal.analytics.viewApplications", "View applications")
|
|
353
353
|
})
|
|
354
354
|
})
|
|
355
355
|
});
|
|
356
356
|
};
|
|
357
357
|
//#endregion
|
|
358
|
-
export {
|
|
358
|
+
export { A as AnalyticsDashboardPage };
|
|
359
359
|
|
|
360
360
|
//# sourceMappingURL=AnalyticsDashboardPage.js.map
|