Event Speaker
Em andamentoPalestrante de um evento: foto pequena (quando há), nome em negrito e cargo embaixo. É o PessoaResumo (E72) com o cargo — o mesmo primitivo do autor do BlogCard e do autor do depoimento.
- Função
- Eventos
- Também chamado de
- palestrante, speaker, convidado, professor
- Mora em
- app/components/molecules/EventSpeaker.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.
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
Na página de um evento ou na programação, para dizer quem fala.
Faça
- Passe
jobTitlecom a credencial que importa para o evento ("Fisioterapeuta, doutora pela USP"). - Use em lista quando houver vários palestrantes.
- Para outra pessoa (autor, depoente), use o
PessoaResumodireto:linha,hrefpara o nome,tamanho(sm,md),superficie(clara,escura) enomeComo(h3quando o nome abre um bloco).
Evite
- Contar com as iniciais quando falta a foto: sem
avatar, o círculo não aparece.
Quando não usar. Para a equipe da instituição, com cartões, use o TeamGrid. Para vários rostos sem nome, o AvatarGroup.
Nota de uso
Passou a usar o Avatar do sistema em vez de um <img> próprio. Ganha o tratamento de imagem quebrada e para de duplicar o átomo, mas a borda mudou de 1px `border` para 2px `surface` — diferença pequena e real, declarada no commit. O avatar é decorativo: o nome está logo ao lado, em texto, e o leitor não precisa ouvi-lo duas vezes.
Anatomia
As partes, na ordem em que o olho — e o teclado — passam.
- Foto — Um Avatar `sm` (32px), decorativo — o nome está ao lado.
- Nome — `text-sm` em negrito.
- Cargo — `text-xs` cinza.
Estados
Os estados que a peça tem no código, e o que muda em cada um.
| Estado | O que muda |
|---|---|
| Com foto | Avatar, nome e cargo. |
| Sem foto | Só nome e cargo, sem círculo. |
| Só nome | Sem cargo. |
Comportamento
| Situação | O que acontece |
|---|---|
| Foto que falha | O Avatar troca pelas iniciais do nome. |
Relacionados
Como usar no código
A importação e o menor uso, lidos do arquivo. O … marca as props obrigatórias.
import { EventSpeaker } from '@/app/components/molecules/EventSpeaker';
<EventSpeaker name={…}>…</EventSpeaker>Propriedades
Lidas do código da peça no build — não escritas à mão.
| Prop | Tipo | Padrão | Obrigatória | Descrição |
|---|---|---|---|---|
name | string | — | sim | — |
jobTitle | string | — | não | Cargo do palestrante. Chamava-se role, e o jsx-a11y da E12 acusou: em JSX, role é o atributo ARIA, e o linter não tem como distinguir role="Fisiologista" de um papel ARIA inválido. Nem quem lê o código tem. Hoje o componente espalha props no DOM — o que só é seguro porque a prop mudou de nome. |
avatar | string | — | não | — |
Aceita também: React.HTMLAttributes<HTMLDivElement>.
Medidas
| Parte | Valor | Classe |
|---|---|---|
| Foto | 32px | size="sm" |
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 | text-ink |
--ink-inverse | #FAFAFA | text-ink-inverse |
--ink-inverse-muted | #C7C7C7 | text-ink-inverse-muted |
--muted-foreground | #595959 | text-muted-foreground |
Teclado
| Tecla | Faz |
|---|---|
| Tab | Sem `href`, nada recebe foco. Com `href` no PessoaResumo, o nome é um link, e é a única parada — conferido no teste da ficha. |
| Enter | Segue o link do nome. |
Leitor de tela
O que é anunciado, e por quê.
- O
PessoaResumo(E72) corrige os três de uma vez: a foto é decorativa em todos, e o nome pode ser cabeçalho ou link — conferido no teste da ficha. - A foto é
decorativo: o leitor diz o nome uma vez só, no texto.
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/EventSpeaker.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).