'use client';
import React, { useLayoutEffect, useRef, useCallback, ReactNode } from 'react';
import Lenis from 'lenis';
import './ScrollStack.css';
export const ScrollStackItem = ({ children, itemClassName = '' }: { children: ReactNode; itemClassName?: string }) => (
{children}
);
interface CardTransform {
translateY: number;
scale: number;
rotation: number;
blur: number;
}
interface ScrollStackProps {
children: ReactNode;
className?: string;
itemDistance?: number;
itemScale?: number;
itemStackDistance?: number;
stackPosition?: string;
scaleEndPosition?: string;
baseScale?: number;
scaleDuration?: number;
rotationAmount?: number;
blurAmount?: number;
hideBehind?: boolean;
useWindowScroll?: boolean;
disabled?: boolean;
onStackComplete?: () => void;
}
const ScrollStack = ({
children,
className = '',
itemDistance = 100,
itemScale = 0.03,
itemStackDistance = 30,
stackPosition = '20%',
scaleEndPosition = '10%',
baseScale = 0.85,
rotationAmount = 0,
blurAmount = 0,
hideBehind = false,
useWindowScroll = false,
disabled = false,
onStackComplete,
}: ScrollStackProps) => {
const scrollerRef = useRef(null);
const stackCompletedRef = useRef(false);
const animationFrameRef = useRef(null);
const lenisRef = useRef(null);
const cardsRef = useRef([]);
const lastTransformsRef = useRef