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)}