Spinner
Um indicador de carregamento com tracinhos no estilo Apple ou um anel que "respira", que pode esperar antes de aparecer e permanecer o suficiente para não piscar.
pnpm dlx shadcn@latest add https://hextaui.com/r/spinner.jsonAdiciona o componente, os tokens de tema do HextaUI e quaisquer componentes do HextaUI dos quais ele depende.
Adicione os tokens de tema ao seu CSS global, se ainda não o fez.
Instale as dependências.
pnpm add class-variance-authority cnCopie e cole o código a seguir no seu projeto.
components/ui/spinner.tsx Atualize os caminhos de importação para corresponder à configuração do seu projeto.
O padrão é o indicador de oito raios das plataformas Apple. variant="ring" gira enquanto seu arco cresce e encolhe, então parece trabalhando em vez de travado. Ambos são desenhados na cor atual do texto.
Sem piscar
Passe loading e o spinner espera delay (150ms) antes de aparecer, para carregamentos rápidos nunca o exibirem, e depois permanece por pelo menos minDuration (400ms) quando fica visível.
Tamanhos
sm, default, lg e xl para as duas variantes.
Inline
Ao lado de texto, marque o spinner com aria-hidden para que as palavras falem por ele. Sozinho, ele anuncia seu label.
Em botões
Button e Command usam este spinner nos estados de carregamento, dimensionado para os ícones do botão.
- Sozinho, o spinner é um
statusnomeado porlabel(“Loading”). - Com
aria-hidden, perde seu role, para uso ao lado de texto visível ou dentro de um botão ocupado. - Com movimento reduzido, pulsa suavemente em vez de girar, para ainda mostrar que algo está acontecendo.
| Prop | Tipo | Padrão |
|---|---|---|
variant | "ticks" | "ring" | "ticks" |
sizenull deixa o dimensionamento para o pai. | "sm" | "default" | "lg" | "xl" | null | "default" |
label | string | "Loading" |
loadingAtiva a exibição com atraso. Omita para sempre mostrar. | boolean | – |
delay | number | 150 |
minDuration | number | 400 |
animatedPausa a animação sem ocultá-la. | boolean | true |
| Atributo | Descrição |
|---|---|
data-slot="spinner" | O SVG, com data-variant. |
O mesmo tempo como um hook, para skeletons, overlays ou qualquer coisa que não deva piscar. Veja o guia do useDelayedLoading.
- useDelayedLoadingMostra um estado de carregamento só quando o trabalho é realmente lento e o mantém por tempo suficiente para nunca piscar.
- AlertMensagens inline para status e feedback, com uma superfície neutra, um ícone colorido e um botão de dispensar que recolhe suavemente.
- EmptyUm espaço reservado para telas que ainda não têm nada a mostrar, com ícone, mensagem e a próxima ação.
- ProgressUma barra ou anel que mostra o quanto uma tarefa avançou, suaviza entre as atualizações e desliza enquanto o total é desconhecido.
- SkeletonPlaceholders que esperam 150ms antes de aparecer, assumem o tamanho exato do conteúdo que envolvem e o fazem surgir com fade sem mover nada.
- ToastMensagens breves que se empilham com ordem, expandem no hover, saem com deslize e transformam um estado de carregamento em sucesso ou erro no próprio lugar.
Usado em blocos
Blocos que se baseiam em Spinner.
- ArtifactO painel ao lado de um chat de IA que mostra o que o modelo criou. Páginas web, SVGs, documentos e código chegam em streaming ao vivo e depois passam para uma prévia isolada em sandbox, com versões que você pode comparar e restaurar, uma divisão redimensionável e um bottom sheet no celular.
- Chat SidebarA barra lateral de um app de chat. Logo, busca e Novo chat no topo, seus próprios links abaixo, chats fixados, projetos que se expandem para mostrar seus chats, recentes agrupados por dia e linhas com menus de hover e de clique direito, renomeação inline, exclusão com desfazer e estados de resposta ao vivo.
- Diff ReviewRevise as edições de um agente em vários arquivos antes que sejam aplicadas. Uma árvore de arquivos com contagens, aceite ou rejeite cada mudança, cada arquivo ou tudo de uma vez, comentários em qualquer linha ou intervalo que voltam para o agente, visões unificada e dividida, destaques por palavra, desfazer, edições em streaming e um resumo "4 arquivos editados" para o chat.
- ProfileA seção Perfil das configurações de um produto de IA. Recorte uma foto em um círculo, escolha um nome de usuário que é verificado enquanto você digita, confirme um novo e-mail com um código de 6 dígitos, adicione links que reconhecem o site e veja um card ao vivo de como os outros veem você.