Uma lista de encontros em que a data é a primeira coisa que o olho lê: o dia em corpo de display, o mês e o dia da semana embaixo. Ao lado, o formato (presencial, online), o título, uma linha e o horário; no fim da linha, o botão de inscrição. E o convite expira sozinho: durante o evento aparece "Acontecendo agora"; depois dele, o botão sai e no lugar entra "Encerrado" — ou o link da gravação.
O problema que ela resolve: evento de ontem com "Inscreva-se" é o convite falso mais comum em site de empresa. Ninguém volta à home para tirar o card depois do evento, e a página passa semanas convidando para uma coisa que já aconteceu — o que diz à pessoa, com precisão, que ninguém cuida daquele site.
Quando usar
- Página de eventos ou dobra de agenda na home, com dois a seis encontros.
- Eventos com hora marcada — palestra, webinar, café com os sócios, evento de lançamento.
- Na home, com a variação só os próximos: os passados somem em vez de ficarem marcados.
Quando não usar
- Artigo, carta, relatório — não têm início e fim. Use
listas/grade-artigos. - Um evento só, que é o assunto da página. Aí a dobra é um hero de evento, não uma agenda.
- Agendamento de reunião individual — é
conversao/agendamento-reuniao, em que a pessoa escolhe o horário.
Padrão editorial
| Slot | Regra |
|---|---|
| Título da seção | 2 a 6 palavras, o gênero: Agenda, Encontros e eventos |
| Apoio | 8 a 30 palavras: para quem, quanto custa, se a vaga é limitada. Opcional |
| Formato | Online ou Presencial · Cidade, sempre nesse formato |
| Título do evento | 3 a 12 palavras, o assunto — nunca "Webinar" |
| Descrição | 6 a 24 palavras, do que se fala e para quem. Opcional |
| Horário | "19h às 21h30". Tem de bater com data-agn-inicio e data-agn-fim |
| Botão | 1 a 3 palavras, o mesmo em toda a lista |
O que mantém a peça: ordem cronológica, do mais próximo para o mais distante. Um encerrado marcado fica no fim; com a variação só os próximos, ele some.
Especificação dos assets
Nenhum. A data é a peça gráfica.
Como usar
<link rel="stylesheet" href="componentes/listas/agenda-eventos/estilo.css">
<script src="componentes/listas/agenda-eventos/script.js"></script>
Cada evento declara início e fim com fuso:
<li class="agn-item" data-agn-inicio="2026-10-14T19:00:00-03:00" data-agn-fim="2026-10-14T21:30:00-03:00">
Ganchos
| Gancho | Papel |
|---|---|
[data-agn] |
a raiz que o script procura |
data-agn-inicio / data-agn-fim |
ISO 8601 com fuso, por evento. É deles que o estado sai |
data-agn-gravacao |
opcional: o link que aparece no lugar do botão depois do fim |
data-agn-passados="ocultar" |
opcional, na raiz: esconde os encerrados |
.agn-item[data-estado] |
aberto, agora ou encerrado, escrito pelo script |
[data-agn-vazio] |
a mensagem que aparece quando nenhum evento sobra |
Variações
- Só os próximos —
data-agn-passados="ocultar"na raiz. É a da home. - Sobre papel —
.sec-paperno lugar de.sec-dark.
Compliance
- Sem JavaScript o componente não sabe a hora, e a lista aparece como foi escrita, com todos os botões. A responsabilidade de tirar o evento passado volta a quem publica. O script é a guarda, não a desculpa: agenda que depende só dele para não mentir é agenda sem dono.
- Evento de assessoria com "resultado" no título ("Como ganhar 20% ao ano") é promessa de rentabilidade, e o título é onde ela é lida. O padrão editorial pede o assunto, não a promessa.
Gotchas
-
O fuso vai na data, sempre.
2026-10-14T19:00:00sem fuso é lido na hora local de quem olha: para alguém em Lisboa, o evento de São Paulo terminaria quatro horas antes. Com-03:00, o instante é um só no mundo inteiro. -
O botão sai do DOM, não só da vista. Escondido por CSS, ele continuaria na árvore de acessibilidade e na ordem de Tab — um leitor de tela ainda ofereceria "Inscrever-se" num evento de ontem. Mesmo motivo pelo qual o
dados/cards-cotacoestira o preço vencido. -
Reavalia a cada minuto. Quem deixa a página aberta durante o evento vê o "Acontecendo agora" entrar e sair sem recarregar. Um minuto é o grão do horário escrito; mais fino não mudaria nada que se leia.
-
Data ilegível não afirma nada. Evento sem
data-agn-inicioválido fica como foi escrito, sem estado — melhor que adivinhar. -
O ponto do "agora" pulsa por opacidade, nunca por escala: nada muda de tamanho (CLAUDE.md §6), e o
reduceo deixa parado e aceso. -
Algarismos tabulares no dia.
06e23ocupam a mesma largura, e a lista alinha pela borda. -
O preview envelhece de propósito. As datas do exemplo são fixas; com o tempo, os eventos do preview passam a aparecer encerrados. É o componente funcionando, não o preview quebrado.
Movimento reduzido / toque
O único movimento é o ponto pulsante do "agora", e o reduce o deixa parado. O resto é estado, que continua sendo concedido. No toque não há nada que dependa de hover.
Histórico
| Origem | Quando | O quê |
|---|---|---|
| autoral | 2026-09-29 | Construído do zero. Padrão de domínio comum, sem referência única |
Origem. A página de eventos de gestoras, bancos privados e escritórios de advocacia — um padrão tão difundido que não tem dono. Nada foi copiado. O registro consolidado vai em projetos/autorais.md.
Método herdado. É o motor do dados/cards-cotacoes aplicado a convite: o que a peça afirma ("inscreva-se") só vale enquanto o relógio sustenta, e vencido, sai.