| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import { DEFAULT_DISCOUNT_RATE } from '../constants'
- // ============================================================================
- // Wallet-specific Formatting Functions
- // ============================================================================
- /**
- * Format Creem price with currency symbol (USD/EUR)
- */
- export function formatCreemPrice(
- price: number,
- currency: 'USD' | 'EUR'
- ): string {
- const symbol = currency === 'EUR' ? '€' : '$'
- return `${symbol}${price.toFixed(2)}`
- }
- /**
- * Format large quota numbers with K/M suffix
- */
- export function formatQuotaShort(quota: number): string {
- if (quota >= 1000000) {
- return `${(quota / 1000000).toFixed(1)}M`
- }
- if (quota >= 1000) {
- return `${(quota / 1000).toFixed(1)}K`
- }
- return quota.toString()
- }
- /**
- * Format currency amount that is already in local currency.
- * This is used for payment amounts that have been calculated via priceRatio.
- */
- export function formatCurrency(amount: number | string): string {
- const numeric =
- typeof amount === 'number' ? amount : Number.parseFloat(String(amount))
- if (!Number.isFinite(numeric)) return '-'
- return new Intl.NumberFormat(undefined, {
- minimumFractionDigits: 0,
- maximumFractionDigits: Math.abs(numeric) >= 1 ? 2 : 4,
- }).format(numeric)
- }
- /**
- * Get discount label for display (e.g., "20% OFF")
- */
- export function getDiscountLabel(discount: number): string {
- if (discount >= DEFAULT_DISCOUNT_RATE) {
- return ''
- }
- const off = Math.round((1 - discount) * 100)
- return `${off}% OFF`
- }
- /**
- * Calculate pricing details for a preset amount
- */
- export function calculatePresetPricing(
- presetValue: number,
- priceRatio: number,
- discount: number,
- usdExchangeRate: number = 1
- ) {
- const originalPrice = presetValue * priceRatio
- const actualPrice = originalPrice * discount
- const savedAmount = originalPrice - actualPrice
- const hasDiscount = discount < 1.0
- const displayValue = presetValue * usdExchangeRate
- return {
- displayValue,
- originalPrice,
- actualPrice,
- savedAmount,
- hasDiscount,
- }
- }
|