/** Утилиты форматирования для карточек канала (без React). */

export function formatTime(iso: string | null) {
  if (!iso) return '—'
  return new Date(iso).toLocaleString([], {
    day: '2-digit',
    month: '2-digit',
    hour: '2-digit',
    minute: '2-digit',
  })
}

/** Минуты суток → «HH:MM:00» — формат `TimeOnly` на сервере. */
export function toTime(minutes: number): string {
  const m = ((minutes % (24 * 60)) + 24 * 60) % (24 * 60)
  return `${String(Math.floor(m / 60)).padStart(2, '0')}:${String(m % 60).padStart(2, '0')}:00`
}

/**
 * Момент UTC во времени канала. Сетка задаётся в нём, поэтому предпросмотр показывается так же:
 * локальное время админа тут только запутало бы.
 */
export function channelTime(iso: string, utcOffsetMinutes: number): Date {
  return new Date(new Date(iso).getTime() + utcOffsetMinutes * 60_000)
}

/** «HH:MM» во времени канала. */
export function formatChannelTime(iso: string, utcOffsetMinutes: number): string {
  const d = channelTime(iso, utcOffsetMinutes)
  return `${String(d.getUTCHours()).padStart(2, '0')}:${String(d.getUTCMinutes()).padStart(2, '0')}`
}

/** ffmpeg-цвет (0xRRGGBB / имя) → CSS для превью-плашки. */
export function cssColor(value: string): string {
  const v = value.trim()
  if (v.startsWith('0x')) return `#${v.slice(2)}`
  return v
}
