= {
+ to_do: 'ph-square',
+ in_progress: 'ph-circle-half',
+ done: 'ph-check-circle',
+ cancelled: 'ph-x-circle',
+ deferred: 'ph-pause-circle',
+}
+
+export function statusIcon(status: string): string {
+ return STATUS_ICONS[status] ?? 'ph-square'
+}
+
export function relevanceLabel(status: string): string {
return tOr(`taskui.relevance.${status}`, status)
}
@@ -212,15 +225,19 @@
// Подписи чернового предложения LLM (стек, страница задачи)
export function proposalItems(task: {
ai_proposal: import('./api').AiProposal | null
-}): string[] {
+}): { icon: string; label: string }[] {
const p = task.ai_proposal
if (!p) return []
- const items: string[] = []
- p.tags.forEach((tag) => items.push(tag))
+ const items: { icon: string; label: string }[] = []
+ p.tags.forEach((tag) => items.push({ icon: 'ph-tag', label: tag }))
if (p.project)
- items.push(p.new_project ? t('stack.proposalNewProject', { name: p.project }) : p.project)
- if (p.priority !== null) items.push(t('stack.proposalPriority', { n: p.priority }))
+ items.push({
+ icon: 'ph-folder',
+ label: p.new_project ? t('stack.proposalNewProject', { name: p.project }) : p.project,
+ })
+ if (p.priority !== null)
+ items.push({ icon: 'ph-flag', label: t('stack.proposalPriority', { n: p.priority }) })
if (p.estimated_minutes !== null && p.estimated_minutes !== undefined)
- items.push(`≈ ${formatMinutes(p.estimated_minutes)}`)
+ items.push({ icon: 'ph-timer', label: `≈ ${formatMinutes(p.estimated_minutes)}` })
return items
}
\ No newline at end of file
diff --git a/frontend/src/views/StackView.vue b/frontend/src/views/StackView.vue
index c964734..abbda31 100644
--- a/frontend/src/views/StackView.vue
+++ b/frontend/src/views/StackView.vue
@@ -193,7 +193,7 @@
{{ t('stack.proposal') }}
- {{ item }}
+ {{ item.label }}