blob: 1a6cf1f8d0ead1136fd5a378d2ae0a02cd297a86 [file]
import React from 'react';
//@ts-ignore internal func
import {BlogPostProvider} from '@docusaurus/theme-common/internal';
import BlogPostItem from '@theme/BlogPostItem';
import type {Props} from '@theme/BlogPostItems';
import { motion, Variants } from 'framer-motion'
const variants: Variants = {
from: { opacity: 0.01, y: 100 },
to: i => ({
opacity: 1,
y: 0,
transition: {
type: 'spring',
damping: 25,
stiffness: 100,
bounce: 0.2,
duration: 0.3,
delay: i * 0.2,
},
}),
}
export default function BlogPostItems({
items,
component: BlogPostItemComponent = BlogPostItem,
}: Props): JSX.Element {
return (
<>
{items.map(({content: BlogPostContent},i) => (
<BlogPostProvider
key={BlogPostContent.metadata.permalink}
content={BlogPostContent}>
<motion.div
initial="from"
animate="to"
custom={i}
viewport={{ once: true, amount: 0.8 }}
variants={variants}
>
<BlogPostItemComponent>
<BlogPostContent />
</BlogPostItemComponent>
</motion.div>
</BlogPostProvider>
))}
</>
);
}