blackdark
Herramientasthinking orbsanimacionesreactdiseño uiopen sourceindicador de carga

Thinking Orbs: las animaciones de orbe de las apps de IA, gratis y open source

Thinking Orbs: 9 orbes animados para interfaces de IA, gratis y con licencia MIT. Los estados, cómo instalarlo en React, la accesibilidad y el prompt para que Claude lo integre.

Por BlackdarkActualizado el 6 min de lectura
Ir directo al repositorio

Esas animaciones de orbe que ves en las apps de IA mientras «piensan» ya tienen código libre. Se llama Thinking Orbs: nueve orbes animados, uno para cada cosa que puede estar haciendo tu producto. Gratis, de código abierto y con licencia MIT.

Aquí tienes qué es, los 9 estados, cómo instalarlo, por qué es ligero y accesible, qué permite la licencia y un prompt para que Claude lo meta en tu app.

Thinking Orbs (Jakubantalik/thinking-orbs)

Ir al repositorio en GitHub

Gratis y open source · Licencia MIT · Créditos a Jakub Antalik

Qué es Thinking Orbs

Thinking Orbs es una librería de indicadores de carga para interfaces de IA y agentes. En vez del círculo que gira de siempre, muestra un orbe hecho de puntos que se mueve de forma distinta según lo que está pasando.

  • Es de Jakub Antalik, diseñador, y tiene más de 3.600 estrellas en GitHub.
  • Es un componente de React (React 18 o superior), publicado en npm como thinking-orbs.
  • Viene en dos tamaños afinados a mano: 64 px para el avatar de un chat y 20 px para ir junto a un texto. No es el mismo dibujo escalado: cada tamaño tiene su propio número de puntos y su velocidad.
  • Es monocromo y se adapta solo al modo oscuro o claro de tu web.
  • Tiene demo en vivo en orbs.jakubantalik.com, donde puedes ver los nueve antes de instalar nada.

Los 9 estados (y cuándo usar cada uno)

Cada estado es un verbo, algo que tu IA puede estar haciendo. La descripción de la animación es la del propio README; la columna de uso es una idea para empezar.

EstadoQué se veÚsalo cuando la IA…
workingPartículas en órbitas inclinadastrabaja en una tarea larga
searchingUn meridiano barre un globo de puntosbusca en la web o en tus documentos
solvingLas bandas se desordenan y vuelven a encajarrazona o resuelve un problema
listeningUna onda recorre los anilloste escucha por voz
connectingUna constelación se cablea solase conecta a una herramienta o una API
weavingTres hebras se trenzan alrededor de la esferacombina varias fuentes
composingUna banda ondulante de varias franjasescribe la respuesta
breathingUn anillo que cambia de forma despacioestá en espera
shapingUn contorno de puntos: círculo, triángulo, cuadradogenera un diseño o una imagen
Desliza para ver la tabla completa

Por qué cambiar el spinner de siempre

Un spinner solo dice «espera». No dice si la IA está buscando, pensando o escribiendo, y una espera sin información se hace más larga.

Con Thinking Orbs, el indicador de carga cuenta lo que está pasando de verdad. Si además le pones al lado un texto corto («Buscando en tus documentos…»), el usuario entiende en qué punto está su petición sin leer nada más.

Consejo

Cambia de estado cuando cambie la fase: searching mientras busca, solving mientras razona y composing mientras escribe. Es el mismo componente con otra prop.

Cómo instalarlo y usarlo en React

  1. Instala el paquete:
npm install thinking-orbs
  1. Úsalo donde tengas un indicador de carga (ejemplo del README):
import { ThinkingOrb } from 'thinking-orbs';

function Status() {
  return <ThinkingOrb state="searching" size={64} />;
}
  1. Ajusta lo que necesites con sus props:
PropPara qué sirveValores
stateLa animación (el verbo)Uno de los 9 estados
sizeEl tamaño afinado64 (avatar de chat) o 20 (junto a texto)
themePuntos claros u oscurosauto (por defecto), dark o light
speedMultiplica la velocidad del presetPor ejemplo, 1.5
pausedCongela el fotograma actualtrue o false
aria-labelTexto para lectores de pantallaPor ejemplo, «Analizando el repositorio…»
Desliza para ver la tabla completa

El resto de props de un <canvas> (className, style, data-*…) se pasan tal cual. La versión de npm (0.3.2) añade además un tamaño intermedio de 32 px para avatares compactos.

Si usas Next.js (App Router)

El componente usa hooks de React y el paquete no lleva la directiva "use client". Ponlo dentro de un componente de cliente:

"use client";

import { ThinkingOrb } from "thinking-orbs";

export function EstadoAgente({ buscando }: { buscando: boolean }) {
  return (
    <div style={{ display: "flex", alignItems: "center", gap: 8 }}>
      <ThinkingOrb state={buscando ? "searching" : "composing"} size={20} />
      <span>{buscando ? "Buscando en tus documentos…" : "Escribiendo la respuesta…"}</span>
    </div>
  );
}

Ligero de verdad: canvas 2D, sin WebGL

  • Solo arcos en un canvas 2D: nada de WebGL, ni ctx.filter, ni filtros SVG. Los mismos píxeles en Chrome, Safari y Firefox.
  • Sin dependencias propias: solo pide React.
  • Se pausa solo cuando sale de la pantalla o cuando la pestaña está oculta, y retoma la animación donde iba. Todos los orbes comparten un único reloj.
  • Densidad de píxeles limitada a 2×, para no gastar de más en pantallas muy densas.

Accesible: respeta «reducir movimiento»

Hay personas que activan «reducir movimiento» en su sistema porque las animaciones les marean o les distraen. Thinking Orbs lo respeta:

  • Con prefers-reduced-motion: reduce, muestra un fotograma fijo representativo, sin animación, y sigue el tema claro u oscuro.
  • Cada orbe lleva role="img" y un aria-label razonable para cada estado. Puedes cambiarlo por uno en español con la prop aria-label.

Licencia MIT: puedes usarlo en un producto de pago

La licencia MIT es de las más abiertas que existen. En la práctica:

  • Puedes usarlo gratis, también en productos comerciales y de pago.
  • Puedes modificarlo y adaptarlo a tu marca.
  • No tienes que pedir permiso ni publicar tu código.
  • Tu única obligación: conservar el aviso de copyright (MIT © Jakub Antalik) y el texto de la licencia en las copias del software. Lo normal es incluirlo en el archivo de licencias de terceros de tu app.

Nota

La licencia viene «tal cual», sin garantías. Si lo vas a usar en algo crítico, pruébalo bien en tu producto antes de publicarlo.

Prompt para que Claude lo integre en tu app

Abre Claude Code en la carpeta de tu proyecto y pega esto:

Prompt · Cambiar los spinners por Thinking Orbs
Quiero sustituir los indicadores de carga de mi app por Thinking Orbs (paquete npm thinking-orbs, repositorio github.com/Jakubantalik/thinking-orbs, licencia MIT). 1) Lee el README del repositorio y usa solo la API documentada: el componente ThinkingOrb con las props state, size, theme, speed, paused y aria-label. No inventes props. 2) Busca en mi proyecto todos los spinners e indicadores de carga y dime qué está pasando en cada uno. 3) Asigna a cada uno el estado que mejor encaje (working, searching, solving, listening, connecting, weaving, composing, breathing o shaping) y enséñame la tabla antes de tocar nada. 4) Cuando la apruebe, instala thinking-orbs y haz el cambio: size 64 en avatares de chat y 20 junto a texto, con un texto corto al lado que diga qué pasa («Buscando…») y un aria-label en español. 5) Si el proyecto usa Next.js con App Router, pon el orbe dentro de componentes con "use client". 6) Cambia solo la parte visual: no toques la lógica de carga. 7) Añade el aviso de licencia MIT de Jakub Antalik al archivo de licencias de terceros del proyecto (créalo si no existe). Al final, dime qué archivos has cambiado.

Consejo

¿Aún no usas Claude Code? Empieza por Claude Code desde cero.

Créditos

Thinking Orbs es un proyecto de Jakub Antalik, publicado con licencia MIT. Tienes la demo en orbs.jakubantalik.com y el código en GitHub. El paquete de npm se publica desde su colección Libraries.dev. Si te sirve, dale una estrella al repositorio.

FAQ

Es una librería de indicadores de carga para interfaces de IA y agentes: orbes hechos de puntos que se animan de forma distinta según lo que esté haciendo la IA (buscar, resolver, escuchar, escribir…). La ha creado el diseñador Jakub Antalik y el código está en GitHub.

Sí a las dos. Tiene licencia MIT, que permite usarlo, modificarlo y venderlo dentro de tu producto sin pedir permiso. La única condición es conservar el aviso de copyright (MIT © Jakub Antalik) y el texto de la licencia, por ejemplo en el archivo de licencias de terceros de tu app.

La forma documentada es el componente de React (pide React 18 o superior). El paquete también expone su motor de dibujo, pero el README no lo documenta, así que para Vue, Svelte o JavaScript sin framework te tocará adaptarlo.

No usa WebGL: dibuja arcos en un canvas 2D normal, sin filtros. Además, cada orbe se pausa cuando sale de la pantalla o cuando cambias de pestaña, y la densidad de píxeles está limitada a 2×. Por eso va bien incluso en dispositivos modestos.

Sí. Si el usuario tiene activado prefers-reduced-motion, el orbe muestra un fotograma fijo representativo en lugar de animarse, y sigue cambiando de color con el tema.

Sí. Es monocromo: puntos claros sobre fondo oscuro y puntos oscuros sobre fondo claro. Por defecto detecta el tema solo (atributo data-theme, clase dark/light o la preferencia del sistema), y también puedes fijarlo a mano.

Sigue profundizando en el mismo tema.

Compartir
Newsletter

Recibe las próximas guías en tu correo

Ideas y recursos de IA y marketing, sin relleno. Lo que funciona y cómo aplicarlo.

Ideas y recursos sin spam. Cancela cuando quieras.

¿Te sirve esta guía?

Suscríbete