React + MotionLoaders

Barra de progreso con brillo

Una barra de progreso fina con un destello que recorre la parte llena, para que parezca viva aunque se pare.

Ajustes

68%
1.5s

Código

import { motion } from "framer-motion";

interface ShineProgressProps {
  color?: string;
  /** Progreso de 0 a 100. */
  progress?: number;
  /** Segundos que tarda el reflejo en cruzar. */
  speed?: number;
}

export default function ShineProgress({
  color = "#0071e3",
  progress = 68,
  speed = 1.5,
}: ShineProgressProps) {
  return (
    <div
      role="progressbar"
      aria-valuenow={progress}
      aria-valuemin={0}
      aria-valuemax={100}
      className="h-1.5 w-64 overflow-hidden rounded-full bg-black/5 dark:bg-white/10"
    >
      <motion.div
        className="relative h-full rounded-full"
        style={{ width: `${progress}%`, backgroundColor: color }}
        animate={{ width: `${progress}%` }}
        transition={{ type: "spring", stiffness: 300, damping: 30 }}
      >
        <motion.span
          className="absolute inset-y-0 w-16 bg-gradient-to-r from-transparent via-white/50 to-transparent"
          animate={{ x: [-70, 260] }}
          transition={{ duration: speed, repeat: Infinity, ease: "linear" }}
        />
      </motion.div>
    </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

El progreso real casi nunca avanza a ritmo constante, y esta barra lo lleva bien: el brillo sigue corriendo mientras el relleno espera. Úsala en la exportación de archivos de una herramienta de diseño, en la página de descarga de una app o como indicador de pasos en un checkout. Es una barra de progreso animada que no grita.

Pon el brillo más lento de lo que crees; un destello rápido cada segundo parece nervioso. Sobre colores intensos se ve mejor con un tono medio. Si tu progreso avanza a saltos grandes, el muelle en el ancho suaviza cada salto.