tween
ComponentsTemplatesShowcaseContact

Command Palette

Search for a command to run...

Getting Started
  • Introduction
  • Installation
  • StoryNew
Guides
  • Motion Principles
  • Scroll and Smooth Scroll
  • Performance and Accessibility
Scroll Animations
  • Sticky Cards Scroll
  • Rise Fan Cards Scroll
  • Rotate Stack Scroll
  • Doodle Lens ScrollNew
  • Slit Open Hero ScrollNew
  • Logo Mask Zoom ScrollNew
  • ASCII Dissolve ScrollNew
  • Lottie Flight ScrollNew
  • Inline Icon Text ScrollNew
  • Starfield ScrollNew
  • Name Swap ScrollNew
  • Spotlight Gallery HeroNew
  • Slit Rotate Hero ScrollNew
  • Stroke Cover ScrollNew
  • Stroke Rows ScrollNew
Text Animations
  • Text Skew Reveal
  • Block Text Reveal
Hover & Cursor
  • Image Trail Cursor
  • Cursor Depth Logo
  • Physics Tag Drop
  • Elastic Card ListNew
  • Magnetic Cards SpringNew
Sliders & Carousels
  • Wheel Fullscreen Carousel
  • Ripple Displacement Slider
  • Three.js Blend Slider
  • Stacked Deck Slider
  • Orbit Cylinder SliderNew
  • Fan Stack SliderNew
  • Exponential Strip SliderNew
  • Dual Column SliderNew
Galleries & Grids
  • Scroll Wave Gallery
Menus & Navigation
  • Shrink Page MenuNew
Preloaders & Intros
  • Floating Items RevealNew
  • Word Cycle RevealNew
  • Tile Grid LoaderNew
Page Transitions
  • Panel Assembly TransitionNew
3D & WebGL
  • Fractal Glass Hero
  • Fluid Cursor Canvas
  • Fluid Portrait Hero
  • Fluid Gradient Canvas
  • Inversion Lens HoverNew
UI Elements
  • Circular Widgets
  • Vinyl Cover
  • Image Explosion Footer
  • Accordion Image FramesNew

(Tween) — Motion registry

Animated components & full sites, one command away.

Product

  • Components
  • Templates
  • Installation
  • Guides
  • Blog
  • Contact

Categories

  • Scroll Animations
  • Text Animations
  • Hover & Cursor
  • Sliders & Carousels
  • Galleries & Grids
  • Menus & Navigation
  • Preloaders & Intros
  • Page Transitions
  • 3D & WebGL
  • UI Elements
TWEEN
ease: power2.inOut0.00s
© 2026 TweenBack to topBuilt by mohammad
  1. Docs/
  2. Components/
  3. Rotate Stack Scroll

Rotate Stack Scroll

PreviousNext

Full-screen colored panels swing up from a tilt to flat as they enter, pinning over each other like a deck righting itself.

Open in
rotate-stack-scroll-demo

Overture

The house lights drop and the floor is bare. Six dancers, one hour, and a single lamp that travels with them from wing to wing.

Reach

Every phrase begins in the hands. Fingers find the edge of the light before the body follows, testing how far the warmth will carry.

Shadow

Half the choreography lands on the wall behind them. Silhouettes run a beat ahead, a second cast nobody rehearsed with.

Ascent

Arms lift and the lamp climbs with them. The phrase holds at full height, rooted through the heels and sure of its weight.

Held Still

Nobody moves for eleven counts. The room listens to its own breathing, and the stillness reads as loudly as any leap in the hour.

Curtain

The lamp dims to a single filament. The company walks off without a bow, and the empty floor keeps the last of the heat.

components/ui/rotate-stack-scroll-demo.tsx
import { RotateStackScroll } from "@/registry/tween/rotate-stack-scroll"

export function RotateStackScrollDemo() {
  return (
    <div className="w-full [font-family:ui-sans-serif,system-ui,sans-serif]">
      <RotateStackScroll />
    </div>
  )
}

Installation

pnpm dlx shadcn@latest add https://tweenui.dev/r/rotate-stack-scroll.json

Usage

import { RotateStackScroll } from "@/components/ui/rotate-stack-scroll"
<RotateStackScroll
  panels={[
    { bg: "#d8cfc0", color: "#000", heading: "Overture", copy: "…" },
    {
      bg: "#141210",
      color: "#fff",
      heading: "Reach",
      img: "https://images.unsplash.com/photo-1788507121644-6f068e46cfa0?q=80&w=900&h=1125&fit=crop&crop=center&auto=format",
    },
  ]}
/>

Each panel starts rotated by angle degrees around its bottom-left corner. A scrubbed ScrollTrigger rotates it back to flat as it travels from the bottom of the viewport up to the top, while a second trigger pins every panel except the last as it leaves — so each colored sheet swings upright and stacks over the previous one, the page assembling like a tilted deck of cards righting itself.

The triggers resolve their scroller via usePreviewScroller, so it works inside the docs preview and on a real page; a ResizeObserver plus a window.resize listener rebuild them on layout changes. When prefers-reduced-motion: reduce is set, the panels render flat and stacked with no rotation or pinning.

Props

PropTypeDefaultDescription
panelsRotateStackPanel[]6 defaultsEach is { bg, color, heading, copy?, img? }.
anglenumber30Starting tilt of each panel in degrees.
scrollerHTMLElement | string | null—Optional ScrollTrigger scroller; defaults to the ambient preview scroller.
classNamestring—Extra classes on the outer container.
Rise Fan Cards ScrollDoodle Lens Scroll

On This Page

InstallationUsageProps

Contribute

  • Report an issue
  • Request a feature
  • Edit this page