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.

Versión Markdown con todo el código, para asistentes de IA

Más en Loaders

Ver todos: 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.