Progress Componentes
Mostra quanto de algo já foi feito: barra (envio de arquivo, perfil completo) ou anel com a porcentagem no meio, que pode contar de 0 até o valor quando aparece na tela.
O que é
Serve para a pessoa ver o andamento: "Enviando 72%", "Perfil 80% completo", "Meta do mês: 64%". São duas formas: a barra (sw-prg com uma sw-prg-bar dentro) e o anel (sw-prg-circ). Espessura, cor, listras, brilho e degradê se escolhem com palavras no atributo, como no botão.
O visual da barra e do anel é CSS. O valor (0 a 100) vai no atributo sw-prg-val="72" — na barra ele vira a largura do preenchimento, no anel vira o traço. Para atualizar, troque o atributo pelo JavaScript (setAttribute('sw-prg-val', 80)) e a barra anda suavemente sozinha. O atributo e a contagem animada do anel (sw-prg-animate) precisam do swcore.min.js. Sem JS, o jeito antigo continua valendo: style="width:72%" na barra e style="--sw-prg-val:72" no anel.
Quando usar
- Envio de arquivo ou tarefa em andamento: barra, atualizada pelo JavaScript.
- "Seu perfil está 80% completo": barra com rótulo (
sw-prg-lbl). - Números de painel (meta do mês, ocupação, satisfação): anel.
- Página de "números da empresa" que anima quando a pessoa rola até ela: anel com
sw-prg-animate. - Para a barra fina de progresso de leitura no topo da página, use sw-progresso.
Comece aqui
-
1
Coloque o SWCore na página (CSS no head, JS no fim do body — o JS lê o
sw-prg-val).<link rel="stylesheet" href="https://swcore.sanweb.com.br/dist/2.1.0/swcore.min.css"> <!-- fim do body --> <script src="https://swcore.sanweb.com.br/dist/2.1.0/swcore.min.js"></script> -
2
Barra: a caixa
sw-prge o preenchimentosw-prg-bar, com o valor emsw-prg-val.Enviando fotos72%<div sw-prg-lbl><span>Enviando fotos</span><span>72%</span></div> <div sw-prg><div sw-prg-bar sw-prg-val="72"></div></div> -
3
Anel:
sw-prg-circcom o valor emsw-prg-val(0 a 100) e o texto do meio num<span>.72%<div sw-prg-circ sw-prg-val="72"><span>72%</span></div>
Todas as variações
Cada quadro abaixo é o componente de verdade, rodando. O código embaixo é exatamente o que está no quadro: copie e cole.
1. Barra — espessura
Sem palavra, a barra tem 8 px de altura.
<div sw-prg="pp"><div sw-prg-bar sw-prg-val="40"></div></div>
<div sw-prg><div sw-prg-bar sw-prg-val="55"></div></div>
<div sw-prg="g"><div sw-prg-bar sw-prg-val="70"></div></div>
2. Barra — cor do preenchimento
A cor vai na barra de dentro (sw-prg-bar), não na caixa. Sem cor, usa o degradê da cor primária do seu site.
<div sw-prg="g"><div sw-prg-bar sw-prg-val="65"></div></div>
<div sw-prg="g"><div sw-prg-bar="suc" sw-prg-val="100"></div></div>
<div sw-prg="g"><div sw-prg-bar="ale" sw-prg-val="45"></div></div>
<div sw-prg="g"><div sw-prg-bar="err" sw-prg-val="20"></div></div>
3. Barra — listras
strp desenha listras; anim faz as listras andarem (bom para "processando…"). Vão na caixa sw-prg; a cor segue a da barra (sw-prg-bar="suc|ale|err").
<div sw-prg="g strp"><div sw-prg-bar sw-prg-val="60"></div></div>
<div sw-prg="g strp anim"><div sw-prg-bar sw-prg-val="85"></div></div>
<div sw-prg="g strp"><div sw-prg-bar="suc" sw-prg-val="70"></div></div>
4. Anel — estilos
O anel tem 8rem por padrão. Palavras de estilo em sw-prg-circ: grad (degradê da cor primária para a secundária), glow (brilho em volta), thin/thick (traço fino/grosso). Combinam entre si.
<div sw-prg-circ sw-prg-val="65"><span>65%</span></div>
<div sw-prg-circ="grad" sw-prg-val="75"><span>75%</span></div>
<div sw-prg-circ="glow" sw-prg-val="80"><span>80%</span></div>
<div sw-prg-circ="thin" sw-prg-val="50"><span>50%</span></div>
<div sw-prg-circ="thick" sw-prg-val="90"><span>90%</span></div>
<div sw-prg-circ="grad glow thick" sw-prg-val="88"><span>88%</span></div>
5. Anel — cores
suc, ale e err trocam a cor do traço; com glow, o brilho acompanha a cor.
<div sw-prg-circ="suc" sw-prg-val="100"><span>100%</span></div>
<div sw-prg-circ="ale" sw-prg-val="45"><span>45%</span></div>
<div sw-prg-circ="err" sw-prg-val="15"><span>15%</span></div>
<div sw-prg-circ="suc glow" sw-prg-val="92"><span>92%</span></div>
6. Anel — tamanho
O tamanho é a variável --sw-prg-sz (padrão 8rem), escrita junto com o valor. O texto do meio não muda de tamanho sozinho: aumente com uma classe de texto (ex.: t-g) no <span>.
<div sw-prg-circ sw-prg-val="60" style="--sw-prg-sz:5rem"><span class="t-pp">60%</span></div>
<div sw-prg-circ sw-prg-val="60"><span>60%</span></div>
<div sw-prg-circ="grad" sw-prg-val="60" style="--sw-prg-sz:12rem"><span class="t-gg">60%</span></div>
7. Anel que conta ao aparecer
Com sw-prg-animate, o anel começa vazio e, quando 40% dele aparece na tela, enche até o valor enquanto o número do meio sobe junto. Acontece uma vez só. sw-prg-duration muda o tempo da animação — número e traço juntos (padrão 1400 ms); sw-prg-suffix troca o "%" por outro texto (use "" para número puro). Role a página para ver.
<div sw-prg-circ="grad glow" sw-prg-animate sw-prg-val="72"><span>0%</span></div>
<div sw-prg-circ="suc" sw-prg-animate sw-prg-duration="3000" sw-prg-val="95"><span>0%</span></div>
<div sw-prg-circ sw-prg-animate sw-prg-suffix=" pts" sw-prg-val="87"><span>0 pts</span></div>
<div sw-prg-circ="thick" sw-prg-animate sw-prg-suffix="" sw-prg-val="48"><span>0</span></div>
Tabela de opções
| Palavra | O que faz | Exemplo |
|---|---|---|
| Barra — peças | ||
sw-prg | A caixa (trilho cinza). Ocupa a largura de onde estiver. | <div sw-prg> |
sw-prg-bar | O preenchimento, dentro da caixa. | <div sw-prg-bar sw-prg-val="72"></div> |
sw-prg-val | O valor, de 0 a 100 (sem "%"), na barra ou no anel. Trocar depois atualiza sozinho. Precisa do JS; sem JS use style="width:72%" (barra) ou style="--sw-prg-val:72" (anel). | sw-prg-val="72" |
sw-prg-lbl | Linha de rótulo acima da barra: o 1º <span> fica à esquerda, o 2º à direita. | <div sw-prg-lbl><span>Envio</span><span>72%</span></div> |
| Barra — palavras em sw-prg | ||
(nenhuma) | Altura 8 px. | |
pp | Fina, 4 px. | sw-prg="pp" |
g | Grossa, 14 px. | sw-prg="g" |
strp | Listrada. | sw-prg="strp" |
anim | Listras andando (use junto com strp). | sw-prg="strp anim" |
| Barra — palavras em sw-prg-bar | ||
(nenhuma) | Degradê da cor primária. | |
suc | Verde. | sw-prg-bar="suc" |
ale | Amarelo. | sw-prg-bar="ale" |
err | Vermelho. | sw-prg-bar="err" |
| Anel — valor e tamanho | ||
sw-prg-val | O valor, de 0 a 100 (sem "%"). | sw-prg-val="72" |
--sw-prg-val | O mesmo valor pelo style (jeito antigo, funciona sem JS). | style="--sw-prg-val:72" |
--sw-prg-sz | Largura e altura do anel. Padrão: 8rem. | style="--sw-prg-sz:12rem" |
| Anel — palavras em sw-prg-circ | ||
grad | Traço em degradê (primária → secundária). | sw-prg-circ="grad" |
glow | Brilho em volta, na cor do traço. | sw-prg-circ="glow" |
thin | Traço fino. | sw-prg-circ="thin" |
thick | Traço grosso. | sw-prg-circ="thick" |
suc / ale / err | Cor do traço: verde, amarelo, vermelho. | sw-prg-circ="suc" |
| Anel que conta (precisa do JS) | ||
sw-prg-animate | Começa vazio e enche até o valor quando aparece na tela. | <div sw-prg-circ sw-prg-animate sw-prg-val="72"> |
sw-prg-duration | Tempo da animação (traço e número juntos), em ms. Padrão: 1400. | sw-prg-duration="3000" |
sw-prg-suffix | Texto depois do número. Padrão: "%". | sw-prg-suffix=" pts" |
Receitas prontas — usos reais
Situações que aparecem em quase todo site. Copie a que servir.
<div sw-prg-lbl><span>proposta-comercial.pdf</span><span id="envio-txt">0%</span></div>
<div sw-prg="g"><div sw-prg-bar id="envio-bar" sw-prg-val="0"></div></div>
<script>
const barra = document.getElementById('envio-bar');
const texto = document.getElementById('envio-txt');
function atualizar(pct) { // chame com o progresso real (0 a 100)
barra.setAttribute('sw-prg-val', pct);
texto.textContent = pct + '%';
if (pct === 100) {
barra.setAttribute('sw-prg-bar', 'suc'); // fica verde no fim
texto.textContent = 'Enviado';
}
}
</script>
<div class="bg-sur bd r-m p-3 flx f-cl gap-2">
<div sw-prg-lbl><span>Perfil da loja</span><span>80%</span></div>
<div sw-prg><div sw-prg-bar="suc" sw-prg-val="80"></div></div>
<a href="/perfil/logo" sw-btn="ghost p">Falta adicionar o logotipo</a>
</div>
<div class="flx gap-6 f-wr j-ct t-ct">
<div class="flx f-cl alc gap-2"><div sw-prg-circ="grad glow" sw-prg-animate sw-prg-val="64"><span>0%</span></div><span class="t-mut">Vendas</span></div>
<div class="flx f-cl alc gap-2"><div sw-prg-circ="suc" sw-prg-animate sw-prg-val="91"><span>0%</span></div><span class="t-mut">Satisfação</span></div>
<div class="flx f-cl alc gap-2"><div sw-prg-circ="ale" sw-prg-animate sw-prg-val="38"><span>0%</span></div><span class="t-mut">Novos clientes</span></div>
</div>
<div sw-prg-lbl><span>Etapa 2 de 4 — Entrega</span><span>50%</span></div>
<div sw-prg="pp"><div sw-prg-bar sw-prg-val="50"></div></div>
API (JavaScript)
el.setAttribute("sw-prg-val", 72)<span> é trocado junto.el.style.width = "72%"[sw-prg-bar]).el.style.setProperty("--sw-prg-val", 72)<span> você troca junto.SW.Progress.initAll(raiz)sw-prg-val e a contagem dos anéis sw-prg-animate dentro de raiz. Normalmente não precisa: o SWCore liga sozinho.Precisa de quê
swcore.min.css— barra e anel.swcore.min.js— parasw-prg-valesw-prg-animate.
Cuidados — erros comuns
- Colocar o valor na palavra do atributo (
sw-prg="72") não funciona: o valor tem atributo próprio,sw-prg-val="72", nosw-prg-barou nosw-prg-circ. - Escrever
--sw-prg-val:72%: o anel some. É número puro, sem "%". - Pôr a cor na caixa (
sw-prg="suc"): não pinta. A cor vai na barra de dentro:sw-prg-bar="suc". - Barra dentro de uma linha
flxsem largura: ela encolhe até sumir. Dê largura ao pai (ex.:w-flouf-1). - Usar
sw-prg-animatenum anel que você atualiza pelo JavaScript: a contagem é feita para rodar uma vez, na entrada. Para valores que mudam, deixe semsw-prg-animate.
O que ele não faz
- Não acompanha nada sozinho: quem diz o progresso é você, atualizando o
sw-prg-val. - O texto do meio do anel não é gerado na primeira vez: sem
sw-prg-animate, escreva você o número no<span>(depois, trocar osw-prg-valatualiza o número). - Não tem modo "sem valor definido" (barra correndo sem parar para tempo desconhecido). O mais perto é
sw-prg="strp anim"com a barra em 100%.

