MAD Lab
/
Tutor > Feedback e display > Progresso

Progresso

Feedback e display

mad-progress mad-spinner mad-skeleton
Progresso

mad-progress com value, variant, size e label.

35% (padrão)

65% — success, sm

90% — danger, lg

50% — warning

resources/views/tutor/examples/feedback-progresso/valores.blade.php
<div style="display:flex;flex-direction:column;gap:12px;max-width:480px;">
    <mad-progress :value="35" label="35% (padrão)" />
    <mad-progress :value="65" variant="success" size="sm" label="65% — success, sm" />
    <mad-progress :value="90" variant="danger" size="lg" label="90% — danger, lg" />
    <mad-progress :value="50" variant="warning" label="50% — warning" />
</div>
Spinner

mad-spinner nos tamanhos sm/padrão/lg, sozinho ou ao lado de um texto.

sm
padrão
lg
Carregando relatório...
resources/views/tutor/examples/feedback-progresso/spinner.blade.php
<div style="display:flex;align-items:center;gap:32px;">
    <div style="text-align:center;">
        <mad-spinner size="sm" />
        <div style="margin-top:6px;font-size:.8rem;color:#6b7280;">sm</div>
    </div>
    <div style="text-align:center;">
        <mad-spinner />
        <div style="margin-top:6px;font-size:.8rem;color:#6b7280;">padrão</div>
    </div>
    <div style="text-align:center;">
        <mad-spinner size="lg" />
        <div style="margin-top:6px;font-size:.8rem;color:#6b7280;">lg</div>
    </div>
</div>
<div style="height:16px;"></div>
<div style="display:flex;align-items:center;gap:8px;">
    <mad-spinner size="sm" />
    <span>Carregando relatório...</span>
</div>
Skeleton em lista

mad-skeleton simulando linhas de uma listagem carregando.

Linhas de uma listagem enquanto os dados ainda não chegaram do servidor.

resources/views/tutor/examples/feedback-progresso/skeleton-lista.blade.php
<p style="margin:0 0 10px;font-size:.85rem;color:#6b7280;">Linhas de uma listagem enquanto os dados ainda não chegaram do servidor.</p>
<div style="display:flex;align-items:center;gap:10px;margin-bottom:10px;max-width:480px;">
    <mad-skeleton width="36px" height="36px" rounded="full" />
    <mad-skeleton width="70%" height="12px" />
</div>
<div style="display:flex;align-items:center;gap:10px;margin-bottom:10px;max-width:480px;">
    <mad-skeleton width="36px" height="36px" rounded="full" />
    <mad-skeleton width="50%" height="12px" />
</div>
<div style="display:flex;align-items:center;gap:10px;margin-bottom:10px;max-width:480px;">
    <mad-skeleton width="36px" height="36px" rounded="full" />
    <mad-skeleton width="85%" height="12px" />
</div>
Progresso dinâmico (ação wire real)

mad:click avança/reinicia $pctDemo no servidor e a barra re-renderiza.

20%

resources/views/tutor/examples/feedback-progresso/dinamico.blade.php
@php
    // Escopo isolado do <x-tutor-demo>: pctDemo é prop pública do host
    // (TutorFeedbackProgresso), não atravessa o @include sozinha — resolve via
    // o stack estático de MadRenderContext (ver resources/views/tutor/examples/grids-formatacao/).
    $__component = \Mad\Component\MadRenderContext::getComponent();
@endphp
<div style="max-width:420px;">
    <mad-progress :value="$__component->pctDemo"
        :variant="$__component->pctDemo >= 100 ? 'success' : 'info'"
        :label="$__component->pctDemo . '%'" />
</div>
<div style="height:12px;"></div>
<div style="display:flex;gap:8px;">
    <mad-btn variant="primary" icon="plus" mad:click="onAvancarDemo">Avançar 20%</mad-btn>
    <mad-btn variant="ghost" icon="rotate-ccw" mad:click="onReiniciarDemo">Reiniciar</mad-btn>
</div>
app/control/Tutor/TutorFeedbackProgresso.php
public function onAvancarDemo(): void
{
    $this->pctDemo = min(100, $this->pctDemo + 20);
}
Código-fonte completo da página
app/control/Tutor/TutorFeedbackProgresso.php
<?php

namespace App\Control\Tutor;

use App\Support\Tutor\TutorPage;

class TutorFeedbackProgresso extends TutorPage
{
    protected string $catalogKey = 'feedback_progresso';

    /** Percentual do exemplo "dinâmico" — persiste entre cliques via wire state. */
    public int $pctDemo = 20;

    public function onAvancarDemo(): void
    {
        $this->pctDemo = min(100, $this->pctDemo + 20);
    }

    public function onReiniciarDemo(): void
    {
        $this->pctDemo = 0;
    }
}
resources/views/tutor/feedback/progresso.blade.php
<x-tutor-page page="feedback_progresso">
    <x-tutor-demo demo="tutor.examples.feedback-progresso.valores"
        title="Progresso" desc="mad-progress com value, variant, size e label." />

    <x-tutor-demo demo="tutor.examples.feedback-progresso.spinner"
        title="Spinner" desc="mad-spinner nos tamanhos sm/padrão/lg, sozinho ou ao lado de um texto." />

    <x-tutor-demo demo="tutor.examples.feedback-progresso.skeleton-lista"
        title="Skeleton em lista" desc="mad-skeleton simulando linhas de uma listagem carregando." />

    <x-tutor-demo demo="tutor.examples.feedback-progresso.dinamico"
        title="Progresso dinâmico (ação wire real)" desc="mad:click avança/reinicia $pctDemo no servidor e a barra re-renderiza."
        php="TutorFeedbackProgresso::onAvancarDemo" />
</x-tutor-page>