Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | 4x 23x 23x 3x 20x 1x 21x 21x 3x 18x | /**
* Centralized currency formatting utility
* Used across all frontend components for consistent formatting
*/
export const currencyFormatter = {
/**
* Format currency amount with proper locale and currency symbol
*/
format: (
amount: string | number,
currency = 'USD',
locale = 'en-US'
): string => {
const num = typeof amount === 'string' ? parseFloat(amount) : amount;
if (isNaN(num)) {
return '$0.00';
}
return new Intl.NumberFormat(locale, {
style: 'currency',
currency,
minimumFractionDigits: 2,
maximumFractionDigits: 2,
}).format(num);
},
/**
* Format for loading states
*/
formatLoading: (): string => '---',
/**
* Format large amounts with abbreviations (e.g., 1.2M, 3.4K)
*/
formatCompact: (
amount: string | number,
currency = 'USD',
locale = 'en-US'
): string => {
const num = typeof amount === 'string' ? parseFloat(amount) : amount;
if (isNaN(num)) {
return '$0';
}
return new Intl.NumberFormat(locale, {
style: 'currency',
currency,
notation: 'compact',
maximumFractionDigits: 1,
}).format(num);
},
};
|