UI

Spinner

Indicador de carregamento acessível para esperas curtas de duração desconhecida.

Carregando agenda…

Instalação

npx shadcn@latest add @lenstech/spinner

Uso

import { Spinner } from "@/components/ui/spinner"
<Spinner label="Carregando agenda" />

O Spinner tem role="status" e é anunciado por leitores de tela com o texto de label (padrão: "Carregando…"). A cor segue o texto (currentColor), então basta uma classe text-* para mudá-la.

Exemplos

Tamanhos

Cores

Use apenas tokens semânticos, como text-muted-foreground ou text-link.

Em botões

Evite anúncio duplicado

O Button com isPending já anuncia o estado de carregamento. Dentro dele, torne o Spinner apenas visual com aria-hidden e role="presentation", como no exemplo acima.

Sobre o conteúdo

Para indicar que um bloco está sendo atualizado, sobreponha o Spinner ao conteúdo atual.

Agendamentos de hoje

14

3 confirmações pendentes

Quando usar

  • Use para esperas curtas sem progresso mensurável: atualizar um card, enviar um formulário.
  • Não use no carregamento inicial de listas e cards — prefira Skeleton, que evita saltos de layout.
  • Não use quando o andamento é conhecido — use Progress.

API

Spinner

Aceita todas as props de um <svg> (é o ícone Loader2 do lucide), mais:

Prop

Type

On this page