Detalhe de issue/tarefa estilo Linear com histórico de atividades e sidebar de metadados.
O MockIssueView simula a visualização detalhada de uma issue estilo Linear, com título, descrição, histórico de atividades (comentários, ações do agente) e sidebar com metadados.
import { MockIssueView, demoIssueActivity } from '@/components/linear/mock-issue-view'
Prop Tipo Default Descrição issueIdstring— ID da issue (ex: "REC-847") titlestring— Título da issue descriptionstring— Descrição detalhada statusStatus— Status atual priorityPriority— Prioridade assigneestring— Responsável labelsIssueLabel[][]Labels da issue activityActivityItem[]— Histórico de atividades classNamestring— Classes adicionais
type Status = 'backlog' | 'todo' | 'in_progress' | 'done'
type Priority = 'urgent' | 'high' | 'medium' | 'low' | 'none'
interface IssueLabel {
text : string ;
color : string ;
}
interface ActivityItem {
id : string ;
type : 'created' | 'comment' | 'status' | 'agent' ;
author : string ;
authorColor ?: string ;
content : string ;
time : string ;
meta ?: string ; // Para 'created': origem da criação
}
< MockIssueView
issueId = "REC-847"
title = "Resolver divergência Ambev (23 caixas)"
description = "NF 8847 apresentou divergência de 23 caixas Brahma 300ml. Canhoto bloqueado até resolução."
status = "in_progress"
priority = "high"
assignee = "Patricia"
labels = {[
{ text: 'Recebimento' , color: '#E5484D' },
{ text: 'Urgente' , color: '#F5A623' },
]}
activity = {demoIssueActivity}
/>
Ícone de relógio
Texto: "{author} criou a tarefa via {meta}"
Meta indica origem (app, slack, email)
Avatar com inicial colorida
Nome e timestamp
Conteúdo do comentário
Avatar gradiente primary → roxo
Ícone de estrela
Conteúdo em card com fonte mono
Ideal para logs estruturados
export const demoIssueActivity : ActivityItem [] = [
{
id: '1' ,
type: 'created' ,
author: 'kodda' ,
content: '' ,
time: '3min atrás' ,
meta: 'app de conferência' ,
},
{
id: '2' ,
type: 'comment' ,
author: 'joao' ,
authorColor: '#E5484D' ,
content: 'Conferi a carga da Ambev agora. NF diz 150 caixas...' ,
time: '2 min atrás' ,
},
{
id: '3' ,
type: 'agent' ,
author: 'kodda AI' ,
content: `Ocorrência registrada automaticamente:
📋 NF 8847 — Ambev Distribuição
📦 Esperado: 150 cx Brahma 300ml
📦 Recebido: 127 cx
⚠️ Divergência: 23 caixas (R$ 1.840)
✓ Canhoto bloqueado até resolução
✓ Comercial notificado (Lucas)` ,
time: 'agora' ,
},
]
ID da issue em fonte mono
Ícone de estrela
Separador visual
Título grande
Descrição em muted
Lista de atividades
Status com indicador colorido
Prioridade com barras visuais
Avatar do responsável
Labels coloridas
Status Label Cor backlogBacklog Cinza todoA Fazer Cinza claro in_progressEm Progresso Amarelo doneConcluído Verde
Priority Label Cor urgentUrgente Vermelho highAlta Laranja mediumMédia Amarelo lowBaixa Azul noneSem prioridade Cinza
import { MockIssueView } from '@/components/linear/mock-issue-view'
const activity = [
{
id: '1' ,
type: 'created' as const ,
author: 'sistema' ,
content: '' ,
time: '1h atrás' ,
meta: 'alerta automático' ,
},
{
id: '2' ,
type: 'agent' as const ,
author: 'kodda AI' ,
content: `Análise concluída:
• Causa raiz identificada: erro de digitação na NF
• Ação recomendada: contato com fornecedor
• Prazo estimado: 2h` ,
time: '30min atrás' ,
},
]
export function Demo () {
return (
< MockIssueView
issueId = "BUG-123"
title = "Erro no processamento de NF"
description = "Sistema retornou erro ao processar NF 12345"
status = "in_progress"
priority = "high"
assignee = "Carlos"
labels = {[{ text: 'Bug' , color: '#E5484D' }]}
activity = {activity}
/>
)
}
< BentoCard
title = "Gestão de Ocorrências"
description = "Issues criadas automaticamente pelo agente"
colSpan = { 2 }
>
< MockIssueView
issueId = "REC-847"
title = "Divergência Ambev"
description = "..."
status = "in_progress"
priority = "high"
activity = {demoIssueActivity}
/>
</ BentoCard >