Saltar al contenido
Logic2BUI

Buscar en la documentación

Busca componentes y documentación

Nuevo
Menú

Vista de árbol

Lista jerárquica para explorar archivos, carpetas o categorías con expansión, selección y navegación completa mediante teclado.

  • src
    • components
      • button.tsx
      • card.tsx
      • tree-view.tsx
  • README.md
  • package.json

Instalación

npx logic2b@next add tree-view

Uso

import { TreeItem, TreeView } from "@/components/ui/tree-view"

<TreeView aria-label="Archivos" defaultExpanded={["src"]}>
  <TreeItem value="src" label="src">
    <TreeItem value="button" label="button.tsx" />
    <TreeItem value="card" label="card.tsx" />
  </TreeItem>
  <TreeItem value="readme" label="README.md" />
</TreeView>

Anidar elementos TreeItem convierte un elemento en una rama. El chevrón, el estado aria-expanded y la sangría se derivan de forma automática.

Ejemplos

Controlado

Gestiona externamente la expansión y la selección: expande o contrae todo desde fuera y reacciona al valor seleccionado.

  • workspace

Selected: none

Accesibilidad

  • Sigue el patrón Tree View de WAI-ARIA.
  • Flecha arriba y Flecha abajo recorren los elementos visibles; Inicio y Fin saltan al primero o al último.
  • Flecha derecha expande una rama contraída y después entra en ella; Flecha izquierda contrae una rama expandida o lleva al nivel padre.
  • Intro o Espacio seleccionan el elemento con foco y alternan las ramas.
  • Los elementos exponen aria-level, aria-expanded y aria-selected; los desactivados usan aria-disabled y se omiten durante la navegación.

Playground interactivo

Edita las propiedades del componente y revisa el JSX exacto antes de copiarlo. La vista previa se carga solo cuando esta sección entra en pantalla.

JSX generado
<TreeView
  defaultExpanded={["packages"]}
  defaultSelected="registry"
  aria-label="Repository files"
>
  <TreeItem
    value="packages"
    label="packages"
  >
    <TreeItem
      value="registry"
      label="registry"
     />
    <TreeItem
      value="web"
      label="web"
     />
  </TreeItem>
  <TreeItem
    value="roadmap"
    label="ROADMAP.md"
   />
</TreeView>

Referencia de API

Generada a partir de las exportaciones públicas de TypeScript en src/ui/tree-view.tsx. Las descripciones técnicas conservan el texto canónico del código fuente.

Ver JSON

TreeView

Componente
Props: Omit<React.ComponentProps<"ul">, "onSelect"> & { expanded?: string[] defaultExpanded?: string[] onExpandedChange?: (expanded: string[]) => void selected?: string | null defaultSelected?: string | null onSelectedChange?: (selected: string | null) => void }
PropiedadTipoObligatoriaValor predeterminadoDescripción
expandedstring[]No——
defaultExpandedstring[]No——
onExpandedChange(expanded: string[]) => voidNo——
selectedstring | nullNo——
defaultSelectedstring | nullNo——
onSelectedChange(selected: string | null) => voidNo——

TreeItem

Componente
Props: Omit<React.ComponentProps<"li">, "onSelect"> & { value: string label: React.ReactNode icon?: React.ReactNode disabled?: boolean }
PropiedadTipoObligatoriaValor predeterminadoDescripción
valuestringSí——
labelReact.ReactNodeSí——
iconReact.ReactNodeNo——
disabledbooleanNo——

Contrato de accesibilidad

Comportamiento legible por máquinas y responsabilidades de quien integra tree-view. Los detalles normativos conservan el texto canónico del registro.

Ver JSON
Soporte
Comportamiento implementado
Patrón
tree
Interacciones de teclado para tree-view
TeclasComportamiento
ArrowUp ArrowDown ArrowLeft ArrowRightMove within the composite control.
Home EndMove to the first or last visible node.
Enter SpaceSelect or activate the focused node.

Semántica incorporada

  • Uses tree/treeitem/group roles with aria-expanded, aria-selected, level and set position metadata.

Responsabilidades de integración

  • Give the tree a label and ensure node actions are distinguishable from expand/collapse.