@burdenoff/microfe-devportal 2026.915.11 → 2026.916.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/DevportalRoutes.d.ts.map +1 -1
- package/dist/devportal/DevportalRoutes.js +131 -126
- package/dist/devportal/DevportalRoutes.js.map +1 -1
- package/dist/devportal/pages/OrganizationDetailPage.d.ts.map +1 -1
- package/dist/devportal/pages/OrganizationDetailPage.js +532 -524
- package/dist/devportal/pages/OrganizationDetailPage.js.map +1 -1
- package/dist/devportal/pages/OrganizationsPage.d.ts.map +1 -1
- package/dist/devportal/pages/OrganizationsPage.js +79 -93
- 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 +191 -190
- package/dist/devportal/pages/RevenueDashboardPage.js.map +1 -1
- package/dist/devportal/pages/SellerOrdersPage.d.ts.map +1 -1
- package/dist/devportal/pages/SellerOrdersPage.js +100 -106
- package/dist/devportal/pages/SellerOrdersPage.js.map +1 -1
- package/dist/devportal/utils/currency.d.ts +2 -0
- package/dist/devportal/utils/currency.d.ts.map +1 -0
- package/dist/devportal/utils/currency.js +12 -0
- package/dist/devportal/utils/currency.js.map +1 -0
- package/dist/generated/global-operations.d.ts +4 -0
- package/dist/generated/global-operations.d.ts.map +1 -1
- package/dist/generated/global-operations.js +55 -44
- package/dist/generated/global-operations.js.map +1 -1
- package/dist/generated/global-types.d.ts +163 -2
- package/dist/generated/global-types.d.ts.map +1 -1
- package/dist/generated/global-types.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,51 +6,52 @@ import { useIsSellerSection as ee } from "../hooks/useIsSellerSection.js";
|
|
|
6
6
|
import { useAddPaymentMethodMutation as te, useGetBillingAccountsByOrgQuery as ne, useGetMyOrganizationsQuery as re, useGetPaymentMethodsQuery as ie, useGetRevenueDashboardDataQuery as ae, useLinkDevOrgBillingAccountMutation as oe, useRequestPayoutMutation as se } from "../../generated/global-operations.js";
|
|
7
7
|
import { getErrorMessage as ce } from "../hooks/useGraphQL.js";
|
|
8
8
|
import { PageLayout as i, PageSection as a } from "../components/PageLayout.js";
|
|
9
|
-
import { StatusBadge as
|
|
10
|
-
import { StatCard as
|
|
11
|
-
import { DataTable as
|
|
9
|
+
import { StatusBadge as le } from "../components/StatusBadge.js";
|
|
10
|
+
import { StatCard as o, StatCardGrid as ue } from "../components/StatCard.js";
|
|
11
|
+
import { DataTable as s } from "../components/DataTable.js";
|
|
12
12
|
import "../hooks/index.js";
|
|
13
|
-
import { Tooltip as
|
|
14
|
-
import { ResponsiveContainer as
|
|
13
|
+
import { Tooltip as c } from "../../node_modules/recharts/es6/component/Tooltip.js";
|
|
14
|
+
import { ResponsiveContainer as l } from "../../node_modules/recharts/es6/component/ResponsiveContainer.js";
|
|
15
15
|
import { Bar as de } from "../../node_modules/recharts/es6/cartesian/Bar.js";
|
|
16
|
-
import { CartesianGrid as
|
|
17
|
-
import { Line as
|
|
18
|
-
import { XAxis as
|
|
19
|
-
import { YAxis as
|
|
20
|
-
import { LineChart as
|
|
21
|
-
import { BarChart as
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
16
|
+
import { CartesianGrid as u } from "../../node_modules/recharts/es6/cartesian/CartesianGrid.js";
|
|
17
|
+
import { Line as fe } from "../../node_modules/recharts/es6/cartesian/Line.js";
|
|
18
|
+
import { XAxis as pe } from "../../node_modules/recharts/es6/cartesian/XAxis.js";
|
|
19
|
+
import { YAxis as me } from "../../node_modules/recharts/es6/cartesian/YAxis.js";
|
|
20
|
+
import { LineChart as he } from "../../node_modules/recharts/es6/chart/LineChart.js";
|
|
21
|
+
import { BarChart as ge } from "../../node_modules/recharts/es6/chart/BarChart.js";
|
|
22
|
+
import { formatCurrency as d } from "../utils/currency.js";
|
|
23
|
+
import { DevPortalPaymentMethodType as f } from "../../generated/global-types.js";
|
|
24
|
+
import { useMemo as p, useState as m } from "react";
|
|
25
|
+
import { AlertCircle as _e, ArrowDownToLine as ve, Banknote as ye, Building2 as be, Check as h, CreditCard as xe, DollarSign as Se, Link2 as g, Loader2 as _, Send as Ce, Wallet as we } from "lucide-react";
|
|
26
|
+
import { useSearchParams as Te } from "react-router";
|
|
27
|
+
import { Fragment as Ee, jsx as v, jsxs as y } from "react/jsx-runtime";
|
|
28
|
+
import { EmphasisPanel as De, GlassCard as b } from "@burdenoff/fe-libs/ui";
|
|
28
29
|
//#region src/devportal/pages/RevenueDashboardPage.tsx
|
|
29
30
|
var x = 100, S = {
|
|
30
31
|
primary: "var(--color-chart-1)",
|
|
31
32
|
secondary: "var(--color-chart-2)",
|
|
32
33
|
tertiary: "var(--color-chart-4)"
|
|
33
|
-
},
|
|
34
|
+
}, Oe = {
|
|
34
35
|
"30d": 30,
|
|
35
36
|
"90d": 90,
|
|
36
37
|
"12m": 365
|
|
37
38
|
}, C = () => {
|
|
38
|
-
let C = t(), { activeOrgId:
|
|
39
|
+
let C = t(), { activeOrgId: ke, activePhysicalOrgId: Ae, tenantId: je } = e(), w = ee() ? Ae : ke, [T, Me] = m("90d"), [E, Ne] = m(!1), [D, O] = m(null), [Pe] = oe(), [k, A] = m(!1), [j, M] = m(null), [Fe] = Te(), N = p(() => /* @__PURE__ */ new Date(), []), [Ie, P] = m(!1), [Le, F] = m(null), [I, L] = m(null), [Re, R] = m(!1), [z, ze] = m(f.BankAccount), [Be, Ve] = m(""), [B, He] = m(""), [Ue, We] = m(""), [V, Ge] = m(""), [Ke, H] = m(null), { data: qe, loading: Je } = ie({
|
|
39
40
|
variables: { organizationId: w ?? "" },
|
|
40
41
|
skip: !w,
|
|
41
42
|
fetchPolicy: "cache-and-network"
|
|
42
|
-
}), [
|
|
43
|
+
}), [Ye, { loading: Xe }] = te(), [Ze, { loading: Qe }] = se(), { data: $e, loading: U } = ne({
|
|
43
44
|
fetchPolicy: "cache-and-network",
|
|
44
|
-
context: { headers: { "x-org-id":
|
|
45
|
-
}),
|
|
46
|
-
let e = new Date(
|
|
47
|
-
return e.setDate(e.getDate() -
|
|
48
|
-
}, [
|
|
45
|
+
context: { headers: { "x-org-id": je ?? "" } }
|
|
46
|
+
}), et = p(() => {
|
|
47
|
+
let e = new Date(N);
|
|
48
|
+
return e.setDate(e.getDate() - Oe[T]), e.toISOString();
|
|
49
|
+
}, [N, T]), { data: W, loading: tt, error: nt } = re({ fetchPolicy: "cache-and-network" }), { data: G, loading: rt, error: it } = ae({
|
|
49
50
|
variables: {
|
|
50
51
|
organizationId: w ?? "",
|
|
51
52
|
period: "monthly",
|
|
52
|
-
startDate:
|
|
53
|
-
endDate:
|
|
53
|
+
startDate: et,
|
|
54
|
+
endDate: N.toISOString(),
|
|
54
55
|
salesLimit: 10,
|
|
55
56
|
salesOffset: 0,
|
|
56
57
|
payoutsLimit: 10,
|
|
@@ -58,67 +59,67 @@ var x = 100, S = {
|
|
|
58
59
|
},
|
|
59
60
|
skip: !w,
|
|
60
61
|
fetchPolicy: "cache-and-network"
|
|
61
|
-
}),
|
|
62
|
-
|
|
63
|
-
},
|
|
64
|
-
if (!(!w || !
|
|
65
|
-
|
|
62
|
+
}), K = p(() => W?.myDeveloperOrganizations?.map((e) => e) ?? [], [W?.myDeveloperOrganizations]).find((e) => e.id === w), q = $e?.getBillingAccountsByOrg ?? [], J = q.find((e) => e.id === K?.billingAccountId) ?? null, at = () => {
|
|
63
|
+
M(K?.billingAccountId ?? q.find((e) => e.isDefault)?.id ?? q[0]?.id ?? null), A(!0);
|
|
64
|
+
}, Y = async () => {
|
|
65
|
+
if (!(!w || !j)) {
|
|
66
|
+
Ne(!0), O(null);
|
|
66
67
|
try {
|
|
67
|
-
await
|
|
68
|
+
await Pe({
|
|
68
69
|
variables: {
|
|
69
70
|
organizationId: w,
|
|
70
|
-
billingAccountId:
|
|
71
|
+
billingAccountId: j
|
|
71
72
|
},
|
|
72
73
|
refetchQueries: ["GetMyOrganizations"]
|
|
73
|
-
}),
|
|
74
|
+
}), A(!1);
|
|
74
75
|
} catch (e) {
|
|
75
|
-
|
|
76
|
+
O(e instanceof Error ? e.message : "Failed to link billing account");
|
|
76
77
|
} finally {
|
|
77
|
-
|
|
78
|
+
Ne(!1);
|
|
78
79
|
}
|
|
79
80
|
}
|
|
80
|
-
}, X = (
|
|
81
|
-
|
|
82
|
-
},
|
|
81
|
+
}, X = (qe?.developerOrgPaymentMethods ?? []).filter((e) => e.isActive), ot = () => {
|
|
82
|
+
L((X.find((e) => e.isDefault) ?? X[0])?.id ?? null), R(X.length === 0), H(null), F(null), P(!0);
|
|
83
|
+
}, st = async () => {
|
|
83
84
|
if (!w) return;
|
|
84
|
-
|
|
85
|
-
let e =
|
|
86
|
-
accountNumber:
|
|
87
|
-
routingNumber:
|
|
85
|
+
H(null);
|
|
86
|
+
let e = z === f.Paypal, t = e ? { email: V } : {
|
|
87
|
+
accountNumber: B,
|
|
88
|
+
routingNumber: Ue
|
|
88
89
|
};
|
|
89
90
|
try {
|
|
90
|
-
let n = (await
|
|
91
|
+
let n = (await Ye({
|
|
91
92
|
variables: {
|
|
92
93
|
organizationId: w,
|
|
93
94
|
input: {
|
|
94
|
-
type:
|
|
95
|
-
name:
|
|
95
|
+
type: z,
|
|
96
|
+
name: Be || (e ? "PayPal" : "Bank Account"),
|
|
96
97
|
accountDetails: t,
|
|
97
98
|
isDefault: X.length === 0
|
|
98
99
|
}
|
|
99
100
|
},
|
|
100
101
|
refetchQueries: ["GetPaymentMethods"]
|
|
101
102
|
})).data?.addDeveloperOrgPaymentMethod;
|
|
102
|
-
n &&
|
|
103
|
+
n && L(n.id), R(!1), Ve(""), He(""), We(""), Ge("");
|
|
103
104
|
} catch (e) {
|
|
104
|
-
|
|
105
|
+
H(e instanceof Error ? e.message : "Failed to add payout method");
|
|
105
106
|
}
|
|
106
|
-
},
|
|
107
|
-
if (!(!w || !
|
|
108
|
-
|
|
107
|
+
}, ct = async () => {
|
|
108
|
+
if (!(!w || !I)) {
|
|
109
|
+
F(null);
|
|
109
110
|
try {
|
|
110
|
-
await
|
|
111
|
+
await Ze({
|
|
111
112
|
variables: {
|
|
112
113
|
organizationId: w,
|
|
113
|
-
paymentMethodId:
|
|
114
|
+
paymentMethodId: I
|
|
114
115
|
},
|
|
115
116
|
refetchQueries: ["GetRevenueDashboardData"]
|
|
116
|
-
}),
|
|
117
|
+
}), P(!1);
|
|
117
118
|
} catch (e) {
|
|
118
|
-
|
|
119
|
+
F(e instanceof Error ? e.message : "Failed to request withdrawal");
|
|
119
120
|
}
|
|
120
121
|
}
|
|
121
|
-
}, Z =
|
|
122
|
+
}, Z = G?.developerOrgRevenueSummary, Q = (Z?.pendingBalance ?? 0) >= x, lt = [...G?.developerOrgRevenueAnalytics ?? []].sort((e, t) => new Date(e.date).getTime() - new Date(t.date).getTime()), ut = G?.developerOrgSales?.edges?.map((e) => e.node) ?? [], dt = G?.developerOrgPayouts?.edges?.map((e) => e.node) ?? [], $ = lt.map((e) => ({
|
|
122
123
|
date: new Date(e.date).toLocaleDateString(void 0, {
|
|
123
124
|
month: "short",
|
|
124
125
|
day: "numeric"
|
|
@@ -129,44 +130,44 @@ var x = 100, S = {
|
|
|
129
130
|
refunds: e.refunds,
|
|
130
131
|
salesCount: e.salesCount
|
|
131
132
|
}));
|
|
132
|
-
return
|
|
133
|
+
return tt && !W ? /* @__PURE__ */ v(i, {
|
|
133
134
|
title: C("devportal.revenue.title", "Revenue"),
|
|
134
135
|
description: C("devportal.revenue.description", "Track real revenue, sales, and payout activity for your developer organizations"),
|
|
135
136
|
children: /* @__PURE__ */ v("div", {
|
|
136
137
|
className: "flex items-center justify-center py-16 text-text-secondary",
|
|
137
138
|
children: /* @__PURE__ */ v(_, { className: "h-8 w-8 animate-spin" })
|
|
138
139
|
})
|
|
139
|
-
}) :
|
|
140
|
+
}) : nt ? /* @__PURE__ */ v(i, {
|
|
140
141
|
title: C("devportal.revenue.title", "Revenue"),
|
|
141
142
|
description: C("devportal.revenue.description", "Track real revenue, sales, and payout activity for your developer organizations"),
|
|
142
143
|
children: /* @__PURE__ */ v(r, {
|
|
143
|
-
icon: /* @__PURE__ */ v(
|
|
144
|
+
icon: /* @__PURE__ */ v(_e, {
|
|
144
145
|
size: 32,
|
|
145
146
|
className: "text-status-error-text"
|
|
146
147
|
}),
|
|
147
148
|
title: C("devportal.revenue.errorLoadOrgs", "Unable to load organizations"),
|
|
148
|
-
description: ce(
|
|
149
|
+
description: ce(nt)
|
|
149
150
|
})
|
|
150
|
-
}) : w ?
|
|
151
|
+
}) : w ? it ? /* @__PURE__ */ v(i, {
|
|
151
152
|
title: C("devportal.revenue.title", "Revenue"),
|
|
152
153
|
description: C("devportal.revenue.description", "Track real revenue, sales, and payout activity for your developer organizations"),
|
|
153
154
|
children: /* @__PURE__ */ v(r, {
|
|
154
|
-
icon: /* @__PURE__ */ v(
|
|
155
|
+
icon: /* @__PURE__ */ v(_e, {
|
|
155
156
|
size: 32,
|
|
156
157
|
className: "text-status-error-text"
|
|
157
158
|
}),
|
|
158
159
|
title: C("devportal.revenue.errorLoadData", "Unable to load revenue data"),
|
|
159
|
-
description: ce(
|
|
160
|
+
description: ce(it)
|
|
160
161
|
})
|
|
161
162
|
}) : /* @__PURE__ */ y(i, {
|
|
162
163
|
title: C("devportal.revenue.title", "Revenue"),
|
|
163
|
-
description:
|
|
164
|
+
description: K ? `${C("devportal.revenue.financialPerformanceFor", "Financial performance for")} ${K.name}` : C("devportal.revenue.shortDescription", "Track revenue, sales, and payouts"),
|
|
164
165
|
purpose: C("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."),
|
|
165
166
|
actions: /* @__PURE__ */ v("div", {
|
|
166
167
|
className: "flex flex-wrap gap-2",
|
|
167
168
|
children: /* @__PURE__ */ y("select", {
|
|
168
169
|
value: T,
|
|
169
|
-
onChange: (e) =>
|
|
170
|
+
onChange: (e) => Me(e.target.value),
|
|
170
171
|
"aria-label": C("devportal.revenue.selectRangeAria", "Select time range"),
|
|
171
172
|
className: "rounded-md border bg-bg-surface px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary",
|
|
172
173
|
children: [
|
|
@@ -186,7 +187,7 @@ var x = 100, S = {
|
|
|
186
187
|
})
|
|
187
188
|
}),
|
|
188
189
|
children: [
|
|
189
|
-
|
|
190
|
+
K && !K.billingAccountId && /* @__PURE__ */ y("div", {
|
|
190
191
|
className: "mb-6 rounded-card border border-border-seam bg-status-info-bg-subtle p-4 flex flex-col gap-3",
|
|
191
192
|
children: [
|
|
192
193
|
/* @__PURE__ */ y("div", {
|
|
@@ -207,29 +208,29 @@ var x = 100, S = {
|
|
|
207
208
|
className: "mt-1 text-sm text-status-info-text",
|
|
208
209
|
children: C("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.")
|
|
209
210
|
}),
|
|
210
|
-
|
|
211
|
+
D && /* @__PURE__ */ v("p", {
|
|
211
212
|
className: "mt-2 text-sm text-status-error-text",
|
|
212
|
-
children:
|
|
213
|
+
children: D
|
|
213
214
|
})
|
|
214
215
|
]
|
|
215
216
|
}),
|
|
216
217
|
/* @__PURE__ */ y("button", {
|
|
217
218
|
type: "button",
|
|
218
|
-
onClick:
|
|
219
|
-
disabled: E ||
|
|
219
|
+
onClick: at,
|
|
220
|
+
disabled: E || U,
|
|
220
221
|
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",
|
|
221
|
-
children: [E ||
|
|
222
|
+
children: [E || U ? /* @__PURE__ */ v(_, {
|
|
222
223
|
size: 14,
|
|
223
224
|
className: "animate-spin"
|
|
224
225
|
}) : /* @__PURE__ */ v(g, { size: 14 }), E ? C("devportal.revenue.linking", "Linking...") : C("devportal.revenue.linkBillingAccount", "Link Billing Account")]
|
|
225
226
|
})
|
|
226
227
|
]
|
|
227
228
|
}),
|
|
228
|
-
|
|
229
|
+
k && q.length === 0 && /* @__PURE__ */ v("div", {
|
|
229
230
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 ml-8 text-sm text-text-secondary",
|
|
230
231
|
children: C("devportal.revenue.noBillingAccounts", "You don't have any billing accounts yet. Create one from your account billing settings first.")
|
|
231
232
|
}),
|
|
232
|
-
|
|
233
|
+
k && q.length > 0 && /* @__PURE__ */ y("div", {
|
|
233
234
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 ml-8 space-y-3",
|
|
234
235
|
children: [
|
|
235
236
|
/* @__PURE__ */ v("p", {
|
|
@@ -238,13 +239,13 @@ var x = 100, S = {
|
|
|
238
239
|
}),
|
|
239
240
|
/* @__PURE__ */ v("div", {
|
|
240
241
|
className: "space-y-2",
|
|
241
|
-
children:
|
|
242
|
+
children: q.map((e) => /* @__PURE__ */ y("button", {
|
|
242
243
|
type: "button",
|
|
243
|
-
onClick: () =>
|
|
244
|
-
className: n("flex w-full items-center gap-3 rounded-md border px-3 py-2.5 text-sm text-left transition-colors",
|
|
245
|
-
children: [/* @__PURE__ */ v(
|
|
244
|
+
onClick: () => M(e.id ?? null),
|
|
245
|
+
className: n("flex w-full items-center gap-3 rounded-md border px-3 py-2.5 text-sm text-left transition-colors", j === e.id ? "border-primary bg-action-primary-bg/5 text-text-primary" : "border-border-subtle hover:bg-accent text-text-primary"),
|
|
246
|
+
children: [/* @__PURE__ */ v(h, {
|
|
246
247
|
size: 14,
|
|
247
|
-
className: n("flex-shrink-0",
|
|
248
|
+
className: n("flex-shrink-0", j === e.id ? "opacity-100 text-primary" : "opacity-0")
|
|
248
249
|
}), /* @__PURE__ */ y("div", {
|
|
249
250
|
className: "flex-1 min-w-0",
|
|
250
251
|
children: [/* @__PURE__ */ v("p", {
|
|
@@ -262,14 +263,14 @@ var x = 100, S = {
|
|
|
262
263
|
children: [/* @__PURE__ */ v("button", {
|
|
263
264
|
type: "button",
|
|
264
265
|
onClick: () => {
|
|
265
|
-
|
|
266
|
+
A(!1), O(null);
|
|
266
267
|
},
|
|
267
268
|
className: "rounded-md px-3 py-1.5 text-xs font-medium text-text-secondary hover:bg-accent transition-colors",
|
|
268
269
|
children: C("devportal.cancel", "Cancel")
|
|
269
270
|
}), /* @__PURE__ */ y("button", {
|
|
270
271
|
type: "button",
|
|
271
|
-
disabled: E || !
|
|
272
|
-
onClick: () => void
|
|
272
|
+
disabled: E || !j,
|
|
273
|
+
onClick: () => void Y(),
|
|
273
274
|
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",
|
|
274
275
|
children: [E ? /* @__PURE__ */ v(_, {
|
|
275
276
|
size: 13,
|
|
@@ -281,12 +282,12 @@ var x = 100, S = {
|
|
|
281
282
|
})
|
|
282
283
|
]
|
|
283
284
|
}),
|
|
284
|
-
|
|
285
|
+
K?.billingAccountId && /* @__PURE__ */ y("div", {
|
|
285
286
|
className: "mb-6 rounded-lg border border-border-subtle bg-bg-surface p-3 flex flex-col gap-3",
|
|
286
287
|
children: [/* @__PURE__ */ y("div", {
|
|
287
288
|
className: "flex items-center gap-3",
|
|
288
289
|
children: [
|
|
289
|
-
/* @__PURE__ */ v(
|
|
290
|
+
/* @__PURE__ */ v(xe, {
|
|
290
291
|
size: 16,
|
|
291
292
|
className: "text-text-secondary flex-shrink-0"
|
|
292
293
|
}),
|
|
@@ -294,21 +295,21 @@ var x = 100, S = {
|
|
|
294
295
|
className: "flex-1 min-w-0",
|
|
295
296
|
children: [/* @__PURE__ */ v("p", {
|
|
296
297
|
className: "text-sm font-medium truncate",
|
|
297
|
-
children:
|
|
298
|
+
children: J?.name ?? C("devportal.revenue.billingAccount", "Billing account")
|
|
298
299
|
}), /* @__PURE__ */ v("p", {
|
|
299
300
|
className: "text-xs text-text-secondary truncate",
|
|
300
|
-
children:
|
|
301
|
+
children: J ? `${J.currency}${J.email ? ` · ${J.email}` : ""}` : K.billingAccountId
|
|
301
302
|
})]
|
|
302
303
|
}),
|
|
303
|
-
!
|
|
304
|
+
!k && /* @__PURE__ */ v("button", {
|
|
304
305
|
type: "button",
|
|
305
|
-
onClick:
|
|
306
|
-
disabled:
|
|
306
|
+
onClick: at,
|
|
307
|
+
disabled: U,
|
|
307
308
|
className: "text-xs text-text-secondary hover:text-text-primary transition-colors flex-shrink-0 disabled:opacity-50",
|
|
308
309
|
children: C("devportal.revenue.changeBillingAccount", "Change")
|
|
309
310
|
})
|
|
310
311
|
]
|
|
311
|
-
}),
|
|
312
|
+
}), k && q.length > 0 && /* @__PURE__ */ y("div", {
|
|
312
313
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 space-y-3",
|
|
313
314
|
children: [
|
|
314
315
|
/* @__PURE__ */ v("p", {
|
|
@@ -317,13 +318,13 @@ var x = 100, S = {
|
|
|
317
318
|
}),
|
|
318
319
|
/* @__PURE__ */ v("div", {
|
|
319
320
|
className: "space-y-2",
|
|
320
|
-
children:
|
|
321
|
+
children: q.map((e) => /* @__PURE__ */ y("button", {
|
|
321
322
|
type: "button",
|
|
322
|
-
onClick: () =>
|
|
323
|
-
className: n("flex w-full items-center gap-3 rounded-md border px-3 py-2.5 text-sm text-left transition-colors",
|
|
324
|
-
children: [/* @__PURE__ */ v(
|
|
323
|
+
onClick: () => M(e.id ?? null),
|
|
324
|
+
className: n("flex w-full items-center gap-3 rounded-md border px-3 py-2.5 text-sm text-left transition-colors", j === e.id ? "border-primary bg-action-primary-bg/5 text-text-primary" : "border-border-subtle hover:bg-accent text-text-primary"),
|
|
325
|
+
children: [/* @__PURE__ */ v(h, {
|
|
325
326
|
size: 14,
|
|
326
|
-
className: n("flex-shrink-0",
|
|
327
|
+
className: n("flex-shrink-0", j === e.id ? "opacity-100 text-primary" : "opacity-0")
|
|
327
328
|
}), /* @__PURE__ */ y("div", {
|
|
328
329
|
className: "flex-1 min-w-0",
|
|
329
330
|
children: [/* @__PURE__ */ v("p", {
|
|
@@ -341,14 +342,14 @@ var x = 100, S = {
|
|
|
341
342
|
children: [/* @__PURE__ */ v("button", {
|
|
342
343
|
type: "button",
|
|
343
344
|
onClick: () => {
|
|
344
|
-
|
|
345
|
+
A(!1), O(null);
|
|
345
346
|
},
|
|
346
347
|
className: "rounded-md px-3 py-1.5 text-xs font-medium text-text-secondary hover:bg-accent transition-colors",
|
|
347
348
|
children: C("devportal.cancel", "Cancel")
|
|
348
349
|
}), /* @__PURE__ */ y("button", {
|
|
349
350
|
type: "button",
|
|
350
|
-
disabled: E || !
|
|
351
|
-
onClick: () => void
|
|
351
|
+
disabled: E || !j,
|
|
352
|
+
onClick: () => void Y(),
|
|
352
353
|
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",
|
|
353
354
|
children: [E ? /* @__PURE__ */ v(_, {
|
|
354
355
|
size: 13,
|
|
@@ -356,19 +357,19 @@ var x = 100, S = {
|
|
|
356
357
|
}) : /* @__PURE__ */ v(g, { size: 13 }), C("devportal.revenue.confirm", "Confirm")]
|
|
357
358
|
})]
|
|
358
359
|
}),
|
|
359
|
-
|
|
360
|
+
D && /* @__PURE__ */ v("p", {
|
|
360
361
|
className: "text-xs text-status-error-text",
|
|
361
|
-
children:
|
|
362
|
+
children: D
|
|
362
363
|
})
|
|
363
364
|
]
|
|
364
365
|
})]
|
|
365
366
|
}),
|
|
366
|
-
|
|
367
|
+
K?.billingAccountId && Z && /* @__PURE__ */ y("div", {
|
|
367
368
|
className: "mb-6 rounded-lg border border-border-subtle bg-bg-surface p-3 flex flex-col gap-3",
|
|
368
369
|
children: [/* @__PURE__ */ y("div", {
|
|
369
370
|
className: "flex items-center gap-3",
|
|
370
371
|
children: [
|
|
371
|
-
/* @__PURE__ */ v(
|
|
372
|
+
/* @__PURE__ */ v(ye, {
|
|
372
373
|
size: 16,
|
|
373
374
|
className: "text-text-secondary flex-shrink-0"
|
|
374
375
|
}),
|
|
@@ -379,27 +380,27 @@ var x = 100, S = {
|
|
|
379
380
|
children: C("devportal.revenue.withdrawTitle", "Withdraw earned credits")
|
|
380
381
|
}), /* @__PURE__ */ v("p", {
|
|
381
382
|
className: "text-xs text-text-secondary",
|
|
382
|
-
children: Q ? `${C("devportal.revenue.available", "Available")}:
|
|
383
|
+
children: Q ? `${C("devportal.revenue.available", "Available")}: ${d(Z.pendingBalance, Z.currency)}` : `${C("devportal.revenue.belowMinimum", "Minimum payout is")} $${x} — ${C("devportal.revenue.youHave", "you have")} ${d(Z.pendingBalance, Z.currency)} ${C("devportal.revenue.pending", "pending")}.`
|
|
383
384
|
})]
|
|
384
385
|
}),
|
|
385
|
-
!
|
|
386
|
+
!Ie && /* @__PURE__ */ y("button", {
|
|
386
387
|
type: "button",
|
|
387
|
-
onClick:
|
|
388
|
+
onClick: ot,
|
|
388
389
|
disabled: !Q,
|
|
389
390
|
title: Q ? void 0 : C("devportal.revenue.belowMinimumHint", `Payouts require a pending balance of at least $${x}.`),
|
|
390
391
|
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 disabled:cursor-not-allowed flex-shrink-0",
|
|
391
|
-
children: [/* @__PURE__ */ v(
|
|
392
|
+
children: [/* @__PURE__ */ v(Ce, { size: 14 }), C("devportal.revenue.requestWithdrawal", "Request Withdrawal")]
|
|
392
393
|
})
|
|
393
394
|
]
|
|
394
|
-
}),
|
|
395
|
+
}), Ie && /* @__PURE__ */ v("div", {
|
|
395
396
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-4 ml-8 space-y-3",
|
|
396
|
-
children:
|
|
397
|
+
children: Je ? /* @__PURE__ */ y("div", {
|
|
397
398
|
className: "flex items-center gap-2 text-sm text-text-secondary",
|
|
398
399
|
children: [/* @__PURE__ */ v(_, {
|
|
399
400
|
size: 14,
|
|
400
401
|
className: "animate-spin"
|
|
401
402
|
}), C("devportal.revenue.loadingMethods", "Loading payout methods...")]
|
|
402
|
-
}) :
|
|
403
|
+
}) : Re ? /* @__PURE__ */ y("div", {
|
|
403
404
|
className: "space-y-3",
|
|
404
405
|
children: [
|
|
405
406
|
/* @__PURE__ */ v("p", {
|
|
@@ -410,62 +411,62 @@ var x = 100, S = {
|
|
|
410
411
|
className: "grid grid-cols-2 gap-2",
|
|
411
412
|
children: [/* @__PURE__ */ v("button", {
|
|
412
413
|
type: "button",
|
|
413
|
-
onClick: () =>
|
|
414
|
-
className: n("rounded-md border px-3 py-2 text-sm text-left transition-colors",
|
|
414
|
+
onClick: () => ze(f.BankAccount),
|
|
415
|
+
className: n("rounded-md border px-3 py-2 text-sm text-left transition-colors", z === f.BankAccount ? "border-primary bg-action-primary-bg/5" : "border-border-subtle hover:bg-accent"),
|
|
415
416
|
children: C("devportal.revenue.bankAccount", "Bank Account")
|
|
416
417
|
}), /* @__PURE__ */ v("button", {
|
|
417
418
|
type: "button",
|
|
418
|
-
onClick: () =>
|
|
419
|
-
className: n("rounded-md border px-3 py-2 text-sm text-left transition-colors",
|
|
419
|
+
onClick: () => ze(f.Paypal),
|
|
420
|
+
className: n("rounded-md border px-3 py-2 text-sm text-left transition-colors", z === f.Paypal ? "border-primary bg-action-primary-bg/5" : "border-border-subtle hover:bg-accent"),
|
|
420
421
|
children: C("devportal.revenue.paypal", "PayPal")
|
|
421
422
|
})]
|
|
422
423
|
}),
|
|
423
424
|
/* @__PURE__ */ v("input", {
|
|
424
425
|
type: "text",
|
|
425
|
-
value:
|
|
426
|
-
onChange: (e) =>
|
|
426
|
+
value: Be,
|
|
427
|
+
onChange: (e) => Ve(e.target.value),
|
|
427
428
|
placeholder: C("devportal.revenue.methodNamePlaceholder", "Label (e.g. \"Primary account\")"),
|
|
428
429
|
className: "w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary"
|
|
429
430
|
}),
|
|
430
|
-
|
|
431
|
+
z === f.Paypal ? /* @__PURE__ */ v("input", {
|
|
431
432
|
type: "email",
|
|
432
|
-
value:
|
|
433
|
-
onChange: (e) =>
|
|
433
|
+
value: V,
|
|
434
|
+
onChange: (e) => Ge(e.target.value),
|
|
434
435
|
placeholder: C("devportal.revenue.paypalEmailPlaceholder", "PayPal email"),
|
|
435
436
|
className: "w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary"
|
|
436
|
-
}) : /* @__PURE__ */ y(
|
|
437
|
+
}) : /* @__PURE__ */ y(Ee, { children: [/* @__PURE__ */ v("input", {
|
|
437
438
|
type: "text",
|
|
438
|
-
value:
|
|
439
|
-
onChange: (e) =>
|
|
439
|
+
value: B,
|
|
440
|
+
onChange: (e) => He(e.target.value),
|
|
440
441
|
placeholder: C("devportal.revenue.accountNumberPlaceholder", "Account number"),
|
|
441
442
|
className: "w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary"
|
|
442
443
|
}), /* @__PURE__ */ v("input", {
|
|
443
444
|
type: "text",
|
|
444
|
-
value:
|
|
445
|
-
onChange: (e) =>
|
|
445
|
+
value: Ue,
|
|
446
|
+
onChange: (e) => We(e.target.value),
|
|
446
447
|
placeholder: C("devportal.revenue.routingNumberPlaceholder", "Routing number"),
|
|
447
448
|
className: "w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary"
|
|
448
449
|
})] }),
|
|
449
|
-
|
|
450
|
+
Ke && /* @__PURE__ */ v("p", {
|
|
450
451
|
className: "text-xs text-status-error-text",
|
|
451
|
-
children:
|
|
452
|
+
children: Ke
|
|
452
453
|
}),
|
|
453
454
|
/* @__PURE__ */ y("div", {
|
|
454
455
|
className: "flex items-center justify-end gap-2 pt-1",
|
|
455
456
|
children: [/* @__PURE__ */ v("button", {
|
|
456
457
|
type: "button",
|
|
457
|
-
onClick: () =>
|
|
458
|
+
onClick: () => P(!1),
|
|
458
459
|
className: "rounded-md px-3 py-1.5 text-xs font-medium text-text-secondary hover:bg-accent transition-colors",
|
|
459
460
|
children: C("devportal.cancel", "Cancel")
|
|
460
461
|
}), /* @__PURE__ */ y("button", {
|
|
461
462
|
type: "button",
|
|
462
|
-
disabled:
|
|
463
|
-
onClick: () => void
|
|
463
|
+
disabled: Xe || (z === f.Paypal ? !V : !B),
|
|
464
|
+
onClick: () => void st(),
|
|
464
465
|
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",
|
|
465
|
-
children: [
|
|
466
|
+
children: [Xe ? /* @__PURE__ */ v(_, {
|
|
466
467
|
size: 13,
|
|
467
468
|
className: "animate-spin"
|
|
468
|
-
}) : /* @__PURE__ */ v(
|
|
469
|
+
}) : /* @__PURE__ */ v(h, { size: 13 }), C("devportal.revenue.saveMethod", "Save method")]
|
|
469
470
|
})]
|
|
470
471
|
})
|
|
471
472
|
]
|
|
@@ -480,11 +481,11 @@ var x = 100, S = {
|
|
|
480
481
|
className: "space-y-2",
|
|
481
482
|
children: [X.map((e) => /* @__PURE__ */ y("button", {
|
|
482
483
|
type: "button",
|
|
483
|
-
onClick: () =>
|
|
484
|
-
className: n("flex w-full items-center gap-3 rounded-md border px-3 py-2.5 text-sm text-left transition-colors",
|
|
485
|
-
children: [/* @__PURE__ */ v(
|
|
484
|
+
onClick: () => L(e.id),
|
|
485
|
+
className: n("flex w-full items-center gap-3 rounded-md border px-3 py-2.5 text-sm text-left transition-colors", I === e.id ? "border-primary bg-action-primary-bg/5 text-text-primary" : "border-border-subtle hover:bg-accent text-text-primary"),
|
|
486
|
+
children: [/* @__PURE__ */ v(h, {
|
|
486
487
|
size: 14,
|
|
487
|
-
className: n("flex-shrink-0",
|
|
488
|
+
className: n("flex-shrink-0", I === e.id ? "opacity-100 text-primary" : "opacity-0")
|
|
488
489
|
}), /* @__PURE__ */ y("div", {
|
|
489
490
|
className: "flex-1 min-w-0",
|
|
490
491
|
children: [/* @__PURE__ */ v("p", {
|
|
@@ -497,7 +498,7 @@ var x = 100, S = {
|
|
|
497
498
|
})]
|
|
498
499
|
}, e.id)), /* @__PURE__ */ y("button", {
|
|
499
500
|
type: "button",
|
|
500
|
-
onClick: () =>
|
|
501
|
+
onClick: () => R(!0),
|
|
501
502
|
className: "w-full rounded-md border border-dashed border-border-subtle px-3 py-2 text-sm text-text-secondary hover:bg-accent transition-colors",
|
|
502
503
|
children: [
|
|
503
504
|
"+",
|
|
@@ -506,30 +507,30 @@ var x = 100, S = {
|
|
|
506
507
|
]
|
|
507
508
|
})]
|
|
508
509
|
}),
|
|
509
|
-
|
|
510
|
+
Le && /* @__PURE__ */ v("p", {
|
|
510
511
|
className: "text-xs text-status-error-text",
|
|
511
|
-
children:
|
|
512
|
+
children: Le
|
|
512
513
|
}),
|
|
513
514
|
/* @__PURE__ */ y("div", {
|
|
514
515
|
className: "flex items-center justify-end gap-2 pt-1",
|
|
515
516
|
children: [/* @__PURE__ */ v("button", {
|
|
516
517
|
type: "button",
|
|
517
|
-
onClick: () =>
|
|
518
|
+
onClick: () => P(!1),
|
|
518
519
|
className: "rounded-md px-3 py-1.5 text-xs font-medium text-text-secondary hover:bg-accent transition-colors",
|
|
519
520
|
children: C("devportal.cancel", "Cancel")
|
|
520
521
|
}), /* @__PURE__ */ y("button", {
|
|
521
522
|
type: "button",
|
|
522
|
-
disabled:
|
|
523
|
-
onClick: () => void
|
|
523
|
+
disabled: Qe || !I,
|
|
524
|
+
onClick: () => void ct(),
|
|
524
525
|
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",
|
|
525
526
|
children: [
|
|
526
|
-
|
|
527
|
+
Qe ? /* @__PURE__ */ v(_, {
|
|
527
528
|
size: 13,
|
|
528
529
|
className: "animate-spin"
|
|
529
|
-
}) : /* @__PURE__ */ v(
|
|
530
|
+
}) : /* @__PURE__ */ v(Ce, { size: 13 }),
|
|
530
531
|
C("devportal.revenue.confirmWithdrawal", "Request"),
|
|
531
|
-
"
|
|
532
|
-
Z.pendingBalance.
|
|
532
|
+
" ",
|
|
533
|
+
d(Z.pendingBalance, Z.currency)
|
|
533
534
|
]
|
|
534
535
|
})]
|
|
535
536
|
})
|
|
@@ -537,35 +538,35 @@ var x = 100, S = {
|
|
|
537
538
|
})
|
|
538
539
|
})]
|
|
539
540
|
}),
|
|
540
|
-
|
|
541
|
+
rt && !Z ? /* @__PURE__ */ v("div", {
|
|
541
542
|
className: "flex items-center justify-center py-16 text-text-secondary",
|
|
542
543
|
children: /* @__PURE__ */ v(_, { className: "h-8 w-8 animate-spin" })
|
|
543
|
-
}) : Z ? /* @__PURE__ */ y(
|
|
544
|
-
/* @__PURE__ */ v(
|
|
544
|
+
}) : Z ? /* @__PURE__ */ y(Ee, { children: [
|
|
545
|
+
/* @__PURE__ */ v(De, {
|
|
545
546
|
className: "mb-6",
|
|
546
|
-
children: /* @__PURE__ */ y(
|
|
547
|
+
children: /* @__PURE__ */ y(ue, {
|
|
547
548
|
columns: 4,
|
|
548
549
|
children: [
|
|
549
|
-
/* @__PURE__ */ v(
|
|
550
|
+
/* @__PURE__ */ v(o, {
|
|
550
551
|
title: C("devportal.revenue.grossRevenue", "Gross Revenue"),
|
|
551
|
-
value:
|
|
552
|
-
icon: /* @__PURE__ */ v(
|
|
552
|
+
value: d(Z.totalGrossRevenue, Z.currency),
|
|
553
|
+
icon: /* @__PURE__ */ v(Se, { size: 20 })
|
|
553
554
|
}),
|
|
554
|
-
/* @__PURE__ */ v(
|
|
555
|
+
/* @__PURE__ */ v(o, {
|
|
555
556
|
title: C("devportal.revenue.netRevenue", "Net Revenue"),
|
|
556
|
-
value:
|
|
557
|
-
icon: /* @__PURE__ */ v(
|
|
557
|
+
value: d(Z.totalNetRevenue, Z.currency),
|
|
558
|
+
icon: /* @__PURE__ */ v(we, { size: 20 })
|
|
558
559
|
}),
|
|
559
|
-
/* @__PURE__ */ v(
|
|
560
|
+
/* @__PURE__ */ v(o, {
|
|
560
561
|
title: C("devportal.revenue.pendingBalance", "Pending Balance"),
|
|
561
|
-
value:
|
|
562
|
-
icon: /* @__PURE__ */ v(
|
|
562
|
+
value: d(Z.pendingBalance, Z.currency),
|
|
563
|
+
icon: /* @__PURE__ */ v(xe, { size: 20 }),
|
|
563
564
|
description: Z.nextPayoutDate ? `${C("devportal.revenue.nextPayout", "Next payout")} ${new Date(Z.nextPayoutDate).toLocaleDateString()}` : C("devportal.revenue.noPayoutScheduled", "No payout scheduled")
|
|
564
565
|
}),
|
|
565
|
-
/* @__PURE__ */ v(
|
|
566
|
+
/* @__PURE__ */ v(o, {
|
|
566
567
|
title: C("devportal.revenue.platformFees", "Platform Fees"),
|
|
567
|
-
value:
|
|
568
|
-
icon: /* @__PURE__ */ v(
|
|
568
|
+
value: d(Z.totalPlatformFees, Z.currency),
|
|
569
|
+
icon: /* @__PURE__ */ v(ve, { size: 20 }),
|
|
569
570
|
description: `${Z.totalRefundsCount} ${C("devportal.revenue.refunds", "refunds")}`
|
|
570
571
|
})
|
|
571
572
|
]
|
|
@@ -578,38 +579,38 @@ var x = 100, S = {
|
|
|
578
579
|
children: /* @__PURE__ */ v(b, {
|
|
579
580
|
treatment: "insight",
|
|
580
581
|
className: "p-4",
|
|
581
|
-
children: $.length > 0 ? /* @__PURE__ */ v(
|
|
582
|
+
children: $.length > 0 ? /* @__PURE__ */ v(l, {
|
|
582
583
|
width: "100%",
|
|
583
584
|
height: 300,
|
|
584
|
-
children: /* @__PURE__ */ y(
|
|
585
|
+
children: /* @__PURE__ */ y(he, {
|
|
585
586
|
data: $,
|
|
586
587
|
children: [
|
|
587
|
-
/* @__PURE__ */ v(
|
|
588
|
+
/* @__PURE__ */ v(u, {
|
|
588
589
|
strokeDasharray: "3 3",
|
|
589
590
|
stroke: "var(--color-chart-grid)"
|
|
590
591
|
}),
|
|
591
|
-
/* @__PURE__ */ v(
|
|
592
|
+
/* @__PURE__ */ v(pe, {
|
|
592
593
|
dataKey: "date",
|
|
593
594
|
stroke: "var(--color-chart-axis)",
|
|
594
595
|
fontSize: 12
|
|
595
596
|
}),
|
|
596
|
-
/* @__PURE__ */ v(
|
|
597
|
+
/* @__PURE__ */ v(me, {
|
|
597
598
|
stroke: "var(--color-chart-axis)",
|
|
598
599
|
fontSize: 12
|
|
599
600
|
}),
|
|
600
|
-
/* @__PURE__ */ v(
|
|
601
|
+
/* @__PURE__ */ v(c, { contentStyle: {
|
|
601
602
|
backgroundColor: "var(--color-card)",
|
|
602
603
|
border: "1px solid var(--color-border-default)",
|
|
603
604
|
borderRadius: 12
|
|
604
605
|
} }),
|
|
605
|
-
/* @__PURE__ */ v(
|
|
606
|
+
/* @__PURE__ */ v(fe, {
|
|
606
607
|
type: "monotone",
|
|
607
608
|
dataKey: "grossRevenue",
|
|
608
609
|
stroke: S.primary,
|
|
609
610
|
strokeWidth: 2,
|
|
610
611
|
dot: !1
|
|
611
612
|
}),
|
|
612
|
-
/* @__PURE__ */ v(
|
|
613
|
+
/* @__PURE__ */ v(fe, {
|
|
613
614
|
type: "monotone",
|
|
614
615
|
dataKey: "netRevenue",
|
|
615
616
|
stroke: S.secondary,
|
|
@@ -650,15 +651,15 @@ var x = 100, S = {
|
|
|
650
651
|
]
|
|
651
652
|
})] }), /* @__PURE__ */ y("div", {
|
|
652
653
|
className: "text-right",
|
|
653
|
-
children: [/* @__PURE__ */
|
|
654
|
+
children: [/* @__PURE__ */ v("p", {
|
|
654
655
|
className: "font-semibold",
|
|
655
|
-
children:
|
|
656
|
+
children: d(e.grossRevenue, e.currency)
|
|
656
657
|
}), /* @__PURE__ */ y("p", {
|
|
657
658
|
className: "text-sm text-text-secondary",
|
|
658
659
|
children: [
|
|
659
660
|
C("devportal.revenue.net", "Net"),
|
|
660
|
-
"
|
|
661
|
-
e.netRevenue.
|
|
661
|
+
" ",
|
|
662
|
+
d(e.netRevenue, e.currency)
|
|
662
663
|
]
|
|
663
664
|
})]
|
|
664
665
|
})]
|
|
@@ -666,7 +667,7 @@ var x = 100, S = {
|
|
|
666
667
|
}, e.applicationId))
|
|
667
668
|
}) : /* @__PURE__ */ v(r, {
|
|
668
669
|
illustration: "empty-data",
|
|
669
|
-
icon: /* @__PURE__ */ v(
|
|
670
|
+
icon: /* @__PURE__ */ v(be, { size: 24 }),
|
|
670
671
|
title: C("devportal.revenue.noLeadersTitle", "No revenue leaders yet"),
|
|
671
672
|
description: C("devportal.revenue.noLeadersDescription", "Top-performing applications will appear here once revenue is recorded.")
|
|
672
673
|
})
|
|
@@ -677,26 +678,26 @@ var x = 100, S = {
|
|
|
677
678
|
children: /* @__PURE__ */ v(b, {
|
|
678
679
|
treatment: "insight",
|
|
679
680
|
className: "p-4",
|
|
680
|
-
children: $.length > 0 ? /* @__PURE__ */ v(
|
|
681
|
+
children: $.length > 0 ? /* @__PURE__ */ v(l, {
|
|
681
682
|
width: "100%",
|
|
682
683
|
height: 280,
|
|
683
|
-
children: /* @__PURE__ */ y(
|
|
684
|
+
children: /* @__PURE__ */ y(ge, {
|
|
684
685
|
data: $,
|
|
685
686
|
children: [
|
|
686
|
-
/* @__PURE__ */ v(
|
|
687
|
+
/* @__PURE__ */ v(u, {
|
|
687
688
|
strokeDasharray: "3 3",
|
|
688
689
|
stroke: "var(--color-chart-grid)"
|
|
689
690
|
}),
|
|
690
|
-
/* @__PURE__ */ v(
|
|
691
|
+
/* @__PURE__ */ v(pe, {
|
|
691
692
|
dataKey: "date",
|
|
692
693
|
stroke: "var(--color-chart-axis)",
|
|
693
694
|
fontSize: 12
|
|
694
695
|
}),
|
|
695
|
-
/* @__PURE__ */ v(
|
|
696
|
+
/* @__PURE__ */ v(me, {
|
|
696
697
|
stroke: "var(--color-chart-axis)",
|
|
697
698
|
fontSize: 12
|
|
698
699
|
}),
|
|
699
|
-
/* @__PURE__ */ v(
|
|
700
|
+
/* @__PURE__ */ v(c, { contentStyle: {
|
|
700
701
|
backgroundColor: "var(--color-card)",
|
|
701
702
|
border: "1px solid var(--color-border-default)",
|
|
702
703
|
borderRadius: 12
|
|
@@ -729,8 +730,8 @@ var x = 100, S = {
|
|
|
729
730
|
className: "grid gap-6 xl:grid-cols-2",
|
|
730
731
|
children: [/* @__PURE__ */ v(a, {
|
|
731
732
|
title: C("devportal.revenue.recentSales", "Recent sales"),
|
|
732
|
-
children: /* @__PURE__ */ v(
|
|
733
|
-
data:
|
|
733
|
+
children: /* @__PURE__ */ v(s, {
|
|
734
|
+
data: ut,
|
|
734
735
|
keyField: "id",
|
|
735
736
|
columns: [
|
|
736
737
|
{
|
|
@@ -741,17 +742,17 @@ var x = 100, S = {
|
|
|
741
742
|
{
|
|
742
743
|
key: "grossAmount",
|
|
743
744
|
header: C("devportal.revenue.gross", "Gross"),
|
|
744
|
-
render: (e) =>
|
|
745
|
+
render: (e) => d(e.grossAmount, e.currency)
|
|
745
746
|
},
|
|
746
747
|
{
|
|
747
748
|
key: "netAmount",
|
|
748
749
|
header: C("devportal.revenue.net", "Net"),
|
|
749
|
-
render: (e) =>
|
|
750
|
+
render: (e) => d(e.netAmount, e.currency)
|
|
750
751
|
},
|
|
751
752
|
{
|
|
752
753
|
key: "status",
|
|
753
754
|
header: C("devportal.revenue.status", "Status"),
|
|
754
|
-
render: (e) => /* @__PURE__ */ v(
|
|
755
|
+
render: (e) => /* @__PURE__ */ v(le, {
|
|
755
756
|
status: e.status,
|
|
756
757
|
type: "app"
|
|
757
758
|
})
|
|
@@ -760,8 +761,8 @@ var x = 100, S = {
|
|
|
760
761
|
})
|
|
761
762
|
}), /* @__PURE__ */ v(a, {
|
|
762
763
|
title: C("devportal.revenue.payoutHistory", "Payout history"),
|
|
763
|
-
children: /* @__PURE__ */ v(
|
|
764
|
-
data:
|
|
764
|
+
children: /* @__PURE__ */ v(s, {
|
|
765
|
+
data: dt,
|
|
765
766
|
keyField: "id",
|
|
766
767
|
columns: [
|
|
767
768
|
{
|
|
@@ -772,12 +773,12 @@ var x = 100, S = {
|
|
|
772
773
|
{
|
|
773
774
|
key: "netAmount",
|
|
774
775
|
header: C("devportal.revenue.netPayout", "Net payout"),
|
|
775
|
-
render: (e) =>
|
|
776
|
+
render: (e) => d(e.netAmount, e.currency)
|
|
776
777
|
},
|
|
777
778
|
{
|
|
778
779
|
key: "status",
|
|
779
780
|
header: C("devportal.revenue.status", "Status"),
|
|
780
|
-
render: (e) => /* @__PURE__ */ v(
|
|
781
|
+
render: (e) => /* @__PURE__ */ v(le, {
|
|
781
782
|
status: e.status,
|
|
782
783
|
type: "app"
|
|
783
784
|
})
|
|
@@ -788,7 +789,7 @@ var x = 100, S = {
|
|
|
788
789
|
})
|
|
789
790
|
] }) : /* @__PURE__ */ v(r, {
|
|
790
791
|
illustration: "empty-data",
|
|
791
|
-
icon: /* @__PURE__ */ v(
|
|
792
|
+
icon: /* @__PURE__ */ v(Se, { size: 32 }),
|
|
792
793
|
title: C("devportal.revenue.noDataTitle", "No revenue data yet"),
|
|
793
794
|
description: C("devportal.revenue.noDataDescription", "Revenue metrics will appear after this organization starts recording marketplace sales.")
|
|
794
795
|
})
|
|
@@ -798,7 +799,7 @@ var x = 100, S = {
|
|
|
798
799
|
description: C("devportal.revenue.description", "Track real revenue, sales, and payout activity for your developer organizations"),
|
|
799
800
|
children: /* @__PURE__ */ v(r, {
|
|
800
801
|
illustration: "empty-people",
|
|
801
|
-
icon: /* @__PURE__ */ v(
|
|
802
|
+
icon: /* @__PURE__ */ v(be, {
|
|
802
803
|
size: 32,
|
|
803
804
|
className: "text-text-secondary"
|
|
804
805
|
}),
|