Timeline Item
Em andamentoUm marco de linha do tempo: ano, marcador e linha que liga ao próximo, título e descrição. O marco atual ganha marcador cheio e "momento atual" para quem ouve. No celular, o ano sobe para cima do título.
- Função
- Conteúdo
- Também chamado de
- linha do tempo, marco, histórico, timeline
- Mora em
- app/components/molecules/TimelineItem.tsx
- Última mudança
- 2026-09-29
Prévia
A peça ao vivo, vinda da ficha, na largura escolhida. Em larguras fixas, ela roda num quadro do tamanho de uma tela de verdade.
Na largura da página: 0px
Variantes na ficha
Lidas da ficha no build, na ordem do palco. Cada uma abre sozinha, sem o styleguide em volta — é o endereço que o palco carrega.
Quando usar
Em sequência, para contar uma história em datas — a trajetória da instituição, as etapas de um processo seletivo.
Faça
- Monte a linha pelo contêiner
Timeline(E72): ele faz a<ol>com cada item como<li>, tira a linha do último e marca oatualpelo índice ou pelo ano. - Avulso, use
as="li"dentro de uma<ol>e marqueisLastno último — é o que oTimelinefaz sozinho. - Use
atualem um marco só. - Acerte o nível do título com
tituloComo(h3por padrão).
Evite
- Marcos sem ordem cronológica.
- Mais de um
atual.
Quando não usar. Para as próximas turmas com datas e vagas, use o TurmaCard. Para passos numerados sem data, uma lista ordenada.
Anatomia
As partes, na ordem em que o olho — e o teclado — passam.
- Ano — À esquerda no computador (24px, `font-black`, vermelho); acima do título no celular.
- Trilho — Marcador redondo de 14px e a linha até o próximo — decorativos.
- Título — `h3` por padrão, `text-lg` em negrito.
- Descrição — Texto cinza, até a largura de leitura.
Estados
Os estados que a peça tem no código, e o que muda em cada um.
| Estado | O que muda |
|---|---|
| Padrão | Marcador vazio (fundo --card) com borda vermelha. |
| Atual | atual: marcador cheio com contorno afastado, "— momento atual" escondido no título e data-atual. |
| Último | isLast: sem a linha e sem o espaço de baixo. |
Comportamento
| Situação | O que acontece |
|---|---|
| Abaixo de 768px | O ano da coluna esquerda some e aparece acima do título — um só é exibido por vez. |
Relacionados
Como usar no código
A importação e o menor uso, lidos do arquivo. O … marca as props obrigatórias.
import { TimelineItem } from '@/app/components/molecules/TimelineItem';
<TimelineItem year={…} title={…} description={…}>…</TimelineItem>Propriedades
Lidas do código da peça no build — não escritas à mão.
| Prop | Tipo | Padrão | Obrigatória | Descrição |
|---|---|---|---|---|
year | string | — | sim | — |
title | string | — | sim | — |
description | React.ReactNode | — | sim | — |
isLast | boolean | false | não | O último item não desenha a linha para baixo. |
atual | boolean | false | não | O momento presente da linha do tempo. |
as | ElementType | 'div' | não | Elemento raiz. Use li dentro de uma <ol>. |
tituloComo | ElementType | 'h3' | não | Nível do título. Padrão h3; acerte conforme a página. |
Aceita também: Omit<React.HTMLAttributes<HTMLElement>, 'title'>.
Medidas
| Parte | Valor | Classe |
|---|---|---|
| Marcador | 14px | size-3.5 |
| Coluna do ano | 112px a partir de 768px | md:grid-cols-[7rem_1.5rem_1fr] |
Tokens de cor
Os tokens semânticos que o código da peça usa, com o valor de hoje em app/globals.css.
| Token | Valor | Usado como |
|---|---|---|
--primary | #D42B2B | bg-primaryborder-primaryoutline-primarytext-primary |
--border | #E5E5E5 | bg-border |
--card | #FFFFFF | bg-card |
--foreground | #1A1A1A | text-ink |
--muted-foreground | #595959 | text-muted-foreground |
Leitor de tela
O que é anunciado, e por quê.
- O ano vem num
<time>(E72): com quatro dígitos, odateTimeleva o ano, e a data fica legível por máquina. - Pelo
Timeline, a linha é uma lista ordenada comli— sem o contêiner, esqueceras="li"davadivdentro deol, que o axe acusa (conferido no teste da ficha). - O trilho é
aria-hidden: ano e título estão em texto. - O marco atual diz "momento atual" no título, e não só pelo marcador cheio.
O que sustenta o estado
Esta peça usa estatico. O estado dela é o de quem já foi ouvido com leitor de tela nesses padrões — e não uma passada sobre esta peça em específico.
Falta ouvir: estatico — ver docs/a11y-screen-reader-checklist.md.
Status e recursos
| Tipo | Recurso | Status |
|---|---|---|
| Código | app/components/molecules/TimelineItem.tsx | Disponível |
| Ficha | Storybook (abre em outra aba) | Disponível |
| Teste de acessibilidade | axe em npm run test | No gate de todo commit |
| Leitor de tela | Passada da E33 | Falta ouvir |
| Design | Figma | Desativado até a Fase 2 |
Histórico
Os últimos commits que tocaram o arquivo, lidos do git no build.
fdd10ff2026-09-29ESTADO: E109 concluida, roteiro final fechado; proximo o merge na main
O histórico completo está no GitHub (abre em outra aba).