intro
Accordion
An organism that groups multiple Disclosure molecules, providing native mutually exclusive states.
O componente Accordion é um organismo projetado para agrupar múltiplas moléculas Disclosure. Ele garante que o estado de expansão seja mutuamente exclusivo (abrir um fecha os outros automaticamente), utilizando as capacidades nativas dos navegadores (<details name="...">) em vez de introduzir complexidade com JavaScript.
Ao seguir a doutrina Curva & Concreto, mantemos a acessibilidade e a semântica de HTML5 no seu estado mais puro e resiliente, ao mesmo tempo em que reduzimos significativamente o custo da renderização da interface.
Exemplo Básico
Ao envolver vários componentes Disclosure com um Accordion, a exclusividade é aplicada automaticamente. O Accordion fornece a prop name aos componentes subjacentes de forma transparente através da Context API do Svelte.
A Curva
As curvas representam interatividade. Elementos que o usuário pode tocar, clicar, focar e alterar. Bordas arredondadas e sombras sinalizam ação no sistema.
O Concreto
O concreto representa a informação inerte. Superfícies planas, bordas retas (radius 0px) são usadas quando apresentamos dados ao usuário. Não há falsa ilusão de interatividade.
A Integração
Um sistema só funciona quando ambos coexistem em contraste direto. Aninhar curvas dentro de curvas é estritamente proibido.
<script> import { Accordion } from 'cobogo/components/Accordion'; import { Disclosure } from 'cobogo/components/Disclosure';</script>
<Accordion name="manifesto-accordion"> <Disclosure title="A Curva"> <p>As curvas representam interatividade...</p> </Disclosure>
<Disclosure title="O Concreto"> <p>O concreto representa a informação inerte...</p> </Disclosure>
<Disclosure title="A Integração"> <p>Um sistema só funciona quando ambos coexistem...</p> </Disclosure></Accordion>Props
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
name | string | obrigatório | O nome exclusivo do grupo para sincronização nativa dos componentes. |
Acessibilidade e Semântica
- Não utiliza JavaScript para calcular alturas ou adicionar listeners para fechar elementos abertos.
- Utiliza o atributo HTML5
namenos elementos nativos<details>. Esta é uma funcionalidade moderna suportada pela vasta maioria dos navegadores atuais, permitindo agrupar os componentes sem sacrificar a árvore de acessibilidade inerente. - A navegação por teclado (
Tab,Space,Enter) flui naturalmente através dos cabeçalhos<summary>.