From 0173b09d4586f107627effa4e6d4d88c8b10e637 Mon Sep 17 00:00:00 2001
From: Steven Tey
Date: Mon, 1 Sep 2025 15:17:44 -0700
Subject: [PATCH 1/2] Refactor currencyFormatter
---
.../(dashboard)/commissions/client.tsx | 6 +---
.../(dashboard)/payouts/client.tsx | 18 ++--------
.../(dashboard)/revenue/client.tsx | 6 +---
.../cron/payouts/balance-available/route.ts | 4 +--
.../embed/referrals/earnings-summary.tsx | 6 +---
.../app.dub.co/embed/referrals/earnings.tsx | 10 ++----
.../embed/referrals/leaderboard.tsx | 5 +--
.../[invoiceId]/domain-renewal-invoice.tsx | 25 +++----------
.../[invoiceId]/partner-payout-invoice.tsx | 36 +++++--------------
.../payouts/payout-details-sheet.tsx | 13 ++-----
.../(dashboard)/payouts/payout-stats.tsx | 9 +----
.../(dashboard)/payouts/payout-table.tsx | 5 +--
.../earnings/earnings-composite-chart.tsx | 10 ++----
.../(enrolled)/earnings/earnings-table.tsx | 10 ++----
.../[programSlug]/(enrolled)/page-client.tsx | 5 +--
.../[programSlug]/(enrolled)/payouts-card.tsx | 5 +--
.../invoices/[payoutId]/route.tsx | 5 +--
.../app/api/callback/plain/partner/route.ts | 4 +--
.../analytics/analytics-partners-table.tsx | 6 +---
.../analytics/analytics-timeseries-chart.tsx | 5 +--
.../bounty-submission-details-sheet.tsx | 5 +--
.../[bountyId]/bounty-submissions-table.tsx | 4 +--
.../program/commissions/commission-table.tsx | 10 ++----
.../(ee)/program/groups/groups-table.tsx | 18 ++--------
.../[slug]/(ee)/program/overview-chart.tsx | 5 +--
.../(ee)/program/partners/partners-table.tsx | 18 ++--------
.../program/payouts/payout-details-sheet.tsx | 11 ++----
.../(ee)/program/payouts/payout-stats.tsx | 16 +++------
.../(ee)/program/payouts/payout-table.tsx | 5 +--
.../settings/billing/invoices/page-client.tsx | 4 +--
.../lib/api/sales/construct-reward-amount.ts | 1 -
apps/web/lib/integrations/slack/transform.ts | 14 +++-----
apps/web/ui/analytics/events/events-table.tsx | 2 +-
.../ui/customers/customer-details-column.tsx | 3 +-
.../customer-partner-earnings-table.tsx | 14 ++------
.../web/ui/customers/customer-sales-table.tsx | 14 ++------
.../customer-table/customer-table.tsx | 2 +-
apps/web/ui/layout/sidebar/payout-stats.tsx | 6 ----
apps/web/ui/links/link-analytics-badge.tsx | 3 +-
.../link-builder/link-partner-details.tsx | 17 +++++----
.../partners/bounties/bounty-performance.tsx | 4 +--
.../mark-commission-duplicate-modal.tsx | 10 ++----
...ark-commission-fraud-or-canceled-modal.tsx | 10 ++----
.../overview/blocks/commissions-block.tsx | 5 +--
.../overview/blocks/countries-block.tsx | 7 +---
.../partners/overview/blocks/links-block.tsx | 7 +---
.../overview/blocks/partners-block.tsx | 7 +---
.../overview/blocks/traffic-sources-block.tsx | 7 +---
.../web/ui/partners/partner-details-sheet.tsx | 23 +++---------
apps/web/ui/partners/payout-invoice-sheet.tsx | 25 +++----------
.../program-reward-modifiers-tooltip.tsx | 5 +--
.../web/ui/partners/rewards/rewards-logic.tsx | 4 +--
.../src/templates/connect-payout-reminder.tsx | 5 +--
.../src/templates/new-sale-alert-partner.tsx | 10 ++----
.../new-sale-alert-program-owner.tsx | 14 ++------
.../templates/partner-payout-confirmed.tsx | 5 +--
.../src/templates/partner-payout-failed.tsx | 5 +--
.../templates/partner-payout-processed.tsx | 5 +--
.../partner-payout-withdrawal-completed.tsx | 2 --
.../partner-payout-withdrawal-initiated.tsx | 2 --
.../partner-paypal-payout-failed.tsx | 5 +--
.../src/templates/partner-program-summary.tsx | 10 ++----
.../src/templates/program-payout-reminder.tsx | 5 +--
.../utils/src/functions/currency-formatter.ts | 17 +++++----
64 files changed, 121 insertions(+), 443 deletions(-)
diff --git a/apps/web/app/(ee)/admin.dub.co/(dashboard)/commissions/client.tsx b/apps/web/app/(ee)/admin.dub.co/(dashboard)/commissions/client.tsx
index 4f0ca2ffa85..5fad4d5be5d 100644
--- a/apps/web/app/(ee)/admin.dub.co/(dashboard)/commissions/client.tsx
+++ b/apps/web/app/(ee)/admin.dub.co/(dashboard)/commissions/client.tsx
@@ -124,11 +124,7 @@ export default function CommissionsPageClient() {
id: "commissions",
header: "Commissions",
accessorKey: "commissions",
- cell: ({ row }) =>
- currencyFormatter(row.original.commissions / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ cell: ({ row }) => currencyFormatter(row.original.commissions / 100),
},
],
pagination,
diff --git a/apps/web/app/(ee)/admin.dub.co/(dashboard)/payouts/client.tsx b/apps/web/app/(ee)/admin.dub.co/(dashboard)/payouts/client.tsx
index 1c4caaf9131..0ac500373ba 100644
--- a/apps/web/app/(ee)/admin.dub.co/(dashboard)/payouts/client.tsx
+++ b/apps/web/app/(ee)/admin.dub.co/(dashboard)/payouts/client.tsx
@@ -151,31 +151,19 @@ export default function PayoutsPageClient() {
id: "amount",
header: "Amount",
accessorKey: "amount",
- cell: ({ row }) =>
- currencyFormatter(row.original.amount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ cell: ({ row }) => currencyFormatter(row.original.amount / 100),
},
{
id: "fee",
header: "Fee",
accessorKey: "fee",
- cell: ({ row }) =>
- currencyFormatter(row.original.fee / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ cell: ({ row }) => currencyFormatter(row.original.fee / 100),
},
{
id: "total",
header: "Total",
accessorKey: "total",
- cell: ({ row }) =>
- currencyFormatter(row.original.total / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ cell: ({ row }) => currencyFormatter(row.original.total / 100),
},
],
pagination,
diff --git a/apps/web/app/(ee)/admin.dub.co/(dashboard)/revenue/client.tsx b/apps/web/app/(ee)/admin.dub.co/(dashboard)/revenue/client.tsx
index d0fec957a04..7a287ed443b 100644
--- a/apps/web/app/(ee)/admin.dub.co/(dashboard)/revenue/client.tsx
+++ b/apps/web/app/(ee)/admin.dub.co/(dashboard)/revenue/client.tsx
@@ -89,11 +89,7 @@ export default function RevenuePageClient() {
id: "revenue",
header: "Affiliate Revenue",
accessorKey: "revenue",
- cell: ({ row }) =>
- currencyFormatter(row.original.saleAmount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ cell: ({ row }) => currencyFormatter(row.original.saleAmount / 100),
},
],
pagination,
diff --git a/apps/web/app/(ee)/api/cron/payouts/balance-available/route.ts b/apps/web/app/(ee)/api/cron/payouts/balance-available/route.ts
index 171558e8a8d..5c0e674f947 100644
--- a/apps/web/app/(ee)/api/cron/payouts/balance-available/route.ts
+++ b/apps/web/app/(ee)/api/cron/payouts/balance-available/route.ts
@@ -80,7 +80,7 @@ export async function POST(req: Request) {
if (availableBalance <= 0) {
return logAndRespond(
- `The available balance (${currencyFormatter(availableBalance / 100, { maximumFractionDigits: 2, currency })}) for partner ${partner.email} (${stripeAccount}) is less than or equal to 0 after subtracting pending payouts. Skipping...`,
+ `The available balance (${currencyFormatter(availableBalance / 100, { currency })}) for partner ${partner.email} (${stripeAccount}) is less than or equal to 0 after subtracting pending payouts. Skipping...`,
);
}
@@ -104,7 +104,7 @@ export async function POST(req: Request) {
);
console.log(
- `Stripe payout created for partner ${partner.email} (${stripeAccount}): ${stripePayout.id} (${currencyFormatter(stripePayout.amount / 100, { maximumFractionDigits: 2, currency: stripePayout.currency })})`,
+ `Stripe payout created for partner ${partner.email} (${stripeAccount}): ${stripePayout.id} (${currencyFormatter(stripePayout.amount / 100, { currency: stripePayout.currency })})`,
);
const transfers = await stripe.transfers.list({
diff --git a/apps/web/app/(ee)/app.dub.co/embed/referrals/earnings-summary.tsx b/apps/web/app/(ee)/app.dub.co/embed/referrals/earnings-summary.tsx
index fbbfb06c84b..8f28a339448 100644
--- a/apps/web/app/(ee)/app.dub.co/embed/referrals/earnings-summary.tsx
+++ b/apps/web/app/(ee)/app.dub.co/embed/referrals/earnings-summary.tsx
@@ -44,11 +44,7 @@ export function ReferralsEmbedEarningsSummary({
{label}
- {currencyFormatter(value / 100, {
- style: "currency",
- currency: "USD",
- maximumFractionDigits: 2,
- })}
+ {currencyFormatter(value / 100)}
))}
diff --git a/apps/web/app/(ee)/app.dub.co/embed/referrals/earnings.tsx b/apps/web/app/(ee)/app.dub.co/embed/referrals/earnings.tsx
index 0b5229255ae..b728744fd08 100644
--- a/apps/web/app/(ee)/app.dub.co/embed/referrals/earnings.tsx
+++ b/apps/web/app/(ee)/app.dub.co/embed/referrals/earnings.tsx
@@ -56,10 +56,7 @@ export function ReferralsEmbedEarnings({ salesCount }: { salesCount: number }) {
id: "amount",
header: "Amount",
cell: ({ row }) => {
- return currencyFormatter(row.original.amount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- });
+ return currencyFormatter(row.original.amount / 100);
},
},
{
@@ -67,10 +64,7 @@ export function ReferralsEmbedEarnings({ salesCount }: { salesCount: number }) {
header: "Earnings",
accessorKey: "earnings",
cell: ({ row }) => {
- return currencyFormatter(row.original.earnings / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- });
+ return currencyFormatter(row.original.earnings / 100);
},
},
{
diff --git a/apps/web/app/(ee)/app.dub.co/embed/referrals/leaderboard.tsx b/apps/web/app/(ee)/app.dub.co/embed/referrals/leaderboard.tsx
index 2e7d750651f..35887c82fc9 100644
--- a/apps/web/app/(ee)/app.dub.co/embed/referrals/leaderboard.tsx
+++ b/apps/web/app/(ee)/app.dub.co/embed/referrals/leaderboard.tsx
@@ -80,10 +80,7 @@ export function ReferralsEmbedLeaderboard() {
id: "totalCommissions",
header: "Earnings",
cell: ({ row }) => {
- return currencyFormatter(row.original.totalCommissions / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- });
+ return currencyFormatter(row.original.totalCommissions / 100);
},
},
],
diff --git a/apps/web/app/(ee)/app.dub.co/invoices/[invoiceId]/domain-renewal-invoice.tsx b/apps/web/app/(ee)/app.dub.co/invoices/[invoiceId]/domain-renewal-invoice.tsx
index 0a972f8b8ab..085dc8bd266 100644
--- a/apps/web/app/(ee)/app.dub.co/invoices/[invoiceId]/domain-renewal-invoice.tsx
+++ b/apps/web/app/(ee)/app.dub.co/invoices/[invoiceId]/domain-renewal-invoice.tsx
@@ -73,24 +73,15 @@ export async function DomainRenewalInvoice({
const invoiceSummaryDetails = [
{
label: "Invoice amount",
- value: currencyFormatter(invoice.amount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ value: currencyFormatter(invoice.amount / 100),
},
{
label: `Platform fees (${Math.round((invoice.fee / invoice.amount) * 100)}%)`,
- value: `${currencyFormatter(invoice.fee / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}`,
+ value: `${currencyFormatter(invoice.fee / 100)}`,
},
{
label: "Invoice total",
- value: currencyFormatter(invoice.total / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ value: currencyFormatter(invoice.total / 100),
},
];
@@ -212,10 +203,7 @@ export async function DomainRenewalInvoice({
Total
- {currencyFormatter(invoice.total / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}
+ {currencyFormatter(invoice.total / 100)}
@@ -244,10 +232,7 @@ export async function DomainRenewalInvoice({
>
{domain.slug}
- {currencyFormatter(domain.renewalFee / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}
+ {currencyFormatter(domain.renewalFee / 100)}
))}
diff --git a/apps/web/app/(ee)/app.dub.co/invoices/[invoiceId]/partner-payout-invoice.tsx b/apps/web/app/(ee)/app.dub.co/invoices/[invoiceId]/partner-payout-invoice.tsx
index 3bc4ac2b48b..d4b4f206f17 100644
--- a/apps/web/app/(ee)/app.dub.co/invoices/[invoiceId]/partner-payout-invoice.tsx
+++ b/apps/web/app/(ee)/app.dub.co/invoices/[invoiceId]/partner-payout-invoice.tsx
@@ -129,37 +129,23 @@ export async function PartnerPayoutInvoice({
const nonUsdTransactionDisplay =
chargeAmount && chargeCurrency && chargeCurrency !== "usd"
- ? ` (${currencyFormatter(
- chargeAmount / 100,
- {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- },
- chargeCurrency.toUpperCase(),
- )})`
+ ? ` (${currencyFormatter(chargeAmount / 100, {
+ currency: chargeCurrency.toUpperCase(),
+ })})`
: "";
const invoiceSummaryDetails = [
{
label: "Invoice amount",
- value: currencyFormatter(invoice.amount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ value: currencyFormatter(invoice.amount / 100),
},
{
label: `Platform fees (${Math.round((invoice.fee / invoice.amount) * 100)}%)`,
- value: `${currencyFormatter(invoice.fee / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}`,
+ value: `${currencyFormatter(invoice.fee / 100)}`,
},
{
label: "Invoice total",
- value: `${currencyFormatter(invoice.total / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}${nonUsdTransactionDisplay}`,
+ value: `${currencyFormatter(invoice.total / 100)}${nonUsdTransactionDisplay}`,
},
// if customer is in EU or AU, add VAT/GST reverse charge note
...(EU_CUSTOMER || AU_CUSTOMER
@@ -290,10 +276,7 @@ export async function PartnerPayoutInvoice({
Total
- {currencyFormatter(invoice.total / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}
+ {currencyFormatter(invoice.total / 100)}
@@ -353,10 +336,7 @@ export async function PartnerPayoutInvoice({
)}
- {currencyFormatter(payout.amount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}
+ {currencyFormatter(payout.amount / 100)}
))}
diff --git a/apps/web/app/(ee)/partners.dub.co/(dashboard)/payouts/payout-details-sheet.tsx b/apps/web/app/(ee)/partners.dub.co/(dashboard)/payouts/payout-details-sheet.tsx
index 5ac27847779..efa6c7cd655 100644
--- a/apps/web/app/(ee)/partners.dub.co/(dashboard)/payouts/payout-details-sheet.tsx
+++ b/apps/web/app/(ee)/partners.dub.co/(dashboard)/payouts/payout-details-sheet.tsx
@@ -83,12 +83,7 @@ function PayoutDetailsSheetContent({ payout }: PayoutDetailsSheetProps) {
Amount: (
-
- {currencyFormatter(payout.amount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}
-
+ {currencyFormatter(payout.amount / 100)}
{INVOICE_AVAILABLE_PAYOUT_STATUSES.includes(payout.status) && (
@@ -167,11 +162,7 @@ function PayoutDetailsSheetContent({ payout }: PayoutDetailsSheetProps) {
{
id: "earnings",
header: "Earnings",
- cell: ({ row }) =>
- currencyFormatter(row.original.earnings / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ cell: ({ row }) => currencyFormatter(row.original.earnings / 100),
},
],
columnPinning: { right: ["earnings"] },
diff --git a/apps/web/app/(ee)/partners.dub.co/(dashboard)/payouts/payout-stats.tsx b/apps/web/app/(ee)/partners.dub.co/(dashboard)/payouts/payout-stats.tsx
index 6b70d9c771f..a30f47043f6 100644
--- a/apps/web/app/(ee)/partners.dub.co/(dashboard)/payouts/payout-stats.tsx
+++ b/apps/web/app/(ee)/partners.dub.co/(dashboard)/payouts/payout-stats.tsx
@@ -79,14 +79,7 @@ function PayoutStatsCard({
{error ? (
"-"
) : (
- <>
- {amount > 0
- ? currencyFormatter(amount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })
- : "$0.00"}
- >
+ <>{amount > 0 ? currencyFormatter(amount / 100) : "$0.00"}>
)}
diff --git a/apps/web/app/(ee)/partners.dub.co/(dashboard)/payouts/payout-table.tsx b/apps/web/app/(ee)/partners.dub.co/(dashboard)/payouts/payout-table.tsx
index dd1c88f11f5..c8d853dab34 100644
--- a/apps/web/app/(ee)/partners.dub.co/(dashboard)/payouts/payout-table.tsx
+++ b/apps/web/app/(ee)/partners.dub.co/(dashboard)/payouts/payout-table.tsx
@@ -235,10 +235,7 @@ function AmountRowItem({
status: PayoutStatus;
minPayoutAmount: number;
}) {
- const display = currencyFormatter(amount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- });
+ const display = currencyFormatter(amount / 100);
if (status === PayoutStatus.pending && amount < minPayoutAmount) {
return (
diff --git a/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/earnings/earnings-composite-chart.tsx b/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/earnings/earnings-composite-chart.tsx
index f4675b37b2f..d47c690694f 100644
--- a/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/earnings/earnings-composite-chart.tsx
+++ b/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/earnings/earnings-composite-chart.tsx
@@ -179,10 +179,7 @@ export function EarningsCompositeChart() {
})}
- {currencyFormatter((d.values.total || 0) / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}
+ {currencyFormatter((d.values.total || 0) / 100)}
@@ -204,10 +201,7 @@ export function EarningsCompositeChart() {
- {currencyFormatter(valueAccessor(d), {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}
+ {currencyFormatter(valueAccessor(d))}
);
diff --git a/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/earnings/earnings-table.tsx b/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/earnings/earnings-table.tsx
index f70fc7bbd67..bfdae292df5 100644
--- a/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/earnings/earnings-table.tsx
+++ b/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/earnings/earnings-table.tsx
@@ -154,10 +154,7 @@ export function EarningsTablePartner({ limit }: { limit?: number }) {
accessorKey: "amount",
cell: ({ row }) =>
row.original.amount
- ? currencyFormatter(row.original.amount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })
+ ? currencyFormatter(row.original.amount / 100)
: "-",
},
{
@@ -167,10 +164,7 @@ export function EarningsTablePartner({ limit }: { limit?: number }) {
cell: ({ row }) => {
const commission = row.original;
- const earnings = currencyFormatter(commission.earnings / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- });
+ const earnings = currencyFormatter(commission.earnings / 100);
if (commission.description) {
const reason =
diff --git a/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/page-client.tsx b/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/page-client.tsx
index 88944f19f4f..a99393c7dbe 100644
--- a/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/page-client.tsx
+++ b/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/page-client.tsx
@@ -426,10 +426,7 @@ function BrandedChart({
{currency
- ? currencyFormatter(d.values.main, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })
+ ? currencyFormatter(d.values.main)
: nFormatter(d.values.main)}
diff --git a/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/payouts-card.tsx b/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/payouts-card.tsx
index a108f225457..69e36dcf7a2 100644
--- a/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/payouts-card.tsx
+++ b/apps/web/app/(ee)/partners.dub.co/(dashboard)/programs/[programSlug]/(enrolled)/payouts-card.tsx
@@ -64,10 +64,7 @@ export function PayoutsCard({ programId }: { programId?: string }) {
>
- {currencyFormatter(payout.amount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}
+ {currencyFormatter(payout.amount / 100)}
{formatPeriod(payout)}
diff --git a/apps/web/app/(ee)/partners.dub.co/invoices/[payoutId]/route.tsx b/apps/web/app/(ee)/partners.dub.co/invoices/[payoutId]/route.tsx
index 517b732036c..7aabb3d4ae5 100644
--- a/apps/web/app/(ee)/partners.dub.co/invoices/[payoutId]/route.tsx
+++ b/apps/web/app/(ee)/partners.dub.co/invoices/[payoutId]/route.tsx
@@ -115,10 +115,7 @@ export const GET = withPartnerProfile(async ({ partner, params }) => {
label: "Payout amount",
value: (
- {currencyFormatter(payout.amount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}{" "}
+ {currencyFormatter(payout.amount / 100)}{" "}
({payout._count.commissions}{" "}
{pluralize("commission", payout._count.commissions)})
diff --git a/apps/web/app/api/callback/plain/partner/route.ts b/apps/web/app/api/callback/plain/partner/route.ts
index f34b1822571..2e37e37213f 100644
--- a/apps/web/app/api/callback/plain/partner/route.ts
+++ b/apps/web/app/api/callback/plain/partner/route.ts
@@ -219,9 +219,7 @@ export async function POST(req: NextRequest) {
...partnerProfile.programs.flatMap(
({ program, createdAt, totalCommissions }) => [
plainUsageSection({
- usage: currencyFormatter(totalCommissions / 100, {
- maximumFractionDigits: 2,
- }),
+ usage: currencyFormatter(totalCommissions / 100),
label: program.name,
sublabel: `Partner since ${formatDate(createdAt)}`,
color: "GREEN",
diff --git a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/analytics/analytics-partners-table.tsx b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/analytics/analytics-partners-table.tsx
index a8871be89cf..0a52f835628 100644
--- a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/analytics/analytics-partners-table.tsx
+++ b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/analytics/analytics-partners-table.tsx
@@ -101,11 +101,7 @@ export function AnalyticsPartnersTable() {
{
id: "saleAmount",
header: "Revenue",
- accessorFn: (d) =>
- currencyFormatter(d.saleAmount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ accessorFn: (d) => currencyFormatter(d.saleAmount / 100),
},
]
: [
diff --git a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/analytics/analytics-timeseries-chart.tsx b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/analytics/analytics-timeseries-chart.tsx
index e5922c93008..294bf793ac5 100644
--- a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/analytics/analytics-timeseries-chart.tsx
+++ b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/analytics/analytics-timeseries-chart.tsx
@@ -54,10 +54,7 @@ export function AnalyticsTimeseriesChart({
{selectedTab === "sales" && saleUnit === "saleAmount"
- ? currencyFormatter(d.values.amount, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })
+ ? currencyFormatter(d.values.amount)
: nFormatter(d.values.amount)}
diff --git a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/bounties/[bountyId]/bounty-submission-details-sheet.tsx b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/bounties/[bountyId]/bounty-submission-details-sheet.tsx
index 542ce2e1bc4..bf690f40af5 100644
--- a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/bounties/[bountyId]/bounty-submission-details-sheet.tsx
+++ b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/bounties/[bountyId]/bounty-submission-details-sheet.tsx
@@ -142,10 +142,7 @@ function BountySubmissionDetailsSheetContent({
{
label: "Reward",
value: commission?.earnings
- ? currencyFormatter(commission.earnings / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })
+ ? currencyFormatter(commission.earnings / 100)
: "-",
},
].map((item, index) => (
diff --git a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/bounties/[bountyId]/bounty-submissions-table.tsx b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/bounties/[bountyId]/bounty-submissions-table.tsx
index 31a7938ab86..e018663c813 100644
--- a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/bounties/[bountyId]/bounty-submissions-table.tsx
+++ b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/bounties/[bountyId]/bounty-submissions-table.tsx
@@ -230,9 +230,7 @@ export function BountySubmissionsTable() {
}
const formattedValue = isCurrencyAttribute(attribute)
- ? currencyFormatter(value / 100, {
- maximumFractionDigits: 2,
- })
+ ? currencyFormatter(value / 100)
: nFormatter(value, { full: true });
const formattedTarget = isCurrencyAttribute(attribute)
diff --git a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/commissions/commission-table.tsx b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/commissions/commission-table.tsx
index f56e4c1b59e..670e806a158 100644
--- a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/commissions/commission-table.tsx
+++ b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/commissions/commission-table.tsx
@@ -142,10 +142,7 @@ const CommissionTableInner = memo(
header: "Amount",
accessorFn: (d) =>
d.type === "sale"
- ? currencyFormatter(d.amount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })
+ ? currencyFormatter(d.amount / 100)
: nFormatter(d.quantity),
},
{
@@ -154,10 +151,7 @@ const CommissionTableInner = memo(
cell: ({ row }) => {
const commission = row.original;
- const earnings = currencyFormatter(commission.earnings / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- });
+ const earnings = currencyFormatter(commission.earnings / 100);
if (commission.description) {
const reason =
diff --git a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/groups/groups-table.tsx b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/groups/groups-table.tsx
index 4f9a4b50326..bbbad00fb81 100644
--- a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/groups/groups-table.tsx
+++ b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/groups/groups-table.tsx
@@ -122,29 +122,17 @@ export function GroupsTable() {
{
id: "saleAmount",
header: "Revenue",
- accessorFn: (d) =>
- currencyFormatter(d.saleAmount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ accessorFn: (d) => currencyFormatter(d.saleAmount / 100),
},
{
id: "commissions",
header: "Commissions",
- accessorFn: (d) =>
- currencyFormatter(d.commissions / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ accessorFn: (d) => currencyFormatter(d.commissions / 100),
},
{
id: "netRevenue",
header: "Net Revenue",
- accessorFn: (d) =>
- currencyFormatter(d.netRevenue / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ accessorFn: (d) => currencyFormatter(d.netRevenue / 100),
},
{
id: "menu",
diff --git a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/overview-chart.tsx b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/overview-chart.tsx
index a90208f1cc3..928878d6cb0 100644
--- a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/overview-chart.tsx
+++ b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/overview-chart.tsx
@@ -156,10 +156,7 @@ export function OverviewChart() {
- {currencyFormatter(d.values.amount, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}
+ {currencyFormatter(d.values.amount)}
>
diff --git a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/partners-table.tsx b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/partners-table.tsx
index b5b3c94a10a..e54df721f23 100644
--- a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/partners-table.tsx
+++ b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/partners/partners-table.tsx
@@ -255,29 +255,17 @@ export function PartnersTable() {
{
id: "saleAmount",
header: "Revenue",
- accessorFn: (d) =>
- currencyFormatter(d.saleAmount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ accessorFn: (d) => currencyFormatter(d.saleAmount / 100),
},
{
id: "totalCommissions",
header: "Commissions",
- accessorFn: (d) =>
- currencyFormatter(d.totalCommissions / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ accessorFn: (d) => currencyFormatter(d.totalCommissions / 100),
},
{
id: "netRevenue",
header: "Net Revenue",
- accessorFn: (d) =>
- currencyFormatter(d.netRevenue / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ accessorFn: (d) => currencyFormatter(d.netRevenue / 100),
},
// Menu
{
diff --git a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/payouts/payout-details-sheet.tsx b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/payouts/payout-details-sheet.tsx
index c98ef2a3dcb..574f46e719f 100644
--- a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/payouts/payout-details-sheet.tsx
+++ b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/payouts/payout-details-sheet.tsx
@@ -83,10 +83,7 @@ function PayoutDetailsSheetContent({ payout }: PayoutDetailsSheetProps) {
),
- Total: currencyFormatter(payout.amount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ Total: currencyFormatter(payout.amount / 100),
...(payout.invoiceId && {
Invoice: (
@@ -165,11 +162,7 @@ function PayoutDetailsSheetContent({ payout }: PayoutDetailsSheetProps) {
minSize: 100,
size: 120,
maxSize: 150,
- cell: ({ row }) =>
- currencyFormatter(row.original.earnings / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ cell: ({ row }) => currencyFormatter(row.original.earnings / 100),
},
// Menu
{
diff --git a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/payouts/payout-stats.tsx b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/payouts/payout-stats.tsx
index 64b861ca31a..d400c8d5b3e 100644
--- a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/payouts/payout-stats.tsx
+++ b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/payouts/payout-stats.tsx
@@ -111,9 +111,7 @@ export function PayoutStats() {
{display}
- {currencyFormatter(amount / 100, {
- maximumFractionDigits: 2,
- })}
+ {currencyFormatter(amount / 100, {})}
))}
@@ -126,9 +124,7 @@ export function PayoutStats() {
eligiblePendingPayouts?.amount
? eligiblePendingPayouts.amount / 100
: 0,
- {
- maximumFractionDigits: 2,
- },
+ {},
) + " USD"}
@@ -177,9 +173,7 @@ export function PayoutStats() {
{display}
- {currencyFormatter(amount / 100, {
- maximumFractionDigits: 2,
- })}
+ {currencyFormatter(amount / 100, {})}
))}
@@ -188,9 +182,7 @@ export function PayoutStats() {
}
>
- {currencyFormatter(totalPaid / 100, {
- maximumFractionDigits: 2,
- }) + " USD"}
+ {currencyFormatter(totalPaid / 100, {}) + " USD"}
)}
diff --git a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/payouts/payout-table.tsx b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/payouts/payout-table.tsx
index 26337e21afb..57e012c36a6 100644
--- a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/payouts/payout-table.tsx
+++ b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/program/payouts/payout-table.tsx
@@ -309,10 +309,7 @@ function AmountRowItem({
}) {
const { slug } = useParams();
const { program } = useProgram();
- const display = currencyFormatter(amount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- });
+ const display = currencyFormatter(amount / 100);
const minPayoutAmount = program?.minPayoutAmount || 0;
diff --git a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/settings/billing/invoices/page-client.tsx b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/settings/billing/invoices/page-client.tsx
index 16d4b4901ca..f521a5f76d3 100644
--- a/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/settings/billing/invoices/page-client.tsx
+++ b/apps/web/app/app.dub.co/(dashboard)/[slug]/(ee)/settings/billing/invoices/page-client.tsx
@@ -113,9 +113,7 @@ const InvoiceCard = ({ invoice }: { invoice: InvoiceProps }) => {
Total
- {currencyFormatter(invoice.total / 100, {
- maximumFractionDigits: 2,
- })}
+ {currencyFormatter(invoice.total / 100)}
{invoice.status &&
(() => {
diff --git a/apps/web/lib/api/sales/construct-reward-amount.ts b/apps/web/lib/api/sales/construct-reward-amount.ts
index d7987dd42df..07248c1c6c6 100644
--- a/apps/web/lib/api/sales/construct-reward-amount.ts
+++ b/apps/web/lib/api/sales/construct-reward-amount.ts
@@ -61,6 +61,5 @@ const formatCurrency = (amount: number) =>
? undefined
: {
minimumFractionDigits: 2,
- maximumFractionDigits: 2,
},
);
diff --git a/apps/web/lib/integrations/slack/transform.ts b/apps/web/lib/integrations/slack/transform.ts
index b61680dd1d0..53ae0f12faf 100644
--- a/apps/web/lib/integrations/slack/transform.ts
+++ b/apps/web/lib/integrations/slack/transform.ts
@@ -247,15 +247,9 @@ const commissionCreatedTemplate = ({
}) => {
const { id, amount, earnings } = data;
- const formattedAmount = currencyFormatter(amount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- });
+ const formattedAmount = currencyFormatter(amount / 100);
- const formattedEarnings = currencyFormatter(earnings / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- });
+ const formattedEarnings = currencyFormatter(earnings / 100);
return {
blocks: [
@@ -288,7 +282,7 @@ const commissionCreatedTemplate = ({
};
// Minimal bounty templates (safe defaults)
-const bountyCreatedTemplate = ({ /* data */ }: { data: unknown }) => ({
+const bountyCreatedTemplate = ({} /* data */ : { data: unknown }) => ({
blocks: [
{
type: "section",
@@ -297,7 +291,7 @@ const bountyCreatedTemplate = ({ /* data */ }: { data: unknown }) => ({
],
});
-const bountyUpdatedTemplate = ({ /* data */ }: { data: unknown }) => ({
+const bountyUpdatedTemplate = ({} /* data */ : { data: unknown }) => ({
blocks: [
{
type: "section",
diff --git a/apps/web/ui/analytics/events/events-table.tsx b/apps/web/ui/analytics/events/events-table.tsx
index e1d2bbb0722..291e58c3f7a 100644
--- a/apps/web/ui/analytics/events/events-table.tsx
+++ b/apps/web/ui/analytics/events/events-table.tsx
@@ -211,7 +211,7 @@ export default function EventsTable({
{currencyFormatter(getValue() / 100, {
- maximumFractionDigits: undefined,
+ trailingZeroDisplay: "stripIfInteger",
})}
USD
diff --git a/apps/web/ui/customers/customer-details-column.tsx b/apps/web/ui/customers/customer-details-column.tsx
index be7505c7eb9..2ab9a2fb3ba 100644
--- a/apps/web/ui/customers/customer-details-column.tsx
+++ b/apps/web/ui/customers/customer-details-column.tsx
@@ -160,8 +160,7 @@ export function CustomerDetailsColumn({
{customerActivity?.ltv !== undefined
? currencyFormatter(customerActivity.ltv / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
+ trailingZeroDisplay: "stripIfInteger",
})
: "-"}
diff --git a/apps/web/ui/customers/customer-partner-earnings-table.tsx b/apps/web/ui/customers/customer-partner-earnings-table.tsx
index b974f601229..0c31688b28b 100644
--- a/apps/web/ui/customers/customer-partner-earnings-table.tsx
+++ b/apps/web/ui/customers/customer-partner-earnings-table.tsx
@@ -34,24 +34,14 @@ export function CustomerPartnerEarningsTable({
header: "Sale Amount",
accessorKey: "amount",
cell: ({ getValue }) => (
-
- {currencyFormatter(getValue() / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}
-
+
{currencyFormatter(getValue() / 100)}
),
},
{
header: "Commission",
accessorKey: "earnings",
cell: ({ getValue }) => (
-
- {currencyFormatter(getValue() / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}
-
+
{currencyFormatter(getValue() / 100)}
),
},
{
diff --git a/apps/web/ui/customers/customer-sales-table.tsx b/apps/web/ui/customers/customer-sales-table.tsx
index 61e2b262053..9d5ee0f4f23 100644
--- a/apps/web/ui/customers/customer-sales-table.tsx
+++ b/apps/web/ui/customers/customer-sales-table.tsx
@@ -51,12 +51,7 @@ export function CustomerSalesTable({
header: "Amount",
accessorFn: (d) => ("saleAmount" in d ? d.saleAmount : d.amount),
cell: ({ getValue }) => (
-
- {currencyFormatter(getValue() / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}
-
+
{currencyFormatter(getValue() / 100)}
),
},
...(sales?.length && "earnings" in sales?.[0]
@@ -65,12 +60,7 @@ export function CustomerSalesTable({
header: "Earnings",
accessorKey: "earnings",
cell: ({ getValue }) => (
-
- {currencyFormatter(getValue() / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}
-
+
{currencyFormatter(getValue() / 100)}
),
},
{
diff --git a/apps/web/ui/customers/customer-table/customer-table.tsx b/apps/web/ui/customers/customer-table/customer-table.tsx
index ecc700c0a4f..1b61f8b9e4d 100644
--- a/apps/web/ui/customers/customer-table/customer-table.tsx
+++ b/apps/web/ui/customers/customer-table/customer-table.tsx
@@ -161,7 +161,7 @@ export function CustomerTable() {
{currencyFormatter(getValue() / 100, {
- maximumFractionDigits: undefined,
+ trailingZeroDisplay: "stripIfInteger",
})}
USD
diff --git a/apps/web/ui/layout/sidebar/payout-stats.tsx b/apps/web/ui/layout/sidebar/payout-stats.tsx
index 35db2ec01e9..58d8225d8b4 100644
--- a/apps/web/ui/layout/sidebar/payout-stats.tsx
+++ b/apps/web/ui/layout/sidebar/payout-stats.tsx
@@ -67,9 +67,6 @@ export const PayoutStats = memo(() => {
payout.status === PayoutStatus.processing,
)
?.reduce((acc, p) => acc + p.amount, 0) || 0) / 100,
- {
- maximumFractionDigits: 2,
- },
)}
) : (
@@ -90,9 +87,6 @@ export const PayoutStats = memo(() => {
payout.status === PayoutStatus.completed,
)
?.reduce((acc, p) => acc + p.amount, 0) ?? 0) / 100,
- {
- maximumFractionDigits: 2,
- },
)}
) : (
diff --git a/apps/web/ui/links/link-analytics-badge.tsx b/apps/web/ui/links/link-analytics-badge.tsx
index f294a852925..baf2159c579 100644
--- a/apps/web/ui/links/link-analytics-badge.tsx
+++ b/apps/web/ui/links/link-analytics-badge.tsx
@@ -106,7 +106,7 @@ export function LinkAnalyticsBadge({
{tab === "sales"
? currencyFormatter(value / 100, {
- maximumFractionDigits: 2,
+ trailingZeroDisplay: "stripIfInteger",
})
: nFormatter(value, { full: value < INFINITY_NUMBER })}
{" "}
@@ -170,7 +170,6 @@ export function LinkAnalyticsBadge({
{tab === "sales"
? currencyFormatter(value / 100, {
- maximumFractionDigits: 2,
// @ts-ignore – trailingZeroDisplay is a valid option but TS is outdated
trailingZeroDisplay: "stripIfInteger",
})
diff --git a/apps/web/ui/links/link-builder/link-partner-details.tsx b/apps/web/ui/links/link-builder/link-partner-details.tsx
index 4013f5dba22..9c9a31e39ee 100644
--- a/apps/web/ui/links/link-builder/link-partner-details.tsx
+++ b/apps/web/ui/links/link-builder/link-partner-details.tsx
@@ -4,12 +4,6 @@ import { ArrowUpRight } from "@dub/ui/icons";
import { currencyFormatter, OG_AVATAR_URL } from "@dub/utils";
import Link from "next/link";
-const formatCurrency = (value: number) =>
- currencyFormatter(value / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- });
-
export function LinkPartnerDetails({
link,
partner,
@@ -60,14 +54,19 @@ export function LinkPartnerDetails({
{[
- ["Revenue", partner ? formatCurrency(partner.saleAmount) : undefined],
+ [
+ "Revenue",
+ partner ? currencyFormatter(partner.saleAmount / 100) : undefined,
+ ],
[
"Commissions",
- partner ? formatCurrency(partner.totalCommissions) : undefined,
+ partner
+ ? currencyFormatter(partner.totalCommissions / 100)
+ : undefined,
],
[
"Net revenue",
- partner ? formatCurrency(partner.netRevenue) : undefined,
+ partner ? currencyFormatter(partner.netRevenue / 100) : undefined,
],
].map(([label, value]) => (
diff --git a/apps/web/ui/partners/bounties/bounty-performance.tsx b/apps/web/ui/partners/bounties/bounty-performance.tsx
index 76a314f68cf..f560e913d0f 100644
--- a/apps/web/ui/partners/bounties/bounty-performance.tsx
+++ b/apps/web/ui/partners/bounties/bounty-performance.tsx
@@ -16,9 +16,7 @@ export function BountyPerformance({ bounty }: { bounty: PartnerBountyProps }) {
value === undefined
? "-"
: isCurrencyAttribute(attribute)
- ? currencyFormatter(value / 100, {
- maximumFractionDigits: 2,
- })
+ ? currencyFormatter(value / 100)
: nFormatter(value, { full: true });
const formattedTarget = isCurrencyAttribute(attribute)
diff --git a/apps/web/ui/partners/mark-commission-duplicate-modal.tsx b/apps/web/ui/partners/mark-commission-duplicate-modal.tsx
index a410a648d7b..542d3711dc7 100644
--- a/apps/web/ui/partners/mark-commission-duplicate-modal.tsx
+++ b/apps/web/ui/partners/mark-commission-duplicate-modal.tsx
@@ -79,16 +79,10 @@ function ModalInner({
Amount:
commission.type === "sale"
- ? currencyFormatter(commission.amount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })
+ ? currencyFormatter(commission.amount / 100)
: nFormatter(commission.quantity),
- Commission: currencyFormatter(commission.earnings / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ Commission: currencyFormatter(commission.earnings / 100),
Status: (
diff --git a/apps/web/ui/partners/mark-commission-fraud-or-canceled-modal.tsx b/apps/web/ui/partners/mark-commission-fraud-or-canceled-modal.tsx
index 7e28bbf8598..cab7a6ab528 100644
--- a/apps/web/ui/partners/mark-commission-fraud-or-canceled-modal.tsx
+++ b/apps/web/ui/partners/mark-commission-fraud-or-canceled-modal.tsx
@@ -86,16 +86,10 @@ function ModalInner({
Amount:
commission.type === "sale"
- ? currencyFormatter(commission.amount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })
+ ? currencyFormatter(commission.amount / 100)
: nFormatter(commission.quantity),
- Commission: currencyFormatter(commission.earnings / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ Commission: currencyFormatter(commission.earnings / 100),
Status: (
diff --git a/apps/web/ui/partners/overview/blocks/commissions-block.tsx b/apps/web/ui/partners/overview/blocks/commissions-block.tsx
index 80180e984a4..ca171f8e9b6 100644
--- a/apps/web/ui/partners/overview/blocks/commissions-block.tsx
+++ b/apps/web/ui/partners/overview/blocks/commissions-block.tsx
@@ -67,10 +67,7 @@ export function CommissionsBlock() {
- {currencyFormatter(earnings / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}
+ {currencyFormatter(earnings / 100)}
diff --git a/apps/web/ui/partners/overview/blocks/countries-block.tsx b/apps/web/ui/partners/overview/blocks/countries-block.tsx
index c2e8bc24403..3fac60d7338 100644
--- a/apps/web/ui/partners/overview/blocks/countries-block.tsx
+++ b/apps/web/ui/partners/overview/blocks/countries-block.tsx
@@ -80,12 +80,7 @@ export function CountriesBlock() {
-
- {currencyFormatter(saleAmount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}
-
+
{currencyFormatter(saleAmount / 100)}
))
)}
diff --git a/apps/web/ui/partners/overview/blocks/links-block.tsx b/apps/web/ui/partners/overview/blocks/links-block.tsx
index f08eb54ca3c..3cbf0bc3194 100644
--- a/apps/web/ui/partners/overview/blocks/links-block.tsx
+++ b/apps/web/ui/partners/overview/blocks/links-block.tsx
@@ -85,12 +85,7 @@ export function LinksBlock() {
-
- {currencyFormatter(saleAmount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}
-
+
{currencyFormatter(saleAmount / 100)}
))
)}
diff --git a/apps/web/ui/partners/overview/blocks/partners-block.tsx b/apps/web/ui/partners/overview/blocks/partners-block.tsx
index c1e87664ec0..d405e5e9920 100644
--- a/apps/web/ui/partners/overview/blocks/partners-block.tsx
+++ b/apps/web/ui/partners/overview/blocks/partners-block.tsx
@@ -75,12 +75,7 @@ export function PartnersBlock() {
-
- {currencyFormatter(partner.saleAmount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}
-
+ {currencyFormatter(partner.saleAmount / 100)}
))
)}
diff --git a/apps/web/ui/partners/overview/blocks/traffic-sources-block.tsx b/apps/web/ui/partners/overview/blocks/traffic-sources-block.tsx
index 8eb8a4dd8b8..cb947927920 100644
--- a/apps/web/ui/partners/overview/blocks/traffic-sources-block.tsx
+++ b/apps/web/ui/partners/overview/blocks/traffic-sources-block.tsx
@@ -88,12 +88,7 @@ export function TrafficSourcesBlock() {
-
- {currencyFormatter(saleAmount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}
-
+ {currencyFormatter(saleAmount / 100)}
))
)}
diff --git a/apps/web/ui/partners/partner-details-sheet.tsx b/apps/web/ui/partners/partner-details-sheet.tsx
index 5e12350311b..902641dd75c 100644
--- a/apps/web/ui/partners/partner-details-sheet.tsx
+++ b/apps/web/ui/partners/partner-details-sheet.tsx
@@ -154,26 +154,19 @@ function PartnerDetailsSheetContent({ partner }: PartnerDetailsSheetProps) {
: currencyFormatter(partner.saleAmount / 100, {
minimumFractionDigits:
partner.saleAmount % 1 === 0 ? 0 : 2,
- maximumFractionDigits: 2,
}),
],
[
"Commissions",
!partner.totalCommissions
? "-"
- : currencyFormatter(partner.totalCommissions / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ : currencyFormatter(partner.totalCommissions / 100),
],
[
"Net revenue",
!partner.netRevenue
? "-"
- : currencyFormatter(partner.netRevenue / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ : currencyFormatter(partner.netRevenue / 100),
],
].map(([label, value]) => (
@@ -276,11 +269,7 @@ function PartnerPayouts({ partner }: { partner: EnrolledPartnerProps }) {
{
id: "amount",
header: "Amount",
- accessorFn: (d) =>
- currencyFormatter(d.amount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- }),
+ accessorFn: (d) => currencyFormatter(d.amount / 100),
},
],
onRowClick: (row) => {
@@ -400,8 +389,7 @@ const PartnerLinks = ({ partner }: { partner: EnrolledPartnerProps }) => {
header: "Revenue",
accessorFn: (d) =>
currencyFormatter(d.saleAmount / 100, {
- minimumFractionDigits: 0,
- maximumFractionDigits: 0,
+ trailingZeroDisplay: "stripIfInteger",
}),
size: 1,
minSize: 1,
@@ -412,8 +400,7 @@ const PartnerLinks = ({ partner }: { partner: EnrolledPartnerProps }) => {
className="block w-full cursor-alias decoration-dotted hover:underline"
>
{currencyFormatter(row.original.saleAmount / 100, {
- minimumFractionDigits: 0,
- maximumFractionDigits: 0,
+ trailingZeroDisplay: "stripIfInteger",
})}
),
diff --git a/apps/web/ui/partners/payout-invoice-sheet.tsx b/apps/web/ui/partners/payout-invoice-sheet.tsx
index 1e83ee13944..ee6d635c60b 100644
--- a/apps/web/ui/partners/payout-invoice-sheet.tsx
+++ b/apps/web/ui/partners/payout-invoice-sheet.tsx
@@ -263,20 +263,14 @@ function PayoutInvoiceSheetContent() {
amount === undefined ? (
) : (
- currencyFormatter(amount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })
+ currencyFormatter(amount / 100)
),
},
{
key: "Fee",
value:
selectedPaymentMethod && fee !== undefined ? (
- currencyFormatter(fee / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })
+ currencyFormatter(fee / 100)
) : (
),
@@ -302,10 +296,7 @@ function PayoutInvoiceSheetContent() {
total === undefined ? (
) : (
- currencyFormatter(total / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })
+ currencyFormatter(total / 100)
),
},
];
@@ -349,10 +340,7 @@ function PayoutInvoiceSheetContent() {
excludedPayoutIds.includes(row.original.id) && "line-through",
)}
>
- {currencyFormatter(row.original.amount / 100, {
- minimumFractionDigits: 2,
- maximumFractionDigits: 2,
- })}
+ {currencyFormatter(row.original.amount / 100)}