Timeline
Linha do tempo que lista eventos na ordem em que aconteceram, como as etapas de uma entrega ou o histórico de um chamado. Cada evento tem título, detalhes e horário.
Pedido feito
Pedido nº 48920, 3 itens, R$ 214,90.
Pagamento aprovado
Pix recebido.
Instalação
Configure o Camaleo uma vez (Instalação) e importe o que precisar. Ele renderiza no servidor.
import { Timeline, TimelineItem, TimelineTitle, TimelineDescription, TimelineTime } from "@camaleo/react";Anatomia
Uma lista ordenada. Cada item é uma linha com o indicador, o texto e o horário; a linha entre os indicadores é desenhada pelo CSS. Cada parte tem um data-slot que você pode usar no CSS.
Exemplos
Cada exemplo é um arquivo real que você pode copiar. Todos usam o skin, o modo e a marca escolhidos na barra acima.
Pedido feito
Pedido nº 48920, 3 itens, R$ 214,90.
Pagamento aprovado
Pix recebido.
Entregue
Recebido pela portaria.
Deploy iniciado
Versão 2.8.0, por Ana Ribeiro.
Testes aprovados
1.284 testes em 6 min 12 s.
Migração lenta
A tabela de pedidos levou 4 min, o limite é 2.
Health check falhou
3 de 8 pods responderam 503.
Rollback para a 2.7.4
O tráfego voltou para a versão anterior.
Tons
Use tone para destacar problemas num histórico longo. A cor é só visual, então o título ainda precisa dizer o que aconteceu.
Enviado
Entregue aos Correios, código QB 123 456 789 BR.
Saiu para entrega
O carteiro saiu do centro de distribuição de Campinas.
Entregue
Recebido pela portaria.
Ícones
Um ícone por tipo de evento ajuda a pessoa a passar o olho numa lista longa. Passe em icon, com aria-hidden: o título já diz a mesma coisa.
Pedido feito
Pedido nº 48920, 3 itens, R$ 214,90.
Entregue
Recebido pela portaria.
Horário legível por máquina
Passe dateTime junto com time quando um programa precisar da data exata, para ordenar ou levar a um calendário. A pessoa continua lendo a forma curta.
Pedido feito
Enviado
Saiu para entrega
O carteiro saiu do centro de distribuição de Campinas.
Etapa atualEntrega
Etapa atual
Num processo em andamento, coloque aria-current="step" no item atual e deixe as próximas etapas neutras. O badge mostra a etapa para todos, não só pela cor.
Marina Costa comentou
O cliente pediu para dividir o pagamento em duas vezes.
Links e avatares
Os children ficam embaixo da descrição, então um evento pode levar ao que ele mudou. Dê nome à lista com aria-label quando a página tiver mais de uma.
Mostrando 5 de 5 eventos
Deploy iniciado
Testes aprovados
Migração lenta
Health check falhou
Rollback para a 2.7.4
Filtrando eventos
Escolha Alertas. A lista mantém a ordem, e uma linha de status diz ao leitor de tela quantos eventos sobraram, já que a mudança acontece longe do foco.
Em contexto
A timeline costuma ficar num card ou num painel lateral, embaixo do registro a que pertence. Estas são partes inteiras de interface que você pode copiar, no skin que escolheu.
Pedido nº 48920
EntreguePedido feito
Pedido nº 48920, 3 itens, R$ 214,90.
Pagamento aprovado
Pix recebido.
Enviado
Entregue aos Correios, código QB 123 456 789 BR.
Saiu para entrega
O carteiro saiu do centro de distribuição de Campinas.
Entregue
Recebido pela portaria.
Chamado nº 3312: cobrança em dobro
ResolvidoChamado aberto
O cliente foi cobrado duas vezes pelo plano de outubro.
Atribuído a Sofia Vance
Equipe de cobrança, nível 2.
Estorno feito
R$ 49,00 devolvidos no cartão. O cliente foi avisado.
Novidades
Versão 1.4.0
Subcontas e relatórios fiscais automáticos.
Mais recenteVersão 1.3.2
Corrige a renovação do token depois de trocar a senha.
Versão 1.3.0
Exportação de relatórios em CSV e PDF.
Boas práticas
Pedido feito
Entregue
A pessoa precisa saber quando algo aconteceu, e o dateTime dá a mesma resposta aos programas.
Pedido feito
Entregue
Horários vagos não se comparam, então ninguém sabe quanto tempo uma etapa levou.
Pedido feito
Enviado
Entregue
Mais antigo primeiro conta um processo passo a passo; mais recente primeiro serve para feeds de atividade. Escolha uma por lista.
Enviado
Entregue
Pedido feito
A lista é um <ol>, então o leitor de tela anuncia cada posição, e uma ordem errada conta a história errada.
Props
aria-hidden), então o título precisa dizer o que aconteceu.TimelineTitle.TimelineDescription.<time>.time, como 2026-10-27T09:14.Timeline aceita os atributos de <ol>, e TimelineItem os de <li>, como aria-current. TimelineTitle e TimelineDescription aceitam os de <p>, e TimelineTime os de <time>, como dateTime.
Styling hooks
Mude o visual sem fazer fork: use os atributos ou defina os tokens num elemento pai, num skin ou na própria timeline.
Atributos
Tokens que ele lê
Cor
Forma e tamanho
Só deste componente
Acessibilidade
- A Timeline é um <ol> com role="list", então os leitores de tela anunciam quantos eventos há e a posição de cada um, também no Safari.
- O indicador tem aria-hidden: o tom e o ícone nunca são lidos. Diga o resultado no título, como "Health check falhou".
- A prop time gera um <time>; inclua dateTime quando a data exata importar.
- Marque a etapa atual de um processo em andamento com aria-current="step" no TimelineItem.