Hero
Noise Dot Field Hero
A canvas-rendered hero block. A dense dot grid is displaced by a sine-wave noise field and parts smoothly around the cursor with a falloff pocket. Honors `prefers-reduced-motion`, devicePixelRatio-aware, and ships with zero external animation deps beyond `motion`.
UniqueUI CLI
npx uniqueui add hero-noise-dot-field
shadcn CLI
npx shadcn@latest add https://uniqueui-platform.vercel.app/r/hero-noise-dot-field.json -y
Preview
Field · 0x004
Engineered, down to the pixel.
A canvas-rendered dot grid that displaces with a sine-wave noise field and parts around your cursor. No external animation deps.
Usage
import { NoiseDotFieldHero } from "@/components/ui/hero-noise-dot-field";
export default function Hero() {
return (
<NoiseDotFieldHero
backgroundProps={{
spacing: 28,
color: "rgba(255,255,255,0.85)",
pocketRadius: 180,
}}
>
<span className="mb-5 inline-flex items-center gap-2 rounded-full border border-white/15 bg-white/5 px-3 py-1 font-mono text-[10px] uppercase tracking-[0.2em] text-white/70 backdrop-blur">
<span
aria-hidden
className="h-1.5 w-1.5 rounded-full bg-cyan-300/90 shadow-[0_0_10px_2px] shadow-cyan-300/40"
/>
Field · 0x004
</span>
<h1 className="text-balance text-4xl font-semibold tracking-tight sm:text-6xl">
Engineered, down to the pixel.
</h1>
<p className="mt-5 max-w-xl text-pretty text-base text-white/65 sm:text-lg">
A canvas-rendered dot grid that displaces with a sine-wave noise field
and parts around your cursor. No external animation deps.
</p>
<div className="mt-9 flex flex-wrap items-center justify-center gap-3">
<button
type="button"
className="group inline-flex h-11 items-center gap-2 rounded-full bg-white px-6 text-sm font-medium text-black transition-transform duration-200 hover:-translate-y-px"
>
<span>Read the spec</span>
<span aria-hidden className="transition-transform duration-200 group-hover:translate-x-0.5">
→
</span>
</button>
<button
type="button"
className="inline-flex h-11 items-center gap-2 rounded-full border border-white/15 px-6 font-mono text-xs uppercase tracking-[0.18em] text-white/85 backdrop-blur transition-colors hover:bg-white/5"
>
View source
</button>
</div>
</NoiseDotFieldHero>
);
}Props
| Prop | Type | Description |
|---|---|---|
children | ReactNode | Slotted hero content. Omit for the default headline + CTAs. |
className | string | Classes for the outer `<section>`. |
backgroundProps | { spacing?: number; color?: string; pocketRadius?: number; className?: string } | Forwarded to the canvas background layer. |