Spring Icon Loader

A minimal image-icon loader with GSAP physics, landing-only icon swaps, Motion fades, squash-and-stretch, and responsive ground shadow.

Loading icon 1

Customize

Icon 1 URL
Icon 2 URL
Icon 3 URL
Loading
Size56px
Bounce68px
Gravity1550
Icon swap
Squash0.12
Stretch0.10
Tilt7deg
Ground hold0.09s
Shadow color
Shadow opacity0.46

Usage

import { useState } from "react";
import { SpringIconLoader } from "@/components/lazy-ui/spring-icon-loader";

const icons = [
  "/images/loading/1.png",
  "/images/loading/2.png",
  "/images/loading/3.png",
];

export function Demo() {
  const [loading, setLoading] = useState(true);

  return (
    <SpringIconLoader
      icons={icons}
      loading={loading}
      size={56}
      bounceHeight={68}
      gravity={1550}
      squash={0.12}
      stretch={0.1}
      tilt={7}
      shadowColor="#94a3b8"
      shadowOpacity={0.46}
      onIconChange={({ index }) => console.log("Icon landed", index)}
      onComplete={() => console.log("Loading complete")}
    />
  );
}