Skip to Content
TemplatesCrisis detail

Crisis Detail Template

Página de detalhe de uma crise específica. Concentra todas as informações, métricas, timeline e ações relacionadas a um incidente.

Estrutura

┌─────────────────────────────────────────────┐ │ Header (flat, sem Card wrapper) │ │ (Anel) Nome da Crise [Status] [Alerta] │ │ Criado em · X dias · Atualizado │ │ [Equipe (av.)] │ ├─────────────────────────────────────────────┤ │ Tabs (underline, border-b-2 border-brand) │ │ Resumo | Timeline | Cobertura │ │ │ │ [Tab Content: Resumo] │ │ ┌──────────────────┐ ┌──────────────────┐ │ │ │ KPI strip │ │ Próxima Ação │ │ │ │ label + chip Δ │ │ [borda colorida │ │ │ │ valor grande │ │ por prioridade] │ │ │ └──────────────────┘ └──────────────────┘ │ │ ┌──────────────────┐ ┌──────────────────┐ │ │ │ Fontes/Mídia │ │ Ações Rápidas │ │ │ │ - Twitter: 342 │ │ [Dispatch] │ │ │ │ - News: 89 │ │ [Export PDF] │ │ │ │ - Reddit: 156 │ │ [Archive] │ │ │ └──────────────────┘ └──────────────────┘ │ └─────────────────────────────────────────────┘

Componentes Utilizados

SeçãoComponentes
Headeranel de score (conic-gradient), RiskChangeHighlight, MonitoringStatusBadge, AvatarGroup
Tabsunderline com border-b-2 border-brand (não Tabs shadcn padrão)
Scoreanel circular (conic-gradient + máscara interna), não usa Progress/SVG
KPI stripDeltaChip inline ao label
Próxima Açãocard com borda esquerda colorida por prioridade
TimelineAccordion, Avatar, Separator
FontesCard, MetricCard compacto
AçõesDropdownMenu, Button

Padrão de Score

O score de crise (getAttentionScore() em lib/attention-score.ts) usa a mesma escala canônica de risco documentada em patterns/risk-levels e nos tokens --risk-stable/monitor/attention/high/critical-* do app. Não há mais divergência entre label e cor — ambos vêm da mesma banda.

Bandas (fonte única — AttentionScore e --risk-*)

RangeLabelToken de cor
0–19Estável--risk-stable-text
20–39Monitor--risk-monitor-text
40–59Atenção--risk-attention-text
60–79Alto--risk-high-text
80–100Crítico--risk-critical-text

Histórico: até jul/2026, attention-score.ts usava labels e faixas próprias (Ruído/Atenção/Alerta/Crise/Crítico, 0-20/21-40/41-60/61-80/81-100) com classes Tailwind hardcoded, divergentes da escala canônica. Corrigido para eliminar a fonte dupla de verdade — ver Issue #272 do Crisis-Monitor.

Estrutura visual — anel circular via conic-gradient, não um bloco retangular nem SVG:

<div className="relative grid size-[92px] shrink-0 place-items-center rounded-full" style={{ background: `conic-gradient(${ringColorVar} ${score}%, var(--border) 0)` }} > <div className="absolute inset-[6px] rounded-full bg-card shadow-[var(--shadow-lg)]" /> <div className="relative flex flex-col items-center leading-none"> <RiskChangeHighlight value={score} className={`font-mono text-[26px] font-semibold ${scoreTextClass}`}> {score} </RiskChangeHighlight> <span className="mt-0.5 font-mono text-[10px] text-fg-subtle">/100</span> <span className={`mt-1 text-[9px] font-semibold uppercase tracking-[0.14em] ${scoreTextClass}`}> {band.label} </span> </div> </div>

ringColorVar e scoreTextClass usam os mesmos 5 limiares (19/39/59/79/100) e os mesmos tokens --risk-*-text da tabela acima — cor do anel, cor do número e label sempre coerentes entre si.

Números de score usam .mono ou [data-numeric] para manter numerais tabulares. RiskChangeHighlight anima o valor quando o score muda entre renders.

Acento de Prioridade (card “Próxima Ação Recomendada”)

Prioridade de ação usa tokens delta, não tokens de risco — é uma escala independente da do score:

PrioridadeToken
critica--delta-error-*
alta--delta-warn-*
media--delta-info-*

Implementação em response-playbook.tsx. Nunca usar cor literal (hex/hsl) para prioridade.

KPI Strip

Cada métrica exibe o chip de variação (DeltaChip) inline ao label, na mesma linha — não abaixo do valor:

<div className="flex flex-wrap items-center gap-x-1 gap-y-0.5"> <span className="text-xs text-muted-foreground">{label}</span> <DeltaChip value={delta} tone={trendToneMap[trendDirection]} size="xs" /> </div> <span className="text-2xl font-semibold tabular-nums leading-none">{value}</span>

tone é derivado de trendDirection: up → success, down → error, flat → neutral. Implementação em crisis-overview.tsx.

Estado Vazio

Quando uma crise não tem dados de timeline:

<EmptyState icon={<Search className="size-8" />} title="Nenhum evento registrado" description="Os eventos aparecerão aqui conforme a crise evolui." />
Last updated on