Long-form
Reading Progress Bar
A thin fixed bar across the top of the page that fills as the reader moves through an article, giving a constant sense of how much is left. Driven entirely by IntersectionObserver thresholds rather than a scroll handler, so there's no layout thrashing on long pages.
$ velocityx add reading-progress Built for astro.
Full docs for Reading Progress Bar →
Needs a licence key —
subscribe here, then
velocityx loginonce.
Props
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| target | string | Yes | `id` of the element the progress should track (your article container). | |
| label | string | No | 'Reading progress' | Visually hidden label for the bar, for screen reader users. |
File this creates
The CLI writes this path into your project, relative to its root — nothing else moves.
components/velocity/reading-progress/ReadingProgress.astro Using the Reading Progress Bar component
Install it with velocityx add reading-progress.
The CLI writes the source straight into your project — no runtime dependency, no registry
lock-in, and it themes itself from the same primary-*/accent-* scale as the rest of the library.
Related components
More from Long-form.
The note / tip / warning / danger callout a docs page or technical article needs repeatedly, from one component instead of four. Left accent bar + icon + label so variants read apart at a glance without relying on colour alone, built for pages that stack several of these without feeling noisy.
astroThe affiliate/sponsored/review-unit disclosure strip that monetised long-form content needs near the top of the piece — calm, matter-of-fact copy with an optional link to a standing disclosure policy.
astroA lightweight 'was this helpful?' strip for the end of a post or docs page — thumbs up/down with an optional comment box that only appears after a choice is made, ending in a thank-you state. A deliberately lighter, binary take than a full satisfaction-score prompt, built to drop straight into prose with no state library.
astroThe opening block for a blog or long-form page — kicker, headline, dek, and an author/date/read-time meta row, with an optional cover image. Marked up as a proper document header with one real h1, so the rest of the article's heading order stays correct.
astro