Skip to content

pastetaste

Scroll Drum List

SectionsInteractionAnimation

A pinned list of work as a rotating drum: scrolling rolls the rows past, the row in front opens a photo between its two words, filter chips rebuild the drum and a counter with arrows jumps between items.

Paste it into Claude Code: it installs the component, asks for your brand and content, and places it on the page you name.

Install

Or by hand, in a Next.js project with shadcn set up. It writes components/pastetaste/scroll-drum-list.tsx.

npx shadcn@latest add https://pastetaste.com/r/scroll-drum-list.json

Prompt

Install the pastetaste component "Scroll Drum List" (scroll-drum-list) into this Next.js project and use it.

What it is: A pinned list of work as a rotating drum: scrolling rolls the rows past, the row in front opens a photo between its two words, filter chips rebuild the drum and a counter with arrows jumps between items.

Before you place it, ask me (one short message, in my language; "skip" = sensible default): which page and section it goes in, my brand colour (hex), the text, labels or images it should show, and whether I want my logo or my own copy in the demo content. Then:

Steps:
1. If the project has no components.json, run: npx shadcn@latest init -y -d. Then run: npx shadcn@latest add https://pastetaste.com/r/scroll-drum-list.json
   (it writes components/pastetaste/scroll-drum-list.tsx; install any npm packages it reports).
2. Import it: import { ScrollDrumList } from "@/components/pastetaste/scroll-drum-list" (check the file for the exact named export).
3. Put it where it fits on the page I name, keep the rest of the page untouched, and pass props for my colours instead of editing the installed file.
4. It does not depend on Tailwind; colours come from CSS variables (--pt-*) or props.
5. It supports prefers-reduced-motion with a still state; do not remove it.

Props (all optional unless the type has no default):
- items: { id; a; b; image; alt?; title; year?; text?; tags? }[] = six studio projects — Rows of the drum. a and b are the words either side of the photo.
- label: string = 'Selected work' — Mono label above the drum, with a live item count.
- filter: boolean = true — Show filter buttons built from the items' tags.
- perItem: number = 0.62 — Scroll distance per item as a share of the viewport height.
- ink / accent / background: string = '#0e0e0e' / '#e5322a' / '#f5f4f0' — Colours.
- fontFamily: string = Archivo, Arial Narrow, ... — Heavy condensed face, set uppercase.
- topOffset: number = 0 — Pixels to keep free above the stage for a fixed header.
- className / style: string / CSSProperties — On the section.

Live preview: https://pastetaste.com/c/scroll-drum-list
Then run the dev server, check it in the browser at desktop and mobile width, and tell me the page URL.

Props 8

PropTypeDefaultDescription
items{ id; a; b; image; alt?; title; year?; text?; tags? }[]six studio projectsRows of the drum. a and b are the words either side of the photo.
labelstring'Selected work'Mono label above the drum, with a live item count.
filterbooleantrueShow filter buttons built from the items' tags.
perItemnumber0.62Scroll distance per item as a share of the viewport height.
ink / accent / backgroundstring'#0e0e0e' / '#e5322a' / '#f5f4f0'Colours.
fontFamilystringArchivo, Arial Narrow, ...Heavy condensed face, set uppercase.
topOffsetnumber0Pixels to keep free above the stage for a fixed header.
className / stylestring / CSSProperties-On the section.
View all →