Stepper
Mostra em que passo de um fluxo a pessoa está, com passos concluídos, atual e futuros.
O Stepper indica progresso em fluxos de poucos passos: o onboarding, a importação de CSV (Arquivo, Prévia, Importação) e os Marcos da Jornada. Ele mostra o estado; quem avança é você, no botão "Continuar". Para alternar visões sem ordem, use Tabs; para uma lista cronológica longa, Timeline.
import { Stepper } from "@rastreio-x/ui";
Padrão
currentStep é o índice (a partir de zero) do passo atual. Passos anteriores aparecem concluídos, com o check animado. Dê aria-label à lista.
Com descrições
Stepper.Description explica o que acontece em cada passo, e cabe melhor em telas largas.
Vertical
orientation="vertical" empilha os passos, útil em diálogos e colunas estreitas.
Tamanhos
sm (o do onboarding do Admin), md e lg.
Com ícones
Stepper.Icon dentro do Stepper.Indicator troca o número por um ícone de @rastreio-x/ui/icons (com aria-hidden). O passo concluído continua mostrando o check.
Controlado e clicável
Com onStepChange os passos viram botões; sem ele, o Stepper é só informativo. Controle o estado com currentStep.
Anatomia
Stepper.Step: um passo (li); fornece o contexto de estado aos filhos.Stepper.Indicator: o círculo com número, ícone ou check.Stepper.Content,Stepper.TitleeStepper.Description: o texto do passo.Stepper.Separator: a linha entre passos, preenchida conforme o progresso; some no último passo.
Propriedades
Stepper:
Stepper.Step:
Stepper.Separator:
Animações
O check do passo concluído é desenhado com animação e a linha do separador se preenche de acordo com o progresso, em transição de CSS. Com prefers-reduced-motion, a folha global da fachada reduz as transições a 0,01 ms e o estado aparece direto.
Acessibilidade
- É uma lista ordenada (
ol); o leitor de tela anuncia a posição ("2 de 4"). - O passo atual é marcado com
aria-current="step"; passos concluídos e futuros se distinguem por ícone e texto, não só por cor. - Com
onStepChange, cada passo é um botão alcançável por Tab, ativado com Enter ou Espaço. - Passe
aria-label("Passos do onboarding") para dar nome ao conjunto. - Títulos curtos: o texto não pode ser cortado em 390 px.
Boas práticas
Faça
Evite
- Deixe o Stepper informativo quando o fluxo for linear e validado; torne-o clicável só se voltar não perde dados.
- Use
smem cabeçalhos de página emddentro de diálogos. - Em celulares estreitos, prefira
orientation="vertical"ou reduza a quantidade de passos visíveis.