Data List
Apresenta listagens de itens estruturados em linhas verticais de fácil leitura, como pedidos ou notificações, sem seleção nem ações em lote.
- Exibir registros estruturados em uma lista vertical: apresentar itens como pedidos, notificações ou atividade recente, cada um com seus próprios atributos, sem necessidade de comparar entre colunas. Ex.: "Pedidos recentes", "Atividade da conta".
- Priorizar a leitura rápida por linha: organizar poucos atributos-chave por item (título, data, status) em um formato de leitura vertical, em contextos administrativos em que a ordem entre os itens é relevante. Ex.: número do pedido, cliente e status de pagamento em uma mesma linha.
- Comparar atributos entre muitos itens em colunas: quando cada linha precisa mostrar vários atributos comparáveis entre si, ser filtrada ou ordenada por coluna. Nesse caso, usar Data Table.
- Habilitar seleção ou interação por linha: quando cada linha precisa responder a um clique, mostrar um checkbox, um radio ou um toggle. O Data List não oferece essas props. Nesse caso, usar Interactive List.
- Exibir menos de 3 itens ou mais de 15 sem paginação: uma listagem muito curta não justifica o padrão completo, e uma muito longa sem scroll ou paginação adequada dificulta encontrar um item específico.
Row com texto, tag de status e link de detalhe
- Row: unidade repetível da lista (DataList.Row); é renderizada com role listitem dentro de DataList (role list) e admite seu próprio topDivider.
- Text: título e metadados do item (data, cliente, valor); cada row combina os que forem necessários, sem uma posição fixa entre eles.
- Tag (opcional): status do item, como o pagamento ou o envio.
- Link (opcional): acesso a mais detalhes ou a uma ação de expandir conteúdo dentro da mesma linha.
Tênis urbano
24 em estoque
Row com Thumbnail para identificar o item visualmente
- Thumbnail (opcional): imagem do item; útil quando ajuda a identificá-lo mais rápido do que somente o texto.
#1042
22 mar
Dr. Johnnie Bins
R$ 45.900,00
#1041
21 mar
Earnest Berge
R$ 18.500,00
Com divisores: separa cada row com uma borda inferior em toda a lista (bottomDivider em DataList, true por padrão) e uma borda superior por row (topDivider em DataList.Row, também true por padrão). Recomendado para listagens em que é preciso marcar onde cada item termina. Ex.: pedidos, notificações.
#1042
22 mar
Dr. Johnnie Bins
R$ 45.900,00
#1041
21 mar
Earnest Berge
R$ 18.500,00
Sem divisores: remove os separadores passando bottomDivider={false} para DataList e topDivider={false} para cada DataList.Row. Recomendado para listagens mais compactas, ou quando o espaçamento entre rows já é suficiente para diferenciá-las. Ex.: um resumo curto dentro de uma card.
Padding small
Padding base (padrão)
Padding none
Padding das linhas: controla o espaçamento interno de cada DataList.Row com padding (small, base — padrão — ou none); paddingBottom permite um espaçamento inferior diferente e, se não for definido, usa o valor de padding. Usar small ou none para listagens mais compactas. Ex.: uma listagem dentro de um painel lateral estreito pode usar small.
O Data List costuma viver dentro do body de Page, com um título ou uma contagem de itens acima. Por ser uma lista vertical de uma única coluna, é a alternativa ao Data Table em contêineres estreitos — uma barra lateral, um modal ou uma tela mobile — em que exibir colunas comparáveis obrigaria a cortar informação ou a usar scroll horizontal.
Pedidos recentes
3 pedidos
#1042
22 mar
Dr. Johnnie Bins
R$ 45.900,00
Pagamento pendente
#1041
21 mar
Earnest Berge
R$ 18.500,00
Não enviado
#1042
22 mar
Dr. Johnnie Bins
R$ 45.900,00
Pagamento pendente
Exibir somente os atributos que ajudam a identificar ou decidir sobre o item, sem sobrecarregar a linha.
#1042
22 mar
Dr. Johnnie Bins
R$ 45.900,00
Depósito Norte · Envio expresso · Faturado
Pagamento pendente
Não enviado
Prioridade alta
Não acumular múltiplas tags, links e textos secundários na mesma linha: isso dificulta encontrar o dado relevante.
#1041
21 mar
4 produtos
Usar no máximo um Link de detalhe por linha para abrir ou expandir informações adicionais.
Não repetir vários links ou ações de detalhe na mesma linha: não fica claro qual corresponde a qual dado.
- Estrutura semântica de lista: o DataList é renderizado com role list e cada DataList.Row com role listitem, de modo que um leitor de tela anuncia a quantidade de itens e a posição de cada um sem precisar de atributos ARIA adicionais.
- A acessibilidade do conteúdo depende dos itens filhos: como cada row admite qualquer combinação de componentes (Text, Tag, Link, Icon…), os critérios de acessibilidade próprios desses componentes (contraste, foco visível, texto alternativo) continuam se aplicando dentro da linha; o Data List não adiciona nem remove nada por si só.
- Sem comportamento próprio de foco ou teclado: o Data List não gerencia seleção nem interação. Se uma linha precisar responder ao teclado ou ao foco — por exemplo, um botão, um checkbox ou um toggle por item —, usar Interactive List, que implementa esse comportamento.
Instale o componente via terminal.
npm install @nimbus-ds/data-listListagem de pedidos com número, data, cliente, total e tags de status de pagamento e envio.
import React from "react";
import { DataList } from "@nimbus-ds/patterns";
import { Text, Tag, Link, Box } from "@nimbus-ds/components";
import {
ChevronDownIcon,
CreditCardIcon,
BoxUnpackedIcon,
} from "@nimbus-ds/icons";
const Example: React.FC = () => (
<DataList>
{Array.from({ length: 3 }, (_, i) => (
<DataList.Row key={i} gap="1">
<Box display="flex" justifyContent="space-between">
<Text fontWeight="medium" color="primary-interactive">
#123456
</Text>
<Text>22 Mar</Text>
</Box>
<Box display="flex" justifyContent="space-between">
<Text>Customer name</Text>
<Text>R$ 3.500</Text>
</Box>
<Link textDecoration="none">
10 products
<ChevronDownIcon style={{ display: "inline-block", verticalAlign: "middle", marginLeft: "4px" }} />
</Link>
<Box display="flex" flexWrap="wrap" gap="2" pt="2">
<Tag appearance="warning">
<CreditCardIcon size={12} />
<Text color="warning-textLow">Awaiting payment</Text>
</Tag>
<Tag appearance="primary">
<BoxUnpackedIcon size={12} />
<Text color="primary-textLow">Unfulfilled</Text>
</Tag>
</Box>
</DataList.Row>
))}
</DataList>
);
export default Example;As propriedades adicionais são repassadas ao elemento que renderiza o <DataList> (uma div com role list). Consulte a documentação para ver a lista de atributos aceitos pelo elemento <DataList>.
- Data Table — alternativa quando os itens compartilham atributos comparáveis para exibir em colunas.
- Interactive List — alternativa quando cada linha precisa responder a um clique, checkbox, radio ou toggle.
- Product Data List — alternativa quando cada item precisa de uma imagem destacada e organização em seções.
- Thumbnail — componente usado dentro de uma row quando o item precisa de uma imagem.
DataList
| Name | Type | Default | Description |
|---|---|---|---|
children* | React.ReactNode | Content of the List component. | |
bottomDivider | boolean | 'true' | Defines whether the List has a bottom border. |
DataList.Row
| Name | Type | Default | Description |
|---|---|---|---|
padding | 'base' | 'base' | Optional padding for the row. |
paddingBottom | 'base' | 'base' | Optional padding bottom for the row. |
children* | React.ReactNode | Content of the row. | |
topDivider | boolean | 'true' | Determines if the row has a top border. |
Ajude-nos a melhorar a documentação
Encontrou um problema ou tem uma sugestão? Conte para a gente.