OPUS/UI

Navigation

Magnetic Field

A lattice of compass needles that swing to face the pointer (or orbit around it), growing and glowing as you get close. Idle, they track a wandering attractor.

canvasvector-fieldpointer5 files · 389 locdeps: clsx, tailwind-merge

Installation

With the shadcn CLI, pointing at this platform’s registry:

npx shadcn@latest add https://opusui.131199999.xyz/r/magnetic-field.json

Or offline, straight from your opus55 checkout (copies every file it needs):

node ../tailwind_component/opus55/scripts/add.mjs magnetic-field

Usage

import { MagneticField } from "@/components/opus/backgrounds/magnetic-field";

<MagneticField className="absolute inset-0" />

API

PropTypeDefaultDescription
color / activeColorstring—Far and near needle colours.
gap / lengthnumber28 / 14Grid pitch and needle length (px).
easenumber0.12Rotation easing per frame.
mode"toward" | "around""toward"Point at the pointer, or orbit it.
interactivebooleantrueReact to the pointer (tracked on window).
classNamestring—Wrapper classes — `absolute inset-0` to fill a relative parent.
childrenReactNode—Optional content rendered above the canvas.

Notes

  • Canvas 2D with a device-pixel-ratio aware backing store (capped at 2×).
  • The animation loop stops off-screen and in hidden tabs; resize re-seeds the scene.
  • prefers-reduced-motion: reduce draws a single static frame.

Command palette