Merge pull request #7 from damjan1996/auto-claude/023-optimize-floatingpaths-component-reduce-36-animate
auto-claude: 023-optimize-floatingpaths-component-reduce-36-animate
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import { motion } from "framer-motion"
|
||||
|
||||
export function FloatingPaths({ position }: { position: number }) {
|
||||
const paths = Array.from({ length: 12 }, (_, i) => ({
|
||||
id: i,
|
||||
d: `M-${380 - i * 15 * position} -${189 + i * 18}C-${
|
||||
380 - i * 15 * position
|
||||
} -${189 + i * 18} -${312 - i * 15 * position} ${216 - i * 18} ${
|
||||
152 - i * 15 * position
|
||||
} ${343 - i * 18}C${616 - i * 15 * position} ${470 - i * 18} ${
|
||||
684 - i * 15 * position
|
||||
} ${875 - i * 18} ${684 - i * 15 * position} ${875 - i * 18}`,
|
||||
color: `rgba(var(--accent),${0.1 + i * 0.03})`,
|
||||
width: 0.5 + i * 0.09,
|
||||
}))
|
||||
|
||||
return (
|
||||
<div className="absolute inset-0 pointer-events-none floating-paths">
|
||||
<svg className="w-full h-full text-accent" viewBox="0 0 696 316" fill="none" style={{ transform: 'translateZ(0)' }}>
|
||||
<title>Background Paths</title>
|
||||
{paths.map((path) => (
|
||||
<motion.path
|
||||
key={path.id}
|
||||
d={path.d}
|
||||
stroke="currentColor"
|
||||
strokeWidth={path.width}
|
||||
strokeOpacity={0.1 + path.id * 0.03}
|
||||
initial={{ pathLength: 0.3, opacity: 0.6 }}
|
||||
animate={{
|
||||
pathLength: 1,
|
||||
opacity: [0.3, 0.6, 0.3],
|
||||
}}
|
||||
transition={{
|
||||
duration: 20 + (path.id % 3) * 5,
|
||||
repeat: Number.POSITIVE_INFINITY,
|
||||
ease: "linear",
|
||||
}}
|
||||
style={{ willChange: 'opacity' }}
|
||||
/>
|
||||
))}
|
||||
</svg>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user