overview

01
Conteúdo da primeira seção. Pode ter qualquer coisa aqui: texto, listas, outros componentes.
Conteúdo da segunda seção.
Conteúdo da terceira seção.

variantes

02 · single / multi
variantecomportamento
single (default)abrir um fecha os outros · economia visual
multipermite múltiplos abertos simultaneamente · permite comparação

multi

Vários itens abertos ao mesmo tempo.

Aberto.
Também aberto.

estados

03
estadoindicação
collapsedchevron apontando à direita
expandedchevron rotacionado 90° · body visível
hoverbackground-hover no header
focusoutline 2px no header

anatomia

04
label do item corpo do item — texto, listas, componentes 1 2 3
  1. Header — clicável, mostra label do item
  2. Chevron — indica estado (apontando = colapsado, virado = expandido)
  3. Body — revela ao expandir

comportamentos

05

modifiers · api

06
atributotipodefaultdescrição
data-mode"single" | "multi""single"modo de expansão
.open (no item)classestado inicial expandido
aria-expandedboolean"false"setado automaticamente pelo JS

quando usar

07

use

  • organizar conteúdo extenso em seções
  • reduzir scroll em interfaces mobile
  • FAQ, configurações, especificações técnicas
  • entre 3 e 7 itens — sweet spot de navegabilidade

não use

  • conteúdo crítico que precisa ser visto — usa seções abertas
  • mais de 7 itens — vira lista difícil de navegar
  • navegação primária — usa tabs ou sidebar
  • conteúdo que cabe na tela toda sem expansão

acessibilidade

08 · wcag aa

código

09 · html + js
<!-- markup --> <div class="accordion" data-mode="single"> <div class="accordion-item open"> <button class="accordion-header">label<span class="chevron">›</span></button> <div class="accordion-body">conteúdo</div> </div> </div> // JS é auto-inicializado pelo components.js