40 lines
962 B
TypeScript
40 lines
962 B
TypeScript
import React, { useRef, useCallback } from 'react';
|
|
import { useCardAnimation } from '../../hooks/useCardAnimation';
|
|
import type { CardAnimationConfig } from '../../types';
|
|
|
|
interface TimelinePhoneViewProps {
|
|
items: React.ReactNode[];
|
|
animationConfig: CardAnimationConfig;
|
|
className?: string;
|
|
}
|
|
|
|
export const TimelinePhoneView: React.FC<TimelinePhoneViewProps> = ({
|
|
items,
|
|
animationConfig,
|
|
className = '',
|
|
}) => {
|
|
const cardsRef = useRef<HTMLDivElement[]>([]);
|
|
|
|
useCardAnimation(cardsRef, animationConfig);
|
|
|
|
const setCardRef = useCallback((index: number, el: HTMLDivElement | null) => {
|
|
if (el) {
|
|
cardsRef.current[index] = el;
|
|
}
|
|
}, []);
|
|
|
|
return (
|
|
<div className={`timeline-phone-view ${className}`}>
|
|
{items.map((item, index) => (
|
|
<div
|
|
key={index}
|
|
ref={el => setCardRef(index, el)}
|
|
className="timeline-item"
|
|
>
|
|
{item}
|
|
</div>
|
|
))}
|
|
</div>
|
|
);
|
|
};
|