React + MotionLoaders
Barra de progreso indeterminada
Una barra fina con un tramo que no para de cruzar, para esperas de las que no sabes la duración.
Ajustes
10px
1.6s
Código
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="Cargando"
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 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
Una barra de progreso indeterminada dice «estoy en ello» sin prometer un tiempo. Encaja en el borde superior de una web app mientras carga la siguiente página, en la cabecera de un panel que refresca sus gráficas o bajo el buscador de un comparador de vuelos. No estorba y aun así se nota que algo pasa.
Cuanto más fina, mejor: tres o cuatro píxeles pegados arriba apenas se ven y tranquilizan. En cuanto sepas el porcentaje real, cámbiala por una barra determinada para que la gente vea llegar el final.