import { AedSymbol } from "./aed-symbol" import { cn } from "@/shared/lib/utils" type MoneyProps = { value?: number | string | null /** Prepended before the symbol (e.g. "–" or "+"). */ prefix?: string /** Hide the AED symbol — useful when the column header already conveys currency. */ hideSymbol?: boolean /** Locale override for number grouping. */ locale?: string /** Minimum/maximum fraction digits. Defaults to 2. */ fractionDigits?: number /** Fallback rendered when value is null/undefined/NaN. */ fallback?: string className?: string } function formatAmount(value: number | string | null | undefined, locale: string | undefined, digits: number): string | null { if (value == null || value === "") return null const num = typeof value === "string" ? Number(value) : value if (Number.isNaN(num)) return null return new Intl.NumberFormat(locale, { minimumFractionDigits: digits, maximumFractionDigits: digits, }).format(num) } export function Money({ value, prefix, hideSymbol = false, locale, fractionDigits = 2, fallback = "—", className, }: MoneyProps) { const formatted = formatAmount(value, locale, fractionDigits) if (formatted == null) return {fallback} return ( {prefix ? {prefix} : null} {!hideSymbol ? : null} {formatted} ) }