Docs›Componentes (Admin)›mad-steps
Componentes (Admin)

mad-steps

Indicador de etapas (arrows/dots/numbers/progress).

Indicador de progresso em etapas. 4 variantes visuais, filhos declarativos via <mad-step>.

Props do <mad-steps>

Prop Tipo Default Descricao
variant string 'dots' arrows, dots, numbers, progress
current int/string 1 Step ativo (1-based)
clickable bool false Steps completos sao clicaveis
size string '' sm, '' (normal), lg
class string '' Classes CSS extras
mad:click string '' Metodo PHP chamado ao clicar step

Props do <mad-step> (filho)

Prop Tipo Default Descricao
key string auto (index) Identificador unico
label string '' Texto do step (obrigatorio)
description string '' Texto secundario (dots e numbers)
icon string '' Icone Lucide
color string '' Cor customizada (CSS) aplicada quando o step esta completed ou active
status string auto completed, active, pending, error

Comportamento automatico de status

Com current="2":

  • Steps 1..current-1 → completed (mostra checkmark)
  • Step current → active
  • Steps current+1..n → pending
  • Step com status="error" explicito mantem error

Variantes

Dots (padrao)

<mad-steps variant="dots" current="2">
    <mad-step icon="user" label="Dados" description="Informacoes pessoais" />
    <mad-step icon="credit-card" label="Pagamento" />
    <mad-step icon="check" label="Confirmacao" />
</mad-steps>

Arrows

<mad-steps variant="arrows" current="3">
    <mad-step label="Rascunho" />
    <mad-step label="Analise" />
    <mad-step label="Aprovado" />
    <mad-step label="Publicado" />
</mad-steps>

Numbers

<mad-steps variant="numbers" current="2">
    <mad-step label="Identificacao" />
    <mad-step label="Documentos" />
    <mad-step label="Assinatura" />
</mad-steps>

Progress

<mad-steps variant="progress" current="2">
    <mad-step label="Upload" />
    <mad-step label="Processando" />
    <mad-step label="Concluido" />
</mad-steps>

Steps clicaveis

<mad-steps variant="dots" current="3" clickable mad:click="onStepClick">
    <mad-step key="dados" label="Dados" />
    <mad-step key="pagamento" label="Pagamento" />
    <mad-step key="confirma" label="Confirmacao" />
</mad-steps>
public function onStepClick(string $key): MadResponse
{
    return MadToast::info("Step: {$key}");
}

Step com erro

<mad-steps variant="dots" current="3">
    <mad-step label="Dados" />
    <mad-step label="Pagamento" status="error" />
    <mad-step label="Confirmacao" />
</mad-steps>

Steps do banco — <mad-db-steps>

Quando as etapas sao registros (funil, workflow, status), use a variante DB: ela carrega os steps no render e calcula o current pelo value.

Prop Default Descricao
model '' Classe do model Eloquent (obrigatorio)
database MAIN_DATABASE Conexao
key 'id' Campo PK (vira o key do step)
display 'nome' Campo do label
color-field '' Campo da cor — aplica cor customizada por step
order-by 'id asc' Ordenacao
filters [] [['campo','op','val'], ...]
value '' Valor atual (ID do step ativo)
variant 'arrows' arrows, dots, numbers, progress
clickable false Steps completos sao clicaveis
size '' sm, '', lg
class '' Classes CSS extras
mad:click '' Metodo PHP ao clicar

Atencao ao default: no <mad-db-steps> a variante padrao e arrows (no <mad-steps> e dots).

<mad-db-steps model="EtapaNegociacao" display="nome" color-field="cor"
    order-by="ordem asc" :value="$negociacao->etapa_id"
    variant="arrows" clickable mad:click="onMudaEtapa" />

Current dinamico via PHP

<mad-steps variant="dots" :current="$pedido->etapa_atual">
    <mad-step label="Criado" />
    <mad-step label="Pago" />
    <mad-step label="Enviado" />
    <mad-step label="Entregue" />
</mad-steps>

NUNCA fazer

{{-- ERRADO: montar steps manualmente com HTML/CSS --}}
<div class="steps">
    <div class="step active">1. Dados</div>
    <div class="step">2. Pagamento</div>
</div>

{{-- CERTO: usar mad-steps --}}
<mad-steps variant="dots" current="1">
    <mad-step label="Dados" />
    <mad-step label="Pagamento" />
</mad-steps>

{{-- ERRADO: montar wizard de etapas com biblioteca JS externa --}}
<div id="custom-wizard"></div>
<script>new CustomStepper('#custom-wizard', { steps: [...] });</script>

{{-- CERTO: usar mad-steps no Blade --}}
<mad-steps variant="arrows" current="2">...</mad-steps>