export function formatResetCountdown(resetAtSeconds: number): string { const nowSeconds = Math.floor(Date.now() / 1000); const diffSeconds = resetAtSeconds - nowSeconds; if (diffSeconds <= 0) return "resetting now"; if (diffSeconds < 60) return "resets in <1m"; const totalHours = Math.floor(diffSeconds / 3600); const minutes = Math.floor((diffSeconds % 3600) / 60); if (totalHours >= 24) { const days = Math.floor(totalHours / 24); const hours = totalHours % 24; if (hours > 0) return `resets in ${days}d ${hours}h`; return `resets in ${days}d`; } if (totalHours > 0 && minutes > 0) return `resets in ${totalHours}h ${minutes}m`; if (totalHours > 0) return `resets in ${totalHours}h`; return `resets in ${minutes}m`; } export function parseTimeInput( value: string ): { hour: number; minute: number } | null { const match = value.trim().match(/^(\d{1,2}):(\d{2})$/); if (!match) return null; const hour = Number.parseInt(match[1], 10); const minute = Number.parseInt(match[2], 10); if (hour > 23 || minute > 59) return null; return { hour, minute }; } export function formatTime(hour: number, minute: number): string { return `${String(hour).padStart(2, "0")}:${String(minute).padStart(2, "0")}`; } export function formatLastUpdated(timestamp: number, now = Date.now()): string { const elapsedSeconds = Math.max(0, Math.floor((now - timestamp) / 1000)); if (elapsedSeconds < 60) return "Updated just now"; const minutes = Math.floor(elapsedSeconds / 60); if (minutes < 60) return `Updated ${minutes} min ago`; const hours = Math.floor(minutes / 60); if (hours < 24) return `Updated ${hours} hr${hours === 1 ? "" : "s"} ago`; const days = Math.floor(hours / 24); return `Updated ${days} day${days === 1 ? "" : "s"} ago`; } export function formatResetCountdownISO(isoString: string): string { const resetAtSeconds = Math.floor(new Date(isoString).getTime() / 1000); return formatResetCountdown(resetAtSeconds); } export function windowLabel(limitWindowSeconds: number): string { const hours = limitWindowSeconds / 3600; if (hours < 24) return `${Math.round(hours)}h`; const days = hours / 24; const wholeDays = Math.floor(days); const remainderHours = Math.round(hours - wholeDays * 24); if (remainderHours === 0) return `${wholeDays}d`; return `${wholeDays}d ${remainderHours}h`; }