Marketing Hero
Em andamentoTopo de página de campanha, sobre foto escurecida: chapéu, título (h1), subtítulo, as chamadas e os sinais de confiança. Na variante default, tudo centrado num eixo; na conversion, o texto à esquerda e o cartão de preço à direita. Estrutura refeita na revisão 3 (E130).
- Função
- Campanha (marketing)
- Também chamado de
- topo de campanha, hero de campanha, landing, banner
- Mora em
- app/components/organisms/marketing/MarketingHero.tsx
- Última mudança
- 2026-10-01
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 ou de captação; `conversion` quando a oferta tem preço.
Faça
- Passe
title,subtitleebackgroundImageda campanha; umchapeucurto ("Matrículas abertas") situa a oferta. - Passe
ctaHrefectaSecundarioHref: cada chamada só aparece com o destino dela (E74); troque os textos comrotuloDoCtaerotuloDoCtaSecundario. - Passe de dois a quatro
destaquescurtos e verdadeiros ("Credenciada pelo MEC", "+250 mil alunos"). - Na variante
conversion, passe o cartão empricingCard(o FloatingPricingCard).
Evite
- Dois na mesma página: o título é
h1. - Foto clara sem conferir: o degradê cobre a maioria, mas o título precisa de 4,5:1 sobre o que ficar atrás.
- Destaque que não se prova: número de alunos, nota e credenciamento precisam ser reais.
Quando não usar. No topo da página inicial, use o Hero. No topo da página de eventos, o HeroCarousel.
Anatomia
As partes, na ordem em que o olho — e o teclado — passam.
- Fundo — A foto como imagem decorativa (`alt=""`), de ponta a ponta, com um degradê de `--ink` por cima que garante o contraste — de cima para baixo no `default`, da esquerda para a direita no `conversion`.
- Chapéu — Opcional: pílula em `--sobre-escuro-medio`, 12px, caixa alta.
- Título — `h1` em `--ink-inverse`, 36/48/60px (celular, tablet, computador), linhas equilibradas; aceita um trecho destacado em `--primary`.
- Subtítulo — 18/20px, `--ink-inverse-muted`.
- Chamadas — Buttons `lg` com `href`: a primária e, no `default`, a secundária contornada clara.
- Destaques — Lista com o visto em `--secondary` e o texto em `--ink-inverse-muted`.
- Cartão de preço — `conversion`: o `pricingCard`, à direita a partir de 1024px; embaixo do texto antes disso.
Estados
Os estados que a peça tem no código, e o que muda em cada um.
| Estado | O que muda |
|---|---|
| Padrão | variant="default": tudo centrado no mesmo eixo, até 768px de largura — testado na ficha. |
| Conversão | variant="conversion": duas colunas a partir de 1024px; a chamada do texto some aí, onde o cartão de preço assume. |
| Sem destino | Sem ctaHref nem ctaSecundarioHref: sem chamadas. |
Comportamento
| Situação | O que acontece |
|---|---|
| Altura | Sai do conteúdo, com 80px de respiro (96px a partir de 1024px) — não mais 90% da tela com um vazio em volta (E130), testado na ficha. |
| Chamadas | Levam ao destino da prop; sem ela, não aparecem (E74, decisão de 2026-09-28) — testado na ficha. |
| Entrada | Sem animação: o HTML do servidor já sai com o título e as chamadas no lugar (E36). |
Relacionados
Como usar no código
A importação e o menor uso, lidos do arquivo. O … marca as props obrigatórias.
import { MarketingHero } from '@/app/components/organisms/marketing/MarketingHero';
<MarketingHero />Propriedades
Lidas do código da peça no build — não escritas à mão.
| Prop | Tipo | Padrão | Obrigatória | Descrição |
|---|---|---|---|---|
title | React.ReactNode | ( <> Transforme sua <span className="text-primary">carreira</span> hoje </> ) | não | — |
subtitle | string | 'Aprenda com os melhores especialistas do mercado, com aulas ao vivo, tutoria e certificado reconhecido pelo MEC.' | não | — |
chapeu | string | — | não | Chapéu acima do título: "Pós-graduação EAD", "Matrículas abertas". |
variant | 'default' | 'conversion' | 'default' | não | — |
pricingCard | React.ReactNode | — | não | O cartão de preço, à direita na variante conversion (depois do texto no celular). |
backgroundImage | string | 'https://faculdadephorte.edu.br/wp-content/uploads/2025/09/ARTE-copy.webp' | não | — |
ctaHref | string | — | não | Destino da chamada principal (E74). Sem ele o botão não aparece — um CTA que não leva a lugar nenhum é pior que nenhum (decisão de 2026-09-28). |
rotuloDoCta | string | 'Começar agora' | não | Texto da chamada principal (padrão "Começar agora"). |
ctaSecundarioHref | string | — | não | Destino da chamada secundária, só na variante default. Mesma regra. |
rotuloDoCtaSecundario | string | 'Ver planos' | não | Texto da chamada secundária (padrão "Ver planos"). |
destaques | string[] | — | não | Sinais de confiança, curtos, embaixo das chamadas (E130): "Credenciada pelo MEC", "+250 mil alunos", "Certificado reconhecido". |
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-inkfrom-inkfrom-ink/85to-inkto-ink/60via-ink/80via-ink/90 |
--ink-inverse | #FAFAFA | text-ink-inverse |
--ink-inverse-muted | #C7C7C7 | text-ink-inverse-muted |
--primary | #D42B2B | text-primary |
--secondary | #0B8434 | text-secondary |
Teclado
| Tecla | Faz |
|---|---|
| Tab | `default`: a chamada principal e a secundária. `conversion` em 1280px: só o que vier no `pricingCard`. |
| Enter | Segue a chamada em foco (são links). |
Leitor de tela
O que é anunciado, e por quê.
- A foto é decorativa (
alt=""); o título nomeia a região. - Os destaques são uma lista com nome ("Por que a Phorte"); o visto é decorativo.
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/MarketingHero.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.
251416b2026-10-01E159: Testimonials — o vídeo toca dentro do cartão, YouTube e Vimeo
O histórico completo está no GitHub (abre em outra aba).