Accordion
Sanfona (acordeão) — uma pilha de títulos que abrem cada um a sua seção no lugar, para conteúdo longo que se lê por partes, como um FAQ. O Collapsible é a versão única, para um só mostrar/esconder.
Instalação
Configure o Camaleo uma vez (Instalação) e importe o que precisar. Ele renderiza no cliente.
import { Accordion, AccordionItem, AccordionTrigger, AccordionPanel, Collapsible, CollapsibleTrigger, CollapsiblePanel } from "@camaleo/react";Anatomia
O AccordionTrigger coloca o botão dentro de um título, então as seções aparecem na lista de títulos do leitor de tela. É um h3; use level para encaixar no esquema da página, como level={4} abaixo do título de um card. O painel anima a altura; o espaçamento fica num elemento interno para nada pular. O Collapsible tem o mesmo gatilho e painel, sem o título.
Exemplos
Todo exemplo é um arquivo real que você pode copiar. Todos usam o estilo, o modo e a cor da barra acima. Abra uma seção e depois experimente Tab e Enter.
Várias abertas
Com multiple, abrir uma seção mantém as outras abertas. Use quando a pessoa lê as seções lado a lado; o defaultValue abre as que a maioria precisa.
Seções de um formulário
Divida configurações longas em seções preenchidas uma por vez. O keepMounted mantém no formulário os campos das seções fechadas, então o que foi digitado ainda é enviado.
Abrir todas
Clique no botão. Com value e onValueChange você controla quais seções estão abertas, e um botão só abre ou fecha todas.
Achado pela busca da página
Aperte Ctrl+F e busque "nota fiscal". Com hiddenUntilFound, os painéis fechados continuam na página e abrem quando o navegador encontra o texto neles.
Os repasses abrem quando sua conta bancária for verificada. Isso costuma levar até 2 dias úteis.
Desativada, com o motivo
O Tab pula um título desativado, então deixe o motivo em texto visível ao lado: diga por que está fechado e quando abre.
Exportar pedidos
Opções avançadas
O Collapsible esconde opções de que a maioria nunca precisa, então o formulário fica curto e os padrões fazem o trabalho.
- Produtos ilimitados
- Até 3 lojas
- E-mails de carrinho abandonado
Mostrar mais
Clique nele. Os itens extras aparecem logo acima do botão, onde a leitura parou, e o rótulo diz o que ele fará em seguida.
Em contexto
São pedaços inteiros de interface que você pode copiar, no estilo que escolheu.
Central de ajuda
Respostas para as perguntas que mais recebemos.
Resumo do pedido
- Subtotal
- R$ 186,40
- Frete
- Grátis
- Total
- R$ 186,40
Boas práticas
Uma pergunta ou um assunto mostra se vale abrir, e fica claro numa lista de títulos.
"Mais informações" e "Outros" obrigam a pessoa a abrir todas as seções para achar qualquer coisa.
| Plano | Preço | Pedidos |
|---|---|---|
| Básico | R$ 29 por mês | Até 100 pedidos |
| Pro | R$ 89 por mês | Pedidos ilimitados |
Preços e limites numa tabela só se leem de relance.
Com um plano aberto por vez, a pessoa precisa lembrar o preço do outro.
Props
onValueChange para controlar o estado.hidden="until-found" e ignora keepMounted.O AccordionItem recebe um value e disabled. O AccordionTrigger recebe level (1 a 6, padrão 3) para o título em volta dele. AccordionTrigger e AccordionPanel recebem as props do seu elemento.
O Collapsible abre e fecha um painel só:
onOpenChange para controlar o estado.Styling hooks
Mude o visual sem copiar o componente: use os atributos ou defina os tokens num elemento pai, num estilo ou no próprio accordion.
Atributos
Tokens que ele lê
Cor
Forma e tamanho
Tipografia e movimento
Só deste componente
/* um mais que vira menos, só na página de ajuda */
.ajuda [data-slot="accordion"] {
--cml-accordion-chevron: none;
--cml-accordion-plus: inline-block;
}Acessibilidade
- Cada título é um botão dentro de um título (h3, ou o nível que você definir), com aria-expanded. Aberto, o aria-controls aponta para o painel, uma região com o nome do título.
- Não há setas entre os títulos: o padrão WAI-ARIA as removeu, e o Tab já passa de um título para o outro.
- O conteúdo de painéis fechados sai da página, então o Tab e a busca o pulam, a menos que você use keepMounted ou hiddenUntilFound.
- Um título desativado é um botão desativado: o Tab o pula, então o motivo precisa estar em texto visível.