export const formatCurrency = ( amount: number | undefined, currency: string = '₹', ): string => { return `${currency}${amount?.toLocaleString('en-IN', { minimumFractionDigits: 0, maximumFractionDigits: 2, })}`; }; export const formatDistance = (km: number): string => { if (km < 1) return `${Math.round(km * 1000)} m`; return `${km?.toFixed(1)} km`; }; export const formatDuration = (seconds: number): string => { if (seconds < 60) return `${seconds} sec`; const mins = Math.floor(seconds / 60); if (mins < 60) return `${mins} min`; const hrs = Math.floor(mins / 60); const remMins = mins % 60; return remMins > 0 ? `${hrs}h ${remMins}m` : `${hrs}h`; }; export const formatDate = (isoString: string): string => { const date = new Date(isoString); return date.toLocaleString('en-IN', { day: '2-digit', month: 'short', hour: '2-digit', minute: '2-digit', hour12: true, }); }; export const formatPhoneNumber = (phone: string): string => { const cleaned = phone.replace(/\D/g, ''); if (cleaned.length === 10) { return `+91 ${cleaned.slice(0, 5)} ${cleaned.slice(5)}`; } return phone; }; export const maskPhone = (phone: string): string => { const cleaned = phone.replace(/\D/g, '').slice(-10); return `+91 ${cleaned.slice(0, 5)} XXXXX`; }; export const formatOrdinal = (n: number): string => { const s = ['th', 'st', 'nd', 'rd']; const v = n % 100; return n + (s[(v - 20) % 10] || s[v] || s[0]); };