54 lines
1.4 KiB
TypeScript
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]);
|
|
};
|