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

Drift Gallery in Vue.

A row of product cards drifting sideways on their own that you can grab and throw, and they keep going before they settle. Grab a card and its neighbours part to make room, with a filmic grain and colour wash over the whole thing that reacts to how hard you fling it.

Install

Drift Gallery 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

Drift Gallery 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

Full teardown in onBeforeUnmount

Dispose every geometry/material/texture/render target, call renderer.forceContextLoss(), kill the Draggable instance, gsap.ticker.remove(frame), and disconnect the ResizeObserver - otherwise the WebGL context leaks across route changes.

three is a dynamic import

onMounted awaits import("three"); the canvas mounts a frame later. Fine for a section, but guard against unmount-before-resolve.

Props baked at mount

Same as React - config is read once in onMounted; changing a prop needs a remount.
FAQ

Common questions

Does Drift Gallery 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 Drift Gallery work with Vue 2?
No - the component uses the Vue 3 Composition API and