export function parseDurationToMs(duration: string): number { const match = duration.match(/^(\d+)([a-z]+)$/) if (!match) return 0 const value = Number.parseInt(match[1]) const unit = match[2] switch (unit) { case "h": return value * 60 * 60 * 1000 case "d": return value * 24 * 60 * 60 * 1000 case "w": return value * 7 * 24 * 60 * 60 * 1000 case "mo": return value * 30 * 24 * 60 * 60 * 1000 case "y": return value * 365 * 24 * 60 * 60 * 1000 default: return 0 } } export function humanRemaining(expiresAt: string): string { const now = new Date().getTime() const expires = new Date(expiresAt).getTime() const remaining = expires - now if (remaining <= 0) { return "Expired" } const days = Math.floor(remaining / (1000 * 60 * 60 * 24)) const hours = Math.floor((remaining % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)) const minutes = Math.floor((remaining % (1000 * 60 * 60)) / (1000 * 60)) const seconds = Math.floor((remaining % (1000 * 60)) / 1000) if (days > 0) { return `${days}d ${hours}h ${minutes}m ${seconds}s` } else if (hours > 0) { return `${hours}h ${minutes}m ${seconds}s` } else if (minutes > 0) { return `${minutes}m ${seconds}s` } else { return `${seconds}s` } }