Newer
Older
gnexus-tasks / frontend / src / taskui.ts
// Общие помощники UI задач: подписи статусов, приоритеты, Markdown.

import DOMPurify from 'dompurify'
import { marked } from 'marked'

export const STATUS_LABELS: Record<string, string> = {
  to_do: 'К выполнению',
  in_progress: 'В работе',
  done: 'Завершено',
  cancelled: 'Отменено',
  deferred: 'Отложено',
}

export const STATUS_VARIANTS: Record<string, string> = {
  to_do: 'info',
  in_progress: 'accent',
  done: 'success',
  cancelled: 'error',
  deferred: 'warning',
}

export const RELEVANCE_LABELS: Record<string, string> = {
  active: 'Активен',
  paused: 'Приостановлен',
  archived: 'Закрыт',
}

export function statusLabel(status: string): string {
  return STATUS_LABELS[status] ?? status
}

export function statusVariant(status: string): string {
  return STATUS_VARIANTS[status] ?? 'neutral'
}

export function relevanceLabel(status: string): string {
  return RELEVANCE_LABELS[status] ?? status
}

export function renderMarkdown(text: string): string {
  return DOMPurify.sanitize(marked.parse(text, { async: false }))
}