// Single source of truth for the download-event status enum -> display
// metadata (label/color/icon). Mirrors the backend ENUM
// (pending|running|ok|error|skipped). Used by the stat chips, the filter
// dropdown, and the event rows so they never drift apart. The value set is
// pinned against backend _ALLOWED_STATUSES by tests/test_fe_be_contract.py.

export const DOWNLOAD_STATUSES = [
  { value: 'pending', label: 'Queued',    color: 'grey',    icon: 'mdi-clock-outline' },
  { value: 'running', label: 'Running',   color: 'info',    icon: 'mdi-progress-clock' },
  { value: 'ok',      label: 'Completed', color: 'success', icon: 'mdi-check-circle' },
  { value: 'error',   label: 'Failed',    color: 'error',   icon: 'mdi-alert-circle' },
  { value: 'skipped', label: 'Skipped',   color: 'warning', icon: 'mdi-skip-next' },
]

const _BY_VALUE = Object.fromEntries(DOWNLOAD_STATUSES.map((s) => [s.value, s]))

export function downloadStatusMeta(value) {
  return _BY_VALUE[value] || { value, label: value, color: 'grey', icon: 'mdi-help-circle' }
}
export const downloadStatusLabel = (v) => downloadStatusMeta(v).label
export const downloadStatusColor = (v) => downloadStatusMeta(v).color
export const downloadStatusIcon = (v) => downloadStatusMeta(v).icon
