oxyn
All components

Dot Tide

2.5D

A narrow wave travels down the orb, pulling a few rows of dots inward toward its axis and letting them back out behind it. Dots never rotate or change height; on the spiral the wave becomes a diagonal stripe that follows the spiral arms down the sphere.

dot-tide.tsx

Installation

Install with the shadcn CLI, or copy the component file. It only needs React.

npx shadcn@latest add https://your-domain.com/r/dot-tide.json

Usage

Updates live with the parameters you set.

import { DotTide } from "@/components/dot-tide";

export function Thinking() {
  return (
    <DotTide />
  );
}

Props

PropTypeDefaultDescription
pattern"rings" | "fibonacci" | "grid""rings"How the dots are laid out on the sphere.
dotSizenumber3Diameter of the front dots in px. Back dots scale down automatically.
densitynumber12Rows of dots. Higher means more dots.
sizenumber160Width and height of the orb in px.
depthnumber0.2How far the wave pulls the dots in toward the vertical axis, as a fraction of the orb's radius.
widthnumber3.5How many rows the wave pulls in at once.
durationnumber1.6Seconds for the wave to travel from one pole to the other.
gapnumber0.4Seconds the orb rests after the wave leaves, before the next one.
from"top" | "bottom""top"Which end of the orb the wave starts from.
tiltnumber18Lean toward the viewer in degrees, so the top shows.
backOpacitynumber0.2Opacity of the furthest dots. Front dots are always fully opaque.
colorstring"#e4e4e7"Dot color.
pausedbooleanfalseCoast to a stop on the current frame without unmounting. Turning it off eases back up to speed.
labelstring"Thinking"Accessible name; the wrapper is role="status".
className / style——Spread onto the wrapper div, along with any other div props.