@burdenoff/microfe-devportal 2026.914.2 → 2026.914.3
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.d.ts.map +1 -1
- package/dist/devportal/DevportalRoutes.js +130 -110
- package/dist/devportal/DevportalRoutes.js.map +1 -1
- package/dist/devportal/components/SectionNav.d.ts +10 -1
- package/dist/devportal/components/SectionNav.d.ts.map +1 -1
- package/dist/devportal/components/SectionNav.js +60 -42
- package/dist/devportal/components/SectionNav.js.map +1 -1
- package/dist/devportal/hooks/useIsSellerSection.d.ts +13 -0
- package/dist/devportal/hooks/useIsSellerSection.d.ts.map +1 -0
- package/dist/devportal/hooks/useIsSellerSection.js +15 -0
- package/dist/devportal/hooks/useIsSellerSection.js.map +1 -0
- package/dist/devportal/pages/CreateOrganizationPage.d.ts.map +1 -1
- package/dist/devportal/pages/CreateOrganizationPage.js +107 -106
- package/dist/devportal/pages/CreateOrganizationPage.js.map +1 -1
- package/dist/devportal/pages/OrganizationDetailPage.d.ts.map +1 -1
- package/dist/devportal/pages/OrganizationDetailPage.js +349 -336
- package/dist/devportal/pages/OrganizationDetailPage.js.map +1 -1
- package/dist/devportal/pages/OrganizationMembersPage.d.ts.map +1 -1
- package/dist/devportal/pages/OrganizationMembersPage.js +291 -290
- package/dist/devportal/pages/OrganizationMembersPage.js.map +1 -1
- package/dist/devportal/pages/OrganizationsPage.d.ts.map +1 -1
- package/dist/devportal/pages/OrganizationsPage.js +102 -101
- package/dist/devportal/pages/OrganizationsPage.js.map +1 -1
- package/dist/devportal/pages/RevenueDashboardPage.d.ts.map +1 -1
- package/dist/devportal/pages/RevenueDashboardPage.js +210 -209
- package/dist/devportal/pages/RevenueDashboardPage.js.map +1 -1
- package/dist/devportal/pages/SellerDashboardPage.d.ts.map +1 -1
- package/dist/devportal/pages/SellerDashboardPage.js.map +1 -1
- package/dist/generated/global-operations.d.ts +102 -12
- package/dist/generated/global-operations.d.ts.map +1 -1
- package/dist/generated/global-operations.js +107 -92
- package/dist/generated/global-operations.js.map +1 -1
- package/dist/generated/global-types.d.ts +2963 -242
- package/dist/generated/global-types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -2,48 +2,49 @@ import { useDevportal as e } from "../providers/DevportalProvider.js";
|
|
|
2
2
|
import { useTr as t } from "../utils/i18n.js";
|
|
3
3
|
import { cn as n } from "../utils/cn.js";
|
|
4
4
|
import { EmptyState as r } from "../components/EmptyState.js";
|
|
5
|
-
import {
|
|
5
|
+
import { useIsSellerSection as ee } from "../hooks/useIsSellerSection.js";
|
|
6
|
+
import { useGetBillingAccountsByOrgQuery as te, useGetMyOrganizationsQuery as ne, useGetRevenueDashboardDataQuery as re, useLinkDevOrgBillingAccountMutation as ie } from "../../generated/global-operations.js";
|
|
6
7
|
import { getErrorMessage as i } from "../hooks/useGraphQL.js";
|
|
7
8
|
import { PageLayout as a, PageSection as o } from "../components/PageLayout.js";
|
|
8
9
|
import { StatusBadge as s } from "../components/StatusBadge.js";
|
|
9
|
-
import { StatCard as c, StatCardGrid as
|
|
10
|
+
import { StatCard as c, StatCardGrid as ae } from "../components/StatCard.js";
|
|
10
11
|
import { DataTable as l } from "../components/DataTable.js";
|
|
11
12
|
import "../hooks/index.js";
|
|
12
13
|
import { Tooltip as u } from "../../node_modules/recharts/es6/component/Tooltip.js";
|
|
13
14
|
import { ResponsiveContainer as d } from "../../node_modules/recharts/es6/component/ResponsiveContainer.js";
|
|
14
|
-
import { Bar as
|
|
15
|
+
import { Bar as oe } from "../../node_modules/recharts/es6/cartesian/Bar.js";
|
|
15
16
|
import { CartesianGrid as f } from "../../node_modules/recharts/es6/cartesian/CartesianGrid.js";
|
|
16
17
|
import { Line as p } from "../../node_modules/recharts/es6/cartesian/Line.js";
|
|
17
18
|
import { XAxis as m } from "../../node_modules/recharts/es6/cartesian/XAxis.js";
|
|
18
19
|
import { YAxis as h } from "../../node_modules/recharts/es6/cartesian/YAxis.js";
|
|
19
|
-
import { LineChart as
|
|
20
|
-
import { BarChart as
|
|
20
|
+
import { LineChart as se } from "../../node_modules/recharts/es6/chart/LineChart.js";
|
|
21
|
+
import { BarChart as ce } from "../../node_modules/recharts/es6/chart/BarChart.js";
|
|
21
22
|
import { useMemo as g, useState as _ } from "react";
|
|
22
|
-
import { AlertCircle as v, ArrowDownToLine as
|
|
23
|
-
import { useSearchParams as
|
|
24
|
-
import { Fragment as
|
|
25
|
-
import { EmphasisPanel as
|
|
23
|
+
import { AlertCircle as v, ArrowDownToLine as le, Building2 as y, Check as b, CreditCard as x, DollarSign as S, Link2 as C, Loader2 as w, Wallet as ue } from "lucide-react";
|
|
24
|
+
import { useSearchParams as de } from "react-router";
|
|
25
|
+
import { Fragment as fe, jsx as T, jsxs as E } from "react/jsx-runtime";
|
|
26
|
+
import { EmphasisPanel as pe, GlassCard as D } from "@burdenoff/fe-libs/ui";
|
|
26
27
|
//#region src/devportal/pages/RevenueDashboardPage.tsx
|
|
27
|
-
var
|
|
28
|
+
var O = {
|
|
28
29
|
primary: "var(--color-chart-1)",
|
|
29
30
|
secondary: "var(--color-chart-2)",
|
|
30
31
|
tertiary: "var(--color-chart-4)"
|
|
31
|
-
},
|
|
32
|
+
}, me = {
|
|
32
33
|
"30d": 30,
|
|
33
34
|
"90d": 90,
|
|
34
35
|
"12m": 365
|
|
35
|
-
},
|
|
36
|
-
let
|
|
36
|
+
}, k = () => {
|
|
37
|
+
let k = t(), { activeOrgId: he, activePhysicalOrgId: ge, tenantId: A } = e(), j = ee() ? ge : he, [M, _e] = _("90d"), [N, P] = _(!1), [F, I] = _(null), [ve] = ie(), [L, R] = _(!1), [z, B] = _(null), [ye] = de(), V = g(() => /* @__PURE__ */ new Date(), []), { data: be, loading: H } = te({
|
|
37
38
|
fetchPolicy: "cache-and-network",
|
|
38
|
-
context: { headers: { "x-org-id":
|
|
39
|
-
}),
|
|
39
|
+
context: { headers: { "x-org-id": A ?? "" } }
|
|
40
|
+
}), xe = g(() => {
|
|
40
41
|
let e = new Date(V);
|
|
41
|
-
return e.setDate(e.getDate() -
|
|
42
|
-
}, [V, M]), { data: U, loading:
|
|
42
|
+
return e.setDate(e.getDate() - me[M]), e.toISOString();
|
|
43
|
+
}, [V, M]), { data: U, loading: Se, error: W } = ne({ fetchPolicy: "cache-and-network" }), { data: G, loading: Ce, error: K } = re({
|
|
43
44
|
variables: {
|
|
44
45
|
organizationId: j ?? "",
|
|
45
46
|
period: "monthly",
|
|
46
|
-
startDate:
|
|
47
|
+
startDate: xe,
|
|
47
48
|
endDate: V.toISOString(),
|
|
48
49
|
salesLimit: 10,
|
|
49
50
|
salesOffset: 0,
|
|
@@ -52,13 +53,13 @@ var k = {
|
|
|
52
53
|
},
|
|
53
54
|
skip: !j,
|
|
54
55
|
fetchPolicy: "cache-and-network"
|
|
55
|
-
}), q = g(() => U?.myDeveloperOrganizations?.map((e) => e) ?? [], [U?.myDeveloperOrganizations]).find((e) => e.id === j), J =
|
|
56
|
+
}), q = g(() => U?.myDeveloperOrganizations?.map((e) => e) ?? [], [U?.myDeveloperOrganizations]).find((e) => e.id === j), J = be?.getBillingAccountsByOrg ?? [], Y = J.find((e) => e.id === q?.billingAccountId) ?? null, X = () => {
|
|
56
57
|
B(q?.billingAccountId ?? J.find((e) => e.isDefault)?.id ?? J[0]?.id ?? null), R(!0);
|
|
57
58
|
}, Z = async () => {
|
|
58
59
|
if (!(!j || !z)) {
|
|
59
60
|
P(!0), I(null);
|
|
60
61
|
try {
|
|
61
|
-
await
|
|
62
|
+
await ve({
|
|
62
63
|
variables: {
|
|
63
64
|
organizationId: j,
|
|
64
65
|
billingAccountId: z
|
|
@@ -71,7 +72,7 @@ var k = {
|
|
|
71
72
|
P(!1);
|
|
72
73
|
}
|
|
73
74
|
}
|
|
74
|
-
}, Q = G?.developerOrgRevenueSummary,
|
|
75
|
+
}, Q = G?.developerOrgRevenueSummary, we = [...G?.developerOrgRevenueAnalytics ?? []].sort((e, t) => new Date(e.date).getTime() - new Date(t.date).getTime()), Te = G?.developerOrgSales?.edges?.map((e) => e.node) ?? [], Ee = G?.developerOrgPayouts?.edges?.map((e) => e.node) ?? [], $ = we.map((e) => ({
|
|
75
76
|
date: new Date(e.date).toLocaleDateString(void 0, {
|
|
76
77
|
month: "short",
|
|
77
78
|
day: "numeric"
|
|
@@ -82,360 +83,360 @@ var k = {
|
|
|
82
83
|
refunds: e.refunds,
|
|
83
84
|
salesCount: e.salesCount
|
|
84
85
|
}));
|
|
85
|
-
return
|
|
86
|
-
title:
|
|
87
|
-
description:
|
|
88
|
-
children: /* @__PURE__ */
|
|
86
|
+
return Se && !U ? /* @__PURE__ */ T(a, {
|
|
87
|
+
title: k("devportal.revenue.title", "Revenue"),
|
|
88
|
+
description: k("devportal.revenue.description", "Track real revenue, sales, and payout activity for your developer organizations"),
|
|
89
|
+
children: /* @__PURE__ */ T("div", {
|
|
89
90
|
className: "flex items-center justify-center py-16 text-text-secondary",
|
|
90
|
-
children: /* @__PURE__ */
|
|
91
|
+
children: /* @__PURE__ */ T(w, { className: "h-8 w-8 animate-spin" })
|
|
91
92
|
})
|
|
92
|
-
}) : W ? /* @__PURE__ */
|
|
93
|
-
title:
|
|
94
|
-
description:
|
|
95
|
-
children: /* @__PURE__ */
|
|
96
|
-
icon: /* @__PURE__ */
|
|
93
|
+
}) : W ? /* @__PURE__ */ T(a, {
|
|
94
|
+
title: k("devportal.revenue.title", "Revenue"),
|
|
95
|
+
description: k("devportal.revenue.description", "Track real revenue, sales, and payout activity for your developer organizations"),
|
|
96
|
+
children: /* @__PURE__ */ T(r, {
|
|
97
|
+
icon: /* @__PURE__ */ T(v, {
|
|
97
98
|
size: 32,
|
|
98
99
|
className: "text-status-error-text"
|
|
99
100
|
}),
|
|
100
|
-
title:
|
|
101
|
+
title: k("devportal.revenue.errorLoadOrgs", "Unable to load organizations"),
|
|
101
102
|
description: i(W)
|
|
102
103
|
})
|
|
103
|
-
}) : j ? K ? /* @__PURE__ */
|
|
104
|
-
title:
|
|
105
|
-
description:
|
|
106
|
-
children: /* @__PURE__ */
|
|
107
|
-
icon: /* @__PURE__ */
|
|
104
|
+
}) : j ? K ? /* @__PURE__ */ T(a, {
|
|
105
|
+
title: k("devportal.revenue.title", "Revenue"),
|
|
106
|
+
description: k("devportal.revenue.description", "Track real revenue, sales, and payout activity for your developer organizations"),
|
|
107
|
+
children: /* @__PURE__ */ T(r, {
|
|
108
|
+
icon: /* @__PURE__ */ T(v, {
|
|
108
109
|
size: 32,
|
|
109
110
|
className: "text-status-error-text"
|
|
110
111
|
}),
|
|
111
|
-
title:
|
|
112
|
+
title: k("devportal.revenue.errorLoadData", "Unable to load revenue data"),
|
|
112
113
|
description: i(K)
|
|
113
114
|
})
|
|
114
|
-
}) : /* @__PURE__ */
|
|
115
|
-
title:
|
|
116
|
-
description: q ? `${
|
|
117
|
-
purpose:
|
|
118
|
-
actions: /* @__PURE__ */
|
|
115
|
+
}) : /* @__PURE__ */ E(a, {
|
|
116
|
+
title: k("devportal.revenue.title", "Revenue"),
|
|
117
|
+
description: q ? `${k("devportal.revenue.financialPerformanceFor", "Financial performance for")} ${q.name}` : k("devportal.revenue.shortDescription", "Track revenue, sales, and payouts"),
|
|
118
|
+
purpose: k("devportal.revenue.purpose", "Revenue tracks the money your paid apps earn — gross sales, platform fees, and what gets paid out to your organization. Link a billing account, then use this to reconcile payouts and watch growth across time ranges."),
|
|
119
|
+
actions: /* @__PURE__ */ T("div", {
|
|
119
120
|
className: "flex flex-wrap gap-2",
|
|
120
|
-
children: /* @__PURE__ */
|
|
121
|
+
children: /* @__PURE__ */ E("select", {
|
|
121
122
|
value: M,
|
|
122
|
-
onChange: (e) =>
|
|
123
|
-
"aria-label":
|
|
123
|
+
onChange: (e) => _e(e.target.value),
|
|
124
|
+
"aria-label": k("devportal.revenue.selectRangeAria", "Select time range"),
|
|
124
125
|
className: "rounded-md border bg-bg-surface px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary",
|
|
125
126
|
children: [
|
|
126
|
-
/* @__PURE__ */
|
|
127
|
+
/* @__PURE__ */ T("option", {
|
|
127
128
|
value: "30d",
|
|
128
|
-
children:
|
|
129
|
+
children: k("devportal.revenue.range.30d", "Last 30 days")
|
|
129
130
|
}),
|
|
130
|
-
/* @__PURE__ */
|
|
131
|
+
/* @__PURE__ */ T("option", {
|
|
131
132
|
value: "90d",
|
|
132
|
-
children:
|
|
133
|
+
children: k("devportal.revenue.range.90d", "Last 90 days")
|
|
133
134
|
}),
|
|
134
|
-
/* @__PURE__ */
|
|
135
|
+
/* @__PURE__ */ T("option", {
|
|
135
136
|
value: "12m",
|
|
136
|
-
children:
|
|
137
|
+
children: k("devportal.revenue.range.12m", "Last 12 months")
|
|
137
138
|
})
|
|
138
139
|
]
|
|
139
140
|
})
|
|
140
141
|
}),
|
|
141
142
|
children: [
|
|
142
|
-
q && !q.billingAccountId && /* @__PURE__ */
|
|
143
|
+
q && !q.billingAccountId && /* @__PURE__ */ E("div", {
|
|
143
144
|
className: "mb-6 rounded-card border border-border-seam bg-status-info-bg-subtle p-4 flex flex-col gap-3",
|
|
144
145
|
children: [
|
|
145
|
-
/* @__PURE__ */
|
|
146
|
+
/* @__PURE__ */ E("div", {
|
|
146
147
|
className: "flex items-start gap-3",
|
|
147
148
|
children: [
|
|
148
|
-
/* @__PURE__ */
|
|
149
|
+
/* @__PURE__ */ T(C, {
|
|
149
150
|
size: 20,
|
|
150
151
|
className: "text-accent-blue flex-shrink-0 mt-0.5"
|
|
151
152
|
}),
|
|
152
|
-
/* @__PURE__ */
|
|
153
|
+
/* @__PURE__ */ E("div", {
|
|
153
154
|
className: "flex-1 min-w-0",
|
|
154
155
|
children: [
|
|
155
|
-
/* @__PURE__ */
|
|
156
|
+
/* @__PURE__ */ T("p", {
|
|
156
157
|
className: "text-sm font-medium text-status-info-text",
|
|
157
|
-
children:
|
|
158
|
+
children: k("devportal.revenue.billingNotLinkedTitle", "Link a billing account to receive store revenue")
|
|
158
159
|
}),
|
|
159
|
-
/* @__PURE__ */
|
|
160
|
+
/* @__PURE__ */ T("p", {
|
|
160
161
|
className: "mt-1 text-sm text-status-info-text",
|
|
161
|
-
children:
|
|
162
|
+
children: k("devportal.revenue.billingNotLinkedDesc", "Once linked, net earnings from app sales will appear in your billing credits — you can spend them on platform services or withdraw to your bank.")
|
|
162
163
|
}),
|
|
163
|
-
F && /* @__PURE__ */
|
|
164
|
+
F && /* @__PURE__ */ T("p", {
|
|
164
165
|
className: "mt-2 text-sm text-status-error-text",
|
|
165
166
|
children: F
|
|
166
167
|
})
|
|
167
168
|
]
|
|
168
169
|
}),
|
|
169
|
-
/* @__PURE__ */
|
|
170
|
+
/* @__PURE__ */ E("button", {
|
|
170
171
|
type: "button",
|
|
171
172
|
onClick: X,
|
|
172
173
|
disabled: N || H,
|
|
173
174
|
className: "inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-3 py-1.5 text-xs font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50 flex-shrink-0",
|
|
174
|
-
children: [N || H ? /* @__PURE__ */
|
|
175
|
+
children: [N || H ? /* @__PURE__ */ T(w, {
|
|
175
176
|
size: 14,
|
|
176
177
|
className: "animate-spin"
|
|
177
|
-
}) : /* @__PURE__ */
|
|
178
|
+
}) : /* @__PURE__ */ T(C, { size: 14 }), N ? k("devportal.revenue.linking", "Linking...") : k("devportal.revenue.linkBillingAccount", "Link Billing Account")]
|
|
178
179
|
})
|
|
179
180
|
]
|
|
180
181
|
}),
|
|
181
|
-
L && J.length === 0 && /* @__PURE__ */
|
|
182
|
+
L && J.length === 0 && /* @__PURE__ */ T("div", {
|
|
182
183
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 ml-8 text-sm text-text-secondary",
|
|
183
|
-
children:
|
|
184
|
+
children: k("devportal.revenue.noBillingAccounts", "You don't have any billing accounts yet. Create one from your account billing settings first.")
|
|
184
185
|
}),
|
|
185
|
-
L && J.length > 0 && /* @__PURE__ */
|
|
186
|
+
L && J.length > 0 && /* @__PURE__ */ E("div", {
|
|
186
187
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 ml-8 space-y-3",
|
|
187
188
|
children: [
|
|
188
|
-
/* @__PURE__ */
|
|
189
|
+
/* @__PURE__ */ T("p", {
|
|
189
190
|
className: "text-sm font-medium",
|
|
190
|
-
children:
|
|
191
|
+
children: k("devportal.revenue.chooseBillingAccount", "Choose a billing account to link")
|
|
191
192
|
}),
|
|
192
|
-
/* @__PURE__ */
|
|
193
|
+
/* @__PURE__ */ T("div", {
|
|
193
194
|
className: "space-y-2",
|
|
194
|
-
children: J.map((e) => /* @__PURE__ */
|
|
195
|
+
children: J.map((e) => /* @__PURE__ */ E("button", {
|
|
195
196
|
type: "button",
|
|
196
197
|
onClick: () => B(e.id ?? null),
|
|
197
198
|
className: n("flex w-full items-center gap-3 rounded-md border px-3 py-2.5 text-sm text-left transition-colors", z === e.id ? "border-primary bg-action-primary-bg/5 text-text-primary" : "border-border-subtle hover:bg-accent text-text-primary"),
|
|
198
|
-
children: [/* @__PURE__ */
|
|
199
|
+
children: [/* @__PURE__ */ T(b, {
|
|
199
200
|
size: 14,
|
|
200
201
|
className: n("flex-shrink-0", z === e.id ? "opacity-100 text-primary" : "opacity-0")
|
|
201
|
-
}), /* @__PURE__ */
|
|
202
|
+
}), /* @__PURE__ */ E("div", {
|
|
202
203
|
className: "flex-1 min-w-0",
|
|
203
|
-
children: [/* @__PURE__ */
|
|
204
|
+
children: [/* @__PURE__ */ T("p", {
|
|
204
205
|
className: "font-medium truncate",
|
|
205
206
|
children: e.name
|
|
206
|
-
}), e.isDefault && /* @__PURE__ */
|
|
207
|
+
}), e.isDefault && /* @__PURE__ */ T("p", {
|
|
207
208
|
className: "text-xs text-text-secondary",
|
|
208
|
-
children:
|
|
209
|
+
children: k("devportal.revenue.defaultAccount", "Default")
|
|
209
210
|
})]
|
|
210
211
|
})]
|
|
211
212
|
}, e.id))
|
|
212
213
|
}),
|
|
213
|
-
/* @__PURE__ */
|
|
214
|
+
/* @__PURE__ */ E("div", {
|
|
214
215
|
className: "flex items-center justify-end gap-2 pt-1",
|
|
215
|
-
children: [/* @__PURE__ */
|
|
216
|
+
children: [/* @__PURE__ */ T("button", {
|
|
216
217
|
type: "button",
|
|
217
218
|
onClick: () => {
|
|
218
219
|
R(!1), I(null);
|
|
219
220
|
},
|
|
220
221
|
className: "rounded-md px-3 py-1.5 text-xs font-medium text-text-secondary hover:bg-accent transition-colors",
|
|
221
|
-
children:
|
|
222
|
-
}), /* @__PURE__ */
|
|
222
|
+
children: k("devportal.cancel", "Cancel")
|
|
223
|
+
}), /* @__PURE__ */ E("button", {
|
|
223
224
|
type: "button",
|
|
224
225
|
disabled: N || !z,
|
|
225
226
|
onClick: () => void Z(),
|
|
226
227
|
className: "inline-flex items-center gap-1.5 rounded-md bg-action-primary-bg px-3 py-1.5 text-xs font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50",
|
|
227
|
-
children: [N ? /* @__PURE__ */
|
|
228
|
+
children: [N ? /* @__PURE__ */ T(w, {
|
|
228
229
|
size: 13,
|
|
229
230
|
className: "animate-spin"
|
|
230
|
-
}) : /* @__PURE__ */
|
|
231
|
+
}) : /* @__PURE__ */ T(C, { size: 13 }), k("devportal.revenue.confirm", "Confirm")]
|
|
231
232
|
})]
|
|
232
233
|
})
|
|
233
234
|
]
|
|
234
235
|
})
|
|
235
236
|
]
|
|
236
237
|
}),
|
|
237
|
-
q?.billingAccountId && /* @__PURE__ */
|
|
238
|
+
q?.billingAccountId && /* @__PURE__ */ E("div", {
|
|
238
239
|
className: "mb-6 rounded-lg border border-border-subtle bg-bg-surface p-3 flex flex-col gap-3",
|
|
239
|
-
children: [/* @__PURE__ */
|
|
240
|
+
children: [/* @__PURE__ */ E("div", {
|
|
240
241
|
className: "flex items-center gap-3",
|
|
241
242
|
children: [
|
|
242
|
-
/* @__PURE__ */
|
|
243
|
+
/* @__PURE__ */ T(x, {
|
|
243
244
|
size: 16,
|
|
244
245
|
className: "text-text-secondary flex-shrink-0"
|
|
245
246
|
}),
|
|
246
|
-
/* @__PURE__ */
|
|
247
|
+
/* @__PURE__ */ E("div", {
|
|
247
248
|
className: "flex-1 min-w-0",
|
|
248
|
-
children: [/* @__PURE__ */
|
|
249
|
+
children: [/* @__PURE__ */ T("p", {
|
|
249
250
|
className: "text-sm font-medium truncate",
|
|
250
|
-
children: Y?.name ??
|
|
251
|
-
}), /* @__PURE__ */
|
|
251
|
+
children: Y?.name ?? k("devportal.revenue.billingAccount", "Billing account")
|
|
252
|
+
}), /* @__PURE__ */ T("p", {
|
|
252
253
|
className: "text-xs text-text-secondary truncate",
|
|
253
254
|
children: Y ? `${Y.currency}${Y.email ? ` · ${Y.email}` : ""}` : q.billingAccountId
|
|
254
255
|
})]
|
|
255
256
|
}),
|
|
256
|
-
!L && /* @__PURE__ */
|
|
257
|
+
!L && /* @__PURE__ */ T("button", {
|
|
257
258
|
type: "button",
|
|
258
259
|
onClick: X,
|
|
259
260
|
disabled: H,
|
|
260
261
|
className: "text-xs text-text-secondary hover:text-text-primary transition-colors flex-shrink-0 disabled:opacity-50",
|
|
261
|
-
children:
|
|
262
|
+
children: k("devportal.revenue.changeBillingAccount", "Change")
|
|
262
263
|
})
|
|
263
264
|
]
|
|
264
|
-
}), L && J.length > 0 && /* @__PURE__ */
|
|
265
|
+
}), L && J.length > 0 && /* @__PURE__ */ E("div", {
|
|
265
266
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 space-y-3",
|
|
266
267
|
children: [
|
|
267
|
-
/* @__PURE__ */
|
|
268
|
+
/* @__PURE__ */ T("p", {
|
|
268
269
|
className: "text-sm font-medium",
|
|
269
|
-
children:
|
|
270
|
+
children: k("devportal.revenue.chooseBillingAccount", "Choose a billing account to link")
|
|
270
271
|
}),
|
|
271
|
-
/* @__PURE__ */
|
|
272
|
+
/* @__PURE__ */ T("div", {
|
|
272
273
|
className: "space-y-2",
|
|
273
|
-
children: J.map((e) => /* @__PURE__ */
|
|
274
|
+
children: J.map((e) => /* @__PURE__ */ E("button", {
|
|
274
275
|
type: "button",
|
|
275
276
|
onClick: () => B(e.id ?? null),
|
|
276
277
|
className: n("flex w-full items-center gap-3 rounded-md border px-3 py-2.5 text-sm text-left transition-colors", z === e.id ? "border-primary bg-action-primary-bg/5 text-text-primary" : "border-border-subtle hover:bg-accent text-text-primary"),
|
|
277
|
-
children: [/* @__PURE__ */
|
|
278
|
+
children: [/* @__PURE__ */ T(b, {
|
|
278
279
|
size: 14,
|
|
279
280
|
className: n("flex-shrink-0", z === e.id ? "opacity-100 text-primary" : "opacity-0")
|
|
280
|
-
}), /* @__PURE__ */
|
|
281
|
+
}), /* @__PURE__ */ E("div", {
|
|
281
282
|
className: "flex-1 min-w-0",
|
|
282
|
-
children: [/* @__PURE__ */
|
|
283
|
+
children: [/* @__PURE__ */ T("p", {
|
|
283
284
|
className: "font-medium truncate",
|
|
284
285
|
children: e.name
|
|
285
|
-
}), e.isDefault && /* @__PURE__ */
|
|
286
|
+
}), e.isDefault && /* @__PURE__ */ T("p", {
|
|
286
287
|
className: "text-xs text-text-secondary",
|
|
287
|
-
children:
|
|
288
|
+
children: k("devportal.revenue.defaultAccount", "Default")
|
|
288
289
|
})]
|
|
289
290
|
})]
|
|
290
291
|
}, e.id))
|
|
291
292
|
}),
|
|
292
|
-
/* @__PURE__ */
|
|
293
|
+
/* @__PURE__ */ E("div", {
|
|
293
294
|
className: "flex items-center justify-end gap-2 pt-1",
|
|
294
|
-
children: [/* @__PURE__ */
|
|
295
|
+
children: [/* @__PURE__ */ T("button", {
|
|
295
296
|
type: "button",
|
|
296
297
|
onClick: () => {
|
|
297
298
|
R(!1), I(null);
|
|
298
299
|
},
|
|
299
300
|
className: "rounded-md px-3 py-1.5 text-xs font-medium text-text-secondary hover:bg-accent transition-colors",
|
|
300
|
-
children:
|
|
301
|
-
}), /* @__PURE__ */
|
|
301
|
+
children: k("devportal.cancel", "Cancel")
|
|
302
|
+
}), /* @__PURE__ */ E("button", {
|
|
302
303
|
type: "button",
|
|
303
304
|
disabled: N || !z,
|
|
304
305
|
onClick: () => void Z(),
|
|
305
306
|
className: "inline-flex items-center gap-1.5 rounded-md bg-action-primary-bg px-3 py-1.5 text-xs font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50",
|
|
306
|
-
children: [N ? /* @__PURE__ */
|
|
307
|
+
children: [N ? /* @__PURE__ */ T(w, {
|
|
307
308
|
size: 13,
|
|
308
309
|
className: "animate-spin"
|
|
309
|
-
}) : /* @__PURE__ */
|
|
310
|
+
}) : /* @__PURE__ */ T(C, { size: 13 }), k("devportal.revenue.confirm", "Confirm")]
|
|
310
311
|
})]
|
|
311
312
|
}),
|
|
312
|
-
F && /* @__PURE__ */
|
|
313
|
+
F && /* @__PURE__ */ T("p", {
|
|
313
314
|
className: "text-xs text-status-error-text",
|
|
314
315
|
children: F
|
|
315
316
|
})
|
|
316
317
|
]
|
|
317
318
|
})]
|
|
318
319
|
}),
|
|
319
|
-
|
|
320
|
+
Ce && !Q ? /* @__PURE__ */ T("div", {
|
|
320
321
|
className: "flex items-center justify-center py-16 text-text-secondary",
|
|
321
|
-
children: /* @__PURE__ */
|
|
322
|
-
}) : Q ? /* @__PURE__ */
|
|
323
|
-
/* @__PURE__ */
|
|
322
|
+
children: /* @__PURE__ */ T(w, { className: "h-8 w-8 animate-spin" })
|
|
323
|
+
}) : Q ? /* @__PURE__ */ E(fe, { children: [
|
|
324
|
+
/* @__PURE__ */ T(pe, {
|
|
324
325
|
className: "mb-6",
|
|
325
|
-
children: /* @__PURE__ */
|
|
326
|
+
children: /* @__PURE__ */ E(ae, {
|
|
326
327
|
columns: 4,
|
|
327
328
|
children: [
|
|
328
|
-
/* @__PURE__ */
|
|
329
|
-
title:
|
|
329
|
+
/* @__PURE__ */ T(c, {
|
|
330
|
+
title: k("devportal.revenue.grossRevenue", "Gross Revenue"),
|
|
330
331
|
value: `$${Q.totalGrossRevenue.toLocaleString()}`,
|
|
331
|
-
icon: /* @__PURE__ */
|
|
332
|
+
icon: /* @__PURE__ */ T(S, { size: 20 })
|
|
332
333
|
}),
|
|
333
|
-
/* @__PURE__ */
|
|
334
|
-
title:
|
|
334
|
+
/* @__PURE__ */ T(c, {
|
|
335
|
+
title: k("devportal.revenue.netRevenue", "Net Revenue"),
|
|
335
336
|
value: `$${Q.totalNetRevenue.toLocaleString()}`,
|
|
336
|
-
icon: /* @__PURE__ */
|
|
337
|
+
icon: /* @__PURE__ */ T(ue, { size: 20 })
|
|
337
338
|
}),
|
|
338
|
-
/* @__PURE__ */
|
|
339
|
-
title:
|
|
339
|
+
/* @__PURE__ */ T(c, {
|
|
340
|
+
title: k("devportal.revenue.pendingBalance", "Pending Balance"),
|
|
340
341
|
value: `$${Q.pendingBalance.toLocaleString()}`,
|
|
341
|
-
icon: /* @__PURE__ */
|
|
342
|
-
description: Q.nextPayoutDate ? `${
|
|
342
|
+
icon: /* @__PURE__ */ T(x, { size: 20 }),
|
|
343
|
+
description: Q.nextPayoutDate ? `${k("devportal.revenue.nextPayout", "Next payout")} ${new Date(Q.nextPayoutDate).toLocaleDateString()}` : k("devportal.revenue.noPayoutScheduled", "No payout scheduled")
|
|
343
344
|
}),
|
|
344
|
-
/* @__PURE__ */
|
|
345
|
-
title:
|
|
345
|
+
/* @__PURE__ */ T(c, {
|
|
346
|
+
title: k("devportal.revenue.platformFees", "Platform Fees"),
|
|
346
347
|
value: `$${Q.totalPlatformFees.toLocaleString()}`,
|
|
347
|
-
icon: /* @__PURE__ */
|
|
348
|
-
description: `${Q.totalRefundsCount} ${
|
|
348
|
+
icon: /* @__PURE__ */ T(le, { size: 20 }),
|
|
349
|
+
description: `${Q.totalRefundsCount} ${k("devportal.revenue.refunds", "refunds")}`
|
|
349
350
|
})
|
|
350
351
|
]
|
|
351
352
|
})
|
|
352
353
|
}),
|
|
353
|
-
/* @__PURE__ */
|
|
354
|
+
/* @__PURE__ */ E("div", {
|
|
354
355
|
className: "grid gap-6 xl:grid-cols-2",
|
|
355
|
-
children: [/* @__PURE__ */
|
|
356
|
-
title:
|
|
357
|
-
children: /* @__PURE__ */
|
|
356
|
+
children: [/* @__PURE__ */ T(o, {
|
|
357
|
+
title: k("devportal.revenue.revenueTrend", "Revenue trend"),
|
|
358
|
+
children: /* @__PURE__ */ T(D, {
|
|
358
359
|
treatment: "insight",
|
|
359
360
|
className: "p-4",
|
|
360
|
-
children: $.length > 0 ? /* @__PURE__ */
|
|
361
|
+
children: $.length > 0 ? /* @__PURE__ */ T(d, {
|
|
361
362
|
width: "100%",
|
|
362
363
|
height: 300,
|
|
363
|
-
children: /* @__PURE__ */
|
|
364
|
+
children: /* @__PURE__ */ E(se, {
|
|
364
365
|
data: $,
|
|
365
366
|
children: [
|
|
366
|
-
/* @__PURE__ */
|
|
367
|
+
/* @__PURE__ */ T(f, {
|
|
367
368
|
strokeDasharray: "3 3",
|
|
368
369
|
stroke: "var(--color-chart-grid)"
|
|
369
370
|
}),
|
|
370
|
-
/* @__PURE__ */
|
|
371
|
+
/* @__PURE__ */ T(m, {
|
|
371
372
|
dataKey: "date",
|
|
372
373
|
stroke: "var(--color-chart-axis)",
|
|
373
374
|
fontSize: 12
|
|
374
375
|
}),
|
|
375
|
-
/* @__PURE__ */
|
|
376
|
+
/* @__PURE__ */ T(h, {
|
|
376
377
|
stroke: "var(--color-chart-axis)",
|
|
377
378
|
fontSize: 12
|
|
378
379
|
}),
|
|
379
|
-
/* @__PURE__ */
|
|
380
|
+
/* @__PURE__ */ T(u, { contentStyle: {
|
|
380
381
|
backgroundColor: "var(--color-card)",
|
|
381
382
|
border: "1px solid var(--color-border-default)",
|
|
382
383
|
borderRadius: 12
|
|
383
384
|
} }),
|
|
384
|
-
/* @__PURE__ */
|
|
385
|
+
/* @__PURE__ */ T(p, {
|
|
385
386
|
type: "monotone",
|
|
386
387
|
dataKey: "grossRevenue",
|
|
387
|
-
stroke:
|
|
388
|
+
stroke: O.primary,
|
|
388
389
|
strokeWidth: 2,
|
|
389
390
|
dot: !1
|
|
390
391
|
}),
|
|
391
|
-
/* @__PURE__ */
|
|
392
|
+
/* @__PURE__ */ T(p, {
|
|
392
393
|
type: "monotone",
|
|
393
394
|
dataKey: "netRevenue",
|
|
394
|
-
stroke:
|
|
395
|
+
stroke: O.secondary,
|
|
395
396
|
strokeWidth: 2,
|
|
396
397
|
dot: !1
|
|
397
398
|
})
|
|
398
399
|
]
|
|
399
400
|
})
|
|
400
|
-
}) : /* @__PURE__ */
|
|
401
|
+
}) : /* @__PURE__ */ E("div", {
|
|
401
402
|
className: "flex h-[300px] flex-col items-center justify-center gap-2 text-text-secondary",
|
|
402
|
-
children: [/* @__PURE__ */
|
|
403
|
+
children: [/* @__PURE__ */ T("p", {
|
|
403
404
|
className: "text-sm font-medium",
|
|
404
|
-
children:
|
|
405
|
-
}), /* @__PURE__ */
|
|
405
|
+
children: k("devportal.revenue.noTrendData", "No trend data yet")
|
|
406
|
+
}), /* @__PURE__ */ T("p", {
|
|
406
407
|
className: "text-xs text-text-tertiary",
|
|
407
|
-
children:
|
|
408
|
+
children: k("devportal.revenue.noTrendDataHint", "Revenue trend appears once daily analytics have been aggregated.")
|
|
408
409
|
})]
|
|
409
410
|
})
|
|
410
411
|
})
|
|
411
|
-
}), /* @__PURE__ */
|
|
412
|
-
title:
|
|
413
|
-
children: Q.topApps.length > 0 ? /* @__PURE__ */
|
|
412
|
+
}), /* @__PURE__ */ T(o, {
|
|
413
|
+
title: k("devportal.revenue.topApps", "Top applications by revenue"),
|
|
414
|
+
children: Q.topApps.length > 0 ? /* @__PURE__ */ T("div", {
|
|
414
415
|
className: "space-y-2",
|
|
415
|
-
children: Q.topApps.map((e) => /* @__PURE__ */
|
|
416
|
+
children: Q.topApps.map((e) => /* @__PURE__ */ T(D, {
|
|
416
417
|
treatment: "insight",
|
|
417
418
|
className: "border-border-seam p-4",
|
|
418
|
-
children: /* @__PURE__ */
|
|
419
|
+
children: /* @__PURE__ */ E("div", {
|
|
419
420
|
className: "flex items-start justify-between gap-3",
|
|
420
|
-
children: [/* @__PURE__ */
|
|
421
|
+
children: [/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
421
422
|
className: "font-medium",
|
|
422
423
|
children: e.applicationName
|
|
423
|
-
}), /* @__PURE__ */
|
|
424
|
+
}), /* @__PURE__ */ E("p", {
|
|
424
425
|
className: "text-sm text-text-secondary",
|
|
425
426
|
children: [
|
|
426
427
|
e.salesCount,
|
|
427
428
|
" ",
|
|
428
|
-
|
|
429
|
+
k("devportal.revenue.sales", "sales")
|
|
429
430
|
]
|
|
430
|
-
})] }), /* @__PURE__ */
|
|
431
|
+
})] }), /* @__PURE__ */ E("div", {
|
|
431
432
|
className: "text-right",
|
|
432
|
-
children: [/* @__PURE__ */
|
|
433
|
+
children: [/* @__PURE__ */ E("p", {
|
|
433
434
|
className: "font-semibold",
|
|
434
435
|
children: ["$", e.grossRevenue.toLocaleString()]
|
|
435
|
-
}), /* @__PURE__ */
|
|
436
|
+
}), /* @__PURE__ */ E("p", {
|
|
436
437
|
className: "text-sm text-text-secondary",
|
|
437
438
|
children: [
|
|
438
|
-
|
|
439
|
+
k("devportal.revenue.net", "Net"),
|
|
439
440
|
" $",
|
|
440
441
|
e.netRevenue.toLocaleString()
|
|
441
442
|
]
|
|
@@ -443,46 +444,46 @@ var k = {
|
|
|
443
444
|
})]
|
|
444
445
|
})
|
|
445
446
|
}, e.applicationId))
|
|
446
|
-
}) : /* @__PURE__ */
|
|
447
|
+
}) : /* @__PURE__ */ T(r, {
|
|
447
448
|
illustration: "empty-data",
|
|
448
|
-
icon: /* @__PURE__ */
|
|
449
|
-
title:
|
|
450
|
-
description:
|
|
449
|
+
icon: /* @__PURE__ */ T(y, { size: 24 }),
|
|
450
|
+
title: k("devportal.revenue.noLeadersTitle", "No revenue leaders yet"),
|
|
451
|
+
description: k("devportal.revenue.noLeadersDescription", "Top-performing applications will appear here once revenue is recorded.")
|
|
451
452
|
})
|
|
452
453
|
})]
|
|
453
454
|
}),
|
|
454
|
-
/* @__PURE__ */
|
|
455
|
-
title:
|
|
456
|
-
children: /* @__PURE__ */
|
|
455
|
+
/* @__PURE__ */ T(o, {
|
|
456
|
+
title: k("devportal.revenue.salesVolume", "Sales volume"),
|
|
457
|
+
children: /* @__PURE__ */ T(D, {
|
|
457
458
|
treatment: "insight",
|
|
458
459
|
className: "p-4",
|
|
459
|
-
children: $.length > 0 ? /* @__PURE__ */
|
|
460
|
+
children: $.length > 0 ? /* @__PURE__ */ T(d, {
|
|
460
461
|
width: "100%",
|
|
461
462
|
height: 280,
|
|
462
|
-
children: /* @__PURE__ */
|
|
463
|
+
children: /* @__PURE__ */ E(ce, {
|
|
463
464
|
data: $,
|
|
464
465
|
children: [
|
|
465
|
-
/* @__PURE__ */
|
|
466
|
+
/* @__PURE__ */ T(f, {
|
|
466
467
|
strokeDasharray: "3 3",
|
|
467
468
|
stroke: "var(--color-chart-grid)"
|
|
468
469
|
}),
|
|
469
|
-
/* @__PURE__ */
|
|
470
|
+
/* @__PURE__ */ T(m, {
|
|
470
471
|
dataKey: "date",
|
|
471
472
|
stroke: "var(--color-chart-axis)",
|
|
472
473
|
fontSize: 12
|
|
473
474
|
}),
|
|
474
|
-
/* @__PURE__ */
|
|
475
|
+
/* @__PURE__ */ T(h, {
|
|
475
476
|
stroke: "var(--color-chart-axis)",
|
|
476
477
|
fontSize: 12
|
|
477
478
|
}),
|
|
478
|
-
/* @__PURE__ */
|
|
479
|
+
/* @__PURE__ */ T(u, { contentStyle: {
|
|
479
480
|
backgroundColor: "var(--color-card)",
|
|
480
481
|
border: "1px solid var(--color-border-default)",
|
|
481
482
|
borderRadius: 12
|
|
482
483
|
} }),
|
|
483
|
-
/* @__PURE__ */
|
|
484
|
+
/* @__PURE__ */ T(oe, {
|
|
484
485
|
dataKey: "salesCount",
|
|
485
|
-
fill:
|
|
486
|
+
fill: O.tertiary,
|
|
486
487
|
radius: [
|
|
487
488
|
6,
|
|
488
489
|
6,
|
|
@@ -492,71 +493,71 @@ var k = {
|
|
|
492
493
|
})
|
|
493
494
|
]
|
|
494
495
|
})
|
|
495
|
-
}) : /* @__PURE__ */
|
|
496
|
+
}) : /* @__PURE__ */ E("div", {
|
|
496
497
|
className: "flex h-[280px] flex-col items-center justify-center gap-2 text-text-secondary",
|
|
497
|
-
children: [/* @__PURE__ */
|
|
498
|
+
children: [/* @__PURE__ */ T("p", {
|
|
498
499
|
className: "text-sm font-medium",
|
|
499
|
-
children:
|
|
500
|
-
}), /* @__PURE__ */
|
|
500
|
+
children: k("devportal.revenue.noVolumeData", "No sales volume data yet")
|
|
501
|
+
}), /* @__PURE__ */ T("p", {
|
|
501
502
|
className: "text-xs text-text-tertiary",
|
|
502
|
-
children:
|
|
503
|
+
children: k("devportal.revenue.noVolumeDataHint", "Sales volume by period appears once analytics have been aggregated.")
|
|
503
504
|
})]
|
|
504
505
|
})
|
|
505
506
|
})
|
|
506
507
|
}),
|
|
507
|
-
/* @__PURE__ */
|
|
508
|
+
/* @__PURE__ */ E("div", {
|
|
508
509
|
className: "grid gap-6 xl:grid-cols-2",
|
|
509
|
-
children: [/* @__PURE__ */
|
|
510
|
-
title:
|
|
511
|
-
children: /* @__PURE__ */
|
|
512
|
-
data:
|
|
510
|
+
children: [/* @__PURE__ */ T(o, {
|
|
511
|
+
title: k("devportal.revenue.recentSales", "Recent sales"),
|
|
512
|
+
children: /* @__PURE__ */ T(l, {
|
|
513
|
+
data: Te,
|
|
513
514
|
keyField: "id",
|
|
514
515
|
columns: [
|
|
515
516
|
{
|
|
516
517
|
key: "application",
|
|
517
|
-
header:
|
|
518
|
-
render: (e) => e.application?.name || e.planName ||
|
|
518
|
+
header: k("devportal.revenue.application", "Application"),
|
|
519
|
+
render: (e) => e.application?.name || e.planName || k("devportal.common.unknown", "Unknown")
|
|
519
520
|
},
|
|
520
521
|
{
|
|
521
522
|
key: "grossAmount",
|
|
522
|
-
header:
|
|
523
|
+
header: k("devportal.revenue.gross", "Gross"),
|
|
523
524
|
render: (e) => `$${e.grossAmount.toLocaleString()}`
|
|
524
525
|
},
|
|
525
526
|
{
|
|
526
527
|
key: "netAmount",
|
|
527
|
-
header:
|
|
528
|
+
header: k("devportal.revenue.net", "Net"),
|
|
528
529
|
render: (e) => `$${e.netAmount.toLocaleString()}`
|
|
529
530
|
},
|
|
530
531
|
{
|
|
531
532
|
key: "status",
|
|
532
|
-
header:
|
|
533
|
-
render: (e) => /* @__PURE__ */
|
|
533
|
+
header: k("devportal.revenue.status", "Status"),
|
|
534
|
+
render: (e) => /* @__PURE__ */ T(s, {
|
|
534
535
|
status: e.status,
|
|
535
536
|
type: "app"
|
|
536
537
|
})
|
|
537
538
|
}
|
|
538
539
|
]
|
|
539
540
|
})
|
|
540
|
-
}), /* @__PURE__ */
|
|
541
|
-
title:
|
|
542
|
-
children: /* @__PURE__ */
|
|
543
|
-
data:
|
|
541
|
+
}), /* @__PURE__ */ T(o, {
|
|
542
|
+
title: k("devportal.revenue.payoutHistory", "Payout history"),
|
|
543
|
+
children: /* @__PURE__ */ T(l, {
|
|
544
|
+
data: Ee,
|
|
544
545
|
keyField: "id",
|
|
545
546
|
columns: [
|
|
546
547
|
{
|
|
547
548
|
key: "periodLabel",
|
|
548
|
-
header:
|
|
549
|
+
header: k("devportal.revenue.period", "Period"),
|
|
549
550
|
render: (e) => e.periodLabel
|
|
550
551
|
},
|
|
551
552
|
{
|
|
552
553
|
key: "netAmount",
|
|
553
|
-
header:
|
|
554
|
+
header: k("devportal.revenue.netPayout", "Net payout"),
|
|
554
555
|
render: (e) => `$${e.netAmount.toLocaleString()}`
|
|
555
556
|
},
|
|
556
557
|
{
|
|
557
558
|
key: "status",
|
|
558
|
-
header:
|
|
559
|
-
render: (e) => /* @__PURE__ */
|
|
559
|
+
header: k("devportal.revenue.status", "Status"),
|
|
560
|
+
render: (e) => /* @__PURE__ */ T(s, {
|
|
560
561
|
status: e.status,
|
|
561
562
|
type: "app"
|
|
562
563
|
})
|
|
@@ -565,28 +566,28 @@ var k = {
|
|
|
565
566
|
})
|
|
566
567
|
})]
|
|
567
568
|
})
|
|
568
|
-
] }) : /* @__PURE__ */
|
|
569
|
+
] }) : /* @__PURE__ */ T(r, {
|
|
569
570
|
illustration: "empty-data",
|
|
570
|
-
icon: /* @__PURE__ */
|
|
571
|
-
title:
|
|
572
|
-
description:
|
|
571
|
+
icon: /* @__PURE__ */ T(S, { size: 32 }),
|
|
572
|
+
title: k("devportal.revenue.noDataTitle", "No revenue data yet"),
|
|
573
|
+
description: k("devportal.revenue.noDataDescription", "Revenue metrics will appear after this organization starts recording marketplace sales.")
|
|
573
574
|
})
|
|
574
575
|
]
|
|
575
|
-
}) : /* @__PURE__ */
|
|
576
|
-
title:
|
|
577
|
-
description:
|
|
578
|
-
children: /* @__PURE__ */
|
|
576
|
+
}) : /* @__PURE__ */ T(a, {
|
|
577
|
+
title: k("devportal.revenue.title", "Revenue"),
|
|
578
|
+
description: k("devportal.revenue.description", "Track real revenue, sales, and payout activity for your developer organizations"),
|
|
579
|
+
children: /* @__PURE__ */ T(r, {
|
|
579
580
|
illustration: "empty-people",
|
|
580
|
-
icon: /* @__PURE__ */
|
|
581
|
+
icon: /* @__PURE__ */ T(y, {
|
|
581
582
|
size: 32,
|
|
582
583
|
className: "text-text-secondary"
|
|
583
584
|
}),
|
|
584
|
-
title:
|
|
585
|
-
description:
|
|
585
|
+
title: k("devportal.revenue.selectOrgTitle", "Select an organization"),
|
|
586
|
+
description: k("devportal.revenue.selectOrgHint", "Use the organization switcher in the nav bar above to choose which organization's revenue to view.")
|
|
586
587
|
})
|
|
587
588
|
});
|
|
588
589
|
};
|
|
589
590
|
//#endregion
|
|
590
|
-
export {
|
|
591
|
+
export { k as RevenueDashboardPage };
|
|
591
592
|
|
|
592
593
|
//# sourceMappingURL=RevenueDashboardPage.js.map
|