Particles Background

import { ParticlesBackground } from '@hanzo/ui'

Default

A drifting field of white dots joined by fading lines, reacting to the pointer.

Move your pointer over the field
export function Default() {
return (
<YStack position="relative" height={320} bg="black" overflow="hidden">
<ParticlesBackground />
<YStack position="relative" items="center" justify="center" height="100%">
<Text color="white">Move your pointer over the field</Text>
</YStack>
</YStack>
)
}

Custom colours

A blue field at a lower count, tuned for a hero section.

Welcome
export function CustomColors() {
return (
<YStack position="relative" height={320} bg="black" overflow="hidden">
<ParticlesBackground particleColor="rgba(59, 130, 246, 0.6)" lineColor="rgba(59, 130, 246, 0.2)" particleCount={75} />
<YStack position="relative" items="center" justify="center" height="100%">
<Text color="white" fontSize="$8">
Welcome
</Text>
</YStack>
</YStack>
)
}

Dense

A high particle count with a shorter connection distance, for a busier field.

export function Dense() {
return (
<YStack position="relative" height={320} bg="black" overflow="hidden">
<ParticlesBackground particleCount={150} connectionDistance={60} speed={0.3} />
</YStack>
)
}

No pointer interaction

A slow, quiet field for behind dashboard content.

export function Static() {
return (
<YStack position="relative" height={320} bg="$color2" overflow="hidden">
<ParticlesBackground particleColor="rgba(148, 163, 184, 0.4)" lineColor="rgba(148, 163, 184, 0.1)" particleCount={30} speed={0.3} enableMouseInteraction={false} />
</YStack>
)
}

Types

export type ParticlesBackgroundProps = {
/** Class notation for the fixed frame. */
className?: string
/** Number of particles to render. */
particleCount?: number
/** Fill of each particle. */
particleColor?: string
/** Stroke of the lines joining nearby particles. */
lineColor?: string
/** Maximum radius of a particle, in px. */
particleSize?: number
/** Top speed of a particle's drift, in px per frame. */
speed?: number
/** Distance below which two particles are joined by a line. */
connectionDistance?: number
/** Overall opacity of the effect. */
opacity?: number
/** Whether particles are pushed away from the pointer. */
enableMouseInteraction?: boolean
/** Radius of the pointer's repulsion, in px. */
mouseRadius?: number
}

Exports

ParticlesBackgroundtype ParticlesBackgroundProps