Pular para o conteúdo

SetupSteps

Lista de passos de configuração com estado, ação e progresso, para resolver de relance.

O SetupSteps mostra uma configuração em etapas: cada passo tem um estado, um texto de apoio e, quando falta fazer algo, uma ação. Um cabeçalho traz o progresso ("2 de 3") e, quando tudo está feito, o bloco recolhe numa linha "tudo pronto". É genérico: não conhece provedor algum. Quem usa monta os passos. No Admin ele guia a Cloudflare e, depois, a Fonte de Pedidos.

import { SetupSteps } from "@rastreio-x/ui";
import type { SetupStep } from "@rastreio-x/ui";

Padrão

A barra de segmentos e a lista mostram o estado de cada passo. Só passos pending e error exibem a ação.

Estados

Quatro estados, cada um com ícone e texto para leitor de tela: done (Concluído), pending (Pendente), error (Com erro) e blocked (Bloqueado). Em blocked, o detail explica o motivo.

EstadoÍconeAção apareceQuando usar
doneCírculo com vistoNãoO passo está resolvido.
pendingCírculo tracejadoSimÉ a vez da pessoa.
errorCírculo com XSimO passo falhou e dá para tentar de novo.
blockedCírculo com exclamaçãoNãoDepende de um passo anterior.

Tudo pronto

Com todos os passos done, o bloco recolhe numa linha com o título e doneLabel (padrão: "tudo pronto"). O botão "Ver passos" reabre a lista e "Recolher" volta.

Em tela estreita

O layout é o mesmo no desktop e em 390 px: a ação desce para baixo do texto, sem esconder nada.

No Admin

Na área da plataforma, cada passo concluído libera o seguinte, e a lista é montada a cada render a partir do estado real (conexão, zonas, DNS).

Anatomia

ParteOrigemObservação
TítulotitleTambém é o nome da região quando for texto.
Contagemautomática"N de M", dos passos done.
BarraautomáticaUm segmento por passo, com a cor do estado.
Passosteps[]id, status, title, detail? e action?.
Açãosteps[].actionNormalmente um Button; só em pending e error.

Propriedades

Cada item de steps segue o tipo SetupStep:

CampoTipoDescrição
idstringIdentifica o passo; vira data-testid com testId.
status"done" | "pending" | "error" | "blocked"Estado do passo.
titleReactNodeO que fazer, em frase curta.
detailReactNodeUma linha de apoio; em blocked, o motivo.
actionReactNodeA ação do passo, mostrada em pending e error.

Animações

O SetupSteps não anima: os passos mudam de estado e o bloco recolhe e expande sem transição, e o arquivo não importa Motion. Se você animar a entrada de um novo passo, respeite prefers-reduced-motion.

Acessibilidade

  • O bloco é uma section nomeada pelo título (quando é texto) e a lista é uma ol: a ordem dos passos é lida.
  • Cada passo leva o estado em texto oculto ("Concluído", "Pendente", "Com erro", "Bloqueado"), então a cor e o ícone nunca são o único sinal.
  • "Ver passos" e "Recolher" são botões com aria-expanded.
  • A barra de segmentos é decorativa (aria-hidden); o progresso está em texto, na contagem.
  • O foco passa pelas ações dos passos na ordem da lista.

Boas práticas

Faça

Passos curtos e na ordem de execução, com o motivo escrito quando um passo está bloqueado.

Evite

Esconder passos bloqueados, ou deixar um passo com erro sem ação nem explicação.
  • Uma ação por passo, com rótulo de verbo em Title Case curto: "Conectar Fonte".
  • Em error, diga o que falhou em detail e ofereça tentar de novo.
  • Use blocked em vez de remover o passo: a pessoa entende o caminho todo.
  • Não use para progresso de carregamento; para isso há ProgressBar.

Relacionados

  • Button para a ação de cada passo.
  • Alert para avisos fora da lista de passos.
  • Timeline para histórico de eventos, não de configuração.