<script setup lang="ts">
// Строка бейджей метаданных задачи (статус, проект, приоритет, время, дедлайн, бюджет, теги).
import { useI18n } from 'vue-i18n'
import type { Task } from '../api'
import {
budgetBadge,
deadlineLabel,
deadlineOverdue,
formatMinutes,
priorityLabel,
priorityVariant,
recurrenceLabel,
statusLabel,
statusVariant,
} from '../taskui'
defineProps<{ task: Task; hideProject?: boolean }>()
const { t } = useI18n()
</script>
<template>
<GnBadge :variant="statusVariant(task.status)">{{ statusLabel(task.status) }}</GnBadge>
<GnBadge v-if="task.project && !hideProject" variant="neutral"><i class="ph ph-folder" aria-hidden="true" />
{{ task.project.name }}
</GnBadge>
<GnBadge v-if="task.priority !== null" :variant="priorityVariant(task.priority)">
{{ priorityLabel(task.priority) }}
</GnBadge>
<GnBadge v-if="task.estimated_minutes" variant="neutral">
≈ {{ formatMinutes(task.estimated_minutes) }}
</GnBadge>
<GnBadge v-if="task.task_type === 'recurring'" variant="info"><i class="ph ph-repeat" aria-hidden="true" />
{{ recurrenceLabel(task) || t('taskui.recur.recurring') }}
</GnBadge>
<GnBadge
v-if="deadlineLabel(task)"
:variant="deadlineOverdue(task) ? 'error' : 'warning'"
><i class="ph ph-alarm" aria-hidden="true" />
{{ deadlineLabel(task) }}
</GnBadge>
<GnBadge v-if="task.budget_money !== null" variant="neutral">{{ budgetBadge(task) }}</GnBadge>
<GnBadge v-for="tag in task.tags" :key="tag.id" variant="neutral">{{ tag.name }}</GnBadge>
</template>