Spinner
Un indicador de carga con marcas al estilo Apple o un anillo que respira, que puede esperar antes de mostrarse y permanecer el tiempo suficiente para no parpadear.
pnpm dlx shadcn@latest add https://hextaui.com/r/spinner.jsonAñade el componente, los tokens del tema de HextaUI y los componentes de HextaUI de los que depende.
Añade los tokens del tema a tu CSS global, si aún no lo has hecho.
Instala las dependencias.
pnpm add class-variance-authority cnCopia y pega el siguiente código en tu proyecto.
components/ui/spinner.tsx Actualiza las rutas de importación para que coincidan con la configuración de tu proyecto.
El predeterminado es el indicador de ocho radios de las plataformas Apple. variant="ring" gira mientras su arco crece y se encoge, para que parezca que trabaja y no que está atascado. Ambos se dibujan con el color de texto actual.
Sin parpadeo
Pasa loading y el spinner espera delay (150ms) antes de mostrarse, para que las cargas rápidas nunca lo muestren de golpe, y luego permanece al menos minDuration (400ms) una vez visible.
Tamaños
sm, default, lg y xl para ambas variantes.
En línea
Junto a texto, marca el spinner con aria-hidden para que hablen las palabras. Por sí solo, anuncia su label.
En botones
Button y Command usan este spinner para sus estados de carga, dimensionado según los iconos del botón.
- Por sí solo, el spinner es un
statuscon el nombre delabel(“Loading”). - Con
aria-hidden, pierde su rol, para usarlo junto a texto visible o dentro de un botón ocupado. - Con movimiento reducido, pulsa suavemente en lugar de girar, para seguir mostrando que algo está ocurriendo.
| Prop | Tipo | Predeterminado |
|---|---|---|
variant | "ticks" | "ring" | "ticks" |
sizenull deja el tamaño en manos del padre. | "sm" | "default" | "lg" | "xl" | null | "default" |
label | string | "Loading" |
loadingActiva la visualización retrasada. Omítelo para mostrarlo siempre. | boolean | – |
delay | number | 150 |
minDuration | number | 400 |
animatedPausa la animación sin ocultarla. | boolean | true |
| Atributo | Descripción |
|---|---|
data-slot="spinner" | El SVG, con data-variant. |
El mismo tiempo como hook, para skeletons, overlays o cualquier cosa que no deba aparecer de golpe. Consulta la guía de useDelayedLoading.
- useDelayedLoadingMuestra un estado de carga solo cuando el trabajo es realmente lento, y lo mantiene el tiempo suficiente para que nunca parpadee.
- AlertMensajes en línea para estado y comentarios, con una superficie neutra, un icono de color y un descarte que se colapsa con suavidad.
- EmptyUn marcador de posición para pantallas que aún no tienen nada que mostrar, con un icono, un mensaje y la siguiente acción.
- ProgressUna barra o anillo que muestra cuánto ha avanzado una tarea, se suaviza entre actualizaciones y se desliza mientras el total es desconocido.
- SkeletonMarcadores de posición que esperan 150ms antes de mostrarse, toman el tamaño exacto del contenido que envuelven y lo hacen aparecer con un fundido sin mover nada.
- ToastMensajes breves que se apilan con orden, se expanden al pasar el cursor, se descartan deslizando y convierten un estado de carga en éxito o error en el mismo lugar.
Usado en bloques
Bloques que se construyen sobre Spinner.
- ArtifactEl panel junto a un chat de IA que muestra lo que creó el modelo. Páginas web, SVG, documentos y código llegan en streaming y luego pasan a una vista previa en sandbox, con versiones que puedes comparar y restaurar, una división redimensionable y una hoja inferior en móviles.
- Chat SidebarLa barra lateral de una app de chat. Logo, búsqueda y Nuevo chat arriba, tus propios enlaces debajo, chats fijados, proyectos que se expanden para mostrar sus chats, recientes agrupados por día y filas con menús al pasar el cursor y con clic derecho, renombrado en línea, eliminación con deshacer y estados de respuesta en vivo.
- Diff ReviewRevisa las ediciones de un agente en todos los archivos antes de que se apliquen. Un árbol de archivos con contadores, aceptar o rechazar cada cambio, cada archivo o todo, comentarios en cualquier línea o rango que vuelven al agente, vistas unificada y dividida, resaltado a nivel de palabra, deshacer, ediciones en streaming y un resumen «Editados 4 archivos» para el chat.
- ProfileLa sección Perfil de los ajustes de un producto de IA. Recorta una foto en un círculo, elige un nombre de usuario que se comprueba mientras escribes, confirma un nuevo correo con un código de 6 dígitos, añade enlaces que reconocen el sitio y mira una tarjeta en vivo de cómo te ven los demás.