React + MotionLoaders

Spinner circular

El spinner de anillo de siempre, con color, tamaño y velocidad ajustables para un botón o una página entera.

Ajustes

48px
1s

Código

interface SpinnerProps {
  color?: string;
  size?: number;
  /** Segundos por vuelta. */
  speed?: number;
}

export default function Spinner({
  color = "#0071e3",
  size = 48,
  speed = 1,
}: SpinnerProps) {
  return (
    <div
      role="status"
      aria-label="Cargando"
      className="animate-spin rounded-full border-transparent"
      style={{
        width: size,
        height: size,
        borderWidth: Math.max(2, size / 10),
        borderColor: `${color}33`,
        borderTopColor: color,
        animationDuration: `${speed}s`,
      }}
    />
  );
}

Prompt para IA

Pégalo en ChatGPT, Claude o Cursor y adaptará el bloque a tu proyecto con estos ajustes, aunque no uses React.

Más en Loaders

Dónde usarlo

A veces el spinner de carga de toda la vida es justo lo que hace falta: dentro del botón «Enviar» mientras sale un formulario de contacto, junto a un buscador que espera resultados o en medio de una tabla todavía vacía. La gente entiende lo que significa sin pensarlo y apenas ocupa sitio.

Ponle el color de tu marca y déjalo pequeño dentro de los botones, entre 16 y 20 píxeles. Si la espera suele pasar de tres o cuatro segundos, una barra de progreso o un skeleton explican mejor lo que viene.