TreeView
Visão em árvore — mostra itens que ficam um dentro do outro, como pastas e arquivos ou categorias, para a pessoa abrir um ramo e escolher um item. Para uma lista simples, use uma lista ou um menu.
- Primeiros passos
- Crie sua conta
- Convide sua equipe
- Cobrança
Instalação
Configure o Camaleo uma vez (Instalação) e importe o que precisar. Ele roda no cliente, porque guarda os ramos abertos e a seleção.
import { TreeView, TreeItem } from "@camaleo/react";Anatomia
Uma lista de itens, em que o item com filhos abre um grupo aninhado. Cada parte tem um data-slot que você pode usar no CSS.
Exemplos
Cada exemplo é um arquivo real que você pode copiar. Todos usam o estilo, o modo e a cor escolhidos na barra acima.
- src
- components
- button.tsx
- card.tsx
- index.ts
- styles
- package.json
- README.md
- Primeiros passos
- Cobrança
- Troque de plano
- Baixe as notas fiscais
Aberta no item atual
Abra os ramos que levam ao item selecionado com defaultExpandedValues. A pessoa vê onde está sem clicar, e o Tab cai nesse item.
- images
- hero-banner.png
- avatar-default.png
- logo-mark.svg
- fonts
Vários itens de uma vez
Use selectionMode="multiple" quando a pessoa age sobre um lote, como mover arquivos. O Espaço adiciona ou tira um item e mantém os outros.
- Produção
- Banco principal
- Réplica de leitura
- Cache
Ícones para o tipo de item
Passe icon quando os itens são de tipos diferentes, como servidores e bancos. O ícone fica oculto para leitores de tela, então o rótulo precisa dizer tudo.
- public1.6 MB
- hero.webp1.2 MB
- logo.svg8 kB
- favicon.ico15 kB
- package.json1.4 kB
Uma informação por linha
Use meta para um valor curto, como tamanho ou contagem. Leitores de tela leem junto com o rótulo, então use poucos caracteres.
- app
- page.tsx
- layout.tsx
- api
- package.json
Selecionado: app/page.tsx
Reagir à seleção
Clique em um arquivo ou aperte Enter nele. Controle selectedValues quando outra parte da página mostra o que foi escolhido, como um editor ou uma prévia.
- Conta
- Perfil
- Segurança
- Notificações
Nomeada pelo título
Aponte aria-labelledby para o título visível, para o leitor de tela dizer o que a árvore contém. A árvore é uma parada de Tab; as setas andam dentro dela.
Em contexto
Árvores costumam ficar numa barra lateral ou num card, ao lado do conteúdo que abrem. Estas são peças inteiras de interface que você pode copiar, no estilo que escolheu.
Explorador
main- src
- app
- page.tsxalterado
- layout.tsx
- lib
- next.config.mjs
Categorias
- Eletrônicos296
- Computadores200
- Notebooks142
- Desktops58
- Áudio96
- Roupas84
Caixas de e-mail
- Caixa de entrada
- Clientes
- Fornecedores
- Enviados
- Arquivo
Boas práticas
- Eletrônicos
- Computadores
- Áudio
- Roupas
Pastas, categorias e seções com subseções são o motivo de existirem as setas de abrir e fechar.
- Perfil
- Notificações
- Segurança
Sem ramos, a árvore só acrescenta setas e anúncios à toa. Use uma lista, links ou um menu.
- src
- components
- button.tsx
- card.tsx
O ramo acima já diz onde o item está, então o rótulo só precisa do próprio nome.
- src
- src/components
- src/components/button.tsx
- src/components/card.tsx
Rótulos longos são cortados em telas estreitas, e o leitor de tela repete as mesmas palavras em toda linha.
Props
Cada item precisa de um value único na árvore inteira, como o caminho: dois itens com o mesmo valor abrem e são selecionados juntos. TreeView também aceita os atributos de <ul>, e TreeItem os de <li>.
Styling hooks
Mude o visual sem copiar o componente: use os atributos ou defina os tokens num elemento pai, num estilo ou na própria árvore.
Atributos
Tokens que ele lê
Cor
Forma e tamanho
Só deste componente
Acessibilidade
- A árvore é uma lista role="tree". Ramos têm aria-expanded e abrem um role="group"; itens têm aria-selected, e a seleção múltipla acrescenta aria-multiselectable.
- O Tab entra no item selecionado, ou no primeiro item quando nada selecionado está visível.
- Dê um nome à árvore com aria-label, ou com aria-labelledby apontando para o título.
- Não há busca ao digitar: em listas longas, coloque um campo de busca acima da árvore.