React + MotionLoaders
Skeleton card
A card-shaped placeholder with an avatar and text lines that gently pulses while your data arrives.
Settings
40px
1.8s
Code
import { motion } from "framer-motion";
interface SkeletonCardProps {
color?: string;
/** Tamaño del avatar en px. */
size?: number;
/** Duración de un pulso en segundos. */
speed?: number;
}
export default function SkeletonCard({
color = "#86868b",
size = 40,
speed = 1.8,
}: SkeletonCardProps) {
return (
<motion.div
aria-busy="true"
className="w-56 rounded-3xl bg-white p-4 shadow-[0_1px_2px_rgba(0,0,0,0.03),0_8px_28px_rgba(0,0,0,0.05)] dark:bg-[#1c1c1e]"
animate={{ opacity: [1, 0.4, 1] }}
transition={{ duration: speed, repeat: Infinity, ease: "easeInOut" }}
>
<div className="flex items-center gap-3">
<div
className="rounded-full"
style={{ width: size, height: size, backgroundColor: color }}
/>
<div className="flex-1 space-y-2">
<div className="h-2.5 rounded-full" style={{ backgroundColor: color, width: "70%" }} />
<div className="h-2.5 rounded-full" style={{ backgroundColor: color, width: "40%" }} />
</div>
</div>
<div className="mt-4 space-y-2">
<div className="h-2.5 rounded-full" style={{ backgroundColor: color }} />
<div className="h-2.5 rounded-full" style={{ backgroundColor: color, width: "85%" }} />
<div className="h-2.5 rounded-full" style={{ backgroundColor: color, width: "60%" }} />
</div>
</motion.div>
);
}
Prompt for AI
Paste it into ChatGPT, Claude or Cursor and it will adapt the block to your project with these settings, even if you don’t use React.
More in Loaders
Where to use it
A skeleton loader shows the shape of what is coming instead of an empty space. This one mimics a profile row with an avatar and a few lines of text, so it suits a comment section, the member list of a team app or the contacts view of a CRM. The page feels faster even when it isn’t.
Match the skeleton to the real layout as closely as you can, so nothing jumps when the content lands. Use a very light tint of your text color; a strong color makes the placeholder look like a finished design.