Libraries

Composable primitives for visual computing.

Headless, tree-shakable, framework-agnostic. You compose them to build whatever you're building. Zero runtime dependencies, TypeScript-native, SSR-safe at import.

@vysmo/transitions

Transitions

Canvas

60 WebGL2 shaders, defined as plain data. Tree-shakable to the byte. Endpoint-correct by construction. Zero runtime dependencies.

  • 60 transitions
  • ~5 KB gzipped
  • 0 runtime deps
  • SSR-safe at import
@vysmo/effects

Effects

Canvas

30 WebGL2 filter primitives — blur, bloom, glow, color grade, sharpen, halftone, tilt-shift, scanlines, lens distortion, oil paint, wave, swirl, motion blur, VHS, datamosh, ASCII, dither, gradient map and more. One Runner, one source, one render call. Multi-pass effects auto-allocate HDR ping-pong targets.

  • 30 effects
  • ~9 KB gzipped (full)
  • 0 runtime deps
  • tree-shakable import what you ship
@vysmo/easings

Easings

Math

A curated catalog of easings, parametric builders (spring, bezier, rough, wiggle, smooth, gravity, breathe), and modifiers (reverse, mirror, yoyo). CSS export via toCSSLinear. Pure math, zero platform assumptions.

  • 22 families
  • ~2 KB gzipped
  • 0 runtime deps
  • CSS export linear() built-in
@vysmo/text

Text

DOM

Multi-property choreographed text animation. splitText (grapheme-safe via Intl.Segmenter) + animateText (single master clock, back-fill, repeat). 229 generated + 14 curated presets across enter, exit, and emphasis.

  • 243 presets
  • ~3 KB gzipped
  • Intl.Segmenter grapheme-safe split
  • tree-shakable import what you ship
@vysmo/scroll

Scroll

DOM

Three primitives that bind scroll progress to the rest of the ecosystem: createScrollProgress (raw 0–1 emitter), createScrollTransition (drives any @vysmo/transitions render), createScrollEffect (drives any @vysmo/effects params). One shared rAF-throttled observer underneath.

  • 3 primitives
  • ~1 KB gzipped
  • 1 rAF shared observer
  • headless you own the canvas