Spaces:
Build error
Build error
| import { useRef, useMemo } from 'react' | |
| import { Canvas, useFrame } from '@react-three/fiber' | |
| import { Points, PointMaterial } from '@react-three/drei' | |
| import * as random from 'maath/random/dist/maath-random.esm' | |
| function ParticleField(props) { | |
| const ref = useRef() | |
| // Generate random points in a sphere | |
| const sphere = useMemo(() => random.inSphere(new Float32Array(5000), { radius: 1.5 }), []) | |
| useFrame((state, delta) => { | |
| ref.current.rotation.x -= delta / 10 | |
| ref.current.rotation.y -= delta / 15 | |
| }) | |
| return ( | |
| <group rotation={[0, 0, Math.PI / 4]}> | |
| <Points ref={ref} positions={sphere} stride={3} frustumCulled={false} {...props}> | |
| <PointMaterial | |
| transparent | |
| color="#00E5FF" | |
| size={0.002} | |
| sizeAttenuation={true} | |
| depthWrite={false} | |
| opacity={0.6} | |
| /> | |
| </Points> | |
| </group> | |
| ) | |
| } | |
| export default function ThreeBackground() { | |
| return ( | |
| <div className="absolute inset-0 -z-10 bg-nordic-navy"> | |
| <Canvas camera={{ position: [0, 0, 1] }}> | |
| <ParticleField /> | |
| </Canvas> | |
| {/* Gradient overlay to blend canvas into page */} | |
| <div className="absolute inset-0 bg-gradient-to-b from-nordic-navy/20 via-nordic-navy/50 to-nordic-navy pointer-events-none" /> | |
| </div> | |
| ) | |
| } |