evg_ultimate_team / frontend /src /utils /formatters.ts
clementpep's picture
fix: resolve all TypeScript build errors
30fd5f3
/**
* Utility functions for formatting data.
*/
import { format, formatDistanceToNow } from 'date-fns';
/**
* Format a date string to a readable format.
*/
export const formatDate = (dateString: string): string => {
try {
const date = new Date(dateString);
return format(date, 'MMM d, yyyy HH:mm');
} catch {
return dateString;
}
};
/**
* Format a date as relative time (e.g., "2 hours ago").
*/
export const formatRelativeTime = (dateString: string): string => {
try {
const date = new Date(dateString);
return formatDistanceToNow(date, { addSuffix: true });
} catch {
return dateString;
}
};
/**
* Format points with sign (+/-).
*/
export const formatPoints = (points: number): string => {
const sign = points >= 0 ? '+' : '';
return `${sign}${points}`;
};
/**
* Format rank with ordinal suffix (1st, 2nd, 3rd, etc.).
*/
export const formatRank = (rank: number): string => {
const suffixes = ['th', 'st', 'nd', 'rd'];
const v = rank % 100;
const suffix = suffixes[(v - 20) % 10] ?? suffixes[v] ?? suffixes[0] ?? 'th';
return rank + suffix;
};
/**
* Truncate text to a maximum length.
*/
export const truncate = (text: string, maxLength: number): string => {
if (text.length <= maxLength) return text;
return text.slice(0, maxLength) + '...';
};