Command Palette

Search for a command to run...

Loading component...

Components free Card stack scroll

Card stack scroll

Interactive sticky card stack with smooth scroll-based scaling animations. Features a collection of project cards that scale and transform as users scroll, creating an engaging parallax effect with framer-motion animations and Lenis smooth scrolling.

Dependencies

Interaction Type

Scroll to see card scaling animations
Watch cards transform and scale
Smooth scrolling

with shacn cli3.0

//components.json
  "registries": {
    "@skiper-ui": "https://skiper-ui.com//registry/{name}.json"
  }
npx shadcn add @skiper-ui/skiper16

OR with old shacncli

 npx shadcn@latest add https://skiper-ui.com/registry/skiper16.json

How to use

import { StickyCard_001 } from "@/components/v1/skiper16";

const projects = [
  {
    title: "Your Project 1",
    src: "/path/to/your/image1.png",
  },
  {
    title: "Your Project 2",
    src: "/path/to/your/image2.png",
  },
  // Add more projects as needed
];

const DemoSkiper16 = () => {
  const container = useRef<HTMLDivElement>(null);
  const { scrollYProgress } = useScroll({
    target: container,
    offset: ["start start", "end end"],
  });

  return (
      <main
        ref={container}
        className="relative flex w-full flex-col items-center justify-center  py-[50vh]"
      >
        {projects.map((project, i) => {
          const targetScale = Math.max(
            0.5,
            1 - (projects.length - i - 1) * 0.1,
          );
          return (
            <StickyCard_001
              key={`p_${i}`}
              i={i}
              {...project}
              progress={scrollYProgress}
              range={[i * 0.25, 1]}
              targetScale={targetScale}
            />
          );
        })}
      </main>
  );
};

<PropsTable
  props={[
    {
      name: "i",
      description: "Index of the card in the stack",
      default: "0",
    },
    {
      name: "title",
      description: "Title of the project",
      default: "Project",
    },
    {
      name: "src",
      description: "Image source path for the project card",
      default: "/images/lummi/img8.png",
    },
    {
      name: "progress",
      description: "Scroll progress value from framer-motion useScroll hook",
      default: "MotionValue",
    },
    {
      name: "range",
      description: "Scroll range for animation [start, end]",
      default: "[0, 1]",
    },
    {
      name: "targetScale",
      description: "Target scale value for the card transformation",
      default: "0.5",
    },
  ]}
/>

### Attribution

illustrations are from [lummi.ai](https://www.lummi.ai/)

Source code

Click on the top right
to view the source code

Keep in mind

Most components here are recreations of the best out there. I don't claim to be the original creator. This is my attempt to reverse-engineer, replicate, and often add a few extra features. I've tried to credit everyone, but if I missed something, let me know.

Contact

Additionlly, if you find any bug or issue, feel free to
Drop a dm.

License & Usage:

  • Free to use and modify in both personal and commercial projects.
  • Attribution to Skiper UI is required when using the free version.
  • No attribution required with Skiper UI Pro.