The library

Curated, not a catalog dump.

Every signature component, built for a real site. Filter, preview live, copy in React or Vue.

Browse the library

Landmark Kits

Depth, not breadth.

A deep, stand-alone collection built around one system. The first Kit is Reveal - preloaders and hero sections, one mixable system, WebGL and GSAP. React, Vue, HTML / CSS / JS. Not for Webflow.

See the Reveal Kit

Concepts, patterns, tools

Learn the vocabulary.

Definitions and examples for the GSAP and animation concepts behind production motion. Free, citable, and cross-linked with the components that use each idea.

Open concepts
GSAP component for Vue

Dithering in Vue.

Turns any image or video into two colours of little dots, with a lens that follows your cursor and fills the dots back in with the real colours underneath. A retro, 1-bit print look for hero images and video backdrops.

Install

Install Dithering in your Vue project

Dithering ships as a copy-paste Vue 3 single-file component. The only dependency is GSAP - Vue's reactivity and lifecycle hooks replace the React useGSAP adapter, so no extra package is needed.

BASH
Integrate

Where it goes in your Vue app

Dithering is a leaf-level interactive component. Drop it into any page, layout, or other component. It works in Vue 3 + Vite, Nuxt 3, and any standalone Vue setup.

In Nuxt, no special handling is needed - the component is client-safe and self-cleaning. If you want to ensure it never runs on the server (rare), wrap your usage in <ClientOnly>.

The component uses the <script setup> composition API and TypeScript-friendly defineProps.

Gotchas

Needs three + gsap

The component imports three and drives the loop with gsap.ticker (no useGSAP equivalent). Install both.

Full teardown in onUnmounted

onUnmounted disposes the renderer + textures and calls forceContextLoss(). Keep it - WebGL contexts are a capped resource.

CORS on the media

The img/video needs crossorigin="anonymous" + CORS headers or the dithered texture comes back tainted/black.
FAQ

Common questions

Does Dithering work in Nuxt 3?
Yes. Drop it into any page or component. The component is client-safe; Nuxt handles the SSR boundary automatically. If you want explicit client-only rendering, wrap in .
Does Dithering work with Vue 2?
No - the component uses the Vue 3 Composition API and Dithering for Vue - GSAP component | Annnimate