Promo Marquee
Em andamentoFaixa promocional que rola sozinha, com mensagens em caixa alta separadas por pontos, e um botão de pausa. Recebe as mensagens, o tema (primário, secundário ou escuro) e o rotulo da região.
- Função
- Campanha (marketing)
- Também chamado de
- faixa promocional, letreiro, marquee, barra de aviso
- Mora em
- app/components/organisms/marketing/PromoMarquee.tsx
- Última mudança
- 2026-09-30
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.
1280px, em tamanho real
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
No topo de uma página de campanha, para uma chamada curta de oferta.
Faça
- Passe
messagescurtas e verdadeiras. - Escolha a superfície por
tema:primario(padrão),secundarioouescuro— as três passam em contraste (E75; eram duas props de classe livre).
Evite
- Urgência inventada ("ÚLTIMAS 10 VAGAS") que a página não sustenta.
- Cor por
className: a superfície é dotema, que só oferece as que passam.
Quando não usar. Para logotipos, use o LogoMarquee. Para um aviso que a pessoa precisa ler com calma, o Alert.
Anatomia
As partes, na ordem em que o olho — e o teclado — passam.
- Faixa — Região com nome ("Faixa promocional"), no fundo do `tema`, com bordas claras em cima e embaixo.
- Mensagens — Em caixa alta, negrito, separadas por um ponto; a lista se repete três vezes para o laço.
- Pausa — Botão redondo de 44px à direita.
Estados
Os estados que a peça tem no código, e o que muda em cada um.
| Estado | O que muda |
|---|---|
| Rolando | A faixa corre; o botão diz "Pausar a rolagem da faixa promocional". |
| Pausada | A faixa para; "Retomar…", com aria-pressed="true" — medido. |
| Movimento reduzido | A faixa não corre e o botão some; os itens quebram linha, cada um uma vez (E145). Era uma rolagem manual sem nada focável dentro — o teclado não chegava ao que ficava fora da largura. |
Comportamento
| Situação | O que acontece |
|---|---|
| Laço | As mensagens são repetidas três vezes no DOM; as duas cópias ficam aria-hidden. |
Relacionados
Como usar no código
A importação e o menor uso, lidos do arquivo. O … marca as props obrigatórias.
import { PromoMarquee } from '@/app/components/organisms/marketing/PromoMarquee';
<PromoMarquee />Propriedades
Lidas do código da peça no build — não escritas à mão.
| Prop | Tipo | Padrão | Obrigatória | Descrição |
|---|---|---|---|---|
messages | string[] | defaultMessages | não | — |
tema | 'primario' | 'secundario' | 'escuro' | 'primario' | não | A superfície: primario (vermelho de interface, padrão), secundario (verde) ou escuro. |
rotulo | string | 'Faixa promocional' | não | Nome da região para o leitor de tela. |
className | string | — | não | — |
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 |
|---|---|---|
--foreground | #1A1A1A | bg-inkbg-ink/30bg-ink/50 |
--ink-inverse | #FAFAFA | text-ink-inverse |
--primary | #D42B2B | bg-primary |
--primary-foreground | #FFFFFF | text-primary-foreground |
--ring-inverse | #FAFAFA | ring-ring-inverse |
--secondary | #0B8434 | bg-secondary |
--secondary-foreground | #FFFFFF | text-secondary-foreground |
Teclado
| Tecla | Faz |
|---|---|
| Tab | Só o botão de pausa — medido. |
| EnterEspaço | Pausa ou retoma a faixa — medido. |
Leitor de tela
O que é anunciado, e por quê.
- A pausa é a de
usePausaDeMovimento(E75), com o mesmo rótulo e oaria-presseddas outras peças que se movem; a guardapausaSemControledo audit passou a ver a animação CSS contínua. - A faixa é uma região com nome: dá para pular inteira pelos marcos.
- Quem ouve recebe cada mensagem uma vez: as cópias do laço e os pontos separadores são
aria-hidden— medido no navegador (4 de 12 itens na árvore).
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/organisms/marketing/PromoMarquee.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.
0298af82026-09-30E147: fechamento da Entrega 11 — REPORT.md, verificação cross-agent e o gate estático estrito
O histórico completo está no GitHub (abre em outra aba).