A escassez que só aparece se for verdade. Um bloco de chamada — olho, título, apoio, botão — com o selo de quanto falta ao lado: "Faltam 3 dias", "Restam 2 de 12 vagas", e uma barra de lugares ocupados. Nada disso está escrito no markup: o bloco declara o prazo e a contagem, e o script concede só o que consegue sustentar.
O problema que ela resolve: "últimas vagas" é o truque mais velho de página de venda, e por isso mesmo o leitor desconfia dele. Aqui o selo carrega o próprio lastro: tem prazo com fuso, tem contagem com data, e quando qualquer um dos dois deixa de valer, o selo some — e, se o prazo venceu, o botão sai junto.
Quando usar
- Evento, turma, encontro presencial com data-limite de inscrição e lotação real.
- Agenda do mês de um sócio ("Restam 3 horários em outubro"), com a variação só vagas.
- Qualquer chamada em que o prazo é real e ajuda a pessoa a decidir.
Quando não usar
- Escassez que não existe. Se não há prazo nem limite, não há selo — e nenhuma variação desta peça inventa um.
- Lista de vários eventos —
listas/agenda-eventos, que já sabe quando cada um acabou. - Promoção de preço. Contagem regressiva de desconto é outro gênero, e não combina com assessoria.
Padrão editorial
| Slot | Regra |
|---|---|
| Olho | o que, quando e onde |
| Título | o assunto, 3 a 9 palavras |
| Apoio | duração, lotação, custo |
| Botão | reservar, inscrever, garantir |
| Encerrado | o que acontece agora e, se houver, o próximo caminho |
| Esgotado | com a promessa de avisar do próximo — só se ela for cumprida |
O que mantém a peça: o selo é consequência, não argumento. O título e o apoio têm de convencer sozinhos; o selo só diz quanto tempo a pessoa tem para decidir.
Especificação dos assets
Nenhum.
Como usar
<link rel="stylesheet" href="componentes/conversao/selo-prazo/estilo.css">
<script src="componentes/conversao/selo-prazo/script.js"></script>
O bloco declara:
<div class="prz" data-prz
data-prz-ate="2026-10-12T23:59:00-03:00"
data-prz-vagas="2" data-prz-total="12" data-prz-contado="2026-09-29">
Ganchos
| Gancho | Papel |
|---|---|
data-prz-ate |
prazo, ISO 8601 com fuso |
data-prz-vagas / data-prz-total |
vagas restantes e total |
data-prz-contado |
dia em que as vagas foram contadas, AAAA-MM-DD |
data-prz-validade |
dias em que a contagem vale. 2 |
[data-prz-acao] |
o botão que sai do DOM quando acaba |
[data-prz-encerrado] / [data-prz-esgotado] |
as mensagens que o substituem; nascem [hidden] |
.prz[data-estado] |
aberto, encerrado ou esgotado, escrito pelo script |
Variações
- Só prazo — sem
data-prz-vagas. - Só vagas — sem
data-prz-ate, atualizandodata-prz-contadoa cada contagem. - Sobre papel —
.sec-paperno lugar de.sec-deep.
Compliance
- Sem JavaScript, nenhum selo. O bloco aparece como foi publicado, com o botão, e sem afirmar escassez.
- A contagem tem validade. Vagas contadas há mais de
data-prz-validadedias (2 por padrão) não aparecem. Um "restam 2 vagas" de semana passada é pressão falsa, e esta peça existe justamente para não fazer isso. - Vencido é vencido. O botão sai do DOM — não só da vista —, e com ele a oferta de reservar algo que acabou.
- Quem atualiza a contagem é gente. O script não sabe quantas vagas foram vendidas; ele só respeita a data da última contagem. Se ninguém atualiza, o selo de vagas some sozinho em dois dias — que é o comportamento certo.
Gotchas
- Dias são arredondados para baixo. Faltando 2 dias e 20 horas, o selo diz "Faltam 2 dias". Arredondar para cima prometeria um dia que não existe.
- Abaixo de um dia, horas. "Faltam 5 horas", e "Falta menos de 1 hora" no fim.
- "Perto do fim" acende o ponto na cor de marca — menos de 3 dias, ou até 20% das vagas. É a única ênfase: nada pisca.
- A contagem é lida como meio-dia local (
new Date(ano, mês, dia, 12)), para o fuso não tirar um dia da validade. - A barra é
aria-hidden. O selo já diz o número por extenso. - O preview envelhece de propósito. A contagem de exemplo vale dois dias e o prazo é fixo: com o tempo o preview mostra só o prazo, e depois o encerrado. É a peça funcionando.
Movimento reduzido / toque
A barra preenche por transição de 0,9s; com reduce, aparece no lugar. Nada depende de hover.
Histórico
| Origem | Quando | O quê |
|---|---|---|
| referência: cta.gallery | 2026-09-29 | Clone de referência, reescrito do zero |
Referências visuais: o selo "2 Spots Remaining!" (Harry Solaris) e a régua de horários ocupados (bakedwith), via cta.gallery. Entrou por decisão do dono, com "dias restantes" como caso principal; o método é o da listas/agenda-eventos e do dados/cards-cotacoes. Registro consolidado em projetos/referencias-externas.md.