export function formatScheduledDate(value, options = {}) {
  if (!value) return 'Not scheduled'

  const date = new Date(value)
  if (Number.isNaN(date.getTime())) return 'Not scheduled'

  try {
    return date.toLocaleString(undefined, {
      month: 'short',
      day: 'numeric',
      ...(options.includeYear === false ? {} : { year: 'numeric' }),
      hour: 'numeric',
      minute: '2-digit',
      ...(options.timeZone ? { timeZone: options.timeZone } : {}),
    })
  } catch {
    return date.toLocaleString()
  }
}

export function formatReleaseCountdown(value, nowMs = Date.now()) {
  if (!value) return 'Not scheduled'

  const releaseDate = new Date(value)
  if (Number.isNaN(releaseDate.getTime())) return 'Not scheduled'

  const remainingMs = releaseDate.getTime() - nowMs

  if (remainingMs <= 0) {
    return 'Releasing now'
  }

  const totalSeconds = Math.floor(remainingMs / 1000)
  const days = Math.floor(totalSeconds / 86400)
  const hours = Math.floor((totalSeconds % 86400) / 3600)
  const minutes = Math.floor((totalSeconds % 3600) / 60)
  const seconds = totalSeconds % 60
  const parts = []

  if (days > 0) parts.push(`${days}d`)
  if (days > 0 || hours > 0) parts.push(`${hours}h`)
  if (days > 0 || hours > 0 || minutes > 0) parts.push(`${minutes}m`)
  if (days === 0) parts.push(`${seconds}s`)

  return `In ${parts.join(' ')}`
}