React + MotionLoaders

Barre de progression brillante

Une barre de progression fine parcourue d’un reflet lumineux, qui paraît vivante même quand elle marque une pause.

Réglages

68%
1.5s

Code

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 pour l’IA

Collez-le dans ChatGPT, Claude ou Cursor : le bloc sera adapté à votre projet avec ces réglages, même sans React.

Plus dans Loaders

Où l’utiliser

La vraie progression avance rarement à rythme régulier, et cette barre le gère bien : le reflet continue de courir pendant que le remplissage attend. Utilisez-la pour l’export de fichiers d’un outil de design, la page de téléchargement d’une appli ou les étapes d’un tunnel de commande. Une barre de progression animée qui reste sobre.

Réglez le reflet plus lentement que vous ne le pensez ; un éclair chaque seconde paraît nerveux. Sur des couleurs vives, il ressort mieux avec un ton moyen. Si votre progression avance par grands bonds, le ressort sur la largeur les adoucit.