React + MotionLoaders

Barre de progression indéterminée

Une barre fine traversée en boucle par un segment, pour les attentes dont on ignore la durée.

Réglages

10px
1.6s

Code

import { motion } from "framer-motion";

interface ProgressBarProps {
  color?: string;
  /** Grosor de la barra en px. */
  size?: number;
  /** Duración de un recorrido en segundos. */
  speed?: number;
}

export default function ProgressBar({
  color = "#0071e3",
  size = 10,
  speed = 1.6,
}: ProgressBarProps) {
  return (
    <div
      role="progressbar"
      aria-label="Chargement"
      className="w-56 overflow-hidden rounded-full bg-black/5 dark:bg-white/10"
      style={{ height: size }}
    >
      <motion.div
        className="h-full rounded-full"
        style={{ backgroundColor: color }}
        initial={false}
        animate={{ x: ["-100%", "220%"] }}
        transition={{ duration: speed, repeat: Infinity, ease: "easeInOut" }}
      />
    </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

Une barre de progression indéterminée dit « je m’en occupe » sans promettre de délai. Elle se place en haut d’une application web pendant le chargement de la page suivante, dans l’en-tête d’un tableau de bord qui rafraîchit ses graphiques ou sous le champ de recherche d’un comparateur de vols. Discrète, elle montre pourtant que ça avance.

Plus elle est fine, mieux c’est : trois ou quatre pixels collés en haut de l’écran passent presque inaperçus tout en rassurant. Dès que vous connaissez le vrai pourcentage, passez à une barre déterminée pour qu’on voie la fin approcher.