PRO

Service Index Scrub

A pinned services index where scroll distance is the selector: every viewport height advances one service, so the list steps discretely rather than scrubbing. A black indicator bar slides down by exactly one row height and resizes to the width of the label it lands on, measured off-screen at the real display font before anything animates, so it hugs each name instead of using a fixed width. A single tall image strip translates by one image height in step with it, and the body copy swaps by splitting to lines, lifting them out, replacing the text, and dropping the new lines back in. GSAP ScrollTrigger, SplitText, and Lenis.

Component

Scroll Down

Deliverables

Brand & Event Design

Video & Photography

Motion Design

3D Graphics

Print & Production

Digital (UI/UX)

Web Development

We transform your ideas into tangible results. Our deliverables are meticulously crafted to exceed expectations, ensuring every project milestone is met with precision and excellence. From concept to completion.

18

Your next section goes here

Install
npx shadcn@latest add https://ui.aryank.space/r/service-index-scrub.json

Installs from ui.aryank.space. To add it by hand, copy the files in Usage below, or register the @compronents namespace via the docs.

Files

API
PropTypeDefaultDescription
servicesServiceIndexEntry[]8 BLANK servicesLabel, copy, and image. The pin length is one viewport per entry, so the list length sets the scroll distance.
serviceHeight / imgHeightnumber38 / 250Row height and image frame height in px. Both are step sizes for transforms, so they must match the CSS.
embeddedbooleantrueOwn the scroll container. Set false to drive it from the window scroll.
Customize
accentcolor

Separator and outro colour.

heroCopytext

Prompt at the bottom of the opening image.

Dependencies
gsaplenis