@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.
Files changed (27) hide show
  1. package/dist/devportal/DevportalRoutes.d.ts.map +1 -1
  2. package/dist/devportal/DevportalRoutes.js +131 -126
  3. package/dist/devportal/DevportalRoutes.js.map +1 -1
  4. package/dist/devportal/pages/OrganizationDetailPage.d.ts.map +1 -1
  5. package/dist/devportal/pages/OrganizationDetailPage.js +532 -524
  6. package/dist/devportal/pages/OrganizationDetailPage.js.map +1 -1
  7. package/dist/devportal/pages/OrganizationsPage.d.ts.map +1 -1
  8. package/dist/devportal/pages/OrganizationsPage.js +79 -93
  9. package/dist/devportal/pages/OrganizationsPage.js.map +1 -1
  10. package/dist/devportal/pages/RevenueDashboardPage.d.ts.map +1 -1
  11. package/dist/devportal/pages/RevenueDashboardPage.js +191 -190
  12. package/dist/devportal/pages/RevenueDashboardPage.js.map +1 -1
  13. package/dist/devportal/pages/SellerOrdersPage.d.ts.map +1 -1
  14. package/dist/devportal/pages/SellerOrdersPage.js +100 -106
  15. package/dist/devportal/pages/SellerOrdersPage.js.map +1 -1
  16. package/dist/devportal/utils/currency.d.ts +2 -0
  17. package/dist/devportal/utils/currency.d.ts.map +1 -0
  18. package/dist/devportal/utils/currency.js +12 -0
  19. package/dist/devportal/utils/currency.js.map +1 -0
  20. package/dist/generated/global-operations.d.ts +4 -0
  21. package/dist/generated/global-operations.d.ts.map +1 -1
  22. package/dist/generated/global-operations.js +55 -44
  23. package/dist/generated/global-operations.js.map +1 -1
  24. package/dist/generated/global-types.d.ts +163 -2
  25. package/dist/generated/global-types.d.ts.map +1 -1
  26. package/dist/generated/global-types.js.map +1 -1
  27. 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 o } from "../components/StatusBadge.js";
10
- import { StatCard as s, StatCardGrid as le } from "../components/StatCard.js";
11
- import { DataTable as c } from "../components/DataTable.js";
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 l } from "../../node_modules/recharts/es6/component/Tooltip.js";
14
- import { ResponsiveContainer as ue } from "../../node_modules/recharts/es6/component/ResponsiveContainer.js";
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 fe } from "../../node_modules/recharts/es6/cartesian/CartesianGrid.js";
17
- import { Line as pe } from "../../node_modules/recharts/es6/cartesian/Line.js";
18
- import { XAxis as me } from "../../node_modules/recharts/es6/cartesian/XAxis.js";
19
- import { YAxis as he } from "../../node_modules/recharts/es6/cartesian/YAxis.js";
20
- import { LineChart as ge } from "../../node_modules/recharts/es6/chart/LineChart.js";
21
- import { BarChart as _e } from "../../node_modules/recharts/es6/chart/BarChart.js";
22
- import { DevPortalPaymentMethodType as u } from "../../generated/global-types.js";
23
- import { useMemo as d, useState as f } from "react";
24
- import { AlertCircle as ve, ArrowDownToLine as ye, Banknote as be, Building2 as xe, Check as p, CreditCard as m, DollarSign as h, Link2 as g, Loader2 as _, Send as Se, Wallet as Ce } from "lucide-react";
25
- import { useSearchParams as we } from "react-router";
26
- import { Fragment as Te, jsx as v, jsxs as y } from "react/jsx-runtime";
27
- import { EmphasisPanel as Ee, GlassCard as b } from "@burdenoff/fe-libs/ui";
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
- }, De = {
34
+ }, Oe = {
34
35
  "30d": 30,
35
36
  "90d": 90,
36
37
  "12m": 365
37
38
  }, C = () => {
38
- let C = t(), { activeOrgId: Oe, activePhysicalOrgId: ke, tenantId: Ae } = e(), w = ee() ? ke : Oe, [T, je] = f("90d"), [E, D] = f(!1), [O, k] = f(null), [Me] = oe(), [A, j] = f(!1), [M, N] = f(null), [Ne] = we(), P = d(() => /* @__PURE__ */ new Date(), []), [Pe, F] = f(!1), [Fe, I] = f(null), [L, R] = f(null), [Ie, z] = f(!1), [B, Le] = f(u.BankAccount), [Re, ze] = f(""), [V, Be] = f(""), [Ve, He] = f(""), [H, Ue] = f(""), [We, U] = f(null), { data: Ge, loading: Ke } = ie({
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
- }), [qe, { loading: Je }] = te(), [Ye, { loading: Xe }] = se(), { data: Ze, loading: W } = ne({
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": Ae ?? "" } }
45
- }), Qe = d(() => {
46
- let e = new Date(P);
47
- return e.setDate(e.getDate() - De[T]), e.toISOString();
48
- }, [P, T]), { data: G, loading: $e, error: et } = re({ fetchPolicy: "cache-and-network" }), { data: K, loading: tt, error: nt } = ae({
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: Qe,
53
- endDate: P.toISOString(),
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
- }), q = d(() => G?.myDeveloperOrganizations?.map((e) => e) ?? [], [G?.myDeveloperOrganizations]).find((e) => e.id === w), J = Ze?.getBillingAccountsByOrg ?? [], Y = J.find((e) => e.id === q?.billingAccountId) ?? null, rt = () => {
62
- N(q?.billingAccountId ?? J.find((e) => e.isDefault)?.id ?? J[0]?.id ?? null), j(!0);
63
- }, it = async () => {
64
- if (!(!w || !M)) {
65
- D(!0), k(null);
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 Me({
68
+ await Pe({
68
69
  variables: {
69
70
  organizationId: w,
70
- billingAccountId: M
71
+ billingAccountId: j
71
72
  },
72
73
  refetchQueries: ["GetMyOrganizations"]
73
- }), j(!1);
74
+ }), A(!1);
74
75
  } catch (e) {
75
- k(e instanceof Error ? e.message : "Failed to link billing account");
76
+ O(e instanceof Error ? e.message : "Failed to link billing account");
76
77
  } finally {
77
- D(!1);
78
+ Ne(!1);
78
79
  }
79
80
  }
80
- }, X = (Ge?.developerOrgPaymentMethods ?? []).filter((e) => e.isActive), at = () => {
81
- R((X.find((e) => e.isDefault) ?? X[0])?.id ?? null), z(X.length === 0), U(null), I(null), F(!0);
82
- }, ot = async () => {
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
- U(null);
85
- let e = B === u.Paypal, t = e ? { email: H } : {
86
- accountNumber: V,
87
- routingNumber: Ve
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 qe({
91
+ let n = (await Ye({
91
92
  variables: {
92
93
  organizationId: w,
93
94
  input: {
94
- type: B,
95
- name: Re || (e ? "PayPal" : "Bank Account"),
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 && R(n.id), z(!1), ze(""), Be(""), He(""), Ue("");
103
+ n && L(n.id), R(!1), Ve(""), He(""), We(""), Ge("");
103
104
  } catch (e) {
104
- U(e instanceof Error ? e.message : "Failed to add payout method");
105
+ H(e instanceof Error ? e.message : "Failed to add payout method");
105
106
  }
106
- }, st = async () => {
107
- if (!(!w || !L)) {
108
- I(null);
107
+ }, ct = async () => {
108
+ if (!(!w || !I)) {
109
+ F(null);
109
110
  try {
110
- await Ye({
111
+ await Ze({
111
112
  variables: {
112
113
  organizationId: w,
113
- paymentMethodId: L
114
+ paymentMethodId: I
114
115
  },
115
116
  refetchQueries: ["GetRevenueDashboardData"]
116
- }), F(!1);
117
+ }), P(!1);
117
118
  } catch (e) {
118
- I(e instanceof Error ? e.message : "Failed to request withdrawal");
119
+ F(e instanceof Error ? e.message : "Failed to request withdrawal");
119
120
  }
120
121
  }
121
- }, Z = K?.developerOrgRevenueSummary, Q = (Z?.pendingBalance ?? 0) >= x, ct = [...K?.developerOrgRevenueAnalytics ?? []].sort((e, t) => new Date(e.date).getTime() - new Date(t.date).getTime()), lt = K?.developerOrgSales?.edges?.map((e) => e.node) ?? [], ut = K?.developerOrgPayouts?.edges?.map((e) => e.node) ?? [], $ = ct.map((e) => ({
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 $e && !G ? /* @__PURE__ */ v(i, {
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
- }) : et ? /* @__PURE__ */ v(i, {
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(ve, {
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(et)
149
+ description: ce(nt)
149
150
  })
150
- }) : w ? nt ? /* @__PURE__ */ v(i, {
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(ve, {
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(nt)
160
+ description: ce(it)
160
161
  })
161
162
  }) : /* @__PURE__ */ y(i, {
162
163
  title: C("devportal.revenue.title", "Revenue"),
163
- description: q ? `${C("devportal.revenue.financialPerformanceFor", "Financial performance for")} ${q.name}` : C("devportal.revenue.shortDescription", "Track revenue, sales, and payouts"),
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) => je(e.target.value),
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
- q && !q.billingAccountId && /* @__PURE__ */ y("div", {
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
- O && /* @__PURE__ */ v("p", {
211
+ D && /* @__PURE__ */ v("p", {
211
212
  className: "mt-2 text-sm text-status-error-text",
212
- children: O
213
+ children: D
213
214
  })
214
215
  ]
215
216
  }),
216
217
  /* @__PURE__ */ y("button", {
217
218
  type: "button",
218
- onClick: rt,
219
- disabled: E || W,
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 || W ? /* @__PURE__ */ v(_, {
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
- A && J.length === 0 && /* @__PURE__ */ v("div", {
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
- A && J.length > 0 && /* @__PURE__ */ y("div", {
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: J.map((e) => /* @__PURE__ */ y("button", {
242
+ children: q.map((e) => /* @__PURE__ */ y("button", {
242
243
  type: "button",
243
- onClick: () => N(e.id ?? null),
244
- className: n("flex w-full items-center gap-3 rounded-md border px-3 py-2.5 text-sm text-left transition-colors", M === e.id ? "border-primary bg-action-primary-bg/5 text-text-primary" : "border-border-subtle hover:bg-accent text-text-primary"),
245
- children: [/* @__PURE__ */ v(p, {
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", M === e.id ? "opacity-100 text-primary" : "opacity-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
- j(!1), k(null);
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 || !M,
272
- onClick: () => void it(),
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
- q?.billingAccountId && /* @__PURE__ */ y("div", {
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(m, {
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: Y?.name ?? C("devportal.revenue.billingAccount", "Billing account")
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: Y ? `${Y.currency}${Y.email ? ` · ${Y.email}` : ""}` : q.billingAccountId
301
+ children: J ? `${J.currency}${J.email ? ` · ${J.email}` : ""}` : K.billingAccountId
301
302
  })]
302
303
  }),
303
- !A && /* @__PURE__ */ v("button", {
304
+ !k && /* @__PURE__ */ v("button", {
304
305
  type: "button",
305
- onClick: rt,
306
- disabled: W,
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
- }), A && J.length > 0 && /* @__PURE__ */ y("div", {
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: J.map((e) => /* @__PURE__ */ y("button", {
321
+ children: q.map((e) => /* @__PURE__ */ y("button", {
321
322
  type: "button",
322
- onClick: () => N(e.id ?? null),
323
- className: n("flex w-full items-center gap-3 rounded-md border px-3 py-2.5 text-sm text-left transition-colors", M === e.id ? "border-primary bg-action-primary-bg/5 text-text-primary" : "border-border-subtle hover:bg-accent text-text-primary"),
324
- children: [/* @__PURE__ */ v(p, {
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", M === e.id ? "opacity-100 text-primary" : "opacity-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
- j(!1), k(null);
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 || !M,
351
- onClick: () => void it(),
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
- O && /* @__PURE__ */ v("p", {
360
+ D && /* @__PURE__ */ v("p", {
360
361
  className: "text-xs text-status-error-text",
361
- children: O
362
+ children: D
362
363
  })
363
364
  ]
364
365
  })]
365
366
  }),
366
- q?.billingAccountId && Z && /* @__PURE__ */ y("div", {
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(be, {
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")}: $${Z.pendingBalance.toLocaleString()}` : `${C("devportal.revenue.belowMinimum", "Minimum payout is")} $${x} — ${C("devportal.revenue.youHave", "you have")} $${Z.pendingBalance.toLocaleString()} ${C("devportal.revenue.pending", "pending")}.`
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
- !Pe && /* @__PURE__ */ y("button", {
386
+ !Ie && /* @__PURE__ */ y("button", {
386
387
  type: "button",
387
- onClick: at,
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(Se, { size: 14 }), C("devportal.revenue.requestWithdrawal", "Request Withdrawal")]
392
+ children: [/* @__PURE__ */ v(Ce, { size: 14 }), C("devportal.revenue.requestWithdrawal", "Request Withdrawal")]
392
393
  })
393
394
  ]
394
- }), Pe && /* @__PURE__ */ v("div", {
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: Ke ? /* @__PURE__ */ y("div", {
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
- }) : Ie ? /* @__PURE__ */ y("div", {
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: () => Le(u.BankAccount),
414
- className: n("rounded-md border px-3 py-2 text-sm text-left transition-colors", B === u.BankAccount ? "border-primary bg-action-primary-bg/5" : "border-border-subtle hover:bg-accent"),
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: () => Le(u.Paypal),
419
- className: n("rounded-md border px-3 py-2 text-sm text-left transition-colors", B === u.Paypal ? "border-primary bg-action-primary-bg/5" : "border-border-subtle hover:bg-accent"),
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: Re,
426
- onChange: (e) => ze(e.target.value),
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
- B === u.Paypal ? /* @__PURE__ */ v("input", {
431
+ z === f.Paypal ? /* @__PURE__ */ v("input", {
431
432
  type: "email",
432
- value: H,
433
- onChange: (e) => Ue(e.target.value),
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(Te, { children: [/* @__PURE__ */ v("input", {
437
+ }) : /* @__PURE__ */ y(Ee, { children: [/* @__PURE__ */ v("input", {
437
438
  type: "text",
438
- value: V,
439
- onChange: (e) => Be(e.target.value),
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: Ve,
445
- onChange: (e) => He(e.target.value),
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
- We && /* @__PURE__ */ v("p", {
450
+ Ke && /* @__PURE__ */ v("p", {
450
451
  className: "text-xs text-status-error-text",
451
- children: We
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: () => F(!1),
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: Je || (B === u.Paypal ? !H : !V),
463
- onClick: () => void ot(),
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: [Je ? /* @__PURE__ */ v(_, {
466
+ children: [Xe ? /* @__PURE__ */ v(_, {
466
467
  size: 13,
467
468
  className: "animate-spin"
468
- }) : /* @__PURE__ */ v(p, { size: 13 }), C("devportal.revenue.saveMethod", "Save method")]
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: () => R(e.id),
484
- className: n("flex w-full items-center gap-3 rounded-md border px-3 py-2.5 text-sm text-left transition-colors", L === e.id ? "border-primary bg-action-primary-bg/5 text-text-primary" : "border-border-subtle hover:bg-accent text-text-primary"),
485
- children: [/* @__PURE__ */ v(p, {
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", L === e.id ? "opacity-100 text-primary" : "opacity-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: () => z(!0),
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
- Fe && /* @__PURE__ */ v("p", {
510
+ Le && /* @__PURE__ */ v("p", {
510
511
  className: "text-xs text-status-error-text",
511
- children: Fe
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: () => F(!1),
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: Xe || !L,
523
- onClick: () => void st(),
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
- Xe ? /* @__PURE__ */ v(_, {
527
+ Qe ? /* @__PURE__ */ v(_, {
527
528
  size: 13,
528
529
  className: "animate-spin"
529
- }) : /* @__PURE__ */ v(Se, { size: 13 }),
530
+ }) : /* @__PURE__ */ v(Ce, { size: 13 }),
530
531
  C("devportal.revenue.confirmWithdrawal", "Request"),
531
- " $",
532
- Z.pendingBalance.toLocaleString()
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
- tt && !Z ? /* @__PURE__ */ v("div", {
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(Te, { children: [
544
- /* @__PURE__ */ v(Ee, {
544
+ }) : Z ? /* @__PURE__ */ y(Ee, { children: [
545
+ /* @__PURE__ */ v(De, {
545
546
  className: "mb-6",
546
- children: /* @__PURE__ */ y(le, {
547
+ children: /* @__PURE__ */ y(ue, {
547
548
  columns: 4,
548
549
  children: [
549
- /* @__PURE__ */ v(s, {
550
+ /* @__PURE__ */ v(o, {
550
551
  title: C("devportal.revenue.grossRevenue", "Gross Revenue"),
551
- value: `$${Z.totalGrossRevenue.toLocaleString()}`,
552
- icon: /* @__PURE__ */ v(h, { size: 20 })
552
+ value: d(Z.totalGrossRevenue, Z.currency),
553
+ icon: /* @__PURE__ */ v(Se, { size: 20 })
553
554
  }),
554
- /* @__PURE__ */ v(s, {
555
+ /* @__PURE__ */ v(o, {
555
556
  title: C("devportal.revenue.netRevenue", "Net Revenue"),
556
- value: `$${Z.totalNetRevenue.toLocaleString()}`,
557
- icon: /* @__PURE__ */ v(Ce, { size: 20 })
557
+ value: d(Z.totalNetRevenue, Z.currency),
558
+ icon: /* @__PURE__ */ v(we, { size: 20 })
558
559
  }),
559
- /* @__PURE__ */ v(s, {
560
+ /* @__PURE__ */ v(o, {
560
561
  title: C("devportal.revenue.pendingBalance", "Pending Balance"),
561
- value: `$${Z.pendingBalance.toLocaleString()}`,
562
- icon: /* @__PURE__ */ v(m, { size: 20 }),
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(s, {
566
+ /* @__PURE__ */ v(o, {
566
567
  title: C("devportal.revenue.platformFees", "Platform Fees"),
567
- value: `$${Z.totalPlatformFees.toLocaleString()}`,
568
- icon: /* @__PURE__ */ v(ye, { size: 20 }),
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(ue, {
582
+ children: $.length > 0 ? /* @__PURE__ */ v(l, {
582
583
  width: "100%",
583
584
  height: 300,
584
- children: /* @__PURE__ */ y(ge, {
585
+ children: /* @__PURE__ */ y(he, {
585
586
  data: $,
586
587
  children: [
587
- /* @__PURE__ */ v(fe, {
588
+ /* @__PURE__ */ v(u, {
588
589
  strokeDasharray: "3 3",
589
590
  stroke: "var(--color-chart-grid)"
590
591
  }),
591
- /* @__PURE__ */ v(me, {
592
+ /* @__PURE__ */ v(pe, {
592
593
  dataKey: "date",
593
594
  stroke: "var(--color-chart-axis)",
594
595
  fontSize: 12
595
596
  }),
596
- /* @__PURE__ */ v(he, {
597
+ /* @__PURE__ */ v(me, {
597
598
  stroke: "var(--color-chart-axis)",
598
599
  fontSize: 12
599
600
  }),
600
- /* @__PURE__ */ v(l, { contentStyle: {
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(pe, {
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(pe, {
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__ */ y("p", {
654
+ children: [/* @__PURE__ */ v("p", {
654
655
  className: "font-semibold",
655
- children: ["$", e.grossRevenue.toLocaleString()]
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.toLocaleString()
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(xe, { size: 24 }),
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(ue, {
681
+ children: $.length > 0 ? /* @__PURE__ */ v(l, {
681
682
  width: "100%",
682
683
  height: 280,
683
- children: /* @__PURE__ */ y(_e, {
684
+ children: /* @__PURE__ */ y(ge, {
684
685
  data: $,
685
686
  children: [
686
- /* @__PURE__ */ v(fe, {
687
+ /* @__PURE__ */ v(u, {
687
688
  strokeDasharray: "3 3",
688
689
  stroke: "var(--color-chart-grid)"
689
690
  }),
690
- /* @__PURE__ */ v(me, {
691
+ /* @__PURE__ */ v(pe, {
691
692
  dataKey: "date",
692
693
  stroke: "var(--color-chart-axis)",
693
694
  fontSize: 12
694
695
  }),
695
- /* @__PURE__ */ v(he, {
696
+ /* @__PURE__ */ v(me, {
696
697
  stroke: "var(--color-chart-axis)",
697
698
  fontSize: 12
698
699
  }),
699
- /* @__PURE__ */ v(l, { contentStyle: {
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(c, {
733
- data: lt,
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) => `$${e.grossAmount.toLocaleString()}`
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) => `$${e.netAmount.toLocaleString()}`
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(o, {
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(c, {
764
- data: ut,
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) => `$${e.netAmount.toLocaleString()}`
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(o, {
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(h, { size: 32 }),
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(xe, {
802
+ icon: /* @__PURE__ */ v(be, {
802
803
  size: 32,
803
804
  className: "text-text-secondary"
804
805
  }),