Accordion
StablePrimitive de disclosure: uma pilha de cabeçalhos em que cada um revela o seu painel. Composto sobre Base UI Accordion; a abertura transiciona a altura pela escala de motion da Foundation, então reduced motion a colapsa sem desligar o disclosure.
Instalação
npx up-web-ds add accordionGera chevron-down para a biblioteca de ícones do projeto (components.json → iconLibrary).
Preview
Basic
Default
Multiple
Por npm run ds:add, que escreve em staging e registra a proveniência. Sem --promote nada é escrito em src/.
With Disabled Item
Rich Content
Implementação, metadata completa, examples, testes, registro no catálogo e tokens da Foundation. Além disso: dark mode, revisão de acessibilidade por teclado e leitor de tela, reduced motion, typecheck e biome.
As afirmações que o jsdom não consegue observar — alvo de toque e reduced motion — são provadas em tests/e2e/, não de memória. O validador cobra isso mecanicamente pelo DS011, e marcar stable para contornar o validador é a única saída que não vale.
All states
Basic
Default
Multiple
Por npm run ds:add, que escreve em staging e registra a proveniência. Sem --promote nada é escrito em src/.
With Disabled Item
Rich Content
Implementação, metadata completa, examples, testes, registro no catálogo e tokens da Foundation. Além disso: dark mode, revisão de acessibilidade por teclado e leitor de tela, reduced motion, typecheck e biome.
As afirmações que o jsdom não consegue observar — alvo de toque e reduced motion — são provadas em tests/e2e/, não de memória. O validador cobra isso mecanicamente pelo DS011, e marcar stable para contornar o validador é a única saída que não vale.
Usage
Props
Accordion
Estende AccordionPrimitive.Root.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
AccordionItem
Estende AccordionPrimitive.Item.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
AccordionTrigger
Estende AccordionPrimitive.Trigger.Props. Aceita também os atributos padrão de um elemento React (285 não listados).
AccordionContent
Estende AccordionPrimitive.Panel.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
Composition
Um Accordion é uma lista de AccordionItem; cada item carrega o seu gatilho e o painel que ele abre.
Metadata
Notas de acessibilidade
Teclado e leitor de tela verificados por teste: cada gatilho é um button dentro de um heading, Enter e Space alternam o painel, Tab percorre os gatilhos na ordem do documento, e o foco permanece no gatilho depois de abrir — o painel é conteúdo, não destino. Um item desabilitado continua focalizável e anunciado como desabilitado, e apenas recusa abrir: um cabeçalho que some da sequência de tabulação também some do outline que um usuário de leitor de tela percorre. O painel aberto é uma region nomeada pelo seu gatilho por aria-controls, e aria-expanded acompanha o estado real. Touch verificado em viewport de 375px com emulação de toque: os gatilhos medem acima do mínimo de 24x24 da WCAG 2.2 SC 2.5.8 e o toque abre e fecha. Reduced motion verificado em navegador com prefers-reduced-motion: reduce — a rotação do chevron é indicador de estado, então o ângulo permanece e só o tween sai (motion-reduce:transition-none). A transição de altura do painel é preservada de propósito: é ela que o Base UI observa para desmontar, e remover a transição deixaria o painel sem o transitionend que fecha o ciclo. Verificado nos dois modos: abre e fecha.
Classificação
- Layer
- Primitive
- Domínio
- Domain-free (compartilhado)
- Categoria
- disclosure
- Status
- Stable
Origem e distribuição
- Fonte
- shadcn registry / accordion
- Licença
- MIT
- Distribuição
- Interna
Acessibilidade
- Teclado: revisado
- Leitor de tela: revisado
- Touch: revisado
- Reduced motion: revisado
Dependências
- Pacotes
- @base-ui/react
- Ícones
- chevron-down
- Construído sobre
- Nenhum
- Usado por
- Nenhum ainda