Feito sobre o UI SDK 0.1.0-beta.2 da Vercel. A API pode mudar.
Timeline
Uma linha do tempo no UI SDK da Vercel para atividade, progresso de pedidos e passos de agentes, vertical ou horizontal, com status, horários, ícones e modo feed.
- Componentes de exibição de dados
- 7 partes
- 8 exemplos
@ui-sdk/core@ui-sdk/reactclass-variance-authority
pnpm dlx shadcn@latest add https://hextaui.com/r/ui-sdk-timeline.jsonAdiciona o componente, os tokens de tema do HextaUI e quaisquer componentes do HextaUI dos quais ele depende.
Adicione os tokens de tema ao seu CSS global, se ainda não o fez.
Instale as dependências.
pnpm add @ui-sdk/react@0.1.0-beta.2 @ui-sdk/core@0.1.0-beta.2 class-variance-authority cnCopie e cole o código a seguir no seu projeto.
components/ui/ui-sdk-timeline.tsx Atualize os caminhos de importação para corresponder à configuração do seu projeto.
O UI SDK adiciona um pouco de CSS próprio em uma camada de cascata chamada ui-sdk. Declare essa camada no topo da sua folha de estilos global, acima do import do Tailwind, para que suas classes vençam.
Uma linha do tempo lista o que aconteceu, ou vai acontecer, como um feed de atividade, o progresso de um pedido ou os passos de um agente. Para leitores de tela é uma lista com uma parada de tabulação, e as setas movem entre eventos. Passe dateTime para TimelineTime para a data ser legível por máquina enquanto o texto continua amigável. O UI SDK a marca como experimental na 0.1.0-beta.2.
Cada parte dentro de um item é opcional. O marcador fica na própria coluna e o conector vai dele até o próximo evento, oculto depois do último. Qualquer outra coisa que você puser num item, como um botão ou um recolhível, se alinha com o título.
Dê a cada item um status de complete, current ou upcoming. O evento atual recebe aria-current="step" e a parada de tabulação, e um controlador foca um evento pelo value. Diga o status no título também, já que o marcador só o mostra.
Um ícone em TimelineMarker o transforma num círculo pequeno. Ponha um spinner no passo atual enquanto um agente trabalha, e uma duração como PT5S em dateTime.
A variant do marcador é success, warning, destructive ou info, para um ponto vazio ou um ícone.
orientation="horizontal" põe os eventos em linha, como um roteiro. Esquerda e Direita movem entre eles, e loop={false} para nas pontas.
Links e botões dentro de um evento continuam na ordem de tabulação. Tab vai do evento para eles, e as setas continuam movendo entre eventos.
feed transforma a lista num feed de artigos para linhas do tempo que crescem, e Page Down e Page Up movem entre eles. Defina busy enquanto mais carregam.
Os marcadores e a linha vão para o lado direito.
| Tecla | Ação |
|---|---|
| ↓↑ | Movem entre eventos numa linha do tempo vertical. |
| →← | Movem entre eventos numa linha do tempo horizontal. Invertem em texto da direita para a esquerda. |
| HomeEnd | Focam o primeiro ou o último evento. |
| PageDownPageUp | Num feed, focam o artigo seguinte ou anterior, de qualquer ponto dentro de um. |
| Tab | Entra no evento atual, ou no primeiro, e depois vai para os links e botões dentro dele. |
Uma linha do tempo é uma lista nomeada com aria-label, ou um feed de artigos com suas posições. Cada evento é nomeado pelo título e descrito pelo horário e pela descrição, e marcadores e conectores ficam ocultos para leitores de tela.
O evento focado mostra um anel com espaço ao redor. As cores do marcador mudam suavemente entre status só quando o movimento é permitido, e em cores forçadas os pontos e linhas usam a cor do texto.
Cada parte envolve a parte do UI SDK de mesmo nome e aceita todas as suas props, incluindo render e um className que pode ser uma função do estado da parte.
| Prop | Tipo | Padrão |
|---|---|---|
orientation | "vertical" | "horizontal" | "vertical" |
loop | boolean | true |
feed | boolean | false |
busyDefine aria-busy num feed enquanto carrega. | boolean | false |
controllerDe createTimelineController(). | TimelineController | – |
render | ReactElement | (props, state) => ReactElement | – |
| Atributo | Descrição |
|---|---|
data-slot="timeline" | Para mirar a linha do tempo no CSS. |
data-orientation | vertical ou horizontal. |
data-busy | Presente enquanto um feed está ocupado. |
--timeline-count | Quantos eventos há na página. |
| Prop | Tipo | Padrão |
|---|---|---|
valueNomeia o evento para o focus() do controlador. | string | – |
status | "complete" | "current" | "upcoming" | – |
render | ReactElement | (props, state) => ReactElement | – |
| Atributo | Descrição |
|---|---|
data-slot="timeline-item" | Para mirar um evento no CSS. |
data-complete | Presente quando o status do evento é complete. |
data-current | Presente quando o status do evento é current. |
data-upcoming | Presente quando o status do evento é upcoming. |
data-first | Presente no primeiro evento quando ele está na página. |
data-last | Presente no último evento quando ele está na página. |
--timeline-index | A posição do evento a partir de 0. |
| Prop | Tipo | Padrão |
|---|---|---|
variant | "default" | "success" | "warning" | "destructive" | "info" | "default" |
childrenUm ícone ou imagem. Vazio desenha um ponto. | ReactNode | – |
render | ReactElement | (props, state) => ReactElement | – |
| Atributo | Descrição |
|---|---|
data-slot="timeline-marker" | Para mirar o marcador no CSS. |
data-variant | A variante do marcador. |
data-complete | Presente quando o status do evento é complete. |
data-current | Presente quando o status do evento é current. |
data-upcoming | Presente quando o status do evento é upcoming. |
A linha do marcador até o próximo evento. Fica sólida sob um evento completo e oculta depois do último.
Nomeia o evento. Renderize-o como título com render={<h3 />} para que dê para navegar entre eventos por título.
| Prop | Tipo | Padrão |
|---|---|---|
dateTimeUma data, hora ou duração legível por máquina. Descreve o evento. | string | – |
Mais sobre o evento. Descreve o evento.
- AvatarFotos de usuário com fallback de iniciais, badges de status e grupos empilhados que se recolhem em uma contagem.
- BadgeRótulos de status com pontos coloridos, tags removíveis que deslizam até fechar e contagens que rolam até o novo valor.
- CardUma superfície para agrupar conteúdo, com três variantes, mídia de ponta a ponta, raios concêntricos e links no card inteiro.
- ChartGráficos do Recharts com cores do tema, um tooltip e uma legenda que leem os rótulos de uma única configuração, e navegação por teclado com um anel de foco visível.
- Data tableUma tabela para dados reais, com ordenação, busca, seleção de linhas, colunas fixadas, cabeçalho fixo e paginação.
- ItemUma linha de mídia, texto e ações para listas, configurações e seletores, com uma superfície agrupada e um destaque de hover que desliza entre as linhas.