React + MotionLoaders

Puntos que respiran

Tres puntos que crecen y se apagan en una respiración lenta y coordinada, más tranquilos que el típico rebote.

Ajustes

15px
1.5s

Código

import { motion } from "framer-motion";

interface BreathingDotsProps {
  color?: string;
  size?: number;
  /** Duración de una respiración en segundos. */
  speed?: number;
}

export default function BreathingDots({
  color = "#6e6e73",
  size = 15,
  speed = 1.5,
}: BreathingDotsProps) {
  return (
    <div role="status" aria-label="Cargando" className="flex gap-3">
      {[0, 1, 2].map((i) => (
        <motion.span
          key={i}
          className="rounded-full"
          style={{ width: size, height: size, backgroundColor: color }}
          animate={{ scale: [0.72, 1, 0.72], opacity: [0.35, 1, 0.35] }}
          transition={{ duration: speed, delay: i * 0.18, repeat: Infinity }}
        />
      ))}
    </div>
  );
}

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

Si los puntos que rebotan parecen charlatanes, estos puntos que respiran transmiten calma. Van bien en momentos que deben sentirse tranquilos: un asistente de IA pensando la respuesta, una app de meditación preparando la sesión o una app bancaria confirmando una transferencia. Crecen y se iluminan uno tras otro, como una inspiración lenta.

Ponles una velocidad más lenta que la de un loader normal, entre un segundo y medio y dos por ciclo, y resultan casi relajantes. En tamaños muy pequeños se pierden, así que déjales algo de aire alrededor.