Skip to content
Pinky UI

Primitive vocabulary

Small behaviours. Shared everywhere.

Primitives are the mechanics beneath the library: pointer proximity, morphing surfaces, press springs and depth. Components compose them; they should not invent a second motion language.

Magnetic

ready

Pulls its child toward the pointer, with a smooth falloff and a hard travel cap.

usage
<Magnetic strength={0.4} range={110}>
  <button>Get started</button>
</Magnetic>

Jelly

ready

Elastic lean, drift and settle, with squash and stretch on press.

usage
<Jelly elasticity={0.35} intensity={0.18}>
  <Card />
</Jelly>

Tilt

ready

Rigid perspective tilt with an optional specular highlight.

usage
<Tilt max={4} glare>
  <Cover />
</Tilt>

Morph

ready

Expands one surface into another as a single object, with dialog semantics, a focus trap and focus restoration.

usage
<Morph label="Details" expanded={<Details />}>
  <Preview />
</Morph>

Liquid Surface

ready

Translucent surface with a pointer-tracked specular highlight and refracting edge. No SVG filters, no per-frame JavaScript.

usage
<LiquidSurface intensity={0.2} blur={18} tint="cloud">
  <Content />
</LiquidSurface>

Proximity

ready

Shares one pointer subscription across a set of items, giving each a springed 0–1 closeness value.

usage
<Proximity distance={120} axis="x">
  {items.map((item) => <DockItem key={item.id} {...item} />)}
</Proximity>

Spotlight

ready

Lights the face of a surface under the pointer — the counterpart to edge glow.

usage
<Spotlight size={300} intensity={0.5}>
  <Card />
</Spotlight>

Parallax

ready

Pointer-driven depth: layers inside move by different amounts from one shared pair of motion values.

usage
<Parallax>
  <Face />
  <ParallaxLayer depth={0.6}><Badge /></ParallaxLayer>
</Parallax>

Press Spring

ready

Press feedback that answers pointer and keyboard alike, as spreadable handlers plus a scale motion value.

usage
const press = usePressSpring({ scale: 0.96 });
<motion.button style={{ scale: press.scale }} {...press.handlers} />

Spring

ready

The shared motion vocabulary, plus hover, focus and press feedback in one wrapper.

usage
<Spring hoverScale={1.03} preset="snappy">
  <Chip />
</Spring>

Cursor Glow

ready

Ambient light that follows the pointer across a region.

usage
<CursorGlow size={420}>
  <section></section>
</CursorGlow>

Pointer Glow

ready

The hook underneath the light: writes pointer position into CSS variables so lighting stays pure CSS.

Low-level hook for custom surfaces; Cursor Glow is the complete wrapper. See Cursor Glow

usage
const ref = usePointerGlow<HTMLDivElement>({ range: 80 });