sg-delivery-partner/app/utils/formatters.ts

54 lines
1.4 KiB
TypeScript

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