(chore) init commit and add tasks
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
'use client'
|
||||
|
||||
import { motion } from 'framer-motion'
|
||||
|
||||
interface AnimatedRolesProps {
|
||||
roles: string[]
|
||||
className?: string
|
||||
}
|
||||
|
||||
export function AnimatedRoles({ roles, className }: AnimatedRolesProps) {
|
||||
const animations = [
|
||||
{
|
||||
initial: { opacity: 0, x: -20 },
|
||||
animate: { opacity: 1, x: 0 },
|
||||
},
|
||||
{
|
||||
initial: { opacity: 0, y: 20 },
|
||||
animate: { opacity: 1, y: 0 },
|
||||
},
|
||||
{
|
||||
initial: { opacity: 0, x: 20 },
|
||||
animate: { opacity: 1, x: 0 },
|
||||
},
|
||||
{
|
||||
initial: { opacity: 0, scale: 0.8 },
|
||||
animate: { opacity: 1, scale: 1 },
|
||||
},
|
||||
]
|
||||
|
||||
return (
|
||||
<div className={className}>
|
||||
{roles.map((role, index) => {
|
||||
const animation = animations[index % animations.length]
|
||||
return (
|
||||
<motion.span
|
||||
key={index}
|
||||
initial={animation.initial}
|
||||
animate={animation.animate}
|
||||
transition={{
|
||||
duration: 0.6,
|
||||
delay: 0.2 + index * 0.15,
|
||||
ease: 'easeOut',
|
||||
}}
|
||||
className="inline-block"
|
||||
>
|
||||
{role}
|
||||
{index < roles.length - 1 && (
|
||||
<motion.span
|
||||
initial={{ opacity: 0 }}
|
||||
animate={{ opacity: 1 }}
|
||||
transition={{ delay: 0.2 + index * 0.15 + 0.3 }}
|
||||
className="mx-2"
|
||||
>
|
||||
•
|
||||
</motion.span>
|
||||
)}
|
||||
</motion.span>
|
||||
)
|
||||
})}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user