Reading Spine, animated React component
A scroll bar that knows the article. A slim rail carries a tick where each section starts and a capsule for your place. Scroll or scrub it and a glass label rides alongside with the section and the minutes left, like the Photos scrubber. Rest on the rail for a glass contents panel showing how much of each section you have read.
- Pro
- Blog Components
- Scroll
- Spring
Play with it
Move the controls and watch it change. Copy code gives you a snippet with only the props you changed.
Props
| Prop | Type | Default | What it does |
|---|---|---|---|
| autoplay | boolean | false | Scrolls the article by itself so the label and contents panel can be seen, until the visitor touches it. Never runs under reduced motion and pauses while the card is off screen. |
| sections | { id: string; title: string; body: string[] }[] | a sample article | The sections of the article. Each body string is one paragraph. |
Add it to your project
- 1
Set up your project once
You need a Next.js project with Tailwind CSS and the
@/import alias. In its root folder, run this once. It createscomponents.jsonand thecn()helper insrc/lib/utils.ts:npx shadcn@latest init -d
Starting from nothing? The Quick Start walks through the whole thing.
- 2
Connect the registry with your API key
Reading Spine is a Pro item, so the CLI has to send your API key. Do this once per project:
- Create a key at nexus-ui.com/dashboard/api-key. Copy it straight away: it starts with
nxs_and is shown only once. - In your project root, next to
package.json, create a file named.env.localwith this line, using your own key:NEXUS_API_KEY=nxs_your_key_here
- Open
components.jsonand add this entry inside the outermost braces, next to"aliases". Leave{name}and${NEXUS_API_KEY}exactly as written; the CLI fills them in:"registries": { "@nexus-labs": { "url": "https://www.nexus-ui.com/api/registry/{name}", "headers": { "Authorization": "Bearer ${NEXUS_API_KEY}" } } }
- Create a key at nexus-ui.com/dashboard/api-key. Copy it straight away: it starts with