- Add formatTimeAgo utility function for relative time display - Show "Published X ago" at bottom of each tool card using npmPublishedAt - Center CodeBlock copy button vertically for better alignment - Update Tool interface to include npmPublishedAt from API
35 lines
1.2 KiB
TypeScript
35 lines
1.2 KiB
TypeScript
export function formatDate(date: Date): string {
|
|
return new Intl.DateTimeFormat('en-US', {
|
|
year: 'numeric',
|
|
month: 'long',
|
|
day: 'numeric',
|
|
}).format(date);
|
|
}
|
|
|
|
export function formatNumber(num: number): string {
|
|
return new Intl.NumberFormat('en-US').format(num);
|
|
}
|
|
|
|
/**
|
|
* Format a date as a relative time string (e.g., "2 days ago", "3 months ago")
|
|
*/
|
|
export function formatTimeAgo(date: Date | string): string {
|
|
const now = new Date();
|
|
const then = typeof date === 'string' ? new Date(date) : date;
|
|
const diffMs = now.getTime() - then.getTime();
|
|
const diffSecs = Math.floor(diffMs / 1000);
|
|
const diffMins = Math.floor(diffSecs / 60);
|
|
const diffHours = Math.floor(diffMins / 60);
|
|
const diffDays = Math.floor(diffHours / 24);
|
|
const diffWeeks = Math.floor(diffDays / 7);
|
|
const diffMonths = Math.floor(diffDays / 30);
|
|
const diffYears = Math.floor(diffDays / 365);
|
|
|
|
if (diffSecs < 60) return 'just now';
|
|
if (diffMins < 60) return `${diffMins}m ago`;
|
|
if (diffHours < 24) return `${diffHours}h ago`;
|
|
if (diffDays < 7) return `${diffDays}d ago`;
|
|
if (diffWeeks < 4) return `${diffWeeks}w ago`;
|
|
if (diffMonths < 12) return `${diffMonths}mo ago`;
|
|
return `${diffYears}y ago`;
|
|
}
|