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. Stroke Rows Scroll

Stroke Rows Scroll

PreviousNext

A pinned section where rows of thick bordered SVG strokes draw in by dash offset, curves sweep through, and the rows slide away to a dark palette.

Open in
stroke-rows-scroll-demo

Three stages, nine nights, one long summer

Lineup lands Friday, keep the weekend clear

Low Tide Weekender, Harbour Field, July 18

components/ui/stroke-rows-scroll-demo.tsx
import { StrokeRowsScroll } from "@/registry/tween/stroke-rows-scroll"

export function StrokeRowsScrollDemo() {
  return <StrokeRowsScroll />
}

Installation

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

Usage

import { StrokeRowsScroll } from "@/components/ui/stroke-rows-scroll"
<StrokeRowsScroll
  introTitle="Three stages, nine nights, one long summer"
  outroTitle="Lineup lands Friday, keep the weekend clear"
  rowColors={[
    ["#FF5E5B", "#3DDC97", "#2F5BFF"],
    ["#2F5BFF", "#F7B2D9", "#3DDC97"],
    ["#FFD23F", "#FF5E5B", "#F7B2D9"],
  ]}
/>

The intro section pins for pinDistanceFactor viewport heights (default 8), and one scrubbed timeline drives everything:

  • Three rows each hold three stacked, round-capped strokes. Every stroke has a slightly wider dark border path behind it. They draw in by stroke-dashoffset in a staggered top, bottom, middle order, 0.3s apart, until they cover the screen.
  • Two curved strokes draw in through the middle, then keep going until they vanish off the far end.
  • The rows slide out to the right one after another.
  • At 50% progress the section switches to the dark palette and swaps the headline.

The trigger takes its scroller from usePreviewScroller, and a ResizeObserver on the scroller rebuilds the timeline. With prefers-reduced-motion: reduce, the section shows the end state (dark palette, second headline) with no pin.

Props

PropTypeDefaultDescription
introTitleReactNodedefault copyHeadline shown before the midpoint.
outroTitleReactNodedefault copyHeadline shown after the midpoint.
closingTitleReactNodedefault copyHeadline of the trailing section; pass null to omit it.
rowColors[string, string, string][]3 palettesStroke colors for the top, middle and bottom rows.
curveColors[string, string]["#FFD23F", ...]Colors of the two curved strokes.
borderColorstring"#0f0f0f"Color of the border path behind every stroke.
lightBackgroundstring"#EFE9DD"Background before the midpoint.
darkBackgroundstring"#11151C"Background after the midpoint.
lightForegroundstring"#11151C"Text color before the midpoint.
darkForegroundstring"#F5EFE3"Text color after the midpoint.
pinDistanceFactornumber8How many viewport heights the section pins for.
fontFamilystringBarlow Condensed stackHeadline font.
scrollerHTMLElement | string | null—Optional ScrollTrigger scroller; defaults to the preview's.
classNamestring—Extra classes on the outer container.
Stroke Cover ScrollText Skew Reveal

On This Page

InstallationUsageProps

Contribute

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