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
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.