Data List
Data list é um padrão visual que permite visualizar e gerenciar listados de itens estruturados, como ordens, informações de clientes, etc. Está projetado para mostrar informações resumidas de forma clara e ordenada. Seu design modular permite visualização rápida e uso intensivo em fluxos de trabalho administrativos, especialmente em contextos onde a ordem ou relação entre itens é relevante.
import React from "react";
import { DataList } from "@nimbus-ds/patterns";
import { Text, Tag, Link, Box, Icon } 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
<Icon color="currentColor" source={<ChevronDownIcon />} />
</Link>
<Box display="flex" flexWrap="wrap" gap="2" pt="2">
<Tag appearance="warning">
<Icon color="currentColor" source={<CreditCardIcon />} />
Awaiting payment
</Tag>
<Tag appearance="primary">
<Icon color="currentColor" source={<BoxUnpackedIcon />} />
Unfulfilled
</Tag>
</Box>
</DataList.Row>
))}
</DataList>
);
export default Example;
Instale o componente via terminal.
npm install @nimbus-ds/data-list
Data List
Utilizar Data list quando:
- Precisar mostrar uma lista de produtos ou itens com atributos chave visíveis.
- Apresentar um listado de operações ou itens relacionados
Evitar usar este padrão quando:
- Os itens requerem mostrar muita informação ou múltiplas ações por linha (nesse caso usar Data Table)
- Há menos de 3 elementos (não justifica um padrão completo).
- O total supera os 15 itens e não há paginação ou scroll adequado.
- Feedback imediato: As mudanças realizadas sobre o listado se refletem em tempo real.
- Pré-seleção inteligente: Sugere itens relevantes segundo contexto em que se encontra o listado.
- Navegação completa por teclado (Tab para percorrer itens e botões).
- Foco visível ao adicionar/eliminar elementos, com retorno ao último foco ativo.
- Uso de aria-live e aria-label para mudanças dinâmicas ("item eliminado", "lista vazia").
- Não depender unicamente de cor para indicar estados.
- Áreas táteis adequadas em dispositivos móveis (mínimo 44x44px).
- Rows individuais por item com e sem dividers
- Conteúdo do row (variável segundo necessidade):
- Thumbnail (opcional)
- Título e descrição (opcional)
- Tag de estado (opcional)
- Link de detalhe (opcional)
Utiliza componentes de:
- Card
- Thumbnail
- Icon
- Tag
- Link
Default
- Com dividers que segmentam cada row da lista
Data List with no divider
- Sem dividers que segmentam cada row da lista
✅ Do
- Manter o listado entre 3 e 8 itens para melhor escaneabilidade.
- Fornecer contexto claro sobre o que representa a lista e que ações se esperam.
- Mostrar apenas o conteúdo relevante em cada row da lista para não sobrecarregar o listado.
❌ Don't
- Não adicionar demasiados itens sem estrutura clara.
- Não utilizar mais de 2 ações por row
Additional props are passed to the <DataList> element. See div docs for a list of props accepted by the <DataList> element.
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. |
children* | React.ReactNode | Content of the row. | |
topDivider | boolean | 'true' | Determines if the row has a top border. |